diff --git a/.github/workflows/Deployment.yml b/.github/workflows/Deployment.yml
index d12479c25..6c445efd4 100644
--- a/.github/workflows/Deployment.yml
+++ b/.github/workflows/Deployment.yml
@@ -1,6 +1,6 @@
---
# kics-scan ignore
-name: Deployment
+name: Release Apollo
defaults:
run:
@@ -12,45 +12,25 @@ concurrency:
env:
JAVA_VERSION: 11
- NODEJS_VERSION: 16.17.0
ATALA_GITHUB_ACTOR: ${{ secrets.ATALA_GITHUB_ACTOR }}
+ GITHUB_ACTOR: ${{ secrets.ATALA_GITHUB_ACTOR }}
ATALA_GITHUB_TOKEN: ${{ secrets.ATALA_GITHUB_TOKEN }}
+ GITHUB_TOKEN: ${{ secrets.ATALA_GITHUB_TOKEN }}
+ SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
on:
workflow_dispatch:
- inputs:
- tag:
- description: 'Create release with tag'
- required: true
- type: string
jobs:
- deployment:
- strategy:
- matrix:
- include:
- - os: macos-latest
- os-type: macos
- runs-on: ${{ matrix.os }}
+ release:
+ runs-on: macos-latest
steps:
- name: Checkout the repo
uses: actions/checkout@v3
with:
submodules: recursive
-
- - name: Validate Gradle Wrapper
- uses: gradle/wrapper-validation-action@v1
-
- - name: Cache gradle
- uses: actions/cache@v3
- with:
- path: |
- ~/.gradle/caches
- ~/.gradle/wrapper
- ~/.konan
- key: "${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}"
- restore-keys: |
- ${{ runner.os }}-gradle-
+ token: ${{ secrets.ATALA_GITHUB_TOKEN }}
+ fetch-depth: 0
- name: "Install Java ${{ env.JAVA_VERSION }}"
uses: actions/setup-java@v3
@@ -59,66 +39,32 @@ jobs:
distribution: zulu
- name: "Install NodeJS ${{ env.NODEJS_VERSION }}"
- if: matrix.os-type == 'linux'
uses: actions/setup-node@v3
with:
- node-version: "${{ env.NODEJS_VERSION }}"
+ node-version: "lts/*"
- name: Install Homebrew
- if: matrix.os-type == 'macos'
run: >
/bin/bash -c "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- name: "Install autoconf, automake, libtool"
- if: matrix.os-type == 'macos'
run: |
brew install autoconf automake libtool
-
- - name: Create Swift Package
- run: |
- ./gradlew :base-asymmetric-encryption:createSwiftPackage
-
- - name: Zip framework
- run: |
- target_dir_name="Apollo.xcframework"
- source_dir="./base-asymmetric-encryption/build/packages/ApolloSwift/"
- zip_name="Apollo.xcframework.zip"
- (cd $source_dir && zip -r "$zip_name" $target_dir_name)
-
- - name: Prepare release package
- run: |
- checksum=$(swift package compute-checksum 'base-asymmetric-encryption/build/packages/ApolloSwift/Apollo.xcframework.zip')
- echo "CHECKSUM: $checksum"
- rm -f Package.swift || true
- ./.scripts/updatePackage.swift ${{github.event.inputs.tag}} $checksum './.scripts/TemplatePackage.swift' 'Package.swift'
- - name: Commit package
- uses: stefanzweifel/git-auto-commit-action@v5
- env:
- GITHUB_ACTOR: ${{ secrets.ATALA_GITHUB_ACTOR }}
- GITHUB_TOKEN: ${{ secrets.ATALA_GITHUB_TOKEN }}
- with:
- commit_message: "chore: prepare release ${{github.event.inputs.tag}}"
- tagging_message: ${{github.event.inputs.tag}}
-
- - name: Upload swift package artifacts
- uses: actions/upload-artifact@v3
- with:
- name: Apollo.xcframework.zip
- path: base-asymmetric-encryption/build/packages/ApolloSwift/Apollo.xcframework.zip
-
- - name: Add swift package artifacts to release
- uses: svenstaro/upload-release-action@v2
+ - uses: crazy-max/ghaction-import-gpg@v5
+ id: import_gpg
with:
- tag: ${{github.event.inputs.tag}}
- file: base-asymmetric-encryption/build/packages/ApolloSwift/Apollo.xcframework.zip
- asset_name: "Apollo.xcframework.zip"
+ gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
+ git_user_signingkey: true
+ git_commit_gpgsign: true
- - name: Publish Maven artifacts to Github Packages
- id: publish
+ - name: Release
+ env:
+ GIT_AUTHOR_EMAIL: ${{ steps.import_gpg.outputs.email }}
+ GIT_COMMITTER_EMAIL: ${{ steps.import_gpg.outputs.email }}
+ GIT_AUTHOR_NAME: ${{ steps.import_gpg.outputs.name }}
+ GIT_COMMITTER_NAME: ${{ steps.import_gpg.outputs.name }}
run: |
- ./gradlew publishAllPublicationsToGitHubPackagesRepository :base-asymmetric-encryption:publishJsPackageToGithubRegistry
-
-
-
+ npm install
+ npx semantic-release
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index a7e20e33a..bae5a34db 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -19,37 +19,6 @@ env:
on: [pull_request]
jobs:
- lint:
- name: Lint changes
- runs-on: ubuntu-latest
- env:
- APPLY_FIXES: none
- APPLY_FIXES_EVENT: pull_request
- APPLY_FIXES_MODE: commit
- VALIDATE_ALL_CODEBASE: ${{ github.ref_name == 'main' }}
- DISABLE: COPYPASTE,SPELL
- DISABLE_LINTERS: REPOSITORY_CHECKOV,BASH_SHELLCHECK,C_CPPLINT,CPP_CPPLINT
- GITHUB_TOKEN: ${{ secrets.ATALA_GITHUB_TOKEN }}
- steps:
- - name: Checkout Code
- uses: actions/checkout@v3
- with:
- token: ${{ secrets.ATALA_GITHUB_TOKEN }}
- fetch-depth: 0
-
- - name: Mega-Linter
- id: ml
- uses: oxsecurity/megalinter@v7.4.0
-
- - name: Archive production artifacts
- if: ${{ success() || failure() }}
- uses: actions/upload-artifact@v3
- with:
- name: Mega-Linter reports
- path: |
- report
- mega-linter.log
-
build:
strategy:
matrix:
@@ -69,26 +38,15 @@ jobs:
with:
submodules: recursive
- - name: Validate Gradle Wrapper
- uses: gradle/wrapper-validation-action@v1
-
- - name: Cache gradle
- uses: actions/cache@v3
- with:
- path: |
- ~/.gradle/caches
- ~/.gradle/wrapper
- ~/.konan
- key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
- restore-keys: |
- ${{ runner.os }}-gradle-
-
- name: Install Java ${{ env.JAVA_VERSION }}
uses: actions/setup-java@v3
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: "zulu"
+ - name: Gradle Build Action
+ uses: gradle/gradle-build-action@v2
+
- name: Install NodeJS ${{ env.NODEJS_VERSION }}
uses: actions/setup-node@v3
with:
diff --git a/.gitignore b/.gitignore
index 37afc27c0..26324c966 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@ Pods/
*.jks
*yarn.lock
JSLibs/iohk-crypto/node_modules
+node_modules/
\ No newline at end of file
diff --git a/.releaserc.yml b/.releaserc.yml
new file mode 100644
index 000000000..41689f3a3
--- /dev/null
+++ b/.releaserc.yml
@@ -0,0 +1,51 @@
+branches:
+ - name: "main"
+ - name: "release/*"
+ prerelease: "snapshot"
+
+plugins:
+ - "@semantic-release/commit-analyzer"
+ - "@semantic-release/release-notes-generator"
+ - ["@semantic-release/changelog", {changelogFile: "CHANGELOG.md"}]
+ - "gradle-semantic-release-plugin"
+ - [ '@semantic-release/exec', {
+ prepareCmd: './gradlew :apollo:createSwiftPackage' } ]
+ - [ '@semantic-release/exec', {
+ prepareCmd: '(cd ./apollo/build/packages/ApolloSwift && zip -r "Apollo.xcframework.zip" Apollo.xcframework)' } ]
+ - [ '@semantic-release/exec', {
+ prepareCmd: "rm -f Package.swift && ./.scripts/updatePackage.swift ${nextRelease.version} \"$(swift package compute-checksum 'apollo/build/packages/ApolloSwift/Apollo.xcframework.zip')\" ./.scripts/TemplatePackage.swift Package.swift" } ]
+ - [
+ "@semantic-release/git",
+ {
+ assets: [
+ "CHANGELOG.md",
+ "gradle.properties",
+ ],
+ message: "chore(release): cut apollo version ${nextRelease.version}
+
+ ${nextRelease.notes}",
+ },
+ ]
+ - [
+ "@semantic-release/github",
+ {
+ "assets": [
+ { "path": "apollo/build/packages/ApolloSwift/Apollo.xcframework.zip", "label": "Apollo.xcframework.zip" },
+ ]
+ }
+ ]
+ - [
+ "semantic-release-slack-bot",
+ {
+ notifyOnSuccess: true,
+ notifyOnFail: true,
+ markdownReleaseNotes: true,
+ onSuccessTemplate:
+ {text: "A new version of `$package_name` successfully released!\n
+ Version: `v$npm_package_version`\n
+ Tag: $repo_url/releases/tag/v$npm_package_version\n
+ \n
+ Release notes:\n
+ $release_notes"},
+ },
+ ]
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 000000000..e69de29bb
diff --git a/Package.swift b/Package.swift
index 4234c34ee..b2ef91dd4 100644
--- a/Package.swift
+++ b/Package.swift
@@ -23,8 +23,8 @@ let package = Package(
// RELEASE
.binaryTarget(
name: "ApolloBinary",
- url: "https://github.com/input-output-hk/atala-prism-apollo/releases/download/testSwift2/Apollo.xcframework.zip",
- checksum: "817420e940206f912c5dcf92acb3b38bd2b87caef6caebc707ff1ff98c5778b8"
+ url: "https://github.com/input-output-hk/atala-prism-apollo/releases/download/1.0.15/Apollo.xcframework.zip",
+ checksum: "ef5242b354dfa922576061da1830ae3037c9ba4a26aeed1c84ce13380bd49fb7"
)
]
)
diff --git a/aes/README.md b/aes/README.md
deleted file mode 100644
index aae882433..000000000
--- a/aes/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# Apollo - AES
-
-[![Kotlin](https://img.shields.io/badge/kotlin-1.7.21-blue.svg?logo=kotlin)](http://kotlinlang.org)
-
-![android](https://camo.githubusercontent.com/b1d9ad56ab51c4ad1417e9a5ad2a8fe63bcc4755e584ec7defef83755c23f923/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d616e64726f69642d3645444238442e7376673f7374796c653d666c6174)
-![apple-silicon](https://camo.githubusercontent.com/a92c841ffd377756a144d5723ff04ecec886953d40ac03baa738590514714921/687474703a2f2f696d672e736869656c64732e696f2f62616467652f737570706f72742d2535424170706c6553696c69636f6e2535442d3433424246462e7376673f7374796c653d666c6174)
-![ios](https://camo.githubusercontent.com/1fec6f0d044c5e1d73656bfceed9a78fd4121b17e82a2705d2a47f6fd1f0e3e5/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d696f732d4344434443442e7376673f7374796c653d666c6174)
-![jvm](https://camo.githubusercontent.com/700f5dcd442fd835875568c038ae5cd53518c80ae5a0cf12c7c5cf4743b5225b/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6a766d2d4442343133442e7376673f7374796c653d666c6174)
-![js](https://camo.githubusercontent.com/3e0a143e39915184b54b60a2ecedec75e801f396d34b5b366c94ec3604f7e6bd/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6a732d4638444235442e7376673f7374796c653d666c6174)
-![getNode-js](https://camo.githubusercontent.com/d08fda729ceebcae0f23c83499ca8f06105350f037661ac9a4cc7f58edfdbca9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6e6f64656a732d3638613036332e7376673f7374796c653d666c6174)
-![macos](https://camo.githubusercontent.com/1b8313498db244646b38a4480186ae2b25464e5e8d71a1920c52b2be5212b909/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6d61636f732d3131313131312e7376673f7374796c653d666c6174)
-![tvos](https://camo.githubusercontent.com/4ac08d7fb1bcb8ef26388cd2bf53b49626e1ab7cbda581162a946dd43e6a2726/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d74766f732d3830383038302e7376673f7374796c653d666c6174)
-![watchos](https://camo.githubusercontent.com/135dbadae40f9cabe7a3a040f9380fb485cff36c90909f3c1ae36b81c304426b/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d77617463686f732d4330433043302e7376673f7374796c653d666c6174)
-
-Apollo AES is Kotlin Multiplatform library for AES encryption & decryption with the following supports.
-
-## Supported Key Size
-
-- 128
-- 192
-- 256
-
-## Supported Block Mode
-
-- ECB
-- CBC
-- CFB
-- CFB8
-- CTR
-- GCM
-- OFB
-- RC4
-
-## Supported Padding
-
-- No Padding
-- PKCS5
-- PKCS7
-
-## Usage
-
-```kotlin
-val text = "Welcome to IOG!"
-val algo = KAESAlgorithm.AES_256
-val key = AES.createRandomAESKey(algo)
-val aes = AES(
- algo,
- KAESBlockMode.GCM,
- KAESPadding.No_Padding,
- key,
- KMMSymmetricKey.createRandomIV(16)
-)
-val encryptedBytes = aes.encrypt(text.encodeToByteArray())
-val decryptedBytes = aes.decrypt(encryptedBytes)
-```
-
-## TODO
-
-* Update supported Block Mode to the only ones supported per platform.
\ No newline at end of file
diff --git a/aes/aes.podspec b/aes/aes.podspec
deleted file mode 100644
index 6a8a5aa59..000000000
--- a/aes/aes.podspec
+++ /dev/null
@@ -1,43 +0,0 @@
-Pod::Spec.new do |spec|
- spec.name = 'aes'
- spec.version = '1.7.0-alpha'
- spec.homepage = ''
- spec.source = { :http=> ''}
- spec.authors = 'IOG'
- spec.license = ''
- spec.summary = 'ApolloAES is an AES lib'
- spec.vendored_frameworks = 'build/cocoapods/framework/ApolloAES.framework'
- spec.libraries = 'c++'
- spec.ios.deployment_target = '13.0'
- spec.osx.deployment_target = '12.0'
- spec.tvos.deployment_target = '13.0'
- spec.watchos.deployment_target = '8.0'
- spec.dependency 'IOHKAES', '1.0.0'
- spec.dependency 'IOHKSecureRandomGeneration', '1.0.0'
-
- spec.pod_target_xcconfig = {
- 'KOTLIN_PROJECT_PATH' => ':aes',
- 'PRODUCT_MODULE_NAME' => 'ApolloAES',
- }
-
- spec.script_phases = [
- {
- :name => 'Build aes',
- :execution_position => :before_compile,
- :shell_path => '/bin/sh',
- :script => <<-SCRIPT
- if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
- echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
- exit 0
- fi
- set -ev
- REPO_ROOT="$PODS_TARGET_SRCROOT"
- "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
- -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
- -Pkotlin.native.cocoapods.archs="$ARCHS" \
- -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
- SCRIPT
- }
- ]
-
-end
\ No newline at end of file
diff --git a/aes/karma.config.d/karma.config.js b/aes/karma.config.d/karma.config.js
deleted file mode 100644
index e56914aa1..000000000
--- a/aes/karma.config.d/karma.config.js
+++ /dev/null
@@ -1,9 +0,0 @@
-config.set({
- browserDisconnectTimeout: 300000,
- processKillTimeout: 300000,
- client: {
- mocha: {
- timeout: 300000
- }
- }
-});
diff --git a/aes/src/androidMain/AndroidManifest.xml b/aes/src/androidMain/AndroidManifest.xml
deleted file mode 100644
index 232c3f49e..000000000
--- a/aes/src/androidMain/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
deleted file mode 100644
index 476d6408d..000000000
--- a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
+++ /dev/null
@@ -1,65 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey
-import java.security.spec.AlgorithmParameterSpec
-import javax.crypto.Cipher
-import javax.crypto.KeyGenerator
-import javax.crypto.spec.GCMParameterSpec
-import javax.crypto.spec.IvParameterSpec
-
-actual typealias KAESAlgorithmNativeType = String
-actual typealias KAESBlockModeNativeType = String
-actual typealias KAESPaddingNativeType = String
-
-actual final class AES actual constructor(
- actual val algorithm: KAESAlgorithm,
- actual val blockMode: KAESBlockMode,
- actual val padding: KAESPadding,
- actual val key: KMMSymmetricKey,
- actual val iv: ByteArray?
-) : AESEncryptor, AESDecryptor {
-
- private val cipher: Cipher = Cipher.getInstance("${algorithm.nativeValue()}/${blockMode.nativeValue()}/${padding.nativeValue()}")
- private val ivSpec: AlgorithmParameterSpec? = if (blockMode.needIV()) {
- when (blockMode) {
- KAESBlockMode.ECB -> IvParameterSpec(iv)
- KAESBlockMode.CBC -> IvParameterSpec(iv)
- KAESBlockMode.CFB -> IvParameterSpec(iv)
- KAESBlockMode.CFB8 -> IvParameterSpec(iv)
- KAESBlockMode.CTR -> IvParameterSpec(iv)
- KAESBlockMode.GCM -> GCMParameterSpec(AUTH_TAG_SIZE, iv)
- KAESBlockMode.OFB -> IvParameterSpec(iv)
- KAESBlockMode.RC4 -> IvParameterSpec(iv)
- }
- } else {
- null
- }
-
- override suspend fun encrypt(data: ByteArray): ByteArray {
- if (ivSpec == null) {
- cipher.init(Cipher.ENCRYPT_MODE, key.nativeType)
- } else {
- cipher.init(Cipher.ENCRYPT_MODE, key.nativeType, ivSpec)
- }
- return cipher.doFinal(data)
- }
-
- override suspend fun decrypt(data: ByteArray): ByteArray {
- if (ivSpec == null) {
- cipher.init(Cipher.DECRYPT_MODE, key.nativeType)
- } else {
- cipher.init(Cipher.DECRYPT_MODE, key.nativeType, ivSpec)
- }
- return cipher.doFinal(data)
- }
-
- actual companion object : AESKeyGeneration {
- private const val AUTH_TAG_SIZE = 128
-
- override suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): KMMSymmetricKey {
- val keygen = KeyGenerator.getInstance("AES")
- keygen.init(algorithm.keySize())
- return KMMSymmetricKey(keygen.generateKey())
- }
- }
-}
diff --git a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
deleted file mode 100644
index f68fa3ef6..000000000
--- a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual enum class KAESAlgorithm : NativeTypeInterface {
- AES_128,
- AES_192,
- AES_256;
-
- override fun nativeValue() = "AES"
-}
diff --git a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
deleted file mode 100644
index 471df724e..000000000
--- a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual enum class KAESBlockMode : NativeTypeInterface {
- ECB,
- CBC,
- CFB,
- CFB8,
- CTR,
- GCM,
- OFB,
- RC4;
-
- override fun nativeValue(): KAESBlockModeNativeType {
- return when (this) {
- ECB -> "ECB"
- CBC -> "CBC"
- CFB -> "CFB"
- CFB8 -> "CFB8"
- CTR -> "CTR"
- GCM -> "GCM"
- OFB -> "OFB"
- RC4 -> throw Exception("Not implemented in JVM")
- }
- }
-}
diff --git a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
deleted file mode 100644
index 9c7ee7237..000000000
--- a/aes/src/androidMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual enum class KAESPadding : NativeTypeInterface {
- NO_PADDING,
- PKCS5PADDING,
- PKCS7PADDING;
-
- override fun nativeValue(): KAESPaddingNativeType {
- return when (this) {
- NO_PADDING -> "NoPadding"
- PKCS5PADDING -> "PKCS5Padding"
- PKCS7PADDING -> "PKCS5Padding"
- }
- }
-}
diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
deleted file mode 100644
index b3b058ac9..000000000
--- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey
-
-expect class KAESAlgorithmNativeType
-expect class KAESBlockModeNativeType
-expect class KAESPaddingNativeType
-
-expect final class AES(
- algorithm: KAESAlgorithm,
- blockMode: KAESBlockMode,
- padding: KAESPadding,
- key: KMMSymmetricKey,
- iv: ByteArray?
-) : AESEncryptor, AESDecryptor {
- val algorithm: KAESAlgorithm
- val blockMode: KAESBlockMode
- val padding: KAESPadding
- val key: KMMSymmetricKey
- val iv: ByteArray?
-
- companion object : AESKeyGeneration
-}
diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESDecryptor.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESDecryptor.kt
deleted file mode 100644
index 7d8d4a778..000000000
--- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESDecryptor.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-interface AESDecryptor {
- suspend fun decrypt(data: ByteArray): ByteArray
-}
diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESEncryptor.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESEncryptor.kt
deleted file mode 100644
index 3a8b8e983..000000000
--- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESEncryptor.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-interface AESEncryptor {
- suspend fun encrypt(data: ByteArray): ByteArray
-}
diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESKeyGeneration.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESKeyGeneration.kt
deleted file mode 100644
index dc849c085..000000000
--- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/AESKeyGeneration.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey
-
-interface AESKeyGeneration {
- /**
- * Generate random AES key
- *
- * @param algorithm AES Key algorithm
- */
- suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode = KAESBlockMode.GCM): KMMSymmetricKey
-}
diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
deleted file mode 100644
index 58ef1546a..000000000
--- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-expect enum class KAESAlgorithm : NativeTypeInterface {
- AES_128,
- AES_192,
- AES_256
-}
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-fun KAESAlgorithm.keySize(): Int {
- return when (this) {
- KAESAlgorithm.AES_128 -> 128
- KAESAlgorithm.AES_192 -> 192
- KAESAlgorithm.AES_256 -> 256
- else -> throw Exception("This line should never be reached")
- }
-}
diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
deleted file mode 100644
index f2a98c7a2..000000000
--- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-expect enum class KAESBlockMode : NativeTypeInterface {
- ECB,
- CBC,
- CFB,
- CFB8,
- CTR,
- GCM,
- OFB,
- RC4
-}
-
-fun KAESBlockMode.needIV(): Boolean {
- return when (this) {
- KAESBlockMode.ECB -> false
- KAESBlockMode.CBC, KAESBlockMode.CFB, KAESBlockMode.CFB8, KAESBlockMode.CTR, KAESBlockMode.GCM,
- KAESBlockMode.OFB, KAESBlockMode.RC4 -> true
- else -> throw IllegalStateException("Should never reach this line")
- }
-}
diff --git a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
deleted file mode 100644
index 7184aa504..000000000
--- a/aes/src/commonMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-expect enum class KAESPadding : NativeTypeInterface {
- NO_PADDING,
- PKCS5PADDING,
- PKCS7PADDING
-}
diff --git a/aes/src/commonTest/kotlin/io/iohk/atala/prism/apollo/aes/AESTests.kt b/aes/src/commonTest/kotlin/io/iohk/atala/prism/apollo/aes/AESTests.kt
deleted file mode 100644
index 3bbd20e76..000000000
--- a/aes/src/commonTest/kotlin/io/iohk/atala/prism/apollo/aes/AESTests.kt
+++ /dev/null
@@ -1,59 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey
-import io.iohk.atala.prism.apollo.utils.SymmetricKeyType
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.runTest
-import kotlin.test.Test
-import kotlin.test.assertEquals
-
-class AESTests {
- @OptIn(ExperimentalCoroutinesApi::class)
- @Test
- fun testAESGCM() = runTest {
- val text = "Welcome to IOG!"
- val algo = KAESAlgorithm.AES_256
- val key = AES.createRandomAESKey(algo)
- val aes = AES(
- algo,
- KAESBlockMode.GCM,
- KAESPadding.NO_PADDING,
- key,
- KMMSymmetricKey.createRandomIV(16)
- )
- val encryptedBytes = aes.encrypt(text.encodeToByteArray())
- val decryptedBytes = aes.decrypt(encryptedBytes)
- assertEquals(text, decryptedBytes.decodeToString())
- }
-
- @OptIn(ExperimentalCoroutinesApi::class)
- @Test
- fun testAESCBC() = runTest {
- val text = "Welcome to IOG!"
- val algo = KAESAlgorithm.AES_256
- val key = AES.createRandomAESKey(algo)
- val aes = AES(
- algo,
- KAESBlockMode.CBC,
- KAESPadding.PKCS5PADDING,
- key,
- KMMSymmetricKey.createRandomIV(16)
- )
- val encryptedBytes = aes.encrypt(text.encodeToByteArray())
- val decryptedBytes = aes.decrypt(encryptedBytes)
- assertEquals(text, decryptedBytes.decodeToString())
- }
-
- @OptIn(ExperimentalCoroutinesApi::class)
- @Test
- fun testAESKeyExportImport() = runTest {
- val algo = KAESAlgorithm.AES_256
- val key = AES.createRandomAESKey(algo)
-
- val base64Key = key.exportToBase64()
-
- val importedKey = KMMSymmetricKey.createKeyFromBase64(base64Key, SymmetricKeyType.AES)
-
- assertEquals(base64Key, importedKey.exportToBase64())
- }
-}
diff --git a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
deleted file mode 100644
index e1dee0b53..000000000
--- a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
+++ /dev/null
@@ -1,64 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import cocoapods.IOHKAES.AESOptionsNone
-import cocoapods.IOHKAES.AESOptionsPkcs7Padding
-import cocoapods.IOHKAES.IOHKAES
-import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey
-import io.iohk.atala.prism.apollo.utils.toByteArray
-import io.iohk.atala.prism.apollo.utils.toNSData
-import kotlinx.cinterop.autoreleasepool
-import platform.Foundation.NSData
-
-actual typealias KAESAlgorithmNativeType = Long
-actual typealias KAESBlockModeNativeType = Int
-actual typealias KAESPaddingNativeType = Long
-
-actual final class AES actual constructor(
- actual val algorithm: KAESAlgorithm,
- actual val blockMode: KAESBlockMode,
- actual val padding: KAESPadding,
- actual val key: KMMSymmetricKey,
- actual val iv: ByteArray?
-) : AESEncryptor, AESDecryptor {
- override suspend fun encrypt(data: ByteArray): ByteArray {
- autoreleasepool {
- val encryptedData = IOHKAES.aesEncryptionWithAlgorithm(
- algorithm.nativeValue(),
- AESOptionsPkcs7Padding,
- blockMode.nativeValue().toUInt(),
- padding.nativeValue(),
- data.toNSData(),
- key.nativeValue,
- iv?.toNSData() ?: NSData()
- )?.toByteArray()
-
- return encryptedData ?: ByteArray(0)
- }
- }
-
- override suspend fun decrypt(data: ByteArray): ByteArray {
- autoreleasepool {
- val decryptedData = IOHKAES.aesDecryptionWithAlgorithm(
- algorithm.nativeValue(),
- AESOptionsNone,
- blockMode.nativeValue().toUInt(),
- padding.nativeValue(),
- data.toNSData(),
- key.nativeValue,
- iv?.toNSData() ?: NSData()
- )?.toByteArray()
-
- return decryptedData ?: ByteArray(0)
- }
- }
-
- actual companion object : AESKeyGeneration {
- override suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): KMMSymmetricKey {
- autoreleasepool {
- return KMMSymmetricKey(
- IOHKAES.generateAESKeyWithAlgorithm(algorithm.nativeValue())
- )
- }
- }
- }
-}
diff --git a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
deleted file mode 100644
index f6d2e2d01..000000000
--- a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import cocoapods.IOHKAES.AESAlgorithmAes128
-import cocoapods.IOHKAES.AESAlgorithmAes192
-import cocoapods.IOHKAES.AESAlgorithmAes256
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual enum class KAESAlgorithm : NativeTypeInterface {
- AES_128,
- AES_192,
- AES_256;
-
- override fun nativeValue(): KAESAlgorithmNativeType {
- return when (this) {
- AES_128 -> AESAlgorithmAes128
- AES_192 -> AESAlgorithmAes192
- AES_256 -> AESAlgorithmAes256
- }
- }
-}
diff --git a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
deleted file mode 100644
index 06b1d21da..000000000
--- a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import cocoapods.IOHKAES.BlockModeCbc
-import cocoapods.IOHKAES.BlockModeCfb
-import cocoapods.IOHKAES.BlockModeCfb8
-import cocoapods.IOHKAES.BlockModeCtr
-import cocoapods.IOHKAES.BlockModeEcb
-import cocoapods.IOHKAES.BlockModeGcm
-import cocoapods.IOHKAES.BlockModeOfb
-import cocoapods.IOHKAES.BlockModeRc4
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual enum class KAESBlockMode : NativeTypeInterface {
- ECB,
- CBC,
- CFB,
- CFB8,
- CTR,
- GCM,
- OFB,
- RC4;
-
- override fun nativeValue(): KAESBlockModeNativeType {
- return when (this) {
- ECB -> BlockModeEcb.toInt()
- CBC -> BlockModeCbc.toInt()
- CFB -> BlockModeCfb.toInt()
- CFB8 -> BlockModeCfb8.toInt()
- CTR -> BlockModeCtr.toInt()
- GCM -> BlockModeGcm.toInt()
- OFB -> BlockModeOfb.toInt()
- RC4 -> BlockModeRc4.toInt()
- }
- }
-}
diff --git a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
deleted file mode 100644
index 37f023965..000000000
--- a/aes/src/iosMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import cocoapods.IOHKAES.PaddingNoPadding
-import cocoapods.IOHKAES.PaddingPkcs7Padding
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual enum class KAESPadding : NativeTypeInterface {
- NO_PADDING,
- PKCS5PADDING,
- PKCS7PADDING;
-
- override fun nativeValue(): KAESPaddingNativeType {
- return when (this) {
- NO_PADDING -> PaddingNoPadding
- // PKCS#5 padding and PKCS#7 padding are practically the same => https://crypto.stackexchange.com/questions/9043/what-is-the-difference-between-pkcs5-padding-and-pkcs7-padding/9044#9044
- PKCS5PADDING -> PaddingPkcs7Padding
- PKCS7PADDING -> PaddingPkcs7Padding
- }
- }
-}
diff --git a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
deleted file mode 100644
index 5707e845e..000000000
--- a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
+++ /dev/null
@@ -1,119 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey
-import io.iohk.atala.prism.apollo.utils.toArrayBuffer
-import io.iohk.atala.prism.apollo.utils.toByteArray
-import kotlinx.coroutines.MainScope
-import kotlinx.coroutines.await
-import kotlinx.coroutines.promise
-import web.crypto.AesCbcParams
-import web.crypto.AesGcmParams
-import web.crypto.AesKeyAlgorithm
-import web.crypto.AesKeyGenParams
-import web.crypto.Algorithm
-import web.crypto.KeyFormat
-import web.crypto.KeyUsage
-import web.crypto.crypto
-
-actual typealias KAESAlgorithmNativeType = String
-actual typealias KAESBlockModeNativeType = String
-actual typealias KAESPaddingNativeType = String
-
-actual final class AES actual constructor(
- actual val algorithm: KAESAlgorithm,
- actual val blockMode: KAESBlockMode,
- actual val padding: KAESPadding,
- actual val key: KMMSymmetricKey,
- actual val iv: ByteArray?
-) : AESEncryptor, AESDecryptor {
-
- private fun getAesKeyAlgorithm(): AesKeyAlgorithm {
- val algorithmString = "${algorithm.nativeValue()}-${blockMode.nativeValue()}"
- val length = this.algorithm.keySize()
- return js("{name: algorithmString, length: length}").unsafeCast()
- }
-
- private fun getAesParams(): Algorithm {
- val algorithmString = "${algorithm.nativeValue()}-${blockMode.nativeValue()}"
- return if (blockMode.needIV()) {
- val jsIV = this.iv!!.toArrayBuffer()
- when (blockMode) {
- KAESBlockMode.GCM -> {
- val tagSize = GCM_AUTH_TAG_SIZE
- js("{name: algorithmString, iv: jsIV, tagLength: tagSize}").unsafeCast()
- }
- KAESBlockMode.CBC -> {
- js("{name: algorithmString, iv: jsIV}").unsafeCast()
- }
- else -> {
- throw NotImplementedError("Yet to be implemented")
- }
- }
- } else {
- js("{name: algorithmString}").unsafeCast()
- }
- }
-
- override suspend fun encrypt(data: ByteArray): ByteArray {
- return MainScope().promise {
- val nativeKey = key.nativeValue
-
- val cryptoKey = crypto.subtle.importKey(
- KeyFormat.raw,
- nativeKey.toArrayBuffer(),
- getAesKeyAlgorithm(),
- true,
- arrayOf(KeyUsage.encrypt, KeyUsage.decrypt)
- ).await()
-
- crypto.subtle.encrypt(
- getAesParams(),
- cryptoKey,
- data.toArrayBuffer()
- ).await().toByteArray()
- }.await()
- }
-
- override suspend fun decrypt(data: ByteArray): ByteArray {
- return MainScope().promise {
- val nativeKey = key.nativeValue
-
- val cryptoKey = crypto.subtle.importKey(
- KeyFormat.raw,
- nativeKey.toArrayBuffer(),
- getAesKeyAlgorithm(),
- true,
- arrayOf(KeyUsage.encrypt, KeyUsage.decrypt)
- ).await()
-
- crypto.subtle.decrypt(
- getAesParams(),
- cryptoKey,
- data.toArrayBuffer()
- ).await().toByteArray()
- }.await()
- }
-
- actual companion object : AESKeyGeneration {
- // Because NITS recommends it to always be 128 or bigger https://csrc.nist.gov/publications/detail/sp/800-38d/final
- private const val GCM_AUTH_TAG_SIZE = 128
-
- private fun getAesKeyGenParams(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): AesKeyGenParams {
- val algorithmString = "${algorithm.nativeValue()}-${blockMode.nativeValue()}"
- val keyLength = algorithm.keySize()
- return js("{name: algorithmString, length: keyLength}").unsafeCast()
- }
-
- override suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): KMMSymmetricKey {
- return MainScope().promise {
- val cryptoKey = crypto.subtle.generateKey(
- getAesKeyGenParams(algorithm, blockMode),
- true,
- arrayOf(KeyUsage.encrypt, KeyUsage.decrypt)
- ).await()
- val key = crypto.subtle.exportKey(KeyFormat.raw, cryptoKey).await().toByteArray()
- KMMSymmetricKey(key)
- }.await()
- }
- }
-}
diff --git a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
deleted file mode 100644
index 40dfbd497..000000000
--- a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-actual enum class KAESAlgorithm : NativeTypeInterface {
- AES_128,
- AES_192,
- AES_256;
-
- override fun nativeValue(): KAESAlgorithmNativeType {
- return when (this) {
- AES_128 -> "AES"
- AES_192 -> "AES"
- AES_256 -> "AES"
- }
- }
-}
diff --git a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
deleted file mode 100644
index 80c70ca37..000000000
--- a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-actual enum class KAESBlockMode : NativeTypeInterface {
- ECB,
- CBC,
- CFB,
- CFB8,
- CTR,
- GCM,
- OFB,
- RC4;
-
- override fun nativeValue(): KAESBlockModeNativeType {
- return when (this) {
- ECB -> throw NotImplementedError()
- CBC -> "CBC"
- CFB -> throw NotImplementedError()
- CFB8 -> throw NotImplementedError()
- CTR -> "CTR"
- GCM -> "GCM"
- OFB -> throw NotImplementedError()
- RC4 -> throw NotImplementedError()
- }
- }
-}
diff --git a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
deleted file mode 100644
index 92ae3eaf5..000000000
--- a/aes/src/jsMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-actual enum class KAESPadding : NativeTypeInterface {
- NO_PADDING,
- PKCS5PADDING,
- PKCS7PADDING;
-
- override fun nativeValue(): KAESPaddingNativeType {
- return when (this) {
- NO_PADDING -> ""
- PKCS5PADDING -> ""
- PKCS7PADDING -> ""
- }
- }
-}
diff --git a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt b/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
deleted file mode 100644
index 476d6408d..000000000
--- a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/AES.kt
+++ /dev/null
@@ -1,65 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.KMMSymmetricKey
-import java.security.spec.AlgorithmParameterSpec
-import javax.crypto.Cipher
-import javax.crypto.KeyGenerator
-import javax.crypto.spec.GCMParameterSpec
-import javax.crypto.spec.IvParameterSpec
-
-actual typealias KAESAlgorithmNativeType = String
-actual typealias KAESBlockModeNativeType = String
-actual typealias KAESPaddingNativeType = String
-
-actual final class AES actual constructor(
- actual val algorithm: KAESAlgorithm,
- actual val blockMode: KAESBlockMode,
- actual val padding: KAESPadding,
- actual val key: KMMSymmetricKey,
- actual val iv: ByteArray?
-) : AESEncryptor, AESDecryptor {
-
- private val cipher: Cipher = Cipher.getInstance("${algorithm.nativeValue()}/${blockMode.nativeValue()}/${padding.nativeValue()}")
- private val ivSpec: AlgorithmParameterSpec? = if (blockMode.needIV()) {
- when (blockMode) {
- KAESBlockMode.ECB -> IvParameterSpec(iv)
- KAESBlockMode.CBC -> IvParameterSpec(iv)
- KAESBlockMode.CFB -> IvParameterSpec(iv)
- KAESBlockMode.CFB8 -> IvParameterSpec(iv)
- KAESBlockMode.CTR -> IvParameterSpec(iv)
- KAESBlockMode.GCM -> GCMParameterSpec(AUTH_TAG_SIZE, iv)
- KAESBlockMode.OFB -> IvParameterSpec(iv)
- KAESBlockMode.RC4 -> IvParameterSpec(iv)
- }
- } else {
- null
- }
-
- override suspend fun encrypt(data: ByteArray): ByteArray {
- if (ivSpec == null) {
- cipher.init(Cipher.ENCRYPT_MODE, key.nativeType)
- } else {
- cipher.init(Cipher.ENCRYPT_MODE, key.nativeType, ivSpec)
- }
- return cipher.doFinal(data)
- }
-
- override suspend fun decrypt(data: ByteArray): ByteArray {
- if (ivSpec == null) {
- cipher.init(Cipher.DECRYPT_MODE, key.nativeType)
- } else {
- cipher.init(Cipher.DECRYPT_MODE, key.nativeType, ivSpec)
- }
- return cipher.doFinal(data)
- }
-
- actual companion object : AESKeyGeneration {
- private const val AUTH_TAG_SIZE = 128
-
- override suspend fun createRandomAESKey(algorithm: KAESAlgorithm, blockMode: KAESBlockMode): KMMSymmetricKey {
- val keygen = KeyGenerator.getInstance("AES")
- keygen.init(algorithm.keySize())
- return KMMSymmetricKey(keygen.generateKey())
- }
- }
-}
diff --git a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt b/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
deleted file mode 100644
index f68fa3ef6..000000000
--- a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESAlgorithm.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual enum class KAESAlgorithm : NativeTypeInterface {
- AES_128,
- AES_192,
- AES_256;
-
- override fun nativeValue() = "AES"
-}
diff --git a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt b/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
deleted file mode 100644
index 471df724e..000000000
--- a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESBlockMode.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual enum class KAESBlockMode : NativeTypeInterface {
- ECB,
- CBC,
- CFB,
- CFB8,
- CTR,
- GCM,
- OFB,
- RC4;
-
- override fun nativeValue(): KAESBlockModeNativeType {
- return when (this) {
- ECB -> "ECB"
- CBC -> "CBC"
- CFB -> "CFB"
- CFB8 -> "CFB8"
- CTR -> "CTR"
- GCM -> "GCM"
- OFB -> "OFB"
- RC4 -> throw Exception("Not implemented in JVM")
- }
- }
-}
diff --git a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt b/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
deleted file mode 100644
index 9c7ee7237..000000000
--- a/aes/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/aes/KAESPadding.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package io.iohk.atala.prism.apollo.aes
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual enum class KAESPadding : NativeTypeInterface {
- NO_PADDING,
- PKCS5PADDING,
- PKCS7PADDING;
-
- override fun nativeValue(): KAESPaddingNativeType {
- return when (this) {
- NO_PADDING -> "NoPadding"
- PKCS5PADDING -> "PKCS5Padding"
- PKCS7PADDING -> "PKCS5Padding"
- }
- }
-}
diff --git a/aes/webpack.config.d/polyfill.js b/aes/webpack.config.d/polyfill.js
deleted file mode 100644
index 26262794b..000000000
--- a/aes/webpack.config.d/polyfill.js
+++ /dev/null
@@ -1,6 +0,0 @@
-config.resolve = {
- fallback: {
- crypto: require.resolve('crypto-browserify'),
- stream: require.resolve("stream-browserify")
- }
-};
diff --git a/apollo/build.gradle.kts b/apollo/build.gradle.kts
index ca8136edf..eb8ddd137 100644
--- a/apollo/build.gradle.kts
+++ b/apollo/build.gradle.kts
@@ -1,3 +1,4 @@
+import dev.petuska.npm.publish.extension.domain.NpmAccess
import org.gradle.internal.os.OperatingSystem
import org.jetbrains.dokka.gradle.DokkaTask
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput.Target
@@ -7,8 +8,10 @@ val os: OperatingSystem = OperatingSystem.current()
plugins {
kotlin("multiplatform")
+ id("io.github.luca992.multiplatform-swiftpackage") version "2.0.5-arm64"
id("com.android.library")
id("org.jetbrains.dokka")
+ id("dev.petuska.npm.publish") version "3.4.1"
}
kotlin {
@@ -25,11 +28,44 @@ kotlin {
useJUnitPlatform()
}
}
- if (os.isMacOsX) {
- ios()
- iosSimulatorArm64()
- macosArm64()
+
+ ios {
+ binaries.framework {
+ baseName = "ApolloLibrary"
+ export(project(":cryptography"))
+ export(project(":multibase"))
+ export(project(":base64"))
+ export(project(":base58"))
+ export(project(":base32"))
+ export(project(":utils"))
+ export(project(":hashing"))
+ }
+ }
+ iosSimulatorArm64 {
+ binaries.framework {
+ baseName = "ApolloLibrary"
+ export(project(":cryptography"))
+ export(project(":multibase"))
+ export(project(":base64"))
+ export(project(":base58"))
+ export(project(":base32"))
+ export(project(":utils"))
+ export(project(":hashing"))
+ }
+ }
+ macosArm64 {
+ binaries.framework {
+ baseName = "ApolloLibrary"
+ export(project(":cryptography"))
+ export(project(":multibase"))
+ export(project(":base64"))
+ export(project(":base58"))
+ export(project(":base32"))
+ export(project(":utils"))
+ export(project(":hashing"))
+ }
}
+
js(IR) {
this.moduleName = currentModuleName
this.binaries.library()
@@ -46,11 +82,6 @@ kotlin {
this.output.library = currentModuleName
this.output.libraryTarget = Target.VAR
}
- this.commonWebpackConfig {
-// this.cssSupport {
-// enabled(true)
-// }
- }
this.testTask {
this.useKarma {
this.useChromeHeadless()
@@ -66,11 +97,29 @@ kotlin {
}
}
+ multiplatformSwiftPackage {
+ packageName("Apollo")
+ swiftToolsVersion("5.3")
+ targetPlatforms {
+ iOS { v("13") }
+ macOS { v("11") }
+ }
+ outputDirectory(File(rootDir, "apollo/build/packages/ApolloSwift"))
+ }
+
sourceSets {
val commonMain by getting {
dependencies {
+ api(project(":uuid"))
+ api(project(":cryptography"))
+ api(project(":multibase"))
+ api(project(":base64"))
+ api(project(":base58"))
+ api(project(":base32"))
api(project(":utils"))
api(project(":hashing"))
+ api(project(":varint"))
+ api(project(":secure-random"))
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.4.1")
}
}
@@ -91,21 +140,31 @@ kotlin {
implementation("junit:junit:4.13.2")
}
}
- val jsMain by getting
- val jsTest by getting
- if (os.isMacOsX) {
- val iosMain by getting
- val iosTest by getting
+ val jsMain by getting {
+ dependencies {
+ implementation(npm("elliptic", "6.5.4"))
+ implementation(npm("@types/elliptic", "6.4.14"))
+ implementation(npm("@noble/curves", "1.2.0"))
+ implementation(npm("@stablelib/x25519", "1.0.3"))
- val iosSimulatorArm64Main by getting {
- this.dependsOn(iosMain)
- }
- val iosSimulatorArm64Test by getting {
- this.dependsOn(iosTest)
+ // Polyfill dependencies
+ implementation(npm("stream-browserify", "3.0.0"))
+ implementation(npm("buffer", "6.0.3"))
}
- val macosArm64Main by getting
- val macosArm64Test by getting
}
+ val jsTest by getting
+
+ val iosMain by getting
+ val iosTest by getting
+
+ val iosSimulatorArm64Main by getting {
+ this.dependsOn(iosMain)
+ }
+ val iosSimulatorArm64Test by getting {
+ this.dependsOn(iosTest)
+ }
+ val macosArm64Main by getting
+ val macosArm64Test by getting
}
if (os.isMacOsX) {
@@ -156,3 +215,33 @@ tasks.withType {
}
}
}
+
+npmPublish {
+ organization.set("input-output-hk")
+ version.set(rootProject.version.toString())
+ access.set(NpmAccess.PUBLIC)
+ packages {
+ access.set(NpmAccess.PUBLIC)
+ named("js") {
+ scope.set("input-output-hk")
+ packageName.set("apollo")
+ packageJson {
+ author {
+ name.set("IOG")
+ }
+ repository {
+ type.set("git")
+ url.set("https://github.com/input-output-hk/atala-prism-apollo.git")
+ }
+ }
+ }
+ }
+ registries {
+ access.set(NpmAccess.PUBLIC)
+ github {
+ uri.set("https://npm.pkg.github.com/")
+ access.set(NpmAccess.PUBLIC)
+ this.authToken.set(System.getenv("ATALA_GITHUB_TOKEN"))
+ }
+ }
+}
diff --git a/apollo/src/commonMain/kotlin/io/iohk/atala/prism/apollo/MerkleTree.kt b/apollo/src/commonMain/kotlin/io/iohk/atala/prism/apollo/MerkleTree.kt
index af7501cae..e9fd08d6e 100644
--- a/apollo/src/commonMain/kotlin/io/iohk/atala/prism/apollo/MerkleTree.kt
+++ b/apollo/src/commonMain/kotlin/io/iohk/atala/prism/apollo/MerkleTree.kt
@@ -1,3 +1,5 @@
+@file:Suppress("ktlint:standard:property-naming")
+
package io.iohk.atala.prism.apollo
import io.iohk.atala.prism.apollo.hashing.SHA256
@@ -56,21 +58,30 @@ data class MerkleRoot(val hash: Hash)
@OptIn(ExperimentalJsExport::class)
@JsExport
data class MerkleInclusionProof(
- val hash: Hash, // hash inclusion of which this proof is for
- val index: Index, // index for the given hash's position in the tree
- val siblings: List // given hash's siblings at each level of the tree starting from the bottom
+ /**
+ * hash inclusion of which this proof is for
+ */
+ val hash: Hash,
+ /**
+ * index for the given hash's position in the tree
+ */
+ val index: Index,
+ /**
+ * given hash's siblings at each level of the tree starting from the bottom
+ */
+ val siblings: List
) {
// merkle root of which this proof is for
fun derivedRoot(): MerkleRoot {
val n = siblings.size
- val root = siblings.indices.fold(prefixHash(hash)) { currentHash, i ->
- if (index and (1 shl (n - i - 1)) == 0) {
- combineHashes(currentHash, siblings[i])
- } else {
- combineHashes(siblings[i], currentHash)
+ val root =
+ siblings.indices.fold(prefixHash(hash)) { currentHash, i ->
+ if (index and (1 shl (n - i - 1)) == 0) {
+ combineHashes(currentHash, siblings[i])
+ } else {
+ combineHashes(siblings[i], currentHash)
+ }
}
- }
-
return MerkleRoot(root)
}
@@ -79,7 +90,7 @@ data class MerkleInclusionProof(
mapOf(
Pair(hashField, JsonPrimitive(hash.toHexString())),
Pair(indexField, JsonPrimitive(index)),
- Pair(siblingsField, JsonArray(siblings.map { JsonPrimitive(it.toHexString()) })),
+ Pair(siblingsField, JsonArray(siblings.map { JsonPrimitive(it.toHexString()) }))
)
)
}
@@ -88,6 +99,26 @@ data class MerkleInclusionProof(
return toJson().toString()
}
+ override fun equals(other: Any?): Boolean {
+ if (this === other) return true
+ if (other == null || this::class != other::class) return false
+
+ other as MerkleInclusionProof
+
+ if (!hash.contentEquals(other.hash)) return false
+ if (index != other.index) return false
+ if (siblings != other.siblings) return false
+
+ return true
+ }
+
+ override fun hashCode(): Int {
+ var result = hash.contentHashCode()
+ result = 31 * result + index
+ result = 31 * result + siblings.hashCode()
+ return result
+ }
+
companion object {
internal const val hashField = "hash"
internal const val indexField = "index"
@@ -105,8 +136,12 @@ data class MerkleInclusionProof(
fun decodeJson(encodedMerkleInclusionProof: JsonObject): Validated {
val maybeHash = encodedMerkleInclusionProof[hashField]?.jsonPrimitive?.content?.decodeHex()
val maybeIndex = encodedMerkleInclusionProof[indexField]?.jsonPrimitive?.int
- val maybeSiblings = encodedMerkleInclusionProof[siblingsField]?.jsonArray?.map { it.jsonPrimitive.content }
- ?.map { it.decodeHex() }
+ val maybeSiblings =
+ encodedMerkleInclusionProof[siblingsField]?.jsonArray?.map {
+ it.jsonPrimitive.content
+ }?.map {
+ it.decodeHex()
+ }
return Validated.Applicative.apply(
Validated.getOrError(
@@ -145,11 +180,16 @@ data class MerkleProofs(val root: MerkleRoot, val proofs: List): MerkleProofs {
tailrec fun buildMerkleTree(currentLevel: List, nextLevel: List): MerkleTree {
return when {
- currentLevel.size >= 2 -> buildMerkleTree(
- currentLevel = currentLevel.subList(2, currentLevel.size),
- nextLevel = listOf(MerkleNode(currentLevel[0], currentLevel[1])) + nextLevel
- )
- currentLevel.size == 1 -> buildMerkleTree(currentLevel = emptyList(), nextLevel = listOf(currentLevel[0]) + nextLevel)
+ currentLevel.size >= 2 ->
+ buildMerkleTree(
+ currentLevel = currentLevel.subList(2, currentLevel.size),
+ nextLevel = listOf(MerkleNode(currentLevel[0], currentLevel[1])) + nextLevel
+ )
+ currentLevel.size == 1 ->
+ buildMerkleTree(
+ currentLevel = emptyList(),
+ nextLevel = listOf(currentLevel[0]) + nextLevel
+ )
nextLevel.size == 1 -> nextLevel[0]
// We reverse `nextLevel` list so that it has the same order as the initial
@@ -162,16 +202,18 @@ fun generateProofs(hashes: List): MerkleProofs {
return when (tree) {
is MerkleLeaf -> listOf(MerkleInclusionProof(tree.data, currentIndex, currentPath))
is MerkleNode -> {
- val first = buildProofs(
- tree.left,
- currentIndex,
- listOf(tree.right.hash) + currentPath
- )
- val second = buildProofs(
- tree.right,
- currentIndex or (1 shl currentPath.size),
- listOf(tree.left.hash) + currentPath
- )
+ val first =
+ buildProofs(
+ tree.left,
+ currentIndex,
+ listOf(tree.right.hash) + currentPath
+ )
+ val second =
+ buildProofs(
+ tree.right,
+ currentIndex or (1 shl currentPath.size),
+ listOf(tree.left.hash) + currentPath
+ )
first + second
}
}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt
deleted file mode 100644
index ac51cf75f..000000000
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt
+++ /dev/null
@@ -1,2060 +0,0 @@
-package io.iohk.atala.prism.apollo.utils.bip39.wordlists
-
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-internal object MnemonicCodeCzech {
- val wordList: List = listOf(
- "abdikace",
- "abeceda",
- "adresa",
- "agrese",
- "akce",
- "aktovka",
- "alej",
- "alkohol",
- "amputace",
- "ananas",
- "andulka",
- "anekdota",
- "anketa",
- "antika",
- "anulovat",
- "archa",
- "arogance",
- "asfalt",
- "asistent",
- "aspirace",
- "astma",
- "astronom",
- "atlas",
- "atletika",
- "atol",
- "autobus",
- "azyl",
- "babka",
- "bachor",
- "bacil",
- "baculka",
- "badatel",
- "bageta",
- "bagr",
- "bahno",
- "bakterie",
- "balada",
- "baletka",
- "balkon",
- "balonek",
- "balvan",
- "balza",
- "bambus",
- "bankomat",
- "barbar",
- "baret",
- "barman",
- "baroko",
- "barva",
- "baterka",
- "batoh",
- "bavlna",
- "bazalka",
- "bazilika",
- "bazuka",
- "bedna",
- "beran",
- "beseda",
- "bestie",
- "beton",
- "bezinka",
- "bezmoc",
- "beztak",
- "bicykl",
- "bidlo",
- "biftek",
- "bikiny",
- "bilance",
- "biograf",
- "biolog",
- "bitva",
- "bizon",
- "blahobyt",
- "blatouch",
- "blecha",
- "bledule",
- "blesk",
- "blikat",
- "blizna",
- "blokovat",
- "bloudit",
- "blud",
- "bobek",
- "bobr",
- "bodlina",
- "bodnout",
- "bohatost",
- "bojkot",
- "bojovat",
- "bokorys",
- "bolest",
- "borec",
- "borovice",
- "bota",
- "boubel",
- "bouchat",
- "bouda",
- "boule",
- "bourat",
- "boxer",
- "bradavka",
- "brambora",
- "branka",
- "bratr",
- "brepta",
- "briketa",
- "brko",
- "brloh",
- "bronz",
- "broskev",
- "brunetka",
- "brusinka",
- "brzda",
- "brzy",
- "bublina",
- "bubnovat",
- "buchta",
- "buditel",
- "budka",
- "budova",
- "bufet",
- "bujarost",
- "bukvice",
- "buldok",
- "bulva",
- "bunda",
- "bunkr",
- "burza",
- "butik",
- "buvol",
- "buzola",
- "bydlet",
- "bylina",
- "bytovka",
- "bzukot",
- "capart",
- "carevna",
- "cedr",
- "cedule",
- "cejch",
- "cejn",
- "cela",
- "celer",
- "celkem",
- "celnice",
- "cenina",
- "cennost",
- "cenovka",
- "centrum",
- "cenzor",
- "cestopis",
- "cetka",
- "chalupa",
- "chapadlo",
- "charita",
- "chata",
- "chechtat",
- "chemie",
- "chichot",
- "chirurg",
- "chlad",
- "chleba",
- "chlubit",
- "chmel",
- "chmura",
- "chobot",
- "chochol",
- "chodba",
- "cholera",
- "chomout",
- "chopit",
- "choroba",
- "chov",
- "chrapot",
- "chrlit",
- "chrt",
- "chrup",
- "chtivost",
- "chudina",
- "chutnat",
- "chvat",
- "chvilka",
- "chvost",
- "chyba",
- "chystat",
- "chytit",
- "cibule",
- "cigareta",
- "cihelna",
- "cihla",
- "cinkot",
- "cirkus",
- "cisterna",
- "citace",
- "citrus",
- "cizinec",
- "cizost",
- "clona",
- "cokoliv",
- "couvat",
- "ctitel",
- "ctnost",
- "cudnost",
- "cuketa",
- "cukr",
- "cupot",
- "cvaknout",
- "cval",
- "cvik",
- "cvrkot",
- "cyklista",
- "daleko",
- "dareba",
- "datel",
- "datum",
- "dcera",
- "debata",
- "dechovka",
- "decibel",
- "deficit",
- "deflace",
- "dekl",
- "dekret",
- "demokrat",
- "deprese",
- "derby",
- "deska",
- "detektiv",
- "dikobraz",
- "diktovat",
- "dioda",
- "diplom",
- "disk",
- "displej",
- "divadlo",
- "divoch",
- "dlaha",
- "dlouho",
- "dluhopis",
- "dnes",
- "dobro",
- "dobytek",
- "docent",
- "dochutit",
- "dodnes",
- "dohled",
- "dohoda",
- "dohra",
- "dojem",
- "dojnice",
- "doklad",
- "dokola",
- "doktor",
- "dokument",
- "dolar",
- "doleva",
- "dolina",
- "doma",
- "dominant",
- "domluvit",
- "domov",
- "donutit",
- "dopad",
- "dopis",
- "doplnit",
- "doposud",
- "doprovod",
- "dopustit",
- "dorazit",
- "dorost",
- "dort",
- "dosah",
- "doslov",
- "dostatek",
- "dosud",
- "dosyta",
- "dotaz",
- "dotek",
- "dotknout",
- "doufat",
- "doutnat",
- "dovozce",
- "dozadu",
- "doznat",
- "dozorce",
- "drahota",
- "drak",
- "dramatik",
- "dravec",
- "draze",
- "drdol",
- "drobnost",
- "drogerie",
- "drozd",
- "drsnost",
- "drtit",
- "drzost",
- "duben",
- "duchovno",
- "dudek",
- "duha",
- "duhovka",
- "dusit",
- "dusno",
- "dutost",
- "dvojice",
- "dvorec",
- "dynamit",
- "ekolog",
- "ekonomie",
- "elektron",
- "elipsa",
- "email",
- "emise",
- "emoce",
- "empatie",
- "epizoda",
- "epocha",
- "epopej",
- "epos",
- "esej",
- "esence",
- "eskorta",
- "eskymo",
- "etiketa",
- "euforie",
- "evoluce",
- "exekuce",
- "exkurze",
- "expedice",
- "exploze",
- "export",
- "extrakt",
- "facka",
- "fajfka",
- "fakulta",
- "fanatik",
- "fantazie",
- "farmacie",
- "favorit",
- "fazole",
- "federace",
- "fejeton",
- "fenka",
- "fialka",
- "figurant",
- "filozof",
- "filtr",
- "finance",
- "finta",
- "fixace",
- "fjord",
- "flanel",
- "flirt",
- "flotila",
- "fond",
- "fosfor",
- "fotbal",
- "fotka",
- "foton",
- "frakce",
- "freska",
- "fronta",
- "fukar",
- "funkce",
- "fyzika",
- "galeje",
- "garant",
- "genetika",
- "geolog",
- "gilotina",
- "glazura",
- "glejt",
- "golem",
- "golfista",
- "gotika",
- "graf",
- "gramofon",
- "granule",
- "grep",
- "gril",
- "grog",
- "groteska",
- "guma",
- "hadice",
- "hadr",
- "hala",
- "halenka",
- "hanba",
- "hanopis",
- "harfa",
- "harpuna",
- "havran",
- "hebkost",
- "hejkal",
- "hejno",
- "hejtman",
- "hektar",
- "helma",
- "hematom",
- "herec",
- "herna",
- "heslo",
- "hezky",
- "historik",
- "hladovka",
- "hlasivky",
- "hlava",
- "hledat",
- "hlen",
- "hlodavec",
- "hloh",
- "hloupost",
- "hltat",
- "hlubina",
- "hluchota",
- "hmat",
- "hmota",
- "hmyz",
- "hnis",
- "hnojivo",
- "hnout",
- "hoblina",
- "hoboj",
- "hoch",
- "hodiny",
- "hodlat",
- "hodnota",
- "hodovat",
- "hojnost",
- "hokej",
- "holinka",
- "holka",
- "holub",
- "homole",
- "honitba",
- "honorace",
- "horal",
- "horda",
- "horizont",
- "horko",
- "horlivec",
- "hormon",
- "hornina",
- "horoskop",
- "horstvo",
- "hospoda",
- "hostina",
- "hotovost",
- "houba",
- "houf",
- "houpat",
- "houska",
- "hovor",
- "hradba",
- "hranice",
- "hravost",
- "hrazda",
- "hrbolek",
- "hrdina",
- "hrdlo",
- "hrdost",
- "hrnek",
- "hrobka",
- "hromada",
- "hrot",
- "hrouda",
- "hrozen",
- "hrstka",
- "hrubost",
- "hryzat",
- "hubenost",
- "hubnout",
- "hudba",
- "hukot",
- "humr",
- "husita",
- "hustota",
- "hvozd",
- "hybnost",
- "hydrant",
- "hygiena",
- "hymna",
- "hysterik",
- "idylka",
- "ihned",
- "ikona",
- "iluze",
- "imunita",
- "infekce",
- "inflace",
- "inkaso",
- "inovace",
- "inspekce",
- "internet",
- "invalida",
- "investor",
- "inzerce",
- "ironie",
- "jablko",
- "jachta",
- "jahoda",
- "jakmile",
- "jakost",
- "jalovec",
- "jantar",
- "jarmark",
- "jaro",
- "jasan",
- "jasno",
- "jatka",
- "javor",
- "jazyk",
- "jedinec",
- "jedle",
- "jednatel",
- "jehlan",
- "jekot",
- "jelen",
- "jelito",
- "jemnost",
- "jenom",
- "jepice",
- "jeseter",
- "jevit",
- "jezdec",
- "jezero",
- "jinak",
- "jindy",
- "jinoch",
- "jiskra",
- "jistota",
- "jitrnice",
- "jizva",
- "jmenovat",
- "jogurt",
- "jurta",
- "kabaret",
- "kabel",
- "kabinet",
- "kachna",
- "kadet",
- "kadidlo",
- "kahan",
- "kajak",
- "kajuta",
- "kakao",
- "kaktus",
- "kalamita",
- "kalhoty",
- "kalibr",
- "kalnost",
- "kamera",
- "kamkoliv",
- "kamna",
- "kanibal",
- "kanoe",
- "kantor",
- "kapalina",
- "kapela",
- "kapitola",
- "kapka",
- "kaple",
- "kapota",
- "kapr",
- "kapusta",
- "kapybara",
- "karamel",
- "karotka",
- "karton",
- "kasa",
- "katalog",
- "katedra",
- "kauce",
- "kauza",
- "kavalec",
- "kazajka",
- "kazeta",
- "kazivost",
- "kdekoliv",
- "kdesi",
- "kedluben",
- "kemp",
- "keramika",
- "kino",
- "klacek",
- "kladivo",
- "klam",
- "klapot",
- "klasika",
- "klaun",
- "klec",
- "klenba",
- "klepat",
- "klesnout",
- "klid",
- "klima",
- "klisna",
- "klobouk",
- "klokan",
- "klopa",
- "kloub",
- "klubovna",
- "klusat",
- "kluzkost",
- "kmen",
- "kmitat",
- "kmotr",
- "kniha",
- "knot",
- "koalice",
- "koberec",
- "kobka",
- "kobliha",
- "kobyla",
- "kocour",
- "kohout",
- "kojenec",
- "kokos",
- "koktejl",
- "kolaps",
- "koleda",
- "kolize",
- "kolo",
- "komando",
- "kometa",
- "komik",
- "komnata",
- "komora",
- "kompas",
- "komunita",
- "konat",
- "koncept",
- "kondice",
- "konec",
- "konfese",
- "kongres",
- "konina",
- "konkurs",
- "kontakt",
- "konzerva",
- "kopanec",
- "kopie",
- "kopnout",
- "koprovka",
- "korbel",
- "korektor",
- "kormidlo",
- "koroptev",
- "korpus",
- "koruna",
- "koryto",
- "korzet",
- "kosatec",
- "kostka",
- "kotel",
- "kotleta",
- "kotoul",
- "koukat",
- "koupelna",
- "kousek",
- "kouzlo",
- "kovboj",
- "koza",
- "kozoroh",
- "krabice",
- "krach",
- "krajina",
- "kralovat",
- "krasopis",
- "kravata",
- "kredit",
- "krejcar",
- "kresba",
- "kreveta",
- "kriket",
- "kritik",
- "krize",
- "krkavec",
- "krmelec",
- "krmivo",
- "krocan",
- "krok",
- "kronika",
- "kropit",
- "kroupa",
- "krovka",
- "krtek",
- "kruhadlo",
- "krupice",
- "krutost",
- "krvinka",
- "krychle",
- "krypta",
- "krystal",
- "kryt",
- "kudlanka",
- "kufr",
- "kujnost",
- "kukla",
- "kulajda",
- "kulich",
- "kulka",
- "kulomet",
- "kultura",
- "kuna",
- "kupodivu",
- "kurt",
- "kurzor",
- "kutil",
- "kvalita",
- "kvasinka",
- "kvestor",
- "kynolog",
- "kyselina",
- "kytara",
- "kytice",
- "kytka",
- "kytovec",
- "kyvadlo",
- "labrador",
- "lachtan",
- "ladnost",
- "laik",
- "lakomec",
- "lamela",
- "lampa",
- "lanovka",
- "lasice",
- "laso",
- "lastura",
- "latinka",
- "lavina",
- "lebka",
- "leckdy",
- "leden",
- "lednice",
- "ledovka",
- "ledvina",
- "legenda",
- "legie",
- "legrace",
- "lehce",
- "lehkost",
- "lehnout",
- "lektvar",
- "lenochod",
- "lentilka",
- "lepenka",
- "lepidlo",
- "letadlo",
- "letec",
- "letmo",
- "letokruh",
- "levhart",
- "levitace",
- "levobok",
- "libra",
- "lichotka",
- "lidojed",
- "lidskost",
- "lihovina",
- "lijavec",
- "lilek",
- "limetka",
- "linie",
- "linka",
- "linoleum",
- "listopad",
- "litina",
- "litovat",
- "lobista",
- "lodivod",
- "logika",
- "logoped",
- "lokalita",
- "loket",
- "lomcovat",
- "lopata",
- "lopuch",
- "lord",
- "losos",
- "lotr",
- "loudal",
- "louh",
- "louka",
- "louskat",
- "lovec",
- "lstivost",
- "lucerna",
- "lucifer",
- "lump",
- "lusk",
- "lustrace",
- "lvice",
- "lyra",
- "lyrika",
- "lysina",
- "madam",
- "madlo",
- "magistr",
- "mahagon",
- "majetek",
- "majitel",
- "majorita",
- "makak",
- "makovice",
- "makrela",
- "malba",
- "malina",
- "malovat",
- "malvice",
- "maminka",
- "mandle",
- "manko",
- "marnost",
- "masakr",
- "maskot",
- "masopust",
- "matice",
- "matrika",
- "maturita",
- "mazanec",
- "mazivo",
- "mazlit",
- "mazurka",
- "mdloba",
- "mechanik",
- "meditace",
- "medovina",
- "melasa",
- "meloun",
- "mentolka",
- "metla",
- "metoda",
- "metr",
- "mezera",
- "migrace",
- "mihnout",
- "mihule",
- "mikina",
- "mikrofon",
- "milenec",
- "milimetr",
- "milost",
- "mimika",
- "mincovna",
- "minibar",
- "minomet",
- "minulost",
- "miska",
- "mistr",
- "mixovat",
- "mladost",
- "mlha",
- "mlhovina",
- "mlok",
- "mlsat",
- "mluvit",
- "mnich",
- "mnohem",
- "mobil",
- "mocnost",
- "modelka",
- "modlitba",
- "mohyla",
- "mokro",
- "molekula",
- "momentka",
- "monarcha",
- "monokl",
- "monstrum",
- "montovat",
- "monzun",
- "mosaz",
- "moskyt",
- "most",
- "motivace",
- "motorka",
- "motyka",
- "moucha",
- "moudrost",
- "mozaika",
- "mozek",
- "mozol",
- "mramor",
- "mravenec",
- "mrkev",
- "mrtvola",
- "mrzet",
- "mrzutost",
- "mstitel",
- "mudrc",
- "muflon",
- "mulat",
- "mumie",
- "munice",
- "muset",
- "mutace",
- "muzeum",
- "muzikant",
- "myslivec",
- "mzda",
- "nabourat",
- "nachytat",
- "nadace",
- "nadbytek",
- "nadhoz",
- "nadobro",
- "nadpis",
- "nahlas",
- "nahnat",
- "nahodile",
- "nahradit",
- "naivita",
- "najednou",
- "najisto",
- "najmout",
- "naklonit",
- "nakonec",
- "nakrmit",
- "nalevo",
- "namazat",
- "namluvit",
- "nanometr",
- "naoko",
- "naopak",
- "naostro",
- "napadat",
- "napevno",
- "naplnit",
- "napnout",
- "naposled",
- "naprosto",
- "narodit",
- "naruby",
- "narychlo",
- "nasadit",
- "nasekat",
- "naslepo",
- "nastat",
- "natolik",
- "navenek",
- "navrch",
- "navzdory",
- "nazvat",
- "nebe",
- "nechat",
- "necky",
- "nedaleko",
- "nedbat",
- "neduh",
- "negace",
- "nehet",
- "nehoda",
- "nejen",
- "nejprve",
- "neklid",
- "nelibost",
- "nemilost",
- "nemoc",
- "neochota",
- "neonka",
- "nepokoj",
- "nerost",
- "nerv",
- "nesmysl",
- "nesoulad",
- "netvor",
- "neuron",
- "nevina",
- "nezvykle",
- "nicota",
- "nijak",
- "nikam",
- "nikdy",
- "nikl",
- "nikterak",
- "nitro",
- "nocleh",
- "nohavice",
- "nominace",
- "nora",
- "norek",
- "nositel",
- "nosnost",
- "nouze",
- "noviny",
- "novota",
- "nozdra",
- "nuda",
- "nudle",
- "nuget",
- "nutit",
- "nutnost",
- "nutrie",
- "nymfa",
- "obal",
- "obarvit",
- "obava",
- "obdiv",
- "obec",
- "obehnat",
- "obejmout",
- "obezita",
- "obhajoba",
- "obilnice",
- "objasnit",
- "objekt",
- "obklopit",
- "oblast",
- "oblek",
- "obliba",
- "obloha",
- "obluda",
- "obnos",
- "obohatit",
- "obojek",
- "obout",
- "obrazec",
- "obrna",
- "obruba",
- "obrys",
- "obsah",
- "obsluha",
- "obstarat",
- "obuv",
- "obvaz",
- "obvinit",
- "obvod",
- "obvykle",
- "obyvatel",
- "obzor",
- "ocas",
- "ocel",
- "ocenit",
- "ochladit",
- "ochota",
- "ochrana",
- "ocitnout",
- "odboj",
- "odbyt",
- "odchod",
- "odcizit",
- "odebrat",
- "odeslat",
- "odevzdat",
- "odezva",
- "odhadce",
- "odhodit",
- "odjet",
- "odjinud",
- "odkaz",
- "odkoupit",
- "odliv",
- "odluka",
- "odmlka",
- "odolnost",
- "odpad",
- "odpis",
- "odplout",
- "odpor",
- "odpustit",
- "odpykat",
- "odrazka",
- "odsoudit",
- "odstup",
- "odsun",
- "odtok",
- "odtud",
- "odvaha",
- "odveta",
- "odvolat",
- "odvracet",
- "odznak",
- "ofina",
- "ofsajd",
- "ohlas",
- "ohnisko",
- "ohrada",
- "ohrozit",
- "ohryzek",
- "okap",
- "okenice",
- "oklika",
- "okno",
- "okouzlit",
- "okovy",
- "okrasa",
- "okres",
- "okrsek",
- "okruh",
- "okupant",
- "okurka",
- "okusit",
- "olejnina",
- "olizovat",
- "omak",
- "omeleta",
- "omezit",
- "omladina",
- "omlouvat",
- "omluva",
- "omyl",
- "onehdy",
- "opakovat",
- "opasek",
- "operace",
- "opice",
- "opilost",
- "opisovat",
- "opora",
- "opozice",
- "opravdu",
- "oproti",
- "orbital",
- "orchestr",
- "orgie",
- "orlice",
- "orloj",
- "ortel",
- "osada",
- "oschnout",
- "osika",
- "osivo",
- "oslava",
- "oslepit",
- "oslnit",
- "oslovit",
- "osnova",
- "osoba",
- "osolit",
- "ospalec",
- "osten",
- "ostraha",
- "ostuda",
- "ostych",
- "osvojit",
- "oteplit",
- "otisk",
- "otop",
- "otrhat",
- "otrlost",
- "otrok",
- "otruby",
- "otvor",
- "ovanout",
- "ovar",
- "oves",
- "ovlivnit",
- "ovoce",
- "oxid",
- "ozdoba",
- "pachatel",
- "pacient",
- "padouch",
- "pahorek",
- "pakt",
- "palanda",
- "palec",
- "palivo",
- "paluba",
- "pamflet",
- "pamlsek",
- "panenka",
- "panika",
- "panna",
- "panovat",
- "panstvo",
- "pantofle",
- "paprika",
- "parketa",
- "parodie",
- "parta",
- "paruka",
- "paryba",
- "paseka",
- "pasivita",
- "pastelka",
- "patent",
- "patrona",
- "pavouk",
- "pazneht",
- "pazourek",
- "pecka",
- "pedagog",
- "pejsek",
- "peklo",
- "peloton",
- "penalta",
- "pendrek",
- "penze",
- "periskop",
- "pero",
- "pestrost",
- "petarda",
- "petice",
- "petrolej",
- "pevnina",
- "pexeso",
- "pianista",
- "piha",
- "pijavice",
- "pikle",
- "piknik",
- "pilina",
- "pilnost",
- "pilulka",
- "pinzeta",
- "pipeta",
- "pisatel",
- "pistole",
- "pitevna",
- "pivnice",
- "pivovar",
- "placenta",
- "plakat",
- "plamen",
- "planeta",
- "plastika",
- "platit",
- "plavidlo",
- "plaz",
- "plech",
- "plemeno",
- "plenta",
- "ples",
- "pletivo",
- "plevel",
- "plivat",
- "plnit",
- "plno",
- "plocha",
- "plodina",
- "plomba",
- "plout",
- "pluk",
- "plyn",
- "pobavit",
- "pobyt",
- "pochod",
- "pocit",
- "poctivec",
- "podat",
- "podcenit",
- "podepsat",
- "podhled",
- "podivit",
- "podklad",
- "podmanit",
- "podnik",
- "podoba",
- "podpora",
- "podraz",
- "podstata",
- "podvod",
- "podzim",
- "poezie",
- "pohanka",
- "pohnutka",
- "pohovor",
- "pohroma",
- "pohyb",
- "pointa",
- "pojistka",
- "pojmout",
- "pokazit",
- "pokles",
- "pokoj",
- "pokrok",
- "pokuta",
- "pokyn",
- "poledne",
- "polibek",
- "polknout",
- "poloha",
- "polynom",
- "pomalu",
- "pominout",
- "pomlka",
- "pomoc",
- "pomsta",
- "pomyslet",
- "ponechat",
- "ponorka",
- "ponurost",
- "popadat",
- "popel",
- "popisek",
- "poplach",
- "poprosit",
- "popsat",
- "popud",
- "poradce",
- "porce",
- "porod",
- "porucha",
- "poryv",
- "posadit",
- "posed",
- "posila",
- "poskok",
- "poslanec",
- "posoudit",
- "pospolu",
- "postava",
- "posudek",
- "posyp",
- "potah",
- "potkan",
- "potlesk",
- "potomek",
- "potrava",
- "potupa",
- "potvora",
- "poukaz",
- "pouto",
- "pouzdro",
- "povaha",
- "povidla",
- "povlak",
- "povoz",
- "povrch",
- "povstat",
- "povyk",
- "povzdech",
- "pozdrav",
- "pozemek",
- "poznatek",
- "pozor",
- "pozvat",
- "pracovat",
- "prahory",
- "praktika",
- "prales",
- "praotec",
- "praporek",
- "prase",
- "pravda",
- "princip",
- "prkno",
- "probudit",
- "procento",
- "prodej",
- "profese",
- "prohra",
- "projekt",
- "prolomit",
- "promile",
- "pronikat",
- "propad",
- "prorok",
- "prosba",
- "proton",
- "proutek",
- "provaz",
- "prskavka",
- "prsten",
- "prudkost",
- "prut",
- "prvek",
- "prvohory",
- "psanec",
- "psovod",
- "pstruh",
- "ptactvo",
- "puberta",
- "puch",
- "pudl",
- "pukavec",
- "puklina",
- "pukrle",
- "pult",
- "pumpa",
- "punc",
- "pupen",
- "pusa",
- "pusinka",
- "pustina",
- "putovat",
- "putyka",
- "pyramida",
- "pysk",
- "pytel",
- "racek",
- "rachot",
- "radiace",
- "radnice",
- "radon",
- "raft",
- "ragby",
- "raketa",
- "rakovina",
- "rameno",
- "rampouch",
- "rande",
- "rarach",
- "rarita",
- "rasovna",
- "rastr",
- "ratolest",
- "razance",
- "razidlo",
- "reagovat",
- "reakce",
- "recept",
- "redaktor",
- "referent",
- "reflex",
- "rejnok",
- "reklama",
- "rekord",
- "rekrut",
- "rektor",
- "reputace",
- "revize",
- "revma",
- "revolver",
- "rezerva",
- "riskovat",
- "riziko",
- "robotika",
- "rodokmen",
- "rohovka",
- "rokle",
- "rokoko",
- "romaneto",
- "ropovod",
- "ropucha",
- "rorejs",
- "rosol",
- "rostlina",
- "rotmistr",
- "rotoped",
- "rotunda",
- "roubenka",
- "roucho",
- "roup",
- "roura",
- "rovina",
- "rovnice",
- "rozbor",
- "rozchod",
- "rozdat",
- "rozeznat",
- "rozhodce",
- "rozinka",
- "rozjezd",
- "rozkaz",
- "rozloha",
- "rozmar",
- "rozpad",
- "rozruch",
- "rozsah",
- "roztok",
- "rozum",
- "rozvod",
- "rubrika",
- "ruchadlo",
- "rukavice",
- "rukopis",
- "ryba",
- "rybolov",
- "rychlost",
- "rydlo",
- "rypadlo",
- "rytina",
- "ryzost",
- "sadista",
- "sahat",
- "sako",
- "samec",
- "samizdat",
- "samota",
- "sanitka",
- "sardinka",
- "sasanka",
- "satelit",
- "sazba",
- "sazenice",
- "sbor",
- "schovat",
- "sebranka",
- "secese",
- "sedadlo",
- "sediment",
- "sedlo",
- "sehnat",
- "sejmout",
- "sekera",
- "sekta",
- "sekunda",
- "sekvoje",
- "semeno",
- "seno",
- "servis",
- "sesadit",
- "seshora",
- "seskok",
- "seslat",
- "sestra",
- "sesuv",
- "sesypat",
- "setba",
- "setina",
- "setkat",
- "setnout",
- "setrvat",
- "sever",
- "seznam",
- "shoda",
- "shrnout",
- "sifon",
- "silnice",
- "sirka",
- "sirotek",
- "sirup",
- "situace",
- "skafandr",
- "skalisko",
- "skanzen",
- "skaut",
- "skeptik",
- "skica",
- "skladba",
- "sklenice",
- "sklo",
- "skluz",
- "skoba",
- "skokan",
- "skoro",
- "skripta",
- "skrz",
- "skupina",
- "skvost",
- "skvrna",
- "slabika",
- "sladidlo",
- "slanina",
- "slast",
- "slavnost",
- "sledovat",
- "slepec",
- "sleva",
- "slezina",
- "slib",
- "slina",
- "sliznice",
- "slon",
- "sloupek",
- "slovo",
- "sluch",
- "sluha",
- "slunce",
- "slupka",
- "slza",
- "smaragd",
- "smetana",
- "smilstvo",
- "smlouva",
- "smog",
- "smrad",
- "smrk",
- "smrtka",
- "smutek",
- "smysl",
- "snad",
- "snaha",
- "snob",
- "sobota",
- "socha",
- "sodovka",
- "sokol",
- "sopka",
- "sotva",
- "souboj",
- "soucit",
- "soudce",
- "souhlas",
- "soulad",
- "soumrak",
- "souprava",
- "soused",
- "soutok",
- "souviset",
- "spalovna",
- "spasitel",
- "spis",
- "splav",
- "spodek",
- "spojenec",
- "spolu",
- "sponzor",
- "spornost",
- "spousta",
- "sprcha",
- "spustit",
- "sranda",
- "sraz",
- "srdce",
- "srna",
- "srnec",
- "srovnat",
- "srpen",
- "srst",
- "srub",
- "stanice",
- "starosta",
- "statika",
- "stavba",
- "stehno",
- "stezka",
- "stodola",
- "stolek",
- "stopa",
- "storno",
- "stoupat",
- "strach",
- "stres",
- "strhnout",
- "strom",
- "struna",
- "studna",
- "stupnice",
- "stvol",
- "styk",
- "subjekt",
- "subtropy",
- "suchar",
- "sudost",
- "sukno",
- "sundat",
- "sunout",
- "surikata",
- "surovina",
- "svah",
- "svalstvo",
- "svetr",
- "svatba",
- "svazek",
- "svisle",
- "svitek",
- "svoboda",
- "svodidlo",
- "svorka",
- "svrab",
- "sykavka",
- "sykot",
- "synek",
- "synovec",
- "sypat",
- "sypkost",
- "syrovost",
- "sysel",
- "sytost",
- "tabletka",
- "tabule",
- "tahoun",
- "tajemno",
- "tajfun",
- "tajga",
- "tajit",
- "tajnost",
- "taktika",
- "tamhle",
- "tampon",
- "tancovat",
- "tanec",
- "tanker",
- "tapeta",
- "tavenina",
- "tazatel",
- "technika",
- "tehdy",
- "tekutina",
- "telefon",
- "temnota",
- "tendence",
- "tenista",
- "tenor",
- "teplota",
- "tepna",
- "teprve",
- "terapie",
- "termoska",
- "textil",
- "ticho",
- "tiskopis",
- "titulek",
- "tkadlec",
- "tkanina",
- "tlapka",
- "tleskat",
- "tlukot",
- "tlupa",
- "tmel",
- "toaleta",
- "topinka",
- "topol",
- "torzo",
- "touha",
- "toulec",
- "tradice",
- "traktor",
- "tramp",
- "trasa",
- "traverza",
- "trefit",
- "trest",
- "trezor",
- "trhavina",
- "trhlina",
- "trochu",
- "trojice",
- "troska",
- "trouba",
- "trpce",
- "trpitel",
- "trpkost",
- "trubec",
- "truchlit",
- "truhlice",
- "trus",
- "trvat",
- "tudy",
- "tuhnout",
- "tuhost",
- "tundra",
- "turista",
- "turnaj",
- "tuzemsko",
- "tvaroh",
- "tvorba",
- "tvrdost",
- "tvrz",
- "tygr",
- "tykev",
- "ubohost",
- "uboze",
- "ubrat",
- "ubrousek",
- "ubrus",
- "ubytovna",
- "ucho",
- "uctivost",
- "udivit",
- "uhradit",
- "ujednat",
- "ujistit",
- "ujmout",
- "ukazatel",
- "uklidnit",
- "uklonit",
- "ukotvit",
- "ukrojit",
- "ulice",
- "ulita",
- "ulovit",
- "umyvadlo",
- "unavit",
- "uniforma",
- "uniknout",
- "upadnout",
- "uplatnit",
- "uplynout",
- "upoutat",
- "upravit",
- "uran",
- "urazit",
- "usednout",
- "usilovat",
- "usmrtit",
- "usnadnit",
- "usnout",
- "usoudit",
- "ustlat",
- "ustrnout",
- "utahovat",
- "utkat",
- "utlumit",
- "utonout",
- "utopenec",
- "utrousit",
- "uvalit",
- "uvolnit",
- "uvozovka",
- "uzdravit",
- "uzel",
- "uzenina",
- "uzlina",
- "uznat",
- "vagon",
- "valcha",
- "valoun",
- "vana",
- "vandal",
- "vanilka",
- "varan",
- "varhany",
- "varovat",
- "vcelku",
- "vchod",
- "vdova",
- "vedro",
- "vegetace",
- "vejce",
- "velbloud",
- "veletrh",
- "velitel",
- "velmoc",
- "velryba",
- "venkov",
- "veranda",
- "verze",
- "veselka",
- "veskrze",
- "vesnice",
- "vespodu",
- "vesta",
- "veterina",
- "veverka",
- "vibrace",
- "vichr",
- "videohra",
- "vidina",
- "vidle",
- "vila",
- "vinice",
- "viset",
- "vitalita",
- "vize",
- "vizitka",
- "vjezd",
- "vklad",
- "vkus",
- "vlajka",
- "vlak",
- "vlasec",
- "vlevo",
- "vlhkost",
- "vliv",
- "vlnovka",
- "vloupat",
- "vnucovat",
- "vnuk",
- "voda",
- "vodivost",
- "vodoznak",
- "vodstvo",
- "vojensky",
- "vojna",
- "vojsko",
- "volant",
- "volba",
- "volit",
- "volno",
- "voskovka",
- "vozidlo",
- "vozovna",
- "vpravo",
- "vrabec",
- "vracet",
- "vrah",
- "vrata",
- "vrba",
- "vrcholek",
- "vrhat",
- "vrstva",
- "vrtule",
- "vsadit",
- "vstoupit",
- "vstup",
- "vtip",
- "vybavit",
- "vybrat",
- "vychovat",
- "vydat",
- "vydra",
- "vyfotit",
- "vyhledat",
- "vyhnout",
- "vyhodit",
- "vyhradit",
- "vyhubit",
- "vyjasnit",
- "vyjet",
- "vyjmout",
- "vyklopit",
- "vykonat",
- "vylekat",
- "vymazat",
- "vymezit",
- "vymizet",
- "vymyslet",
- "vynechat",
- "vynikat",
- "vynutit",
- "vypadat",
- "vyplatit",
- "vypravit",
- "vypustit",
- "vyrazit",
- "vyrovnat",
- "vyrvat",
- "vyslovit",
- "vysoko",
- "vystavit",
- "vysunout",
- "vysypat",
- "vytasit",
- "vytesat",
- "vytratit",
- "vyvinout",
- "vyvolat",
- "vyvrhel",
- "vyzdobit",
- "vyznat",
- "vzadu",
- "vzbudit",
- "vzchopit",
- "vzdor",
- "vzduch",
- "vzdychat",
- "vzestup",
- "vzhledem",
- "vzkaz",
- "vzlykat",
- "vznik",
- "vzorek",
- "vzpoura",
- "vztah",
- "vztek",
- "xylofon",
- "zabrat",
- "zabydlet",
- "zachovat",
- "zadarmo",
- "zadusit",
- "zafoukat",
- "zahltit",
- "zahodit",
- "zahrada",
- "zahynout",
- "zajatec",
- "zajet",
- "zajistit",
- "zaklepat",
- "zakoupit",
- "zalepit",
- "zamezit",
- "zamotat",
- "zamyslet",
- "zanechat",
- "zanikat",
- "zaplatit",
- "zapojit",
- "zapsat",
- "zarazit",
- "zastavit",
- "zasunout",
- "zatajit",
- "zatemnit",
- "zatknout",
- "zaujmout",
- "zavalit",
- "zavelet",
- "zavinit",
- "zavolat",
- "zavrtat",
- "zazvonit",
- "zbavit",
- "zbrusu",
- "zbudovat",
- "zbytek",
- "zdaleka",
- "zdarma",
- "zdatnost",
- "zdivo",
- "zdobit",
- "zdroj",
- "zdvih",
- "zdymadlo",
- "zelenina",
- "zeman",
- "zemina",
- "zeptat",
- "zezadu",
- "zezdola",
- "zhatit",
- "zhltnout",
- "zhluboka",
- "zhotovit",
- "zhruba",
- "zima",
- "zimnice",
- "zjemnit",
- "zklamat",
- "zkoumat",
- "zkratka",
- "zkumavka",
- "zlato",
- "zlehka",
- "zloba",
- "zlom",
- "zlost",
- "zlozvyk",
- "zmapovat",
- "zmar",
- "zmatek",
- "zmije",
- "zmizet",
- "zmocnit",
- "zmodrat",
- "zmrzlina",
- "zmutovat",
- "znak",
- "znalost",
- "znamenat",
- "znovu",
- "zobrazit",
- "zotavit",
- "zoubek",
- "zoufale",
- "zplodit",
- "zpomalit",
- "zprava",
- "zprostit",
- "zprudka",
- "zprvu",
- "zrada",
- "zranit",
- "zrcadlo",
- "zrnitost",
- "zrno",
- "zrovna",
- "zrychlit",
- "zrzavost",
- "zticha",
- "ztratit",
- "zubovina",
- "zubr",
- "zvednout",
- "zvenku",
- "zvesela",
- "zvon",
- "zvrat",
- "zvukovod",
- "zvyk",
-
- )
-}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt
deleted file mode 100644
index 3cb0080fd..000000000
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt
+++ /dev/null
@@ -1,2059 +0,0 @@
-package io.iohk.atala.prism.apollo.utils.bip39.wordlists
-
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-internal object MnemonicCodeEnglish {
- val wordList: List = listOf(
- "abandon",
- "ability",
- "able",
- "about",
- "above",
- "absent",
- "absorb",
- "abstract",
- "absurd",
- "abuse",
- "access",
- "accident",
- "account",
- "accuse",
- "achieve",
- "acid",
- "acoustic",
- "acquire",
- "across",
- "act",
- "action",
- "actor",
- "actress",
- "actual",
- "adapt",
- "add",
- "addict",
- "address",
- "adjust",
- "admit",
- "adult",
- "advance",
- "advice",
- "aerobic",
- "affair",
- "afford",
- "afraid",
- "again",
- "age",
- "agent",
- "agree",
- "ahead",
- "aim",
- "air",
- "airport",
- "aisle",
- "alarm",
- "album",
- "alcohol",
- "alert",
- "alien",
- "all",
- "alley",
- "allow",
- "almost",
- "alone",
- "alpha",
- "already",
- "also",
- "alter",
- "always",
- "amateur",
- "amazing",
- "among",
- "amount",
- "amused",
- "analyst",
- "anchor",
- "ancient",
- "anger",
- "angle",
- "angry",
- "animal",
- "ankle",
- "announce",
- "annual",
- "another",
- "answer",
- "antenna",
- "antique",
- "anxiety",
- "any",
- "apart",
- "apology",
- "appear",
- "apple",
- "approve",
- "april",
- "arch",
- "arctic",
- "area",
- "arena",
- "argue",
- "arm",
- "armed",
- "armor",
- "army",
- "around",
- "arrange",
- "arrest",
- "arrive",
- "arrow",
- "art",
- "artefact",
- "artist",
- "artwork",
- "ask",
- "aspect",
- "assault",
- "asset",
- "assist",
- "assume",
- "asthma",
- "athlete",
- "atom",
- "attack",
- "attend",
- "attitude",
- "attract",
- "auction",
- "audit",
- "august",
- "aunt",
- "author",
- "auto",
- "autumn",
- "average",
- "avocado",
- "avoid",
- "awake",
- "aware",
- "away",
- "awesome",
- "awful",
- "awkward",
- "axis",
- "baby",
- "bachelor",
- "bacon",
- "badge",
- "bag",
- "balance",
- "balcony",
- "ball",
- "bamboo",
- "banana",
- "banner",
- "bar",
- "barely",
- "bargain",
- "barrel",
- "base",
- "basic",
- "basket",
- "battle",
- "beach",
- "bean",
- "beauty",
- "because",
- "become",
- "beef",
- "before",
- "begin",
- "behave",
- "behind",
- "believe",
- "below",
- "belt",
- "bench",
- "benefit",
- "best",
- "betray",
- "better",
- "between",
- "beyond",
- "bicycle",
- "bid",
- "bike",
- "bind",
- "biology",
- "bird",
- "birth",
- "bitter",
- "black",
- "blade",
- "blame",
- "blanket",
- "blast",
- "bleak",
- "bless",
- "blind",
- "blood",
- "blossom",
- "blouse",
- "blue",
- "blur",
- "blush",
- "board",
- "boat",
- "body",
- "boil",
- "bomb",
- "bone",
- "bonus",
- "book",
- "boost",
- "border",
- "boring",
- "borrow",
- "boss",
- "bottom",
- "bounce",
- "box",
- "boy",
- "bracket",
- "brain",
- "brand",
- "brass",
- "brave",
- "bread",
- "breeze",
- "brick",
- "bridge",
- "brief",
- "bright",
- "bring",
- "brisk",
- "broccoli",
- "broken",
- "bronze",
- "broom",
- "brother",
- "brown",
- "brush",
- "bubble",
- "buddy",
- "budget",
- "buffalo",
- "build",
- "bulb",
- "bulk",
- "bullet",
- "bundle",
- "bunker",
- "burden",
- "burger",
- "burst",
- "bus",
- "business",
- "busy",
- "butter",
- "buyer",
- "buzz",
- "cabbage",
- "cabin",
- "cable",
- "cactus",
- "cage",
- "cake",
- "call",
- "calm",
- "camera",
- "camp",
- "can",
- "canal",
- "cancel",
- "candy",
- "cannon",
- "canoe",
- "canvas",
- "canyon",
- "capable",
- "capital",
- "captain",
- "car",
- "carbon",
- "card",
- "cargo",
- "carpet",
- "carry",
- "cart",
- "case",
- "cash",
- "casino",
- "castle",
- "casual",
- "cat",
- "catalog",
- "catch",
- "category",
- "cattle",
- "caught",
- "cause",
- "caution",
- "cave",
- "ceiling",
- "celery",
- "cement",
- "census",
- "century",
- "cereal",
- "certain",
- "chair",
- "chalk",
- "champion",
- "change",
- "chaos",
- "chapter",
- "charge",
- "chase",
- "chat",
- "cheap",
- "check",
- "cheese",
- "chef",
- "cherry",
- "chest",
- "chicken",
- "chief",
- "child",
- "chimney",
- "choice",
- "choose",
- "chronic",
- "chuckle",
- "chunk",
- "churn",
- "cigar",
- "cinnamon",
- "circle",
- "citizen",
- "city",
- "civil",
- "claim",
- "clap",
- "clarify",
- "claw",
- "clay",
- "clean",
- "clerk",
- "clever",
- "click",
- "client",
- "cliff",
- "climb",
- "clinic",
- "clip",
- "clock",
- "clog",
- "close",
- "cloth",
- "cloud",
- "clown",
- "club",
- "clump",
- "cluster",
- "clutch",
- "coach",
- "coast",
- "coconut",
- "code",
- "coffee",
- "coil",
- "coin",
- "collect",
- "color",
- "column",
- "combine",
- "come",
- "comfort",
- "comic",
- "common",
- "company",
- "concert",
- "conduct",
- "confirm",
- "congress",
- "connect",
- "consider",
- "control",
- "convince",
- "cook",
- "cool",
- "copper",
- "copy",
- "coral",
- "core",
- "corn",
- "correct",
- "cost",
- "cotton",
- "couch",
- "country",
- "couple",
- "course",
- "cousin",
- "cover",
- "coyote",
- "crack",
- "cradle",
- "craft",
- "cram",
- "crane",
- "crash",
- "crater",
- "crawl",
- "crazy",
- "cream",
- "credit",
- "creek",
- "crew",
- "cricket",
- "crime",
- "crisp",
- "critic",
- "crop",
- "cross",
- "crouch",
- "crowd",
- "crucial",
- "cruel",
- "cruise",
- "crumble",
- "crunch",
- "crush",
- "cry",
- "crystal",
- "cube",
- "culture",
- "cup",
- "cupboard",
- "curious",
- "current",
- "curtain",
- "curve",
- "cushion",
- "custom",
- "cute",
- "cycle",
- "dad",
- "damage",
- "damp",
- "dance",
- "danger",
- "daring",
- "dash",
- "daughter",
- "dawn",
- "day",
- "deal",
- "debate",
- "debris",
- "decade",
- "december",
- "decide",
- "decline",
- "decorate",
- "decrease",
- "deer",
- "defense",
- "define",
- "defy",
- "degree",
- "delay",
- "deliver",
- "demand",
- "demise",
- "denial",
- "dentist",
- "deny",
- "depart",
- "depend",
- "deposit",
- "depth",
- "deputy",
- "derive",
- "describe",
- "desert",
- "design",
- "desk",
- "despair",
- "destroy",
- "detail",
- "detect",
- "develop",
- "device",
- "devote",
- "diagram",
- "dial",
- "diamond",
- "diary",
- "dice",
- "diesel",
- "diet",
- "differ",
- "digital",
- "dignity",
- "dilemma",
- "dinner",
- "dinosaur",
- "direct",
- "dirt",
- "disagree",
- "discover",
- "disease",
- "dish",
- "dismiss",
- "disorder",
- "display",
- "distance",
- "divert",
- "divide",
- "divorce",
- "dizzy",
- "doctor",
- "document",
- "dog",
- "doll",
- "dolphin",
- "domain",
- "donate",
- "donkey",
- "donor",
- "door",
- "dose",
- "double",
- "dove",
- "draft",
- "dragon",
- "drama",
- "drastic",
- "draw",
- "dream",
- "dress",
- "drift",
- "drill",
- "drink",
- "drip",
- "drive",
- "drop",
- "drum",
- "dry",
- "duck",
- "dumb",
- "dune",
- "during",
- "dust",
- "dutch",
- "duty",
- "dwarf",
- "dynamic",
- "eager",
- "eagle",
- "early",
- "earn",
- "earth",
- "easily",
- "east",
- "easy",
- "echo",
- "ecology",
- "economy",
- "edge",
- "edit",
- "educate",
- "effort",
- "egg",
- "eight",
- "either",
- "elbow",
- "elder",
- "electric",
- "elegant",
- "element",
- "elephant",
- "elevator",
- "elite",
- "else",
- "embark",
- "embody",
- "embrace",
- "emerge",
- "emotion",
- "employ",
- "empower",
- "empty",
- "enable",
- "enact",
- "end",
- "endless",
- "endorse",
- "enemy",
- "energy",
- "enforce",
- "engage",
- "engine",
- "enhance",
- "enjoy",
- "enlist",
- "enough",
- "enrich",
- "enroll",
- "ensure",
- "enter",
- "entire",
- "entry",
- "envelope",
- "episode",
- "equal",
- "equip",
- "era",
- "erase",
- "erode",
- "erosion",
- "error",
- "erupt",
- "escape",
- "essay",
- "essence",
- "estate",
- "eternal",
- "ethics",
- "evidence",
- "evil",
- "evoke",
- "evolve",
- "exact",
- "example",
- "excess",
- "exchange",
- "excite",
- "exclude",
- "excuse",
- "execute",
- "exercise",
- "exhaust",
- "exhibit",
- "exile",
- "exist",
- "exit",
- "exotic",
- "expand",
- "expect",
- "expire",
- "explain",
- "expose",
- "express",
- "extend",
- "extra",
- "eye",
- "eyebrow",
- "fabric",
- "face",
- "faculty",
- "fade",
- "faint",
- "faith",
- "fall",
- "false",
- "fame",
- "family",
- "famous",
- "fan",
- "fancy",
- "fantasy",
- "farm",
- "fashion",
- "fat",
- "fatal",
- "father",
- "fatigue",
- "fault",
- "favorite",
- "feature",
- "february",
- "federal",
- "fee",
- "feed",
- "feel",
- "female",
- "fence",
- "festival",
- "fetch",
- "fever",
- "few",
- "fiber",
- "fiction",
- "field",
- "figure",
- "file",
- "film",
- "filter",
- "final",
- "find",
- "fine",
- "finger",
- "finish",
- "fire",
- "firm",
- "first",
- "fiscal",
- "fish",
- "fit",
- "fitness",
- "fix",
- "flag",
- "flame",
- "flash",
- "flat",
- "flavor",
- "flee",
- "flight",
- "flip",
- "float",
- "flock",
- "floor",
- "flower",
- "fluid",
- "flush",
- "fly",
- "foam",
- "focus",
- "fog",
- "foil",
- "fold",
- "follow",
- "food",
- "foot",
- "force",
- "forest",
- "forget",
- "fork",
- "fortune",
- "forum",
- "forward",
- "fossil",
- "foster",
- "found",
- "fox",
- "fragile",
- "frame",
- "frequent",
- "fresh",
- "friend",
- "fringe",
- "frog",
- "front",
- "frost",
- "frown",
- "frozen",
- "fruit",
- "fuel",
- "fun",
- "funny",
- "furnace",
- "fury",
- "future",
- "gadget",
- "gain",
- "galaxy",
- "gallery",
- "game",
- "gap",
- "garage",
- "garbage",
- "garden",
- "garlic",
- "garment",
- "gas",
- "gasp",
- "gate",
- "gather",
- "gauge",
- "gaze",
- "general",
- "genius",
- "genre",
- "gentle",
- "genuine",
- "gesture",
- "ghost",
- "giant",
- "gift",
- "giggle",
- "ginger",
- "giraffe",
- "girl",
- "give",
- "glad",
- "glance",
- "glare",
- "glass",
- "glide",
- "glimpse",
- "globe",
- "gloom",
- "glory",
- "glove",
- "glow",
- "glue",
- "goat",
- "goddess",
- "gold",
- "good",
- "goose",
- "gorilla",
- "gospel",
- "gossip",
- "govern",
- "gown",
- "grab",
- "grace",
- "grain",
- "grant",
- "grape",
- "grass",
- "gravity",
- "great",
- "green",
- "grid",
- "grief",
- "grit",
- "grocery",
- "group",
- "grow",
- "grunt",
- "guard",
- "guess",
- "guide",
- "guilt",
- "guitar",
- "gun",
- "gym",
- "habit",
- "hair",
- "half",
- "hammer",
- "hamster",
- "hand",
- "happy",
- "harbor",
- "hard",
- "harsh",
- "harvest",
- "hat",
- "have",
- "hawk",
- "hazard",
- "head",
- "health",
- "heart",
- "heavy",
- "hedgehog",
- "height",
- "hello",
- "helmet",
- "help",
- "hen",
- "hero",
- "hidden",
- "high",
- "hill",
- "hint",
- "hip",
- "hire",
- "history",
- "hobby",
- "hockey",
- "hold",
- "hole",
- "holiday",
- "hollow",
- "home",
- "honey",
- "hood",
- "hope",
- "horn",
- "horror",
- "horse",
- "hospital",
- "host",
- "hotel",
- "hour",
- "hover",
- "hub",
- "huge",
- "human",
- "humble",
- "humor",
- "hundred",
- "hungry",
- "hunt",
- "hurdle",
- "hurry",
- "hurt",
- "husband",
- "hybrid",
- "ice",
- "icon",
- "idea",
- "identify",
- "idle",
- "ignore",
- "ill",
- "illegal",
- "illness",
- "image",
- "imitate",
- "immense",
- "immune",
- "impact",
- "impose",
- "improve",
- "impulse",
- "inch",
- "include",
- "income",
- "increase",
- "index",
- "indicate",
- "indoor",
- "industry",
- "infant",
- "inflict",
- "inform",
- "inhale",
- "inherit",
- "initial",
- "inject",
- "injury",
- "inmate",
- "inner",
- "innocent",
- "input",
- "inquiry",
- "insane",
- "insect",
- "inside",
- "inspire",
- "install",
- "intact",
- "interest",
- "into",
- "invest",
- "invite",
- "involve",
- "iron",
- "island",
- "isolate",
- "issue",
- "item",
- "ivory",
- "jacket",
- "jaguar",
- "jar",
- "jazz",
- "jealous",
- "jeans",
- "jelly",
- "jewel",
- "job",
- "join",
- "joke",
- "journey",
- "joy",
- "judge",
- "juice",
- "jump",
- "jungle",
- "junior",
- "junk",
- "just",
- "kangaroo",
- "keen",
- "keep",
- "ketchup",
- "key",
- "kick",
- "kid",
- "kidney",
- "kind",
- "kingdom",
- "kiss",
- "kit",
- "kitchen",
- "kite",
- "kitten",
- "kiwi",
- "knee",
- "knife",
- "knock",
- "know",
- "lab",
- "label",
- "labor",
- "ladder",
- "lady",
- "lake",
- "lamp",
- "language",
- "laptop",
- "large",
- "later",
- "latin",
- "laugh",
- "laundry",
- "lava",
- "law",
- "lawn",
- "lawsuit",
- "layer",
- "lazy",
- "leader",
- "leaf",
- "learn",
- "leave",
- "lecture",
- "left",
- "leg",
- "legal",
- "legend",
- "leisure",
- "lemon",
- "lend",
- "length",
- "lens",
- "leopard",
- "lesson",
- "letter",
- "level",
- "liar",
- "liberty",
- "library",
- "license",
- "life",
- "lift",
- "light",
- "like",
- "limb",
- "limit",
- "link",
- "lion",
- "liquid",
- "list",
- "little",
- "live",
- "lizard",
- "load",
- "loan",
- "lobster",
- "local",
- "lock",
- "logic",
- "lonely",
- "long",
- "loop",
- "lottery",
- "loud",
- "lounge",
- "love",
- "loyal",
- "lucky",
- "luggage",
- "lumber",
- "lunar",
- "lunch",
- "luxury",
- "lyrics",
- "machine",
- "mad",
- "magic",
- "magnet",
- "maid",
- "mail",
- "main",
- "major",
- "make",
- "mammal",
- "man",
- "manage",
- "mandate",
- "mango",
- "mansion",
- "manual",
- "maple",
- "marble",
- "march",
- "margin",
- "marine",
- "market",
- "marriage",
- "mask",
- "mass",
- "master",
- "match",
- "material",
- "math",
- "matrix",
- "matter",
- "maximum",
- "maze",
- "meadow",
- "mean",
- "measure",
- "meat",
- "mechanic",
- "medal",
- "media",
- "melody",
- "melt",
- "member",
- "memory",
- "mention",
- "menu",
- "mercy",
- "merge",
- "merit",
- "merry",
- "mesh",
- "message",
- "metal",
- "method",
- "middle",
- "midnight",
- "milk",
- "million",
- "mimic",
- "mind",
- "minimum",
- "minor",
- "minute",
- "miracle",
- "mirror",
- "misery",
- "miss",
- "mistake",
- "mix",
- "mixed",
- "mixture",
- "mobile",
- "model",
- "modify",
- "mom",
- "moment",
- "monitor",
- "monkey",
- "monster",
- "month",
- "moon",
- "moral",
- "more",
- "morning",
- "mosquito",
- "mother",
- "motion",
- "motor",
- "mountain",
- "mouse",
- "move",
- "movie",
- "much",
- "muffin",
- "mule",
- "multiply",
- "muscle",
- "museum",
- "mushroom",
- "music",
- "must",
- "mutual",
- "myself",
- "mystery",
- "myth",
- "naive",
- "name",
- "napkin",
- "narrow",
- "nasty",
- "nation",
- "nature",
- "near",
- "neck",
- "need",
- "negative",
- "neglect",
- "neither",
- "nephew",
- "nerve",
- "nest",
- "net",
- "network",
- "neutral",
- "never",
- "news",
- "next",
- "nice",
- "night",
- "noble",
- "noise",
- "nominee",
- "noodle",
- "normal",
- "north",
- "nose",
- "notable",
- "note",
- "nothing",
- "notice",
- "novel",
- "now",
- "nuclear",
- "number",
- "nurse",
- "nut",
- "oak",
- "obey",
- "object",
- "oblige",
- "obscure",
- "observe",
- "obtain",
- "obvious",
- "occur",
- "ocean",
- "october",
- "odor",
- "off",
- "offer",
- "office",
- "often",
- "oil",
- "okay",
- "old",
- "olive",
- "olympic",
- "omit",
- "once",
- "one",
- "onion",
- "online",
- "only",
- "open",
- "opera",
- "opinion",
- "oppose",
- "option",
- "orange",
- "orbit",
- "orchard",
- "order",
- "ordinary",
- "organ",
- "orient",
- "original",
- "orphan",
- "ostrich",
- "other",
- "outdoor",
- "outer",
- "output",
- "outside",
- "oval",
- "oven",
- "over",
- "own",
- "owner",
- "oxygen",
- "oyster",
- "ozone",
- "pact",
- "paddle",
- "page",
- "pair",
- "palace",
- "palm",
- "panda",
- "panel",
- "panic",
- "panther",
- "paper",
- "parade",
- "parent",
- "park",
- "parrot",
- "party",
- "pass",
- "patch",
- "path",
- "patient",
- "patrol",
- "pattern",
- "pause",
- "pave",
- "payment",
- "peace",
- "peanut",
- "pear",
- "peasant",
- "pelican",
- "pen",
- "penalty",
- "pencil",
- "people",
- "pepper",
- "perfect",
- "permit",
- "person",
- "pet",
- "phone",
- "photo",
- "phrase",
- "physical",
- "piano",
- "picnic",
- "picture",
- "piece",
- "pig",
- "pigeon",
- "pill",
- "pilot",
- "pink",
- "pioneer",
- "pipe",
- "pistol",
- "pitch",
- "pizza",
- "place",
- "planet",
- "plastic",
- "plate",
- "play",
- "please",
- "pledge",
- "pluck",
- "plug",
- "plunge",
- "poem",
- "poet",
- "point",
- "polar",
- "pole",
- "police",
- "pond",
- "pony",
- "pool",
- "popular",
- "portion",
- "position",
- "possible",
- "post",
- "potato",
- "pottery",
- "poverty",
- "powder",
- "power",
- "practice",
- "praise",
- "predict",
- "prefer",
- "prepare",
- "present",
- "pretty",
- "prevent",
- "price",
- "pride",
- "primary",
- "print",
- "priority",
- "prison",
- "private",
- "prize",
- "problem",
- "process",
- "produce",
- "profit",
- "program",
- "project",
- "promote",
- "proof",
- "property",
- "prosper",
- "protect",
- "proud",
- "provide",
- "public",
- "pudding",
- "pull",
- "pulp",
- "pulse",
- "pumpkin",
- "punch",
- "pupil",
- "puppy",
- "purchase",
- "purity",
- "purpose",
- "purse",
- "push",
- "put",
- "puzzle",
- "pyramid",
- "quality",
- "quantum",
- "quarter",
- "question",
- "quick",
- "quit",
- "quiz",
- "quote",
- "rabbit",
- "raccoon",
- "race",
- "rack",
- "radar",
- "radio",
- "rail",
- "rain",
- "raise",
- "rally",
- "ramp",
- "ranch",
- "random",
- "range",
- "rapid",
- "rare",
- "rate",
- "rather",
- "raven",
- "raw",
- "razor",
- "ready",
- "real",
- "reason",
- "rebel",
- "rebuild",
- "recall",
- "receive",
- "recipe",
- "record",
- "recycle",
- "reduce",
- "reflect",
- "reform",
- "refuse",
- "region",
- "regret",
- "regular",
- "reject",
- "relax",
- "release",
- "relief",
- "rely",
- "remain",
- "remember",
- "remind",
- "remove",
- "render",
- "renew",
- "rent",
- "reopen",
- "repair",
- "repeat",
- "replace",
- "report",
- "require",
- "rescue",
- "resemble",
- "resist",
- "resource",
- "response",
- "result",
- "retire",
- "retreat",
- "return",
- "reunion",
- "reveal",
- "review",
- "reward",
- "rhythm",
- "rib",
- "ribbon",
- "rice",
- "rich",
- "ride",
- "ridge",
- "rifle",
- "right",
- "rigid",
- "ring",
- "riot",
- "ripple",
- "risk",
- "ritual",
- "rival",
- "river",
- "road",
- "roast",
- "robot",
- "robust",
- "rocket",
- "romance",
- "roof",
- "rookie",
- "room",
- "rose",
- "rotate",
- "rough",
- "round",
- "route",
- "royal",
- "rubber",
- "rude",
- "rug",
- "rule",
- "run",
- "runway",
- "rural",
- "sad",
- "saddle",
- "sadness",
- "safe",
- "sail",
- "salad",
- "salmon",
- "salon",
- "salt",
- "salute",
- "same",
- "sample",
- "sand",
- "satisfy",
- "satoshi",
- "sauce",
- "sausage",
- "save",
- "say",
- "scale",
- "scan",
- "scare",
- "scatter",
- "scene",
- "scheme",
- "school",
- "science",
- "scissors",
- "scorpion",
- "scout",
- "scrap",
- "screen",
- "script",
- "scrub",
- "sea",
- "search",
- "season",
- "seat",
- "second",
- "secret",
- "section",
- "security",
- "seed",
- "seek",
- "segment",
- "select",
- "sell",
- "seminar",
- "senior",
- "sense",
- "sentence",
- "series",
- "service",
- "session",
- "settle",
- "setup",
- "seven",
- "shadow",
- "shaft",
- "shallow",
- "share",
- "shed",
- "shell",
- "sheriff",
- "shield",
- "shift",
- "shine",
- "ship",
- "shiver",
- "shock",
- "shoe",
- "shoot",
- "shop",
- "short",
- "shoulder",
- "shove",
- "shrimp",
- "shrug",
- "shuffle",
- "shy",
- "sibling",
- "sick",
- "side",
- "siege",
- "sight",
- "sign",
- "silent",
- "silk",
- "silly",
- "silver",
- "similar",
- "simple",
- "since",
- "sing",
- "siren",
- "sister",
- "situate",
- "six",
- "size",
- "skate",
- "sketch",
- "ski",
- "skill",
- "skin",
- "skirt",
- "skull",
- "slab",
- "slam",
- "sleep",
- "slender",
- "slice",
- "slide",
- "slight",
- "slim",
- "slogan",
- "slot",
- "slow",
- "slush",
- "small",
- "smart",
- "smile",
- "smoke",
- "smooth",
- "snack",
- "snake",
- "snap",
- "sniff",
- "snow",
- "soap",
- "soccer",
- "social",
- "sock",
- "soda",
- "soft",
- "solar",
- "soldier",
- "solid",
- "solution",
- "solve",
- "someone",
- "song",
- "soon",
- "sorry",
- "sort",
- "soul",
- "sound",
- "soup",
- "source",
- "south",
- "space",
- "spare",
- "spatial",
- "spawn",
- "speak",
- "special",
- "speed",
- "spell",
- "spend",
- "sphere",
- "spice",
- "spider",
- "spike",
- "spin",
- "spirit",
- "split",
- "spoil",
- "sponsor",
- "spoon",
- "sport",
- "spot",
- "spray",
- "spread",
- "spring",
- "spy",
- "square",
- "squeeze",
- "squirrel",
- "stable",
- "stadium",
- "staff",
- "stage",
- "stairs",
- "stamp",
- "stand",
- "start",
- "state",
- "stay",
- "steak",
- "steel",
- "stem",
- "step",
- "stereo",
- "stick",
- "still",
- "sting",
- "stock",
- "stomach",
- "stone",
- "stool",
- "story",
- "stove",
- "strategy",
- "street",
- "strike",
- "strong",
- "struggle",
- "student",
- "stuff",
- "stumble",
- "style",
- "subject",
- "submit",
- "subway",
- "success",
- "such",
- "sudden",
- "suffer",
- "sugar",
- "suggest",
- "suit",
- "summer",
- "sun",
- "sunny",
- "sunset",
- "super",
- "supply",
- "supreme",
- "sure",
- "surface",
- "surge",
- "surprise",
- "surround",
- "survey",
- "suspect",
- "sustain",
- "swallow",
- "swamp",
- "swap",
- "swarm",
- "swear",
- "sweet",
- "swift",
- "swim",
- "swing",
- "switch",
- "sword",
- "symbol",
- "symptom",
- "syrup",
- "system",
- "table",
- "tackle",
- "tag",
- "tail",
- "talent",
- "talk",
- "tank",
- "tape",
- "target",
- "task",
- "taste",
- "tattoo",
- "taxi",
- "teach",
- "team",
- "tell",
- "ten",
- "tenant",
- "tennis",
- "tent",
- "term",
- "test",
- "text",
- "thank",
- "that",
- "theme",
- "then",
- "theory",
- "there",
- "they",
- "thing",
- "this",
- "thought",
- "three",
- "thrive",
- "throw",
- "thumb",
- "thunder",
- "ticket",
- "tide",
- "tiger",
- "tilt",
- "timber",
- "time",
- "tiny",
- "tip",
- "tired",
- "tissue",
- "title",
- "toast",
- "tobacco",
- "today",
- "toddler",
- "toe",
- "together",
- "toilet",
- "token",
- "tomato",
- "tomorrow",
- "tone",
- "tongue",
- "tonight",
- "tool",
- "tooth",
- "top",
- "topic",
- "topple",
- "torch",
- "tornado",
- "tortoise",
- "toss",
- "total",
- "tourist",
- "toward",
- "tower",
- "town",
- "toy",
- "track",
- "trade",
- "traffic",
- "tragic",
- "train",
- "transfer",
- "trap",
- "trash",
- "travel",
- "tray",
- "treat",
- "tree",
- "trend",
- "trial",
- "tribe",
- "trick",
- "trigger",
- "trim",
- "trip",
- "trophy",
- "trouble",
- "truck",
- "true",
- "truly",
- "trumpet",
- "trust",
- "truth",
- "try",
- "tube",
- "tuition",
- "tumble",
- "tuna",
- "tunnel",
- "turkey",
- "turn",
- "turtle",
- "twelve",
- "twenty",
- "twice",
- "twin",
- "twist",
- "two",
- "type",
- "typical",
- "ugly",
- "umbrella",
- "unable",
- "unaware",
- "uncle",
- "uncover",
- "under",
- "undo",
- "unfair",
- "unfold",
- "unhappy",
- "uniform",
- "unique",
- "unit",
- "universe",
- "unknown",
- "unlock",
- "until",
- "unusual",
- "unveil",
- "update",
- "upgrade",
- "uphold",
- "upon",
- "upper",
- "upset",
- "urban",
- "urge",
- "usage",
- "use",
- "used",
- "useful",
- "useless",
- "usual",
- "utility",
- "vacant",
- "vacuum",
- "vague",
- "valid",
- "valley",
- "valve",
- "van",
- "vanish",
- "vapor",
- "various",
- "vast",
- "vault",
- "vehicle",
- "velvet",
- "vendor",
- "venture",
- "venue",
- "verb",
- "verify",
- "version",
- "very",
- "vessel",
- "veteran",
- "viable",
- "vibrant",
- "vicious",
- "victory",
- "video",
- "view",
- "village",
- "vintage",
- "violin",
- "virtual",
- "virus",
- "visa",
- "visit",
- "visual",
- "vital",
- "vivid",
- "vocal",
- "voice",
- "void",
- "volcano",
- "volume",
- "vote",
- "voyage",
- "wage",
- "wagon",
- "wait",
- "walk",
- "wall",
- "walnut",
- "want",
- "warfare",
- "warm",
- "warrior",
- "wash",
- "wasp",
- "waste",
- "water",
- "wave",
- "way",
- "wealth",
- "weapon",
- "wear",
- "weasel",
- "weather",
- "web",
- "wedding",
- "weekend",
- "weird",
- "welcome",
- "west",
- "wet",
- "whale",
- "what",
- "wheat",
- "wheel",
- "when",
- "where",
- "whip",
- "whisper",
- "wide",
- "width",
- "wife",
- "wild",
- "will",
- "win",
- "window",
- "wine",
- "wing",
- "wink",
- "winner",
- "winter",
- "wire",
- "wisdom",
- "wise",
- "wish",
- "witness",
- "wolf",
- "woman",
- "wonder",
- "wood",
- "wool",
- "word",
- "work",
- "world",
- "worry",
- "worth",
- "wrap",
- "wreck",
- "wrestle",
- "wrist",
- "write",
- "wrong",
- "yard",
- "year",
- "yellow",
- "you",
- "young",
- "youth",
- "zebra",
- "zero",
- "zone",
- "zoo",
- )
-}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt
deleted file mode 100644
index 56b10125d..000000000
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt
+++ /dev/null
@@ -1,2059 +0,0 @@
-package io.iohk.atala.prism.apollo.utils.bip39.wordlists
-
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-internal object MnemonicCodeFrench {
- val wordList: List = listOf(
- "abaisser",
- "abandon",
- "abdiquer",
- "abeille",
- "abolir",
- "aborder",
- "aboutir",
- "aboyer",
- "abrasif",
- "abreuver",
- "abriter",
- "abroger",
- "abrupt",
- "absence",
- "absolu",
- "absurde",
- "abusif",
- "abyssal",
- "académie",
- "acajou",
- "acarien",
- "accabler",
- "accepter",
- "acclamer",
- "accolade",
- "accroche",
- "accuser",
- "acerbe",
- "achat",
- "acheter",
- "aciduler",
- "acier",
- "acompte",
- "acquérir",
- "acronyme",
- "acteur",
- "actif",
- "actuel",
- "adepte",
- "adéquat",
- "adhésif",
- "adjectif",
- "adjuger",
- "admettre",
- "admirer",
- "adopter",
- "adorer",
- "adoucir",
- "adresse",
- "adroit",
- "adulte",
- "adverbe",
- "aérer",
- "aéronef",
- "affaire",
- "affecter",
- "affiche",
- "affreux",
- "affubler",
- "agacer",
- "agencer",
- "agile",
- "agiter",
- "agrafer",
- "agréable",
- "agrume",
- "aider",
- "aiguille",
- "ailier",
- "aimable",
- "aisance",
- "ajouter",
- "ajuster",
- "alarmer",
- "alchimie",
- "alerte",
- "algèbre",
- "algue",
- "aliéner",
- "aliment",
- "alléger",
- "alliage",
- "allouer",
- "allumer",
- "alourdir",
- "alpaga",
- "altesse",
- "alvéole",
- "amateur",
- "ambigu",
- "ambre",
- "aménager",
- "amertume",
- "amidon",
- "amiral",
- "amorcer",
- "amour",
- "amovible",
- "amphibie",
- "ampleur",
- "amusant",
- "analyse",
- "anaphore",
- "anarchie",
- "anatomie",
- "ancien",
- "anéantir",
- "angle",
- "angoisse",
- "anguleux",
- "animal",
- "annexer",
- "annonce",
- "annuel",
- "anodin",
- "anomalie",
- "anonyme",
- "anormal",
- "antenne",
- "antidote",
- "anxieux",
- "apaiser",
- "apéritif",
- "aplanir",
- "apologie",
- "appareil",
- "appeler",
- "apporter",
- "appuyer",
- "aquarium",
- "aqueduc",
- "arbitre",
- "arbuste",
- "ardeur",
- "ardoise",
- "argent",
- "arlequin",
- "armature",
- "armement",
- "armoire",
- "armure",
- "arpenter",
- "arracher",
- "arriver",
- "arroser",
- "arsenic",
- "artériel",
- "article",
- "aspect",
- "asphalte",
- "aspirer",
- "assaut",
- "asservir",
- "assiette",
- "associer",
- "assurer",
- "asticot",
- "astre",
- "astuce",
- "atelier",
- "atome",
- "atrium",
- "atroce",
- "attaque",
- "attentif",
- "attirer",
- "attraper",
- "aubaine",
- "auberge",
- "audace",
- "audible",
- "augurer",
- "aurore",
- "automne",
- "autruche",
- "avaler",
- "avancer",
- "avarice",
- "avenir",
- "averse",
- "aveugle",
- "aviateur",
- "avide",
- "avion",
- "aviser",
- "avoine",
- "avouer",
- "avril",
- "axial",
- "axiome",
- "badge",
- "bafouer",
- "bagage",
- "baguette",
- "baignade",
- "balancer",
- "balcon",
- "baleine",
- "balisage",
- "bambin",
- "bancaire",
- "bandage",
- "banlieue",
- "bannière",
- "banquier",
- "barbier",
- "baril",
- "baron",
- "barque",
- "barrage",
- "bassin",
- "bastion",
- "bataille",
- "bateau",
- "batterie",
- "baudrier",
- "bavarder",
- "belette",
- "bélier",
- "belote",
- "bénéfice",
- "berceau",
- "berger",
- "berline",
- "bermuda",
- "besace",
- "besogne",
- "bétail",
- "beurre",
- "biberon",
- "bicycle",
- "bidule",
- "bijou",
- "bilan",
- "bilingue",
- "billard",
- "binaire",
- "biologie",
- "biopsie",
- "biotype",
- "biscuit",
- "bison",
- "bistouri",
- "bitume",
- "bizarre",
- "blafard",
- "blague",
- "blanchir",
- "blessant",
- "blinder",
- "blond",
- "bloquer",
- "blouson",
- "bobard",
- "bobine",
- "boire",
- "boiser",
- "bolide",
- "bonbon",
- "bondir",
- "bonheur",
- "bonifier",
- "bonus",
- "bordure",
- "borne",
- "botte",
- "boucle",
- "boueux",
- "bougie",
- "boulon",
- "bouquin",
- "bourse",
- "boussole",
- "boutique",
- "boxeur",
- "branche",
- "brasier",
- "brave",
- "brebis",
- "brèche",
- "breuvage",
- "bricoler",
- "brigade",
- "brillant",
- "brioche",
- "brique",
- "brochure",
- "broder",
- "bronzer",
- "brousse",
- "broyeur",
- "brume",
- "brusque",
- "brutal",
- "bruyant",
- "buffle",
- "buisson",
- "bulletin",
- "bureau",
- "burin",
- "bustier",
- "butiner",
- "butoir",
- "buvable",
- "buvette",
- "cabanon",
- "cabine",
- "cachette",
- "cadeau",
- "cadre",
- "caféine",
- "caillou",
- "caisson",
- "calculer",
- "calepin",
- "calibre",
- "calmer",
- "calomnie",
- "calvaire",
- "camarade",
- "caméra",
- "camion",
- "campagne",
- "canal",
- "caneton",
- "canon",
- "cantine",
- "canular",
- "capable",
- "caporal",
- "caprice",
- "capsule",
- "capter",
- "capuche",
- "carabine",
- "carbone",
- "caresser",
- "caribou",
- "carnage",
- "carotte",
- "carreau",
- "carton",
- "cascade",
- "casier",
- "casque",
- "cassure",
- "causer",
- "caution",
- "cavalier",
- "caverne",
- "caviar",
- "cédille",
- "ceinture",
- "céleste",
- "cellule",
- "cendrier",
- "censurer",
- "central",
- "cercle",
- "cérébral",
- "cerise",
- "cerner",
- "cerveau",
- "cesser",
- "chagrin",
- "chaise",
- "chaleur",
- "chambre",
- "chance",
- "chapitre",
- "charbon",
- "chasseur",
- "chaton",
- "chausson",
- "chavirer",
- "chemise",
- "chenille",
- "chéquier",
- "chercher",
- "cheval",
- "chien",
- "chiffre",
- "chignon",
- "chimère",
- "chiot",
- "chlorure",
- "chocolat",
- "choisir",
- "chose",
- "chouette",
- "chrome",
- "chute",
- "cigare",
- "cigogne",
- "cimenter",
- "cinéma",
- "cintrer",
- "circuler",
- "cirer",
- "cirque",
- "citerne",
- "citoyen",
- "citron",
- "civil",
- "clairon",
- "clameur",
- "claquer",
- "classe",
- "clavier",
- "client",
- "cligner",
- "climat",
- "clivage",
- "cloche",
- "clonage",
- "cloporte",
- "cobalt",
- "cobra",
- "cocasse",
- "cocotier",
- "coder",
- "codifier",
- "coffre",
- "cogner",
- "cohésion",
- "coiffer",
- "coincer",
- "colère",
- "colibri",
- "colline",
- "colmater",
- "colonel",
- "combat",
- "comédie",
- "commande",
- "compact",
- "concert",
- "conduire",
- "confier",
- "congeler",
- "connoter",
- "consonne",
- "contact",
- "convexe",
- "copain",
- "copie",
- "corail",
- "corbeau",
- "cordage",
- "corniche",
- "corpus",
- "correct",
- "cortège",
- "cosmique",
- "costume",
- "coton",
- "coude",
- "coupure",
- "courage",
- "couteau",
- "couvrir",
- "coyote",
- "crabe",
- "crainte",
- "cravate",
- "crayon",
- "créature",
- "créditer",
- "crémeux",
- "creuser",
- "crevette",
- "cribler",
- "crier",
- "cristal",
- "critère",
- "croire",
- "croquer",
- "crotale",
- "crucial",
- "cruel",
- "crypter",
- "cubique",
- "cueillir",
- "cuillère",
- "cuisine",
- "cuivre",
- "culminer",
- "cultiver",
- "cumuler",
- "cupide",
- "curatif",
- "curseur",
- "cyanure",
- "cycle",
- "cylindre",
- "cynique",
- "daigner",
- "damier",
- "danger",
- "danseur",
- "dauphin",
- "débattre",
- "débiter",
- "déborder",
- "débrider",
- "débutant",
- "décaler",
- "décembre",
- "déchirer",
- "décider",
- "déclarer",
- "décorer",
- "décrire",
- "décupler",
- "dédale",
- "déductif",
- "déesse",
- "défensif",
- "défiler",
- "défrayer",
- "dégager",
- "dégivrer",
- "déglutir",
- "dégrafer",
- "déjeuner",
- "délice",
- "déloger",
- "demander",
- "demeurer",
- "démolir",
- "dénicher",
- "dénouer",
- "dentelle",
- "dénuder",
- "départ",
- "dépenser",
- "déphaser",
- "déplacer",
- "déposer",
- "déranger",
- "dérober",
- "désastre",
- "descente",
- "désert",
- "désigner",
- "désobéir",
- "dessiner",
- "destrier",
- "détacher",
- "détester",
- "détourer",
- "détresse",
- "devancer",
- "devenir",
- "deviner",
- "devoir",
- "diable",
- "dialogue",
- "diamant",
- "dicter",
- "différer",
- "digérer",
- "digital",
- "digne",
- "diluer",
- "dimanche",
- "diminuer",
- "dioxyde",
- "directif",
- "diriger",
- "discuter",
- "disposer",
- "dissiper",
- "distance",
- "divertir",
- "diviser",
- "docile",
- "docteur",
- "dogme",
- "doigt",
- "domaine",
- "domicile",
- "dompter",
- "donateur",
- "donjon",
- "donner",
- "dopamine",
- "dortoir",
- "dorure",
- "dosage",
- "doseur",
- "dossier",
- "dotation",
- "douanier",
- "double",
- "douceur",
- "douter",
- "doyen",
- "dragon",
- "draper",
- "dresser",
- "dribbler",
- "droiture",
- "duperie",
- "duplexe",
- "durable",
- "durcir",
- "dynastie",
- "éblouir",
- "écarter",
- "écharpe",
- "échelle",
- "éclairer",
- "éclipse",
- "éclore",
- "écluse",
- "école",
- "économie",
- "écorce",
- "écouter",
- "écraser",
- "écrémer",
- "écrivain",
- "écrou",
- "écume",
- "écureuil",
- "édifier",
- "éduquer",
- "effacer",
- "effectif",
- "effigie",
- "effort",
- "effrayer",
- "effusion",
- "égaliser",
- "égarer",
- "éjecter",
- "élaborer",
- "élargir",
- "électron",
- "élégant",
- "éléphant",
- "élève",
- "éligible",
- "élitisme",
- "éloge",
- "élucider",
- "éluder",
- "emballer",
- "embellir",
- "embryon",
- "émeraude",
- "émission",
- "emmener",
- "émotion",
- "émouvoir",
- "empereur",
- "employer",
- "emporter",
- "emprise",
- "émulsion",
- "encadrer",
- "enchère",
- "enclave",
- "encoche",
- "endiguer",
- "endosser",
- "endroit",
- "enduire",
- "énergie",
- "enfance",
- "enfermer",
- "enfouir",
- "engager",
- "engin",
- "englober",
- "énigme",
- "enjamber",
- "enjeu",
- "enlever",
- "ennemi",
- "ennuyeux",
- "enrichir",
- "enrobage",
- "enseigne",
- "entasser",
- "entendre",
- "entier",
- "entourer",
- "entraver",
- "énumérer",
- "envahir",
- "enviable",
- "envoyer",
- "enzyme",
- "éolien",
- "épaissir",
- "épargne",
- "épatant",
- "épaule",
- "épicerie",
- "épidémie",
- "épier",
- "épilogue",
- "épine",
- "épisode",
- "épitaphe",
- "époque",
- "épreuve",
- "éprouver",
- "épuisant",
- "équerre",
- "équipe",
- "ériger",
- "érosion",
- "erreur",
- "éruption",
- "escalier",
- "espadon",
- "espèce",
- "espiègle",
- "espoir",
- "esprit",
- "esquiver",
- "essayer",
- "essence",
- "essieu",
- "essorer",
- "estime",
- "estomac",
- "estrade",
- "étagère",
- "étaler",
- "étanche",
- "étatique",
- "éteindre",
- "étendoir",
- "éternel",
- "éthanol",
- "éthique",
- "ethnie",
- "étirer",
- "étoffer",
- "étoile",
- "étonnant",
- "étourdir",
- "étrange",
- "étroit",
- "étude",
- "euphorie",
- "évaluer",
- "évasion",
- "éventail",
- "évidence",
- "éviter",
- "évolutif",
- "évoquer",
- "exact",
- "exagérer",
- "exaucer",
- "exceller",
- "excitant",
- "exclusif",
- "excuse",
- "exécuter",
- "exemple",
- "exercer",
- "exhaler",
- "exhorter",
- "exigence",
- "exiler",
- "exister",
- "exotique",
- "expédier",
- "explorer",
- "exposer",
- "exprimer",
- "exquis",
- "extensif",
- "extraire",
- "exulter",
- "fable",
- "fabuleux",
- "facette",
- "facile",
- "facture",
- "faiblir",
- "falaise",
- "fameux",
- "famille",
- "farceur",
- "farfelu",
- "farine",
- "farouche",
- "fasciner",
- "fatal",
- "fatigue",
- "faucon",
- "fautif",
- "faveur",
- "favori",
- "fébrile",
- "féconder",
- "fédérer",
- "félin",
- "femme",
- "fémur",
- "fendoir",
- "féodal",
- "fermer",
- "féroce",
- "ferveur",
- "festival",
- "feuille",
- "feutre",
- "février",
- "fiasco",
- "ficeler",
- "fictif",
- "fidèle",
- "figure",
- "filature",
- "filetage",
- "filière",
- "filleul",
- "filmer",
- "filou",
- "filtrer",
- "financer",
- "finir",
- "fiole",
- "firme",
- "fissure",
- "fixer",
- "flairer",
- "flamme",
- "flasque",
- "flatteur",
- "fléau",
- "flèche",
- "fleur",
- "flexion",
- "flocon",
- "flore",
- "fluctuer",
- "fluide",
- "fluvial",
- "folie",
- "fonderie",
- "fongible",
- "fontaine",
- "forcer",
- "forgeron",
- "formuler",
- "fortune",
- "fossile",
- "foudre",
- "fougère",
- "fouiller",
- "foulure",
- "fourmi",
- "fragile",
- "fraise",
- "franchir",
- "frapper",
- "frayeur",
- "frégate",
- "freiner",
- "frelon",
- "frémir",
- "frénésie",
- "frère",
- "friable",
- "friction",
- "frisson",
- "frivole",
- "froid",
- "fromage",
- "frontal",
- "frotter",
- "fruit",
- "fugitif",
- "fuite",
- "fureur",
- "furieux",
- "furtif",
- "fusion",
- "futur",
- "gagner",
- "galaxie",
- "galerie",
- "gambader",
- "garantir",
- "gardien",
- "garnir",
- "garrigue",
- "gazelle",
- "gazon",
- "géant",
- "gélatine",
- "gélule",
- "gendarme",
- "général",
- "génie",
- "genou",
- "gentil",
- "géologie",
- "géomètre",
- "géranium",
- "germe",
- "gestuel",
- "geyser",
- "gibier",
- "gicler",
- "girafe",
- "givre",
- "glace",
- "glaive",
- "glisser",
- "globe",
- "gloire",
- "glorieux",
- "golfeur",
- "gomme",
- "gonfler",
- "gorge",
- "gorille",
- "goudron",
- "gouffre",
- "goulot",
- "goupille",
- "gourmand",
- "goutte",
- "graduel",
- "graffiti",
- "graine",
- "grand",
- "grappin",
- "gratuit",
- "gravir",
- "grenat",
- "griffure",
- "griller",
- "grimper",
- "grogner",
- "gronder",
- "grotte",
- "groupe",
- "gruger",
- "grutier",
- "gruyère",
- "guépard",
- "guerrier",
- "guide",
- "guimauve",
- "guitare",
- "gustatif",
- "gymnaste",
- "gyrostat",
- "habitude",
- "hachoir",
- "halte",
- "hameau",
- "hangar",
- "hanneton",
- "haricot",
- "harmonie",
- "harpon",
- "hasard",
- "hélium",
- "hématome",
- "herbe",
- "hérisson",
- "hermine",
- "héron",
- "hésiter",
- "heureux",
- "hiberner",
- "hibou",
- "hilarant",
- "histoire",
- "hiver",
- "homard",
- "hommage",
- "homogène",
- "honneur",
- "honorer",
- "honteux",
- "horde",
- "horizon",
- "horloge",
- "hormone",
- "horrible",
- "houleux",
- "housse",
- "hublot",
- "huileux",
- "humain",
- "humble",
- "humide",
- "humour",
- "hurler",
- "hydromel",
- "hygiène",
- "hymne",
- "hypnose",
- "idylle",
- "ignorer",
- "iguane",
- "illicite",
- "illusion",
- "image",
- "imbiber",
- "imiter",
- "immense",
- "immobile",
- "immuable",
- "impact",
- "impérial",
- "implorer",
- "imposer",
- "imprimer",
- "imputer",
- "incarner",
- "incendie",
- "incident",
- "incliner",
- "incolore",
- "indexer",
- "indice",
- "inductif",
- "inédit",
- "ineptie",
- "inexact",
- "infini",
- "infliger",
- "informer",
- "infusion",
- "ingérer",
- "inhaler",
- "inhiber",
- "injecter",
- "injure",
- "innocent",
- "inoculer",
- "inonder",
- "inscrire",
- "insecte",
- "insigne",
- "insolite",
- "inspirer",
- "instinct",
- "insulter",
- "intact",
- "intense",
- "intime",
- "intrigue",
- "intuitif",
- "inutile",
- "invasion",
- "inventer",
- "inviter",
- "invoquer",
- "ironique",
- "irradier",
- "irréel",
- "irriter",
- "isoler",
- "ivoire",
- "ivresse",
- "jaguar",
- "jaillir",
- "jambe",
- "janvier",
- "jardin",
- "jauger",
- "jaune",
- "javelot",
- "jetable",
- "jeton",
- "jeudi",
- "jeunesse",
- "joindre",
- "joncher",
- "jongler",
- "joueur",
- "jouissif",
- "journal",
- "jovial",
- "joyau",
- "joyeux",
- "jubiler",
- "jugement",
- "junior",
- "jupon",
- "juriste",
- "justice",
- "juteux",
- "juvénile",
- "kayak",
- "kimono",
- "kiosque",
- "label",
- "labial",
- "labourer",
- "lacérer",
- "lactose",
- "lagune",
- "laine",
- "laisser",
- "laitier",
- "lambeau",
- "lamelle",
- "lampe",
- "lanceur",
- "langage",
- "lanterne",
- "lapin",
- "largeur",
- "larme",
- "laurier",
- "lavabo",
- "lavoir",
- "lecture",
- "légal",
- "léger",
- "légume",
- "lessive",
- "lettre",
- "levier",
- "lexique",
- "lézard",
- "liasse",
- "libérer",
- "libre",
- "licence",
- "licorne",
- "liège",
- "lièvre",
- "ligature",
- "ligoter",
- "ligue",
- "limer",
- "limite",
- "limonade",
- "limpide",
- "linéaire",
- "lingot",
- "lionceau",
- "liquide",
- "lisière",
- "lister",
- "lithium",
- "litige",
- "littoral",
- "livreur",
- "logique",
- "lointain",
- "loisir",
- "lombric",
- "loterie",
- "louer",
- "lourd",
- "loutre",
- "louve",
- "loyal",
- "lubie",
- "lucide",
- "lucratif",
- "lueur",
- "lugubre",
- "luisant",
- "lumière",
- "lunaire",
- "lundi",
- "luron",
- "lutter",
- "luxueux",
- "machine",
- "magasin",
- "magenta",
- "magique",
- "maigre",
- "maillon",
- "maintien",
- "mairie",
- "maison",
- "majorer",
- "malaxer",
- "maléfice",
- "malheur",
- "malice",
- "mallette",
- "mammouth",
- "mandater",
- "maniable",
- "manquant",
- "manteau",
- "manuel",
- "marathon",
- "marbre",
- "marchand",
- "mardi",
- "maritime",
- "marqueur",
- "marron",
- "marteler",
- "mascotte",
- "massif",
- "matériel",
- "matière",
- "matraque",
- "maudire",
- "maussade",
- "mauve",
- "maximal",
- "méchant",
- "méconnu",
- "médaille",
- "médecin",
- "méditer",
- "méduse",
- "meilleur",
- "mélange",
- "mélodie",
- "membre",
- "mémoire",
- "menacer",
- "mener",
- "menhir",
- "mensonge",
- "mentor",
- "mercredi",
- "mérite",
- "merle",
- "messager",
- "mesure",
- "métal",
- "météore",
- "méthode",
- "métier",
- "meuble",
- "miauler",
- "microbe",
- "miette",
- "mignon",
- "migrer",
- "milieu",
- "million",
- "mimique",
- "mince",
- "minéral",
- "minimal",
- "minorer",
- "minute",
- "miracle",
- "miroiter",
- "missile",
- "mixte",
- "mobile",
- "moderne",
- "moelleux",
- "mondial",
- "moniteur",
- "monnaie",
- "monotone",
- "monstre",
- "montagne",
- "monument",
- "moqueur",
- "morceau",
- "morsure",
- "mortier",
- "moteur",
- "motif",
- "mouche",
- "moufle",
- "moulin",
- "mousson",
- "mouton",
- "mouvant",
- "multiple",
- "munition",
- "muraille",
- "murène",
- "murmure",
- "muscle",
- "muséum",
- "musicien",
- "mutation",
- "muter",
- "mutuel",
- "myriade",
- "myrtille",
- "mystère",
- "mythique",
- "nageur",
- "nappe",
- "narquois",
- "narrer",
- "natation",
- "nation",
- "nature",
- "naufrage",
- "nautique",
- "navire",
- "nébuleux",
- "nectar",
- "néfaste",
- "négation",
- "négliger",
- "négocier",
- "neige",
- "nerveux",
- "nettoyer",
- "neurone",
- "neutron",
- "neveu",
- "niche",
- "nickel",
- "nitrate",
- "niveau",
- "noble",
- "nocif",
- "nocturne",
- "noirceur",
- "noisette",
- "nomade",
- "nombreux",
- "nommer",
- "normatif",
- "notable",
- "notifier",
- "notoire",
- "nourrir",
- "nouveau",
- "novateur",
- "novembre",
- "novice",
- "nuage",
- "nuancer",
- "nuire",
- "nuisible",
- "numéro",
- "nuptial",
- "nuque",
- "nutritif",
- "obéir",
- "objectif",
- "obliger",
- "obscur",
- "observer",
- "obstacle",
- "obtenir",
- "obturer",
- "occasion",
- "occuper",
- "océan",
- "octobre",
- "octroyer",
- "octupler",
- "oculaire",
- "odeur",
- "odorant",
- "offenser",
- "officier",
- "offrir",
- "ogive",
- "oiseau",
- "oisillon",
- "olfactif",
- "olivier",
- "ombrage",
- "omettre",
- "onctueux",
- "onduler",
- "onéreux",
- "onirique",
- "opale",
- "opaque",
- "opérer",
- "opinion",
- "opportun",
- "opprimer",
- "opter",
- "optique",
- "orageux",
- "orange",
- "orbite",
- "ordonner",
- "oreille",
- "organe",
- "orgueil",
- "orifice",
- "ornement",
- "orque",
- "ortie",
- "osciller",
- "osmose",
- "ossature",
- "otarie",
- "ouragan",
- "ourson",
- "outil",
- "outrager",
- "ouvrage",
- "ovation",
- "oxyde",
- "oxygène",
- "ozone",
- "paisible",
- "palace",
- "palmarès",
- "palourde",
- "palper",
- "panache",
- "panda",
- "pangolin",
- "paniquer",
- "panneau",
- "panorama",
- "pantalon",
- "papaye",
- "papier",
- "papoter",
- "papyrus",
- "paradoxe",
- "parcelle",
- "paresse",
- "parfumer",
- "parler",
- "parole",
- "parrain",
- "parsemer",
- "partager",
- "parure",
- "parvenir",
- "passion",
- "pastèque",
- "paternel",
- "patience",
- "patron",
- "pavillon",
- "pavoiser",
- "payer",
- "paysage",
- "peigne",
- "peintre",
- "pelage",
- "pélican",
- "pelle",
- "pelouse",
- "peluche",
- "pendule",
- "pénétrer",
- "pénible",
- "pensif",
- "pénurie",
- "pépite",
- "péplum",
- "perdrix",
- "perforer",
- "période",
- "permuter",
- "perplexe",
- "persil",
- "perte",
- "peser",
- "pétale",
- "petit",
- "pétrir",
- "peuple",
- "pharaon",
- "phobie",
- "phoque",
- "photon",
- "phrase",
- "physique",
- "piano",
- "pictural",
- "pièce",
- "pierre",
- "pieuvre",
- "pilote",
- "pinceau",
- "pipette",
- "piquer",
- "pirogue",
- "piscine",
- "piston",
- "pivoter",
- "pixel",
- "pizza",
- "placard",
- "plafond",
- "plaisir",
- "planer",
- "plaque",
- "plastron",
- "plateau",
- "pleurer",
- "plexus",
- "pliage",
- "plomb",
- "plonger",
- "pluie",
- "plumage",
- "pochette",
- "poésie",
- "poète",
- "pointe",
- "poirier",
- "poisson",
- "poivre",
- "polaire",
- "policier",
- "pollen",
- "polygone",
- "pommade",
- "pompier",
- "ponctuel",
- "pondérer",
- "poney",
- "portique",
- "position",
- "posséder",
- "posture",
- "potager",
- "poteau",
- "potion",
- "pouce",
- "poulain",
- "poumon",
- "pourpre",
- "poussin",
- "pouvoir",
- "prairie",
- "pratique",
- "précieux",
- "prédire",
- "préfixe",
- "prélude",
- "prénom",
- "présence",
- "prétexte",
- "prévoir",
- "primitif",
- "prince",
- "prison",
- "priver",
- "problème",
- "procéder",
- "prodige",
- "profond",
- "progrès",
- "proie",
- "projeter",
- "prologue",
- "promener",
- "propre",
- "prospère",
- "protéger",
- "prouesse",
- "proverbe",
- "prudence",
- "pruneau",
- "psychose",
- "public",
- "puceron",
- "puiser",
- "pulpe",
- "pulsar",
- "punaise",
- "punitif",
- "pupitre",
- "purifier",
- "puzzle",
- "pyramide",
- "quasar",
- "querelle",
- "question",
- "quiétude",
- "quitter",
- "quotient",
- "racine",
- "raconter",
- "radieux",
- "ragondin",
- "raideur",
- "raisin",
- "ralentir",
- "rallonge",
- "ramasser",
- "rapide",
- "rasage",
- "ratisser",
- "ravager",
- "ravin",
- "rayonner",
- "réactif",
- "réagir",
- "réaliser",
- "réanimer",
- "recevoir",
- "réciter",
- "réclamer",
- "récolter",
- "recruter",
- "reculer",
- "recycler",
- "rédiger",
- "redouter",
- "refaire",
- "réflexe",
- "réformer",
- "refrain",
- "refuge",
- "régalien",
- "région",
- "réglage",
- "régulier",
- "réitérer",
- "rejeter",
- "rejouer",
- "relatif",
- "relever",
- "relief",
- "remarque",
- "remède",
- "remise",
- "remonter",
- "remplir",
- "remuer",
- "renard",
- "renfort",
- "renifler",
- "renoncer",
- "rentrer",
- "renvoi",
- "replier",
- "reporter",
- "reprise",
- "reptile",
- "requin",
- "réserve",
- "résineux",
- "résoudre",
- "respect",
- "rester",
- "résultat",
- "rétablir",
- "retenir",
- "réticule",
- "retomber",
- "retracer",
- "réunion",
- "réussir",
- "revanche",
- "revivre",
- "révolte",
- "révulsif",
- "richesse",
- "rideau",
- "rieur",
- "rigide",
- "rigoler",
- "rincer",
- "riposter",
- "risible",
- "risque",
- "rituel",
- "rival",
- "rivière",
- "rocheux",
- "romance",
- "rompre",
- "ronce",
- "rondin",
- "roseau",
- "rosier",
- "rotatif",
- "rotor",
- "rotule",
- "rouge",
- "rouille",
- "rouleau",
- "routine",
- "royaume",
- "ruban",
- "rubis",
- "ruche",
- "ruelle",
- "rugueux",
- "ruiner",
- "ruisseau",
- "ruser",
- "rustique",
- "rythme",
- "sabler",
- "saboter",
- "sabre",
- "sacoche",
- "safari",
- "sagesse",
- "saisir",
- "salade",
- "salive",
- "salon",
- "saluer",
- "samedi",
- "sanction",
- "sanglier",
- "sarcasme",
- "sardine",
- "saturer",
- "saugrenu",
- "saumon",
- "sauter",
- "sauvage",
- "savant",
- "savonner",
- "scalpel",
- "scandale",
- "scélérat",
- "scénario",
- "sceptre",
- "schéma",
- "science",
- "scinder",
- "score",
- "scrutin",
- "sculpter",
- "séance",
- "sécable",
- "sécher",
- "secouer",
- "sécréter",
- "sédatif",
- "séduire",
- "seigneur",
- "séjour",
- "sélectif",
- "semaine",
- "sembler",
- "semence",
- "séminal",
- "sénateur",
- "sensible",
- "sentence",
- "séparer",
- "séquence",
- "serein",
- "sergent",
- "sérieux",
- "serrure",
- "sérum",
- "service",
- "sésame",
- "sévir",
- "sevrage",
- "sextuple",
- "sidéral",
- "siècle",
- "siéger",
- "siffler",
- "sigle",
- "signal",
- "silence",
- "silicium",
- "simple",
- "sincère",
- "sinistre",
- "siphon",
- "sirop",
- "sismique",
- "situer",
- "skier",
- "social",
- "socle",
- "sodium",
- "soigneux",
- "soldat",
- "soleil",
- "solitude",
- "soluble",
- "sombre",
- "sommeil",
- "somnoler",
- "sonde",
- "songeur",
- "sonnette",
- "sonore",
- "sorcier",
- "sortir",
- "sosie",
- "sottise",
- "soucieux",
- "soudure",
- "souffle",
- "soulever",
- "soupape",
- "source",
- "soutirer",
- "souvenir",
- "spacieux",
- "spatial",
- "spécial",
- "sphère",
- "spiral",
- "stable",
- "station",
- "sternum",
- "stimulus",
- "stipuler",
- "strict",
- "studieux",
- "stupeur",
- "styliste",
- "sublime",
- "substrat",
- "subtil",
- "subvenir",
- "succès",
- "sucre",
- "suffixe",
- "suggérer",
- "suiveur",
- "sulfate",
- "superbe",
- "supplier",
- "surface",
- "suricate",
- "surmener",
- "surprise",
- "sursaut",
- "survie",
- "suspect",
- "syllabe",
- "symbole",
- "symétrie",
- "synapse",
- "syntaxe",
- "système",
- "tabac",
- "tablier",
- "tactile",
- "tailler",
- "talent",
- "talisman",
- "talonner",
- "tambour",
- "tamiser",
- "tangible",
- "tapis",
- "taquiner",
- "tarder",
- "tarif",
- "tartine",
- "tasse",
- "tatami",
- "tatouage",
- "taupe",
- "taureau",
- "taxer",
- "témoin",
- "temporel",
- "tenaille",
- "tendre",
- "teneur",
- "tenir",
- "tension",
- "terminer",
- "terne",
- "terrible",
- "tétine",
- "texte",
- "thème",
- "théorie",
- "thérapie",
- "thorax",
- "tibia",
- "tiède",
- "timide",
- "tirelire",
- "tiroir",
- "tissu",
- "titane",
- "titre",
- "tituber",
- "toboggan",
- "tolérant",
- "tomate",
- "tonique",
- "tonneau",
- "toponyme",
- "torche",
- "tordre",
- "tornade",
- "torpille",
- "torrent",
- "torse",
- "tortue",
- "totem",
- "toucher",
- "tournage",
- "tousser",
- "toxine",
- "traction",
- "trafic",
- "tragique",
- "trahir",
- "train",
- "trancher",
- "travail",
- "trèfle",
- "tremper",
- "trésor",
- "treuil",
- "triage",
- "tribunal",
- "tricoter",
- "trilogie",
- "triomphe",
- "tripler",
- "triturer",
- "trivial",
- "trombone",
- "tronc",
- "tropical",
- "troupeau",
- "tuile",
- "tulipe",
- "tumulte",
- "tunnel",
- "turbine",
- "tuteur",
- "tutoyer",
- "tuyau",
- "tympan",
- "typhon",
- "typique",
- "tyran",
- "ubuesque",
- "ultime",
- "ultrason",
- "unanime",
- "unifier",
- "union",
- "unique",
- "unitaire",
- "univers",
- "uranium",
- "urbain",
- "urticant",
- "usage",
- "usine",
- "usuel",
- "usure",
- "utile",
- "utopie",
- "vacarme",
- "vaccin",
- "vagabond",
- "vague",
- "vaillant",
- "vaincre",
- "vaisseau",
- "valable",
- "valise",
- "vallon",
- "valve",
- "vampire",
- "vanille",
- "vapeur",
- "varier",
- "vaseux",
- "vassal",
- "vaste",
- "vecteur",
- "vedette",
- "végétal",
- "véhicule",
- "veinard",
- "véloce",
- "vendredi",
- "vénérer",
- "venger",
- "venimeux",
- "ventouse",
- "verdure",
- "vérin",
- "vernir",
- "verrou",
- "verser",
- "vertu",
- "veston",
- "vétéran",
- "vétuste",
- "vexant",
- "vexer",
- "viaduc",
- "viande",
- "victoire",
- "vidange",
- "vidéo",
- "vignette",
- "vigueur",
- "vilain",
- "village",
- "vinaigre",
- "violon",
- "vipère",
- "virement",
- "virtuose",
- "virus",
- "visage",
- "viseur",
- "vision",
- "visqueux",
- "visuel",
- "vital",
- "vitesse",
- "viticole",
- "vitrine",
- "vivace",
- "vivipare",
- "vocation",
- "voguer",
- "voile",
- "voisin",
- "voiture",
- "volaille",
- "volcan",
- "voltiger",
- "volume",
- "vorace",
- "vortex",
- "voter",
- "vouloir",
- "voyage",
- "voyelle",
- "wagon",
- "xénon",
- "yacht",
- "zèbre",
- "zénith",
- "zeste",
- "zoologie",
- )
-}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt
deleted file mode 100644
index 883104fd8..000000000
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt
+++ /dev/null
@@ -1,2060 +0,0 @@
-package io.iohk.atala.prism.apollo.utils.bip39.wordlists
-
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-internal object MnemonicCodeItalian {
- val wordList: List = listOf(
- "abaco",
- "abbaglio",
- "abbinato",
- "abete",
- "abisso",
- "abolire",
- "abrasivo",
- "abrogato",
- "accadere",
- "accenno",
- "accusato",
- "acetone",
- "achille",
- "acido",
- "acqua",
- "acre",
- "acrilico",
- "acrobata",
- "acuto",
- "adagio",
- "addebito",
- "addome",
- "adeguato",
- "aderire",
- "adipe",
- "adottare",
- "adulare",
- "affabile",
- "affetto",
- "affisso",
- "affranto",
- "aforisma",
- "afoso",
- "africano",
- "agave",
- "agente",
- "agevole",
- "aggancio",
- "agire",
- "agitare",
- "agonismo",
- "agricolo",
- "agrumeto",
- "aguzzo",
- "alabarda",
- "alato",
- "albatro",
- "alberato",
- "albo",
- "albume",
- "alce",
- "alcolico",
- "alettone",
- "alfa",
- "algebra",
- "aliante",
- "alibi",
- "alimento",
- "allagato",
- "allegro",
- "allievo",
- "allodola",
- "allusivo",
- "almeno",
- "alogeno",
- "alpaca",
- "alpestre",
- "altalena",
- "alterno",
- "alticcio",
- "altrove",
- "alunno",
- "alveolo",
- "alzare",
- "amalgama",
- "amanita",
- "amarena",
- "ambito",
- "ambrato",
- "ameba",
- "america",
- "ametista",
- "amico",
- "ammasso",
- "ammenda",
- "ammirare",
- "ammonito",
- "amore",
- "ampio",
- "ampliare",
- "amuleto",
- "anacardo",
- "anagrafe",
- "analista",
- "anarchia",
- "anatra",
- "anca",
- "ancella",
- "ancora",
- "andare",
- "andrea",
- "anello",
- "angelo",
- "angolare",
- "angusto",
- "anima",
- "annegare",
- "annidato",
- "anno",
- "annuncio",
- "anonimo",
- "anticipo",
- "anzi",
- "apatico",
- "apertura",
- "apode",
- "apparire",
- "appetito",
- "appoggio",
- "approdo",
- "appunto",
- "aprile",
- "arabica",
- "arachide",
- "aragosta",
- "araldica",
- "arancio",
- "aratura",
- "arazzo",
- "arbitro",
- "archivio",
- "ardito",
- "arenile",
- "argento",
- "argine",
- "arguto",
- "aria",
- "armonia",
- "arnese",
- "arredato",
- "arringa",
- "arrosto",
- "arsenico",
- "arso",
- "artefice",
- "arzillo",
- "asciutto",
- "ascolto",
- "asepsi",
- "asettico",
- "asfalto",
- "asino",
- "asola",
- "aspirato",
- "aspro",
- "assaggio",
- "asse",
- "assoluto",
- "assurdo",
- "asta",
- "astenuto",
- "astice",
- "astratto",
- "atavico",
- "ateismo",
- "atomico",
- "atono",
- "attesa",
- "attivare",
- "attorno",
- "attrito",
- "attuale",
- "ausilio",
- "austria",
- "autista",
- "autonomo",
- "autunno",
- "avanzato",
- "avere",
- "avvenire",
- "avviso",
- "avvolgere",
- "azione",
- "azoto",
- "azzimo",
- "azzurro",
- "babele",
- "baccano",
- "bacino",
- "baco",
- "badessa",
- "badilata",
- "bagnato",
- "baita",
- "balcone",
- "baldo",
- "balena",
- "ballata",
- "balzano",
- "bambino",
- "bandire",
- "baraonda",
- "barbaro",
- "barca",
- "baritono",
- "barlume",
- "barocco",
- "basilico",
- "basso",
- "batosta",
- "battuto",
- "baule",
- "bava",
- "bavosa",
- "becco",
- "beffa",
- "belgio",
- "belva",
- "benda",
- "benevole",
- "benigno",
- "benzina",
- "bere",
- "berlina",
- "beta",
- "bibita",
- "bici",
- "bidone",
- "bifido",
- "biga",
- "bilancia",
- "bimbo",
- "binocolo",
- "biologo",
- "bipede",
- "bipolare",
- "birbante",
- "birra",
- "biscotto",
- "bisesto",
- "bisnonno",
- "bisonte",
- "bisturi",
- "bizzarro",
- "blando",
- "blatta",
- "bollito",
- "bonifico",
- "bordo",
- "bosco",
- "botanico",
- "bottino",
- "bozzolo",
- "braccio",
- "bradipo",
- "brama",
- "branca",
- "bravura",
- "bretella",
- "brevetto",
- "brezza",
- "briglia",
- "brillante",
- "brindare",
- "broccolo",
- "brodo",
- "bronzina",
- "brullo",
- "bruno",
- "bubbone",
- "buca",
- "budino",
- "buffone",
- "buio",
- "bulbo",
- "buono",
- "burlone",
- "burrasca",
- "bussola",
- "busta",
- "cadetto",
- "caduco",
- "calamaro",
- "calcolo",
- "calesse",
- "calibro",
- "calmo",
- "caloria",
- "cambusa",
- "camerata",
- "camicia",
- "cammino",
- "camola",
- "campale",
- "canapa",
- "candela",
- "cane",
- "canino",
- "canotto",
- "cantina",
- "capace",
- "capello",
- "capitolo",
- "capogiro",
- "cappero",
- "capra",
- "capsula",
- "carapace",
- "carcassa",
- "cardo",
- "carisma",
- "carovana",
- "carretto",
- "cartolina",
- "casaccio",
- "cascata",
- "caserma",
- "caso",
- "cassone",
- "castello",
- "casuale",
- "catasta",
- "catena",
- "catrame",
- "cauto",
- "cavillo",
- "cedibile",
- "cedrata",
- "cefalo",
- "celebre",
- "cellulare",
- "cena",
- "cenone",
- "centesimo",
- "ceramica",
- "cercare",
- "certo",
- "cerume",
- "cervello",
- "cesoia",
- "cespo",
- "ceto",
- "chela",
- "chiaro",
- "chicca",
- "chiedere",
- "chimera",
- "china",
- "chirurgo",
- "chitarra",
- "ciao",
- "ciclismo",
- "cifrare",
- "cigno",
- "cilindro",
- "ciottolo",
- "circa",
- "cirrosi",
- "citrico",
- "cittadino",
- "ciuffo",
- "civetta",
- "civile",
- "classico",
- "clinica",
- "cloro",
- "cocco",
- "codardo",
- "codice",
- "coerente",
- "cognome",
- "collare",
- "colmato",
- "colore",
- "colposo",
- "coltivato",
- "colza",
- "coma",
- "cometa",
- "commando",
- "comodo",
- "computer",
- "comune",
- "conciso",
- "condurre",
- "conferma",
- "congelare",
- "coniuge",
- "connesso",
- "conoscere",
- "consumo",
- "continuo",
- "convegno",
- "coperto",
- "copione",
- "coppia",
- "copricapo",
- "corazza",
- "cordata",
- "coricato",
- "cornice",
- "corolla",
- "corpo",
- "corredo",
- "corsia",
- "cortese",
- "cosmico",
- "costante",
- "cottura",
- "covato",
- "cratere",
- "cravatta",
- "creato",
- "credere",
- "cremoso",
- "crescita",
- "creta",
- "criceto",
- "crinale",
- "crisi",
- "critico",
- "croce",
- "cronaca",
- "crostata",
- "cruciale",
- "crusca",
- "cucire",
- "cuculo",
- "cugino",
- "cullato",
- "cupola",
- "curatore",
- "cursore",
- "curvo",
- "cuscino",
- "custode",
- "dado",
- "daino",
- "dalmata",
- "damerino",
- "daniela",
- "dannoso",
- "danzare",
- "datato",
- "davanti",
- "davvero",
- "debutto",
- "decennio",
- "deciso",
- "declino",
- "decollo",
- "decreto",
- "dedicato",
- "definito",
- "deforme",
- "degno",
- "delegare",
- "delfino",
- "delirio",
- "delta",
- "demenza",
- "denotato",
- "dentro",
- "deposito",
- "derapata",
- "derivare",
- "deroga",
- "descritto",
- "deserto",
- "desiderio",
- "desumere",
- "detersivo",
- "devoto",
- "diametro",
- "dicembre",
- "diedro",
- "difeso",
- "diffuso",
- "digerire",
- "digitale",
- "diluvio",
- "dinamico",
- "dinnanzi",
- "dipinto",
- "diploma",
- "dipolo",
- "diradare",
- "dire",
- "dirotto",
- "dirupo",
- "disagio",
- "discreto",
- "disfare",
- "disgelo",
- "disposto",
- "distanza",
- "disumano",
- "dito",
- "divano",
- "divelto",
- "dividere",
- "divorato",
- "doblone",
- "docente",
- "doganale",
- "dogma",
- "dolce",
- "domato",
- "domenica",
- "dominare",
- "dondolo",
- "dono",
- "dormire",
- "dote",
- "dottore",
- "dovuto",
- "dozzina",
- "drago",
- "druido",
- "dubbio",
- "dubitare",
- "ducale",
- "duna",
- "duomo",
- "duplice",
- "duraturo",
- "ebano",
- "eccesso",
- "ecco",
- "eclissi",
- "economia",
- "edera",
- "edicola",
- "edile",
- "editoria",
- "educare",
- "egemonia",
- "egli",
- "egoismo",
- "egregio",
- "elaborato",
- "elargire",
- "elegante",
- "elencato",
- "eletto",
- "elevare",
- "elfico",
- "elica",
- "elmo",
- "elsa",
- "eluso",
- "emanato",
- "emblema",
- "emesso",
- "emiro",
- "emotivo",
- "emozione",
- "empirico",
- "emulo",
- "endemico",
- "enduro",
- "energia",
- "enfasi",
- "enoteca",
- "entrare",
- "enzima",
- "epatite",
- "epilogo",
- "episodio",
- "epocale",
- "eppure",
- "equatore",
- "erario",
- "erba",
- "erboso",
- "erede",
- "eremita",
- "erigere",
- "ermetico",
- "eroe",
- "erosivo",
- "errante",
- "esagono",
- "esame",
- "esanime",
- "esaudire",
- "esca",
- "esempio",
- "esercito",
- "esibito",
- "esigente",
- "esistere",
- "esito",
- "esofago",
- "esortato",
- "esoso",
- "espanso",
- "espresso",
- "essenza",
- "esso",
- "esteso",
- "estimare",
- "estonia",
- "estroso",
- "esultare",
- "etilico",
- "etnico",
- "etrusco",
- "etto",
- "euclideo",
- "europa",
- "evaso",
- "evidenza",
- "evitato",
- "evoluto",
- "evviva",
- "fabbrica",
- "faccenda",
- "fachiro",
- "falco",
- "famiglia",
- "fanale",
- "fanfara",
- "fango",
- "fantasma",
- "fare",
- "farfalla",
- "farinoso",
- "farmaco",
- "fascia",
- "fastoso",
- "fasullo",
- "faticare",
- "fato",
- "favoloso",
- "febbre",
- "fecola",
- "fede",
- "fegato",
- "felpa",
- "feltro",
- "femmina",
- "fendere",
- "fenomeno",
- "fermento",
- "ferro",
- "fertile",
- "fessura",
- "festivo",
- "fetta",
- "feudo",
- "fiaba",
- "fiducia",
- "fifa",
- "figurato",
- "filo",
- "finanza",
- "finestra",
- "finire",
- "fiore",
- "fiscale",
- "fisico",
- "fiume",
- "flacone",
- "flamenco",
- "flebo",
- "flemma",
- "florido",
- "fluente",
- "fluoro",
- "fobico",
- "focaccia",
- "focoso",
- "foderato",
- "foglio",
- "folata",
- "folclore",
- "folgore",
- "fondente",
- "fonetico",
- "fonia",
- "fontana",
- "forbito",
- "forchetta",
- "foresta",
- "formica",
- "fornaio",
- "foro",
- "fortezza",
- "forzare",
- "fosfato",
- "fosso",
- "fracasso",
- "frana",
- "frassino",
- "fratello",
- "freccetta",
- "frenata",
- "fresco",
- "frigo",
- "frollino",
- "fronde",
- "frugale",
- "frutta",
- "fucilata",
- "fucsia",
- "fuggente",
- "fulmine",
- "fulvo",
- "fumante",
- "fumetto",
- "fumoso",
- "fune",
- "funzione",
- "fuoco",
- "furbo",
- "furgone",
- "furore",
- "fuso",
- "futile",
- "gabbiano",
- "gaffe",
- "galateo",
- "gallina",
- "galoppo",
- "gambero",
- "gamma",
- "garanzia",
- "garbo",
- "garofano",
- "garzone",
- "gasdotto",
- "gasolio",
- "gastrico",
- "gatto",
- "gaudio",
- "gazebo",
- "gazzella",
- "geco",
- "gelatina",
- "gelso",
- "gemello",
- "gemmato",
- "gene",
- "genitore",
- "gennaio",
- "genotipo",
- "gergo",
- "ghepardo",
- "ghiaccio",
- "ghisa",
- "giallo",
- "gilda",
- "ginepro",
- "giocare",
- "gioiello",
- "giorno",
- "giove",
- "girato",
- "girone",
- "gittata",
- "giudizio",
- "giurato",
- "giusto",
- "globulo",
- "glutine",
- "gnomo",
- "gobba",
- "golf",
- "gomito",
- "gommone",
- "gonfio",
- "gonna",
- "governo",
- "gracile",
- "grado",
- "grafico",
- "grammo",
- "grande",
- "grattare",
- "gravoso",
- "grazia",
- "greca",
- "gregge",
- "grifone",
- "grigio",
- "grinza",
- "grotta",
- "gruppo",
- "guadagno",
- "guaio",
- "guanto",
- "guardare",
- "gufo",
- "guidare",
- "ibernato",
- "icona",
- "identico",
- "idillio",
- "idolo",
- "idra",
- "idrico",
- "idrogeno",
- "igiene",
- "ignaro",
- "ignorato",
- "ilare",
- "illeso",
- "illogico",
- "illudere",
- "imballo",
- "imbevuto",
- "imbocco",
- "imbuto",
- "immane",
- "immerso",
- "immolato",
- "impacco",
- "impeto",
- "impiego",
- "importo",
- "impronta",
- "inalare",
- "inarcare",
- "inattivo",
- "incanto",
- "incendio",
- "inchino",
- "incisivo",
- "incluso",
- "incontro",
- "incrocio",
- "incubo",
- "indagine",
- "india",
- "indole",
- "inedito",
- "infatti",
- "infilare",
- "inflitto",
- "ingaggio",
- "ingegno",
- "inglese",
- "ingordo",
- "ingrosso",
- "innesco",
- "inodore",
- "inoltrare",
- "inondato",
- "insano",
- "insetto",
- "insieme",
- "insonnia",
- "insulina",
- "intasato",
- "intero",
- "intonaco",
- "intuito",
- "inumidire",
- "invalido",
- "invece",
- "invito",
- "iperbole",
- "ipnotico",
- "ipotesi",
- "ippica",
- "iride",
- "irlanda",
- "ironico",
- "irrigato",
- "irrorare",
- "isolato",
- "isotopo",
- "isterico",
- "istituto",
- "istrice",
- "italia",
- "iterare",
- "labbro",
- "labirinto",
- "lacca",
- "lacerato",
- "lacrima",
- "lacuna",
- "laddove",
- "lago",
- "lampo",
- "lancetta",
- "lanterna",
- "lardoso",
- "larga",
- "laringe",
- "lastra",
- "latenza",
- "latino",
- "lattuga",
- "lavagna",
- "lavoro",
- "legale",
- "leggero",
- "lembo",
- "lentezza",
- "lenza",
- "leone",
- "lepre",
- "lesivo",
- "lessato",
- "lesto",
- "letterale",
- "leva",
- "levigato",
- "libero",
- "lido",
- "lievito",
- "lilla",
- "limatura",
- "limitare",
- "limpido",
- "lineare",
- "lingua",
- "liquido",
- "lira",
- "lirica",
- "lisca",
- "lite",
- "litigio",
- "livrea",
- "locanda",
- "lode",
- "logica",
- "lombare",
- "londra",
- "longevo",
- "loquace",
- "lorenzo",
- "loto",
- "lotteria",
- "luce",
- "lucidato",
- "lumaca",
- "luminoso",
- "lungo",
- "lupo",
- "luppolo",
- "lusinga",
- "lusso",
- "lutto",
- "macabro",
- "macchina",
- "macero",
- "macinato",
- "madama",
- "magico",
- "maglia",
- "magnete",
- "magro",
- "maiolica",
- "malafede",
- "malgrado",
- "malinteso",
- "malsano",
- "malto",
- "malumore",
- "mana",
- "mancia",
- "mandorla",
- "mangiare",
- "manifesto",
- "mannaro",
- "manovra",
- "mansarda",
- "mantide",
- "manubrio",
- "mappa",
- "maratona",
- "marcire",
- "maretta",
- "marmo",
- "marsupio",
- "maschera",
- "massaia",
- "mastino",
- "materasso",
- "matricola",
- "mattone",
- "maturo",
- "mazurca",
- "meandro",
- "meccanico",
- "mecenate",
- "medesimo",
- "meditare",
- "mega",
- "melassa",
- "melis",
- "melodia",
- "meninge",
- "meno",
- "mensola",
- "mercurio",
- "merenda",
- "merlo",
- "meschino",
- "mese",
- "messere",
- "mestolo",
- "metallo",
- "metodo",
- "mettere",
- "miagolare",
- "mica",
- "micelio",
- "michele",
- "microbo",
- "midollo",
- "miele",
- "migliore",
- "milano",
- "milite",
- "mimosa",
- "minerale",
- "mini",
- "minore",
- "mirino",
- "mirtillo",
- "miscela",
- "missiva",
- "misto",
- "misurare",
- "mitezza",
- "mitigare",
- "mitra",
- "mittente",
- "mnemonico",
- "modello",
- "modifica",
- "modulo",
- "mogano",
- "mogio",
- "mole",
- "molosso",
- "monastero",
- "monco",
- "mondina",
- "monetario",
- "monile",
- "monotono",
- "monsone",
- "montato",
- "monviso",
- "mora",
- "mordere",
- "morsicato",
- "mostro",
- "motivato",
- "motosega",
- "motto",
- "movenza",
- "movimento",
- "mozzo",
- "mucca",
- "mucosa",
- "muffa",
- "mughetto",
- "mugnaio",
- "mulatto",
- "mulinello",
- "multiplo",
- "mummia",
- "munto",
- "muovere",
- "murale",
- "musa",
- "muscolo",
- "musica",
- "mutevole",
- "muto",
- "nababbo",
- "nafta",
- "nanometro",
- "narciso",
- "narice",
- "narrato",
- "nascere",
- "nastrare",
- "naturale",
- "nautica",
- "naviglio",
- "nebulosa",
- "necrosi",
- "negativo",
- "negozio",
- "nemmeno",
- "neofita",
- "neretto",
- "nervo",
- "nessuno",
- "nettuno",
- "neutrale",
- "neve",
- "nevrotico",
- "nicchia",
- "ninfa",
- "nitido",
- "nobile",
- "nocivo",
- "nodo",
- "nome",
- "nomina",
- "nordico",
- "normale",
- "norvegese",
- "nostrano",
- "notare",
- "notizia",
- "notturno",
- "novella",
- "nucleo",
- "nulla",
- "numero",
- "nuovo",
- "nutrire",
- "nuvola",
- "nuziale",
- "oasi",
- "obbedire",
- "obbligo",
- "obelisco",
- "oblio",
- "obolo",
- "obsoleto",
- "occasione",
- "occhio",
- "occidente",
- "occorrere",
- "occultare",
- "ocra",
- "oculato",
- "odierno",
- "odorare",
- "offerta",
- "offrire",
- "offuscato",
- "oggetto",
- "oggi",
- "ognuno",
- "olandese",
- "olfatto",
- "oliato",
- "oliva",
- "ologramma",
- "oltre",
- "omaggio",
- "ombelico",
- "ombra",
- "omega",
- "omissione",
- "ondoso",
- "onere",
- "onice",
- "onnivoro",
- "onorevole",
- "onta",
- "operato",
- "opinione",
- "opposto",
- "oracolo",
- "orafo",
- "ordine",
- "orecchino",
- "orefice",
- "orfano",
- "organico",
- "origine",
- "orizzonte",
- "orma",
- "ormeggio",
- "ornativo",
- "orologio",
- "orrendo",
- "orribile",
- "ortensia",
- "ortica",
- "orzata",
- "orzo",
- "osare",
- "oscurare",
- "osmosi",
- "ospedale",
- "ospite",
- "ossa",
- "ossidare",
- "ostacolo",
- "oste",
- "otite",
- "otre",
- "ottagono",
- "ottimo",
- "ottobre",
- "ovale",
- "ovest",
- "ovino",
- "oviparo",
- "ovocito",
- "ovunque",
- "ovviare",
- "ozio",
- "pacchetto",
- "pace",
- "pacifico",
- "padella",
- "padrone",
- "paese",
- "paga",
- "pagina",
- "palazzina",
- "palesare",
- "pallido",
- "palo",
- "palude",
- "pandoro",
- "pannello",
- "paolo",
- "paonazzo",
- "paprica",
- "parabola",
- "parcella",
- "parere",
- "pargolo",
- "pari",
- "parlato",
- "parola",
- "partire",
- "parvenza",
- "parziale",
- "passivo",
- "pasticca",
- "patacca",
- "patologia",
- "pattume",
- "pavone",
- "peccato",
- "pedalare",
- "pedonale",
- "peggio",
- "peloso",
- "penare",
- "pendice",
- "penisola",
- "pennuto",
- "penombra",
- "pensare",
- "pentola",
- "pepe",
- "pepita",
- "perbene",
- "percorso",
- "perdonato",
- "perforare",
- "pergamena",
- "periodo",
- "permesso",
- "perno",
- "perplesso",
- "persuaso",
- "pertugio",
- "pervaso",
- "pesatore",
- "pesista",
- "peso",
- "pestifero",
- "petalo",
- "pettine",
- "petulante",
- "pezzo",
- "piacere",
- "pianta",
- "piattino",
- "piccino",
- "picozza",
- "piega",
- "pietra",
- "piffero",
- "pigiama",
- "pigolio",
- "pigro",
- "pila",
- "pilifero",
- "pillola",
- "pilota",
- "pimpante",
- "pineta",
- "pinna",
- "pinolo",
- "pioggia",
- "piombo",
- "piramide",
- "piretico",
- "pirite",
- "pirolisi",
- "pitone",
- "pizzico",
- "placebo",
- "planare",
- "plasma",
- "platano",
- "plenario",
- "pochezza",
- "poderoso",
- "podismo",
- "poesia",
- "poggiare",
- "polenta",
- "poligono",
- "pollice",
- "polmonite",
- "polpetta",
- "polso",
- "poltrona",
- "polvere",
- "pomice",
- "pomodoro",
- "ponte",
- "popoloso",
- "porfido",
- "poroso",
- "porpora",
- "porre",
- "portata",
- "posa",
- "positivo",
- "possesso",
- "postulato",
- "potassio",
- "potere",
- "pranzo",
- "prassi",
- "pratica",
- "precluso",
- "predica",
- "prefisso",
- "pregiato",
- "prelievo",
- "premere",
- "prenotare",
- "preparato",
- "presenza",
- "pretesto",
- "prevalso",
- "prima",
- "principe",
- "privato",
- "problema",
- "procura",
- "produrre",
- "profumo",
- "progetto",
- "prolunga",
- "promessa",
- "pronome",
- "proposta",
- "proroga",
- "proteso",
- "prova",
- "prudente",
- "prugna",
- "prurito",
- "psiche",
- "pubblico",
- "pudica",
- "pugilato",
- "pugno",
- "pulce",
- "pulito",
- "pulsante",
- "puntare",
- "pupazzo",
- "pupilla",
- "puro",
- "quadro",
- "qualcosa",
- "quasi",
- "querela",
- "quota",
- "raccolto",
- "raddoppio",
- "radicale",
- "radunato",
- "raffica",
- "ragazzo",
- "ragione",
- "ragno",
- "ramarro",
- "ramingo",
- "ramo",
- "randagio",
- "rantolare",
- "rapato",
- "rapina",
- "rappreso",
- "rasatura",
- "raschiato",
- "rasente",
- "rassegna",
- "rastrello",
- "rata",
- "ravveduto",
- "reale",
- "recepire",
- "recinto",
- "recluta",
- "recondito",
- "recupero",
- "reddito",
- "redimere",
- "regalato",
- "registro",
- "regola",
- "regresso",
- "relazione",
- "remare",
- "remoto",
- "renna",
- "replica",
- "reprimere",
- "reputare",
- "resa",
- "residente",
- "responso",
- "restauro",
- "rete",
- "retina",
- "retorica",
- "rettifica",
- "revocato",
- "riassunto",
- "ribadire",
- "ribelle",
- "ribrezzo",
- "ricarica",
- "ricco",
- "ricevere",
- "riciclato",
- "ricordo",
- "ricreduto",
- "ridicolo",
- "ridurre",
- "rifasare",
- "riflesso",
- "riforma",
- "rifugio",
- "rigare",
- "rigettato",
- "righello",
- "rilassato",
- "rilevato",
- "rimanere",
- "rimbalzo",
- "rimedio",
- "rimorchio",
- "rinascita",
- "rincaro",
- "rinforzo",
- "rinnovo",
- "rinomato",
- "rinsavito",
- "rintocco",
- "rinuncia",
- "rinvenire",
- "riparato",
- "ripetuto",
- "ripieno",
- "riportare",
- "ripresa",
- "ripulire",
- "risata",
- "rischio",
- "riserva",
- "risibile",
- "riso",
- "rispetto",
- "ristoro",
- "risultato",
- "risvolto",
- "ritardo",
- "ritegno",
- "ritmico",
- "ritrovo",
- "riunione",
- "riva",
- "riverso",
- "rivincita",
- "rivolto",
- "rizoma",
- "roba",
- "robotico",
- "robusto",
- "roccia",
- "roco",
- "rodaggio",
- "rodere",
- "roditore",
- "rogito",
- "rollio",
- "romantico",
- "rompere",
- "ronzio",
- "rosolare",
- "rospo",
- "rotante",
- "rotondo",
- "rotula",
- "rovescio",
- "rubizzo",
- "rubrica",
- "ruga",
- "rullino",
- "rumine",
- "rumoroso",
- "ruolo",
- "rupe",
- "russare",
- "rustico",
- "sabato",
- "sabbiare",
- "sabotato",
- "sagoma",
- "salasso",
- "saldatura",
- "salgemma",
- "salivare",
- "salmone",
- "salone",
- "saltare",
- "saluto",
- "salvo",
- "sapere",
- "sapido",
- "saporito",
- "saraceno",
- "sarcasmo",
- "sarto",
- "sassoso",
- "satellite",
- "satira",
- "satollo",
- "saturno",
- "savana",
- "savio",
- "saziato",
- "sbadiglio",
- "sbalzo",
- "sbancato",
- "sbarra",
- "sbattere",
- "sbavare",
- "sbendare",
- "sbirciare",
- "sbloccato",
- "sbocciato",
- "sbrinare",
- "sbruffone",
- "sbuffare",
- "scabroso",
- "scadenza",
- "scala",
- "scambiare",
- "scandalo",
- "scapola",
- "scarso",
- "scatenare",
- "scavato",
- "scelto",
- "scenico",
- "scettro",
- "scheda",
- "schiena",
- "sciarpa",
- "scienza",
- "scindere",
- "scippo",
- "sciroppo",
- "scivolo",
- "sclerare",
- "scodella",
- "scolpito",
- "scomparto",
- "sconforto",
- "scoprire",
- "scorta",
- "scossone",
- "scozzese",
- "scriba",
- "scrollare",
- "scrutinio",
- "scuderia",
- "scultore",
- "scuola",
- "scuro",
- "scusare",
- "sdebitare",
- "sdoganare",
- "seccatura",
- "secondo",
- "sedano",
- "seggiola",
- "segnalato",
- "segregato",
- "seguito",
- "selciato",
- "selettivo",
- "sella",
- "selvaggio",
- "semaforo",
- "sembrare",
- "seme",
- "seminato",
- "sempre",
- "senso",
- "sentire",
- "sepolto",
- "sequenza",
- "serata",
- "serbato",
- "sereno",
- "serio",
- "serpente",
- "serraglio",
- "servire",
- "sestina",
- "setola",
- "settimana",
- "sfacelo",
- "sfaldare",
- "sfamato",
- "sfarzoso",
- "sfaticato",
- "sfera",
- "sfida",
- "sfilato",
- "sfinge",
- "sfocato",
- "sfoderare",
- "sfogo",
- "sfoltire",
- "sforzato",
- "sfratto",
- "sfruttato",
- "sfuggito",
- "sfumare",
- "sfuso",
- "sgabello",
- "sgarbato",
- "sgonfiare",
- "sgorbio",
- "sgrassato",
- "sguardo",
- "sibilo",
- "siccome",
- "sierra",
- "sigla",
- "signore",
- "silenzio",
- "sillaba",
- "simbolo",
- "simpatico",
- "simulato",
- "sinfonia",
- "singolo",
- "sinistro",
- "sino",
- "sintesi",
- "sinusoide",
- "sipario",
- "sisma",
- "sistole",
- "situato",
- "slitta",
- "slogatura",
- "sloveno",
- "smarrito",
- "smemorato",
- "smentito",
- "smeraldo",
- "smilzo",
- "smontare",
- "smottato",
- "smussato",
- "snellire",
- "snervato",
- "snodo",
- "sobbalzo",
- "sobrio",
- "soccorso",
- "sociale",
- "sodale",
- "soffitto",
- "sogno",
- "soldato",
- "solenne",
- "solido",
- "sollazzo",
- "solo",
- "solubile",
- "solvente",
- "somatico",
- "somma",
- "sonda",
- "sonetto",
- "sonnifero",
- "sopire",
- "soppeso",
- "sopra",
- "sorgere",
- "sorpasso",
- "sorriso",
- "sorso",
- "sorteggio",
- "sorvolato",
- "sospiro",
- "sosta",
- "sottile",
- "spada",
- "spalla",
- "spargere",
- "spatola",
- "spavento",
- "spazzola",
- "specie",
- "spedire",
- "spegnere",
- "spelatura",
- "speranza",
- "spessore",
- "spettrale",
- "spezzato",
- "spia",
- "spigoloso",
- "spillato",
- "spinoso",
- "spirale",
- "splendido",
- "sportivo",
- "sposo",
- "spranga",
- "sprecare",
- "spronato",
- "spruzzo",
- "spuntino",
- "squillo",
- "sradicare",
- "srotolato",
- "stabile",
- "stacco",
- "staffa",
- "stagnare",
- "stampato",
- "stantio",
- "starnuto",
- "stasera",
- "statuto",
- "stelo",
- "steppa",
- "sterzo",
- "stiletto",
- "stima",
- "stirpe",
- "stivale",
- "stizzoso",
- "stonato",
- "storico",
- "strappo",
- "stregato",
- "stridulo",
- "strozzare",
- "strutto",
- "stuccare",
- "stufo",
- "stupendo",
- "subentro",
- "succoso",
- "sudore",
- "suggerito",
- "sugo",
- "sultano",
- "suonare",
- "superbo",
- "supporto",
- "surgelato",
- "surrogato",
- "sussurro",
- "sutura",
- "svagare",
- "svedese",
- "sveglio",
- "svelare",
- "svenuto",
- "svezia",
- "sviluppo",
- "svista",
- "svizzera",
- "svolta",
- "svuotare",
- "tabacco",
- "tabulato",
- "tacciare",
- "taciturno",
- "tale",
- "talismano",
- "tampone",
- "tannino",
- "tara",
- "tardivo",
- "targato",
- "tariffa",
- "tarpare",
- "tartaruga",
- "tasto",
- "tattico",
- "taverna",
- "tavolata",
- "tazza",
- "teca",
- "tecnico",
- "telefono",
- "temerario",
- "tempo",
- "temuto",
- "tendone",
- "tenero",
- "tensione",
- "tentacolo",
- "teorema",
- "terme",
- "terrazzo",
- "terzetto",
- "tesi",
- "tesserato",
- "testato",
- "tetro",
- "tettoia",
- "tifare",
- "tigella",
- "timbro",
- "tinto",
- "tipico",
- "tipografo",
- "tiraggio",
- "tiro",
- "titanio",
- "titolo",
- "titubante",
- "tizio",
- "tizzone",
- "toccare",
- "tollerare",
- "tolto",
- "tombola",
- "tomo",
- "tonfo",
- "tonsilla",
- "topazio",
- "topologia",
- "toppa",
- "torba",
- "tornare",
- "torrone",
- "tortora",
- "toscano",
- "tossire",
- "tostatura",
- "totano",
- "trabocco",
- "trachea",
- "trafila",
- "tragedia",
- "tralcio",
- "tramonto",
- "transito",
- "trapano",
- "trarre",
- "trasloco",
- "trattato",
- "trave",
- "treccia",
- "tremolio",
- "trespolo",
- "tributo",
- "tricheco",
- "trifoglio",
- "trillo",
- "trincea",
- "trio",
- "tristezza",
- "triturato",
- "trivella",
- "tromba",
- "trono",
- "troppo",
- "trottola",
- "trovare",
- "truccato",
- "tubatura",
- "tuffato",
- "tulipano",
- "tumulto",
- "tunisia",
- "turbare",
- "turchino",
- "tuta",
- "tutela",
- "ubicato",
- "uccello",
- "uccisore",
- "udire",
- "uditivo",
- "uffa",
- "ufficio",
- "uguale",
- "ulisse",
- "ultimato",
- "umano",
- "umile",
- "umorismo",
- "uncinetto",
- "ungere",
- "ungherese",
- "unicorno",
- "unificato",
- "unisono",
- "unitario",
- "unte",
- "uovo",
- "upupa",
- "uragano",
- "urgenza",
- "urlo",
- "usanza",
- "usato",
- "uscito",
- "usignolo",
- "usuraio",
- "utensile",
- "utilizzo",
- "utopia",
- "vacante",
- "vaccinato",
- "vagabondo",
- "vagliato",
- "valanga",
- "valgo",
- "valico",
- "valletta",
- "valoroso",
- "valutare",
- "valvola",
- "vampata",
- "vangare",
- "vanitoso",
- "vano",
- "vantaggio",
- "vanvera",
- "vapore",
- "varano",
- "varcato",
- "variante",
- "vasca",
- "vedetta",
- "vedova",
- "veduto",
- "vegetale",
- "veicolo",
- "velcro",
- "velina",
- "velluto",
- "veloce",
- "venato",
- "vendemmia",
- "vento",
- "verace",
- "verbale",
- "vergogna",
- "verifica",
- "vero",
- "verruca",
- "verticale",
- "vescica",
- "vessillo",
- "vestale",
- "veterano",
- "vetrina",
- "vetusto",
- "viandante",
- "vibrante",
- "vicenda",
- "vichingo",
- "vicinanza",
- "vidimare",
- "vigilia",
- "vigneto",
- "vigore",
- "vile",
- "villano",
- "vimini",
- "vincitore",
- "viola",
- "vipera",
- "virgola",
- "virologo",
- "virulento",
- "viscoso",
- "visione",
- "vispo",
- "vissuto",
- "visura",
- "vita",
- "vitello",
- "vittima",
- "vivanda",
- "vivido",
- "viziare",
- "voce",
- "voga",
- "volatile",
- "volere",
- "volpe",
- "voragine",
- "vulcano",
- "zampogna",
- "zanna",
- "zappato",
- "zattera",
- "zavorra",
- "zefiro",
- "zelante",
- "zelo",
- "zenzero",
- "zerbino",
- "zibetto",
- "zinco",
- "zircone",
- "zitto",
- "zolla",
- "zotico",
- "zucchero",
- "zufolo",
- "zulu",
- "zuppa",
- "",
- )
-}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt
deleted file mode 100644
index 2d7154b9e..000000000
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt
+++ /dev/null
@@ -1,2059 +0,0 @@
-package io.iohk.atala.prism.apollo.utils.bip39.wordlists
-
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-internal object MnemonicCodeJapanese {
- val wordList: List = listOf(
- "あいこくしん",
- "あいさつ",
- "あいだ",
- "あおぞら",
- "あかちゃん",
- "あきる",
- "あけがた",
- "あける",
- "あこがれる",
- "あさい",
- "あさひ",
- "あしあと",
- "あじわう",
- "あずかる",
- "あずき",
- "あそぶ",
- "あたえる",
- "あたためる",
- "あたりまえ",
- "あたる",
- "あつい",
- "あつかう",
- "あっしゅく",
- "あつまり",
- "あつめる",
- "あてな",
- "あてはまる",
- "あひる",
- "あぶら",
- "あぶる",
- "あふれる",
- "あまい",
- "あまど",
- "あまやかす",
- "あまり",
- "あみもの",
- "あめりか",
- "あやまる",
- "あゆむ",
- "あらいぐま",
- "あらし",
- "あらすじ",
- "あらためる",
- "あらゆる",
- "あらわす",
- "ありがとう",
- "あわせる",
- "あわてる",
- "あんい",
- "あんがい",
- "あんこ",
- "あんぜん",
- "あんてい",
- "あんない",
- "あんまり",
- "いいだす",
- "いおん",
- "いがい",
- "いがく",
- "いきおい",
- "いきなり",
- "いきもの",
- "いきる",
- "いくじ",
- "いくぶん",
- "いけばな",
- "いけん",
- "いこう",
- "いこく",
- "いこつ",
- "いさましい",
- "いさん",
- "いしき",
- "いじゅう",
- "いじょう",
- "いじわる",
- "いずみ",
- "いずれ",
- "いせい",
- "いせえび",
- "いせかい",
- "いせき",
- "いぜん",
- "いそうろう",
- "いそがしい",
- "いだい",
- "いだく",
- "いたずら",
- "いたみ",
- "いたりあ",
- "いちおう",
- "いちじ",
- "いちど",
- "いちば",
- "いちぶ",
- "いちりゅう",
- "いつか",
- "いっしゅん",
- "いっせい",
- "いっそう",
- "いったん",
- "いっち",
- "いってい",
- "いっぽう",
- "いてざ",
- "いてん",
- "いどう",
- "いとこ",
- "いない",
- "いなか",
- "いねむり",
- "いのち",
- "いのる",
- "いはつ",
- "いばる",
- "いはん",
- "いびき",
- "いひん",
- "いふく",
- "いへん",
- "いほう",
- "いみん",
- "いもうと",
- "いもたれ",
- "いもり",
- "いやがる",
- "いやす",
- "いよかん",
- "いよく",
- "いらい",
- "いらすと",
- "いりぐち",
- "いりょう",
- "いれい",
- "いれもの",
- "いれる",
- "いろえんぴつ",
- "いわい",
- "いわう",
- "いわかん",
- "いわば",
- "いわゆる",
- "いんげんまめ",
- "いんさつ",
- "いんしょう",
- "いんよう",
- "うえき",
- "うえる",
- "うおざ",
- "うがい",
- "うかぶ",
- "うかべる",
- "うきわ",
- "うくらいな",
- "うくれれ",
- "うけたまわる",
- "うけつけ",
- "うけとる",
- "うけもつ",
- "うける",
- "うごかす",
- "うごく",
- "うこん",
- "うさぎ",
- "うしなう",
- "うしろがみ",
- "うすい",
- "うすぎ",
- "うすぐらい",
- "うすめる",
- "うせつ",
- "うちあわせ",
- "うちがわ",
- "うちき",
- "うちゅう",
- "うっかり",
- "うつくしい",
- "うったえる",
- "うつる",
- "うどん",
- "うなぎ",
- "うなじ",
- "うなずく",
- "うなる",
- "うねる",
- "うのう",
- "うぶげ",
- "うぶごえ",
- "うまれる",
- "うめる",
- "うもう",
- "うやまう",
- "うよく",
- "うらがえす",
- "うらぐち",
- "うらない",
- "うりあげ",
- "うりきれ",
- "うるさい",
- "うれしい",
- "うれゆき",
- "うれる",
- "うろこ",
- "うわき",
- "うわさ",
- "うんこう",
- "うんちん",
- "うんてん",
- "うんどう",
- "えいえん",
- "えいが",
- "えいきょう",
- "えいご",
- "えいせい",
- "えいぶん",
- "えいよう",
- "えいわ",
- "えおり",
- "えがお",
- "えがく",
- "えきたい",
- "えくせる",
- "えしゃく",
- "えすて",
- "えつらん",
- "えのぐ",
- "えほうまき",
- "えほん",
- "えまき",
- "えもじ",
- "えもの",
- "えらい",
- "えらぶ",
- "えりあ",
- "えんえん",
- "えんかい",
- "えんぎ",
- "えんげき",
- "えんしゅう",
- "えんぜつ",
- "えんそく",
- "えんちょう",
- "えんとつ",
- "おいかける",
- "おいこす",
- "おいしい",
- "おいつく",
- "おうえん",
- "おうさま",
- "おうじ",
- "おうせつ",
- "おうたい",
- "おうふく",
- "おうべい",
- "おうよう",
- "おえる",
- "おおい",
- "おおう",
- "おおどおり",
- "おおや",
- "おおよそ",
- "おかえり",
- "おかず",
- "おがむ",
- "おかわり",
- "おぎなう",
- "おきる",
- "おくさま",
- "おくじょう",
- "おくりがな",
- "おくる",
- "おくれる",
- "おこす",
- "おこなう",
- "おこる",
- "おさえる",
- "おさない",
- "おさめる",
- "おしいれ",
- "おしえる",
- "おじぎ",
- "おじさん",
- "おしゃれ",
- "おそらく",
- "おそわる",
- "おたがい",
- "おたく",
- "おだやか",
- "おちつく",
- "おっと",
- "おつり",
- "おでかけ",
- "おとしもの",
- "おとなしい",
- "おどり",
- "おどろかす",
- "おばさん",
- "おまいり",
- "おめでとう",
- "おもいで",
- "おもう",
- "おもたい",
- "おもちゃ",
- "おやつ",
- "おやゆび",
- "およぼす",
- "おらんだ",
- "おろす",
- "おんがく",
- "おんけい",
- "おんしゃ",
- "おんせん",
- "おんだん",
- "おんちゅう",
- "おんどけい",
- "かあつ",
- "かいが",
- "がいき",
- "がいけん",
- "がいこう",
- "かいさつ",
- "かいしゃ",
- "かいすいよく",
- "かいぜん",
- "かいぞうど",
- "かいつう",
- "かいてん",
- "かいとう",
- "かいふく",
- "がいへき",
- "かいほう",
- "かいよう",
- "がいらい",
- "かいわ",
- "かえる",
- "かおり",
- "かかえる",
- "かがく",
- "かがし",
- "かがみ",
- "かくご",
- "かくとく",
- "かざる",
- "がぞう",
- "かたい",
- "かたち",
- "がちょう",
- "がっきゅう",
- "がっこう",
- "がっさん",
- "がっしょう",
- "かなざわし",
- "かのう",
- "がはく",
- "かぶか",
- "かほう",
- "かほご",
- "かまう",
- "かまぼこ",
- "かめれおん",
- "かゆい",
- "かようび",
- "からい",
- "かるい",
- "かろう",
- "かわく",
- "かわら",
- "がんか",
- "かんけい",
- "かんこう",
- "かんしゃ",
- "かんそう",
- "かんたん",
- "かんち",
- "がんばる",
- "きあい",
- "きあつ",
- "きいろ",
- "ぎいん",
- "きうい",
- "きうん",
- "きえる",
- "きおう",
- "きおく",
- "きおち",
- "きおん",
- "きかい",
- "きかく",
- "きかんしゃ",
- "ききて",
- "きくばり",
- "きくらげ",
- "きけんせい",
- "きこう",
- "きこえる",
- "きこく",
- "きさい",
- "きさく",
- "きさま",
- "きさらぎ",
- "ぎじかがく",
- "ぎしき",
- "ぎじたいけん",
- "ぎじにってい",
- "ぎじゅつしゃ",
- "きすう",
- "きせい",
- "きせき",
- "きせつ",
- "きそう",
- "きぞく",
- "きぞん",
- "きたえる",
- "きちょう",
- "きつえん",
- "ぎっちり",
- "きつつき",
- "きつね",
- "きてい",
- "きどう",
- "きどく",
- "きない",
- "きなが",
- "きなこ",
- "きぬごし",
- "きねん",
- "きのう",
- "きのした",
- "きはく",
- "きびしい",
- "きひん",
- "きふく",
- "きぶん",
- "きぼう",
- "きほん",
- "きまる",
- "きみつ",
- "きむずかしい",
- "きめる",
- "きもだめし",
- "きもち",
- "きもの",
- "きゃく",
- "きやく",
- "ぎゅうにく",
- "きよう",
- "きょうりゅう",
- "きらい",
- "きらく",
- "きりん",
- "きれい",
- "きれつ",
- "きろく",
- "ぎろん",
- "きわめる",
- "ぎんいろ",
- "きんかくじ",
- "きんじょ",
- "きんようび",
- "ぐあい",
- "くいず",
- "くうかん",
- "くうき",
- "くうぐん",
- "くうこう",
- "ぐうせい",
- "くうそう",
- "ぐうたら",
- "くうふく",
- "くうぼ",
- "くかん",
- "くきょう",
- "くげん",
- "ぐこう",
- "くさい",
- "くさき",
- "くさばな",
- "くさる",
- "くしゃみ",
- "くしょう",
- "くすのき",
- "くすりゆび",
- "くせげ",
- "くせん",
- "ぐたいてき",
- "くださる",
- "くたびれる",
- "くちこみ",
- "くちさき",
- "くつした",
- "ぐっすり",
- "くつろぐ",
- "くとうてん",
- "くどく",
- "くなん",
- "くねくね",
- "くのう",
- "くふう",
- "くみあわせ",
- "くみたてる",
- "くめる",
- "くやくしょ",
- "くらす",
- "くらべる",
- "くるま",
- "くれる",
- "くろう",
- "くわしい",
- "ぐんかん",
- "ぐんしょく",
- "ぐんたい",
- "ぐんて",
- "けあな",
- "けいかく",
- "けいけん",
- "けいこ",
- "けいさつ",
- "げいじゅつ",
- "けいたい",
- "げいのうじん",
- "けいれき",
- "けいろ",
- "けおとす",
- "けおりもの",
- "げきか",
- "げきげん",
- "げきだん",
- "げきちん",
- "げきとつ",
- "げきは",
- "げきやく",
- "げこう",
- "げこくじょう",
- "げざい",
- "けさき",
- "げざん",
- "けしき",
- "けしごむ",
- "けしょう",
- "げすと",
- "けたば",
- "けちゃっぷ",
- "けちらす",
- "けつあつ",
- "けつい",
- "けつえき",
- "けっこん",
- "けつじょ",
- "けっせき",
- "けってい",
- "けつまつ",
- "げつようび",
- "げつれい",
- "けつろん",
- "げどく",
- "けとばす",
- "けとる",
- "けなげ",
- "けなす",
- "けなみ",
- "けぬき",
- "げねつ",
- "けねん",
- "けはい",
- "げひん",
- "けぶかい",
- "げぼく",
- "けまり",
- "けみかる",
- "けむし",
- "けむり",
- "けもの",
- "けらい",
- "けろけろ",
- "けわしい",
- "けんい",
- "けんえつ",
- "けんお",
- "けんか",
- "げんき",
- "けんげん",
- "けんこう",
- "けんさく",
- "けんしゅう",
- "けんすう",
- "げんそう",
- "けんちく",
- "けんてい",
- "けんとう",
- "けんない",
- "けんにん",
- "げんぶつ",
- "けんま",
- "けんみん",
- "けんめい",
- "けんらん",
- "けんり",
- "こあくま",
- "こいぬ",
- "こいびと",
- "ごうい",
- "こうえん",
- "こうおん",
- "こうかん",
- "ごうきゅう",
- "ごうけい",
- "こうこう",
- "こうさい",
- "こうじ",
- "こうすい",
- "ごうせい",
- "こうそく",
- "こうたい",
- "こうちゃ",
- "こうつう",
- "こうてい",
- "こうどう",
- "こうない",
- "こうはい",
- "ごうほう",
- "ごうまん",
- "こうもく",
- "こうりつ",
- "こえる",
- "こおり",
- "ごかい",
- "ごがつ",
- "ごかん",
- "こくご",
- "こくさい",
- "こくとう",
- "こくない",
- "こくはく",
- "こぐま",
- "こけい",
- "こける",
- "ここのか",
- "こころ",
- "こさめ",
- "こしつ",
- "こすう",
- "こせい",
- "こせき",
- "こぜん",
- "こそだて",
- "こたい",
- "こたえる",
- "こたつ",
- "こちょう",
- "こっか",
- "こつこつ",
- "こつばん",
- "こつぶ",
- "こてい",
- "こてん",
- "ことがら",
- "ことし",
- "ことば",
- "ことり",
- "こなごな",
- "こねこね",
- "このまま",
- "このみ",
- "このよ",
- "ごはん",
- "こひつじ",
- "こふう",
- "こふん",
- "こぼれる",
- "ごまあぶら",
- "こまかい",
- "ごますり",
- "こまつな",
- "こまる",
- "こむぎこ",
- "こもじ",
- "こもち",
- "こもの",
- "こもん",
- "こやく",
- "こやま",
- "こゆう",
- "こゆび",
- "こよい",
- "こよう",
- "こりる",
- "これくしょん",
- "ころっけ",
- "こわもて",
- "こわれる",
- "こんいん",
- "こんかい",
- "こんき",
- "こんしゅう",
- "こんすい",
- "こんだて",
- "こんとん",
- "こんなん",
- "こんびに",
- "こんぽん",
- "こんまけ",
- "こんや",
- "こんれい",
- "こんわく",
- "ざいえき",
- "さいかい",
- "さいきん",
- "ざいげん",
- "ざいこ",
- "さいしょ",
- "さいせい",
- "ざいたく",
- "ざいちゅう",
- "さいてき",
- "ざいりょう",
- "さうな",
- "さかいし",
- "さがす",
- "さかな",
- "さかみち",
- "さがる",
- "さぎょう",
- "さくし",
- "さくひん",
- "さくら",
- "さこく",
- "さこつ",
- "さずかる",
- "ざせき",
- "さたん",
- "さつえい",
- "ざつおん",
- "ざっか",
- "ざつがく",
- "さっきょく",
- "ざっし",
- "さつじん",
- "ざっそう",
- "さつたば",
- "さつまいも",
- "さてい",
- "さといも",
- "さとう",
- "さとおや",
- "さとし",
- "さとる",
- "さのう",
- "さばく",
- "さびしい",
- "さべつ",
- "さほう",
- "さほど",
- "さます",
- "さみしい",
- "さみだれ",
- "さむけ",
- "さめる",
- "さやえんどう",
- "さゆう",
- "さよう",
- "さよく",
- "さらだ",
- "ざるそば",
- "さわやか",
- "さわる",
- "さんいん",
- "さんか",
- "さんきゃく",
- "さんこう",
- "さんさい",
- "ざんしょ",
- "さんすう",
- "さんせい",
- "さんそ",
- "さんち",
- "さんま",
- "さんみ",
- "さんらん",
- "しあい",
- "しあげ",
- "しあさって",
- "しあわせ",
- "しいく",
- "しいん",
- "しうち",
- "しえい",
- "しおけ",
- "しかい",
- "しかく",
- "じかん",
- "しごと",
- "しすう",
- "じだい",
- "したうけ",
- "したぎ",
- "したて",
- "したみ",
- "しちょう",
- "しちりん",
- "しっかり",
- "しつじ",
- "しつもん",
- "してい",
- "してき",
- "してつ",
- "じてん",
- "じどう",
- "しなぎれ",
- "しなもの",
- "しなん",
- "しねま",
- "しねん",
- "しのぐ",
- "しのぶ",
- "しはい",
- "しばかり",
- "しはつ",
- "しはらい",
- "しはん",
- "しひょう",
- "しふく",
- "じぶん",
- "しへい",
- "しほう",
- "しほん",
- "しまう",
- "しまる",
- "しみん",
- "しむける",
- "じむしょ",
- "しめい",
- "しめる",
- "しもん",
- "しゃいん",
- "しゃうん",
- "しゃおん",
- "じゃがいも",
- "しやくしょ",
- "しゃくほう",
- "しゃけん",
- "しゃこ",
- "しゃざい",
- "しゃしん",
- "しゃせん",
- "しゃそう",
- "しゃたい",
- "しゃちょう",
- "しゃっきん",
- "じゃま",
- "しゃりん",
- "しゃれい",
- "じゆう",
- "じゅうしょ",
- "しゅくはく",
- "じゅしん",
- "しゅっせき",
- "しゅみ",
- "しゅらば",
- "じゅんばん",
- "しょうかい",
- "しょくたく",
- "しょっけん",
- "しょどう",
- "しょもつ",
- "しらせる",
- "しらべる",
- "しんか",
- "しんこう",
- "じんじゃ",
- "しんせいじ",
- "しんちく",
- "しんりん",
- "すあげ",
- "すあし",
- "すあな",
- "ずあん",
- "すいえい",
- "すいか",
- "すいとう",
- "ずいぶん",
- "すいようび",
- "すうがく",
- "すうじつ",
- "すうせん",
- "すおどり",
- "すきま",
- "すくう",
- "すくない",
- "すける",
- "すごい",
- "すこし",
- "ずさん",
- "すずしい",
- "すすむ",
- "すすめる",
- "すっかり",
- "ずっしり",
- "ずっと",
- "すてき",
- "すてる",
- "すねる",
- "すのこ",
- "すはだ",
- "すばらしい",
- "ずひょう",
- "ずぶぬれ",
- "すぶり",
- "すふれ",
- "すべて",
- "すべる",
- "ずほう",
- "すぼん",
- "すまい",
- "すめし",
- "すもう",
- "すやき",
- "すらすら",
- "するめ",
- "すれちがう",
- "すろっと",
- "すわる",
- "すんぜん",
- "すんぽう",
- "せあぶら",
- "せいかつ",
- "せいげん",
- "せいじ",
- "せいよう",
- "せおう",
- "せかいかん",
- "せきにん",
- "せきむ",
- "せきゆ",
- "せきらんうん",
- "せけん",
- "せこう",
- "せすじ",
- "せたい",
- "せたけ",
- "せっかく",
- "せっきゃく",
- "ぜっく",
- "せっけん",
- "せっこつ",
- "せっさたくま",
- "せつぞく",
- "せつだん",
- "せつでん",
- "せっぱん",
- "せつび",
- "せつぶん",
- "せつめい",
- "せつりつ",
- "せなか",
- "せのび",
- "せはば",
- "せびろ",
- "せぼね",
- "せまい",
- "せまる",
- "せめる",
- "せもたれ",
- "せりふ",
- "ぜんあく",
- "せんい",
- "せんえい",
- "せんか",
- "せんきょ",
- "せんく",
- "せんげん",
- "ぜんご",
- "せんさい",
- "せんしゅ",
- "せんすい",
- "せんせい",
- "せんぞ",
- "せんたく",
- "せんちょう",
- "せんてい",
- "せんとう",
- "せんぬき",
- "せんねん",
- "せんぱい",
- "ぜんぶ",
- "ぜんぽう",
- "せんむ",
- "せんめんじょ",
- "せんもん",
- "せんやく",
- "せんゆう",
- "せんよう",
- "ぜんら",
- "ぜんりゃく",
- "せんれい",
- "せんろ",
- "そあく",
- "そいとげる",
- "そいね",
- "そうがんきょう",
- "そうき",
- "そうご",
- "そうしん",
- "そうだん",
- "そうなん",
- "そうび",
- "そうめん",
- "そうり",
- "そえもの",
- "そえん",
- "そがい",
- "そげき",
- "そこう",
- "そこそこ",
- "そざい",
- "そしな",
- "そせい",
- "そせん",
- "そそぐ",
- "そだてる",
- "そつう",
- "そつえん",
- "そっかん",
- "そつぎょう",
- "そっけつ",
- "そっこう",
- "そっせん",
- "そっと",
- "そとがわ",
- "そとづら",
- "そなえる",
- "そなた",
- "そふぼ",
- "そぼく",
- "そぼろ",
- "そまつ",
- "そまる",
- "そむく",
- "そむりえ",
- "そめる",
- "そもそも",
- "そよかぜ",
- "そらまめ",
- "そろう",
- "そんかい",
- "そんけい",
- "そんざい",
- "そんしつ",
- "そんぞく",
- "そんちょう",
- "ぞんび",
- "ぞんぶん",
- "そんみん",
- "たあい",
- "たいいん",
- "たいうん",
- "たいえき",
- "たいおう",
- "だいがく",
- "たいき",
- "たいぐう",
- "たいけん",
- "たいこ",
- "たいざい",
- "だいじょうぶ",
- "だいすき",
- "たいせつ",
- "たいそう",
- "だいたい",
- "たいちょう",
- "たいてい",
- "だいどころ",
- "たいない",
- "たいねつ",
- "たいのう",
- "たいはん",
- "だいひょう",
- "たいふう",
- "たいへん",
- "たいほ",
- "たいまつばな",
- "たいみんぐ",
- "たいむ",
- "たいめん",
- "たいやき",
- "たいよう",
- "たいら",
- "たいりょく",
- "たいる",
- "たいわん",
- "たうえ",
- "たえる",
- "たおす",
- "たおる",
- "たおれる",
- "たかい",
- "たかね",
- "たきび",
- "たくさん",
- "たこく",
- "たこやき",
- "たさい",
- "たしざん",
- "だじゃれ",
- "たすける",
- "たずさわる",
- "たそがれ",
- "たたかう",
- "たたく",
- "ただしい",
- "たたみ",
- "たちばな",
- "だっかい",
- "だっきゃく",
- "だっこ",
- "だっしゅつ",
- "だったい",
- "たてる",
- "たとえる",
- "たなばた",
- "たにん",
- "たぬき",
- "たのしみ",
- "たはつ",
- "たぶん",
- "たべる",
- "たぼう",
- "たまご",
- "たまる",
- "だむる",
- "ためいき",
- "ためす",
- "ためる",
- "たもつ",
- "たやすい",
- "たよる",
- "たらす",
- "たりきほんがん",
- "たりょう",
- "たりる",
- "たると",
- "たれる",
- "たれんと",
- "たろっと",
- "たわむれる",
- "だんあつ",
- "たんい",
- "たんおん",
- "たんか",
- "たんき",
- "たんけん",
- "たんご",
- "たんさん",
- "たんじょうび",
- "だんせい",
- "たんそく",
- "たんたい",
- "だんち",
- "たんてい",
- "たんとう",
- "だんな",
- "たんにん",
- "だんねつ",
- "たんのう",
- "たんぴん",
- "だんぼう",
- "たんまつ",
- "たんめい",
- "だんれつ",
- "だんろ",
- "だんわ",
- "ちあい",
- "ちあん",
- "ちいき",
- "ちいさい",
- "ちえん",
- "ちかい",
- "ちから",
- "ちきゅう",
- "ちきん",
- "ちけいず",
- "ちけん",
- "ちこく",
- "ちさい",
- "ちしき",
- "ちしりょう",
- "ちせい",
- "ちそう",
- "ちたい",
- "ちたん",
- "ちちおや",
- "ちつじょ",
- "ちてき",
- "ちてん",
- "ちぬき",
- "ちぬり",
- "ちのう",
- "ちひょう",
- "ちへいせん",
- "ちほう",
- "ちまた",
- "ちみつ",
- "ちみどろ",
- "ちめいど",
- "ちゃんこなべ",
- "ちゅうい",
- "ちゆりょく",
- "ちょうし",
- "ちょさくけん",
- "ちらし",
- "ちらみ",
- "ちりがみ",
- "ちりょう",
- "ちるど",
- "ちわわ",
- "ちんたい",
- "ちんもく",
- "ついか",
- "ついたち",
- "つうか",
- "つうじょう",
- "つうはん",
- "つうわ",
- "つかう",
- "つかれる",
- "つくね",
- "つくる",
- "つけね",
- "つける",
- "つごう",
- "つたえる",
- "つづく",
- "つつじ",
- "つつむ",
- "つとめる",
- "つながる",
- "つなみ",
- "つねづね",
- "つのる",
- "つぶす",
- "つまらない",
- "つまる",
- "つみき",
- "つめたい",
- "つもり",
- "つもる",
- "つよい",
- "つるぼ",
- "つるみく",
- "つわもの",
- "つわり",
- "てあし",
- "てあて",
- "てあみ",
- "ていおん",
- "ていか",
- "ていき",
- "ていけい",
- "ていこく",
- "ていさつ",
- "ていし",
- "ていせい",
- "ていたい",
- "ていど",
- "ていねい",
- "ていひょう",
- "ていへん",
- "ていぼう",
- "てうち",
- "ておくれ",
- "てきとう",
- "てくび",
- "でこぼこ",
- "てさぎょう",
- "てさげ",
- "てすり",
- "てそう",
- "てちがい",
- "てちょう",
- "てつがく",
- "てつづき",
- "でっぱ",
- "てつぼう",
- "てつや",
- "でぬかえ",
- "てぬき",
- "てぬぐい",
- "てのひら",
- "てはい",
- "てぶくろ",
- "てふだ",
- "てほどき",
- "てほん",
- "てまえ",
- "てまきずし",
- "てみじか",
- "てみやげ",
- "てらす",
- "てれび",
- "てわけ",
- "てわたし",
- "でんあつ",
- "てんいん",
- "てんかい",
- "てんき",
- "てんぐ",
- "てんけん",
- "てんごく",
- "てんさい",
- "てんし",
- "てんすう",
- "でんち",
- "てんてき",
- "てんとう",
- "てんない",
- "てんぷら",
- "てんぼうだい",
- "てんめつ",
- "てんらんかい",
- "でんりょく",
- "でんわ",
- "どあい",
- "といれ",
- "どうかん",
- "とうきゅう",
- "どうぐ",
- "とうし",
- "とうむぎ",
- "とおい",
- "とおか",
- "とおく",
- "とおす",
- "とおる",
- "とかい",
- "とかす",
- "ときおり",
- "ときどき",
- "とくい",
- "とくしゅう",
- "とくてん",
- "とくに",
- "とくべつ",
- "とけい",
- "とける",
- "とこや",
- "とさか",
- "としょかん",
- "とそう",
- "とたん",
- "とちゅう",
- "とっきゅう",
- "とっくん",
- "とつぜん",
- "とつにゅう",
- "とどける",
- "ととのえる",
- "とない",
- "となえる",
- "となり",
- "とのさま",
- "とばす",
- "どぶがわ",
- "とほう",
- "とまる",
- "とめる",
- "ともだち",
- "ともる",
- "どようび",
- "とらえる",
- "とんかつ",
- "どんぶり",
- "ないかく",
- "ないこう",
- "ないしょ",
- "ないす",
- "ないせん",
- "ないそう",
- "なおす",
- "ながい",
- "なくす",
- "なげる",
- "なこうど",
- "なさけ",
- "なたでここ",
- "なっとう",
- "なつやすみ",
- "ななおし",
- "なにごと",
- "なにもの",
- "なにわ",
- "なのか",
- "なふだ",
- "なまいき",
- "なまえ",
- "なまみ",
- "なみだ",
- "なめらか",
- "なめる",
- "なやむ",
- "ならう",
- "ならび",
- "ならぶ",
- "なれる",
- "なわとび",
- "なわばり",
- "にあう",
- "にいがた",
- "にうけ",
- "におい",
- "にかい",
- "にがて",
- "にきび",
- "にくしみ",
- "にくまん",
- "にげる",
- "にさんかたんそ",
- "にしき",
- "にせもの",
- "にちじょう",
- "にちようび",
- "にっか",
- "にっき",
- "にっけい",
- "にっこう",
- "にっさん",
- "にっしょく",
- "にっすう",
- "にっせき",
- "にってい",
- "になう",
- "にほん",
- "にまめ",
- "にもつ",
- "にやり",
- "にゅういん",
- "にりんしゃ",
- "にわとり",
- "にんい",
- "にんか",
- "にんき",
- "にんげん",
- "にんしき",
- "にんずう",
- "にんそう",
- "にんたい",
- "にんち",
- "にんてい",
- "にんにく",
- "にんぷ",
- "にんまり",
- "にんむ",
- "にんめい",
- "にんよう",
- "ぬいくぎ",
- "ぬかす",
- "ぬぐいとる",
- "ぬぐう",
- "ぬくもり",
- "ぬすむ",
- "ぬまえび",
- "ぬめり",
- "ぬらす",
- "ぬんちゃく",
- "ねあげ",
- "ねいき",
- "ねいる",
- "ねいろ",
- "ねぐせ",
- "ねくたい",
- "ねくら",
- "ねこぜ",
- "ねこむ",
- "ねさげ",
- "ねすごす",
- "ねそべる",
- "ねだん",
- "ねつい",
- "ねっしん",
- "ねつぞう",
- "ねったいぎょ",
- "ねぶそく",
- "ねふだ",
- "ねぼう",
- "ねほりはほり",
- "ねまき",
- "ねまわし",
- "ねみみ",
- "ねむい",
- "ねむたい",
- "ねもと",
- "ねらう",
- "ねわざ",
- "ねんいり",
- "ねんおし",
- "ねんかん",
- "ねんきん",
- "ねんぐ",
- "ねんざ",
- "ねんし",
- "ねんちゃく",
- "ねんど",
- "ねんぴ",
- "ねんぶつ",
- "ねんまつ",
- "ねんりょう",
- "ねんれい",
- "のいず",
- "のおづま",
- "のがす",
- "のきなみ",
- "のこぎり",
- "のこす",
- "のこる",
- "のせる",
- "のぞく",
- "のぞむ",
- "のたまう",
- "のちほど",
- "のっく",
- "のばす",
- "のはら",
- "のべる",
- "のぼる",
- "のみもの",
- "のやま",
- "のらいぬ",
- "のらねこ",
- "のりもの",
- "のりゆき",
- "のれん",
- "のんき",
- "ばあい",
- "はあく",
- "ばあさん",
- "ばいか",
- "ばいく",
- "はいけん",
- "はいご",
- "はいしん",
- "はいすい",
- "はいせん",
- "はいそう",
- "はいち",
- "ばいばい",
- "はいれつ",
- "はえる",
- "はおる",
- "はかい",
- "ばかり",
- "はかる",
- "はくしゅ",
- "はけん",
- "はこぶ",
- "はさみ",
- "はさん",
- "はしご",
- "ばしょ",
- "はしる",
- "はせる",
- "ぱそこん",
- "はそん",
- "はたん",
- "はちみつ",
- "はつおん",
- "はっかく",
- "はづき",
- "はっきり",
- "はっくつ",
- "はっけん",
- "はっこう",
- "はっさん",
- "はっしん",
- "はったつ",
- "はっちゅう",
- "はってん",
- "はっぴょう",
- "はっぽう",
- "はなす",
- "はなび",
- "はにかむ",
- "はぶらし",
- "はみがき",
- "はむかう",
- "はめつ",
- "はやい",
- "はやし",
- "はらう",
- "はろうぃん",
- "はわい",
- "はんい",
- "はんえい",
- "はんおん",
- "はんかく",
- "はんきょう",
- "ばんぐみ",
- "はんこ",
- "はんしゃ",
- "はんすう",
- "はんだん",
- "ぱんち",
- "ぱんつ",
- "はんてい",
- "はんとし",
- "はんのう",
- "はんぱ",
- "はんぶん",
- "はんぺん",
- "はんぼうき",
- "はんめい",
- "はんらん",
- "はんろん",
- "ひいき",
- "ひうん",
- "ひえる",
- "ひかく",
- "ひかり",
- "ひかる",
- "ひかん",
- "ひくい",
- "ひけつ",
- "ひこうき",
- "ひこく",
- "ひさい",
- "ひさしぶり",
- "ひさん",
- "びじゅつかん",
- "ひしょ",
- "ひそか",
- "ひそむ",
- "ひたむき",
- "ひだり",
- "ひたる",
- "ひつぎ",
- "ひっこし",
- "ひっし",
- "ひつじゅひん",
- "ひっす",
- "ひつぜん",
- "ぴったり",
- "ぴっちり",
- "ひつよう",
- "ひてい",
- "ひとごみ",
- "ひなまつり",
- "ひなん",
- "ひねる",
- "ひはん",
- "ひびく",
- "ひひょう",
- "ひほう",
- "ひまわり",
- "ひまん",
- "ひみつ",
- "ひめい",
- "ひめじし",
- "ひやけ",
- "ひやす",
- "ひよう",
- "びょうき",
- "ひらがな",
- "ひらく",
- "ひりつ",
- "ひりょう",
- "ひるま",
- "ひるやすみ",
- "ひれい",
- "ひろい",
- "ひろう",
- "ひろき",
- "ひろゆき",
- "ひんかく",
- "ひんけつ",
- "ひんこん",
- "ひんしゅ",
- "ひんそう",
- "ぴんち",
- "ひんぱん",
- "びんぼう",
- "ふあん",
- "ふいうち",
- "ふうけい",
- "ふうせん",
- "ぷうたろう",
- "ふうとう",
- "ふうふ",
- "ふえる",
- "ふおん",
- "ふかい",
- "ふきん",
- "ふくざつ",
- "ふくぶくろ",
- "ふこう",
- "ふさい",
- "ふしぎ",
- "ふじみ",
- "ふすま",
- "ふせい",
- "ふせぐ",
- "ふそく",
- "ぶたにく",
- "ふたん",
- "ふちょう",
- "ふつう",
- "ふつか",
- "ふっかつ",
- "ふっき",
- "ふっこく",
- "ぶどう",
- "ふとる",
- "ふとん",
- "ふのう",
- "ふはい",
- "ふひょう",
- "ふへん",
- "ふまん",
- "ふみん",
- "ふめつ",
- "ふめん",
- "ふよう",
- "ふりこ",
- "ふりる",
- "ふるい",
- "ふんいき",
- "ぶんがく",
- "ぶんぐ",
- "ふんしつ",
- "ぶんせき",
- "ふんそう",
- "ぶんぽう",
- "へいあん",
- "へいおん",
- "へいがい",
- "へいき",
- "へいげん",
- "へいこう",
- "へいさ",
- "へいしゃ",
- "へいせつ",
- "へいそ",
- "へいたく",
- "へいてん",
- "へいねつ",
- "へいわ",
- "へきが",
- "へこむ",
- "べにいろ",
- "べにしょうが",
- "へらす",
- "へんかん",
- "べんきょう",
- "べんごし",
- "へんさい",
- "へんたい",
- "べんり",
- "ほあん",
- "ほいく",
- "ぼうぎょ",
- "ほうこく",
- "ほうそう",
- "ほうほう",
- "ほうもん",
- "ほうりつ",
- "ほえる",
- "ほおん",
- "ほかん",
- "ほきょう",
- "ぼきん",
- "ほくろ",
- "ほけつ",
- "ほけん",
- "ほこう",
- "ほこる",
- "ほしい",
- "ほしつ",
- "ほしゅ",
- "ほしょう",
- "ほせい",
- "ほそい",
- "ほそく",
- "ほたて",
- "ほたる",
- "ぽちぶくろ",
- "ほっきょく",
- "ほっさ",
- "ほったん",
- "ほとんど",
- "ほめる",
- "ほんい",
- "ほんき",
- "ほんけ",
- "ほんしつ",
- "ほんやく",
- "まいにち",
- "まかい",
- "まかせる",
- "まがる",
- "まける",
- "まこと",
- "まさつ",
- "まじめ",
- "ますく",
- "まぜる",
- "まつり",
- "まとめ",
- "まなぶ",
- "まぬけ",
- "まねく",
- "まほう",
- "まもる",
- "まゆげ",
- "まよう",
- "まろやか",
- "まわす",
- "まわり",
- "まわる",
- "まんが",
- "まんきつ",
- "まんぞく",
- "まんなか",
- "みいら",
- "みうち",
- "みえる",
- "みがく",
- "みかた",
- "みかん",
- "みけん",
- "みこん",
- "みじかい",
- "みすい",
- "みすえる",
- "みせる",
- "みっか",
- "みつかる",
- "みつける",
- "みてい",
- "みとめる",
- "みなと",
- "みなみかさい",
- "みねらる",
- "みのう",
- "みのがす",
- "みほん",
- "みもと",
- "みやげ",
- "みらい",
- "みりょく",
- "みわく",
- "みんか",
- "みんぞく",
- "むいか",
- "むえき",
- "むえん",
- "むかい",
- "むかう",
- "むかえ",
- "むかし",
- "むぎちゃ",
- "むける",
- "むげん",
- "むさぼる",
- "むしあつい",
- "むしば",
- "むじゅん",
- "むしろ",
- "むすう",
- "むすこ",
- "むすぶ",
- "むすめ",
- "むせる",
- "むせん",
- "むちゅう",
- "むなしい",
- "むのう",
- "むやみ",
- "むよう",
- "むらさき",
- "むりょう",
- "むろん",
- "めいあん",
- "めいうん",
- "めいえん",
- "めいかく",
- "めいきょく",
- "めいさい",
- "めいし",
- "めいそう",
- "めいぶつ",
- "めいれい",
- "めいわく",
- "めぐまれる",
- "めざす",
- "めした",
- "めずらしい",
- "めだつ",
- "めまい",
- "めやす",
- "めんきょ",
- "めんせき",
- "めんどう",
- "もうしあげる",
- "もうどうけん",
- "もえる",
- "もくし",
- "もくてき",
- "もくようび",
- "もちろん",
- "もどる",
- "もらう",
- "もんく",
- "もんだい",
- "やおや",
- "やける",
- "やさい",
- "やさしい",
- "やすい",
- "やすたろう",
- "やすみ",
- "やせる",
- "やそう",
- "やたい",
- "やちん",
- "やっと",
- "やっぱり",
- "やぶる",
- "やめる",
- "ややこしい",
- "やよい",
- "やわらかい",
- "ゆうき",
- "ゆうびんきょく",
- "ゆうべ",
- "ゆうめい",
- "ゆけつ",
- "ゆしゅつ",
- "ゆせん",
- "ゆそう",
- "ゆたか",
- "ゆちゃく",
- "ゆでる",
- "ゆにゅう",
- "ゆびわ",
- "ゆらい",
- "ゆれる",
- "ようい",
- "ようか",
- "ようきゅう",
- "ようじ",
- "ようす",
- "ようちえん",
- "よかぜ",
- "よかん",
- "よきん",
- "よくせい",
- "よくぼう",
- "よけい",
- "よごれる",
- "よさん",
- "よしゅう",
- "よそう",
- "よそく",
- "よっか",
- "よてい",
- "よどがわく",
- "よねつ",
- "よやく",
- "よゆう",
- "よろこぶ",
- "よろしい",
- "らいう",
- "らくがき",
- "らくご",
- "らくさつ",
- "らくだ",
- "らしんばん",
- "らせん",
- "らぞく",
- "らたい",
- "らっか",
- "られつ",
- "りえき",
- "りかい",
- "りきさく",
- "りきせつ",
- "りくぐん",
- "りくつ",
- "りけん",
- "りこう",
- "りせい",
- "りそう",
- "りそく",
- "りてん",
- "りねん",
- "りゆう",
- "りゅうがく",
- "りよう",
- "りょうり",
- "りょかん",
- "りょくちゃ",
- "りょこう",
- "りりく",
- "りれき",
- "りろん",
- "りんご",
- "るいけい",
- "るいさい",
- "るいじ",
- "るいせき",
- "るすばん",
- "るりがわら",
- "れいかん",
- "れいぎ",
- "れいせい",
- "れいぞうこ",
- "れいとう",
- "れいぼう",
- "れきし",
- "れきだい",
- "れんあい",
- "れんけい",
- "れんこん",
- "れんさい",
- "れんしゅう",
- "れんぞく",
- "れんらく",
- "ろうか",
- "ろうご",
- "ろうじん",
- "ろうそく",
- "ろくが",
- "ろこつ",
- "ろじうら",
- "ろしゅつ",
- "ろせん",
- "ろてん",
- "ろめん",
- "ろれつ",
- "ろんぎ",
- "ろんぱ",
- "ろんぶん",
- "ろんり",
- "わかす",
- "わかめ",
- "わかやま",
- "わかれる",
- "わしつ",
- "わじまし",
- "わすれもの",
- "わらう",
- "われる",
- )
-}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt
deleted file mode 100644
index 7552ad41c..000000000
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt
+++ /dev/null
@@ -1,2059 +0,0 @@
-package io.iohk.atala.prism.apollo.utils.bip39.wordlists
-
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-internal object MnemonicCodeKorean {
- val wordList: List = listOf(
- "가격",
- "가끔",
- "가난",
- "가능",
- "가득",
- "가르침",
- "가뭄",
- "가방",
- "가상",
- "가슴",
- "가운데",
- "가을",
- "가이드",
- "가입",
- "가장",
- "가정",
- "가족",
- "가죽",
- "각오",
- "각자",
- "간격",
- "간부",
- "간섭",
- "간장",
- "간접",
- "간판",
- "갈등",
- "갈비",
- "갈색",
- "갈증",
- "감각",
- "감기",
- "감소",
- "감수성",
- "감자",
- "감정",
- "갑자기",
- "강남",
- "강당",
- "강도",
- "강력히",
- "강변",
- "강북",
- "강사",
- "강수량",
- "강아지",
- "강원도",
- "강의",
- "강제",
- "강조",
- "같이",
- "개구리",
- "개나리",
- "개방",
- "개별",
- "개선",
- "개성",
- "개인",
- "객관적",
- "거실",
- "거액",
- "거울",
- "거짓",
- "거품",
- "걱정",
- "건강",
- "건물",
- "건설",
- "건조",
- "건축",
- "걸음",
- "검사",
- "검토",
- "게시판",
- "게임",
- "겨울",
- "견해",
- "결과",
- "결국",
- "결론",
- "결석",
- "결승",
- "결심",
- "결정",
- "결혼",
- "경계",
- "경고",
- "경기",
- "경력",
- "경복궁",
- "경비",
- "경상도",
- "경영",
- "경우",
- "경쟁",
- "경제",
- "경주",
- "경찰",
- "경치",
- "경향",
- "경험",
- "계곡",
- "계단",
- "계란",
- "계산",
- "계속",
- "계약",
- "계절",
- "계층",
- "계획",
- "고객",
- "고구려",
- "고궁",
- "고급",
- "고등학생",
- "고무신",
- "고민",
- "고양이",
- "고장",
- "고전",
- "고집",
- "고춧가루",
- "고통",
- "고향",
- "곡식",
- "골목",
- "골짜기",
- "골프",
- "공간",
- "공개",
- "공격",
- "공군",
- "공급",
- "공기",
- "공동",
- "공무원",
- "공부",
- "공사",
- "공식",
- "공업",
- "공연",
- "공원",
- "공장",
- "공짜",
- "공책",
- "공통",
- "공포",
- "공항",
- "공휴일",
- "과목",
- "과일",
- "과장",
- "과정",
- "과학",
- "관객",
- "관계",
- "관광",
- "관념",
- "관람",
- "관련",
- "관리",
- "관습",
- "관심",
- "관점",
- "관찰",
- "광경",
- "광고",
- "광장",
- "광주",
- "괴로움",
- "굉장히",
- "교과서",
- "교문",
- "교복",
- "교실",
- "교양",
- "교육",
- "교장",
- "교직",
- "교통",
- "교환",
- "교훈",
- "구경",
- "구름",
- "구멍",
- "구별",
- "구분",
- "구석",
- "구성",
- "구속",
- "구역",
- "구입",
- "구청",
- "구체적",
- "국가",
- "국기",
- "국내",
- "국립",
- "국물",
- "국민",
- "국수",
- "국어",
- "국왕",
- "국적",
- "국제",
- "국회",
- "군대",
- "군사",
- "군인",
- "궁극적",
- "권리",
- "권위",
- "권투",
- "귀국",
- "귀신",
- "규정",
- "규칙",
- "균형",
- "그날",
- "그냥",
- "그늘",
- "그러나",
- "그룹",
- "그릇",
- "그림",
- "그제서야",
- "그토록",
- "극복",
- "극히",
- "근거",
- "근교",
- "근래",
- "근로",
- "근무",
- "근본",
- "근원",
- "근육",
- "근처",
- "글씨",
- "글자",
- "금강산",
- "금고",
- "금년",
- "금메달",
- "금액",
- "금연",
- "금요일",
- "금지",
- "긍정적",
- "기간",
- "기관",
- "기념",
- "기능",
- "기독교",
- "기둥",
- "기록",
- "기름",
- "기법",
- "기본",
- "기분",
- "기쁨",
- "기숙사",
- "기술",
- "기억",
- "기업",
- "기온",
- "기운",
- "기원",
- "기적",
- "기준",
- "기침",
- "기혼",
- "기획",
- "긴급",
- "긴장",
- "길이",
- "김밥",
- "김치",
- "김포공항",
- "깍두기",
- "깜빡",
- "깨달음",
- "깨소금",
- "껍질",
- "꼭대기",
- "꽃잎",
- "나들이",
- "나란히",
- "나머지",
- "나물",
- "나침반",
- "나흘",
- "낙엽",
- "난방",
- "날개",
- "날씨",
- "날짜",
- "남녀",
- "남대문",
- "남매",
- "남산",
- "남자",
- "남편",
- "남학생",
- "낭비",
- "낱말",
- "내년",
- "내용",
- "내일",
- "냄비",
- "냄새",
- "냇물",
- "냉동",
- "냉면",
- "냉방",
- "냉장고",
- "넥타이",
- "넷째",
- "노동",
- "노란색",
- "노력",
- "노인",
- "녹음",
- "녹차",
- "녹화",
- "논리",
- "논문",
- "논쟁",
- "놀이",
- "농구",
- "농담",
- "농민",
- "농부",
- "농업",
- "농장",
- "농촌",
- "높이",
- "눈동자",
- "눈물",
- "눈썹",
- "뉴욕",
- "느낌",
- "늑대",
- "능동적",
- "능력",
- "다방",
- "다양성",
- "다음",
- "다이어트",
- "다행",
- "단계",
- "단골",
- "단독",
- "단맛",
- "단순",
- "단어",
- "단위",
- "단점",
- "단체",
- "단추",
- "단편",
- "단풍",
- "달걀",
- "달러",
- "달력",
- "달리",
- "닭고기",
- "담당",
- "담배",
- "담요",
- "담임",
- "답변",
- "답장",
- "당근",
- "당분간",
- "당연히",
- "당장",
- "대규모",
- "대낮",
- "대단히",
- "대답",
- "대도시",
- "대략",
- "대량",
- "대륙",
- "대문",
- "대부분",
- "대신",
- "대응",
- "대장",
- "대전",
- "대접",
- "대중",
- "대책",
- "대출",
- "대충",
- "대통령",
- "대학",
- "대한민국",
- "대합실",
- "대형",
- "덩어리",
- "데이트",
- "도대체",
- "도덕",
- "도둑",
- "도망",
- "도서관",
- "도심",
- "도움",
- "도입",
- "도자기",
- "도저히",
- "도전",
- "도중",
- "도착",
- "독감",
- "독립",
- "독서",
- "독일",
- "독창적",
- "동화책",
- "뒷모습",
- "뒷산",
- "딸아이",
- "마누라",
- "마늘",
- "마당",
- "마라톤",
- "마련",
- "마무리",
- "마사지",
- "마약",
- "마요네즈",
- "마을",
- "마음",
- "마이크",
- "마중",
- "마지막",
- "마찬가지",
- "마찰",
- "마흔",
- "막걸리",
- "막내",
- "막상",
- "만남",
- "만두",
- "만세",
- "만약",
- "만일",
- "만점",
- "만족",
- "만화",
- "많이",
- "말기",
- "말씀",
- "말투",
- "맘대로",
- "망원경",
- "매년",
- "매달",
- "매력",
- "매번",
- "매스컴",
- "매일",
- "매장",
- "맥주",
- "먹이",
- "먼저",
- "먼지",
- "멀리",
- "메일",
- "며느리",
- "며칠",
- "면담",
- "멸치",
- "명단",
- "명령",
- "명예",
- "명의",
- "명절",
- "명칭",
- "명함",
- "모금",
- "모니터",
- "모델",
- "모든",
- "모범",
- "모습",
- "모양",
- "모임",
- "모조리",
- "모집",
- "모퉁이",
- "목걸이",
- "목록",
- "목사",
- "목소리",
- "목숨",
- "목적",
- "목표",
- "몰래",
- "몸매",
- "몸무게",
- "몸살",
- "몸속",
- "몸짓",
- "몸통",
- "몹시",
- "무관심",
- "무궁화",
- "무더위",
- "무덤",
- "무릎",
- "무슨",
- "무엇",
- "무역",
- "무용",
- "무조건",
- "무지개",
- "무척",
- "문구",
- "문득",
- "문법",
- "문서",
- "문제",
- "문학",
- "문화",
- "물가",
- "물건",
- "물결",
- "물고기",
- "물론",
- "물리학",
- "물음",
- "물질",
- "물체",
- "미국",
- "미디어",
- "미사일",
- "미술",
- "미역",
- "미용실",
- "미움",
- "미인",
- "미팅",
- "미혼",
- "민간",
- "민족",
- "민주",
- "믿음",
- "밀가루",
- "밀리미터",
- "밑바닥",
- "바가지",
- "바구니",
- "바나나",
- "바늘",
- "바닥",
- "바닷가",
- "바람",
- "바이러스",
- "바탕",
- "박물관",
- "박사",
- "박수",
- "반대",
- "반드시",
- "반말",
- "반발",
- "반성",
- "반응",
- "반장",
- "반죽",
- "반지",
- "반찬",
- "받침",
- "발가락",
- "발걸음",
- "발견",
- "발달",
- "발레",
- "발목",
- "발바닥",
- "발생",
- "발음",
- "발자국",
- "발전",
- "발톱",
- "발표",
- "밤하늘",
- "밥그릇",
- "밥맛",
- "밥상",
- "밥솥",
- "방금",
- "방면",
- "방문",
- "방바닥",
- "방법",
- "방송",
- "방식",
- "방안",
- "방울",
- "방지",
- "방학",
- "방해",
- "방향",
- "배경",
- "배꼽",
- "배달",
- "배드민턴",
- "백두산",
- "백색",
- "백성",
- "백인",
- "백제",
- "백화점",
- "버릇",
- "버섯",
- "버튼",
- "번개",
- "번역",
- "번지",
- "번호",
- "벌금",
- "벌레",
- "벌써",
- "범위",
- "범인",
- "범죄",
- "법률",
- "법원",
- "법적",
- "법칙",
- "베이징",
- "벨트",
- "변경",
- "변동",
- "변명",
- "변신",
- "변호사",
- "변화",
- "별도",
- "별명",
- "별일",
- "병실",
- "병아리",
- "병원",
- "보관",
- "보너스",
- "보라색",
- "보람",
- "보름",
- "보상",
- "보안",
- "보자기",
- "보장",
- "보전",
- "보존",
- "보통",
- "보편적",
- "보험",
- "복도",
- "복사",
- "복숭아",
- "복습",
- "볶음",
- "본격적",
- "본래",
- "본부",
- "본사",
- "본성",
- "본인",
- "본질",
- "볼펜",
- "봉사",
- "봉지",
- "봉투",
- "부근",
- "부끄러움",
- "부담",
- "부동산",
- "부문",
- "부분",
- "부산",
- "부상",
- "부엌",
- "부인",
- "부작용",
- "부장",
- "부정",
- "부족",
- "부지런히",
- "부친",
- "부탁",
- "부품",
- "부회장",
- "북부",
- "북한",
- "분노",
- "분량",
- "분리",
- "분명",
- "분석",
- "분야",
- "분위기",
- "분필",
- "분홍색",
- "불고기",
- "불과",
- "불교",
- "불꽃",
- "불만",
- "불법",
- "불빛",
- "불안",
- "불이익",
- "불행",
- "브랜드",
- "비극",
- "비난",
- "비닐",
- "비둘기",
- "비디오",
- "비로소",
- "비만",
- "비명",
- "비밀",
- "비바람",
- "비빔밥",
- "비상",
- "비용",
- "비율",
- "비중",
- "비타민",
- "비판",
- "빌딩",
- "빗물",
- "빗방울",
- "빗줄기",
- "빛깔",
- "빨간색",
- "빨래",
- "빨리",
- "사건",
- "사계절",
- "사나이",
- "사냥",
- "사람",
- "사랑",
- "사립",
- "사모님",
- "사물",
- "사방",
- "사상",
- "사생활",
- "사설",
- "사슴",
- "사실",
- "사업",
- "사용",
- "사월",
- "사장",
- "사전",
- "사진",
- "사촌",
- "사춘기",
- "사탕",
- "사투리",
- "사흘",
- "산길",
- "산부인과",
- "산업",
- "산책",
- "살림",
- "살인",
- "살짝",
- "삼계탕",
- "삼국",
- "삼십",
- "삼월",
- "삼촌",
- "상관",
- "상금",
- "상대",
- "상류",
- "상반기",
- "상상",
- "상식",
- "상업",
- "상인",
- "상자",
- "상점",
- "상처",
- "상추",
- "상태",
- "상표",
- "상품",
- "상황",
- "새벽",
- "색깔",
- "색연필",
- "생각",
- "생명",
- "생물",
- "생방송",
- "생산",
- "생선",
- "생신",
- "생일",
- "생활",
- "서랍",
- "서른",
- "서명",
- "서민",
- "서비스",
- "서양",
- "서울",
- "서적",
- "서점",
- "서쪽",
- "서클",
- "석사",
- "석유",
- "선거",
- "선물",
- "선배",
- "선생",
- "선수",
- "선원",
- "선장",
- "선전",
- "선택",
- "선풍기",
- "설거지",
- "설날",
- "설렁탕",
- "설명",
- "설문",
- "설사",
- "설악산",
- "설치",
- "설탕",
- "섭씨",
- "성공",
- "성당",
- "성명",
- "성별",
- "성인",
- "성장",
- "성적",
- "성질",
- "성함",
- "세금",
- "세미나",
- "세상",
- "세월",
- "세종대왕",
- "세탁",
- "센터",
- "센티미터",
- "셋째",
- "소규모",
- "소극적",
- "소금",
- "소나기",
- "소년",
- "소득",
- "소망",
- "소문",
- "소설",
- "소속",
- "소아과",
- "소용",
- "소원",
- "소음",
- "소중히",
- "소지품",
- "소질",
- "소풍",
- "소형",
- "속담",
- "속도",
- "속옷",
- "손가락",
- "손길",
- "손녀",
- "손님",
- "손등",
- "손목",
- "손뼉",
- "손실",
- "손질",
- "손톱",
- "손해",
- "솔직히",
- "솜씨",
- "송아지",
- "송이",
- "송편",
- "쇠고기",
- "쇼핑",
- "수건",
- "수년",
- "수단",
- "수돗물",
- "수동적",
- "수면",
- "수명",
- "수박",
- "수상",
- "수석",
- "수술",
- "수시로",
- "수업",
- "수염",
- "수영",
- "수입",
- "수준",
- "수집",
- "수출",
- "수컷",
- "수필",
- "수학",
- "수험생",
- "수화기",
- "숙녀",
- "숙소",
- "숙제",
- "순간",
- "순서",
- "순수",
- "순식간",
- "순위",
- "숟가락",
- "술병",
- "술집",
- "숫자",
- "스님",
- "스물",
- "스스로",
- "스승",
- "스웨터",
- "스위치",
- "스케이트",
- "스튜디오",
- "스트레스",
- "스포츠",
- "슬쩍",
- "슬픔",
- "습관",
- "습기",
- "승객",
- "승리",
- "승부",
- "승용차",
- "승진",
- "시각",
- "시간",
- "시골",
- "시금치",
- "시나리오",
- "시댁",
- "시리즈",
- "시멘트",
- "시민",
- "시부모",
- "시선",
- "시설",
- "시스템",
- "시아버지",
- "시어머니",
- "시월",
- "시인",
- "시일",
- "시작",
- "시장",
- "시절",
- "시점",
- "시중",
- "시즌",
- "시집",
- "시청",
- "시합",
- "시험",
- "식구",
- "식기",
- "식당",
- "식량",
- "식료품",
- "식물",
- "식빵",
- "식사",
- "식생활",
- "식초",
- "식탁",
- "식품",
- "신고",
- "신규",
- "신념",
- "신문",
- "신발",
- "신비",
- "신사",
- "신세",
- "신용",
- "신제품",
- "신청",
- "신체",
- "신화",
- "실감",
- "실내",
- "실력",
- "실례",
- "실망",
- "실수",
- "실습",
- "실시",
- "실장",
- "실정",
- "실질적",
- "실천",
- "실체",
- "실컷",
- "실태",
- "실패",
- "실험",
- "실현",
- "심리",
- "심부름",
- "심사",
- "심장",
- "심정",
- "심판",
- "쌍둥이",
- "씨름",
- "씨앗",
- "아가씨",
- "아나운서",
- "아드님",
- "아들",
- "아쉬움",
- "아스팔트",
- "아시아",
- "아울러",
- "아저씨",
- "아줌마",
- "아직",
- "아침",
- "아파트",
- "아프리카",
- "아픔",
- "아홉",
- "아흔",
- "악기",
- "악몽",
- "악수",
- "안개",
- "안경",
- "안과",
- "안내",
- "안녕",
- "안동",
- "안방",
- "안부",
- "안주",
- "알루미늄",
- "알코올",
- "암시",
- "암컷",
- "압력",
- "앞날",
- "앞문",
- "애인",
- "애정",
- "액수",
- "앨범",
- "야간",
- "야단",
- "야옹",
- "약간",
- "약국",
- "약속",
- "약수",
- "약점",
- "약품",
- "약혼녀",
- "양념",
- "양력",
- "양말",
- "양배추",
- "양주",
- "양파",
- "어둠",
- "어려움",
- "어른",
- "어젯밤",
- "어쨌든",
- "어쩌다가",
- "어쩐지",
- "언니",
- "언덕",
- "언론",
- "언어",
- "얼굴",
- "얼른",
- "얼음",
- "얼핏",
- "엄마",
- "업무",
- "업종",
- "업체",
- "엉덩이",
- "엉망",
- "엉터리",
- "엊그제",
- "에너지",
- "에어컨",
- "엔진",
- "여건",
- "여고생",
- "여관",
- "여군",
- "여권",
- "여대생",
- "여덟",
- "여동생",
- "여든",
- "여론",
- "여름",
- "여섯",
- "여성",
- "여왕",
- "여인",
- "여전히",
- "여직원",
- "여학생",
- "여행",
- "역사",
- "역시",
- "역할",
- "연결",
- "연구",
- "연극",
- "연기",
- "연락",
- "연설",
- "연세",
- "연속",
- "연습",
- "연애",
- "연예인",
- "연인",
- "연장",
- "연주",
- "연출",
- "연필",
- "연합",
- "연휴",
- "열기",
- "열매",
- "열쇠",
- "열심히",
- "열정",
- "열차",
- "열흘",
- "염려",
- "엽서",
- "영국",
- "영남",
- "영상",
- "영양",
- "영역",
- "영웅",
- "영원히",
- "영하",
- "영향",
- "영혼",
- "영화",
- "옆구리",
- "옆방",
- "옆집",
- "예감",
- "예금",
- "예방",
- "예산",
- "예상",
- "예선",
- "예술",
- "예습",
- "예식장",
- "예약",
- "예전",
- "예절",
- "예정",
- "예컨대",
- "옛날",
- "오늘",
- "오락",
- "오랫동안",
- "오렌지",
- "오로지",
- "오른발",
- "오븐",
- "오십",
- "오염",
- "오월",
- "오전",
- "오직",
- "오징어",
- "오페라",
- "오피스텔",
- "오히려",
- "옥상",
- "옥수수",
- "온갖",
- "온라인",
- "온몸",
- "온종일",
- "온통",
- "올가을",
- "올림픽",
- "올해",
- "옷차림",
- "와이셔츠",
- "와인",
- "완성",
- "완전",
- "왕비",
- "왕자",
- "왜냐하면",
- "왠지",
- "외갓집",
- "외국",
- "외로움",
- "외삼촌",
- "외출",
- "외침",
- "외할머니",
- "왼발",
- "왼손",
- "왼쪽",
- "요금",
- "요일",
- "요즘",
- "요청",
- "용기",
- "용서",
- "용어",
- "우산",
- "우선",
- "우승",
- "우연히",
- "우정",
- "우체국",
- "우편",
- "운동",
- "운명",
- "운반",
- "운전",
- "운행",
- "울산",
- "울음",
- "움직임",
- "웃어른",
- "웃음",
- "워낙",
- "원고",
- "원래",
- "원서",
- "원숭이",
- "원인",
- "원장",
- "원피스",
- "월급",
- "월드컵",
- "월세",
- "월요일",
- "웨이터",
- "위반",
- "위법",
- "위성",
- "위원",
- "위험",
- "위협",
- "윗사람",
- "유난히",
- "유럽",
- "유명",
- "유물",
- "유산",
- "유적",
- "유치원",
- "유학",
- "유행",
- "유형",
- "육군",
- "육상",
- "육십",
- "육체",
- "은행",
- "음력",
- "음료",
- "음반",
- "음성",
- "음식",
- "음악",
- "음주",
- "의견",
- "의논",
- "의문",
- "의복",
- "의식",
- "의심",
- "의외로",
- "의욕",
- "의원",
- "의학",
- "이것",
- "이곳",
- "이념",
- "이놈",
- "이달",
- "이대로",
- "이동",
- "이렇게",
- "이력서",
- "이론적",
- "이름",
- "이민",
- "이발소",
- "이별",
- "이불",
- "이빨",
- "이상",
- "이성",
- "이슬",
- "이야기",
- "이용",
- "이웃",
- "이월",
- "이윽고",
- "이익",
- "이전",
- "이중",
- "이튿날",
- "이틀",
- "이혼",
- "인간",
- "인격",
- "인공",
- "인구",
- "인근",
- "인기",
- "인도",
- "인류",
- "인물",
- "인생",
- "인쇄",
- "인연",
- "인원",
- "인재",
- "인종",
- "인천",
- "인체",
- "인터넷",
- "인하",
- "인형",
- "일곱",
- "일기",
- "일단",
- "일대",
- "일등",
- "일반",
- "일본",
- "일부",
- "일상",
- "일생",
- "일손",
- "일요일",
- "일월",
- "일정",
- "일종",
- "일주일",
- "일찍",
- "일체",
- "일치",
- "일행",
- "일회용",
- "임금",
- "임무",
- "입대",
- "입력",
- "입맛",
- "입사",
- "입술",
- "입시",
- "입원",
- "입장",
- "입학",
- "자가용",
- "자격",
- "자극",
- "자동",
- "자랑",
- "자부심",
- "자식",
- "자신",
- "자연",
- "자원",
- "자율",
- "자전거",
- "자정",
- "자존심",
- "자판",
- "작가",
- "작년",
- "작성",
- "작업",
- "작용",
- "작은딸",
- "작품",
- "잔디",
- "잔뜩",
- "잔치",
- "잘못",
- "잠깐",
- "잠수함",
- "잠시",
- "잠옷",
- "잠자리",
- "잡지",
- "장관",
- "장군",
- "장기간",
- "장래",
- "장례",
- "장르",
- "장마",
- "장면",
- "장모",
- "장미",
- "장비",
- "장사",
- "장소",
- "장식",
- "장애인",
- "장인",
- "장점",
- "장차",
- "장학금",
- "재능",
- "재빨리",
- "재산",
- "재생",
- "재작년",
- "재정",
- "재채기",
- "재판",
- "재학",
- "재활용",
- "저것",
- "저고리",
- "저곳",
- "저녁",
- "저런",
- "저렇게",
- "저번",
- "저울",
- "저절로",
- "저축",
- "적극",
- "적당히",
- "적성",
- "적용",
- "적응",
- "전개",
- "전공",
- "전기",
- "전달",
- "전라도",
- "전망",
- "전문",
- "전반",
- "전부",
- "전세",
- "전시",
- "전용",
- "전자",
- "전쟁",
- "전주",
- "전철",
- "전체",
- "전통",
- "전혀",
- "전후",
- "절대",
- "절망",
- "절반",
- "절약",
- "절차",
- "점검",
- "점수",
- "점심",
- "점원",
- "점점",
- "점차",
- "접근",
- "접시",
- "접촉",
- "젓가락",
- "정거장",
- "정도",
- "정류장",
- "정리",
- "정말",
- "정면",
- "정문",
- "정반대",
- "정보",
- "정부",
- "정비",
- "정상",
- "정성",
- "정오",
- "정원",
- "정장",
- "정지",
- "정치",
- "정확히",
- "제공",
- "제과점",
- "제대로",
- "제목",
- "제발",
- "제법",
- "제삿날",
- "제안",
- "제일",
- "제작",
- "제주도",
- "제출",
- "제품",
- "제한",
- "조각",
- "조건",
- "조금",
- "조깅",
- "조명",
- "조미료",
- "조상",
- "조선",
- "조용히",
- "조절",
- "조정",
- "조직",
- "존댓말",
- "존재",
- "졸업",
- "졸음",
- "종교",
- "종로",
- "종류",
- "종소리",
- "종업원",
- "종종",
- "종합",
- "좌석",
- "죄인",
- "주관적",
- "주름",
- "주말",
- "주머니",
- "주먹",
- "주문",
- "주민",
- "주방",
- "주변",
- "주식",
- "주인",
- "주일",
- "주장",
- "주전자",
- "주택",
- "준비",
- "줄거리",
- "줄기",
- "줄무늬",
- "중간",
- "중계방송",
- "중국",
- "중년",
- "중단",
- "중독",
- "중반",
- "중부",
- "중세",
- "중소기업",
- "중순",
- "중앙",
- "중요",
- "중학교",
- "즉석",
- "즉시",
- "즐거움",
- "증가",
- "증거",
- "증권",
- "증상",
- "증세",
- "지각",
- "지갑",
- "지경",
- "지극히",
- "지금",
- "지급",
- "지능",
- "지름길",
- "지리산",
- "지방",
- "지붕",
- "지식",
- "지역",
- "지우개",
- "지원",
- "지적",
- "지점",
- "지진",
- "지출",
- "직선",
- "직업",
- "직원",
- "직장",
- "진급",
- "진동",
- "진로",
- "진료",
- "진리",
- "진짜",
- "진찰",
- "진출",
- "진통",
- "진행",
- "질문",
- "질병",
- "질서",
- "짐작",
- "집단",
- "집안",
- "집중",
- "짜증",
- "찌꺼기",
- "차남",
- "차라리",
- "차량",
- "차림",
- "차별",
- "차선",
- "차츰",
- "착각",
- "찬물",
- "찬성",
- "참가",
- "참기름",
- "참새",
- "참석",
- "참여",
- "참외",
- "참조",
- "찻잔",
- "창가",
- "창고",
- "창구",
- "창문",
- "창밖",
- "창작",
- "창조",
- "채널",
- "채점",
- "책가방",
- "책방",
- "책상",
- "책임",
- "챔피언",
- "처벌",
- "처음",
- "천국",
- "천둥",
- "천장",
- "천재",
- "천천히",
- "철도",
- "철저히",
- "철학",
- "첫날",
- "첫째",
- "청년",
- "청바지",
- "청소",
- "청춘",
- "체계",
- "체력",
- "체온",
- "체육",
- "체중",
- "체험",
- "초등학생",
- "초반",
- "초밥",
- "초상화",
- "초순",
- "초여름",
- "초원",
- "초저녁",
- "초점",
- "초청",
- "초콜릿",
- "촛불",
- "총각",
- "총리",
- "총장",
- "촬영",
- "최근",
- "최상",
- "최선",
- "최신",
- "최악",
- "최종",
- "추석",
- "추억",
- "추진",
- "추천",
- "추측",
- "축구",
- "축소",
- "축제",
- "축하",
- "출근",
- "출발",
- "출산",
- "출신",
- "출연",
- "출입",
- "출장",
- "출판",
- "충격",
- "충고",
- "충돌",
- "충분히",
- "충청도",
- "취업",
- "취직",
- "취향",
- "치약",
- "친구",
- "친척",
- "칠십",
- "칠월",
- "칠판",
- "침대",
- "침묵",
- "침실",
- "칫솔",
- "칭찬",
- "카메라",
- "카운터",
- "칼국수",
- "캐릭터",
- "캠퍼스",
- "캠페인",
- "커튼",
- "컨디션",
- "컬러",
- "컴퓨터",
- "코끼리",
- "코미디",
- "콘서트",
- "콜라",
- "콤플렉스",
- "콩나물",
- "쾌감",
- "쿠데타",
- "크림",
- "큰길",
- "큰딸",
- "큰소리",
- "큰아들",
- "큰어머니",
- "큰일",
- "큰절",
- "클래식",
- "클럽",
- "킬로",
- "타입",
- "타자기",
- "탁구",
- "탁자",
- "탄생",
- "태권도",
- "태양",
- "태풍",
- "택시",
- "탤런트",
- "터널",
- "터미널",
- "테니스",
- "테스트",
- "테이블",
- "텔레비전",
- "토론",
- "토마토",
- "토요일",
- "통계",
- "통과",
- "통로",
- "통신",
- "통역",
- "통일",
- "통장",
- "통제",
- "통증",
- "통합",
- "통화",
- "퇴근",
- "퇴원",
- "퇴직금",
- "튀김",
- "트럭",
- "특급",
- "특별",
- "특성",
- "특수",
- "특징",
- "특히",
- "튼튼히",
- "티셔츠",
- "파란색",
- "파일",
- "파출소",
- "판결",
- "판단",
- "판매",
- "판사",
- "팔십",
- "팔월",
- "팝송",
- "패션",
- "팩스",
- "팩시밀리",
- "팬티",
- "퍼센트",
- "페인트",
- "편견",
- "편의",
- "편지",
- "편히",
- "평가",
- "평균",
- "평생",
- "평소",
- "평양",
- "평일",
- "평화",
- "포스터",
- "포인트",
- "포장",
- "포함",
- "표면",
- "표정",
- "표준",
- "표현",
- "품목",
- "품질",
- "풍경",
- "풍속",
- "풍습",
- "프랑스",
- "프린터",
- "플라스틱",
- "피곤",
- "피망",
- "피아노",
- "필름",
- "필수",
- "필요",
- "필자",
- "필통",
- "핑계",
- "하느님",
- "하늘",
- "하드웨어",
- "하룻밤",
- "하반기",
- "하숙집",
- "하순",
- "하여튼",
- "하지만",
- "하천",
- "하품",
- "하필",
- "학과",
- "학교",
- "학급",
- "학기",
- "학년",
- "학력",
- "학번",
- "학부모",
- "학비",
- "학생",
- "학술",
- "학습",
- "학용품",
- "학원",
- "학위",
- "학자",
- "학점",
- "한계",
- "한글",
- "한꺼번에",
- "한낮",
- "한눈",
- "한동안",
- "한때",
- "한라산",
- "한마디",
- "한문",
- "한번",
- "한복",
- "한식",
- "한여름",
- "한쪽",
- "할머니",
- "할아버지",
- "할인",
- "함께",
- "함부로",
- "합격",
- "합리적",
- "항공",
- "항구",
- "항상",
- "항의",
- "해결",
- "해군",
- "해답",
- "해당",
- "해물",
- "해석",
- "해설",
- "해수욕장",
- "해안",
- "핵심",
- "핸드백",
- "햄버거",
- "햇볕",
- "햇살",
- "행동",
- "행복",
- "행사",
- "행운",
- "행위",
- "향기",
- "향상",
- "향수",
- "허락",
- "허용",
- "헬기",
- "현관",
- "현금",
- "현대",
- "현상",
- "현실",
- "현장",
- "현재",
- "현지",
- "혈액",
- "협력",
- "형부",
- "형사",
- "형수",
- "형식",
- "형제",
- "형태",
- "형편",
- "혜택",
- "호기심",
- "호남",
- "호랑이",
- "호박",
- "호텔",
- "호흡",
- "혹시",
- "홀로",
- "홈페이지",
- "홍보",
- "홍수",
- "홍차",
- "화면",
- "화분",
- "화살",
- "화요일",
- "화장",
- "화학",
- "확보",
- "확인",
- "확장",
- "확정",
- "환갑",
- "환경",
- "환영",
- "환율",
- "환자",
- "활기",
- "활동",
- "활발히",
- "활용",
- "활짝",
- "회견",
- "회관",
- "회복",
- "회색",
- "회원",
- "회장",
- "회전",
- "횟수",
- "횡단보도",
- "효율적",
- "후반",
- "후춧가루",
- "훈련",
- "훨씬",
- "휴식",
- "휴일",
- "흉내",
- "흐름",
- "흑백",
- "흑인",
- "흔적",
- "흔히",
- "흥미",
- "흥분",
- "희곡",
- "희망",
- "희생",
- "흰색",
- "힘껏",
- )
-}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt
deleted file mode 100644
index c90e4ec7b..000000000
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt
+++ /dev/null
@@ -1,2059 +0,0 @@
-package io.iohk.atala.prism.apollo.utils.bip39.wordlists
-
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-internal object MnemonicCodeSimplifiedChinese {
- val wordList: List = listOf(
- "的",
- "一",
- "是",
- "在",
- "不",
- "了",
- "有",
- "和",
- "人",
- "这",
- "中",
- "大",
- "为",
- "上",
- "个",
- "国",
- "我",
- "以",
- "要",
- "他",
- "时",
- "来",
- "用",
- "们",
- "生",
- "到",
- "作",
- "地",
- "于",
- "出",
- "就",
- "分",
- "对",
- "成",
- "会",
- "可",
- "主",
- "发",
- "年",
- "动",
- "同",
- "工",
- "也",
- "能",
- "下",
- "过",
- "子",
- "说",
- "产",
- "种",
- "面",
- "而",
- "方",
- "后",
- "多",
- "定",
- "行",
- "学",
- "法",
- "所",
- "民",
- "得",
- "经",
- "十",
- "三",
- "之",
- "进",
- "着",
- "等",
- "部",
- "度",
- "家",
- "电",
- "力",
- "里",
- "如",
- "水",
- "化",
- "高",
- "自",
- "二",
- "理",
- "起",
- "小",
- "物",
- "现",
- "实",
- "加",
- "量",
- "都",
- "两",
- "体",
- "制",
- "机",
- "当",
- "使",
- "点",
- "从",
- "业",
- "本",
- "去",
- "把",
- "性",
- "好",
- "应",
- "开",
- "它",
- "合",
- "还",
- "因",
- "由",
- "其",
- "些",
- "然",
- "前",
- "外",
- "天",
- "政",
- "四",
- "日",
- "那",
- "社",
- "义",
- "事",
- "平",
- "形",
- "相",
- "全",
- "表",
- "间",
- "样",
- "与",
- "关",
- "各",
- "重",
- "新",
- "线",
- "内",
- "数",
- "正",
- "心",
- "反",
- "你",
- "明",
- "看",
- "原",
- "又",
- "么",
- "利",
- "比",
- "或",
- "但",
- "质",
- "气",
- "第",
- "向",
- "道",
- "命",
- "此",
- "变",
- "条",
- "只",
- "没",
- "结",
- "解",
- "问",
- "意",
- "建",
- "月",
- "公",
- "无",
- "系",
- "军",
- "很",
- "情",
- "者",
- "最",
- "立",
- "代",
- "想",
- "已",
- "通",
- "并",
- "提",
- "直",
- "题",
- "党",
- "程",
- "展",
- "五",
- "果",
- "料",
- "象",
- "员",
- "革",
- "位",
- "入",
- "常",
- "文",
- "总",
- "次",
- "品",
- "式",
- "活",
- "设",
- "及",
- "管",
- "特",
- "件",
- "长",
- "求",
- "老",
- "头",
- "基",
- "资",
- "边",
- "流",
- "路",
- "级",
- "少",
- "图",
- "山",
- "统",
- "接",
- "知",
- "较",
- "将",
- "组",
- "见",
- "计",
- "别",
- "她",
- "手",
- "角",
- "期",
- "根",
- "论",
- "运",
- "农",
- "指",
- "几",
- "九",
- "区",
- "强",
- "放",
- "决",
- "西",
- "被",
- "干",
- "做",
- "必",
- "战",
- "先",
- "回",
- "则",
- "任",
- "取",
- "据",
- "处",
- "队",
- "南",
- "给",
- "色",
- "光",
- "门",
- "即",
- "保",
- "治",
- "北",
- "造",
- "百",
- "规",
- "热",
- "领",
- "七",
- "海",
- "口",
- "东",
- "导",
- "器",
- "压",
- "志",
- "世",
- "金",
- "增",
- "争",
- "济",
- "阶",
- "油",
- "思",
- "术",
- "极",
- "交",
- "受",
- "联",
- "什",
- "认",
- "六",
- "共",
- "权",
- "收",
- "证",
- "改",
- "清",
- "美",
- "再",
- "采",
- "转",
- "更",
- "单",
- "风",
- "切",
- "打",
- "白",
- "教",
- "速",
- "花",
- "带",
- "安",
- "场",
- "身",
- "车",
- "例",
- "真",
- "务",
- "具",
- "万",
- "每",
- "目",
- "至",
- "达",
- "走",
- "积",
- "示",
- "议",
- "声",
- "报",
- "斗",
- "完",
- "类",
- "八",
- "离",
- "华",
- "名",
- "确",
- "才",
- "科",
- "张",
- "信",
- "马",
- "节",
- "话",
- "米",
- "整",
- "空",
- "元",
- "况",
- "今",
- "集",
- "温",
- "传",
- "土",
- "许",
- "步",
- "群",
- "广",
- "石",
- "记",
- "需",
- "段",
- "研",
- "界",
- "拉",
- "林",
- "律",
- "叫",
- "且",
- "究",
- "观",
- "越",
- "织",
- "装",
- "影",
- "算",
- "低",
- "持",
- "音",
- "众",
- "书",
- "布",
- "复",
- "容",
- "儿",
- "须",
- "际",
- "商",
- "非",
- "验",
- "连",
- "断",
- "深",
- "难",
- "近",
- "矿",
- "千",
- "周",
- "委",
- "素",
- "技",
- "备",
- "半",
- "办",
- "青",
- "省",
- "列",
- "习",
- "响",
- "约",
- "支",
- "般",
- "史",
- "感",
- "劳",
- "便",
- "团",
- "往",
- "酸",
- "历",
- "市",
- "克",
- "何",
- "除",
- "消",
- "构",
- "府",
- "称",
- "太",
- "准",
- "精",
- "值",
- "号",
- "率",
- "族",
- "维",
- "划",
- "选",
- "标",
- "写",
- "存",
- "候",
- "毛",
- "亲",
- "快",
- "效",
- "斯",
- "院",
- "查",
- "江",
- "型",
- "眼",
- "王",
- "按",
- "格",
- "养",
- "易",
- "置",
- "派",
- "层",
- "片",
- "始",
- "却",
- "专",
- "状",
- "育",
- "厂",
- "京",
- "识",
- "适",
- "属",
- "圆",
- "包",
- "火",
- "住",
- "调",
- "满",
- "县",
- "局",
- "照",
- "参",
- "红",
- "细",
- "引",
- "听",
- "该",
- "铁",
- "价",
- "严",
- "首",
- "底",
- "液",
- "官",
- "德",
- "随",
- "病",
- "苏",
- "失",
- "尔",
- "死",
- "讲",
- "配",
- "女",
- "黄",
- "推",
- "显",
- "谈",
- "罪",
- "神",
- "艺",
- "呢",
- "席",
- "含",
- "企",
- "望",
- "密",
- "批",
- "营",
- "项",
- "防",
- "举",
- "球",
- "英",
- "氧",
- "势",
- "告",
- "李",
- "台",
- "落",
- "木",
- "帮",
- "轮",
- "破",
- "亚",
- "师",
- "围",
- "注",
- "远",
- "字",
- "材",
- "排",
- "供",
- "河",
- "态",
- "封",
- "另",
- "施",
- "减",
- "树",
- "溶",
- "怎",
- "止",
- "案",
- "言",
- "士",
- "均",
- "武",
- "固",
- "叶",
- "鱼",
- "波",
- "视",
- "仅",
- "费",
- "紧",
- "爱",
- "左",
- "章",
- "早",
- "朝",
- "害",
- "续",
- "轻",
- "服",
- "试",
- "食",
- "充",
- "兵",
- "源",
- "判",
- "护",
- "司",
- "足",
- "某",
- "练",
- "差",
- "致",
- "板",
- "田",
- "降",
- "黑",
- "犯",
- "负",
- "击",
- "范",
- "继",
- "兴",
- "似",
- "余",
- "坚",
- "曲",
- "输",
- "修",
- "故",
- "城",
- "夫",
- "够",
- "送",
- "笔",
- "船",
- "占",
- "右",
- "财",
- "吃",
- "富",
- "春",
- "职",
- "觉",
- "汉",
- "画",
- "功",
- "巴",
- "跟",
- "虽",
- "杂",
- "飞",
- "检",
- "吸",
- "助",
- "升",
- "阳",
- "互",
- "初",
- "创",
- "抗",
- "考",
- "投",
- "坏",
- "策",
- "古",
- "径",
- "换",
- "未",
- "跑",
- "留",
- "钢",
- "曾",
- "端",
- "责",
- "站",
- "简",
- "述",
- "钱",
- "副",
- "尽",
- "帝",
- "射",
- "草",
- "冲",
- "承",
- "独",
- "令",
- "限",
- "阿",
- "宣",
- "环",
- "双",
- "请",
- "超",
- "微",
- "让",
- "控",
- "州",
- "良",
- "轴",
- "找",
- "否",
- "纪",
- "益",
- "依",
- "优",
- "顶",
- "础",
- "载",
- "倒",
- "房",
- "突",
- "坐",
- "粉",
- "敌",
- "略",
- "客",
- "袁",
- "冷",
- "胜",
- "绝",
- "析",
- "块",
- "剂",
- "测",
- "丝",
- "协",
- "诉",
- "念",
- "陈",
- "仍",
- "罗",
- "盐",
- "友",
- "洋",
- "错",
- "苦",
- "夜",
- "刑",
- "移",
- "频",
- "逐",
- "靠",
- "混",
- "母",
- "短",
- "皮",
- "终",
- "聚",
- "汽",
- "村",
- "云",
- "哪",
- "既",
- "距",
- "卫",
- "停",
- "烈",
- "央",
- "察",
- "烧",
- "迅",
- "境",
- "若",
- "印",
- "洲",
- "刻",
- "括",
- "激",
- "孔",
- "搞",
- "甚",
- "室",
- "待",
- "核",
- "校",
- "散",
- "侵",
- "吧",
- "甲",
- "游",
- "久",
- "菜",
- "味",
- "旧",
- "模",
- "湖",
- "货",
- "损",
- "预",
- "阻",
- "毫",
- "普",
- "稳",
- "乙",
- "妈",
- "植",
- "息",
- "扩",
- "银",
- "语",
- "挥",
- "酒",
- "守",
- "拿",
- "序",
- "纸",
- "医",
- "缺",
- "雨",
- "吗",
- "针",
- "刘",
- "啊",
- "急",
- "唱",
- "误",
- "训",
- "愿",
- "审",
- "附",
- "获",
- "茶",
- "鲜",
- "粮",
- "斤",
- "孩",
- "脱",
- "硫",
- "肥",
- "善",
- "龙",
- "演",
- "父",
- "渐",
- "血",
- "欢",
- "械",
- "掌",
- "歌",
- "沙",
- "刚",
- "攻",
- "谓",
- "盾",
- "讨",
- "晚",
- "粒",
- "乱",
- "燃",
- "矛",
- "乎",
- "杀",
- "药",
- "宁",
- "鲁",
- "贵",
- "钟",
- "煤",
- "读",
- "班",
- "伯",
- "香",
- "介",
- "迫",
- "句",
- "丰",
- "培",
- "握",
- "兰",
- "担",
- "弦",
- "蛋",
- "沉",
- "假",
- "穿",
- "执",
- "答",
- "乐",
- "谁",
- "顺",
- "烟",
- "缩",
- "征",
- "脸",
- "喜",
- "松",
- "脚",
- "困",
- "异",
- "免",
- "背",
- "星",
- "福",
- "买",
- "染",
- "井",
- "概",
- "慢",
- "怕",
- "磁",
- "倍",
- "祖",
- "皇",
- "促",
- "静",
- "补",
- "评",
- "翻",
- "肉",
- "践",
- "尼",
- "衣",
- "宽",
- "扬",
- "棉",
- "希",
- "伤",
- "操",
- "垂",
- "秋",
- "宜",
- "氢",
- "套",
- "督",
- "振",
- "架",
- "亮",
- "末",
- "宪",
- "庆",
- "编",
- "牛",
- "触",
- "映",
- "雷",
- "销",
- "诗",
- "座",
- "居",
- "抓",
- "裂",
- "胞",
- "呼",
- "娘",
- "景",
- "威",
- "绿",
- "晶",
- "厚",
- "盟",
- "衡",
- "鸡",
- "孙",
- "延",
- "危",
- "胶",
- "屋",
- "乡",
- "临",
- "陆",
- "顾",
- "掉",
- "呀",
- "灯",
- "岁",
- "措",
- "束",
- "耐",
- "剧",
- "玉",
- "赵",
- "跳",
- "哥",
- "季",
- "课",
- "凯",
- "胡",
- "额",
- "款",
- "绍",
- "卷",
- "齐",
- "伟",
- "蒸",
- "殖",
- "永",
- "宗",
- "苗",
- "川",
- "炉",
- "岩",
- "弱",
- "零",
- "杨",
- "奏",
- "沿",
- "露",
- "杆",
- "探",
- "滑",
- "镇",
- "饭",
- "浓",
- "航",
- "怀",
- "赶",
- "库",
- "夺",
- "伊",
- "灵",
- "税",
- "途",
- "灭",
- "赛",
- "归",
- "召",
- "鼓",
- "播",
- "盘",
- "裁",
- "险",
- "康",
- "唯",
- "录",
- "菌",
- "纯",
- "借",
- "糖",
- "盖",
- "横",
- "符",
- "私",
- "努",
- "堂",
- "域",
- "枪",
- "润",
- "幅",
- "哈",
- "竟",
- "熟",
- "虫",
- "泽",
- "脑",
- "壤",
- "碳",
- "欧",
- "遍",
- "侧",
- "寨",
- "敢",
- "彻",
- "虑",
- "斜",
- "薄",
- "庭",
- "纳",
- "弹",
- "饲",
- "伸",
- "折",
- "麦",
- "湿",
- "暗",
- "荷",
- "瓦",
- "塞",
- "床",
- "筑",
- "恶",
- "户",
- "访",
- "塔",
- "奇",
- "透",
- "梁",
- "刀",
- "旋",
- "迹",
- "卡",
- "氯",
- "遇",
- "份",
- "毒",
- "泥",
- "退",
- "洗",
- "摆",
- "灰",
- "彩",
- "卖",
- "耗",
- "夏",
- "择",
- "忙",
- "铜",
- "献",
- "硬",
- "予",
- "繁",
- "圈",
- "雪",
- "函",
- "亦",
- "抽",
- "篇",
- "阵",
- "阴",
- "丁",
- "尺",
- "追",
- "堆",
- "雄",
- "迎",
- "泛",
- "爸",
- "楼",
- "避",
- "谋",
- "吨",
- "野",
- "猪",
- "旗",
- "累",
- "偏",
- "典",
- "馆",
- "索",
- "秦",
- "脂",
- "潮",
- "爷",
- "豆",
- "忽",
- "托",
- "惊",
- "塑",
- "遗",
- "愈",
- "朱",
- "替",
- "纤",
- "粗",
- "倾",
- "尚",
- "痛",
- "楚",
- "谢",
- "奋",
- "购",
- "磨",
- "君",
- "池",
- "旁",
- "碎",
- "骨",
- "监",
- "捕",
- "弟",
- "暴",
- "割",
- "贯",
- "殊",
- "释",
- "词",
- "亡",
- "壁",
- "顿",
- "宝",
- "午",
- "尘",
- "闻",
- "揭",
- "炮",
- "残",
- "冬",
- "桥",
- "妇",
- "警",
- "综",
- "招",
- "吴",
- "付",
- "浮",
- "遭",
- "徐",
- "您",
- "摇",
- "谷",
- "赞",
- "箱",
- "隔",
- "订",
- "男",
- "吹",
- "园",
- "纷",
- "唐",
- "败",
- "宋",
- "玻",
- "巨",
- "耕",
- "坦",
- "荣",
- "闭",
- "湾",
- "键",
- "凡",
- "驻",
- "锅",
- "救",
- "恩",
- "剥",
- "凝",
- "碱",
- "齿",
- "截",
- "炼",
- "麻",
- "纺",
- "禁",
- "废",
- "盛",
- "版",
- "缓",
- "净",
- "睛",
- "昌",
- "婚",
- "涉",
- "筒",
- "嘴",
- "插",
- "岸",
- "朗",
- "庄",
- "街",
- "藏",
- "姑",
- "贸",
- "腐",
- "奴",
- "啦",
- "惯",
- "乘",
- "伙",
- "恢",
- "匀",
- "纱",
- "扎",
- "辩",
- "耳",
- "彪",
- "臣",
- "亿",
- "璃",
- "抵",
- "脉",
- "秀",
- "萨",
- "俄",
- "网",
- "舞",
- "店",
- "喷",
- "纵",
- "寸",
- "汗",
- "挂",
- "洪",
- "贺",
- "闪",
- "柬",
- "爆",
- "烯",
- "津",
- "稻",
- "墙",
- "软",
- "勇",
- "像",
- "滚",
- "厘",
- "蒙",
- "芳",
- "肯",
- "坡",
- "柱",
- "荡",
- "腿",
- "仪",
- "旅",
- "尾",
- "轧",
- "冰",
- "贡",
- "登",
- "黎",
- "削",
- "钻",
- "勒",
- "逃",
- "障",
- "氨",
- "郭",
- "峰",
- "币",
- "港",
- "伏",
- "轨",
- "亩",
- "毕",
- "擦",
- "莫",
- "刺",
- "浪",
- "秘",
- "援",
- "株",
- "健",
- "售",
- "股",
- "岛",
- "甘",
- "泡",
- "睡",
- "童",
- "铸",
- "汤",
- "阀",
- "休",
- "汇",
- "舍",
- "牧",
- "绕",
- "炸",
- "哲",
- "磷",
- "绩",
- "朋",
- "淡",
- "尖",
- "启",
- "陷",
- "柴",
- "呈",
- "徒",
- "颜",
- "泪",
- "稍",
- "忘",
- "泵",
- "蓝",
- "拖",
- "洞",
- "授",
- "镜",
- "辛",
- "壮",
- "锋",
- "贫",
- "虚",
- "弯",
- "摩",
- "泰",
- "幼",
- "廷",
- "尊",
- "窗",
- "纲",
- "弄",
- "隶",
- "疑",
- "氏",
- "宫",
- "姐",
- "震",
- "瑞",
- "怪",
- "尤",
- "琴",
- "循",
- "描",
- "膜",
- "违",
- "夹",
- "腰",
- "缘",
- "珠",
- "穷",
- "森",
- "枝",
- "竹",
- "沟",
- "催",
- "绳",
- "忆",
- "邦",
- "剩",
- "幸",
- "浆",
- "栏",
- "拥",
- "牙",
- "贮",
- "礼",
- "滤",
- "钠",
- "纹",
- "罢",
- "拍",
- "咱",
- "喊",
- "袖",
- "埃",
- "勤",
- "罚",
- "焦",
- "潜",
- "伍",
- "墨",
- "欲",
- "缝",
- "姓",
- "刊",
- "饱",
- "仿",
- "奖",
- "铝",
- "鬼",
- "丽",
- "跨",
- "默",
- "挖",
- "链",
- "扫",
- "喝",
- "袋",
- "炭",
- "污",
- "幕",
- "诸",
- "弧",
- "励",
- "梅",
- "奶",
- "洁",
- "灾",
- "舟",
- "鉴",
- "苯",
- "讼",
- "抱",
- "毁",
- "懂",
- "寒",
- "智",
- "埔",
- "寄",
- "届",
- "跃",
- "渡",
- "挑",
- "丹",
- "艰",
- "贝",
- "碰",
- "拔",
- "爹",
- "戴",
- "码",
- "梦",
- "芽",
- "熔",
- "赤",
- "渔",
- "哭",
- "敬",
- "颗",
- "奔",
- "铅",
- "仲",
- "虎",
- "稀",
- "妹",
- "乏",
- "珍",
- "申",
- "桌",
- "遵",
- "允",
- "隆",
- "螺",
- "仓",
- "魏",
- "锐",
- "晓",
- "氮",
- "兼",
- "隐",
- "碍",
- "赫",
- "拨",
- "忠",
- "肃",
- "缸",
- "牵",
- "抢",
- "博",
- "巧",
- "壳",
- "兄",
- "杜",
- "讯",
- "诚",
- "碧",
- "祥",
- "柯",
- "页",
- "巡",
- "矩",
- "悲",
- "灌",
- "龄",
- "伦",
- "票",
- "寻",
- "桂",
- "铺",
- "圣",
- "恐",
- "恰",
- "郑",
- "趣",
- "抬",
- "荒",
- "腾",
- "贴",
- "柔",
- "滴",
- "猛",
- "阔",
- "辆",
- "妻",
- "填",
- "撤",
- "储",
- "签",
- "闹",
- "扰",
- "紫",
- "砂",
- "递",
- "戏",
- "吊",
- "陶",
- "伐",
- "喂",
- "疗",
- "瓶",
- "婆",
- "抚",
- "臂",
- "摸",
- "忍",
- "虾",
- "蜡",
- "邻",
- "胸",
- "巩",
- "挤",
- "偶",
- "弃",
- "槽",
- "劲",
- "乳",
- "邓",
- "吉",
- "仁",
- "烂",
- "砖",
- "租",
- "乌",
- "舰",
- "伴",
- "瓜",
- "浅",
- "丙",
- "暂",
- "燥",
- "橡",
- "柳",
- "迷",
- "暖",
- "牌",
- "秧",
- "胆",
- "详",
- "簧",
- "踏",
- "瓷",
- "谱",
- "呆",
- "宾",
- "糊",
- "洛",
- "辉",
- "愤",
- "竞",
- "隙",
- "怒",
- "粘",
- "乃",
- "绪",
- "肩",
- "籍",
- "敏",
- "涂",
- "熙",
- "皆",
- "侦",
- "悬",
- "掘",
- "享",
- "纠",
- "醒",
- "狂",
- "锁",
- "淀",
- "恨",
- "牲",
- "霸",
- "爬",
- "赏",
- "逆",
- "玩",
- "陵",
- "祝",
- "秒",
- "浙",
- "貌",
- "役",
- "彼",
- "悉",
- "鸭",
- "趋",
- "凤",
- "晨",
- "畜",
- "辈",
- "秩",
- "卵",
- "署",
- "梯",
- "炎",
- "滩",
- "棋",
- "驱",
- "筛",
- "峡",
- "冒",
- "啥",
- "寿",
- "译",
- "浸",
- "泉",
- "帽",
- "迟",
- "硅",
- "疆",
- "贷",
- "漏",
- "稿",
- "冠",
- "嫩",
- "胁",
- "芯",
- "牢",
- "叛",
- "蚀",
- "奥",
- "鸣",
- "岭",
- "羊",
- "凭",
- "串",
- "塘",
- "绘",
- "酵",
- "融",
- "盆",
- "锡",
- "庙",
- "筹",
- "冻",
- "辅",
- "摄",
- "袭",
- "筋",
- "拒",
- "僚",
- "旱",
- "钾",
- "鸟",
- "漆",
- "沈",
- "眉",
- "疏",
- "添",
- "棒",
- "穗",
- "硝",
- "韩",
- "逼",
- "扭",
- "侨",
- "凉",
- "挺",
- "碗",
- "栽",
- "炒",
- "杯",
- "患",
- "馏",
- "劝",
- "豪",
- "辽",
- "勃",
- "鸿",
- "旦",
- "吏",
- "拜",
- "狗",
- "埋",
- "辊",
- "掩",
- "饮",
- "搬",
- "骂",
- "辞",
- "勾",
- "扣",
- "估",
- "蒋",
- "绒",
- "雾",
- "丈",
- "朵",
- "姆",
- "拟",
- "宇",
- "辑",
- "陕",
- "雕",
- "偿",
- "蓄",
- "崇",
- "剪",
- "倡",
- "厅",
- "咬",
- "驶",
- "薯",
- "刷",
- "斥",
- "番",
- "赋",
- "奉",
- "佛",
- "浇",
- "漫",
- "曼",
- "扇",
- "钙",
- "桃",
- "扶",
- "仔",
- "返",
- "俗",
- "亏",
- "腔",
- "鞋",
- "棱",
- "覆",
- "框",
- "悄",
- "叔",
- "撞",
- "骗",
- "勘",
- "旺",
- "沸",
- "孤",
- "吐",
- "孟",
- "渠",
- "屈",
- "疾",
- "妙",
- "惜",
- "仰",
- "狠",
- "胀",
- "谐",
- "抛",
- "霉",
- "桑",
- "岗",
- "嘛",
- "衰",
- "盗",
- "渗",
- "脏",
- "赖",
- "涌",
- "甜",
- "曹",
- "阅",
- "肌",
- "哩",
- "厉",
- "烃",
- "纬",
- "毅",
- "昨",
- "伪",
- "症",
- "煮",
- "叹",
- "钉",
- "搭",
- "茎",
- "笼",
- "酷",
- "偷",
- "弓",
- "锥",
- "恒",
- "杰",
- "坑",
- "鼻",
- "翼",
- "纶",
- "叙",
- "狱",
- "逮",
- "罐",
- "络",
- "棚",
- "抑",
- "膨",
- "蔬",
- "寺",
- "骤",
- "穆",
- "冶",
- "枯",
- "册",
- "尸",
- "凸",
- "绅",
- "坯",
- "牺",
- "焰",
- "轰",
- "欣",
- "晋",
- "瘦",
- "御",
- "锭",
- "锦",
- "丧",
- "旬",
- "锻",
- "垄",
- "搜",
- "扑",
- "邀",
- "亭",
- "酯",
- "迈",
- "舒",
- "脆",
- "酶",
- "闲",
- "忧",
- "酚",
- "顽",
- "羽",
- "涨",
- "卸",
- "仗",
- "陪",
- "辟",
- "惩",
- "杭",
- "姚",
- "肚",
- "捉",
- "飘",
- "漂",
- "昆",
- "欺",
- "吾",
- "郎",
- "烷",
- "汁",
- "呵",
- "饰",
- "萧",
- "雅",
- "邮",
- "迁",
- "燕",
- "撒",
- "姻",
- "赴",
- "宴",
- "烦",
- "债",
- "帐",
- "斑",
- "铃",
- "旨",
- "醇",
- "董",
- "饼",
- "雏",
- "姿",
- "拌",
- "傅",
- "腹",
- "妥",
- "揉",
- "贤",
- "拆",
- "歪",
- "葡",
- "胺",
- "丢",
- "浩",
- "徽",
- "昂",
- "垫",
- "挡",
- "览",
- "贪",
- "慰",
- "缴",
- "汪",
- "慌",
- "冯",
- "诺",
- "姜",
- "谊",
- "凶",
- "劣",
- "诬",
- "耀",
- "昏",
- "躺",
- "盈",
- "骑",
- "乔",
- "溪",
- "丛",
- "卢",
- "抹",
- "闷",
- "咨",
- "刮",
- "驾",
- "缆",
- "悟",
- "摘",
- "铒",
- "掷",
- "颇",
- "幻",
- "柄",
- "惠",
- "惨",
- "佳",
- "仇",
- "腊",
- "窝",
- "涤",
- "剑",
- "瞧",
- "堡",
- "泼",
- "葱",
- "罩",
- "霍",
- "捞",
- "胎",
- "苍",
- "滨",
- "俩",
- "捅",
- "湘",
- "砍",
- "霞",
- "邵",
- "萄",
- "疯",
- "淮",
- "遂",
- "熊",
- "粪",
- "烘",
- "宿",
- "档",
- "戈",
- "驳",
- "嫂",
- "裕",
- "徙",
- "箭",
- "捐",
- "肠",
- "撑",
- "晒",
- "辨",
- "殿",
- "莲",
- "摊",
- "搅",
- "酱",
- "屏",
- "疫",
- "哀",
- "蔡",
- "堵",
- "沫",
- "皱",
- "畅",
- "叠",
- "阁",
- "莱",
- "敲",
- "辖",
- "钩",
- "痕",
- "坝",
- "巷",
- "饿",
- "祸",
- "丘",
- "玄",
- "溜",
- "曰",
- "逻",
- "彭",
- "尝",
- "卿",
- "妨",
- "艇",
- "吞",
- "韦",
- "怨",
- "矮",
- "歇",
- )
-}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt
deleted file mode 100644
index 5c7f4caa8..000000000
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt
+++ /dev/null
@@ -1,2059 +0,0 @@
-package io.iohk.atala.prism.apollo.utils.bip39.wordlists
-
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-internal object MnemonicCodeSpanish {
- val wordList: List = listOf(
- "ábaco",
- "abdomen",
- "abeja",
- "abierto",
- "abogado",
- "abono",
- "aborto",
- "abrazo",
- "abrir",
- "abuelo",
- "abuso",
- "acabar",
- "academia",
- "acceso",
- "acción",
- "aceite",
- "acelga",
- "acento",
- "aceptar",
- "ácido",
- "aclarar",
- "acné",
- "acoger",
- "acoso",
- "activo",
- "acto",
- "actriz",
- "actuar",
- "acudir",
- "acuerdo",
- "acusar",
- "adicto",
- "admitir",
- "adoptar",
- "adorno",
- "aduana",
- "adulto",
- "aéreo",
- "afectar",
- "afición",
- "afinar",
- "afirmar",
- "ágil",
- "agitar",
- "agonía",
- "agosto",
- "agotar",
- "agregar",
- "agrio",
- "agua",
- "agudo",
- "águila",
- "aguja",
- "ahogo",
- "ahorro",
- "aire",
- "aislar",
- "ajedrez",
- "ajeno",
- "ajuste",
- "alacrán",
- "alambre",
- "alarma",
- "alba",
- "álbum",
- "alcalde",
- "aldea",
- "alegre",
- "alejar",
- "alerta",
- "aleta",
- "alfiler",
- "alga",
- "algodón",
- "aliado",
- "aliento",
- "alivio",
- "alma",
- "almeja",
- "almíbar",
- "altar",
- "alteza",
- "altivo",
- "alto",
- "altura",
- "alumno",
- "alzar",
- "amable",
- "amante",
- "amapola",
- "amargo",
- "amasar",
- "ámbar",
- "ámbito",
- "ameno",
- "amigo",
- "amistad",
- "amor",
- "amparo",
- "amplio",
- "ancho",
- "anciano",
- "ancla",
- "andar",
- "andén",
- "anemia",
- "ángulo",
- "anillo",
- "ánimo",
- "anís",
- "anotar",
- "antena",
- "antiguo",
- "antojo",
- "anual",
- "anular",
- "anuncio",
- "añadir",
- "añejo",
- "año",
- "apagar",
- "aparato",
- "apetito",
- "apio",
- "aplicar",
- "apodo",
- "aporte",
- "apoyo",
- "aprender",
- "aprobar",
- "apuesta",
- "apuro",
- "arado",
- "araña",
- "arar",
- "árbitro",
- "árbol",
- "arbusto",
- "archivo",
- "arco",
- "arder",
- "ardilla",
- "arduo",
- "área",
- "árido",
- "aries",
- "armonía",
- "arnés",
- "aroma",
- "arpa",
- "arpón",
- "arreglo",
- "arroz",
- "arruga",
- "arte",
- "artista",
- "asa",
- "asado",
- "asalto",
- "ascenso",
- "asegurar",
- "aseo",
- "asesor",
- "asiento",
- "asilo",
- "asistir",
- "asno",
- "asombro",
- "áspero",
- "astilla",
- "astro",
- "astuto",
- "asumir",
- "asunto",
- "atajo",
- "ataque",
- "atar",
- "atento",
- "ateo",
- "ático",
- "atleta",
- "átomo",
- "atraer",
- "atroz",
- "atún",
- "audaz",
- "audio",
- "auge",
- "aula",
- "aumento",
- "ausente",
- "autor",
- "aval",
- "avance",
- "avaro",
- "ave",
- "avellana",
- "avena",
- "avestruz",
- "avión",
- "aviso",
- "ayer",
- "ayuda",
- "ayuno",
- "azafrán",
- "azar",
- "azote",
- "azúcar",
- "azufre",
- "azul",
- "baba",
- "babor",
- "bache",
- "bahía",
- "baile",
- "bajar",
- "balanza",
- "balcón",
- "balde",
- "bambú",
- "banco",
- "banda",
- "baño",
- "barba",
- "barco",
- "barniz",
- "barro",
- "báscula",
- "bastón",
- "basura",
- "batalla",
- "batería",
- "batir",
- "batuta",
- "baúl",
- "bazar",
- "bebé",
- "bebida",
- "bello",
- "besar",
- "beso",
- "bestia",
- "bicho",
- "bien",
- "bingo",
- "blanco",
- "bloque",
- "blusa",
- "boa",
- "bobina",
- "bobo",
- "boca",
- "bocina",
- "boda",
- "bodega",
- "boina",
- "bola",
- "bolero",
- "bolsa",
- "bomba",
- "bondad",
- "bonito",
- "bono",
- "bonsái",
- "borde",
- "borrar",
- "bosque",
- "bote",
- "botín",
- "bóveda",
- "bozal",
- "bravo",
- "brazo",
- "brecha",
- "breve",
- "brillo",
- "brinco",
- "brisa",
- "broca",
- "broma",
- "bronce",
- "brote",
- "bruja",
- "brusco",
- "bruto",
- "buceo",
- "bucle",
- "bueno",
- "buey",
- "bufanda",
- "bufón",
- "búho",
- "buitre",
- "bulto",
- "burbuja",
- "burla",
- "burro",
- "buscar",
- "butaca",
- "buzón",
- "caballo",
- "cabeza",
- "cabina",
- "cabra",
- "cacao",
- "cadáver",
- "cadena",
- "caer",
- "café",
- "caída",
- "caimán",
- "caja",
- "cajón",
- "cal",
- "calamar",
- "calcio",
- "caldo",
- "calidad",
- "calle",
- "calma",
- "calor",
- "calvo",
- "cama",
- "cambio",
- "camello",
- "camino",
- "campo",
- "cáncer",
- "candil",
- "canela",
- "canguro",
- "canica",
- "canto",
- "caña",
- "cañón",
- "caoba",
- "caos",
- "capaz",
- "capitán",
- "capote",
- "captar",
- "capucha",
- "cara",
- "carbón",
- "cárcel",
- "careta",
- "carga",
- "cariño",
- "carne",
- "carpeta",
- "carro",
- "carta",
- "casa",
- "casco",
- "casero",
- "caspa",
- "castor",
- "catorce",
- "catre",
- "caudal",
- "causa",
- "cazo",
- "cebolla",
- "ceder",
- "cedro",
- "celda",
- "célebre",
- "celoso",
- "célula",
- "cemento",
- "ceniza",
- "centro",
- "cerca",
- "cerdo",
- "cereza",
- "cero",
- "cerrar",
- "certeza",
- "césped",
- "cetro",
- "chacal",
- "chaleco",
- "champú",
- "chancla",
- "chapa",
- "charla",
- "chico",
- "chiste",
- "chivo",
- "choque",
- "choza",
- "chuleta",
- "chupar",
- "ciclón",
- "ciego",
- "cielo",
- "cien",
- "cierto",
- "cifra",
- "cigarro",
- "cima",
- "cinco",
- "cine",
- "cinta",
- "ciprés",
- "circo",
- "ciruela",
- "cisne",
- "cita",
- "ciudad",
- "clamor",
- "clan",
- "claro",
- "clase",
- "clave",
- "cliente",
- "clima",
- "clínica",
- "cobre",
- "cocción",
- "cochino",
- "cocina",
- "coco",
- "código",
- "codo",
- "cofre",
- "coger",
- "cohete",
- "cojín",
- "cojo",
- "cola",
- "colcha",
- "colegio",
- "colgar",
- "colina",
- "collar",
- "colmo",
- "columna",
- "combate",
- "comer",
- "comida",
- "cómodo",
- "compra",
- "conde",
- "conejo",
- "conga",
- "conocer",
- "consejo",
- "contar",
- "copa",
- "copia",
- "corazón",
- "corbata",
- "corcho",
- "cordón",
- "corona",
- "correr",
- "coser",
- "cosmos",
- "costa",
- "cráneo",
- "cráter",
- "crear",
- "crecer",
- "creído",
- "crema",
- "cría",
- "crimen",
- "cripta",
- "crisis",
- "cromo",
- "crónica",
- "croqueta",
- "crudo",
- "cruz",
- "cuadro",
- "cuarto",
- "cuatro",
- "cubo",
- "cubrir",
- "cuchara",
- "cuello",
- "cuento",
- "cuerda",
- "cuesta",
- "cueva",
- "cuidar",
- "culebra",
- "culpa",
- "culto",
- "cumbre",
- "cumplir",
- "cuna",
- "cuneta",
- "cuota",
- "cupón",
- "cúpula",
- "curar",
- "curioso",
- "curso",
- "curva",
- "cutis",
- "dama",
- "danza",
- "dar",
- "dardo",
- "dátil",
- "deber",
- "débil",
- "década",
- "decir",
- "dedo",
- "defensa",
- "definir",
- "dejar",
- "delfín",
- "delgado",
- "delito",
- "demora",
- "denso",
- "dental",
- "deporte",
- "derecho",
- "derrota",
- "desayuno",
- "deseo",
- "desfile",
- "desnudo",
- "destino",
- "desvío",
- "detalle",
- "detener",
- "deuda",
- "día",
- "diablo",
- "diadema",
- "diamante",
- "diana",
- "diario",
- "dibujo",
- "dictar",
- "diente",
- "dieta",
- "diez",
- "difícil",
- "digno",
- "dilema",
- "diluir",
- "dinero",
- "directo",
- "dirigir",
- "disco",
- "diseño",
- "disfraz",
- "diva",
- "divino",
- "doble",
- "doce",
- "dolor",
- "domingo",
- "don",
- "donar",
- "dorado",
- "dormir",
- "dorso",
- "dos",
- "dosis",
- "dragón",
- "droga",
- "ducha",
- "duda",
- "duelo",
- "dueño",
- "dulce",
- "dúo",
- "duque",
- "durar",
- "dureza",
- "duro",
- "ébano",
- "ebrio",
- "echar",
- "eco",
- "ecuador",
- "edad",
- "edición",
- "edificio",
- "editor",
- "educar",
- "efecto",
- "eficaz",
- "eje",
- "ejemplo",
- "elefante",
- "elegir",
- "elemento",
- "elevar",
- "elipse",
- "élite",
- "elixir",
- "elogio",
- "eludir",
- "embudo",
- "emitir",
- "emoción",
- "empate",
- "empeño",
- "empleo",
- "empresa",
- "enano",
- "encargo",
- "enchufe",
- "encía",
- "enemigo",
- "enero",
- "enfado",
- "enfermo",
- "engaño",
- "enigma",
- "enlace",
- "enorme",
- "enredo",
- "ensayo",
- "enseñar",
- "entero",
- "entrar",
- "envase",
- "envío",
- "época",
- "equipo",
- "erizo",
- "escala",
- "escena",
- "escolar",
- "escribir",
- "escudo",
- "esencia",
- "esfera",
- "esfuerzo",
- "espada",
- "espejo",
- "espía",
- "esposa",
- "espuma",
- "esquí",
- "estar",
- "este",
- "estilo",
- "estufa",
- "etapa",
- "eterno",
- "ética",
- "etnia",
- "evadir",
- "evaluar",
- "evento",
- "evitar",
- "exacto",
- "examen",
- "exceso",
- "excusa",
- "exento",
- "exigir",
- "exilio",
- "existir",
- "éxito",
- "experto",
- "explicar",
- "exponer",
- "extremo",
- "fábrica",
- "fábula",
- "fachada",
- "fácil",
- "factor",
- "faena",
- "faja",
- "falda",
- "fallo",
- "falso",
- "faltar",
- "fama",
- "familia",
- "famoso",
- "faraón",
- "farmacia",
- "farol",
- "farsa",
- "fase",
- "fatiga",
- "fauna",
- "favor",
- "fax",
- "febrero",
- "fecha",
- "feliz",
- "feo",
- "feria",
- "feroz",
- "fértil",
- "fervor",
- "festín",
- "fiable",
- "fianza",
- "fiar",
- "fibra",
- "ficción",
- "ficha",
- "fideo",
- "fiebre",
- "fiel",
- "fiera",
- "fiesta",
- "figura",
- "fijar",
- "fijo",
- "fila",
- "filete",
- "filial",
- "filtro",
- "fin",
- "finca",
- "fingir",
- "finito",
- "firma",
- "flaco",
- "flauta",
- "flecha",
- "flor",
- "flota",
- "fluir",
- "flujo",
- "flúor",
- "fobia",
- "foca",
- "fogata",
- "fogón",
- "folio",
- "folleto",
- "fondo",
- "forma",
- "forro",
- "fortuna",
- "forzar",
- "fosa",
- "foto",
- "fracaso",
- "frágil",
- "franja",
- "frase",
- "fraude",
- "freír",
- "freno",
- "fresa",
- "frío",
- "frito",
- "fruta",
- "fuego",
- "fuente",
- "fuerza",
- "fuga",
- "fumar",
- "función",
- "funda",
- "furgón",
- "furia",
- "fusil",
- "fútbol",
- "futuro",
- "gacela",
- "gafas",
- "gaita",
- "gajo",
- "gala",
- "galería",
- "gallo",
- "gamba",
- "ganar",
- "gancho",
- "ganga",
- "ganso",
- "garaje",
- "garza",
- "gasolina",
- "gastar",
- "gato",
- "gavilán",
- "gemelo",
- "gemir",
- "gen",
- "género",
- "genio",
- "gente",
- "geranio",
- "gerente",
- "germen",
- "gesto",
- "gigante",
- "gimnasio",
- "girar",
- "giro",
- "glaciar",
- "globo",
- "gloria",
- "gol",
- "golfo",
- "goloso",
- "golpe",
- "goma",
- "gordo",
- "gorila",
- "gorra",
- "gota",
- "goteo",
- "gozar",
- "grada",
- "gráfico",
- "grano",
- "grasa",
- "gratis",
- "grave",
- "grieta",
- "grillo",
- "gripe",
- "gris",
- "grito",
- "grosor",
- "grúa",
- "grueso",
- "grumo",
- "grupo",
- "guante",
- "guapo",
- "guardia",
- "guerra",
- "guía",
- "guiño",
- "guion",
- "guiso",
- "guitarra",
- "gusano",
- "gustar",
- "haber",
- "hábil",
- "hablar",
- "hacer",
- "hacha",
- "hada",
- "hallar",
- "hamaca",
- "harina",
- "haz",
- "hazaña",
- "hebilla",
- "hebra",
- "hecho",
- "helado",
- "helio",
- "hembra",
- "herir",
- "hermano",
- "héroe",
- "hervir",
- "hielo",
- "hierro",
- "hígado",
- "higiene",
- "hijo",
- "himno",
- "historia",
- "hocico",
- "hogar",
- "hoguera",
- "hoja",
- "hombre",
- "hongo",
- "honor",
- "honra",
- "hora",
- "hormiga",
- "horno",
- "hostil",
- "hoyo",
- "hueco",
- "huelga",
- "huerta",
- "hueso",
- "huevo",
- "huida",
- "huir",
- "humano",
- "húmedo",
- "humilde",
- "humo",
- "hundir",
- "huracán",
- "hurto",
- "icono",
- "ideal",
- "idioma",
- "ídolo",
- "iglesia",
- "iglú",
- "igual",
- "ilegal",
- "ilusión",
- "imagen",
- "imán",
- "imitar",
- "impar",
- "imperio",
- "imponer",
- "impulso",
- "incapaz",
- "índice",
- "inerte",
- "infiel",
- "informe",
- "ingenio",
- "inicio",
- "inmenso",
- "inmune",
- "innato",
- "insecto",
- "instante",
- "interés",
- "íntimo",
- "intuir",
- "inútil",
- "invierno",
- "ira",
- "iris",
- "ironía",
- "isla",
- "islote",
- "jabalí",
- "jabón",
- "jamón",
- "jarabe",
- "jardín",
- "jarra",
- "jaula",
- "jazmín",
- "jefe",
- "jeringa",
- "jinete",
- "jornada",
- "joroba",
- "joven",
- "joya",
- "juerga",
- "jueves",
- "juez",
- "jugador",
- "jugo",
- "juguete",
- "juicio",
- "junco",
- "jungla",
- "junio",
- "juntar",
- "júpiter",
- "jurar",
- "justo",
- "juvenil",
- "juzgar",
- "kilo",
- "koala",
- "labio",
- "lacio",
- "lacra",
- "lado",
- "ladrón",
- "lagarto",
- "lágrima",
- "laguna",
- "laico",
- "lamer",
- "lámina",
- "lámpara",
- "lana",
- "lancha",
- "langosta",
- "lanza",
- "lápiz",
- "largo",
- "larva",
- "lástima",
- "lata",
- "látex",
- "latir",
- "laurel",
- "lavar",
- "lazo",
- "leal",
- "lección",
- "leche",
- "lector",
- "leer",
- "legión",
- "legumbre",
- "lejano",
- "lengua",
- "lento",
- "leña",
- "león",
- "leopardo",
- "lesión",
- "letal",
- "letra",
- "leve",
- "leyenda",
- "libertad",
- "libro",
- "licor",
- "líder",
- "lidiar",
- "lienzo",
- "liga",
- "ligero",
- "lima",
- "límite",
- "limón",
- "limpio",
- "lince",
- "lindo",
- "línea",
- "lingote",
- "lino",
- "linterna",
- "líquido",
- "liso",
- "lista",
- "litera",
- "litio",
- "litro",
- "llaga",
- "llama",
- "llanto",
- "llave",
- "llegar",
- "llenar",
- "llevar",
- "llorar",
- "llover",
- "lluvia",
- "lobo",
- "loción",
- "loco",
- "locura",
- "lógica",
- "logro",
- "lombriz",
- "lomo",
- "lonja",
- "lote",
- "lucha",
- "lucir",
- "lugar",
- "lujo",
- "luna",
- "lunes",
- "lupa",
- "lustro",
- "luto",
- "luz",
- "maceta",
- "macho",
- "madera",
- "madre",
- "maduro",
- "maestro",
- "mafia",
- "magia",
- "mago",
- "maíz",
- "maldad",
- "maleta",
- "malla",
- "malo",
- "mamá",
- "mambo",
- "mamut",
- "manco",
- "mando",
- "manejar",
- "manga",
- "maniquí",
- "manjar",
- "mano",
- "manso",
- "manta",
- "mañana",
- "mapa",
- "máquina",
- "mar",
- "marco",
- "marea",
- "marfil",
- "margen",
- "marido",
- "mármol",
- "marrón",
- "martes",
- "marzo",
- "masa",
- "máscara",
- "masivo",
- "matar",
- "materia",
- "matiz",
- "matriz",
- "máximo",
- "mayor",
- "mazorca",
- "mecha",
- "medalla",
- "medio",
- "médula",
- "mejilla",
- "mejor",
- "melena",
- "melón",
- "memoria",
- "menor",
- "mensaje",
- "mente",
- "menú",
- "mercado",
- "merengue",
- "mérito",
- "mes",
- "mesón",
- "meta",
- "meter",
- "método",
- "metro",
- "mezcla",
- "miedo",
- "miel",
- "miembro",
- "miga",
- "mil",
- "milagro",
- "militar",
- "millón",
- "mimo",
- "mina",
- "minero",
- "mínimo",
- "minuto",
- "miope",
- "mirar",
- "misa",
- "miseria",
- "misil",
- "mismo",
- "mitad",
- "mito",
- "mochila",
- "moción",
- "moda",
- "modelo",
- "moho",
- "mojar",
- "molde",
- "moler",
- "molino",
- "momento",
- "momia",
- "monarca",
- "moneda",
- "monja",
- "monto",
- "moño",
- "morada",
- "morder",
- "moreno",
- "morir",
- "morro",
- "morsa",
- "mortal",
- "mosca",
- "mostrar",
- "motivo",
- "mover",
- "móvil",
- "mozo",
- "mucho",
- "mudar",
- "mueble",
- "muela",
- "muerte",
- "muestra",
- "mugre",
- "mujer",
- "mula",
- "muleta",
- "multa",
- "mundo",
- "muñeca",
- "mural",
- "muro",
- "músculo",
- "museo",
- "musgo",
- "música",
- "muslo",
- "nácar",
- "nación",
- "nadar",
- "naipe",
- "naranja",
- "nariz",
- "narrar",
- "nasal",
- "natal",
- "nativo",
- "natural",
- "náusea",
- "naval",
- "nave",
- "navidad",
- "necio",
- "néctar",
- "negar",
- "negocio",
- "negro",
- "neón",
- "nervio",
- "neto",
- "neutro",
- "nevar",
- "nevera",
- "nicho",
- "nido",
- "niebla",
- "nieto",
- "niñez",
- "niño",
- "nítido",
- "nivel",
- "nobleza",
- "noche",
- "nómina",
- "noria",
- "norma",
- "norte",
- "nota",
- "noticia",
- "novato",
- "novela",
- "novio",
- "nube",
- "nuca",
- "núcleo",
- "nudillo",
- "nudo",
- "nuera",
- "nueve",
- "nuez",
- "nulo",
- "número",
- "nutria",
- "oasis",
- "obeso",
- "obispo",
- "objeto",
- "obra",
- "obrero",
- "observar",
- "obtener",
- "obvio",
- "oca",
- "ocaso",
- "océano",
- "ochenta",
- "ocho",
- "ocio",
- "ocre",
- "octavo",
- "octubre",
- "oculto",
- "ocupar",
- "ocurrir",
- "odiar",
- "odio",
- "odisea",
- "oeste",
- "ofensa",
- "oferta",
- "oficio",
- "ofrecer",
- "ogro",
- "oído",
- "oír",
- "ojo",
- "ola",
- "oleada",
- "olfato",
- "olivo",
- "olla",
- "olmo",
- "olor",
- "olvido",
- "ombligo",
- "onda",
- "onza",
- "opaco",
- "opción",
- "ópera",
- "opinar",
- "oponer",
- "optar",
- "óptica",
- "opuesto",
- "oración",
- "orador",
- "oral",
- "órbita",
- "orca",
- "orden",
- "oreja",
- "órgano",
- "orgía",
- "orgullo",
- "oriente",
- "origen",
- "orilla",
- "oro",
- "orquesta",
- "oruga",
- "osadía",
- "oscuro",
- "osezno",
- "oso",
- "ostra",
- "otoño",
- "otro",
- "oveja",
- "óvulo",
- "óxido",
- "oxígeno",
- "oyente",
- "ozono",
- "pacto",
- "padre",
- "paella",
- "página",
- "pago",
- "país",
- "pájaro",
- "palabra",
- "palco",
- "paleta",
- "pálido",
- "palma",
- "paloma",
- "palpar",
- "pan",
- "panal",
- "pánico",
- "pantera",
- "pañuelo",
- "papá",
- "papel",
- "papilla",
- "paquete",
- "parar",
- "parcela",
- "pared",
- "parir",
- "paro",
- "párpado",
- "parque",
- "párrafo",
- "parte",
- "pasar",
- "paseo",
- "pasión",
- "paso",
- "pasta",
- "pata",
- "patio",
- "patria",
- "pausa",
- "pauta",
- "pavo",
- "payaso",
- "peatón",
- "pecado",
- "pecera",
- "pecho",
- "pedal",
- "pedir",
- "pegar",
- "peine",
- "pelar",
- "peldaño",
- "pelea",
- "peligro",
- "pellejo",
- "pelo",
- "peluca",
- "pena",
- "pensar",
- "peñón",
- "peón",
- "peor",
- "pepino",
- "pequeño",
- "pera",
- "percha",
- "perder",
- "pereza",
- "perfil",
- "perico",
- "perla",
- "permiso",
- "perro",
- "persona",
- "pesa",
- "pesca",
- "pésimo",
- "pestaña",
- "pétalo",
- "petróleo",
- "pez",
- "pezuña",
- "picar",
- "pichón",
- "pie",
- "piedra",
- "pierna",
- "pieza",
- "pijama",
- "pilar",
- "piloto",
- "pimienta",
- "pino",
- "pintor",
- "pinza",
- "piña",
- "piojo",
- "pipa",
- "pirata",
- "pisar",
- "piscina",
- "piso",
- "pista",
- "pitón",
- "pizca",
- "placa",
- "plan",
- "plata",
- "playa",
- "plaza",
- "pleito",
- "pleno",
- "plomo",
- "pluma",
- "plural",
- "pobre",
- "poco",
- "poder",
- "podio",
- "poema",
- "poesía",
- "poeta",
- "polen",
- "policía",
- "pollo",
- "polvo",
- "pomada",
- "pomelo",
- "pomo",
- "pompa",
- "poner",
- "porción",
- "portal",
- "posada",
- "poseer",
- "posible",
- "poste",
- "potencia",
- "potro",
- "pozo",
- "prado",
- "precoz",
- "pregunta",
- "premio",
- "prensa",
- "preso",
- "previo",
- "primo",
- "príncipe",
- "prisión",
- "privar",
- "proa",
- "probar",
- "proceso",
- "producto",
- "proeza",
- "profesor",
- "programa",
- "prole",
- "promesa",
- "pronto",
- "propio",
- "próximo",
- "prueba",
- "público",
- "puchero",
- "pudor",
- "pueblo",
- "puerta",
- "puesto",
- "pulga",
- "pulir",
- "pulmón",
- "pulpo",
- "pulso",
- "puma",
- "punto",
- "puñal",
- "puño",
- "pupa",
- "pupila",
- "puré",
- "quedar",
- "queja",
- "quemar",
- "querer",
- "queso",
- "quieto",
- "química",
- "quince",
- "quitar",
- "rábano",
- "rabia",
- "rabo",
- "ración",
- "radical",
- "raíz",
- "rama",
- "rampa",
- "rancho",
- "rango",
- "rapaz",
- "rápido",
- "rapto",
- "rasgo",
- "raspa",
- "rato",
- "rayo",
- "raza",
- "razón",
- "reacción",
- "realidad",
- "rebaño",
- "rebote",
- "recaer",
- "receta",
- "rechazo",
- "recoger",
- "recreo",
- "recto",
- "recurso",
- "red",
- "redondo",
- "reducir",
- "reflejo",
- "reforma",
- "refrán",
- "refugio",
- "regalo",
- "regir",
- "regla",
- "regreso",
- "rehén",
- "reino",
- "reír",
- "reja",
- "relato",
- "relevo",
- "relieve",
- "relleno",
- "reloj",
- "remar",
- "remedio",
- "remo",
- "rencor",
- "rendir",
- "renta",
- "reparto",
- "repetir",
- "reposo",
- "reptil",
- "res",
- "rescate",
- "resina",
- "respeto",
- "resto",
- "resumen",
- "retiro",
- "retorno",
- "retrato",
- "reunir",
- "revés",
- "revista",
- "rey",
- "rezar",
- "rico",
- "riego",
- "rienda",
- "riesgo",
- "rifa",
- "rígido",
- "rigor",
- "rincón",
- "riñón",
- "río",
- "riqueza",
- "risa",
- "ritmo",
- "rito",
- "rizo",
- "roble",
- "roce",
- "rociar",
- "rodar",
- "rodeo",
- "rodilla",
- "roer",
- "rojizo",
- "rojo",
- "romero",
- "romper",
- "ron",
- "ronco",
- "ronda",
- "ropa",
- "ropero",
- "rosa",
- "rosca",
- "rostro",
- "rotar",
- "rubí",
- "rubor",
- "rudo",
- "rueda",
- "rugir",
- "ruido",
- "ruina",
- "ruleta",
- "rulo",
- "rumbo",
- "rumor",
- "ruptura",
- "ruta",
- "rutina",
- "sábado",
- "saber",
- "sabio",
- "sable",
- "sacar",
- "sagaz",
- "sagrado",
- "sala",
- "saldo",
- "salero",
- "salir",
- "salmón",
- "salón",
- "salsa",
- "salto",
- "salud",
- "salvar",
- "samba",
- "sanción",
- "sandía",
- "sanear",
- "sangre",
- "sanidad",
- "sano",
- "santo",
- "sapo",
- "saque",
- "sardina",
- "sartén",
- "sastre",
- "satán",
- "sauna",
- "saxofón",
- "sección",
- "seco",
- "secreto",
- "secta",
- "sed",
- "seguir",
- "seis",
- "sello",
- "selva",
- "semana",
- "semilla",
- "senda",
- "sensor",
- "señal",
- "señor",
- "separar",
- "sepia",
- "sequía",
- "ser",
- "serie",
- "sermón",
- "servir",
- "sesenta",
- "sesión",
- "seta",
- "setenta",
- "severo",
- "sexo",
- "sexto",
- "sidra",
- "siesta",
- "siete",
- "siglo",
- "signo",
- "sílaba",
- "silbar",
- "silencio",
- "silla",
- "símbolo",
- "simio",
- "sirena",
- "sistema",
- "sitio",
- "situar",
- "sobre",
- "socio",
- "sodio",
- "sol",
- "solapa",
- "soldado",
- "soledad",
- "sólido",
- "soltar",
- "solución",
- "sombra",
- "sondeo",
- "sonido",
- "sonoro",
- "sonrisa",
- "sopa",
- "soplar",
- "soporte",
- "sordo",
- "sorpresa",
- "sorteo",
- "sostén",
- "sótano",
- "suave",
- "subir",
- "suceso",
- "sudor",
- "suegra",
- "suelo",
- "sueño",
- "suerte",
- "sufrir",
- "sujeto",
- "sultán",
- "sumar",
- "superar",
- "suplir",
- "suponer",
- "supremo",
- "sur",
- "surco",
- "sureño",
- "surgir",
- "susto",
- "sutil",
- "tabaco",
- "tabique",
- "tabla",
- "tabú",
- "taco",
- "tacto",
- "tajo",
- "talar",
- "talco",
- "talento",
- "talla",
- "talón",
- "tamaño",
- "tambor",
- "tango",
- "tanque",
- "tapa",
- "tapete",
- "tapia",
- "tapón",
- "taquilla",
- "tarde",
- "tarea",
- "tarifa",
- "tarjeta",
- "tarot",
- "tarro",
- "tarta",
- "tatuaje",
- "tauro",
- "taza",
- "tazón",
- "teatro",
- "techo",
- "tecla",
- "técnica",
- "tejado",
- "tejer",
- "tejido",
- "tela",
- "teléfono",
- "tema",
- "temor",
- "templo",
- "tenaz",
- "tender",
- "tener",
- "tenis",
- "tenso",
- "teoría",
- "terapia",
- "terco",
- "término",
- "ternura",
- "terror",
- "tesis",
- "tesoro",
- "testigo",
- "tetera",
- "texto",
- "tez",
- "tibio",
- "tiburón",
- "tiempo",
- "tienda",
- "tierra",
- "tieso",
- "tigre",
- "tijera",
- "tilde",
- "timbre",
- "tímido",
- "timo",
- "tinta",
- "tío",
- "típico",
- "tipo",
- "tira",
- "tirón",
- "titán",
- "títere",
- "título",
- "tiza",
- "toalla",
- "tobillo",
- "tocar",
- "tocino",
- "todo",
- "toga",
- "toldo",
- "tomar",
- "tono",
- "tonto",
- "topar",
- "tope",
- "toque",
- "tórax",
- "torero",
- "tormenta",
- "torneo",
- "toro",
- "torpedo",
- "torre",
- "torso",
- "tortuga",
- "tos",
- "tosco",
- "toser",
- "tóxico",
- "trabajo",
- "tractor",
- "traer",
- "tráfico",
- "trago",
- "traje",
- "tramo",
- "trance",
- "trato",
- "trauma",
- "trazar",
- "trébol",
- "tregua",
- "treinta",
- "tren",
- "trepar",
- "tres",
- "tribu",
- "trigo",
- "tripa",
- "triste",
- "triunfo",
- "trofeo",
- "trompa",
- "tronco",
- "tropa",
- "trote",
- "trozo",
- "truco",
- "trueno",
- "trufa",
- "tubería",
- "tubo",
- "tuerto",
- "tumba",
- "tumor",
- "túnel",
- "túnica",
- "turbina",
- "turismo",
- "turno",
- "tutor",
- "ubicar",
- "úlcera",
- "umbral",
- "unidad",
- "unir",
- "universo",
- "uno",
- "untar",
- "uña",
- "urbano",
- "urbe",
- "urgente",
- "urna",
- "usar",
- "usuario",
- "útil",
- "utopía",
- "uva",
- "vaca",
- "vacío",
- "vacuna",
- "vagar",
- "vago",
- "vaina",
- "vajilla",
- "vale",
- "válido",
- "valle",
- "valor",
- "válvula",
- "vampiro",
- "vara",
- "variar",
- "varón",
- "vaso",
- "vecino",
- "vector",
- "vehículo",
- "veinte",
- "vejez",
- "vela",
- "velero",
- "veloz",
- "vena",
- "vencer",
- "venda",
- "veneno",
- "vengar",
- "venir",
- "venta",
- "venus",
- "ver",
- "verano",
- "verbo",
- "verde",
- "vereda",
- "verja",
- "verso",
- "verter",
- "vía",
- "viaje",
- "vibrar",
- "vicio",
- "víctima",
- "vida",
- "vídeo",
- "vidrio",
- "viejo",
- "viernes",
- "vigor",
- "vil",
- "villa",
- "vinagre",
- "vino",
- "viñedo",
- "violín",
- "viral",
- "virgo",
- "virtud",
- "visor",
- "víspera",
- "vista",
- "vitamina",
- "viudo",
- "vivaz",
- "vivero",
- "vivir",
- "vivo",
- "volcán",
- "volumen",
- "volver",
- "voraz",
- "votar",
- "voto",
- "voz",
- "vuelo",
- "vulgar",
- "yacer",
- "yate",
- "yegua",
- "yema",
- "yerno",
- "yeso",
- "yodo",
- "yoga",
- "yogur",
- "zafiro",
- "zanja",
- "zapato",
- "zarza",
- "zona",
- "zorro",
- "zumo",
- "zurdo",
- )
-}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt b/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt
deleted file mode 100644
index a138d14bf..000000000
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt
+++ /dev/null
@@ -1,2059 +0,0 @@
-package io.iohk.atala.prism.apollo.utils.bip39.wordlists
-
-import kotlin.js.ExperimentalJsExport
-import kotlin.js.JsExport
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-internal object MnemonicCodeTraditionalChinese {
- val wordList: List = listOf(
- "的",
- "一",
- "是",
- "在",
- "不",
- "了",
- "有",
- "和",
- "人",
- "這",
- "中",
- "大",
- "為",
- "上",
- "個",
- "國",
- "我",
- "以",
- "要",
- "他",
- "時",
- "來",
- "用",
- "們",
- "生",
- "到",
- "作",
- "地",
- "於",
- "出",
- "就",
- "分",
- "對",
- "成",
- "會",
- "可",
- "主",
- "發",
- "年",
- "動",
- "同",
- "工",
- "也",
- "能",
- "下",
- "過",
- "子",
- "說",
- "產",
- "種",
- "面",
- "而",
- "方",
- "後",
- "多",
- "定",
- "行",
- "學",
- "法",
- "所",
- "民",
- "得",
- "經",
- "十",
- "三",
- "之",
- "進",
- "著",
- "等",
- "部",
- "度",
- "家",
- "電",
- "力",
- "裡",
- "如",
- "水",
- "化",
- "高",
- "自",
- "二",
- "理",
- "起",
- "小",
- "物",
- "現",
- "實",
- "加",
- "量",
- "都",
- "兩",
- "體",
- "制",
- "機",
- "當",
- "使",
- "點",
- "從",
- "業",
- "本",
- "去",
- "把",
- "性",
- "好",
- "應",
- "開",
- "它",
- "合",
- "還",
- "因",
- "由",
- "其",
- "些",
- "然",
- "前",
- "外",
- "天",
- "政",
- "四",
- "日",
- "那",
- "社",
- "義",
- "事",
- "平",
- "形",
- "相",
- "全",
- "表",
- "間",
- "樣",
- "與",
- "關",
- "各",
- "重",
- "新",
- "線",
- "內",
- "數",
- "正",
- "心",
- "反",
- "你",
- "明",
- "看",
- "原",
- "又",
- "麼",
- "利",
- "比",
- "或",
- "但",
- "質",
- "氣",
- "第",
- "向",
- "道",
- "命",
- "此",
- "變",
- "條",
- "只",
- "沒",
- "結",
- "解",
- "問",
- "意",
- "建",
- "月",
- "公",
- "無",
- "系",
- "軍",
- "很",
- "情",
- "者",
- "最",
- "立",
- "代",
- "想",
- "已",
- "通",
- "並",
- "提",
- "直",
- "題",
- "黨",
- "程",
- "展",
- "五",
- "果",
- "料",
- "象",
- "員",
- "革",
- "位",
- "入",
- "常",
- "文",
- "總",
- "次",
- "品",
- "式",
- "活",
- "設",
- "及",
- "管",
- "特",
- "件",
- "長",
- "求",
- "老",
- "頭",
- "基",
- "資",
- "邊",
- "流",
- "路",
- "級",
- "少",
- "圖",
- "山",
- "統",
- "接",
- "知",
- "較",
- "將",
- "組",
- "見",
- "計",
- "別",
- "她",
- "手",
- "角",
- "期",
- "根",
- "論",
- "運",
- "農",
- "指",
- "幾",
- "九",
- "區",
- "強",
- "放",
- "決",
- "西",
- "被",
- "幹",
- "做",
- "必",
- "戰",
- "先",
- "回",
- "則",
- "任",
- "取",
- "據",
- "處",
- "隊",
- "南",
- "給",
- "色",
- "光",
- "門",
- "即",
- "保",
- "治",
- "北",
- "造",
- "百",
- "規",
- "熱",
- "領",
- "七",
- "海",
- "口",
- "東",
- "導",
- "器",
- "壓",
- "志",
- "世",
- "金",
- "增",
- "爭",
- "濟",
- "階",
- "油",
- "思",
- "術",
- "極",
- "交",
- "受",
- "聯",
- "什",
- "認",
- "六",
- "共",
- "權",
- "收",
- "證",
- "改",
- "清",
- "美",
- "再",
- "採",
- "轉",
- "更",
- "單",
- "風",
- "切",
- "打",
- "白",
- "教",
- "速",
- "花",
- "帶",
- "安",
- "場",
- "身",
- "車",
- "例",
- "真",
- "務",
- "具",
- "萬",
- "每",
- "目",
- "至",
- "達",
- "走",
- "積",
- "示",
- "議",
- "聲",
- "報",
- "鬥",
- "完",
- "類",
- "八",
- "離",
- "華",
- "名",
- "確",
- "才",
- "科",
- "張",
- "信",
- "馬",
- "節",
- "話",
- "米",
- "整",
- "空",
- "元",
- "況",
- "今",
- "集",
- "溫",
- "傳",
- "土",
- "許",
- "步",
- "群",
- "廣",
- "石",
- "記",
- "需",
- "段",
- "研",
- "界",
- "拉",
- "林",
- "律",
- "叫",
- "且",
- "究",
- "觀",
- "越",
- "織",
- "裝",
- "影",
- "算",
- "低",
- "持",
- "音",
- "眾",
- "書",
- "布",
- "复",
- "容",
- "兒",
- "須",
- "際",
- "商",
- "非",
- "驗",
- "連",
- "斷",
- "深",
- "難",
- "近",
- "礦",
- "千",
- "週",
- "委",
- "素",
- "技",
- "備",
- "半",
- "辦",
- "青",
- "省",
- "列",
- "習",
- "響",
- "約",
- "支",
- "般",
- "史",
- "感",
- "勞",
- "便",
- "團",
- "往",
- "酸",
- "歷",
- "市",
- "克",
- "何",
- "除",
- "消",
- "構",
- "府",
- "稱",
- "太",
- "準",
- "精",
- "值",
- "號",
- "率",
- "族",
- "維",
- "劃",
- "選",
- "標",
- "寫",
- "存",
- "候",
- "毛",
- "親",
- "快",
- "效",
- "斯",
- "院",
- "查",
- "江",
- "型",
- "眼",
- "王",
- "按",
- "格",
- "養",
- "易",
- "置",
- "派",
- "層",
- "片",
- "始",
- "卻",
- "專",
- "狀",
- "育",
- "廠",
- "京",
- "識",
- "適",
- "屬",
- "圓",
- "包",
- "火",
- "住",
- "調",
- "滿",
- "縣",
- "局",
- "照",
- "參",
- "紅",
- "細",
- "引",
- "聽",
- "該",
- "鐵",
- "價",
- "嚴",
- "首",
- "底",
- "液",
- "官",
- "德",
- "隨",
- "病",
- "蘇",
- "失",
- "爾",
- "死",
- "講",
- "配",
- "女",
- "黃",
- "推",
- "顯",
- "談",
- "罪",
- "神",
- "藝",
- "呢",
- "席",
- "含",
- "企",
- "望",
- "密",
- "批",
- "營",
- "項",
- "防",
- "舉",
- "球",
- "英",
- "氧",
- "勢",
- "告",
- "李",
- "台",
- "落",
- "木",
- "幫",
- "輪",
- "破",
- "亞",
- "師",
- "圍",
- "注",
- "遠",
- "字",
- "材",
- "排",
- "供",
- "河",
- "態",
- "封",
- "另",
- "施",
- "減",
- "樹",
- "溶",
- "怎",
- "止",
- "案",
- "言",
- "士",
- "均",
- "武",
- "固",
- "葉",
- "魚",
- "波",
- "視",
- "僅",
- "費",
- "緊",
- "愛",
- "左",
- "章",
- "早",
- "朝",
- "害",
- "續",
- "輕",
- "服",
- "試",
- "食",
- "充",
- "兵",
- "源",
- "判",
- "護",
- "司",
- "足",
- "某",
- "練",
- "差",
- "致",
- "板",
- "田",
- "降",
- "黑",
- "犯",
- "負",
- "擊",
- "范",
- "繼",
- "興",
- "似",
- "餘",
- "堅",
- "曲",
- "輸",
- "修",
- "故",
- "城",
- "夫",
- "夠",
- "送",
- "筆",
- "船",
- "佔",
- "右",
- "財",
- "吃",
- "富",
- "春",
- "職",
- "覺",
- "漢",
- "畫",
- "功",
- "巴",
- "跟",
- "雖",
- "雜",
- "飛",
- "檢",
- "吸",
- "助",
- "昇",
- "陽",
- "互",
- "初",
- "創",
- "抗",
- "考",
- "投",
- "壞",
- "策",
- "古",
- "徑",
- "換",
- "未",
- "跑",
- "留",
- "鋼",
- "曾",
- "端",
- "責",
- "站",
- "簡",
- "述",
- "錢",
- "副",
- "盡",
- "帝",
- "射",
- "草",
- "衝",
- "承",
- "獨",
- "令",
- "限",
- "阿",
- "宣",
- "環",
- "雙",
- "請",
- "超",
- "微",
- "讓",
- "控",
- "州",
- "良",
- "軸",
- "找",
- "否",
- "紀",
- "益",
- "依",
- "優",
- "頂",
- "礎",
- "載",
- "倒",
- "房",
- "突",
- "坐",
- "粉",
- "敵",
- "略",
- "客",
- "袁",
- "冷",
- "勝",
- "絕",
- "析",
- "塊",
- "劑",
- "測",
- "絲",
- "協",
- "訴",
- "念",
- "陳",
- "仍",
- "羅",
- "鹽",
- "友",
- "洋",
- "錯",
- "苦",
- "夜",
- "刑",
- "移",
- "頻",
- "逐",
- "靠",
- "混",
- "母",
- "短",
- "皮",
- "終",
- "聚",
- "汽",
- "村",
- "雲",
- "哪",
- "既",
- "距",
- "衛",
- "停",
- "烈",
- "央",
- "察",
- "燒",
- "迅",
- "境",
- "若",
- "印",
- "洲",
- "刻",
- "括",
- "激",
- "孔",
- "搞",
- "甚",
- "室",
- "待",
- "核",
- "校",
- "散",
- "侵",
- "吧",
- "甲",
- "遊",
- "久",
- "菜",
- "味",
- "舊",
- "模",
- "湖",
- "貨",
- "損",
- "預",
- "阻",
- "毫",
- "普",
- "穩",
- "乙",
- "媽",
- "植",
- "息",
- "擴",
- "銀",
- "語",
- "揮",
- "酒",
- "守",
- "拿",
- "序",
- "紙",
- "醫",
- "缺",
- "雨",
- "嗎",
- "針",
- "劉",
- "啊",
- "急",
- "唱",
- "誤",
- "訓",
- "願",
- "審",
- "附",
- "獲",
- "茶",
- "鮮",
- "糧",
- "斤",
- "孩",
- "脫",
- "硫",
- "肥",
- "善",
- "龍",
- "演",
- "父",
- "漸",
- "血",
- "歡",
- "械",
- "掌",
- "歌",
- "沙",
- "剛",
- "攻",
- "謂",
- "盾",
- "討",
- "晚",
- "粒",
- "亂",
- "燃",
- "矛",
- "乎",
- "殺",
- "藥",
- "寧",
- "魯",
- "貴",
- "鐘",
- "煤",
- "讀",
- "班",
- "伯",
- "香",
- "介",
- "迫",
- "句",
- "豐",
- "培",
- "握",
- "蘭",
- "擔",
- "弦",
- "蛋",
- "沉",
- "假",
- "穿",
- "執",
- "答",
- "樂",
- "誰",
- "順",
- "煙",
- "縮",
- "徵",
- "臉",
- "喜",
- "松",
- "腳",
- "困",
- "異",
- "免",
- "背",
- "星",
- "福",
- "買",
- "染",
- "井",
- "概",
- "慢",
- "怕",
- "磁",
- "倍",
- "祖",
- "皇",
- "促",
- "靜",
- "補",
- "評",
- "翻",
- "肉",
- "踐",
- "尼",
- "衣",
- "寬",
- "揚",
- "棉",
- "希",
- "傷",
- "操",
- "垂",
- "秋",
- "宜",
- "氫",
- "套",
- "督",
- "振",
- "架",
- "亮",
- "末",
- "憲",
- "慶",
- "編",
- "牛",
- "觸",
- "映",
- "雷",
- "銷",
- "詩",
- "座",
- "居",
- "抓",
- "裂",
- "胞",
- "呼",
- "娘",
- "景",
- "威",
- "綠",
- "晶",
- "厚",
- "盟",
- "衡",
- "雞",
- "孫",
- "延",
- "危",
- "膠",
- "屋",
- "鄉",
- "臨",
- "陸",
- "顧",
- "掉",
- "呀",
- "燈",
- "歲",
- "措",
- "束",
- "耐",
- "劇",
- "玉",
- "趙",
- "跳",
- "哥",
- "季",
- "課",
- "凱",
- "胡",
- "額",
- "款",
- "紹",
- "卷",
- "齊",
- "偉",
- "蒸",
- "殖",
- "永",
- "宗",
- "苗",
- "川",
- "爐",
- "岩",
- "弱",
- "零",
- "楊",
- "奏",
- "沿",
- "露",
- "桿",
- "探",
- "滑",
- "鎮",
- "飯",
- "濃",
- "航",
- "懷",
- "趕",
- "庫",
- "奪",
- "伊",
- "靈",
- "稅",
- "途",
- "滅",
- "賽",
- "歸",
- "召",
- "鼓",
- "播",
- "盤",
- "裁",
- "險",
- "康",
- "唯",
- "錄",
- "菌",
- "純",
- "借",
- "糖",
- "蓋",
- "橫",
- "符",
- "私",
- "努",
- "堂",
- "域",
- "槍",
- "潤",
- "幅",
- "哈",
- "竟",
- "熟",
- "蟲",
- "澤",
- "腦",
- "壤",
- "碳",
- "歐",
- "遍",
- "側",
- "寨",
- "敢",
- "徹",
- "慮",
- "斜",
- "薄",
- "庭",
- "納",
- "彈",
- "飼",
- "伸",
- "折",
- "麥",
- "濕",
- "暗",
- "荷",
- "瓦",
- "塞",
- "床",
- "築",
- "惡",
- "戶",
- "訪",
- "塔",
- "奇",
- "透",
- "梁",
- "刀",
- "旋",
- "跡",
- "卡",
- "氯",
- "遇",
- "份",
- "毒",
- "泥",
- "退",
- "洗",
- "擺",
- "灰",
- "彩",
- "賣",
- "耗",
- "夏",
- "擇",
- "忙",
- "銅",
- "獻",
- "硬",
- "予",
- "繁",
- "圈",
- "雪",
- "函",
- "亦",
- "抽",
- "篇",
- "陣",
- "陰",
- "丁",
- "尺",
- "追",
- "堆",
- "雄",
- "迎",
- "泛",
- "爸",
- "樓",
- "避",
- "謀",
- "噸",
- "野",
- "豬",
- "旗",
- "累",
- "偏",
- "典",
- "館",
- "索",
- "秦",
- "脂",
- "潮",
- "爺",
- "豆",
- "忽",
- "托",
- "驚",
- "塑",
- "遺",
- "愈",
- "朱",
- "替",
- "纖",
- "粗",
- "傾",
- "尚",
- "痛",
- "楚",
- "謝",
- "奮",
- "購",
- "磨",
- "君",
- "池",
- "旁",
- "碎",
- "骨",
- "監",
- "捕",
- "弟",
- "暴",
- "割",
- "貫",
- "殊",
- "釋",
- "詞",
- "亡",
- "壁",
- "頓",
- "寶",
- "午",
- "塵",
- "聞",
- "揭",
- "炮",
- "殘",
- "冬",
- "橋",
- "婦",
- "警",
- "綜",
- "招",
- "吳",
- "付",
- "浮",
- "遭",
- "徐",
- "您",
- "搖",
- "谷",
- "贊",
- "箱",
- "隔",
- "訂",
- "男",
- "吹",
- "園",
- "紛",
- "唐",
- "敗",
- "宋",
- "玻",
- "巨",
- "耕",
- "坦",
- "榮",
- "閉",
- "灣",
- "鍵",
- "凡",
- "駐",
- "鍋",
- "救",
- "恩",
- "剝",
- "凝",
- "鹼",
- "齒",
- "截",
- "煉",
- "麻",
- "紡",
- "禁",
- "廢",
- "盛",
- "版",
- "緩",
- "淨",
- "睛",
- "昌",
- "婚",
- "涉",
- "筒",
- "嘴",
- "插",
- "岸",
- "朗",
- "莊",
- "街",
- "藏",
- "姑",
- "貿",
- "腐",
- "奴",
- "啦",
- "慣",
- "乘",
- "夥",
- "恢",
- "勻",
- "紗",
- "扎",
- "辯",
- "耳",
- "彪",
- "臣",
- "億",
- "璃",
- "抵",
- "脈",
- "秀",
- "薩",
- "俄",
- "網",
- "舞",
- "店",
- "噴",
- "縱",
- "寸",
- "汗",
- "掛",
- "洪",
- "賀",
- "閃",
- "柬",
- "爆",
- "烯",
- "津",
- "稻",
- "牆",
- "軟",
- "勇",
- "像",
- "滾",
- "厘",
- "蒙",
- "芳",
- "肯",
- "坡",
- "柱",
- "盪",
- "腿",
- "儀",
- "旅",
- "尾",
- "軋",
- "冰",
- "貢",
- "登",
- "黎",
- "削",
- "鑽",
- "勒",
- "逃",
- "障",
- "氨",
- "郭",
- "峰",
- "幣",
- "港",
- "伏",
- "軌",
- "畝",
- "畢",
- "擦",
- "莫",
- "刺",
- "浪",
- "秘",
- "援",
- "株",
- "健",
- "售",
- "股",
- "島",
- "甘",
- "泡",
- "睡",
- "童",
- "鑄",
- "湯",
- "閥",
- "休",
- "匯",
- "舍",
- "牧",
- "繞",
- "炸",
- "哲",
- "磷",
- "績",
- "朋",
- "淡",
- "尖",
- "啟",
- "陷",
- "柴",
- "呈",
- "徒",
- "顏",
- "淚",
- "稍",
- "忘",
- "泵",
- "藍",
- "拖",
- "洞",
- "授",
- "鏡",
- "辛",
- "壯",
- "鋒",
- "貧",
- "虛",
- "彎",
- "摩",
- "泰",
- "幼",
- "廷",
- "尊",
- "窗",
- "綱",
- "弄",
- "隸",
- "疑",
- "氏",
- "宮",
- "姐",
- "震",
- "瑞",
- "怪",
- "尤",
- "琴",
- "循",
- "描",
- "膜",
- "違",
- "夾",
- "腰",
- "緣",
- "珠",
- "窮",
- "森",
- "枝",
- "竹",
- "溝",
- "催",
- "繩",
- "憶",
- "邦",
- "剩",
- "幸",
- "漿",
- "欄",
- "擁",
- "牙",
- "貯",
- "禮",
- "濾",
- "鈉",
- "紋",
- "罷",
- "拍",
- "咱",
- "喊",
- "袖",
- "埃",
- "勤",
- "罰",
- "焦",
- "潛",
- "伍",
- "墨",
- "欲",
- "縫",
- "姓",
- "刊",
- "飽",
- "仿",
- "獎",
- "鋁",
- "鬼",
- "麗",
- "跨",
- "默",
- "挖",
- "鏈",
- "掃",
- "喝",
- "袋",
- "炭",
- "污",
- "幕",
- "諸",
- "弧",
- "勵",
- "梅",
- "奶",
- "潔",
- "災",
- "舟",
- "鑑",
- "苯",
- "訟",
- "抱",
- "毀",
- "懂",
- "寒",
- "智",
- "埔",
- "寄",
- "屆",
- "躍",
- "渡",
- "挑",
- "丹",
- "艱",
- "貝",
- "碰",
- "拔",
- "爹",
- "戴",
- "碼",
- "夢",
- "芽",
- "熔",
- "赤",
- "漁",
- "哭",
- "敬",
- "顆",
- "奔",
- "鉛",
- "仲",
- "虎",
- "稀",
- "妹",
- "乏",
- "珍",
- "申",
- "桌",
- "遵",
- "允",
- "隆",
- "螺",
- "倉",
- "魏",
- "銳",
- "曉",
- "氮",
- "兼",
- "隱",
- "礙",
- "赫",
- "撥",
- "忠",
- "肅",
- "缸",
- "牽",
- "搶",
- "博",
- "巧",
- "殼",
- "兄",
- "杜",
- "訊",
- "誠",
- "碧",
- "祥",
- "柯",
- "頁",
- "巡",
- "矩",
- "悲",
- "灌",
- "齡",
- "倫",
- "票",
- "尋",
- "桂",
- "鋪",
- "聖",
- "恐",
- "恰",
- "鄭",
- "趣",
- "抬",
- "荒",
- "騰",
- "貼",
- "柔",
- "滴",
- "猛",
- "闊",
- "輛",
- "妻",
- "填",
- "撤",
- "儲",
- "簽",
- "鬧",
- "擾",
- "紫",
- "砂",
- "遞",
- "戲",
- "吊",
- "陶",
- "伐",
- "餵",
- "療",
- "瓶",
- "婆",
- "撫",
- "臂",
- "摸",
- "忍",
- "蝦",
- "蠟",
- "鄰",
- "胸",
- "鞏",
- "擠",
- "偶",
- "棄",
- "槽",
- "勁",
- "乳",
- "鄧",
- "吉",
- "仁",
- "爛",
- "磚",
- "租",
- "烏",
- "艦",
- "伴",
- "瓜",
- "淺",
- "丙",
- "暫",
- "燥",
- "橡",
- "柳",
- "迷",
- "暖",
- "牌",
- "秧",
- "膽",
- "詳",
- "簧",
- "踏",
- "瓷",
- "譜",
- "呆",
- "賓",
- "糊",
- "洛",
- "輝",
- "憤",
- "競",
- "隙",
- "怒",
- "粘",
- "乃",
- "緒",
- "肩",
- "籍",
- "敏",
- "塗",
- "熙",
- "皆",
- "偵",
- "懸",
- "掘",
- "享",
- "糾",
- "醒",
- "狂",
- "鎖",
- "淀",
- "恨",
- "牲",
- "霸",
- "爬",
- "賞",
- "逆",
- "玩",
- "陵",
- "祝",
- "秒",
- "浙",
- "貌",
- "役",
- "彼",
- "悉",
- "鴨",
- "趨",
- "鳳",
- "晨",
- "畜",
- "輩",
- "秩",
- "卵",
- "署",
- "梯",
- "炎",
- "灘",
- "棋",
- "驅",
- "篩",
- "峽",
- "冒",
- "啥",
- "壽",
- "譯",
- "浸",
- "泉",
- "帽",
- "遲",
- "矽",
- "疆",
- "貸",
- "漏",
- "稿",
- "冠",
- "嫩",
- "脅",
- "芯",
- "牢",
- "叛",
- "蝕",
- "奧",
- "鳴",
- "嶺",
- "羊",
- "憑",
- "串",
- "塘",
- "繪",
- "酵",
- "融",
- "盆",
- "錫",
- "廟",
- "籌",
- "凍",
- "輔",
- "攝",
- "襲",
- "筋",
- "拒",
- "僚",
- "旱",
- "鉀",
- "鳥",
- "漆",
- "沈",
- "眉",
- "疏",
- "添",
- "棒",
- "穗",
- "硝",
- "韓",
- "逼",
- "扭",
- "僑",
- "涼",
- "挺",
- "碗",
- "栽",
- "炒",
- "杯",
- "患",
- "餾",
- "勸",
- "豪",
- "遼",
- "勃",
- "鴻",
- "旦",
- "吏",
- "拜",
- "狗",
- "埋",
- "輥",
- "掩",
- "飲",
- "搬",
- "罵",
- "辭",
- "勾",
- "扣",
- "估",
- "蔣",
- "絨",
- "霧",
- "丈",
- "朵",
- "姆",
- "擬",
- "宇",
- "輯",
- "陝",
- "雕",
- "償",
- "蓄",
- "崇",
- "剪",
- "倡",
- "廳",
- "咬",
- "駛",
- "薯",
- "刷",
- "斥",
- "番",
- "賦",
- "奉",
- "佛",
- "澆",
- "漫",
- "曼",
- "扇",
- "鈣",
- "桃",
- "扶",
- "仔",
- "返",
- "俗",
- "虧",
- "腔",
- "鞋",
- "棱",
- "覆",
- "框",
- "悄",
- "叔",
- "撞",
- "騙",
- "勘",
- "旺",
- "沸",
- "孤",
- "吐",
- "孟",
- "渠",
- "屈",
- "疾",
- "妙",
- "惜",
- "仰",
- "狠",
- "脹",
- "諧",
- "拋",
- "黴",
- "桑",
- "崗",
- "嘛",
- "衰",
- "盜",
- "滲",
- "臟",
- "賴",
- "湧",
- "甜",
- "曹",
- "閱",
- "肌",
- "哩",
- "厲",
- "烴",
- "緯",
- "毅",
- "昨",
- "偽",
- "症",
- "煮",
- "嘆",
- "釘",
- "搭",
- "莖",
- "籠",
- "酷",
- "偷",
- "弓",
- "錐",
- "恆",
- "傑",
- "坑",
- "鼻",
- "翼",
- "綸",
- "敘",
- "獄",
- "逮",
- "罐",
- "絡",
- "棚",
- "抑",
- "膨",
- "蔬",
- "寺",
- "驟",
- "穆",
- "冶",
- "枯",
- "冊",
- "屍",
- "凸",
- "紳",
- "坯",
- "犧",
- "焰",
- "轟",
- "欣",
- "晉",
- "瘦",
- "禦",
- "錠",
- "錦",
- "喪",
- "旬",
- "鍛",
- "壟",
- "搜",
- "撲",
- "邀",
- "亭",
- "酯",
- "邁",
- "舒",
- "脆",
- "酶",
- "閒",
- "憂",
- "酚",
- "頑",
- "羽",
- "漲",
- "卸",
- "仗",
- "陪",
- "闢",
- "懲",
- "杭",
- "姚",
- "肚",
- "捉",
- "飄",
- "漂",
- "昆",
- "欺",
- "吾",
- "郎",
- "烷",
- "汁",
- "呵",
- "飾",
- "蕭",
- "雅",
- "郵",
- "遷",
- "燕",
- "撒",
- "姻",
- "赴",
- "宴",
- "煩",
- "債",
- "帳",
- "斑",
- "鈴",
- "旨",
- "醇",
- "董",
- "餅",
- "雛",
- "姿",
- "拌",
- "傅",
- "腹",
- "妥",
- "揉",
- "賢",
- "拆",
- "歪",
- "葡",
- "胺",
- "丟",
- "浩",
- "徽",
- "昂",
- "墊",
- "擋",
- "覽",
- "貪",
- "慰",
- "繳",
- "汪",
- "慌",
- "馮",
- "諾",
- "姜",
- "誼",
- "兇",
- "劣",
- "誣",
- "耀",
- "昏",
- "躺",
- "盈",
- "騎",
- "喬",
- "溪",
- "叢",
- "盧",
- "抹",
- "悶",
- "諮",
- "刮",
- "駕",
- "纜",
- "悟",
- "摘",
- "鉺",
- "擲",
- "頗",
- "幻",
- "柄",
- "惠",
- "慘",
- "佳",
- "仇",
- "臘",
- "窩",
- "滌",
- "劍",
- "瞧",
- "堡",
- "潑",
- "蔥",
- "罩",
- "霍",
- "撈",
- "胎",
- "蒼",
- "濱",
- "倆",
- "捅",
- "湘",
- "砍",
- "霞",
- "邵",
- "萄",
- "瘋",
- "淮",
- "遂",
- "熊",
- "糞",
- "烘",
- "宿",
- "檔",
- "戈",
- "駁",
- "嫂",
- "裕",
- "徙",
- "箭",
- "捐",
- "腸",
- "撐",
- "曬",
- "辨",
- "殿",
- "蓮",
- "攤",
- "攪",
- "醬",
- "屏",
- "疫",
- "哀",
- "蔡",
- "堵",
- "沫",
- "皺",
- "暢",
- "疊",
- "閣",
- "萊",
- "敲",
- "轄",
- "鉤",
- "痕",
- "壩",
- "巷",
- "餓",
- "禍",
- "丘",
- "玄",
- "溜",
- "曰",
- "邏",
- "彭",
- "嘗",
- "卿",
- "妨",
- "艇",
- "吞",
- "韋",
- "怨",
- "矮",
- "歇",
- )
-}
diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt b/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt
deleted file mode 100644
index b79f12a07..000000000
--- a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt
+++ /dev/null
@@ -1,188 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-class TestPoint(val x: ByteArray, val y: ByteArray)
-
-object Secp256k1TestVectors {
- // Vectors from https://crypto.stackexchange.com/a/21206
- val vectors = listOf(
- TestPoint(
- "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798".decodeHex(),
- "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8".decodeHex()
- ),
- TestPoint(
- "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5".decodeHex(),
- "1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a".decodeHex()
- ),
- TestPoint(
- "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9".decodeHex(),
- "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672".decodeHex()
- ),
- TestPoint(
- "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4".decodeHex(),
- "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6".decodeHex()
- ),
- TestPoint(
- "fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556".decodeHex(),
- "ae12777aacfbb620f3be96017f45c560de80f0f6518fe4a03c870c36b075f297".decodeHex()
- ),
- TestPoint(
- "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc".decodeHex(),
- "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da".decodeHex()
- ),
- TestPoint(
- "2f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01".decodeHex(),
- "5c4da8a741539949293d082a132d13b4c2e213d6ba5b7617b5da2cb76cbde904".decodeHex()
- ),
- TestPoint(
- "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe".decodeHex(),
- "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37".decodeHex()
- ),
- TestPoint(
- "a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7".decodeHex(),
- "893aba425419bc27a3b6c7e693a24c696f794c2ed877a1593cbee53b037368d7".decodeHex()
- ),
- TestPoint(
- "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb".decodeHex(),
- "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b".decodeHex()
- ),
- TestPoint(
- "d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a".decodeHex(),
- "a9f34ffdc815e0d7a8b64537e17bd81579238c5dd9a86d526b051b13f4062327".decodeHex()
- ),
- TestPoint(
- "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8".decodeHex(),
- "0ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81".decodeHex()
- ),
- TestPoint(
- "499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4".decodeHex(),
- "cac2f6c4b54e855190f044e4a7b3d464464279c27a3f95bcc65f40d403a13f5b".decodeHex()
- ),
- TestPoint(
- "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e".decodeHex(),
- "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58".decodeHex()
- ),
- TestPoint(
- "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a".decodeHex(),
- "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821".decodeHex()
- ),
- TestPoint(
- "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34".decodeHex(),
- "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77".decodeHex()
- ),
- TestPoint(
- "5601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc".decodeHex(),
- "c136c1dc0cbeb930e9e298043589351d81d8e0bc736ae2a1f5192e5e8b061d58".decodeHex()
- ),
- TestPoint(
- "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c".decodeHex(),
- "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a".decodeHex()
- ),
- TestPoint(
- "4ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97".decodeHex(),
- "12ba26dcb10ec1625da61fa10a844c676162948271d96967450288ee9233dc3a".decodeHex()
- ),
- TestPoint(
- "a90cc3d3f3e146daadfc74ca1372207cb4b725ae708cef713a98edd73d99ef29".decodeHex(),
- "5a79d6b289610c68bc3b47f3d72f9788a26a06868b4d8e433e1e2ad76fb7dc76".decodeHex()
- ),
- TestPoint(
- "e5a2636bcfd412ebf36ec45b19bfb68a1bc5f8632e678132b885f7df99c5e9b3".decodeHex(),
- "736c1ce161ae27b405cafd2a7520370153c2c861ac51d6c1d5985d9606b45f39".decodeHex()
- ),
- TestPoint(
- "a6b594b38fb3e77c6edf78161fade2041f4e09fd8497db776e546c41567feb3c".decodeHex(),
- "71444009192228730cd8237a490feba2afe3d27d7cc1136bc97e439d13330d55".decodeHex()
- ),
- TestPoint(
- "00000000000000000000003b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63".decodeHex(),
- "3f3979bf72ae8202983dc989aec7f2ff2ed91bdd69ce02fc0700ca100e59ddf3".decodeHex()
- ),
- TestPoint(
- "e24ce4beee294aa6350faa67512b99d388693ae4e7f53d19882a6ea169fc1ce1".decodeHex(),
- "8b71e83545fc2b5872589f99d948c03108d36797c4de363ebd3ff6a9e1a95b10".decodeHex()
- ),
- TestPoint(
- "4ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97".decodeHex(),
- "ed45d9234ef13e9da259e05ef57bb3989e9d6b7d8e269698bafd77106dcc1ff5".decodeHex()
- ),
- TestPoint(
- "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c".decodeHex(),
- "7a17643fc86ba26c4cbcf7c4a5e379ece5fe09f3afd9689c4a8f37aa1a3f60b5".decodeHex()
- ),
- TestPoint(
- "5601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc".decodeHex(),
- "3ec93e23f34146cf161d67fbca76cae27e271f438c951d5e0ae6d1a074f9ded7".decodeHex()
- ),
- TestPoint(
- "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34".decodeHex(),
- "bdee54f96b9cae9716684f152d56c251312e0b5fb56a3f09304e660861a910b8".decodeHex()
- ),
- TestPoint(
- "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a".decodeHex(),
- "081caf8c661a6a6d624660cb0a86c8efed6976e1bb2dc0f41e0cd330969e940e".decodeHex()
- ),
- TestPoint(
- "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e".decodeHex(),
- "a7e1d78d57938d597c7bd13dd733921015bf50d427692c5a3afb235f095d90d7".decodeHex()
- ),
- TestPoint(
- "499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4".decodeHex(),
- "353d093b4ab17aae6f0fbb1b584c2b9bb9bd863d85c06a4339a0bf2afc5ebcd4".decodeHex()
- ),
- TestPoint(
- "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8".decodeHex(),
- "f54f6fd17277f5768a7ded149a3250b8c5e5f925ade056e0d64a34ac24fc0eae".decodeHex()
- ),
- TestPoint(
- "d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a".decodeHex(),
- "560cb00237ea1f285749bac81e8427ea86dc73a2265792ad94fae4eb0bf9d908".decodeHex()
- ),
- TestPoint(
- "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb".decodeHex(),
- "267b5fcd1494a1e6fdbc22a928484c9ac8d24e1d20062957cfe28b3536ac3614".decodeHex()
- ),
- TestPoint(
- "a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7".decodeHex(),
- "76c545bdabe643d85c4938196c5db3969086b3d127885ea6c3411ac3fc8c9358".decodeHex()
- ),
- TestPoint(
- "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe".decodeHex(),
- "33cc76de4f5826029bc7f68e89c49e165227775bc8a071f0fa33d9d439b05ff8".decodeHex()
- ),
- TestPoint(
- "2f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01".decodeHex(),
- "a3b25758beac66b6d6c2f7d5ecd2ec4b3d1dec2945a489e84a25d3479342132b".decodeHex()
- ),
- TestPoint(
- "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc".decodeHex(),
- "951435bf45daa69f5ce8729279e5ab2457ec2f47ec02184a5af7d9d6f78d9755".decodeHex()
- ),
- TestPoint(
- "fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556".decodeHex(),
- "51ed8885530449df0c4169fe80ba3a9f217f0f09ae701b5fc378f3c84f8a0998".decodeHex()
- ),
- TestPoint(
- "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4".decodeHex(),
- "2753ddd9c91a1c292b24562259363bd90877d8e454f297bf235782c459539959".decodeHex()
- ),
- TestPoint(
- "e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13".decodeHex(),
- "ae1266c15f2baa48a9bd1df6715aebb7269851cc404201bf30168422b88c630d".decodeHex()
- ),
- TestPoint(
- "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9".decodeHex(),
- "c77084f09cd217ebf01cc819d5c80ca99aff5666cb3ddce4934602897b4715bd".decodeHex()
- ),
- TestPoint(
- "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5".decodeHex(),
- "e51e970159c23cc65c3a7be6b99315110809cd9acd992f1edc9bce55af301705".decodeHex()
- ),
- TestPoint(
- "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798".decodeHex(),
- "b7c52588d95c3b9aa25b0403f1eef75702e84bb7597aabe663b82f6f04ef2777".decodeHex()
- )
- )
-
- fun publicKeysFromSecp256k1TestVectors(): List =
- vectors.map { KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates(it.x, it.y) }
-}
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Schnorr.kt b/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Schnorr.kt
deleted file mode 100644
index 5ad147077..000000000
--- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Schnorr.kt
+++ /dev/null
@@ -1,64 +0,0 @@
-// package io.iohk.atala.prism.apollo.secp256k1
-//
-// /* ktlint-disable */
-// import kotlinx.cinterop.UByteVar
-// import kotlinx.cinterop.alloc
-// import kotlinx.cinterop.allocArray
-// import kotlinx.cinterop.memScoped
-// import kotlinx.cinterop.ptr
-// import kotlinx.cinterop.readBytes
-// // import io.iohk.atala.prism.apollo.kmmsecp256k1.*
-// import secp256k1.*
-// /* ktlint-disable */
-//
-// class Schnorr : Secp256k1() {
-// /**
-// * Create a Schnorr signature.
-// *
-// * @param data message to sign.
-// * @param sec signer's private key.
-// * @param auxrand32 32 bytes of fresh randomness (optional).
-// */
-// fun sign(data: ByteArray, sec: ByteArray, auxrand32: ByteArray?): ByteArray {
-// require(sec.size == 32)
-// require(data.size == 32)
-// auxrand32?.let { require(it.size == 32) }
-// memScoped {
-// val nSec = toNat(sec)
-// val nData = toNat(data)
-// val nAuxrand32 = auxrand32?.let { toNat(it) }
-// val nSig = allocArray(64)
-// val keypair = alloc()
-// secp256k1_keypair_create(ctx, keypair.ptr, nSec).requireSuccess("secp256k1_keypair_create() failed")
-// secp256k1_schnorrsig_sign32(
-// ctx,
-// nSig,
-// nData,
-// keypair.ptr,
-// nAuxrand32
-// ).requireSuccess("secp256k1_ecdsa_sign() failed")
-// return nSig.readBytes(64)
-// }
-// }
-//
-// /**
-// * Verify a Schnorr signature.
-// *
-// * @param signature 64 bytes signature.
-// * @param data message signed.
-// * @param pub signer's x-only public key (32 bytes).
-// */
-// fun verify(signature: ByteArray, data: ByteArray, pub: ByteArray): Boolean {
-// require(signature.size == 64)
-// require(data.size == 32)
-// require(pub.size == 32)
-// memScoped {
-// val nPub = toNat(pub)
-// val pubkey = alloc()
-// secp256k1_xonly_pubkey_parse(ctx, pubkey.ptr, nPub).requireSuccess("secp256k1_xonly_pubkey_parse() failed")
-// val nData = toNat(data)
-// val nSig = toNat(signature)
-// return secp256k1_schnorrsig_verify(ctx, nSig, nData, 32, pubkey.ptr) == 1
-// }
-// }
-// }
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt b/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt
deleted file mode 100644
index 3af6f4c04..000000000
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt
+++ /dev/null
@@ -1,253 +0,0 @@
-// Automatically generated by dukat and then slightly adjusted manually to make it compile
-@file:Suppress("ktlint")
-// @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
-@file:JsModule("@noble/secp256k1")
-/* ktlint-disable */
-package io.iohk.atala.prism.apollo.utils.external.secp256k1
-
-import io.iohk.atala.prism.apollo.utils.external.BN
-import kotlin.js.*
-import org.khronos.webgl.*
-import org.w3c.dom.*
-import org.w3c.dom.events.*
-import org.w3c.dom.parsing.*
-import org.w3c.dom.svg.*
-import org.w3c.dom.url.*
-import org.w3c.fetch.*
-import org.w3c.files.*
-import org.w3c.notifications.*
-import org.w3c.performance.*
-import org.w3c.workers.*
-import org.w3c.xhr.*
-import org.khronos.webgl.Uint8Array
-
-external object CURVE {
- var p: BN
- var n: BN
- var a: BN
- var b: BN
- var Gx: BN
- var Gy: BN
-}
-
-external interface AffinePoint {
- var x: BN
- var y: BN
-}
-
-external open class Point(px: BN, py: BN, pz: BN) {
- open var px: BN
- open var py: BN
- open var pz: BN
- open fun equals(other: Point): Boolean
- open fun negate(): Point
- open fun double(): Point
- open fun add(other: Point): Point
- open fun mul(n: BN, safe: Boolean = definedExternally): Point
- open fun mulAddQUns(R: Point, u1: BN, u2: BN): Point
- open fun toAffine(): AffinePoint
- open fun assertValidity(): Point
- open fun multiply(n: BN): Point
- open fun aff(): AffinePoint
- open fun ok(): Point
- open fun toHex(isCompressed: Boolean = definedExternally): String
- open fun toRawBytes(isCompressed: Boolean = definedExternally): Uint8Array
-
- companion object {
- var BASE: Point
- var ZERO: Point
- fun fromAffine(p: AffinePoint): Point
- fun fromHex(hex: Uint8Array): Point
- fun fromHex(hex: String): Point
- fun fromPrivateKey(k: Uint8Array): Point
- fun fromPrivateKey(k: String): Point
- fun fromPrivateKey(k: BN): Point
- }
-}
-
-external fun getPublicKey(privKey: Uint8Array, isCompressed: Boolean = definedExternally): Uint8Array
-
-external fun getPublicKey(privKey: Uint8Array): Uint8Array
-
-external fun getPublicKey(privKey: String, isCompressed: Boolean = definedExternally): Uint8Array
-
-external fun getPublicKey(privKey: String): Uint8Array
-
-external fun getPublicKey(privKey: BN, isCompressed: Boolean = definedExternally): Uint8Array
-
-external fun getPublicKey(privKey: BN): Uint8Array
-
-external open class Signature(r: BN, s: BN, recovery: BN? = definedExternally) {
- open var r: BN
- open var s: BN
- open var recovery: BN?
- open fun assertValidity(): Signature /* this */
- open fun addRecoveryBit(rec: BN): Signature /* Signature & `T$2` */
- open fun hasHighS(): Boolean
- open fun recoverPublicKey(msgh: Uint8Array): Point
- open fun recoverPublicKey(msgh: String): Point
- open fun toCompactRawBytes(): Uint8Array
- open fun toCompactHex(): String
-
- companion object {
- fun fromCompact(hex: Uint8Array): Signature
- fun fromCompact(hex: String): Signature
- }
-}
-
-external interface `T$0` {
- var lowS: Boolean?
- get() = definedExternally
- set(value) = definedExternally
- var extraEntropy: dynamic /* Boolean? | Uint8Array? | String? */
- get() = definedExternally
- set(value) = definedExternally
-}
-
-external fun signAsync(msgh: Uint8Array, priv: Uint8Array, opts: `T$0` = definedExternally): Promise
-
-external fun signAsync(msgh: Uint8Array, priv: Uint8Array): Promise
-
-external fun signAsync(msgh: Uint8Array, priv: String, opts: `T$0` = definedExternally): Promise
-
-external fun signAsync(msgh: Uint8Array, priv: String): Promise
-
-external fun signAsync(msgh: Uint8Array, priv: BN, opts: `T$0` = definedExternally): Promise
-
-external fun signAsync(msgh: Uint8Array, priv: BN): Promise
-
-external fun signAsync(msgh: String, priv: Uint8Array, opts: `T$0` = definedExternally): Promise
-
-external fun signAsync(msgh: String, priv: Uint8Array): Promise
-
-external fun signAsync(msgh: String, priv: String, opts: `T$0` = definedExternally): Promise
-
-external fun signAsync(msgh: String, priv: String): Promise
-
-external fun signAsync(msgh: String, priv: BN, opts: `T$0` = definedExternally): Promise
-
-external fun signAsync(msgh: String, priv: BN): Promise
-
-external fun sign(msgh: Uint8Array, priv: Uint8Array, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: Uint8Array, priv: Uint8Array): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: Uint8Array, priv: String, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: Uint8Array, priv: String): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: Uint8Array, priv: BN, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: Uint8Array, priv: BN): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: String, priv: Uint8Array, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: String, priv: Uint8Array): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: String, priv: String, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: String, priv: String): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: String, priv: Any, opts: `T$0` = definedExternally): Signature /* Signature & `T$2` */
-
-external fun sign(msgh: String, priv: Any): Signature /* Signature & `T$2` */
-
-external interface SigLike {
- var r: BN
- var s: BN
-}
-
-external interface `T$1` {
- var lowS: Boolean?
- get() = definedExternally
- set(value) = definedExternally
-}
-
-external fun verify(sig: Uint8Array, msgh: Uint8Array, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: Uint8Array, msgh: Uint8Array, pub: Uint8Array): Boolean
-
-external fun verify(sig: Uint8Array, msgh: Uint8Array, pub: String, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: Uint8Array, msgh: Uint8Array, pub: String): Boolean
-
-external fun verify(sig: Uint8Array, msgh: String, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: Uint8Array, msgh: String, pub: Uint8Array): Boolean
-
-external fun verify(sig: Uint8Array, msgh: String, pub: String, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: Uint8Array, msgh: String, pub: String): Boolean
-
-external fun verify(sig: String, msgh: Uint8Array, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: String, msgh: Uint8Array, pub: Uint8Array): Boolean
-
-external fun verify(sig: String, msgh: Uint8Array, pub: String, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: String, msgh: Uint8Array, pub: String): Boolean
-
-external fun verify(sig: String, msgh: String, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: String, msgh: String, pub: Uint8Array): Boolean
-
-external fun verify(sig: String, msgh: String, pub: String, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: String, msgh: String, pub: String): Boolean
-
-external fun verify(sig: SigLike, msgh: Uint8Array, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: SigLike, msgh: Uint8Array, pub: Uint8Array): Boolean
-
-external fun verify(sig: SigLike, msgh: Uint8Array, pub: String, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: SigLike, msgh: Uint8Array, pub: String): Boolean
-
-external fun verify(sig: SigLike, msgh: String, pub: Uint8Array, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: SigLike, msgh: String, pub: Uint8Array): Boolean
-
-external fun verify(sig: SigLike, msgh: String, pub: String, opts: `T$1` = definedExternally): Boolean
-
-external fun verify(sig: SigLike, msgh: String, pub: String): Boolean
-
-external fun getSharedSecret(privA: Uint8Array, pubB: Uint8Array, isCompressed: Boolean = definedExternally): Uint8Array
-
-external fun getSharedSecret(privA: Uint8Array, pubB: Uint8Array): Uint8Array
-
-external fun getSharedSecret(privA: Uint8Array, pubB: String, isCompressed: Boolean = definedExternally): Uint8Array
-
-external fun getSharedSecret(privA: Uint8Array, pubB: String): Uint8Array
-
-external fun getSharedSecret(privA: String, pubB: Uint8Array, isCompressed: Boolean = definedExternally): Uint8Array
-
-external fun getSharedSecret(privA: String, pubB: Uint8Array): Uint8Array
-
-external fun getSharedSecret(privA: String, pubB: String, isCompressed: Boolean = definedExternally): Uint8Array
-
-external fun getSharedSecret(privA: String, pubB: String): Uint8Array
-
-external fun hashToPrivateKey(hash: Uint8Array): Uint8Array
-
-external fun hashToPrivateKey(hash: String): Uint8Array
-
-external object etc {
- var hexToBytes: (hex: String) -> Uint8Array
- var bytesToHex: (b: Uint8Array) -> String
- var concatBytes: (arrs: Uint8Array) -> Uint8Array
- var bytesToNumberBE: (b: Uint8Array) -> Any
- var numberToBytesBE: (num: Any) -> Uint8Array
- var mod: (a: Any, b: Any) -> Any
- var invert: (num: Any, md: Any) -> Any
- var hmacSha256Async: (key: Uint8Array, msgs: Uint8Array) -> Promise
- var hmacSha256Sync: ((key: Uint8Array, msgs: Uint8Array) -> Uint8Array)?
- var hashToPrivateKey: Any
- var randomBytes: (len: BN) -> Uint8Array
-}
-
-external object utils {
- var normPrivateKeyToScalar: (p: dynamic /* Uint8Array | String | Any */) -> Any
- var isValidPrivateKey: (key: dynamic /* Uint8Array | String */) -> Boolean
- var randomPrivateKey: () -> Uint8Array
- fun precompute(w: BN = definedExternally, p: Point = definedExternally): Point
-}
\ No newline at end of file
diff --git a/base-symmetric-encryption/build.gradle.kts b/base-symmetric-encryption/build.gradle.kts
deleted file mode 100644
index 8644853da..000000000
--- a/base-symmetric-encryption/build.gradle.kts
+++ /dev/null
@@ -1,194 +0,0 @@
-import org.gradle.internal.os.OperatingSystem
-import org.jetbrains.dokka.gradle.DokkaTask
-import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput.Target
-
-val currentModuleName = "ApolloBaseSymmetricEncryption"
-val os: OperatingSystem = OperatingSystem.current()
-
-plugins {
- kotlin("multiplatform")
- id("com.android.library")
- id("org.jetbrains.dokka")
-}
-
-kotlin {
- android {
- publishAllLibraryVariants()
- }
- jvm {
- compilations.all {
- kotlinOptions {
- jvmTarget = "11"
- }
- }
- testRuns["test"].executionTask.configure {
- useJUnitPlatform()
- }
- }
- if (os.isMacOsX) {
- ios()
-// tvos()
-// watchos()
- iosSimulatorArm64()
-// tvosSimulatorArm64()
-// watchosSimulatorArm64()
- macosArm64()
- }
-// if (os.isWindows) {
-// // mingwX86() // it depend on kotlinx-datetime lib to support this platform before we can support it as well
-// mingwX64()
-// }
- js(IR) {
- this.moduleName = currentModuleName
- this.binaries.library()
- this.useCommonJs()
- generateTypeScriptDefinitions()
- this.compilations["main"].packageJson {
- this.version = rootProject.version.toString()
- }
- this.compilations["test"].packageJson {
- this.version = rootProject.version.toString()
- }
- browser {
- this.webpackTask {
- this.output.library = currentModuleName
- this.output.libraryTarget = Target.VAR
- }
- this.commonWebpackConfig {
- }
- this.testTask {
- if (os.isWindows) {
- this.enabled = false
- }
- this.useKarma {
- this.useChromeHeadless()
- }
- }
- }
- nodejs {
- this.testTask {
- if (os.isWindows) {
- this.enabled = false
- }
- this.useKarma {
- this.useChromeHeadless()
- }
- }
- }
- }
-
- sourceSets {
- val commonMain by getting {
- dependencies {
- implementation(project(":secure-random"))
- implementation(project(":base64"))
- }
- }
- val commonTest by getting {
- dependencies {
- implementation(kotlin("test"))
- }
- }
- val jvmMain by getting
- val jvmTest by getting
- val androidMain by getting
- val androidTest by getting {
- dependencies {
- implementation("junit:junit:4.13.2")
- }
- }
- val jsMain by getting {
- dependencies {
- implementation("org.jetbrains.kotlin-wrappers:kotlin-web:1.0.0-pre.461")
- implementation("org.jetbrains.kotlin-wrappers:kotlin-node:18.11.13-pre.461")
- }
- }
- val jsTest by getting
- if (os.isMacOsX) {
- val iosMain by getting
- val iosTest by getting
-// val tvosMain by getting
-// val tvosTest by getting
-// val watchosMain by getting
-// val watchosTest by getting
- val iosSimulatorArm64Main by getting {
- this.dependsOn(iosMain)
- }
- val iosSimulatorArm64Test by getting {
- this.dependsOn(iosTest)
- }
-// val tvosSimulatorArm64Main by getting {
-// this.dependsOn(tvosMain)
-// }
-// val tvosSimulatorArm64Test by getting {
-// this.dependsOn(tvosTest)
-// }
-// val watchosSimulatorArm64Main by getting {
-// this.dependsOn(watchosMain)
-// }
-// val watchosSimulatorArm64Test by getting {
-// this.dependsOn(watchosTest)
-// }
- val macosArm64Main by getting {
- this.dependsOn(iosMain)
- }
- val macosArm64Test by getting {
- this.dependsOn(iosTest)
- }
- }
-// if (os.isWindows) {
-// // val mingwX86Main by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well
-// // val mingwX86Test by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well
-// val mingwX64Main by getting
-// val mingwX64Test by getting
-// }
- }
-
- if (os.isMacOsX) {
- tasks.getByName("iosX64Test") {
- device.set("iPhone 14 Plus")
- }
- tasks.getByName("iosSimulatorArm64Test") {
- device.set("iPhone 14 Plus")
- }
- }
-}
-
-android {
- compileSdk = 32
- sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
- defaultConfig {
- minSdk = 21
- targetSdk = 32
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
- }
- /**
- * Because Software Components will not be created automatically for Maven publishing from
- * Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.
- * disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new
- * publishing DSL.
- */
- publishing {
- multipleVariants {
- withSourcesJar()
- withJavadocJar()
- allVariants()
- }
- }
-}
-
-// Dokka implementation
-tasks.withType {
- moduleName.set(project.name)
- moduleVersion.set(rootProject.version.toString())
- description = "This is a Kotlin Multiplatform Library for Base Symmetric Encryption"
- dokkaSourceSets {
- // TODO: Figure out how to include files to the documentations
- named("commonMain") {
- includes.from("Module.md", "docs/Module.md")
- }
- }
-}
diff --git a/base-symmetric-encryption/src/androidMain/AndroidManifest.xml b/base-symmetric-encryption/src/androidMain/AndroidManifest.xml
deleted file mode 100644
index 1ddfad099..000000000
--- a/base-symmetric-encryption/src/androidMain/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
deleted file mode 100644
index b8a637ba7..000000000
--- a/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes
-import io.iohk.atala.prism.apollo.base64.base64PadEncoded
-import javax.crypto.SecretKey
-import javax.crypto.spec.SecretKeySpec
-
-actual open class KMMSymmetricKey(val nativeType: SecretKey) : SymmetricKeyBase64Export {
- override fun exportToBase64(): String {
- return nativeType.encoded.base64PadEncoded
- }
-
- actual companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration {
- override fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey {
- val decodedKey = base64Encoded.base64PadDecodedBytes
- val originalKey: SecretKey = SecretKeySpec(decodedKey, 0, decodedKey.size, algorithm.value)
- return KMMSymmetricKey(originalKey)
- }
- }
-}
diff --git a/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
deleted file mode 100644
index 9edaf17a9..000000000
--- a/base-symmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-actual enum class SymmetricKeyType(val value: String) {
- AES("AES");
-}
diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Export.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Export.kt
deleted file mode 100644
index b917c91d3..000000000
--- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Export.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-import io.iohk.atala.prism.apollo.base64.base64PadEncoded
-
-interface IVBase64Export {
- /**
- * Export IV to Base64 standard with padding
- *
- * @param iv iv value to convert to Base64 standard with padding
- */
- fun exportToBase64(iv: ByteArray): String {
- return iv.base64PadEncoded
- }
-}
diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Import.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Import.kt
deleted file mode 100644
index ed237bec9..000000000
--- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVBase64Import.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes
-
-interface IVBase64Import {
- /**
- * Create an IV from Base64 standard with padding
- *
- * @param base64Encoded Base64 standard with padding value to convert to IV
- */
- fun createIVFromBase64(base64Encoded: String): ByteArray {
- return base64Encoded.base64PadDecodedBytes
- }
-}
diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVGeneration.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVGeneration.kt
deleted file mode 100644
index 04ac31aee..000000000
--- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/IVGeneration.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-import io.iohk.atala.prism.apollo.securerandom.SecureRandom
-
-interface IVGeneration {
- /**
- * Generate random data with specified size
- *
- * @param size the size of the random generated data
- */
- fun createRandomIV(size: Int): ByteArray = SecureRandom().nextBytes(size)
-}
diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
deleted file mode 100644
index 730dd2d33..000000000
--- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-expect open class KMMSymmetricKey : SymmetricKeyBase64Export {
- companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration
-}
diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Export.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Export.kt
deleted file mode 100644
index 998529672..000000000
--- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Export.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-public interface SymmetricKeyBase64Export {
- /**
- * export [KMMSymmetricKey] to Base64 standard with padding
- */
- fun exportToBase64(): String
-}
diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Import.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Import.kt
deleted file mode 100644
index a7a38964d..000000000
--- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyBase64Import.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-public interface SymmetricKeyBase64Import {
- /**
- * Create an instance of [KMMSymmetricKey] from a Base64 standard with padding encoded key
- *
- * @param base64Encoded a Base64 standard with padding encoded key value
- * @param algorithm algorithm type supported
- */
- fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey
-}
diff --git a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
deleted file mode 100644
index bf30bff06..000000000
--- a/base-symmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-expect enum class SymmetricKeyType {
- AES
-}
diff --git a/base-symmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKeyTests.kt b/base-symmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKeyTests.kt
deleted file mode 100644
index edc19840b..000000000
--- a/base-symmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKeyTests.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-import kotlin.test.Test
-import kotlin.test.assertEquals
-
-class KMMSymmetricKeyTests {
- @Test
- fun test() {
- assertEquals(1, 1)
- }
-}
diff --git a/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
deleted file mode 100644
index 800149c9e..000000000
--- a/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes
-import io.iohk.atala.prism.apollo.base64.base64PadEncoded
-import platform.Foundation.NSData
-
-actual open class KMMSymmetricKey(val nativeValue: NSData) : SymmetricKeyBase64Export {
- override fun exportToBase64(): String {
- return nativeValue.toByteArray().base64PadEncoded
- }
-
- actual companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration {
- override fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey {
- return KMMSymmetricKey(base64Encoded.base64PadDecodedBytes.toNSData())
- }
- }
-}
diff --git a/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
deleted file mode 100644
index ff0e79f15..000000000
--- a/base-symmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-actual enum class SymmetricKeyType {
- AES
-}
diff --git a/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
deleted file mode 100644
index 588581a91..000000000
--- a/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes
-import io.iohk.atala.prism.apollo.base64.base64PadEncoded
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-actual open class KMMSymmetricKey(val nativeValue: ByteArray) : SymmetricKeyBase64Export {
- override fun exportToBase64(): String {
- return nativeValue.base64PadEncoded
- }
-
- actual companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration {
- override fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey {
- return KMMSymmetricKey(base64Encoded.base64PadDecodedBytes)
- }
- }
-}
diff --git a/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
deleted file mode 100644
index 88bf48f70..000000000
--- a/base-symmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-@OptIn(ExperimentalJsExport::class)
-@JsExport
-actual enum class SymmetricKeyType {
- AES;
-}
diff --git a/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt b/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
deleted file mode 100644
index b8a637ba7..000000000
--- a/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMSymmetricKey.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-import io.iohk.atala.prism.apollo.base64.base64PadDecodedBytes
-import io.iohk.atala.prism.apollo.base64.base64PadEncoded
-import javax.crypto.SecretKey
-import javax.crypto.spec.SecretKeySpec
-
-actual open class KMMSymmetricKey(val nativeType: SecretKey) : SymmetricKeyBase64Export {
- override fun exportToBase64(): String {
- return nativeType.encoded.base64PadEncoded
- }
-
- actual companion object : SymmetricKeyBase64Import, IVBase64Import, IVBase64Export, IVGeneration {
- override fun createKeyFromBase64(base64Encoded: String, algorithm: SymmetricKeyType): KMMSymmetricKey {
- val decodedKey = base64Encoded.base64PadDecodedBytes
- val originalKey: SecretKey = SecretKeySpec(decodedKey, 0, decodedKey.size, algorithm.value)
- return KMMSymmetricKey(originalKey)
- }
- }
-}
diff --git a/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt b/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
deleted file mode 100644
index 9edaf17a9..000000000
--- a/base-symmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/SymmetricKeyType.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package io.iohk.atala.prism.apollo.utils
-
-actual enum class SymmetricKeyType(val value: String) {
- AES("AES");
-}
diff --git a/build.gradle.kts b/build.gradle.kts
index bcce562a9..e6be2fa3b 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
plugins {
id("org.jetbrains.dokka") version "1.7.10"
- id("org.jlleitschuh.gradle.ktlint") version "11.0.0"
+ id("org.jlleitschuh.gradle.ktlint") version "11.6.1"
id("maven-publish")
id("org.jetbrains.kotlinx.kover") version "0.7.2"
}
@@ -17,11 +17,9 @@ buildscript {
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.20")
classpath("com.android.tools.build:gradle:7.2.2")
- // classpath("org.jetbrains.kotlin:kotlin-compiler-embeddable:1.7.21")
}
}
-version = "1.0.2"
group = "io.iohk.atala.prism.apollo"
dependencies {
@@ -34,11 +32,10 @@ dependencies {
kover(project(":base64"))
kover(project(":multibase"))
kover(project(":utils"))
- kover(project(":base-symmetric-encryption"))
+ kover(project(":cryptography"))
kover(project(":secure-random"))
// kover(project(":aes"))
- kover(project(":base-asymmetric-encryption"))
-// kover(project(":rsa"))
+ // kover(project(":rsa"))
// kover(project(":ecdsa"))
kover(project(":varint"))
// kover(project(":jose"))
@@ -47,7 +44,6 @@ dependencies {
}
allprojects {
- version = "1.0.2"
group = "io.iohk.atala.prism.apollo"
repositories {
diff --git a/base-asymmetric-encryption/build.gradle.kts b/cryptography/build.gradle.kts
similarity index 83%
rename from base-asymmetric-encryption/build.gradle.kts
rename to cryptography/build.gradle.kts
index a23967f46..30692ee5a 100644
--- a/base-asymmetric-encryption/build.gradle.kts
+++ b/cryptography/build.gradle.kts
@@ -1,17 +1,14 @@
-import dev.petuska.npm.publish.extension.domain.NpmAccess
import org.gradle.internal.os.OperatingSystem
import org.jetbrains.dokka.gradle.DokkaTask
import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput.Target
-val currentModuleName = "ApolloBaseAsymmetricEncryption"
+val currentModuleName = "Cryptography"
val os: OperatingSystem = OperatingSystem.current()
plugins {
kotlin("multiplatform")
- id("io.github.luca992.multiplatform-swiftpackage") version "2.0.5-arm64"
id("com.android.library")
id("org.jetbrains.dokka")
- id("dev.petuska.npm.publish") version "3.4.1"
}
kotlin {
@@ -116,16 +113,6 @@ kotlin {
}
}
- multiplatformSwiftPackage {
- packageName("Apollo")
- swiftToolsVersion("5.3")
- targetPlatforms {
- iOS { v("13") }
- macOS { v("11") }
- }
- outputDirectory(File(rootDir, "base-asymmetric-encryption/build/packages/ApolloSwift"))
- }
-
sourceSets {
val commonMain by getting {
dependencies {
@@ -150,14 +137,7 @@ kotlin {
dependencies {
api("fr.acinq.secp256k1:secp256k1-kmp:0.9.0")
}
- val target =
- when {
- os.isLinux -> "linux"
- os.isMacOsX -> "darwin"
- os.isWindows -> "mingw"
- else -> error("Unsupported OS $os")
- }
- implementation("fr.acinq.secp256k1:secp256k1-kmp-jni-jvm-$target:0.9.0")
+ implementation("fr.acinq.secp256k1:secp256k1-kmp-jni-jvm:0.9.0")
implementation("com.google.guava:guava:30.1-jre")
implementation("org.bouncycastle:bcprov-jdk15on:1.68")
}
@@ -183,7 +163,7 @@ kotlin {
implementation(npm("elliptic", "6.5.4"))
implementation(npm("@types/elliptic", "6.4.14"))
- implementation(npm("@noble/secp256k1", "2.0.0"))
+ implementation(npm("@noble/curves", "1.2.0"))
implementation(npm("@stablelib/x25519", "1.0.3"))
// Polyfill dependencies
@@ -287,33 +267,3 @@ ktlint {
exclude { projectDir.toURI().relativize(it.file.toURI()).path.contains("/external/") }
}
}
-
-npmPublish {
- organization.set("input-output-hk")
- version.set(project.version.toString())
- access.set(NpmAccess.PUBLIC)
- packages {
- access.set(NpmAccess.PUBLIC)
- named("js") {
- scope.set("input-output-hk")
- packageName.set("apollo")
- packageJson {
- author {
- name.set("IOG")
- }
- repository {
- type.set("git")
- url.set("https://github.com/input-output-hk/atala-prism-apollo.git")
- }
- }
- }
- }
- registries {
- access.set(NpmAccess.PUBLIC)
- github {
- uri.set("https://npm.pkg.github.com/")
- access.set(NpmAccess.PUBLIC)
- this.authToken.set(System.getenv("ATALA_GITHUB_TOKEN"))
- }
- }
-}
diff --git a/base-asymmetric-encryption/src/androidMain/AndroidManifest.xml b/cryptography/src/androidMain/AndroidManifest.xml
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/AndroidManifest.xml
rename to cryptography/src/androidMain/AndroidManifest.xml
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
similarity index 97%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
index 4e40ea7ad..a768cf944 100644
--- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
+++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
@@ -17,7 +17,7 @@ actual class KMMEdKeyPair actual constructor(
val pair = generator.generateKeyPair()
return KMMEdKeyPair(
privateKey = KMMEdPrivateKey((pair.private as Ed25519PrivateKeyParameters).encoded),
- publicKey = KMMEdPublicKey((pair.public as Ed25519PublicKeyParameters).encoded),
+ publicKey = KMMEdPublicKey((pair.public as Ed25519PublicKeyParameters).encoded)
)
}
}
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
similarity index 99%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
index acceabf0f..d993f4e55 100644
--- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
+++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
@@ -4,7 +4,6 @@ import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters
import org.bouncycastle.crypto.signers.Ed25519Signer
actual class KMMEdPrivateKey(val raw: ByteArray) {
-
fun publicKey(): KMMEdPublicKey {
val private = Ed25519PrivateKeyParameters(raw, 0)
val public = private.generatePublicKey()
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
similarity index 99%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
index e0ce7c12f..592c60384 100644
--- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
+++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
@@ -5,7 +5,6 @@ import java.security.SecureRandom
actual final class KMMRSAKeyPair actual constructor(val privateKey: KMMRSAPrivateKey, val publicKey: KMMRSAPublicKey) {
actual companion object : RSAKeyPairGeneration {
-
@JvmStatic
override suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair {
val keyPairGen = KeyPairGenerator.getInstance(algorithm.nativeValue())
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
similarity index 99%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
index 1067ed504..78da76f87 100644
--- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
+++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
@@ -3,7 +3,6 @@ package io.iohk.atala.prism.apollo.utils
import org.bouncycastle.crypto.params.X25519PrivateKeyParameters
actual class KMMX25519PrivateKey(val raw: ByteArray) {
-
fun publicKey(): KMMX25519PublicKey {
val private = X25519PrivateKeyParameters(raw, 0)
val public = private.generatePublicKey()
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
similarity index 100%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
similarity index 99%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
rename to cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
index 368847040..d2a9d602b 100644
--- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
+++ b/cryptography/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
@@ -2,5 +2,6 @@ package io.iohk.atala.prism.apollo.utils
actual interface RSAKeyPairGeneration {
suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair
+
suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair
}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationAxis.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationAxis.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationAxis.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationAxis.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationPath.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationPath.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationPath.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/DerivationPath.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt
similarity index 81%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt
index b1324d51d..1a7cb91d2 100644
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKey.kt
@@ -71,7 +71,6 @@ class HDKey(
val depth: Int = 0,
val childIndex: BigIntegerWrapper = BigIntegerWrapper(0)
) {
-
@JsName("InitFromSeed")
constructor(seed: ByteArray, depth: Int, childIndex: BigIntegerWrapper) : this(
privateKey = sha512(key = "Bitcoin seed".encodeToByteArray(), input = seed).sliceArray(IntRange(0, 31)),
@@ -136,40 +135,40 @@ class HDKey(
throw Exception("No chainCode set")
}
- val data = if (index >= HARDENED_OFFSET) {
- val priv = privateKey ?: throw Error("Could not derive hardened child key")
- byteArrayOf(0) + priv + index.toByteArray()
- } else {
- throw Exception("Not supported")
- }
+ val data =
+ if (index >= HARDENED_OFFSET) {
+ val priv = privateKey ?: throw Error("Could not derive hardened child key")
+ byteArrayOf(0) + priv + index.toByteArray()
+ } else {
+ throw Exception("Not supported")
+ }
- val I = sha512(chainCode, data)
- val childTweak = I.sliceArray(IntRange(0, 31))
- val newChainCode = I.sliceArray(32 until I.size)
+ val i = sha512(chainCode, data)
+ val childTweak = i.sliceArray(IntRange(0, 31))
+ val newChainCode = i.sliceArray(32 until i.size)
if (!isValidPrivateKey(childTweak)) {
- throw ECPrivateKeyDecodingException("Expected encoded byte length to be ${ECConfig.PRIVATE_KEY_BYTE_SIZE}, but got ${data.size}")
+ throw ECPrivateKeyDecodingException(
+ "Expected encoded byte length to be ${ECConfig.PRIVATE_KEY_BYTE_SIZE}, but got ${data.size}"
+ )
}
- val opt = HDKeyOptions(
- versions = Pair(BITCOIN_VERSIONS_PRIVATE, BITCOIN_VERSIONS_PUBLIC),
- chainCode = newChainCode,
- depth = depth + 1,
- parentFingerprint = null,
- index = index
- )
-
- return try {
- opt.privateKey = KMMECSecp256k1PrivateKey.tweak(privateKey, childTweak).raw
- return HDKey(
- privateKey = opt.privateKey,
- chainCode = opt.chainCode,
- depth = opt.depth,
- childIndex = BigIntegerWrapper(opt.index)
+ val opt =
+ HDKeyOptions(
+ versions = Pair(BITCOIN_VERSIONS_PRIVATE, BITCOIN_VERSIONS_PUBLIC),
+ chainCode = newChainCode,
+ depth = depth + 1,
+ parentFingerprint = null,
+ index = index
)
- } catch (err: Error) {
- this.deriveChild(BigIntegerWrapper(index + 1))
- }
+
+ opt.privateKey = KMMECSecp256k1PrivateKey.tweak(privateKey, childTweak).raw
+ return HDKey(
+ privateKey = opt.privateKey,
+ chainCode = opt.chainCode,
+ depth = opt.depth,
+ childIndex = BigIntegerWrapper(opt.index)
+ )
}
/**
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyOptions.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyOptions.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyOptions.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyOptions.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt
similarity index 99%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt
index ac728ebf5..cd3a71102 100644
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCodeEnglish.kt
@@ -2050,6 +2050,6 @@ internal object MnemonicCodeEnglish {
"zebra",
"zero",
"zone",
- "zoo",
+ "zoo"
)
}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicException.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicException.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicException.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicException.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicHelper.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicHelper.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicHelper.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicHelper.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
similarity index 99%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
index a61cfcaf4..73dc47640 100644
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
@@ -2,9 +2,13 @@ package io.iohk.atala.prism.apollo.secp256k1
expect class Secp256k1Lib constructor() {
fun createPublicKey(privateKey: ByteArray, compressed: Boolean): ByteArray
+
fun derivePrivateKey(privateKeyBytes: ByteArray, derivedPrivateKeyBytes: ByteArray): ByteArray?
+
fun sign(privateKey: ByteArray, data: ByteArray): ByteArray
+
fun verify(publicKey: ByteArray, signature: ByteArray, data: ByteArray): Boolean
+
fun uncompressPublicKey(compressed: ByteArray): ByteArray
fun compressPublicKey(uncompressed: ByteArray): ByteArray
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECConfig.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECConfig.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECConfig.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECConfig.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECKeyExceptions.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECKeyExceptions.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECKeyExceptions.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/ECKeyExceptions.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Ed25519KeyPairGeneration.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Ed25519KeyPairGeneration.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Ed25519KeyPairGeneration.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Ed25519KeyPairGeneration.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Encodable.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Encodable.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Encodable.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/Encodable.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPoint.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPoint.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPoint.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPoint.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PrivateKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PrivateKey.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PrivateKey.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PublicKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PublicKey.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1PublicKey.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEllipticCurve.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEllipticCurve.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEllipticCurve.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEllipticCurve.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
similarity index 91%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
index d1bd9d581..e924c6836 100644
--- a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
@@ -2,5 +2,5 @@ package io.iohk.atala.prism.apollo.utils
expect final enum class RSAAsymmetricAlgorithm : NativeTypeInterface {
RSA,
- RSAPSS;
+ RSAPSS
}
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/X25519KeyPairGeneration.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/X25519KeyPairGeneration.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/X25519KeyPairGeneration.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/X25519KeyPairGeneration.kt
diff --git a/base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/MnemonicException.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/MnemonicException.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/MnemonicException.kt
rename to cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/MnemonicException.kt
diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt
new file mode 100644
index 000000000..f4b6885fd
--- /dev/null
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeCzech.kt
@@ -0,0 +1,2060 @@
+package io.iohk.atala.prism.apollo.utils.bip39.wordlists
+
+import kotlin.js.ExperimentalJsExport
+import kotlin.js.JsExport
+
+@OptIn(ExperimentalJsExport::class)
+@JsExport
+internal object MnemonicCodeCzech {
+ val wordList: List =
+ listOf(
+ "abdikace",
+ "abeceda",
+ "adresa",
+ "agrese",
+ "akce",
+ "aktovka",
+ "alej",
+ "alkohol",
+ "amputace",
+ "ananas",
+ "andulka",
+ "anekdota",
+ "anketa",
+ "antika",
+ "anulovat",
+ "archa",
+ "arogance",
+ "asfalt",
+ "asistent",
+ "aspirace",
+ "astma",
+ "astronom",
+ "atlas",
+ "atletika",
+ "atol",
+ "autobus",
+ "azyl",
+ "babka",
+ "bachor",
+ "bacil",
+ "baculka",
+ "badatel",
+ "bageta",
+ "bagr",
+ "bahno",
+ "bakterie",
+ "balada",
+ "baletka",
+ "balkon",
+ "balonek",
+ "balvan",
+ "balza",
+ "bambus",
+ "bankomat",
+ "barbar",
+ "baret",
+ "barman",
+ "baroko",
+ "barva",
+ "baterka",
+ "batoh",
+ "bavlna",
+ "bazalka",
+ "bazilika",
+ "bazuka",
+ "bedna",
+ "beran",
+ "beseda",
+ "bestie",
+ "beton",
+ "bezinka",
+ "bezmoc",
+ "beztak",
+ "bicykl",
+ "bidlo",
+ "biftek",
+ "bikiny",
+ "bilance",
+ "biograf",
+ "biolog",
+ "bitva",
+ "bizon",
+ "blahobyt",
+ "blatouch",
+ "blecha",
+ "bledule",
+ "blesk",
+ "blikat",
+ "blizna",
+ "blokovat",
+ "bloudit",
+ "blud",
+ "bobek",
+ "bobr",
+ "bodlina",
+ "bodnout",
+ "bohatost",
+ "bojkot",
+ "bojovat",
+ "bokorys",
+ "bolest",
+ "borec",
+ "borovice",
+ "bota",
+ "boubel",
+ "bouchat",
+ "bouda",
+ "boule",
+ "bourat",
+ "boxer",
+ "bradavka",
+ "brambora",
+ "branka",
+ "bratr",
+ "brepta",
+ "briketa",
+ "brko",
+ "brloh",
+ "bronz",
+ "broskev",
+ "brunetka",
+ "brusinka",
+ "brzda",
+ "brzy",
+ "bublina",
+ "bubnovat",
+ "buchta",
+ "buditel",
+ "budka",
+ "budova",
+ "bufet",
+ "bujarost",
+ "bukvice",
+ "buldok",
+ "bulva",
+ "bunda",
+ "bunkr",
+ "burza",
+ "butik",
+ "buvol",
+ "buzola",
+ "bydlet",
+ "bylina",
+ "bytovka",
+ "bzukot",
+ "capart",
+ "carevna",
+ "cedr",
+ "cedule",
+ "cejch",
+ "cejn",
+ "cela",
+ "celer",
+ "celkem",
+ "celnice",
+ "cenina",
+ "cennost",
+ "cenovka",
+ "centrum",
+ "cenzor",
+ "cestopis",
+ "cetka",
+ "chalupa",
+ "chapadlo",
+ "charita",
+ "chata",
+ "chechtat",
+ "chemie",
+ "chichot",
+ "chirurg",
+ "chlad",
+ "chleba",
+ "chlubit",
+ "chmel",
+ "chmura",
+ "chobot",
+ "chochol",
+ "chodba",
+ "cholera",
+ "chomout",
+ "chopit",
+ "choroba",
+ "chov",
+ "chrapot",
+ "chrlit",
+ "chrt",
+ "chrup",
+ "chtivost",
+ "chudina",
+ "chutnat",
+ "chvat",
+ "chvilka",
+ "chvost",
+ "chyba",
+ "chystat",
+ "chytit",
+ "cibule",
+ "cigareta",
+ "cihelna",
+ "cihla",
+ "cinkot",
+ "cirkus",
+ "cisterna",
+ "citace",
+ "citrus",
+ "cizinec",
+ "cizost",
+ "clona",
+ "cokoliv",
+ "couvat",
+ "ctitel",
+ "ctnost",
+ "cudnost",
+ "cuketa",
+ "cukr",
+ "cupot",
+ "cvaknout",
+ "cval",
+ "cvik",
+ "cvrkot",
+ "cyklista",
+ "daleko",
+ "dareba",
+ "datel",
+ "datum",
+ "dcera",
+ "debata",
+ "dechovka",
+ "decibel",
+ "deficit",
+ "deflace",
+ "dekl",
+ "dekret",
+ "demokrat",
+ "deprese",
+ "derby",
+ "deska",
+ "detektiv",
+ "dikobraz",
+ "diktovat",
+ "dioda",
+ "diplom",
+ "disk",
+ "displej",
+ "divadlo",
+ "divoch",
+ "dlaha",
+ "dlouho",
+ "dluhopis",
+ "dnes",
+ "dobro",
+ "dobytek",
+ "docent",
+ "dochutit",
+ "dodnes",
+ "dohled",
+ "dohoda",
+ "dohra",
+ "dojem",
+ "dojnice",
+ "doklad",
+ "dokola",
+ "doktor",
+ "dokument",
+ "dolar",
+ "doleva",
+ "dolina",
+ "doma",
+ "dominant",
+ "domluvit",
+ "domov",
+ "donutit",
+ "dopad",
+ "dopis",
+ "doplnit",
+ "doposud",
+ "doprovod",
+ "dopustit",
+ "dorazit",
+ "dorost",
+ "dort",
+ "dosah",
+ "doslov",
+ "dostatek",
+ "dosud",
+ "dosyta",
+ "dotaz",
+ "dotek",
+ "dotknout",
+ "doufat",
+ "doutnat",
+ "dovozce",
+ "dozadu",
+ "doznat",
+ "dozorce",
+ "drahota",
+ "drak",
+ "dramatik",
+ "dravec",
+ "draze",
+ "drdol",
+ "drobnost",
+ "drogerie",
+ "drozd",
+ "drsnost",
+ "drtit",
+ "drzost",
+ "duben",
+ "duchovno",
+ "dudek",
+ "duha",
+ "duhovka",
+ "dusit",
+ "dusno",
+ "dutost",
+ "dvojice",
+ "dvorec",
+ "dynamit",
+ "ekolog",
+ "ekonomie",
+ "elektron",
+ "elipsa",
+ "email",
+ "emise",
+ "emoce",
+ "empatie",
+ "epizoda",
+ "epocha",
+ "epopej",
+ "epos",
+ "esej",
+ "esence",
+ "eskorta",
+ "eskymo",
+ "etiketa",
+ "euforie",
+ "evoluce",
+ "exekuce",
+ "exkurze",
+ "expedice",
+ "exploze",
+ "export",
+ "extrakt",
+ "facka",
+ "fajfka",
+ "fakulta",
+ "fanatik",
+ "fantazie",
+ "farmacie",
+ "favorit",
+ "fazole",
+ "federace",
+ "fejeton",
+ "fenka",
+ "fialka",
+ "figurant",
+ "filozof",
+ "filtr",
+ "finance",
+ "finta",
+ "fixace",
+ "fjord",
+ "flanel",
+ "flirt",
+ "flotila",
+ "fond",
+ "fosfor",
+ "fotbal",
+ "fotka",
+ "foton",
+ "frakce",
+ "freska",
+ "fronta",
+ "fukar",
+ "funkce",
+ "fyzika",
+ "galeje",
+ "garant",
+ "genetika",
+ "geolog",
+ "gilotina",
+ "glazura",
+ "glejt",
+ "golem",
+ "golfista",
+ "gotika",
+ "graf",
+ "gramofon",
+ "granule",
+ "grep",
+ "gril",
+ "grog",
+ "groteska",
+ "guma",
+ "hadice",
+ "hadr",
+ "hala",
+ "halenka",
+ "hanba",
+ "hanopis",
+ "harfa",
+ "harpuna",
+ "havran",
+ "hebkost",
+ "hejkal",
+ "hejno",
+ "hejtman",
+ "hektar",
+ "helma",
+ "hematom",
+ "herec",
+ "herna",
+ "heslo",
+ "hezky",
+ "historik",
+ "hladovka",
+ "hlasivky",
+ "hlava",
+ "hledat",
+ "hlen",
+ "hlodavec",
+ "hloh",
+ "hloupost",
+ "hltat",
+ "hlubina",
+ "hluchota",
+ "hmat",
+ "hmota",
+ "hmyz",
+ "hnis",
+ "hnojivo",
+ "hnout",
+ "hoblina",
+ "hoboj",
+ "hoch",
+ "hodiny",
+ "hodlat",
+ "hodnota",
+ "hodovat",
+ "hojnost",
+ "hokej",
+ "holinka",
+ "holka",
+ "holub",
+ "homole",
+ "honitba",
+ "honorace",
+ "horal",
+ "horda",
+ "horizont",
+ "horko",
+ "horlivec",
+ "hormon",
+ "hornina",
+ "horoskop",
+ "horstvo",
+ "hospoda",
+ "hostina",
+ "hotovost",
+ "houba",
+ "houf",
+ "houpat",
+ "houska",
+ "hovor",
+ "hradba",
+ "hranice",
+ "hravost",
+ "hrazda",
+ "hrbolek",
+ "hrdina",
+ "hrdlo",
+ "hrdost",
+ "hrnek",
+ "hrobka",
+ "hromada",
+ "hrot",
+ "hrouda",
+ "hrozen",
+ "hrstka",
+ "hrubost",
+ "hryzat",
+ "hubenost",
+ "hubnout",
+ "hudba",
+ "hukot",
+ "humr",
+ "husita",
+ "hustota",
+ "hvozd",
+ "hybnost",
+ "hydrant",
+ "hygiena",
+ "hymna",
+ "hysterik",
+ "idylka",
+ "ihned",
+ "ikona",
+ "iluze",
+ "imunita",
+ "infekce",
+ "inflace",
+ "inkaso",
+ "inovace",
+ "inspekce",
+ "internet",
+ "invalida",
+ "investor",
+ "inzerce",
+ "ironie",
+ "jablko",
+ "jachta",
+ "jahoda",
+ "jakmile",
+ "jakost",
+ "jalovec",
+ "jantar",
+ "jarmark",
+ "jaro",
+ "jasan",
+ "jasno",
+ "jatka",
+ "javor",
+ "jazyk",
+ "jedinec",
+ "jedle",
+ "jednatel",
+ "jehlan",
+ "jekot",
+ "jelen",
+ "jelito",
+ "jemnost",
+ "jenom",
+ "jepice",
+ "jeseter",
+ "jevit",
+ "jezdec",
+ "jezero",
+ "jinak",
+ "jindy",
+ "jinoch",
+ "jiskra",
+ "jistota",
+ "jitrnice",
+ "jizva",
+ "jmenovat",
+ "jogurt",
+ "jurta",
+ "kabaret",
+ "kabel",
+ "kabinet",
+ "kachna",
+ "kadet",
+ "kadidlo",
+ "kahan",
+ "kajak",
+ "kajuta",
+ "kakao",
+ "kaktus",
+ "kalamita",
+ "kalhoty",
+ "kalibr",
+ "kalnost",
+ "kamera",
+ "kamkoliv",
+ "kamna",
+ "kanibal",
+ "kanoe",
+ "kantor",
+ "kapalina",
+ "kapela",
+ "kapitola",
+ "kapka",
+ "kaple",
+ "kapota",
+ "kapr",
+ "kapusta",
+ "kapybara",
+ "karamel",
+ "karotka",
+ "karton",
+ "kasa",
+ "katalog",
+ "katedra",
+ "kauce",
+ "kauza",
+ "kavalec",
+ "kazajka",
+ "kazeta",
+ "kazivost",
+ "kdekoliv",
+ "kdesi",
+ "kedluben",
+ "kemp",
+ "keramika",
+ "kino",
+ "klacek",
+ "kladivo",
+ "klam",
+ "klapot",
+ "klasika",
+ "klaun",
+ "klec",
+ "klenba",
+ "klepat",
+ "klesnout",
+ "klid",
+ "klima",
+ "klisna",
+ "klobouk",
+ "klokan",
+ "klopa",
+ "kloub",
+ "klubovna",
+ "klusat",
+ "kluzkost",
+ "kmen",
+ "kmitat",
+ "kmotr",
+ "kniha",
+ "knot",
+ "koalice",
+ "koberec",
+ "kobka",
+ "kobliha",
+ "kobyla",
+ "kocour",
+ "kohout",
+ "kojenec",
+ "kokos",
+ "koktejl",
+ "kolaps",
+ "koleda",
+ "kolize",
+ "kolo",
+ "komando",
+ "kometa",
+ "komik",
+ "komnata",
+ "komora",
+ "kompas",
+ "komunita",
+ "konat",
+ "koncept",
+ "kondice",
+ "konec",
+ "konfese",
+ "kongres",
+ "konina",
+ "konkurs",
+ "kontakt",
+ "konzerva",
+ "kopanec",
+ "kopie",
+ "kopnout",
+ "koprovka",
+ "korbel",
+ "korektor",
+ "kormidlo",
+ "koroptev",
+ "korpus",
+ "koruna",
+ "koryto",
+ "korzet",
+ "kosatec",
+ "kostka",
+ "kotel",
+ "kotleta",
+ "kotoul",
+ "koukat",
+ "koupelna",
+ "kousek",
+ "kouzlo",
+ "kovboj",
+ "koza",
+ "kozoroh",
+ "krabice",
+ "krach",
+ "krajina",
+ "kralovat",
+ "krasopis",
+ "kravata",
+ "kredit",
+ "krejcar",
+ "kresba",
+ "kreveta",
+ "kriket",
+ "kritik",
+ "krize",
+ "krkavec",
+ "krmelec",
+ "krmivo",
+ "krocan",
+ "krok",
+ "kronika",
+ "kropit",
+ "kroupa",
+ "krovka",
+ "krtek",
+ "kruhadlo",
+ "krupice",
+ "krutost",
+ "krvinka",
+ "krychle",
+ "krypta",
+ "krystal",
+ "kryt",
+ "kudlanka",
+ "kufr",
+ "kujnost",
+ "kukla",
+ "kulajda",
+ "kulich",
+ "kulka",
+ "kulomet",
+ "kultura",
+ "kuna",
+ "kupodivu",
+ "kurt",
+ "kurzor",
+ "kutil",
+ "kvalita",
+ "kvasinka",
+ "kvestor",
+ "kynolog",
+ "kyselina",
+ "kytara",
+ "kytice",
+ "kytka",
+ "kytovec",
+ "kyvadlo",
+ "labrador",
+ "lachtan",
+ "ladnost",
+ "laik",
+ "lakomec",
+ "lamela",
+ "lampa",
+ "lanovka",
+ "lasice",
+ "laso",
+ "lastura",
+ "latinka",
+ "lavina",
+ "lebka",
+ "leckdy",
+ "leden",
+ "lednice",
+ "ledovka",
+ "ledvina",
+ "legenda",
+ "legie",
+ "legrace",
+ "lehce",
+ "lehkost",
+ "lehnout",
+ "lektvar",
+ "lenochod",
+ "lentilka",
+ "lepenka",
+ "lepidlo",
+ "letadlo",
+ "letec",
+ "letmo",
+ "letokruh",
+ "levhart",
+ "levitace",
+ "levobok",
+ "libra",
+ "lichotka",
+ "lidojed",
+ "lidskost",
+ "lihovina",
+ "lijavec",
+ "lilek",
+ "limetka",
+ "linie",
+ "linka",
+ "linoleum",
+ "listopad",
+ "litina",
+ "litovat",
+ "lobista",
+ "lodivod",
+ "logika",
+ "logoped",
+ "lokalita",
+ "loket",
+ "lomcovat",
+ "lopata",
+ "lopuch",
+ "lord",
+ "losos",
+ "lotr",
+ "loudal",
+ "louh",
+ "louka",
+ "louskat",
+ "lovec",
+ "lstivost",
+ "lucerna",
+ "lucifer",
+ "lump",
+ "lusk",
+ "lustrace",
+ "lvice",
+ "lyra",
+ "lyrika",
+ "lysina",
+ "madam",
+ "madlo",
+ "magistr",
+ "mahagon",
+ "majetek",
+ "majitel",
+ "majorita",
+ "makak",
+ "makovice",
+ "makrela",
+ "malba",
+ "malina",
+ "malovat",
+ "malvice",
+ "maminka",
+ "mandle",
+ "manko",
+ "marnost",
+ "masakr",
+ "maskot",
+ "masopust",
+ "matice",
+ "matrika",
+ "maturita",
+ "mazanec",
+ "mazivo",
+ "mazlit",
+ "mazurka",
+ "mdloba",
+ "mechanik",
+ "meditace",
+ "medovina",
+ "melasa",
+ "meloun",
+ "mentolka",
+ "metla",
+ "metoda",
+ "metr",
+ "mezera",
+ "migrace",
+ "mihnout",
+ "mihule",
+ "mikina",
+ "mikrofon",
+ "milenec",
+ "milimetr",
+ "milost",
+ "mimika",
+ "mincovna",
+ "minibar",
+ "minomet",
+ "minulost",
+ "miska",
+ "mistr",
+ "mixovat",
+ "mladost",
+ "mlha",
+ "mlhovina",
+ "mlok",
+ "mlsat",
+ "mluvit",
+ "mnich",
+ "mnohem",
+ "mobil",
+ "mocnost",
+ "modelka",
+ "modlitba",
+ "mohyla",
+ "mokro",
+ "molekula",
+ "momentka",
+ "monarcha",
+ "monokl",
+ "monstrum",
+ "montovat",
+ "monzun",
+ "mosaz",
+ "moskyt",
+ "most",
+ "motivace",
+ "motorka",
+ "motyka",
+ "moucha",
+ "moudrost",
+ "mozaika",
+ "mozek",
+ "mozol",
+ "mramor",
+ "mravenec",
+ "mrkev",
+ "mrtvola",
+ "mrzet",
+ "mrzutost",
+ "mstitel",
+ "mudrc",
+ "muflon",
+ "mulat",
+ "mumie",
+ "munice",
+ "muset",
+ "mutace",
+ "muzeum",
+ "muzikant",
+ "myslivec",
+ "mzda",
+ "nabourat",
+ "nachytat",
+ "nadace",
+ "nadbytek",
+ "nadhoz",
+ "nadobro",
+ "nadpis",
+ "nahlas",
+ "nahnat",
+ "nahodile",
+ "nahradit",
+ "naivita",
+ "najednou",
+ "najisto",
+ "najmout",
+ "naklonit",
+ "nakonec",
+ "nakrmit",
+ "nalevo",
+ "namazat",
+ "namluvit",
+ "nanometr",
+ "naoko",
+ "naopak",
+ "naostro",
+ "napadat",
+ "napevno",
+ "naplnit",
+ "napnout",
+ "naposled",
+ "naprosto",
+ "narodit",
+ "naruby",
+ "narychlo",
+ "nasadit",
+ "nasekat",
+ "naslepo",
+ "nastat",
+ "natolik",
+ "navenek",
+ "navrch",
+ "navzdory",
+ "nazvat",
+ "nebe",
+ "nechat",
+ "necky",
+ "nedaleko",
+ "nedbat",
+ "neduh",
+ "negace",
+ "nehet",
+ "nehoda",
+ "nejen",
+ "nejprve",
+ "neklid",
+ "nelibost",
+ "nemilost",
+ "nemoc",
+ "neochota",
+ "neonka",
+ "nepokoj",
+ "nerost",
+ "nerv",
+ "nesmysl",
+ "nesoulad",
+ "netvor",
+ "neuron",
+ "nevina",
+ "nezvykle",
+ "nicota",
+ "nijak",
+ "nikam",
+ "nikdy",
+ "nikl",
+ "nikterak",
+ "nitro",
+ "nocleh",
+ "nohavice",
+ "nominace",
+ "nora",
+ "norek",
+ "nositel",
+ "nosnost",
+ "nouze",
+ "noviny",
+ "novota",
+ "nozdra",
+ "nuda",
+ "nudle",
+ "nuget",
+ "nutit",
+ "nutnost",
+ "nutrie",
+ "nymfa",
+ "obal",
+ "obarvit",
+ "obava",
+ "obdiv",
+ "obec",
+ "obehnat",
+ "obejmout",
+ "obezita",
+ "obhajoba",
+ "obilnice",
+ "objasnit",
+ "objekt",
+ "obklopit",
+ "oblast",
+ "oblek",
+ "obliba",
+ "obloha",
+ "obluda",
+ "obnos",
+ "obohatit",
+ "obojek",
+ "obout",
+ "obrazec",
+ "obrna",
+ "obruba",
+ "obrys",
+ "obsah",
+ "obsluha",
+ "obstarat",
+ "obuv",
+ "obvaz",
+ "obvinit",
+ "obvod",
+ "obvykle",
+ "obyvatel",
+ "obzor",
+ "ocas",
+ "ocel",
+ "ocenit",
+ "ochladit",
+ "ochota",
+ "ochrana",
+ "ocitnout",
+ "odboj",
+ "odbyt",
+ "odchod",
+ "odcizit",
+ "odebrat",
+ "odeslat",
+ "odevzdat",
+ "odezva",
+ "odhadce",
+ "odhodit",
+ "odjet",
+ "odjinud",
+ "odkaz",
+ "odkoupit",
+ "odliv",
+ "odluka",
+ "odmlka",
+ "odolnost",
+ "odpad",
+ "odpis",
+ "odplout",
+ "odpor",
+ "odpustit",
+ "odpykat",
+ "odrazka",
+ "odsoudit",
+ "odstup",
+ "odsun",
+ "odtok",
+ "odtud",
+ "odvaha",
+ "odveta",
+ "odvolat",
+ "odvracet",
+ "odznak",
+ "ofina",
+ "ofsajd",
+ "ohlas",
+ "ohnisko",
+ "ohrada",
+ "ohrozit",
+ "ohryzek",
+ "okap",
+ "okenice",
+ "oklika",
+ "okno",
+ "okouzlit",
+ "okovy",
+ "okrasa",
+ "okres",
+ "okrsek",
+ "okruh",
+ "okupant",
+ "okurka",
+ "okusit",
+ "olejnina",
+ "olizovat",
+ "omak",
+ "omeleta",
+ "omezit",
+ "omladina",
+ "omlouvat",
+ "omluva",
+ "omyl",
+ "onehdy",
+ "opakovat",
+ "opasek",
+ "operace",
+ "opice",
+ "opilost",
+ "opisovat",
+ "opora",
+ "opozice",
+ "opravdu",
+ "oproti",
+ "orbital",
+ "orchestr",
+ "orgie",
+ "orlice",
+ "orloj",
+ "ortel",
+ "osada",
+ "oschnout",
+ "osika",
+ "osivo",
+ "oslava",
+ "oslepit",
+ "oslnit",
+ "oslovit",
+ "osnova",
+ "osoba",
+ "osolit",
+ "ospalec",
+ "osten",
+ "ostraha",
+ "ostuda",
+ "ostych",
+ "osvojit",
+ "oteplit",
+ "otisk",
+ "otop",
+ "otrhat",
+ "otrlost",
+ "otrok",
+ "otruby",
+ "otvor",
+ "ovanout",
+ "ovar",
+ "oves",
+ "ovlivnit",
+ "ovoce",
+ "oxid",
+ "ozdoba",
+ "pachatel",
+ "pacient",
+ "padouch",
+ "pahorek",
+ "pakt",
+ "palanda",
+ "palec",
+ "palivo",
+ "paluba",
+ "pamflet",
+ "pamlsek",
+ "panenka",
+ "panika",
+ "panna",
+ "panovat",
+ "panstvo",
+ "pantofle",
+ "paprika",
+ "parketa",
+ "parodie",
+ "parta",
+ "paruka",
+ "paryba",
+ "paseka",
+ "pasivita",
+ "pastelka",
+ "patent",
+ "patrona",
+ "pavouk",
+ "pazneht",
+ "pazourek",
+ "pecka",
+ "pedagog",
+ "pejsek",
+ "peklo",
+ "peloton",
+ "penalta",
+ "pendrek",
+ "penze",
+ "periskop",
+ "pero",
+ "pestrost",
+ "petarda",
+ "petice",
+ "petrolej",
+ "pevnina",
+ "pexeso",
+ "pianista",
+ "piha",
+ "pijavice",
+ "pikle",
+ "piknik",
+ "pilina",
+ "pilnost",
+ "pilulka",
+ "pinzeta",
+ "pipeta",
+ "pisatel",
+ "pistole",
+ "pitevna",
+ "pivnice",
+ "pivovar",
+ "placenta",
+ "plakat",
+ "plamen",
+ "planeta",
+ "plastika",
+ "platit",
+ "plavidlo",
+ "plaz",
+ "plech",
+ "plemeno",
+ "plenta",
+ "ples",
+ "pletivo",
+ "plevel",
+ "plivat",
+ "plnit",
+ "plno",
+ "plocha",
+ "plodina",
+ "plomba",
+ "plout",
+ "pluk",
+ "plyn",
+ "pobavit",
+ "pobyt",
+ "pochod",
+ "pocit",
+ "poctivec",
+ "podat",
+ "podcenit",
+ "podepsat",
+ "podhled",
+ "podivit",
+ "podklad",
+ "podmanit",
+ "podnik",
+ "podoba",
+ "podpora",
+ "podraz",
+ "podstata",
+ "podvod",
+ "podzim",
+ "poezie",
+ "pohanka",
+ "pohnutka",
+ "pohovor",
+ "pohroma",
+ "pohyb",
+ "pointa",
+ "pojistka",
+ "pojmout",
+ "pokazit",
+ "pokles",
+ "pokoj",
+ "pokrok",
+ "pokuta",
+ "pokyn",
+ "poledne",
+ "polibek",
+ "polknout",
+ "poloha",
+ "polynom",
+ "pomalu",
+ "pominout",
+ "pomlka",
+ "pomoc",
+ "pomsta",
+ "pomyslet",
+ "ponechat",
+ "ponorka",
+ "ponurost",
+ "popadat",
+ "popel",
+ "popisek",
+ "poplach",
+ "poprosit",
+ "popsat",
+ "popud",
+ "poradce",
+ "porce",
+ "porod",
+ "porucha",
+ "poryv",
+ "posadit",
+ "posed",
+ "posila",
+ "poskok",
+ "poslanec",
+ "posoudit",
+ "pospolu",
+ "postava",
+ "posudek",
+ "posyp",
+ "potah",
+ "potkan",
+ "potlesk",
+ "potomek",
+ "potrava",
+ "potupa",
+ "potvora",
+ "poukaz",
+ "pouto",
+ "pouzdro",
+ "povaha",
+ "povidla",
+ "povlak",
+ "povoz",
+ "povrch",
+ "povstat",
+ "povyk",
+ "povzdech",
+ "pozdrav",
+ "pozemek",
+ "poznatek",
+ "pozor",
+ "pozvat",
+ "pracovat",
+ "prahory",
+ "praktika",
+ "prales",
+ "praotec",
+ "praporek",
+ "prase",
+ "pravda",
+ "princip",
+ "prkno",
+ "probudit",
+ "procento",
+ "prodej",
+ "profese",
+ "prohra",
+ "projekt",
+ "prolomit",
+ "promile",
+ "pronikat",
+ "propad",
+ "prorok",
+ "prosba",
+ "proton",
+ "proutek",
+ "provaz",
+ "prskavka",
+ "prsten",
+ "prudkost",
+ "prut",
+ "prvek",
+ "prvohory",
+ "psanec",
+ "psovod",
+ "pstruh",
+ "ptactvo",
+ "puberta",
+ "puch",
+ "pudl",
+ "pukavec",
+ "puklina",
+ "pukrle",
+ "pult",
+ "pumpa",
+ "punc",
+ "pupen",
+ "pusa",
+ "pusinka",
+ "pustina",
+ "putovat",
+ "putyka",
+ "pyramida",
+ "pysk",
+ "pytel",
+ "racek",
+ "rachot",
+ "radiace",
+ "radnice",
+ "radon",
+ "raft",
+ "ragby",
+ "raketa",
+ "rakovina",
+ "rameno",
+ "rampouch",
+ "rande",
+ "rarach",
+ "rarita",
+ "rasovna",
+ "rastr",
+ "ratolest",
+ "razance",
+ "razidlo",
+ "reagovat",
+ "reakce",
+ "recept",
+ "redaktor",
+ "referent",
+ "reflex",
+ "rejnok",
+ "reklama",
+ "rekord",
+ "rekrut",
+ "rektor",
+ "reputace",
+ "revize",
+ "revma",
+ "revolver",
+ "rezerva",
+ "riskovat",
+ "riziko",
+ "robotika",
+ "rodokmen",
+ "rohovka",
+ "rokle",
+ "rokoko",
+ "romaneto",
+ "ropovod",
+ "ropucha",
+ "rorejs",
+ "rosol",
+ "rostlina",
+ "rotmistr",
+ "rotoped",
+ "rotunda",
+ "roubenka",
+ "roucho",
+ "roup",
+ "roura",
+ "rovina",
+ "rovnice",
+ "rozbor",
+ "rozchod",
+ "rozdat",
+ "rozeznat",
+ "rozhodce",
+ "rozinka",
+ "rozjezd",
+ "rozkaz",
+ "rozloha",
+ "rozmar",
+ "rozpad",
+ "rozruch",
+ "rozsah",
+ "roztok",
+ "rozum",
+ "rozvod",
+ "rubrika",
+ "ruchadlo",
+ "rukavice",
+ "rukopis",
+ "ryba",
+ "rybolov",
+ "rychlost",
+ "rydlo",
+ "rypadlo",
+ "rytina",
+ "ryzost",
+ "sadista",
+ "sahat",
+ "sako",
+ "samec",
+ "samizdat",
+ "samota",
+ "sanitka",
+ "sardinka",
+ "sasanka",
+ "satelit",
+ "sazba",
+ "sazenice",
+ "sbor",
+ "schovat",
+ "sebranka",
+ "secese",
+ "sedadlo",
+ "sediment",
+ "sedlo",
+ "sehnat",
+ "sejmout",
+ "sekera",
+ "sekta",
+ "sekunda",
+ "sekvoje",
+ "semeno",
+ "seno",
+ "servis",
+ "sesadit",
+ "seshora",
+ "seskok",
+ "seslat",
+ "sestra",
+ "sesuv",
+ "sesypat",
+ "setba",
+ "setina",
+ "setkat",
+ "setnout",
+ "setrvat",
+ "sever",
+ "seznam",
+ "shoda",
+ "shrnout",
+ "sifon",
+ "silnice",
+ "sirka",
+ "sirotek",
+ "sirup",
+ "situace",
+ "skafandr",
+ "skalisko",
+ "skanzen",
+ "skaut",
+ "skeptik",
+ "skica",
+ "skladba",
+ "sklenice",
+ "sklo",
+ "skluz",
+ "skoba",
+ "skokan",
+ "skoro",
+ "skripta",
+ "skrz",
+ "skupina",
+ "skvost",
+ "skvrna",
+ "slabika",
+ "sladidlo",
+ "slanina",
+ "slast",
+ "slavnost",
+ "sledovat",
+ "slepec",
+ "sleva",
+ "slezina",
+ "slib",
+ "slina",
+ "sliznice",
+ "slon",
+ "sloupek",
+ "slovo",
+ "sluch",
+ "sluha",
+ "slunce",
+ "slupka",
+ "slza",
+ "smaragd",
+ "smetana",
+ "smilstvo",
+ "smlouva",
+ "smog",
+ "smrad",
+ "smrk",
+ "smrtka",
+ "smutek",
+ "smysl",
+ "snad",
+ "snaha",
+ "snob",
+ "sobota",
+ "socha",
+ "sodovka",
+ "sokol",
+ "sopka",
+ "sotva",
+ "souboj",
+ "soucit",
+ "soudce",
+ "souhlas",
+ "soulad",
+ "soumrak",
+ "souprava",
+ "soused",
+ "soutok",
+ "souviset",
+ "spalovna",
+ "spasitel",
+ "spis",
+ "splav",
+ "spodek",
+ "spojenec",
+ "spolu",
+ "sponzor",
+ "spornost",
+ "spousta",
+ "sprcha",
+ "spustit",
+ "sranda",
+ "sraz",
+ "srdce",
+ "srna",
+ "srnec",
+ "srovnat",
+ "srpen",
+ "srst",
+ "srub",
+ "stanice",
+ "starosta",
+ "statika",
+ "stavba",
+ "stehno",
+ "stezka",
+ "stodola",
+ "stolek",
+ "stopa",
+ "storno",
+ "stoupat",
+ "strach",
+ "stres",
+ "strhnout",
+ "strom",
+ "struna",
+ "studna",
+ "stupnice",
+ "stvol",
+ "styk",
+ "subjekt",
+ "subtropy",
+ "suchar",
+ "sudost",
+ "sukno",
+ "sundat",
+ "sunout",
+ "surikata",
+ "surovina",
+ "svah",
+ "svalstvo",
+ "svetr",
+ "svatba",
+ "svazek",
+ "svisle",
+ "svitek",
+ "svoboda",
+ "svodidlo",
+ "svorka",
+ "svrab",
+ "sykavka",
+ "sykot",
+ "synek",
+ "synovec",
+ "sypat",
+ "sypkost",
+ "syrovost",
+ "sysel",
+ "sytost",
+ "tabletka",
+ "tabule",
+ "tahoun",
+ "tajemno",
+ "tajfun",
+ "tajga",
+ "tajit",
+ "tajnost",
+ "taktika",
+ "tamhle",
+ "tampon",
+ "tancovat",
+ "tanec",
+ "tanker",
+ "tapeta",
+ "tavenina",
+ "tazatel",
+ "technika",
+ "tehdy",
+ "tekutina",
+ "telefon",
+ "temnota",
+ "tendence",
+ "tenista",
+ "tenor",
+ "teplota",
+ "tepna",
+ "teprve",
+ "terapie",
+ "termoska",
+ "textil",
+ "ticho",
+ "tiskopis",
+ "titulek",
+ "tkadlec",
+ "tkanina",
+ "tlapka",
+ "tleskat",
+ "tlukot",
+ "tlupa",
+ "tmel",
+ "toaleta",
+ "topinka",
+ "topol",
+ "torzo",
+ "touha",
+ "toulec",
+ "tradice",
+ "traktor",
+ "tramp",
+ "trasa",
+ "traverza",
+ "trefit",
+ "trest",
+ "trezor",
+ "trhavina",
+ "trhlina",
+ "trochu",
+ "trojice",
+ "troska",
+ "trouba",
+ "trpce",
+ "trpitel",
+ "trpkost",
+ "trubec",
+ "truchlit",
+ "truhlice",
+ "trus",
+ "trvat",
+ "tudy",
+ "tuhnout",
+ "tuhost",
+ "tundra",
+ "turista",
+ "turnaj",
+ "tuzemsko",
+ "tvaroh",
+ "tvorba",
+ "tvrdost",
+ "tvrz",
+ "tygr",
+ "tykev",
+ "ubohost",
+ "uboze",
+ "ubrat",
+ "ubrousek",
+ "ubrus",
+ "ubytovna",
+ "ucho",
+ "uctivost",
+ "udivit",
+ "uhradit",
+ "ujednat",
+ "ujistit",
+ "ujmout",
+ "ukazatel",
+ "uklidnit",
+ "uklonit",
+ "ukotvit",
+ "ukrojit",
+ "ulice",
+ "ulita",
+ "ulovit",
+ "umyvadlo",
+ "unavit",
+ "uniforma",
+ "uniknout",
+ "upadnout",
+ "uplatnit",
+ "uplynout",
+ "upoutat",
+ "upravit",
+ "uran",
+ "urazit",
+ "usednout",
+ "usilovat",
+ "usmrtit",
+ "usnadnit",
+ "usnout",
+ "usoudit",
+ "ustlat",
+ "ustrnout",
+ "utahovat",
+ "utkat",
+ "utlumit",
+ "utonout",
+ "utopenec",
+ "utrousit",
+ "uvalit",
+ "uvolnit",
+ "uvozovka",
+ "uzdravit",
+ "uzel",
+ "uzenina",
+ "uzlina",
+ "uznat",
+ "vagon",
+ "valcha",
+ "valoun",
+ "vana",
+ "vandal",
+ "vanilka",
+ "varan",
+ "varhany",
+ "varovat",
+ "vcelku",
+ "vchod",
+ "vdova",
+ "vedro",
+ "vegetace",
+ "vejce",
+ "velbloud",
+ "veletrh",
+ "velitel",
+ "velmoc",
+ "velryba",
+ "venkov",
+ "veranda",
+ "verze",
+ "veselka",
+ "veskrze",
+ "vesnice",
+ "vespodu",
+ "vesta",
+ "veterina",
+ "veverka",
+ "vibrace",
+ "vichr",
+ "videohra",
+ "vidina",
+ "vidle",
+ "vila",
+ "vinice",
+ "viset",
+ "vitalita",
+ "vize",
+ "vizitka",
+ "vjezd",
+ "vklad",
+ "vkus",
+ "vlajka",
+ "vlak",
+ "vlasec",
+ "vlevo",
+ "vlhkost",
+ "vliv",
+ "vlnovka",
+ "vloupat",
+ "vnucovat",
+ "vnuk",
+ "voda",
+ "vodivost",
+ "vodoznak",
+ "vodstvo",
+ "vojensky",
+ "vojna",
+ "vojsko",
+ "volant",
+ "volba",
+ "volit",
+ "volno",
+ "voskovka",
+ "vozidlo",
+ "vozovna",
+ "vpravo",
+ "vrabec",
+ "vracet",
+ "vrah",
+ "vrata",
+ "vrba",
+ "vrcholek",
+ "vrhat",
+ "vrstva",
+ "vrtule",
+ "vsadit",
+ "vstoupit",
+ "vstup",
+ "vtip",
+ "vybavit",
+ "vybrat",
+ "vychovat",
+ "vydat",
+ "vydra",
+ "vyfotit",
+ "vyhledat",
+ "vyhnout",
+ "vyhodit",
+ "vyhradit",
+ "vyhubit",
+ "vyjasnit",
+ "vyjet",
+ "vyjmout",
+ "vyklopit",
+ "vykonat",
+ "vylekat",
+ "vymazat",
+ "vymezit",
+ "vymizet",
+ "vymyslet",
+ "vynechat",
+ "vynikat",
+ "vynutit",
+ "vypadat",
+ "vyplatit",
+ "vypravit",
+ "vypustit",
+ "vyrazit",
+ "vyrovnat",
+ "vyrvat",
+ "vyslovit",
+ "vysoko",
+ "vystavit",
+ "vysunout",
+ "vysypat",
+ "vytasit",
+ "vytesat",
+ "vytratit",
+ "vyvinout",
+ "vyvolat",
+ "vyvrhel",
+ "vyzdobit",
+ "vyznat",
+ "vzadu",
+ "vzbudit",
+ "vzchopit",
+ "vzdor",
+ "vzduch",
+ "vzdychat",
+ "vzestup",
+ "vzhledem",
+ "vzkaz",
+ "vzlykat",
+ "vznik",
+ "vzorek",
+ "vzpoura",
+ "vztah",
+ "vztek",
+ "xylofon",
+ "zabrat",
+ "zabydlet",
+ "zachovat",
+ "zadarmo",
+ "zadusit",
+ "zafoukat",
+ "zahltit",
+ "zahodit",
+ "zahrada",
+ "zahynout",
+ "zajatec",
+ "zajet",
+ "zajistit",
+ "zaklepat",
+ "zakoupit",
+ "zalepit",
+ "zamezit",
+ "zamotat",
+ "zamyslet",
+ "zanechat",
+ "zanikat",
+ "zaplatit",
+ "zapojit",
+ "zapsat",
+ "zarazit",
+ "zastavit",
+ "zasunout",
+ "zatajit",
+ "zatemnit",
+ "zatknout",
+ "zaujmout",
+ "zavalit",
+ "zavelet",
+ "zavinit",
+ "zavolat",
+ "zavrtat",
+ "zazvonit",
+ "zbavit",
+ "zbrusu",
+ "zbudovat",
+ "zbytek",
+ "zdaleka",
+ "zdarma",
+ "zdatnost",
+ "zdivo",
+ "zdobit",
+ "zdroj",
+ "zdvih",
+ "zdymadlo",
+ "zelenina",
+ "zeman",
+ "zemina",
+ "zeptat",
+ "zezadu",
+ "zezdola",
+ "zhatit",
+ "zhltnout",
+ "zhluboka",
+ "zhotovit",
+ "zhruba",
+ "zima",
+ "zimnice",
+ "zjemnit",
+ "zklamat",
+ "zkoumat",
+ "zkratka",
+ "zkumavka",
+ "zlato",
+ "zlehka",
+ "zloba",
+ "zlom",
+ "zlost",
+ "zlozvyk",
+ "zmapovat",
+ "zmar",
+ "zmatek",
+ "zmije",
+ "zmizet",
+ "zmocnit",
+ "zmodrat",
+ "zmrzlina",
+ "zmutovat",
+ "znak",
+ "znalost",
+ "znamenat",
+ "znovu",
+ "zobrazit",
+ "zotavit",
+ "zoubek",
+ "zoufale",
+ "zplodit",
+ "zpomalit",
+ "zprava",
+ "zprostit",
+ "zprudka",
+ "zprvu",
+ "zrada",
+ "zranit",
+ "zrcadlo",
+ "zrnitost",
+ "zrno",
+ "zrovna",
+ "zrychlit",
+ "zrzavost",
+ "zticha",
+ "ztratit",
+ "zubovina",
+ "zubr",
+ "zvednout",
+ "zvenku",
+ "zvesela",
+ "zvon",
+ "zvrat",
+ "zvukovod",
+ "zvyk"
+ )
+}
diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt
new file mode 100644
index 000000000..e90a5af69
--- /dev/null
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeEnglish.kt
@@ -0,0 +1,2060 @@
+package io.iohk.atala.prism.apollo.utils.bip39.wordlists
+
+import kotlin.js.ExperimentalJsExport
+import kotlin.js.JsExport
+
+@OptIn(ExperimentalJsExport::class)
+@JsExport
+internal object MnemonicCodeEnglish {
+ val wordList: List =
+ listOf(
+ "abandon",
+ "ability",
+ "able",
+ "about",
+ "above",
+ "absent",
+ "absorb",
+ "abstract",
+ "absurd",
+ "abuse",
+ "access",
+ "accident",
+ "account",
+ "accuse",
+ "achieve",
+ "acid",
+ "acoustic",
+ "acquire",
+ "across",
+ "act",
+ "action",
+ "actor",
+ "actress",
+ "actual",
+ "adapt",
+ "add",
+ "addict",
+ "address",
+ "adjust",
+ "admit",
+ "adult",
+ "advance",
+ "advice",
+ "aerobic",
+ "affair",
+ "afford",
+ "afraid",
+ "again",
+ "age",
+ "agent",
+ "agree",
+ "ahead",
+ "aim",
+ "air",
+ "airport",
+ "aisle",
+ "alarm",
+ "album",
+ "alcohol",
+ "alert",
+ "alien",
+ "all",
+ "alley",
+ "allow",
+ "almost",
+ "alone",
+ "alpha",
+ "already",
+ "also",
+ "alter",
+ "always",
+ "amateur",
+ "amazing",
+ "among",
+ "amount",
+ "amused",
+ "analyst",
+ "anchor",
+ "ancient",
+ "anger",
+ "angle",
+ "angry",
+ "animal",
+ "ankle",
+ "announce",
+ "annual",
+ "another",
+ "answer",
+ "antenna",
+ "antique",
+ "anxiety",
+ "any",
+ "apart",
+ "apology",
+ "appear",
+ "apple",
+ "approve",
+ "april",
+ "arch",
+ "arctic",
+ "area",
+ "arena",
+ "argue",
+ "arm",
+ "armed",
+ "armor",
+ "army",
+ "around",
+ "arrange",
+ "arrest",
+ "arrive",
+ "arrow",
+ "art",
+ "artefact",
+ "artist",
+ "artwork",
+ "ask",
+ "aspect",
+ "assault",
+ "asset",
+ "assist",
+ "assume",
+ "asthma",
+ "athlete",
+ "atom",
+ "attack",
+ "attend",
+ "attitude",
+ "attract",
+ "auction",
+ "audit",
+ "august",
+ "aunt",
+ "author",
+ "auto",
+ "autumn",
+ "average",
+ "avocado",
+ "avoid",
+ "awake",
+ "aware",
+ "away",
+ "awesome",
+ "awful",
+ "awkward",
+ "axis",
+ "baby",
+ "bachelor",
+ "bacon",
+ "badge",
+ "bag",
+ "balance",
+ "balcony",
+ "ball",
+ "bamboo",
+ "banana",
+ "banner",
+ "bar",
+ "barely",
+ "bargain",
+ "barrel",
+ "base",
+ "basic",
+ "basket",
+ "battle",
+ "beach",
+ "bean",
+ "beauty",
+ "because",
+ "become",
+ "beef",
+ "before",
+ "begin",
+ "behave",
+ "behind",
+ "believe",
+ "below",
+ "belt",
+ "bench",
+ "benefit",
+ "best",
+ "betray",
+ "better",
+ "between",
+ "beyond",
+ "bicycle",
+ "bid",
+ "bike",
+ "bind",
+ "biology",
+ "bird",
+ "birth",
+ "bitter",
+ "black",
+ "blade",
+ "blame",
+ "blanket",
+ "blast",
+ "bleak",
+ "bless",
+ "blind",
+ "blood",
+ "blossom",
+ "blouse",
+ "blue",
+ "blur",
+ "blush",
+ "board",
+ "boat",
+ "body",
+ "boil",
+ "bomb",
+ "bone",
+ "bonus",
+ "book",
+ "boost",
+ "border",
+ "boring",
+ "borrow",
+ "boss",
+ "bottom",
+ "bounce",
+ "box",
+ "boy",
+ "bracket",
+ "brain",
+ "brand",
+ "brass",
+ "brave",
+ "bread",
+ "breeze",
+ "brick",
+ "bridge",
+ "brief",
+ "bright",
+ "bring",
+ "brisk",
+ "broccoli",
+ "broken",
+ "bronze",
+ "broom",
+ "brother",
+ "brown",
+ "brush",
+ "bubble",
+ "buddy",
+ "budget",
+ "buffalo",
+ "build",
+ "bulb",
+ "bulk",
+ "bullet",
+ "bundle",
+ "bunker",
+ "burden",
+ "burger",
+ "burst",
+ "bus",
+ "business",
+ "busy",
+ "butter",
+ "buyer",
+ "buzz",
+ "cabbage",
+ "cabin",
+ "cable",
+ "cactus",
+ "cage",
+ "cake",
+ "call",
+ "calm",
+ "camera",
+ "camp",
+ "can",
+ "canal",
+ "cancel",
+ "candy",
+ "cannon",
+ "canoe",
+ "canvas",
+ "canyon",
+ "capable",
+ "capital",
+ "captain",
+ "car",
+ "carbon",
+ "card",
+ "cargo",
+ "carpet",
+ "carry",
+ "cart",
+ "case",
+ "cash",
+ "casino",
+ "castle",
+ "casual",
+ "cat",
+ "catalog",
+ "catch",
+ "category",
+ "cattle",
+ "caught",
+ "cause",
+ "caution",
+ "cave",
+ "ceiling",
+ "celery",
+ "cement",
+ "census",
+ "century",
+ "cereal",
+ "certain",
+ "chair",
+ "chalk",
+ "champion",
+ "change",
+ "chaos",
+ "chapter",
+ "charge",
+ "chase",
+ "chat",
+ "cheap",
+ "check",
+ "cheese",
+ "chef",
+ "cherry",
+ "chest",
+ "chicken",
+ "chief",
+ "child",
+ "chimney",
+ "choice",
+ "choose",
+ "chronic",
+ "chuckle",
+ "chunk",
+ "churn",
+ "cigar",
+ "cinnamon",
+ "circle",
+ "citizen",
+ "city",
+ "civil",
+ "claim",
+ "clap",
+ "clarify",
+ "claw",
+ "clay",
+ "clean",
+ "clerk",
+ "clever",
+ "click",
+ "client",
+ "cliff",
+ "climb",
+ "clinic",
+ "clip",
+ "clock",
+ "clog",
+ "close",
+ "cloth",
+ "cloud",
+ "clown",
+ "club",
+ "clump",
+ "cluster",
+ "clutch",
+ "coach",
+ "coast",
+ "coconut",
+ "code",
+ "coffee",
+ "coil",
+ "coin",
+ "collect",
+ "color",
+ "column",
+ "combine",
+ "come",
+ "comfort",
+ "comic",
+ "common",
+ "company",
+ "concert",
+ "conduct",
+ "confirm",
+ "congress",
+ "connect",
+ "consider",
+ "control",
+ "convince",
+ "cook",
+ "cool",
+ "copper",
+ "copy",
+ "coral",
+ "core",
+ "corn",
+ "correct",
+ "cost",
+ "cotton",
+ "couch",
+ "country",
+ "couple",
+ "course",
+ "cousin",
+ "cover",
+ "coyote",
+ "crack",
+ "cradle",
+ "craft",
+ "cram",
+ "crane",
+ "crash",
+ "crater",
+ "crawl",
+ "crazy",
+ "cream",
+ "credit",
+ "creek",
+ "crew",
+ "cricket",
+ "crime",
+ "crisp",
+ "critic",
+ "crop",
+ "cross",
+ "crouch",
+ "crowd",
+ "crucial",
+ "cruel",
+ "cruise",
+ "crumble",
+ "crunch",
+ "crush",
+ "cry",
+ "crystal",
+ "cube",
+ "culture",
+ "cup",
+ "cupboard",
+ "curious",
+ "current",
+ "curtain",
+ "curve",
+ "cushion",
+ "custom",
+ "cute",
+ "cycle",
+ "dad",
+ "damage",
+ "damp",
+ "dance",
+ "danger",
+ "daring",
+ "dash",
+ "daughter",
+ "dawn",
+ "day",
+ "deal",
+ "debate",
+ "debris",
+ "decade",
+ "december",
+ "decide",
+ "decline",
+ "decorate",
+ "decrease",
+ "deer",
+ "defense",
+ "define",
+ "defy",
+ "degree",
+ "delay",
+ "deliver",
+ "demand",
+ "demise",
+ "denial",
+ "dentist",
+ "deny",
+ "depart",
+ "depend",
+ "deposit",
+ "depth",
+ "deputy",
+ "derive",
+ "describe",
+ "desert",
+ "design",
+ "desk",
+ "despair",
+ "destroy",
+ "detail",
+ "detect",
+ "develop",
+ "device",
+ "devote",
+ "diagram",
+ "dial",
+ "diamond",
+ "diary",
+ "dice",
+ "diesel",
+ "diet",
+ "differ",
+ "digital",
+ "dignity",
+ "dilemma",
+ "dinner",
+ "dinosaur",
+ "direct",
+ "dirt",
+ "disagree",
+ "discover",
+ "disease",
+ "dish",
+ "dismiss",
+ "disorder",
+ "display",
+ "distance",
+ "divert",
+ "divide",
+ "divorce",
+ "dizzy",
+ "doctor",
+ "document",
+ "dog",
+ "doll",
+ "dolphin",
+ "domain",
+ "donate",
+ "donkey",
+ "donor",
+ "door",
+ "dose",
+ "double",
+ "dove",
+ "draft",
+ "dragon",
+ "drama",
+ "drastic",
+ "draw",
+ "dream",
+ "dress",
+ "drift",
+ "drill",
+ "drink",
+ "drip",
+ "drive",
+ "drop",
+ "drum",
+ "dry",
+ "duck",
+ "dumb",
+ "dune",
+ "during",
+ "dust",
+ "dutch",
+ "duty",
+ "dwarf",
+ "dynamic",
+ "eager",
+ "eagle",
+ "early",
+ "earn",
+ "earth",
+ "easily",
+ "east",
+ "easy",
+ "echo",
+ "ecology",
+ "economy",
+ "edge",
+ "edit",
+ "educate",
+ "effort",
+ "egg",
+ "eight",
+ "either",
+ "elbow",
+ "elder",
+ "electric",
+ "elegant",
+ "element",
+ "elephant",
+ "elevator",
+ "elite",
+ "else",
+ "embark",
+ "embody",
+ "embrace",
+ "emerge",
+ "emotion",
+ "employ",
+ "empower",
+ "empty",
+ "enable",
+ "enact",
+ "end",
+ "endless",
+ "endorse",
+ "enemy",
+ "energy",
+ "enforce",
+ "engage",
+ "engine",
+ "enhance",
+ "enjoy",
+ "enlist",
+ "enough",
+ "enrich",
+ "enroll",
+ "ensure",
+ "enter",
+ "entire",
+ "entry",
+ "envelope",
+ "episode",
+ "equal",
+ "equip",
+ "era",
+ "erase",
+ "erode",
+ "erosion",
+ "error",
+ "erupt",
+ "escape",
+ "essay",
+ "essence",
+ "estate",
+ "eternal",
+ "ethics",
+ "evidence",
+ "evil",
+ "evoke",
+ "evolve",
+ "exact",
+ "example",
+ "excess",
+ "exchange",
+ "excite",
+ "exclude",
+ "excuse",
+ "execute",
+ "exercise",
+ "exhaust",
+ "exhibit",
+ "exile",
+ "exist",
+ "exit",
+ "exotic",
+ "expand",
+ "expect",
+ "expire",
+ "explain",
+ "expose",
+ "express",
+ "extend",
+ "extra",
+ "eye",
+ "eyebrow",
+ "fabric",
+ "face",
+ "faculty",
+ "fade",
+ "faint",
+ "faith",
+ "fall",
+ "false",
+ "fame",
+ "family",
+ "famous",
+ "fan",
+ "fancy",
+ "fantasy",
+ "farm",
+ "fashion",
+ "fat",
+ "fatal",
+ "father",
+ "fatigue",
+ "fault",
+ "favorite",
+ "feature",
+ "february",
+ "federal",
+ "fee",
+ "feed",
+ "feel",
+ "female",
+ "fence",
+ "festival",
+ "fetch",
+ "fever",
+ "few",
+ "fiber",
+ "fiction",
+ "field",
+ "figure",
+ "file",
+ "film",
+ "filter",
+ "final",
+ "find",
+ "fine",
+ "finger",
+ "finish",
+ "fire",
+ "firm",
+ "first",
+ "fiscal",
+ "fish",
+ "fit",
+ "fitness",
+ "fix",
+ "flag",
+ "flame",
+ "flash",
+ "flat",
+ "flavor",
+ "flee",
+ "flight",
+ "flip",
+ "float",
+ "flock",
+ "floor",
+ "flower",
+ "fluid",
+ "flush",
+ "fly",
+ "foam",
+ "focus",
+ "fog",
+ "foil",
+ "fold",
+ "follow",
+ "food",
+ "foot",
+ "force",
+ "forest",
+ "forget",
+ "fork",
+ "fortune",
+ "forum",
+ "forward",
+ "fossil",
+ "foster",
+ "found",
+ "fox",
+ "fragile",
+ "frame",
+ "frequent",
+ "fresh",
+ "friend",
+ "fringe",
+ "frog",
+ "front",
+ "frost",
+ "frown",
+ "frozen",
+ "fruit",
+ "fuel",
+ "fun",
+ "funny",
+ "furnace",
+ "fury",
+ "future",
+ "gadget",
+ "gain",
+ "galaxy",
+ "gallery",
+ "game",
+ "gap",
+ "garage",
+ "garbage",
+ "garden",
+ "garlic",
+ "garment",
+ "gas",
+ "gasp",
+ "gate",
+ "gather",
+ "gauge",
+ "gaze",
+ "general",
+ "genius",
+ "genre",
+ "gentle",
+ "genuine",
+ "gesture",
+ "ghost",
+ "giant",
+ "gift",
+ "giggle",
+ "ginger",
+ "giraffe",
+ "girl",
+ "give",
+ "glad",
+ "glance",
+ "glare",
+ "glass",
+ "glide",
+ "glimpse",
+ "globe",
+ "gloom",
+ "glory",
+ "glove",
+ "glow",
+ "glue",
+ "goat",
+ "goddess",
+ "gold",
+ "good",
+ "goose",
+ "gorilla",
+ "gospel",
+ "gossip",
+ "govern",
+ "gown",
+ "grab",
+ "grace",
+ "grain",
+ "grant",
+ "grape",
+ "grass",
+ "gravity",
+ "great",
+ "green",
+ "grid",
+ "grief",
+ "grit",
+ "grocery",
+ "group",
+ "grow",
+ "grunt",
+ "guard",
+ "guess",
+ "guide",
+ "guilt",
+ "guitar",
+ "gun",
+ "gym",
+ "habit",
+ "hair",
+ "half",
+ "hammer",
+ "hamster",
+ "hand",
+ "happy",
+ "harbor",
+ "hard",
+ "harsh",
+ "harvest",
+ "hat",
+ "have",
+ "hawk",
+ "hazard",
+ "head",
+ "health",
+ "heart",
+ "heavy",
+ "hedgehog",
+ "height",
+ "hello",
+ "helmet",
+ "help",
+ "hen",
+ "hero",
+ "hidden",
+ "high",
+ "hill",
+ "hint",
+ "hip",
+ "hire",
+ "history",
+ "hobby",
+ "hockey",
+ "hold",
+ "hole",
+ "holiday",
+ "hollow",
+ "home",
+ "honey",
+ "hood",
+ "hope",
+ "horn",
+ "horror",
+ "horse",
+ "hospital",
+ "host",
+ "hotel",
+ "hour",
+ "hover",
+ "hub",
+ "huge",
+ "human",
+ "humble",
+ "humor",
+ "hundred",
+ "hungry",
+ "hunt",
+ "hurdle",
+ "hurry",
+ "hurt",
+ "husband",
+ "hybrid",
+ "ice",
+ "icon",
+ "idea",
+ "identify",
+ "idle",
+ "ignore",
+ "ill",
+ "illegal",
+ "illness",
+ "image",
+ "imitate",
+ "immense",
+ "immune",
+ "impact",
+ "impose",
+ "improve",
+ "impulse",
+ "inch",
+ "include",
+ "income",
+ "increase",
+ "index",
+ "indicate",
+ "indoor",
+ "industry",
+ "infant",
+ "inflict",
+ "inform",
+ "inhale",
+ "inherit",
+ "initial",
+ "inject",
+ "injury",
+ "inmate",
+ "inner",
+ "innocent",
+ "input",
+ "inquiry",
+ "insane",
+ "insect",
+ "inside",
+ "inspire",
+ "install",
+ "intact",
+ "interest",
+ "into",
+ "invest",
+ "invite",
+ "involve",
+ "iron",
+ "island",
+ "isolate",
+ "issue",
+ "item",
+ "ivory",
+ "jacket",
+ "jaguar",
+ "jar",
+ "jazz",
+ "jealous",
+ "jeans",
+ "jelly",
+ "jewel",
+ "job",
+ "join",
+ "joke",
+ "journey",
+ "joy",
+ "judge",
+ "juice",
+ "jump",
+ "jungle",
+ "junior",
+ "junk",
+ "just",
+ "kangaroo",
+ "keen",
+ "keep",
+ "ketchup",
+ "key",
+ "kick",
+ "kid",
+ "kidney",
+ "kind",
+ "kingdom",
+ "kiss",
+ "kit",
+ "kitchen",
+ "kite",
+ "kitten",
+ "kiwi",
+ "knee",
+ "knife",
+ "knock",
+ "know",
+ "lab",
+ "label",
+ "labor",
+ "ladder",
+ "lady",
+ "lake",
+ "lamp",
+ "language",
+ "laptop",
+ "large",
+ "later",
+ "latin",
+ "laugh",
+ "laundry",
+ "lava",
+ "law",
+ "lawn",
+ "lawsuit",
+ "layer",
+ "lazy",
+ "leader",
+ "leaf",
+ "learn",
+ "leave",
+ "lecture",
+ "left",
+ "leg",
+ "legal",
+ "legend",
+ "leisure",
+ "lemon",
+ "lend",
+ "length",
+ "lens",
+ "leopard",
+ "lesson",
+ "letter",
+ "level",
+ "liar",
+ "liberty",
+ "library",
+ "license",
+ "life",
+ "lift",
+ "light",
+ "like",
+ "limb",
+ "limit",
+ "link",
+ "lion",
+ "liquid",
+ "list",
+ "little",
+ "live",
+ "lizard",
+ "load",
+ "loan",
+ "lobster",
+ "local",
+ "lock",
+ "logic",
+ "lonely",
+ "long",
+ "loop",
+ "lottery",
+ "loud",
+ "lounge",
+ "love",
+ "loyal",
+ "lucky",
+ "luggage",
+ "lumber",
+ "lunar",
+ "lunch",
+ "luxury",
+ "lyrics",
+ "machine",
+ "mad",
+ "magic",
+ "magnet",
+ "maid",
+ "mail",
+ "main",
+ "major",
+ "make",
+ "mammal",
+ "man",
+ "manage",
+ "mandate",
+ "mango",
+ "mansion",
+ "manual",
+ "maple",
+ "marble",
+ "march",
+ "margin",
+ "marine",
+ "market",
+ "marriage",
+ "mask",
+ "mass",
+ "master",
+ "match",
+ "material",
+ "math",
+ "matrix",
+ "matter",
+ "maximum",
+ "maze",
+ "meadow",
+ "mean",
+ "measure",
+ "meat",
+ "mechanic",
+ "medal",
+ "media",
+ "melody",
+ "melt",
+ "member",
+ "memory",
+ "mention",
+ "menu",
+ "mercy",
+ "merge",
+ "merit",
+ "merry",
+ "mesh",
+ "message",
+ "metal",
+ "method",
+ "middle",
+ "midnight",
+ "milk",
+ "million",
+ "mimic",
+ "mind",
+ "minimum",
+ "minor",
+ "minute",
+ "miracle",
+ "mirror",
+ "misery",
+ "miss",
+ "mistake",
+ "mix",
+ "mixed",
+ "mixture",
+ "mobile",
+ "model",
+ "modify",
+ "mom",
+ "moment",
+ "monitor",
+ "monkey",
+ "monster",
+ "month",
+ "moon",
+ "moral",
+ "more",
+ "morning",
+ "mosquito",
+ "mother",
+ "motion",
+ "motor",
+ "mountain",
+ "mouse",
+ "move",
+ "movie",
+ "much",
+ "muffin",
+ "mule",
+ "multiply",
+ "muscle",
+ "museum",
+ "mushroom",
+ "music",
+ "must",
+ "mutual",
+ "myself",
+ "mystery",
+ "myth",
+ "naive",
+ "name",
+ "napkin",
+ "narrow",
+ "nasty",
+ "nation",
+ "nature",
+ "near",
+ "neck",
+ "need",
+ "negative",
+ "neglect",
+ "neither",
+ "nephew",
+ "nerve",
+ "nest",
+ "net",
+ "network",
+ "neutral",
+ "never",
+ "news",
+ "next",
+ "nice",
+ "night",
+ "noble",
+ "noise",
+ "nominee",
+ "noodle",
+ "normal",
+ "north",
+ "nose",
+ "notable",
+ "note",
+ "nothing",
+ "notice",
+ "novel",
+ "now",
+ "nuclear",
+ "number",
+ "nurse",
+ "nut",
+ "oak",
+ "obey",
+ "object",
+ "oblige",
+ "obscure",
+ "observe",
+ "obtain",
+ "obvious",
+ "occur",
+ "ocean",
+ "october",
+ "odor",
+ "off",
+ "offer",
+ "office",
+ "often",
+ "oil",
+ "okay",
+ "old",
+ "olive",
+ "olympic",
+ "omit",
+ "once",
+ "one",
+ "onion",
+ "online",
+ "only",
+ "open",
+ "opera",
+ "opinion",
+ "oppose",
+ "option",
+ "orange",
+ "orbit",
+ "orchard",
+ "order",
+ "ordinary",
+ "organ",
+ "orient",
+ "original",
+ "orphan",
+ "ostrich",
+ "other",
+ "outdoor",
+ "outer",
+ "output",
+ "outside",
+ "oval",
+ "oven",
+ "over",
+ "own",
+ "owner",
+ "oxygen",
+ "oyster",
+ "ozone",
+ "pact",
+ "paddle",
+ "page",
+ "pair",
+ "palace",
+ "palm",
+ "panda",
+ "panel",
+ "panic",
+ "panther",
+ "paper",
+ "parade",
+ "parent",
+ "park",
+ "parrot",
+ "party",
+ "pass",
+ "patch",
+ "path",
+ "patient",
+ "patrol",
+ "pattern",
+ "pause",
+ "pave",
+ "payment",
+ "peace",
+ "peanut",
+ "pear",
+ "peasant",
+ "pelican",
+ "pen",
+ "penalty",
+ "pencil",
+ "people",
+ "pepper",
+ "perfect",
+ "permit",
+ "person",
+ "pet",
+ "phone",
+ "photo",
+ "phrase",
+ "physical",
+ "piano",
+ "picnic",
+ "picture",
+ "piece",
+ "pig",
+ "pigeon",
+ "pill",
+ "pilot",
+ "pink",
+ "pioneer",
+ "pipe",
+ "pistol",
+ "pitch",
+ "pizza",
+ "place",
+ "planet",
+ "plastic",
+ "plate",
+ "play",
+ "please",
+ "pledge",
+ "pluck",
+ "plug",
+ "plunge",
+ "poem",
+ "poet",
+ "point",
+ "polar",
+ "pole",
+ "police",
+ "pond",
+ "pony",
+ "pool",
+ "popular",
+ "portion",
+ "position",
+ "possible",
+ "post",
+ "potato",
+ "pottery",
+ "poverty",
+ "powder",
+ "power",
+ "practice",
+ "praise",
+ "predict",
+ "prefer",
+ "prepare",
+ "present",
+ "pretty",
+ "prevent",
+ "price",
+ "pride",
+ "primary",
+ "print",
+ "priority",
+ "prison",
+ "private",
+ "prize",
+ "problem",
+ "process",
+ "produce",
+ "profit",
+ "program",
+ "project",
+ "promote",
+ "proof",
+ "property",
+ "prosper",
+ "protect",
+ "proud",
+ "provide",
+ "public",
+ "pudding",
+ "pull",
+ "pulp",
+ "pulse",
+ "pumpkin",
+ "punch",
+ "pupil",
+ "puppy",
+ "purchase",
+ "purity",
+ "purpose",
+ "purse",
+ "push",
+ "put",
+ "puzzle",
+ "pyramid",
+ "quality",
+ "quantum",
+ "quarter",
+ "question",
+ "quick",
+ "quit",
+ "quiz",
+ "quote",
+ "rabbit",
+ "raccoon",
+ "race",
+ "rack",
+ "radar",
+ "radio",
+ "rail",
+ "rain",
+ "raise",
+ "rally",
+ "ramp",
+ "ranch",
+ "random",
+ "range",
+ "rapid",
+ "rare",
+ "rate",
+ "rather",
+ "raven",
+ "raw",
+ "razor",
+ "ready",
+ "real",
+ "reason",
+ "rebel",
+ "rebuild",
+ "recall",
+ "receive",
+ "recipe",
+ "record",
+ "recycle",
+ "reduce",
+ "reflect",
+ "reform",
+ "refuse",
+ "region",
+ "regret",
+ "regular",
+ "reject",
+ "relax",
+ "release",
+ "relief",
+ "rely",
+ "remain",
+ "remember",
+ "remind",
+ "remove",
+ "render",
+ "renew",
+ "rent",
+ "reopen",
+ "repair",
+ "repeat",
+ "replace",
+ "report",
+ "require",
+ "rescue",
+ "resemble",
+ "resist",
+ "resource",
+ "response",
+ "result",
+ "retire",
+ "retreat",
+ "return",
+ "reunion",
+ "reveal",
+ "review",
+ "reward",
+ "rhythm",
+ "rib",
+ "ribbon",
+ "rice",
+ "rich",
+ "ride",
+ "ridge",
+ "rifle",
+ "right",
+ "rigid",
+ "ring",
+ "riot",
+ "ripple",
+ "risk",
+ "ritual",
+ "rival",
+ "river",
+ "road",
+ "roast",
+ "robot",
+ "robust",
+ "rocket",
+ "romance",
+ "roof",
+ "rookie",
+ "room",
+ "rose",
+ "rotate",
+ "rough",
+ "round",
+ "route",
+ "royal",
+ "rubber",
+ "rude",
+ "rug",
+ "rule",
+ "run",
+ "runway",
+ "rural",
+ "sad",
+ "saddle",
+ "sadness",
+ "safe",
+ "sail",
+ "salad",
+ "salmon",
+ "salon",
+ "salt",
+ "salute",
+ "same",
+ "sample",
+ "sand",
+ "satisfy",
+ "satoshi",
+ "sauce",
+ "sausage",
+ "save",
+ "say",
+ "scale",
+ "scan",
+ "scare",
+ "scatter",
+ "scene",
+ "scheme",
+ "school",
+ "science",
+ "scissors",
+ "scorpion",
+ "scout",
+ "scrap",
+ "screen",
+ "script",
+ "scrub",
+ "sea",
+ "search",
+ "season",
+ "seat",
+ "second",
+ "secret",
+ "section",
+ "security",
+ "seed",
+ "seek",
+ "segment",
+ "select",
+ "sell",
+ "seminar",
+ "senior",
+ "sense",
+ "sentence",
+ "series",
+ "service",
+ "session",
+ "settle",
+ "setup",
+ "seven",
+ "shadow",
+ "shaft",
+ "shallow",
+ "share",
+ "shed",
+ "shell",
+ "sheriff",
+ "shield",
+ "shift",
+ "shine",
+ "ship",
+ "shiver",
+ "shock",
+ "shoe",
+ "shoot",
+ "shop",
+ "short",
+ "shoulder",
+ "shove",
+ "shrimp",
+ "shrug",
+ "shuffle",
+ "shy",
+ "sibling",
+ "sick",
+ "side",
+ "siege",
+ "sight",
+ "sign",
+ "silent",
+ "silk",
+ "silly",
+ "silver",
+ "similar",
+ "simple",
+ "since",
+ "sing",
+ "siren",
+ "sister",
+ "situate",
+ "six",
+ "size",
+ "skate",
+ "sketch",
+ "ski",
+ "skill",
+ "skin",
+ "skirt",
+ "skull",
+ "slab",
+ "slam",
+ "sleep",
+ "slender",
+ "slice",
+ "slide",
+ "slight",
+ "slim",
+ "slogan",
+ "slot",
+ "slow",
+ "slush",
+ "small",
+ "smart",
+ "smile",
+ "smoke",
+ "smooth",
+ "snack",
+ "snake",
+ "snap",
+ "sniff",
+ "snow",
+ "soap",
+ "soccer",
+ "social",
+ "sock",
+ "soda",
+ "soft",
+ "solar",
+ "soldier",
+ "solid",
+ "solution",
+ "solve",
+ "someone",
+ "song",
+ "soon",
+ "sorry",
+ "sort",
+ "soul",
+ "sound",
+ "soup",
+ "source",
+ "south",
+ "space",
+ "spare",
+ "spatial",
+ "spawn",
+ "speak",
+ "special",
+ "speed",
+ "spell",
+ "spend",
+ "sphere",
+ "spice",
+ "spider",
+ "spike",
+ "spin",
+ "spirit",
+ "split",
+ "spoil",
+ "sponsor",
+ "spoon",
+ "sport",
+ "spot",
+ "spray",
+ "spread",
+ "spring",
+ "spy",
+ "square",
+ "squeeze",
+ "squirrel",
+ "stable",
+ "stadium",
+ "staff",
+ "stage",
+ "stairs",
+ "stamp",
+ "stand",
+ "start",
+ "state",
+ "stay",
+ "steak",
+ "steel",
+ "stem",
+ "step",
+ "stereo",
+ "stick",
+ "still",
+ "sting",
+ "stock",
+ "stomach",
+ "stone",
+ "stool",
+ "story",
+ "stove",
+ "strategy",
+ "street",
+ "strike",
+ "strong",
+ "struggle",
+ "student",
+ "stuff",
+ "stumble",
+ "style",
+ "subject",
+ "submit",
+ "subway",
+ "success",
+ "such",
+ "sudden",
+ "suffer",
+ "sugar",
+ "suggest",
+ "suit",
+ "summer",
+ "sun",
+ "sunny",
+ "sunset",
+ "super",
+ "supply",
+ "supreme",
+ "sure",
+ "surface",
+ "surge",
+ "surprise",
+ "surround",
+ "survey",
+ "suspect",
+ "sustain",
+ "swallow",
+ "swamp",
+ "swap",
+ "swarm",
+ "swear",
+ "sweet",
+ "swift",
+ "swim",
+ "swing",
+ "switch",
+ "sword",
+ "symbol",
+ "symptom",
+ "syrup",
+ "system",
+ "table",
+ "tackle",
+ "tag",
+ "tail",
+ "talent",
+ "talk",
+ "tank",
+ "tape",
+ "target",
+ "task",
+ "taste",
+ "tattoo",
+ "taxi",
+ "teach",
+ "team",
+ "tell",
+ "ten",
+ "tenant",
+ "tennis",
+ "tent",
+ "term",
+ "test",
+ "text",
+ "thank",
+ "that",
+ "theme",
+ "then",
+ "theory",
+ "there",
+ "they",
+ "thing",
+ "this",
+ "thought",
+ "three",
+ "thrive",
+ "throw",
+ "thumb",
+ "thunder",
+ "ticket",
+ "tide",
+ "tiger",
+ "tilt",
+ "timber",
+ "time",
+ "tiny",
+ "tip",
+ "tired",
+ "tissue",
+ "title",
+ "toast",
+ "tobacco",
+ "today",
+ "toddler",
+ "toe",
+ "together",
+ "toilet",
+ "token",
+ "tomato",
+ "tomorrow",
+ "tone",
+ "tongue",
+ "tonight",
+ "tool",
+ "tooth",
+ "top",
+ "topic",
+ "topple",
+ "torch",
+ "tornado",
+ "tortoise",
+ "toss",
+ "total",
+ "tourist",
+ "toward",
+ "tower",
+ "town",
+ "toy",
+ "track",
+ "trade",
+ "traffic",
+ "tragic",
+ "train",
+ "transfer",
+ "trap",
+ "trash",
+ "travel",
+ "tray",
+ "treat",
+ "tree",
+ "trend",
+ "trial",
+ "tribe",
+ "trick",
+ "trigger",
+ "trim",
+ "trip",
+ "trophy",
+ "trouble",
+ "truck",
+ "true",
+ "truly",
+ "trumpet",
+ "trust",
+ "truth",
+ "try",
+ "tube",
+ "tuition",
+ "tumble",
+ "tuna",
+ "tunnel",
+ "turkey",
+ "turn",
+ "turtle",
+ "twelve",
+ "twenty",
+ "twice",
+ "twin",
+ "twist",
+ "two",
+ "type",
+ "typical",
+ "ugly",
+ "umbrella",
+ "unable",
+ "unaware",
+ "uncle",
+ "uncover",
+ "under",
+ "undo",
+ "unfair",
+ "unfold",
+ "unhappy",
+ "uniform",
+ "unique",
+ "unit",
+ "universe",
+ "unknown",
+ "unlock",
+ "until",
+ "unusual",
+ "unveil",
+ "update",
+ "upgrade",
+ "uphold",
+ "upon",
+ "upper",
+ "upset",
+ "urban",
+ "urge",
+ "usage",
+ "use",
+ "used",
+ "useful",
+ "useless",
+ "usual",
+ "utility",
+ "vacant",
+ "vacuum",
+ "vague",
+ "valid",
+ "valley",
+ "valve",
+ "van",
+ "vanish",
+ "vapor",
+ "various",
+ "vast",
+ "vault",
+ "vehicle",
+ "velvet",
+ "vendor",
+ "venture",
+ "venue",
+ "verb",
+ "verify",
+ "version",
+ "very",
+ "vessel",
+ "veteran",
+ "viable",
+ "vibrant",
+ "vicious",
+ "victory",
+ "video",
+ "view",
+ "village",
+ "vintage",
+ "violin",
+ "virtual",
+ "virus",
+ "visa",
+ "visit",
+ "visual",
+ "vital",
+ "vivid",
+ "vocal",
+ "voice",
+ "void",
+ "volcano",
+ "volume",
+ "vote",
+ "voyage",
+ "wage",
+ "wagon",
+ "wait",
+ "walk",
+ "wall",
+ "walnut",
+ "want",
+ "warfare",
+ "warm",
+ "warrior",
+ "wash",
+ "wasp",
+ "waste",
+ "water",
+ "wave",
+ "way",
+ "wealth",
+ "weapon",
+ "wear",
+ "weasel",
+ "weather",
+ "web",
+ "wedding",
+ "weekend",
+ "weird",
+ "welcome",
+ "west",
+ "wet",
+ "whale",
+ "what",
+ "wheat",
+ "wheel",
+ "when",
+ "where",
+ "whip",
+ "whisper",
+ "wide",
+ "width",
+ "wife",
+ "wild",
+ "will",
+ "win",
+ "window",
+ "wine",
+ "wing",
+ "wink",
+ "winner",
+ "winter",
+ "wire",
+ "wisdom",
+ "wise",
+ "wish",
+ "witness",
+ "wolf",
+ "woman",
+ "wonder",
+ "wood",
+ "wool",
+ "word",
+ "work",
+ "world",
+ "worry",
+ "worth",
+ "wrap",
+ "wreck",
+ "wrestle",
+ "wrist",
+ "write",
+ "wrong",
+ "yard",
+ "year",
+ "yellow",
+ "you",
+ "young",
+ "youth",
+ "zebra",
+ "zero",
+ "zone",
+ "zoo"
+ )
+}
diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt
new file mode 100644
index 000000000..22ef7cf85
--- /dev/null
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeFrench.kt
@@ -0,0 +1,2060 @@
+package io.iohk.atala.prism.apollo.utils.bip39.wordlists
+
+import kotlin.js.ExperimentalJsExport
+import kotlin.js.JsExport
+
+@OptIn(ExperimentalJsExport::class)
+@JsExport
+internal object MnemonicCodeFrench {
+ val wordList: List =
+ listOf(
+ "abaisser",
+ "abandon",
+ "abdiquer",
+ "abeille",
+ "abolir",
+ "aborder",
+ "aboutir",
+ "aboyer",
+ "abrasif",
+ "abreuver",
+ "abriter",
+ "abroger",
+ "abrupt",
+ "absence",
+ "absolu",
+ "absurde",
+ "abusif",
+ "abyssal",
+ "académie",
+ "acajou",
+ "acarien",
+ "accabler",
+ "accepter",
+ "acclamer",
+ "accolade",
+ "accroche",
+ "accuser",
+ "acerbe",
+ "achat",
+ "acheter",
+ "aciduler",
+ "acier",
+ "acompte",
+ "acquérir",
+ "acronyme",
+ "acteur",
+ "actif",
+ "actuel",
+ "adepte",
+ "adéquat",
+ "adhésif",
+ "adjectif",
+ "adjuger",
+ "admettre",
+ "admirer",
+ "adopter",
+ "adorer",
+ "adoucir",
+ "adresse",
+ "adroit",
+ "adulte",
+ "adverbe",
+ "aérer",
+ "aéronef",
+ "affaire",
+ "affecter",
+ "affiche",
+ "affreux",
+ "affubler",
+ "agacer",
+ "agencer",
+ "agile",
+ "agiter",
+ "agrafer",
+ "agréable",
+ "agrume",
+ "aider",
+ "aiguille",
+ "ailier",
+ "aimable",
+ "aisance",
+ "ajouter",
+ "ajuster",
+ "alarmer",
+ "alchimie",
+ "alerte",
+ "algèbre",
+ "algue",
+ "aliéner",
+ "aliment",
+ "alléger",
+ "alliage",
+ "allouer",
+ "allumer",
+ "alourdir",
+ "alpaga",
+ "altesse",
+ "alvéole",
+ "amateur",
+ "ambigu",
+ "ambre",
+ "aménager",
+ "amertume",
+ "amidon",
+ "amiral",
+ "amorcer",
+ "amour",
+ "amovible",
+ "amphibie",
+ "ampleur",
+ "amusant",
+ "analyse",
+ "anaphore",
+ "anarchie",
+ "anatomie",
+ "ancien",
+ "anéantir",
+ "angle",
+ "angoisse",
+ "anguleux",
+ "animal",
+ "annexer",
+ "annonce",
+ "annuel",
+ "anodin",
+ "anomalie",
+ "anonyme",
+ "anormal",
+ "antenne",
+ "antidote",
+ "anxieux",
+ "apaiser",
+ "apéritif",
+ "aplanir",
+ "apologie",
+ "appareil",
+ "appeler",
+ "apporter",
+ "appuyer",
+ "aquarium",
+ "aqueduc",
+ "arbitre",
+ "arbuste",
+ "ardeur",
+ "ardoise",
+ "argent",
+ "arlequin",
+ "armature",
+ "armement",
+ "armoire",
+ "armure",
+ "arpenter",
+ "arracher",
+ "arriver",
+ "arroser",
+ "arsenic",
+ "artériel",
+ "article",
+ "aspect",
+ "asphalte",
+ "aspirer",
+ "assaut",
+ "asservir",
+ "assiette",
+ "associer",
+ "assurer",
+ "asticot",
+ "astre",
+ "astuce",
+ "atelier",
+ "atome",
+ "atrium",
+ "atroce",
+ "attaque",
+ "attentif",
+ "attirer",
+ "attraper",
+ "aubaine",
+ "auberge",
+ "audace",
+ "audible",
+ "augurer",
+ "aurore",
+ "automne",
+ "autruche",
+ "avaler",
+ "avancer",
+ "avarice",
+ "avenir",
+ "averse",
+ "aveugle",
+ "aviateur",
+ "avide",
+ "avion",
+ "aviser",
+ "avoine",
+ "avouer",
+ "avril",
+ "axial",
+ "axiome",
+ "badge",
+ "bafouer",
+ "bagage",
+ "baguette",
+ "baignade",
+ "balancer",
+ "balcon",
+ "baleine",
+ "balisage",
+ "bambin",
+ "bancaire",
+ "bandage",
+ "banlieue",
+ "bannière",
+ "banquier",
+ "barbier",
+ "baril",
+ "baron",
+ "barque",
+ "barrage",
+ "bassin",
+ "bastion",
+ "bataille",
+ "bateau",
+ "batterie",
+ "baudrier",
+ "bavarder",
+ "belette",
+ "bélier",
+ "belote",
+ "bénéfice",
+ "berceau",
+ "berger",
+ "berline",
+ "bermuda",
+ "besace",
+ "besogne",
+ "bétail",
+ "beurre",
+ "biberon",
+ "bicycle",
+ "bidule",
+ "bijou",
+ "bilan",
+ "bilingue",
+ "billard",
+ "binaire",
+ "biologie",
+ "biopsie",
+ "biotype",
+ "biscuit",
+ "bison",
+ "bistouri",
+ "bitume",
+ "bizarre",
+ "blafard",
+ "blague",
+ "blanchir",
+ "blessant",
+ "blinder",
+ "blond",
+ "bloquer",
+ "blouson",
+ "bobard",
+ "bobine",
+ "boire",
+ "boiser",
+ "bolide",
+ "bonbon",
+ "bondir",
+ "bonheur",
+ "bonifier",
+ "bonus",
+ "bordure",
+ "borne",
+ "botte",
+ "boucle",
+ "boueux",
+ "bougie",
+ "boulon",
+ "bouquin",
+ "bourse",
+ "boussole",
+ "boutique",
+ "boxeur",
+ "branche",
+ "brasier",
+ "brave",
+ "brebis",
+ "brèche",
+ "breuvage",
+ "bricoler",
+ "brigade",
+ "brillant",
+ "brioche",
+ "brique",
+ "brochure",
+ "broder",
+ "bronzer",
+ "brousse",
+ "broyeur",
+ "brume",
+ "brusque",
+ "brutal",
+ "bruyant",
+ "buffle",
+ "buisson",
+ "bulletin",
+ "bureau",
+ "burin",
+ "bustier",
+ "butiner",
+ "butoir",
+ "buvable",
+ "buvette",
+ "cabanon",
+ "cabine",
+ "cachette",
+ "cadeau",
+ "cadre",
+ "caféine",
+ "caillou",
+ "caisson",
+ "calculer",
+ "calepin",
+ "calibre",
+ "calmer",
+ "calomnie",
+ "calvaire",
+ "camarade",
+ "caméra",
+ "camion",
+ "campagne",
+ "canal",
+ "caneton",
+ "canon",
+ "cantine",
+ "canular",
+ "capable",
+ "caporal",
+ "caprice",
+ "capsule",
+ "capter",
+ "capuche",
+ "carabine",
+ "carbone",
+ "caresser",
+ "caribou",
+ "carnage",
+ "carotte",
+ "carreau",
+ "carton",
+ "cascade",
+ "casier",
+ "casque",
+ "cassure",
+ "causer",
+ "caution",
+ "cavalier",
+ "caverne",
+ "caviar",
+ "cédille",
+ "ceinture",
+ "céleste",
+ "cellule",
+ "cendrier",
+ "censurer",
+ "central",
+ "cercle",
+ "cérébral",
+ "cerise",
+ "cerner",
+ "cerveau",
+ "cesser",
+ "chagrin",
+ "chaise",
+ "chaleur",
+ "chambre",
+ "chance",
+ "chapitre",
+ "charbon",
+ "chasseur",
+ "chaton",
+ "chausson",
+ "chavirer",
+ "chemise",
+ "chenille",
+ "chéquier",
+ "chercher",
+ "cheval",
+ "chien",
+ "chiffre",
+ "chignon",
+ "chimère",
+ "chiot",
+ "chlorure",
+ "chocolat",
+ "choisir",
+ "chose",
+ "chouette",
+ "chrome",
+ "chute",
+ "cigare",
+ "cigogne",
+ "cimenter",
+ "cinéma",
+ "cintrer",
+ "circuler",
+ "cirer",
+ "cirque",
+ "citerne",
+ "citoyen",
+ "citron",
+ "civil",
+ "clairon",
+ "clameur",
+ "claquer",
+ "classe",
+ "clavier",
+ "client",
+ "cligner",
+ "climat",
+ "clivage",
+ "cloche",
+ "clonage",
+ "cloporte",
+ "cobalt",
+ "cobra",
+ "cocasse",
+ "cocotier",
+ "coder",
+ "codifier",
+ "coffre",
+ "cogner",
+ "cohésion",
+ "coiffer",
+ "coincer",
+ "colère",
+ "colibri",
+ "colline",
+ "colmater",
+ "colonel",
+ "combat",
+ "comédie",
+ "commande",
+ "compact",
+ "concert",
+ "conduire",
+ "confier",
+ "congeler",
+ "connoter",
+ "consonne",
+ "contact",
+ "convexe",
+ "copain",
+ "copie",
+ "corail",
+ "corbeau",
+ "cordage",
+ "corniche",
+ "corpus",
+ "correct",
+ "cortège",
+ "cosmique",
+ "costume",
+ "coton",
+ "coude",
+ "coupure",
+ "courage",
+ "couteau",
+ "couvrir",
+ "coyote",
+ "crabe",
+ "crainte",
+ "cravate",
+ "crayon",
+ "créature",
+ "créditer",
+ "crémeux",
+ "creuser",
+ "crevette",
+ "cribler",
+ "crier",
+ "cristal",
+ "critère",
+ "croire",
+ "croquer",
+ "crotale",
+ "crucial",
+ "cruel",
+ "crypter",
+ "cubique",
+ "cueillir",
+ "cuillère",
+ "cuisine",
+ "cuivre",
+ "culminer",
+ "cultiver",
+ "cumuler",
+ "cupide",
+ "curatif",
+ "curseur",
+ "cyanure",
+ "cycle",
+ "cylindre",
+ "cynique",
+ "daigner",
+ "damier",
+ "danger",
+ "danseur",
+ "dauphin",
+ "débattre",
+ "débiter",
+ "déborder",
+ "débrider",
+ "débutant",
+ "décaler",
+ "décembre",
+ "déchirer",
+ "décider",
+ "déclarer",
+ "décorer",
+ "décrire",
+ "décupler",
+ "dédale",
+ "déductif",
+ "déesse",
+ "défensif",
+ "défiler",
+ "défrayer",
+ "dégager",
+ "dégivrer",
+ "déglutir",
+ "dégrafer",
+ "déjeuner",
+ "délice",
+ "déloger",
+ "demander",
+ "demeurer",
+ "démolir",
+ "dénicher",
+ "dénouer",
+ "dentelle",
+ "dénuder",
+ "départ",
+ "dépenser",
+ "déphaser",
+ "déplacer",
+ "déposer",
+ "déranger",
+ "dérober",
+ "désastre",
+ "descente",
+ "désert",
+ "désigner",
+ "désobéir",
+ "dessiner",
+ "destrier",
+ "détacher",
+ "détester",
+ "détourer",
+ "détresse",
+ "devancer",
+ "devenir",
+ "deviner",
+ "devoir",
+ "diable",
+ "dialogue",
+ "diamant",
+ "dicter",
+ "différer",
+ "digérer",
+ "digital",
+ "digne",
+ "diluer",
+ "dimanche",
+ "diminuer",
+ "dioxyde",
+ "directif",
+ "diriger",
+ "discuter",
+ "disposer",
+ "dissiper",
+ "distance",
+ "divertir",
+ "diviser",
+ "docile",
+ "docteur",
+ "dogme",
+ "doigt",
+ "domaine",
+ "domicile",
+ "dompter",
+ "donateur",
+ "donjon",
+ "donner",
+ "dopamine",
+ "dortoir",
+ "dorure",
+ "dosage",
+ "doseur",
+ "dossier",
+ "dotation",
+ "douanier",
+ "double",
+ "douceur",
+ "douter",
+ "doyen",
+ "dragon",
+ "draper",
+ "dresser",
+ "dribbler",
+ "droiture",
+ "duperie",
+ "duplexe",
+ "durable",
+ "durcir",
+ "dynastie",
+ "éblouir",
+ "écarter",
+ "écharpe",
+ "échelle",
+ "éclairer",
+ "éclipse",
+ "éclore",
+ "écluse",
+ "école",
+ "économie",
+ "écorce",
+ "écouter",
+ "écraser",
+ "écrémer",
+ "écrivain",
+ "écrou",
+ "écume",
+ "écureuil",
+ "édifier",
+ "éduquer",
+ "effacer",
+ "effectif",
+ "effigie",
+ "effort",
+ "effrayer",
+ "effusion",
+ "égaliser",
+ "égarer",
+ "éjecter",
+ "élaborer",
+ "élargir",
+ "électron",
+ "élégant",
+ "éléphant",
+ "élève",
+ "éligible",
+ "élitisme",
+ "éloge",
+ "élucider",
+ "éluder",
+ "emballer",
+ "embellir",
+ "embryon",
+ "émeraude",
+ "émission",
+ "emmener",
+ "émotion",
+ "émouvoir",
+ "empereur",
+ "employer",
+ "emporter",
+ "emprise",
+ "émulsion",
+ "encadrer",
+ "enchère",
+ "enclave",
+ "encoche",
+ "endiguer",
+ "endosser",
+ "endroit",
+ "enduire",
+ "énergie",
+ "enfance",
+ "enfermer",
+ "enfouir",
+ "engager",
+ "engin",
+ "englober",
+ "énigme",
+ "enjamber",
+ "enjeu",
+ "enlever",
+ "ennemi",
+ "ennuyeux",
+ "enrichir",
+ "enrobage",
+ "enseigne",
+ "entasser",
+ "entendre",
+ "entier",
+ "entourer",
+ "entraver",
+ "énumérer",
+ "envahir",
+ "enviable",
+ "envoyer",
+ "enzyme",
+ "éolien",
+ "épaissir",
+ "épargne",
+ "épatant",
+ "épaule",
+ "épicerie",
+ "épidémie",
+ "épier",
+ "épilogue",
+ "épine",
+ "épisode",
+ "épitaphe",
+ "époque",
+ "épreuve",
+ "éprouver",
+ "épuisant",
+ "équerre",
+ "équipe",
+ "ériger",
+ "érosion",
+ "erreur",
+ "éruption",
+ "escalier",
+ "espadon",
+ "espèce",
+ "espiègle",
+ "espoir",
+ "esprit",
+ "esquiver",
+ "essayer",
+ "essence",
+ "essieu",
+ "essorer",
+ "estime",
+ "estomac",
+ "estrade",
+ "étagère",
+ "étaler",
+ "étanche",
+ "étatique",
+ "éteindre",
+ "étendoir",
+ "éternel",
+ "éthanol",
+ "éthique",
+ "ethnie",
+ "étirer",
+ "étoffer",
+ "étoile",
+ "étonnant",
+ "étourdir",
+ "étrange",
+ "étroit",
+ "étude",
+ "euphorie",
+ "évaluer",
+ "évasion",
+ "éventail",
+ "évidence",
+ "éviter",
+ "évolutif",
+ "évoquer",
+ "exact",
+ "exagérer",
+ "exaucer",
+ "exceller",
+ "excitant",
+ "exclusif",
+ "excuse",
+ "exécuter",
+ "exemple",
+ "exercer",
+ "exhaler",
+ "exhorter",
+ "exigence",
+ "exiler",
+ "exister",
+ "exotique",
+ "expédier",
+ "explorer",
+ "exposer",
+ "exprimer",
+ "exquis",
+ "extensif",
+ "extraire",
+ "exulter",
+ "fable",
+ "fabuleux",
+ "facette",
+ "facile",
+ "facture",
+ "faiblir",
+ "falaise",
+ "fameux",
+ "famille",
+ "farceur",
+ "farfelu",
+ "farine",
+ "farouche",
+ "fasciner",
+ "fatal",
+ "fatigue",
+ "faucon",
+ "fautif",
+ "faveur",
+ "favori",
+ "fébrile",
+ "féconder",
+ "fédérer",
+ "félin",
+ "femme",
+ "fémur",
+ "fendoir",
+ "féodal",
+ "fermer",
+ "féroce",
+ "ferveur",
+ "festival",
+ "feuille",
+ "feutre",
+ "février",
+ "fiasco",
+ "ficeler",
+ "fictif",
+ "fidèle",
+ "figure",
+ "filature",
+ "filetage",
+ "filière",
+ "filleul",
+ "filmer",
+ "filou",
+ "filtrer",
+ "financer",
+ "finir",
+ "fiole",
+ "firme",
+ "fissure",
+ "fixer",
+ "flairer",
+ "flamme",
+ "flasque",
+ "flatteur",
+ "fléau",
+ "flèche",
+ "fleur",
+ "flexion",
+ "flocon",
+ "flore",
+ "fluctuer",
+ "fluide",
+ "fluvial",
+ "folie",
+ "fonderie",
+ "fongible",
+ "fontaine",
+ "forcer",
+ "forgeron",
+ "formuler",
+ "fortune",
+ "fossile",
+ "foudre",
+ "fougère",
+ "fouiller",
+ "foulure",
+ "fourmi",
+ "fragile",
+ "fraise",
+ "franchir",
+ "frapper",
+ "frayeur",
+ "frégate",
+ "freiner",
+ "frelon",
+ "frémir",
+ "frénésie",
+ "frère",
+ "friable",
+ "friction",
+ "frisson",
+ "frivole",
+ "froid",
+ "fromage",
+ "frontal",
+ "frotter",
+ "fruit",
+ "fugitif",
+ "fuite",
+ "fureur",
+ "furieux",
+ "furtif",
+ "fusion",
+ "futur",
+ "gagner",
+ "galaxie",
+ "galerie",
+ "gambader",
+ "garantir",
+ "gardien",
+ "garnir",
+ "garrigue",
+ "gazelle",
+ "gazon",
+ "géant",
+ "gélatine",
+ "gélule",
+ "gendarme",
+ "général",
+ "génie",
+ "genou",
+ "gentil",
+ "géologie",
+ "géomètre",
+ "géranium",
+ "germe",
+ "gestuel",
+ "geyser",
+ "gibier",
+ "gicler",
+ "girafe",
+ "givre",
+ "glace",
+ "glaive",
+ "glisser",
+ "globe",
+ "gloire",
+ "glorieux",
+ "golfeur",
+ "gomme",
+ "gonfler",
+ "gorge",
+ "gorille",
+ "goudron",
+ "gouffre",
+ "goulot",
+ "goupille",
+ "gourmand",
+ "goutte",
+ "graduel",
+ "graffiti",
+ "graine",
+ "grand",
+ "grappin",
+ "gratuit",
+ "gravir",
+ "grenat",
+ "griffure",
+ "griller",
+ "grimper",
+ "grogner",
+ "gronder",
+ "grotte",
+ "groupe",
+ "gruger",
+ "grutier",
+ "gruyère",
+ "guépard",
+ "guerrier",
+ "guide",
+ "guimauve",
+ "guitare",
+ "gustatif",
+ "gymnaste",
+ "gyrostat",
+ "habitude",
+ "hachoir",
+ "halte",
+ "hameau",
+ "hangar",
+ "hanneton",
+ "haricot",
+ "harmonie",
+ "harpon",
+ "hasard",
+ "hélium",
+ "hématome",
+ "herbe",
+ "hérisson",
+ "hermine",
+ "héron",
+ "hésiter",
+ "heureux",
+ "hiberner",
+ "hibou",
+ "hilarant",
+ "histoire",
+ "hiver",
+ "homard",
+ "hommage",
+ "homogène",
+ "honneur",
+ "honorer",
+ "honteux",
+ "horde",
+ "horizon",
+ "horloge",
+ "hormone",
+ "horrible",
+ "houleux",
+ "housse",
+ "hublot",
+ "huileux",
+ "humain",
+ "humble",
+ "humide",
+ "humour",
+ "hurler",
+ "hydromel",
+ "hygiène",
+ "hymne",
+ "hypnose",
+ "idylle",
+ "ignorer",
+ "iguane",
+ "illicite",
+ "illusion",
+ "image",
+ "imbiber",
+ "imiter",
+ "immense",
+ "immobile",
+ "immuable",
+ "impact",
+ "impérial",
+ "implorer",
+ "imposer",
+ "imprimer",
+ "imputer",
+ "incarner",
+ "incendie",
+ "incident",
+ "incliner",
+ "incolore",
+ "indexer",
+ "indice",
+ "inductif",
+ "inédit",
+ "ineptie",
+ "inexact",
+ "infini",
+ "infliger",
+ "informer",
+ "infusion",
+ "ingérer",
+ "inhaler",
+ "inhiber",
+ "injecter",
+ "injure",
+ "innocent",
+ "inoculer",
+ "inonder",
+ "inscrire",
+ "insecte",
+ "insigne",
+ "insolite",
+ "inspirer",
+ "instinct",
+ "insulter",
+ "intact",
+ "intense",
+ "intime",
+ "intrigue",
+ "intuitif",
+ "inutile",
+ "invasion",
+ "inventer",
+ "inviter",
+ "invoquer",
+ "ironique",
+ "irradier",
+ "irréel",
+ "irriter",
+ "isoler",
+ "ivoire",
+ "ivresse",
+ "jaguar",
+ "jaillir",
+ "jambe",
+ "janvier",
+ "jardin",
+ "jauger",
+ "jaune",
+ "javelot",
+ "jetable",
+ "jeton",
+ "jeudi",
+ "jeunesse",
+ "joindre",
+ "joncher",
+ "jongler",
+ "joueur",
+ "jouissif",
+ "journal",
+ "jovial",
+ "joyau",
+ "joyeux",
+ "jubiler",
+ "jugement",
+ "junior",
+ "jupon",
+ "juriste",
+ "justice",
+ "juteux",
+ "juvénile",
+ "kayak",
+ "kimono",
+ "kiosque",
+ "label",
+ "labial",
+ "labourer",
+ "lacérer",
+ "lactose",
+ "lagune",
+ "laine",
+ "laisser",
+ "laitier",
+ "lambeau",
+ "lamelle",
+ "lampe",
+ "lanceur",
+ "langage",
+ "lanterne",
+ "lapin",
+ "largeur",
+ "larme",
+ "laurier",
+ "lavabo",
+ "lavoir",
+ "lecture",
+ "légal",
+ "léger",
+ "légume",
+ "lessive",
+ "lettre",
+ "levier",
+ "lexique",
+ "lézard",
+ "liasse",
+ "libérer",
+ "libre",
+ "licence",
+ "licorne",
+ "liège",
+ "lièvre",
+ "ligature",
+ "ligoter",
+ "ligue",
+ "limer",
+ "limite",
+ "limonade",
+ "limpide",
+ "linéaire",
+ "lingot",
+ "lionceau",
+ "liquide",
+ "lisière",
+ "lister",
+ "lithium",
+ "litige",
+ "littoral",
+ "livreur",
+ "logique",
+ "lointain",
+ "loisir",
+ "lombric",
+ "loterie",
+ "louer",
+ "lourd",
+ "loutre",
+ "louve",
+ "loyal",
+ "lubie",
+ "lucide",
+ "lucratif",
+ "lueur",
+ "lugubre",
+ "luisant",
+ "lumière",
+ "lunaire",
+ "lundi",
+ "luron",
+ "lutter",
+ "luxueux",
+ "machine",
+ "magasin",
+ "magenta",
+ "magique",
+ "maigre",
+ "maillon",
+ "maintien",
+ "mairie",
+ "maison",
+ "majorer",
+ "malaxer",
+ "maléfice",
+ "malheur",
+ "malice",
+ "mallette",
+ "mammouth",
+ "mandater",
+ "maniable",
+ "manquant",
+ "manteau",
+ "manuel",
+ "marathon",
+ "marbre",
+ "marchand",
+ "mardi",
+ "maritime",
+ "marqueur",
+ "marron",
+ "marteler",
+ "mascotte",
+ "massif",
+ "matériel",
+ "matière",
+ "matraque",
+ "maudire",
+ "maussade",
+ "mauve",
+ "maximal",
+ "méchant",
+ "méconnu",
+ "médaille",
+ "médecin",
+ "méditer",
+ "méduse",
+ "meilleur",
+ "mélange",
+ "mélodie",
+ "membre",
+ "mémoire",
+ "menacer",
+ "mener",
+ "menhir",
+ "mensonge",
+ "mentor",
+ "mercredi",
+ "mérite",
+ "merle",
+ "messager",
+ "mesure",
+ "métal",
+ "météore",
+ "méthode",
+ "métier",
+ "meuble",
+ "miauler",
+ "microbe",
+ "miette",
+ "mignon",
+ "migrer",
+ "milieu",
+ "million",
+ "mimique",
+ "mince",
+ "minéral",
+ "minimal",
+ "minorer",
+ "minute",
+ "miracle",
+ "miroiter",
+ "missile",
+ "mixte",
+ "mobile",
+ "moderne",
+ "moelleux",
+ "mondial",
+ "moniteur",
+ "monnaie",
+ "monotone",
+ "monstre",
+ "montagne",
+ "monument",
+ "moqueur",
+ "morceau",
+ "morsure",
+ "mortier",
+ "moteur",
+ "motif",
+ "mouche",
+ "moufle",
+ "moulin",
+ "mousson",
+ "mouton",
+ "mouvant",
+ "multiple",
+ "munition",
+ "muraille",
+ "murène",
+ "murmure",
+ "muscle",
+ "muséum",
+ "musicien",
+ "mutation",
+ "muter",
+ "mutuel",
+ "myriade",
+ "myrtille",
+ "mystère",
+ "mythique",
+ "nageur",
+ "nappe",
+ "narquois",
+ "narrer",
+ "natation",
+ "nation",
+ "nature",
+ "naufrage",
+ "nautique",
+ "navire",
+ "nébuleux",
+ "nectar",
+ "néfaste",
+ "négation",
+ "négliger",
+ "négocier",
+ "neige",
+ "nerveux",
+ "nettoyer",
+ "neurone",
+ "neutron",
+ "neveu",
+ "niche",
+ "nickel",
+ "nitrate",
+ "niveau",
+ "noble",
+ "nocif",
+ "nocturne",
+ "noirceur",
+ "noisette",
+ "nomade",
+ "nombreux",
+ "nommer",
+ "normatif",
+ "notable",
+ "notifier",
+ "notoire",
+ "nourrir",
+ "nouveau",
+ "novateur",
+ "novembre",
+ "novice",
+ "nuage",
+ "nuancer",
+ "nuire",
+ "nuisible",
+ "numéro",
+ "nuptial",
+ "nuque",
+ "nutritif",
+ "obéir",
+ "objectif",
+ "obliger",
+ "obscur",
+ "observer",
+ "obstacle",
+ "obtenir",
+ "obturer",
+ "occasion",
+ "occuper",
+ "océan",
+ "octobre",
+ "octroyer",
+ "octupler",
+ "oculaire",
+ "odeur",
+ "odorant",
+ "offenser",
+ "officier",
+ "offrir",
+ "ogive",
+ "oiseau",
+ "oisillon",
+ "olfactif",
+ "olivier",
+ "ombrage",
+ "omettre",
+ "onctueux",
+ "onduler",
+ "onéreux",
+ "onirique",
+ "opale",
+ "opaque",
+ "opérer",
+ "opinion",
+ "opportun",
+ "opprimer",
+ "opter",
+ "optique",
+ "orageux",
+ "orange",
+ "orbite",
+ "ordonner",
+ "oreille",
+ "organe",
+ "orgueil",
+ "orifice",
+ "ornement",
+ "orque",
+ "ortie",
+ "osciller",
+ "osmose",
+ "ossature",
+ "otarie",
+ "ouragan",
+ "ourson",
+ "outil",
+ "outrager",
+ "ouvrage",
+ "ovation",
+ "oxyde",
+ "oxygène",
+ "ozone",
+ "paisible",
+ "palace",
+ "palmarès",
+ "palourde",
+ "palper",
+ "panache",
+ "panda",
+ "pangolin",
+ "paniquer",
+ "panneau",
+ "panorama",
+ "pantalon",
+ "papaye",
+ "papier",
+ "papoter",
+ "papyrus",
+ "paradoxe",
+ "parcelle",
+ "paresse",
+ "parfumer",
+ "parler",
+ "parole",
+ "parrain",
+ "parsemer",
+ "partager",
+ "parure",
+ "parvenir",
+ "passion",
+ "pastèque",
+ "paternel",
+ "patience",
+ "patron",
+ "pavillon",
+ "pavoiser",
+ "payer",
+ "paysage",
+ "peigne",
+ "peintre",
+ "pelage",
+ "pélican",
+ "pelle",
+ "pelouse",
+ "peluche",
+ "pendule",
+ "pénétrer",
+ "pénible",
+ "pensif",
+ "pénurie",
+ "pépite",
+ "péplum",
+ "perdrix",
+ "perforer",
+ "période",
+ "permuter",
+ "perplexe",
+ "persil",
+ "perte",
+ "peser",
+ "pétale",
+ "petit",
+ "pétrir",
+ "peuple",
+ "pharaon",
+ "phobie",
+ "phoque",
+ "photon",
+ "phrase",
+ "physique",
+ "piano",
+ "pictural",
+ "pièce",
+ "pierre",
+ "pieuvre",
+ "pilote",
+ "pinceau",
+ "pipette",
+ "piquer",
+ "pirogue",
+ "piscine",
+ "piston",
+ "pivoter",
+ "pixel",
+ "pizza",
+ "placard",
+ "plafond",
+ "plaisir",
+ "planer",
+ "plaque",
+ "plastron",
+ "plateau",
+ "pleurer",
+ "plexus",
+ "pliage",
+ "plomb",
+ "plonger",
+ "pluie",
+ "plumage",
+ "pochette",
+ "poésie",
+ "poète",
+ "pointe",
+ "poirier",
+ "poisson",
+ "poivre",
+ "polaire",
+ "policier",
+ "pollen",
+ "polygone",
+ "pommade",
+ "pompier",
+ "ponctuel",
+ "pondérer",
+ "poney",
+ "portique",
+ "position",
+ "posséder",
+ "posture",
+ "potager",
+ "poteau",
+ "potion",
+ "pouce",
+ "poulain",
+ "poumon",
+ "pourpre",
+ "poussin",
+ "pouvoir",
+ "prairie",
+ "pratique",
+ "précieux",
+ "prédire",
+ "préfixe",
+ "prélude",
+ "prénom",
+ "présence",
+ "prétexte",
+ "prévoir",
+ "primitif",
+ "prince",
+ "prison",
+ "priver",
+ "problème",
+ "procéder",
+ "prodige",
+ "profond",
+ "progrès",
+ "proie",
+ "projeter",
+ "prologue",
+ "promener",
+ "propre",
+ "prospère",
+ "protéger",
+ "prouesse",
+ "proverbe",
+ "prudence",
+ "pruneau",
+ "psychose",
+ "public",
+ "puceron",
+ "puiser",
+ "pulpe",
+ "pulsar",
+ "punaise",
+ "punitif",
+ "pupitre",
+ "purifier",
+ "puzzle",
+ "pyramide",
+ "quasar",
+ "querelle",
+ "question",
+ "quiétude",
+ "quitter",
+ "quotient",
+ "racine",
+ "raconter",
+ "radieux",
+ "ragondin",
+ "raideur",
+ "raisin",
+ "ralentir",
+ "rallonge",
+ "ramasser",
+ "rapide",
+ "rasage",
+ "ratisser",
+ "ravager",
+ "ravin",
+ "rayonner",
+ "réactif",
+ "réagir",
+ "réaliser",
+ "réanimer",
+ "recevoir",
+ "réciter",
+ "réclamer",
+ "récolter",
+ "recruter",
+ "reculer",
+ "recycler",
+ "rédiger",
+ "redouter",
+ "refaire",
+ "réflexe",
+ "réformer",
+ "refrain",
+ "refuge",
+ "régalien",
+ "région",
+ "réglage",
+ "régulier",
+ "réitérer",
+ "rejeter",
+ "rejouer",
+ "relatif",
+ "relever",
+ "relief",
+ "remarque",
+ "remède",
+ "remise",
+ "remonter",
+ "remplir",
+ "remuer",
+ "renard",
+ "renfort",
+ "renifler",
+ "renoncer",
+ "rentrer",
+ "renvoi",
+ "replier",
+ "reporter",
+ "reprise",
+ "reptile",
+ "requin",
+ "réserve",
+ "résineux",
+ "résoudre",
+ "respect",
+ "rester",
+ "résultat",
+ "rétablir",
+ "retenir",
+ "réticule",
+ "retomber",
+ "retracer",
+ "réunion",
+ "réussir",
+ "revanche",
+ "revivre",
+ "révolte",
+ "révulsif",
+ "richesse",
+ "rideau",
+ "rieur",
+ "rigide",
+ "rigoler",
+ "rincer",
+ "riposter",
+ "risible",
+ "risque",
+ "rituel",
+ "rival",
+ "rivière",
+ "rocheux",
+ "romance",
+ "rompre",
+ "ronce",
+ "rondin",
+ "roseau",
+ "rosier",
+ "rotatif",
+ "rotor",
+ "rotule",
+ "rouge",
+ "rouille",
+ "rouleau",
+ "routine",
+ "royaume",
+ "ruban",
+ "rubis",
+ "ruche",
+ "ruelle",
+ "rugueux",
+ "ruiner",
+ "ruisseau",
+ "ruser",
+ "rustique",
+ "rythme",
+ "sabler",
+ "saboter",
+ "sabre",
+ "sacoche",
+ "safari",
+ "sagesse",
+ "saisir",
+ "salade",
+ "salive",
+ "salon",
+ "saluer",
+ "samedi",
+ "sanction",
+ "sanglier",
+ "sarcasme",
+ "sardine",
+ "saturer",
+ "saugrenu",
+ "saumon",
+ "sauter",
+ "sauvage",
+ "savant",
+ "savonner",
+ "scalpel",
+ "scandale",
+ "scélérat",
+ "scénario",
+ "sceptre",
+ "schéma",
+ "science",
+ "scinder",
+ "score",
+ "scrutin",
+ "sculpter",
+ "séance",
+ "sécable",
+ "sécher",
+ "secouer",
+ "sécréter",
+ "sédatif",
+ "séduire",
+ "seigneur",
+ "séjour",
+ "sélectif",
+ "semaine",
+ "sembler",
+ "semence",
+ "séminal",
+ "sénateur",
+ "sensible",
+ "sentence",
+ "séparer",
+ "séquence",
+ "serein",
+ "sergent",
+ "sérieux",
+ "serrure",
+ "sérum",
+ "service",
+ "sésame",
+ "sévir",
+ "sevrage",
+ "sextuple",
+ "sidéral",
+ "siècle",
+ "siéger",
+ "siffler",
+ "sigle",
+ "signal",
+ "silence",
+ "silicium",
+ "simple",
+ "sincère",
+ "sinistre",
+ "siphon",
+ "sirop",
+ "sismique",
+ "situer",
+ "skier",
+ "social",
+ "socle",
+ "sodium",
+ "soigneux",
+ "soldat",
+ "soleil",
+ "solitude",
+ "soluble",
+ "sombre",
+ "sommeil",
+ "somnoler",
+ "sonde",
+ "songeur",
+ "sonnette",
+ "sonore",
+ "sorcier",
+ "sortir",
+ "sosie",
+ "sottise",
+ "soucieux",
+ "soudure",
+ "souffle",
+ "soulever",
+ "soupape",
+ "source",
+ "soutirer",
+ "souvenir",
+ "spacieux",
+ "spatial",
+ "spécial",
+ "sphère",
+ "spiral",
+ "stable",
+ "station",
+ "sternum",
+ "stimulus",
+ "stipuler",
+ "strict",
+ "studieux",
+ "stupeur",
+ "styliste",
+ "sublime",
+ "substrat",
+ "subtil",
+ "subvenir",
+ "succès",
+ "sucre",
+ "suffixe",
+ "suggérer",
+ "suiveur",
+ "sulfate",
+ "superbe",
+ "supplier",
+ "surface",
+ "suricate",
+ "surmener",
+ "surprise",
+ "sursaut",
+ "survie",
+ "suspect",
+ "syllabe",
+ "symbole",
+ "symétrie",
+ "synapse",
+ "syntaxe",
+ "système",
+ "tabac",
+ "tablier",
+ "tactile",
+ "tailler",
+ "talent",
+ "talisman",
+ "talonner",
+ "tambour",
+ "tamiser",
+ "tangible",
+ "tapis",
+ "taquiner",
+ "tarder",
+ "tarif",
+ "tartine",
+ "tasse",
+ "tatami",
+ "tatouage",
+ "taupe",
+ "taureau",
+ "taxer",
+ "témoin",
+ "temporel",
+ "tenaille",
+ "tendre",
+ "teneur",
+ "tenir",
+ "tension",
+ "terminer",
+ "terne",
+ "terrible",
+ "tétine",
+ "texte",
+ "thème",
+ "théorie",
+ "thérapie",
+ "thorax",
+ "tibia",
+ "tiède",
+ "timide",
+ "tirelire",
+ "tiroir",
+ "tissu",
+ "titane",
+ "titre",
+ "tituber",
+ "toboggan",
+ "tolérant",
+ "tomate",
+ "tonique",
+ "tonneau",
+ "toponyme",
+ "torche",
+ "tordre",
+ "tornade",
+ "torpille",
+ "torrent",
+ "torse",
+ "tortue",
+ "totem",
+ "toucher",
+ "tournage",
+ "tousser",
+ "toxine",
+ "traction",
+ "trafic",
+ "tragique",
+ "trahir",
+ "train",
+ "trancher",
+ "travail",
+ "trèfle",
+ "tremper",
+ "trésor",
+ "treuil",
+ "triage",
+ "tribunal",
+ "tricoter",
+ "trilogie",
+ "triomphe",
+ "tripler",
+ "triturer",
+ "trivial",
+ "trombone",
+ "tronc",
+ "tropical",
+ "troupeau",
+ "tuile",
+ "tulipe",
+ "tumulte",
+ "tunnel",
+ "turbine",
+ "tuteur",
+ "tutoyer",
+ "tuyau",
+ "tympan",
+ "typhon",
+ "typique",
+ "tyran",
+ "ubuesque",
+ "ultime",
+ "ultrason",
+ "unanime",
+ "unifier",
+ "union",
+ "unique",
+ "unitaire",
+ "univers",
+ "uranium",
+ "urbain",
+ "urticant",
+ "usage",
+ "usine",
+ "usuel",
+ "usure",
+ "utile",
+ "utopie",
+ "vacarme",
+ "vaccin",
+ "vagabond",
+ "vague",
+ "vaillant",
+ "vaincre",
+ "vaisseau",
+ "valable",
+ "valise",
+ "vallon",
+ "valve",
+ "vampire",
+ "vanille",
+ "vapeur",
+ "varier",
+ "vaseux",
+ "vassal",
+ "vaste",
+ "vecteur",
+ "vedette",
+ "végétal",
+ "véhicule",
+ "veinard",
+ "véloce",
+ "vendredi",
+ "vénérer",
+ "venger",
+ "venimeux",
+ "ventouse",
+ "verdure",
+ "vérin",
+ "vernir",
+ "verrou",
+ "verser",
+ "vertu",
+ "veston",
+ "vétéran",
+ "vétuste",
+ "vexant",
+ "vexer",
+ "viaduc",
+ "viande",
+ "victoire",
+ "vidange",
+ "vidéo",
+ "vignette",
+ "vigueur",
+ "vilain",
+ "village",
+ "vinaigre",
+ "violon",
+ "vipère",
+ "virement",
+ "virtuose",
+ "virus",
+ "visage",
+ "viseur",
+ "vision",
+ "visqueux",
+ "visuel",
+ "vital",
+ "vitesse",
+ "viticole",
+ "vitrine",
+ "vivace",
+ "vivipare",
+ "vocation",
+ "voguer",
+ "voile",
+ "voisin",
+ "voiture",
+ "volaille",
+ "volcan",
+ "voltiger",
+ "volume",
+ "vorace",
+ "vortex",
+ "voter",
+ "vouloir",
+ "voyage",
+ "voyelle",
+ "wagon",
+ "xénon",
+ "yacht",
+ "zèbre",
+ "zénith",
+ "zeste",
+ "zoologie"
+ )
+}
diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt
new file mode 100644
index 000000000..da9b56275
--- /dev/null
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeItalian.kt
@@ -0,0 +1,2060 @@
+package io.iohk.atala.prism.apollo.utils.bip39.wordlists
+
+import kotlin.js.ExperimentalJsExport
+import kotlin.js.JsExport
+
+@OptIn(ExperimentalJsExport::class)
+@JsExport
+internal object MnemonicCodeItalian {
+ val wordList: List =
+ listOf(
+ "abaco",
+ "abbaglio",
+ "abbinato",
+ "abete",
+ "abisso",
+ "abolire",
+ "abrasivo",
+ "abrogato",
+ "accadere",
+ "accenno",
+ "accusato",
+ "acetone",
+ "achille",
+ "acido",
+ "acqua",
+ "acre",
+ "acrilico",
+ "acrobata",
+ "acuto",
+ "adagio",
+ "addebito",
+ "addome",
+ "adeguato",
+ "aderire",
+ "adipe",
+ "adottare",
+ "adulare",
+ "affabile",
+ "affetto",
+ "affisso",
+ "affranto",
+ "aforisma",
+ "afoso",
+ "africano",
+ "agave",
+ "agente",
+ "agevole",
+ "aggancio",
+ "agire",
+ "agitare",
+ "agonismo",
+ "agricolo",
+ "agrumeto",
+ "aguzzo",
+ "alabarda",
+ "alato",
+ "albatro",
+ "alberato",
+ "albo",
+ "albume",
+ "alce",
+ "alcolico",
+ "alettone",
+ "alfa",
+ "algebra",
+ "aliante",
+ "alibi",
+ "alimento",
+ "allagato",
+ "allegro",
+ "allievo",
+ "allodola",
+ "allusivo",
+ "almeno",
+ "alogeno",
+ "alpaca",
+ "alpestre",
+ "altalena",
+ "alterno",
+ "alticcio",
+ "altrove",
+ "alunno",
+ "alveolo",
+ "alzare",
+ "amalgama",
+ "amanita",
+ "amarena",
+ "ambito",
+ "ambrato",
+ "ameba",
+ "america",
+ "ametista",
+ "amico",
+ "ammasso",
+ "ammenda",
+ "ammirare",
+ "ammonito",
+ "amore",
+ "ampio",
+ "ampliare",
+ "amuleto",
+ "anacardo",
+ "anagrafe",
+ "analista",
+ "anarchia",
+ "anatra",
+ "anca",
+ "ancella",
+ "ancora",
+ "andare",
+ "andrea",
+ "anello",
+ "angelo",
+ "angolare",
+ "angusto",
+ "anima",
+ "annegare",
+ "annidato",
+ "anno",
+ "annuncio",
+ "anonimo",
+ "anticipo",
+ "anzi",
+ "apatico",
+ "apertura",
+ "apode",
+ "apparire",
+ "appetito",
+ "appoggio",
+ "approdo",
+ "appunto",
+ "aprile",
+ "arabica",
+ "arachide",
+ "aragosta",
+ "araldica",
+ "arancio",
+ "aratura",
+ "arazzo",
+ "arbitro",
+ "archivio",
+ "ardito",
+ "arenile",
+ "argento",
+ "argine",
+ "arguto",
+ "aria",
+ "armonia",
+ "arnese",
+ "arredato",
+ "arringa",
+ "arrosto",
+ "arsenico",
+ "arso",
+ "artefice",
+ "arzillo",
+ "asciutto",
+ "ascolto",
+ "asepsi",
+ "asettico",
+ "asfalto",
+ "asino",
+ "asola",
+ "aspirato",
+ "aspro",
+ "assaggio",
+ "asse",
+ "assoluto",
+ "assurdo",
+ "asta",
+ "astenuto",
+ "astice",
+ "astratto",
+ "atavico",
+ "ateismo",
+ "atomico",
+ "atono",
+ "attesa",
+ "attivare",
+ "attorno",
+ "attrito",
+ "attuale",
+ "ausilio",
+ "austria",
+ "autista",
+ "autonomo",
+ "autunno",
+ "avanzato",
+ "avere",
+ "avvenire",
+ "avviso",
+ "avvolgere",
+ "azione",
+ "azoto",
+ "azzimo",
+ "azzurro",
+ "babele",
+ "baccano",
+ "bacino",
+ "baco",
+ "badessa",
+ "badilata",
+ "bagnato",
+ "baita",
+ "balcone",
+ "baldo",
+ "balena",
+ "ballata",
+ "balzano",
+ "bambino",
+ "bandire",
+ "baraonda",
+ "barbaro",
+ "barca",
+ "baritono",
+ "barlume",
+ "barocco",
+ "basilico",
+ "basso",
+ "batosta",
+ "battuto",
+ "baule",
+ "bava",
+ "bavosa",
+ "becco",
+ "beffa",
+ "belgio",
+ "belva",
+ "benda",
+ "benevole",
+ "benigno",
+ "benzina",
+ "bere",
+ "berlina",
+ "beta",
+ "bibita",
+ "bici",
+ "bidone",
+ "bifido",
+ "biga",
+ "bilancia",
+ "bimbo",
+ "binocolo",
+ "biologo",
+ "bipede",
+ "bipolare",
+ "birbante",
+ "birra",
+ "biscotto",
+ "bisesto",
+ "bisnonno",
+ "bisonte",
+ "bisturi",
+ "bizzarro",
+ "blando",
+ "blatta",
+ "bollito",
+ "bonifico",
+ "bordo",
+ "bosco",
+ "botanico",
+ "bottino",
+ "bozzolo",
+ "braccio",
+ "bradipo",
+ "brama",
+ "branca",
+ "bravura",
+ "bretella",
+ "brevetto",
+ "brezza",
+ "briglia",
+ "brillante",
+ "brindare",
+ "broccolo",
+ "brodo",
+ "bronzina",
+ "brullo",
+ "bruno",
+ "bubbone",
+ "buca",
+ "budino",
+ "buffone",
+ "buio",
+ "bulbo",
+ "buono",
+ "burlone",
+ "burrasca",
+ "bussola",
+ "busta",
+ "cadetto",
+ "caduco",
+ "calamaro",
+ "calcolo",
+ "calesse",
+ "calibro",
+ "calmo",
+ "caloria",
+ "cambusa",
+ "camerata",
+ "camicia",
+ "cammino",
+ "camola",
+ "campale",
+ "canapa",
+ "candela",
+ "cane",
+ "canino",
+ "canotto",
+ "cantina",
+ "capace",
+ "capello",
+ "capitolo",
+ "capogiro",
+ "cappero",
+ "capra",
+ "capsula",
+ "carapace",
+ "carcassa",
+ "cardo",
+ "carisma",
+ "carovana",
+ "carretto",
+ "cartolina",
+ "casaccio",
+ "cascata",
+ "caserma",
+ "caso",
+ "cassone",
+ "castello",
+ "casuale",
+ "catasta",
+ "catena",
+ "catrame",
+ "cauto",
+ "cavillo",
+ "cedibile",
+ "cedrata",
+ "cefalo",
+ "celebre",
+ "cellulare",
+ "cena",
+ "cenone",
+ "centesimo",
+ "ceramica",
+ "cercare",
+ "certo",
+ "cerume",
+ "cervello",
+ "cesoia",
+ "cespo",
+ "ceto",
+ "chela",
+ "chiaro",
+ "chicca",
+ "chiedere",
+ "chimera",
+ "china",
+ "chirurgo",
+ "chitarra",
+ "ciao",
+ "ciclismo",
+ "cifrare",
+ "cigno",
+ "cilindro",
+ "ciottolo",
+ "circa",
+ "cirrosi",
+ "citrico",
+ "cittadino",
+ "ciuffo",
+ "civetta",
+ "civile",
+ "classico",
+ "clinica",
+ "cloro",
+ "cocco",
+ "codardo",
+ "codice",
+ "coerente",
+ "cognome",
+ "collare",
+ "colmato",
+ "colore",
+ "colposo",
+ "coltivato",
+ "colza",
+ "coma",
+ "cometa",
+ "commando",
+ "comodo",
+ "computer",
+ "comune",
+ "conciso",
+ "condurre",
+ "conferma",
+ "congelare",
+ "coniuge",
+ "connesso",
+ "conoscere",
+ "consumo",
+ "continuo",
+ "convegno",
+ "coperto",
+ "copione",
+ "coppia",
+ "copricapo",
+ "corazza",
+ "cordata",
+ "coricato",
+ "cornice",
+ "corolla",
+ "corpo",
+ "corredo",
+ "corsia",
+ "cortese",
+ "cosmico",
+ "costante",
+ "cottura",
+ "covato",
+ "cratere",
+ "cravatta",
+ "creato",
+ "credere",
+ "cremoso",
+ "crescita",
+ "creta",
+ "criceto",
+ "crinale",
+ "crisi",
+ "critico",
+ "croce",
+ "cronaca",
+ "crostata",
+ "cruciale",
+ "crusca",
+ "cucire",
+ "cuculo",
+ "cugino",
+ "cullato",
+ "cupola",
+ "curatore",
+ "cursore",
+ "curvo",
+ "cuscino",
+ "custode",
+ "dado",
+ "daino",
+ "dalmata",
+ "damerino",
+ "daniela",
+ "dannoso",
+ "danzare",
+ "datato",
+ "davanti",
+ "davvero",
+ "debutto",
+ "decennio",
+ "deciso",
+ "declino",
+ "decollo",
+ "decreto",
+ "dedicato",
+ "definito",
+ "deforme",
+ "degno",
+ "delegare",
+ "delfino",
+ "delirio",
+ "delta",
+ "demenza",
+ "denotato",
+ "dentro",
+ "deposito",
+ "derapata",
+ "derivare",
+ "deroga",
+ "descritto",
+ "deserto",
+ "desiderio",
+ "desumere",
+ "detersivo",
+ "devoto",
+ "diametro",
+ "dicembre",
+ "diedro",
+ "difeso",
+ "diffuso",
+ "digerire",
+ "digitale",
+ "diluvio",
+ "dinamico",
+ "dinnanzi",
+ "dipinto",
+ "diploma",
+ "dipolo",
+ "diradare",
+ "dire",
+ "dirotto",
+ "dirupo",
+ "disagio",
+ "discreto",
+ "disfare",
+ "disgelo",
+ "disposto",
+ "distanza",
+ "disumano",
+ "dito",
+ "divano",
+ "divelto",
+ "dividere",
+ "divorato",
+ "doblone",
+ "docente",
+ "doganale",
+ "dogma",
+ "dolce",
+ "domato",
+ "domenica",
+ "dominare",
+ "dondolo",
+ "dono",
+ "dormire",
+ "dote",
+ "dottore",
+ "dovuto",
+ "dozzina",
+ "drago",
+ "druido",
+ "dubbio",
+ "dubitare",
+ "ducale",
+ "duna",
+ "duomo",
+ "duplice",
+ "duraturo",
+ "ebano",
+ "eccesso",
+ "ecco",
+ "eclissi",
+ "economia",
+ "edera",
+ "edicola",
+ "edile",
+ "editoria",
+ "educare",
+ "egemonia",
+ "egli",
+ "egoismo",
+ "egregio",
+ "elaborato",
+ "elargire",
+ "elegante",
+ "elencato",
+ "eletto",
+ "elevare",
+ "elfico",
+ "elica",
+ "elmo",
+ "elsa",
+ "eluso",
+ "emanato",
+ "emblema",
+ "emesso",
+ "emiro",
+ "emotivo",
+ "emozione",
+ "empirico",
+ "emulo",
+ "endemico",
+ "enduro",
+ "energia",
+ "enfasi",
+ "enoteca",
+ "entrare",
+ "enzima",
+ "epatite",
+ "epilogo",
+ "episodio",
+ "epocale",
+ "eppure",
+ "equatore",
+ "erario",
+ "erba",
+ "erboso",
+ "erede",
+ "eremita",
+ "erigere",
+ "ermetico",
+ "eroe",
+ "erosivo",
+ "errante",
+ "esagono",
+ "esame",
+ "esanime",
+ "esaudire",
+ "esca",
+ "esempio",
+ "esercito",
+ "esibito",
+ "esigente",
+ "esistere",
+ "esito",
+ "esofago",
+ "esortato",
+ "esoso",
+ "espanso",
+ "espresso",
+ "essenza",
+ "esso",
+ "esteso",
+ "estimare",
+ "estonia",
+ "estroso",
+ "esultare",
+ "etilico",
+ "etnico",
+ "etrusco",
+ "etto",
+ "euclideo",
+ "europa",
+ "evaso",
+ "evidenza",
+ "evitato",
+ "evoluto",
+ "evviva",
+ "fabbrica",
+ "faccenda",
+ "fachiro",
+ "falco",
+ "famiglia",
+ "fanale",
+ "fanfara",
+ "fango",
+ "fantasma",
+ "fare",
+ "farfalla",
+ "farinoso",
+ "farmaco",
+ "fascia",
+ "fastoso",
+ "fasullo",
+ "faticare",
+ "fato",
+ "favoloso",
+ "febbre",
+ "fecola",
+ "fede",
+ "fegato",
+ "felpa",
+ "feltro",
+ "femmina",
+ "fendere",
+ "fenomeno",
+ "fermento",
+ "ferro",
+ "fertile",
+ "fessura",
+ "festivo",
+ "fetta",
+ "feudo",
+ "fiaba",
+ "fiducia",
+ "fifa",
+ "figurato",
+ "filo",
+ "finanza",
+ "finestra",
+ "finire",
+ "fiore",
+ "fiscale",
+ "fisico",
+ "fiume",
+ "flacone",
+ "flamenco",
+ "flebo",
+ "flemma",
+ "florido",
+ "fluente",
+ "fluoro",
+ "fobico",
+ "focaccia",
+ "focoso",
+ "foderato",
+ "foglio",
+ "folata",
+ "folclore",
+ "folgore",
+ "fondente",
+ "fonetico",
+ "fonia",
+ "fontana",
+ "forbito",
+ "forchetta",
+ "foresta",
+ "formica",
+ "fornaio",
+ "foro",
+ "fortezza",
+ "forzare",
+ "fosfato",
+ "fosso",
+ "fracasso",
+ "frana",
+ "frassino",
+ "fratello",
+ "freccetta",
+ "frenata",
+ "fresco",
+ "frigo",
+ "frollino",
+ "fronde",
+ "frugale",
+ "frutta",
+ "fucilata",
+ "fucsia",
+ "fuggente",
+ "fulmine",
+ "fulvo",
+ "fumante",
+ "fumetto",
+ "fumoso",
+ "fune",
+ "funzione",
+ "fuoco",
+ "furbo",
+ "furgone",
+ "furore",
+ "fuso",
+ "futile",
+ "gabbiano",
+ "gaffe",
+ "galateo",
+ "gallina",
+ "galoppo",
+ "gambero",
+ "gamma",
+ "garanzia",
+ "garbo",
+ "garofano",
+ "garzone",
+ "gasdotto",
+ "gasolio",
+ "gastrico",
+ "gatto",
+ "gaudio",
+ "gazebo",
+ "gazzella",
+ "geco",
+ "gelatina",
+ "gelso",
+ "gemello",
+ "gemmato",
+ "gene",
+ "genitore",
+ "gennaio",
+ "genotipo",
+ "gergo",
+ "ghepardo",
+ "ghiaccio",
+ "ghisa",
+ "giallo",
+ "gilda",
+ "ginepro",
+ "giocare",
+ "gioiello",
+ "giorno",
+ "giove",
+ "girato",
+ "girone",
+ "gittata",
+ "giudizio",
+ "giurato",
+ "giusto",
+ "globulo",
+ "glutine",
+ "gnomo",
+ "gobba",
+ "golf",
+ "gomito",
+ "gommone",
+ "gonfio",
+ "gonna",
+ "governo",
+ "gracile",
+ "grado",
+ "grafico",
+ "grammo",
+ "grande",
+ "grattare",
+ "gravoso",
+ "grazia",
+ "greca",
+ "gregge",
+ "grifone",
+ "grigio",
+ "grinza",
+ "grotta",
+ "gruppo",
+ "guadagno",
+ "guaio",
+ "guanto",
+ "guardare",
+ "gufo",
+ "guidare",
+ "ibernato",
+ "icona",
+ "identico",
+ "idillio",
+ "idolo",
+ "idra",
+ "idrico",
+ "idrogeno",
+ "igiene",
+ "ignaro",
+ "ignorato",
+ "ilare",
+ "illeso",
+ "illogico",
+ "illudere",
+ "imballo",
+ "imbevuto",
+ "imbocco",
+ "imbuto",
+ "immane",
+ "immerso",
+ "immolato",
+ "impacco",
+ "impeto",
+ "impiego",
+ "importo",
+ "impronta",
+ "inalare",
+ "inarcare",
+ "inattivo",
+ "incanto",
+ "incendio",
+ "inchino",
+ "incisivo",
+ "incluso",
+ "incontro",
+ "incrocio",
+ "incubo",
+ "indagine",
+ "india",
+ "indole",
+ "inedito",
+ "infatti",
+ "infilare",
+ "inflitto",
+ "ingaggio",
+ "ingegno",
+ "inglese",
+ "ingordo",
+ "ingrosso",
+ "innesco",
+ "inodore",
+ "inoltrare",
+ "inondato",
+ "insano",
+ "insetto",
+ "insieme",
+ "insonnia",
+ "insulina",
+ "intasato",
+ "intero",
+ "intonaco",
+ "intuito",
+ "inumidire",
+ "invalido",
+ "invece",
+ "invito",
+ "iperbole",
+ "ipnotico",
+ "ipotesi",
+ "ippica",
+ "iride",
+ "irlanda",
+ "ironico",
+ "irrigato",
+ "irrorare",
+ "isolato",
+ "isotopo",
+ "isterico",
+ "istituto",
+ "istrice",
+ "italia",
+ "iterare",
+ "labbro",
+ "labirinto",
+ "lacca",
+ "lacerato",
+ "lacrima",
+ "lacuna",
+ "laddove",
+ "lago",
+ "lampo",
+ "lancetta",
+ "lanterna",
+ "lardoso",
+ "larga",
+ "laringe",
+ "lastra",
+ "latenza",
+ "latino",
+ "lattuga",
+ "lavagna",
+ "lavoro",
+ "legale",
+ "leggero",
+ "lembo",
+ "lentezza",
+ "lenza",
+ "leone",
+ "lepre",
+ "lesivo",
+ "lessato",
+ "lesto",
+ "letterale",
+ "leva",
+ "levigato",
+ "libero",
+ "lido",
+ "lievito",
+ "lilla",
+ "limatura",
+ "limitare",
+ "limpido",
+ "lineare",
+ "lingua",
+ "liquido",
+ "lira",
+ "lirica",
+ "lisca",
+ "lite",
+ "litigio",
+ "livrea",
+ "locanda",
+ "lode",
+ "logica",
+ "lombare",
+ "londra",
+ "longevo",
+ "loquace",
+ "lorenzo",
+ "loto",
+ "lotteria",
+ "luce",
+ "lucidato",
+ "lumaca",
+ "luminoso",
+ "lungo",
+ "lupo",
+ "luppolo",
+ "lusinga",
+ "lusso",
+ "lutto",
+ "macabro",
+ "macchina",
+ "macero",
+ "macinato",
+ "madama",
+ "magico",
+ "maglia",
+ "magnete",
+ "magro",
+ "maiolica",
+ "malafede",
+ "malgrado",
+ "malinteso",
+ "malsano",
+ "malto",
+ "malumore",
+ "mana",
+ "mancia",
+ "mandorla",
+ "mangiare",
+ "manifesto",
+ "mannaro",
+ "manovra",
+ "mansarda",
+ "mantide",
+ "manubrio",
+ "mappa",
+ "maratona",
+ "marcire",
+ "maretta",
+ "marmo",
+ "marsupio",
+ "maschera",
+ "massaia",
+ "mastino",
+ "materasso",
+ "matricola",
+ "mattone",
+ "maturo",
+ "mazurca",
+ "meandro",
+ "meccanico",
+ "mecenate",
+ "medesimo",
+ "meditare",
+ "mega",
+ "melassa",
+ "melis",
+ "melodia",
+ "meninge",
+ "meno",
+ "mensola",
+ "mercurio",
+ "merenda",
+ "merlo",
+ "meschino",
+ "mese",
+ "messere",
+ "mestolo",
+ "metallo",
+ "metodo",
+ "mettere",
+ "miagolare",
+ "mica",
+ "micelio",
+ "michele",
+ "microbo",
+ "midollo",
+ "miele",
+ "migliore",
+ "milano",
+ "milite",
+ "mimosa",
+ "minerale",
+ "mini",
+ "minore",
+ "mirino",
+ "mirtillo",
+ "miscela",
+ "missiva",
+ "misto",
+ "misurare",
+ "mitezza",
+ "mitigare",
+ "mitra",
+ "mittente",
+ "mnemonico",
+ "modello",
+ "modifica",
+ "modulo",
+ "mogano",
+ "mogio",
+ "mole",
+ "molosso",
+ "monastero",
+ "monco",
+ "mondina",
+ "monetario",
+ "monile",
+ "monotono",
+ "monsone",
+ "montato",
+ "monviso",
+ "mora",
+ "mordere",
+ "morsicato",
+ "mostro",
+ "motivato",
+ "motosega",
+ "motto",
+ "movenza",
+ "movimento",
+ "mozzo",
+ "mucca",
+ "mucosa",
+ "muffa",
+ "mughetto",
+ "mugnaio",
+ "mulatto",
+ "mulinello",
+ "multiplo",
+ "mummia",
+ "munto",
+ "muovere",
+ "murale",
+ "musa",
+ "muscolo",
+ "musica",
+ "mutevole",
+ "muto",
+ "nababbo",
+ "nafta",
+ "nanometro",
+ "narciso",
+ "narice",
+ "narrato",
+ "nascere",
+ "nastrare",
+ "naturale",
+ "nautica",
+ "naviglio",
+ "nebulosa",
+ "necrosi",
+ "negativo",
+ "negozio",
+ "nemmeno",
+ "neofita",
+ "neretto",
+ "nervo",
+ "nessuno",
+ "nettuno",
+ "neutrale",
+ "neve",
+ "nevrotico",
+ "nicchia",
+ "ninfa",
+ "nitido",
+ "nobile",
+ "nocivo",
+ "nodo",
+ "nome",
+ "nomina",
+ "nordico",
+ "normale",
+ "norvegese",
+ "nostrano",
+ "notare",
+ "notizia",
+ "notturno",
+ "novella",
+ "nucleo",
+ "nulla",
+ "numero",
+ "nuovo",
+ "nutrire",
+ "nuvola",
+ "nuziale",
+ "oasi",
+ "obbedire",
+ "obbligo",
+ "obelisco",
+ "oblio",
+ "obolo",
+ "obsoleto",
+ "occasione",
+ "occhio",
+ "occidente",
+ "occorrere",
+ "occultare",
+ "ocra",
+ "oculato",
+ "odierno",
+ "odorare",
+ "offerta",
+ "offrire",
+ "offuscato",
+ "oggetto",
+ "oggi",
+ "ognuno",
+ "olandese",
+ "olfatto",
+ "oliato",
+ "oliva",
+ "ologramma",
+ "oltre",
+ "omaggio",
+ "ombelico",
+ "ombra",
+ "omega",
+ "omissione",
+ "ondoso",
+ "onere",
+ "onice",
+ "onnivoro",
+ "onorevole",
+ "onta",
+ "operato",
+ "opinione",
+ "opposto",
+ "oracolo",
+ "orafo",
+ "ordine",
+ "orecchino",
+ "orefice",
+ "orfano",
+ "organico",
+ "origine",
+ "orizzonte",
+ "orma",
+ "ormeggio",
+ "ornativo",
+ "orologio",
+ "orrendo",
+ "orribile",
+ "ortensia",
+ "ortica",
+ "orzata",
+ "orzo",
+ "osare",
+ "oscurare",
+ "osmosi",
+ "ospedale",
+ "ospite",
+ "ossa",
+ "ossidare",
+ "ostacolo",
+ "oste",
+ "otite",
+ "otre",
+ "ottagono",
+ "ottimo",
+ "ottobre",
+ "ovale",
+ "ovest",
+ "ovino",
+ "oviparo",
+ "ovocito",
+ "ovunque",
+ "ovviare",
+ "ozio",
+ "pacchetto",
+ "pace",
+ "pacifico",
+ "padella",
+ "padrone",
+ "paese",
+ "paga",
+ "pagina",
+ "palazzina",
+ "palesare",
+ "pallido",
+ "palo",
+ "palude",
+ "pandoro",
+ "pannello",
+ "paolo",
+ "paonazzo",
+ "paprica",
+ "parabola",
+ "parcella",
+ "parere",
+ "pargolo",
+ "pari",
+ "parlato",
+ "parola",
+ "partire",
+ "parvenza",
+ "parziale",
+ "passivo",
+ "pasticca",
+ "patacca",
+ "patologia",
+ "pattume",
+ "pavone",
+ "peccato",
+ "pedalare",
+ "pedonale",
+ "peggio",
+ "peloso",
+ "penare",
+ "pendice",
+ "penisola",
+ "pennuto",
+ "penombra",
+ "pensare",
+ "pentola",
+ "pepe",
+ "pepita",
+ "perbene",
+ "percorso",
+ "perdonato",
+ "perforare",
+ "pergamena",
+ "periodo",
+ "permesso",
+ "perno",
+ "perplesso",
+ "persuaso",
+ "pertugio",
+ "pervaso",
+ "pesatore",
+ "pesista",
+ "peso",
+ "pestifero",
+ "petalo",
+ "pettine",
+ "petulante",
+ "pezzo",
+ "piacere",
+ "pianta",
+ "piattino",
+ "piccino",
+ "picozza",
+ "piega",
+ "pietra",
+ "piffero",
+ "pigiama",
+ "pigolio",
+ "pigro",
+ "pila",
+ "pilifero",
+ "pillola",
+ "pilota",
+ "pimpante",
+ "pineta",
+ "pinna",
+ "pinolo",
+ "pioggia",
+ "piombo",
+ "piramide",
+ "piretico",
+ "pirite",
+ "pirolisi",
+ "pitone",
+ "pizzico",
+ "placebo",
+ "planare",
+ "plasma",
+ "platano",
+ "plenario",
+ "pochezza",
+ "poderoso",
+ "podismo",
+ "poesia",
+ "poggiare",
+ "polenta",
+ "poligono",
+ "pollice",
+ "polmonite",
+ "polpetta",
+ "polso",
+ "poltrona",
+ "polvere",
+ "pomice",
+ "pomodoro",
+ "ponte",
+ "popoloso",
+ "porfido",
+ "poroso",
+ "porpora",
+ "porre",
+ "portata",
+ "posa",
+ "positivo",
+ "possesso",
+ "postulato",
+ "potassio",
+ "potere",
+ "pranzo",
+ "prassi",
+ "pratica",
+ "precluso",
+ "predica",
+ "prefisso",
+ "pregiato",
+ "prelievo",
+ "premere",
+ "prenotare",
+ "preparato",
+ "presenza",
+ "pretesto",
+ "prevalso",
+ "prima",
+ "principe",
+ "privato",
+ "problema",
+ "procura",
+ "produrre",
+ "profumo",
+ "progetto",
+ "prolunga",
+ "promessa",
+ "pronome",
+ "proposta",
+ "proroga",
+ "proteso",
+ "prova",
+ "prudente",
+ "prugna",
+ "prurito",
+ "psiche",
+ "pubblico",
+ "pudica",
+ "pugilato",
+ "pugno",
+ "pulce",
+ "pulito",
+ "pulsante",
+ "puntare",
+ "pupazzo",
+ "pupilla",
+ "puro",
+ "quadro",
+ "qualcosa",
+ "quasi",
+ "querela",
+ "quota",
+ "raccolto",
+ "raddoppio",
+ "radicale",
+ "radunato",
+ "raffica",
+ "ragazzo",
+ "ragione",
+ "ragno",
+ "ramarro",
+ "ramingo",
+ "ramo",
+ "randagio",
+ "rantolare",
+ "rapato",
+ "rapina",
+ "rappreso",
+ "rasatura",
+ "raschiato",
+ "rasente",
+ "rassegna",
+ "rastrello",
+ "rata",
+ "ravveduto",
+ "reale",
+ "recepire",
+ "recinto",
+ "recluta",
+ "recondito",
+ "recupero",
+ "reddito",
+ "redimere",
+ "regalato",
+ "registro",
+ "regola",
+ "regresso",
+ "relazione",
+ "remare",
+ "remoto",
+ "renna",
+ "replica",
+ "reprimere",
+ "reputare",
+ "resa",
+ "residente",
+ "responso",
+ "restauro",
+ "rete",
+ "retina",
+ "retorica",
+ "rettifica",
+ "revocato",
+ "riassunto",
+ "ribadire",
+ "ribelle",
+ "ribrezzo",
+ "ricarica",
+ "ricco",
+ "ricevere",
+ "riciclato",
+ "ricordo",
+ "ricreduto",
+ "ridicolo",
+ "ridurre",
+ "rifasare",
+ "riflesso",
+ "riforma",
+ "rifugio",
+ "rigare",
+ "rigettato",
+ "righello",
+ "rilassato",
+ "rilevato",
+ "rimanere",
+ "rimbalzo",
+ "rimedio",
+ "rimorchio",
+ "rinascita",
+ "rincaro",
+ "rinforzo",
+ "rinnovo",
+ "rinomato",
+ "rinsavito",
+ "rintocco",
+ "rinuncia",
+ "rinvenire",
+ "riparato",
+ "ripetuto",
+ "ripieno",
+ "riportare",
+ "ripresa",
+ "ripulire",
+ "risata",
+ "rischio",
+ "riserva",
+ "risibile",
+ "riso",
+ "rispetto",
+ "ristoro",
+ "risultato",
+ "risvolto",
+ "ritardo",
+ "ritegno",
+ "ritmico",
+ "ritrovo",
+ "riunione",
+ "riva",
+ "riverso",
+ "rivincita",
+ "rivolto",
+ "rizoma",
+ "roba",
+ "robotico",
+ "robusto",
+ "roccia",
+ "roco",
+ "rodaggio",
+ "rodere",
+ "roditore",
+ "rogito",
+ "rollio",
+ "romantico",
+ "rompere",
+ "ronzio",
+ "rosolare",
+ "rospo",
+ "rotante",
+ "rotondo",
+ "rotula",
+ "rovescio",
+ "rubizzo",
+ "rubrica",
+ "ruga",
+ "rullino",
+ "rumine",
+ "rumoroso",
+ "ruolo",
+ "rupe",
+ "russare",
+ "rustico",
+ "sabato",
+ "sabbiare",
+ "sabotato",
+ "sagoma",
+ "salasso",
+ "saldatura",
+ "salgemma",
+ "salivare",
+ "salmone",
+ "salone",
+ "saltare",
+ "saluto",
+ "salvo",
+ "sapere",
+ "sapido",
+ "saporito",
+ "saraceno",
+ "sarcasmo",
+ "sarto",
+ "sassoso",
+ "satellite",
+ "satira",
+ "satollo",
+ "saturno",
+ "savana",
+ "savio",
+ "saziato",
+ "sbadiglio",
+ "sbalzo",
+ "sbancato",
+ "sbarra",
+ "sbattere",
+ "sbavare",
+ "sbendare",
+ "sbirciare",
+ "sbloccato",
+ "sbocciato",
+ "sbrinare",
+ "sbruffone",
+ "sbuffare",
+ "scabroso",
+ "scadenza",
+ "scala",
+ "scambiare",
+ "scandalo",
+ "scapola",
+ "scarso",
+ "scatenare",
+ "scavato",
+ "scelto",
+ "scenico",
+ "scettro",
+ "scheda",
+ "schiena",
+ "sciarpa",
+ "scienza",
+ "scindere",
+ "scippo",
+ "sciroppo",
+ "scivolo",
+ "sclerare",
+ "scodella",
+ "scolpito",
+ "scomparto",
+ "sconforto",
+ "scoprire",
+ "scorta",
+ "scossone",
+ "scozzese",
+ "scriba",
+ "scrollare",
+ "scrutinio",
+ "scuderia",
+ "scultore",
+ "scuola",
+ "scuro",
+ "scusare",
+ "sdebitare",
+ "sdoganare",
+ "seccatura",
+ "secondo",
+ "sedano",
+ "seggiola",
+ "segnalato",
+ "segregato",
+ "seguito",
+ "selciato",
+ "selettivo",
+ "sella",
+ "selvaggio",
+ "semaforo",
+ "sembrare",
+ "seme",
+ "seminato",
+ "sempre",
+ "senso",
+ "sentire",
+ "sepolto",
+ "sequenza",
+ "serata",
+ "serbato",
+ "sereno",
+ "serio",
+ "serpente",
+ "serraglio",
+ "servire",
+ "sestina",
+ "setola",
+ "settimana",
+ "sfacelo",
+ "sfaldare",
+ "sfamato",
+ "sfarzoso",
+ "sfaticato",
+ "sfera",
+ "sfida",
+ "sfilato",
+ "sfinge",
+ "sfocato",
+ "sfoderare",
+ "sfogo",
+ "sfoltire",
+ "sforzato",
+ "sfratto",
+ "sfruttato",
+ "sfuggito",
+ "sfumare",
+ "sfuso",
+ "sgabello",
+ "sgarbato",
+ "sgonfiare",
+ "sgorbio",
+ "sgrassato",
+ "sguardo",
+ "sibilo",
+ "siccome",
+ "sierra",
+ "sigla",
+ "signore",
+ "silenzio",
+ "sillaba",
+ "simbolo",
+ "simpatico",
+ "simulato",
+ "sinfonia",
+ "singolo",
+ "sinistro",
+ "sino",
+ "sintesi",
+ "sinusoide",
+ "sipario",
+ "sisma",
+ "sistole",
+ "situato",
+ "slitta",
+ "slogatura",
+ "sloveno",
+ "smarrito",
+ "smemorato",
+ "smentito",
+ "smeraldo",
+ "smilzo",
+ "smontare",
+ "smottato",
+ "smussato",
+ "snellire",
+ "snervato",
+ "snodo",
+ "sobbalzo",
+ "sobrio",
+ "soccorso",
+ "sociale",
+ "sodale",
+ "soffitto",
+ "sogno",
+ "soldato",
+ "solenne",
+ "solido",
+ "sollazzo",
+ "solo",
+ "solubile",
+ "solvente",
+ "somatico",
+ "somma",
+ "sonda",
+ "sonetto",
+ "sonnifero",
+ "sopire",
+ "soppeso",
+ "sopra",
+ "sorgere",
+ "sorpasso",
+ "sorriso",
+ "sorso",
+ "sorteggio",
+ "sorvolato",
+ "sospiro",
+ "sosta",
+ "sottile",
+ "spada",
+ "spalla",
+ "spargere",
+ "spatola",
+ "spavento",
+ "spazzola",
+ "specie",
+ "spedire",
+ "spegnere",
+ "spelatura",
+ "speranza",
+ "spessore",
+ "spettrale",
+ "spezzato",
+ "spia",
+ "spigoloso",
+ "spillato",
+ "spinoso",
+ "spirale",
+ "splendido",
+ "sportivo",
+ "sposo",
+ "spranga",
+ "sprecare",
+ "spronato",
+ "spruzzo",
+ "spuntino",
+ "squillo",
+ "sradicare",
+ "srotolato",
+ "stabile",
+ "stacco",
+ "staffa",
+ "stagnare",
+ "stampato",
+ "stantio",
+ "starnuto",
+ "stasera",
+ "statuto",
+ "stelo",
+ "steppa",
+ "sterzo",
+ "stiletto",
+ "stima",
+ "stirpe",
+ "stivale",
+ "stizzoso",
+ "stonato",
+ "storico",
+ "strappo",
+ "stregato",
+ "stridulo",
+ "strozzare",
+ "strutto",
+ "stuccare",
+ "stufo",
+ "stupendo",
+ "subentro",
+ "succoso",
+ "sudore",
+ "suggerito",
+ "sugo",
+ "sultano",
+ "suonare",
+ "superbo",
+ "supporto",
+ "surgelato",
+ "surrogato",
+ "sussurro",
+ "sutura",
+ "svagare",
+ "svedese",
+ "sveglio",
+ "svelare",
+ "svenuto",
+ "svezia",
+ "sviluppo",
+ "svista",
+ "svizzera",
+ "svolta",
+ "svuotare",
+ "tabacco",
+ "tabulato",
+ "tacciare",
+ "taciturno",
+ "tale",
+ "talismano",
+ "tampone",
+ "tannino",
+ "tara",
+ "tardivo",
+ "targato",
+ "tariffa",
+ "tarpare",
+ "tartaruga",
+ "tasto",
+ "tattico",
+ "taverna",
+ "tavolata",
+ "tazza",
+ "teca",
+ "tecnico",
+ "telefono",
+ "temerario",
+ "tempo",
+ "temuto",
+ "tendone",
+ "tenero",
+ "tensione",
+ "tentacolo",
+ "teorema",
+ "terme",
+ "terrazzo",
+ "terzetto",
+ "tesi",
+ "tesserato",
+ "testato",
+ "tetro",
+ "tettoia",
+ "tifare",
+ "tigella",
+ "timbro",
+ "tinto",
+ "tipico",
+ "tipografo",
+ "tiraggio",
+ "tiro",
+ "titanio",
+ "titolo",
+ "titubante",
+ "tizio",
+ "tizzone",
+ "toccare",
+ "tollerare",
+ "tolto",
+ "tombola",
+ "tomo",
+ "tonfo",
+ "tonsilla",
+ "topazio",
+ "topologia",
+ "toppa",
+ "torba",
+ "tornare",
+ "torrone",
+ "tortora",
+ "toscano",
+ "tossire",
+ "tostatura",
+ "totano",
+ "trabocco",
+ "trachea",
+ "trafila",
+ "tragedia",
+ "tralcio",
+ "tramonto",
+ "transito",
+ "trapano",
+ "trarre",
+ "trasloco",
+ "trattato",
+ "trave",
+ "treccia",
+ "tremolio",
+ "trespolo",
+ "tributo",
+ "tricheco",
+ "trifoglio",
+ "trillo",
+ "trincea",
+ "trio",
+ "tristezza",
+ "triturato",
+ "trivella",
+ "tromba",
+ "trono",
+ "troppo",
+ "trottola",
+ "trovare",
+ "truccato",
+ "tubatura",
+ "tuffato",
+ "tulipano",
+ "tumulto",
+ "tunisia",
+ "turbare",
+ "turchino",
+ "tuta",
+ "tutela",
+ "ubicato",
+ "uccello",
+ "uccisore",
+ "udire",
+ "uditivo",
+ "uffa",
+ "ufficio",
+ "uguale",
+ "ulisse",
+ "ultimato",
+ "umano",
+ "umile",
+ "umorismo",
+ "uncinetto",
+ "ungere",
+ "ungherese",
+ "unicorno",
+ "unificato",
+ "unisono",
+ "unitario",
+ "unte",
+ "uovo",
+ "upupa",
+ "uragano",
+ "urgenza",
+ "urlo",
+ "usanza",
+ "usato",
+ "uscito",
+ "usignolo",
+ "usuraio",
+ "utensile",
+ "utilizzo",
+ "utopia",
+ "vacante",
+ "vaccinato",
+ "vagabondo",
+ "vagliato",
+ "valanga",
+ "valgo",
+ "valico",
+ "valletta",
+ "valoroso",
+ "valutare",
+ "valvola",
+ "vampata",
+ "vangare",
+ "vanitoso",
+ "vano",
+ "vantaggio",
+ "vanvera",
+ "vapore",
+ "varano",
+ "varcato",
+ "variante",
+ "vasca",
+ "vedetta",
+ "vedova",
+ "veduto",
+ "vegetale",
+ "veicolo",
+ "velcro",
+ "velina",
+ "velluto",
+ "veloce",
+ "venato",
+ "vendemmia",
+ "vento",
+ "verace",
+ "verbale",
+ "vergogna",
+ "verifica",
+ "vero",
+ "verruca",
+ "verticale",
+ "vescica",
+ "vessillo",
+ "vestale",
+ "veterano",
+ "vetrina",
+ "vetusto",
+ "viandante",
+ "vibrante",
+ "vicenda",
+ "vichingo",
+ "vicinanza",
+ "vidimare",
+ "vigilia",
+ "vigneto",
+ "vigore",
+ "vile",
+ "villano",
+ "vimini",
+ "vincitore",
+ "viola",
+ "vipera",
+ "virgola",
+ "virologo",
+ "virulento",
+ "viscoso",
+ "visione",
+ "vispo",
+ "vissuto",
+ "visura",
+ "vita",
+ "vitello",
+ "vittima",
+ "vivanda",
+ "vivido",
+ "viziare",
+ "voce",
+ "voga",
+ "volatile",
+ "volere",
+ "volpe",
+ "voragine",
+ "vulcano",
+ "zampogna",
+ "zanna",
+ "zappato",
+ "zattera",
+ "zavorra",
+ "zefiro",
+ "zelante",
+ "zelo",
+ "zenzero",
+ "zerbino",
+ "zibetto",
+ "zinco",
+ "zircone",
+ "zitto",
+ "zolla",
+ "zotico",
+ "zucchero",
+ "zufolo",
+ "zulu",
+ "zuppa"
+ )
+}
diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt
new file mode 100644
index 000000000..fe5b01535
--- /dev/null
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeJapanese.kt
@@ -0,0 +1,2060 @@
+package io.iohk.atala.prism.apollo.utils.bip39.wordlists
+
+import kotlin.js.ExperimentalJsExport
+import kotlin.js.JsExport
+
+@OptIn(ExperimentalJsExport::class)
+@JsExport
+internal object MnemonicCodeJapanese {
+ val wordList: List =
+ listOf(
+ "あいこくしん",
+ "あいさつ",
+ "あいだ",
+ "あおぞら",
+ "あかちゃん",
+ "あきる",
+ "あけがた",
+ "あける",
+ "あこがれる",
+ "あさい",
+ "あさひ",
+ "あしあと",
+ "あじわう",
+ "あずかる",
+ "あずき",
+ "あそぶ",
+ "あたえる",
+ "あたためる",
+ "あたりまえ",
+ "あたる",
+ "あつい",
+ "あつかう",
+ "あっしゅく",
+ "あつまり",
+ "あつめる",
+ "あてな",
+ "あてはまる",
+ "あひる",
+ "あぶら",
+ "あぶる",
+ "あふれる",
+ "あまい",
+ "あまど",
+ "あまやかす",
+ "あまり",
+ "あみもの",
+ "あめりか",
+ "あやまる",
+ "あゆむ",
+ "あらいぐま",
+ "あらし",
+ "あらすじ",
+ "あらためる",
+ "あらゆる",
+ "あらわす",
+ "ありがとう",
+ "あわせる",
+ "あわてる",
+ "あんい",
+ "あんがい",
+ "あんこ",
+ "あんぜん",
+ "あんてい",
+ "あんない",
+ "あんまり",
+ "いいだす",
+ "いおん",
+ "いがい",
+ "いがく",
+ "いきおい",
+ "いきなり",
+ "いきもの",
+ "いきる",
+ "いくじ",
+ "いくぶん",
+ "いけばな",
+ "いけん",
+ "いこう",
+ "いこく",
+ "いこつ",
+ "いさましい",
+ "いさん",
+ "いしき",
+ "いじゅう",
+ "いじょう",
+ "いじわる",
+ "いずみ",
+ "いずれ",
+ "いせい",
+ "いせえび",
+ "いせかい",
+ "いせき",
+ "いぜん",
+ "いそうろう",
+ "いそがしい",
+ "いだい",
+ "いだく",
+ "いたずら",
+ "いたみ",
+ "いたりあ",
+ "いちおう",
+ "いちじ",
+ "いちど",
+ "いちば",
+ "いちぶ",
+ "いちりゅう",
+ "いつか",
+ "いっしゅん",
+ "いっせい",
+ "いっそう",
+ "いったん",
+ "いっち",
+ "いってい",
+ "いっぽう",
+ "いてざ",
+ "いてん",
+ "いどう",
+ "いとこ",
+ "いない",
+ "いなか",
+ "いねむり",
+ "いのち",
+ "いのる",
+ "いはつ",
+ "いばる",
+ "いはん",
+ "いびき",
+ "いひん",
+ "いふく",
+ "いへん",
+ "いほう",
+ "いみん",
+ "いもうと",
+ "いもたれ",
+ "いもり",
+ "いやがる",
+ "いやす",
+ "いよかん",
+ "いよく",
+ "いらい",
+ "いらすと",
+ "いりぐち",
+ "いりょう",
+ "いれい",
+ "いれもの",
+ "いれる",
+ "いろえんぴつ",
+ "いわい",
+ "いわう",
+ "いわかん",
+ "いわば",
+ "いわゆる",
+ "いんげんまめ",
+ "いんさつ",
+ "いんしょう",
+ "いんよう",
+ "うえき",
+ "うえる",
+ "うおざ",
+ "うがい",
+ "うかぶ",
+ "うかべる",
+ "うきわ",
+ "うくらいな",
+ "うくれれ",
+ "うけたまわる",
+ "うけつけ",
+ "うけとる",
+ "うけもつ",
+ "うける",
+ "うごかす",
+ "うごく",
+ "うこん",
+ "うさぎ",
+ "うしなう",
+ "うしろがみ",
+ "うすい",
+ "うすぎ",
+ "うすぐらい",
+ "うすめる",
+ "うせつ",
+ "うちあわせ",
+ "うちがわ",
+ "うちき",
+ "うちゅう",
+ "うっかり",
+ "うつくしい",
+ "うったえる",
+ "うつる",
+ "うどん",
+ "うなぎ",
+ "うなじ",
+ "うなずく",
+ "うなる",
+ "うねる",
+ "うのう",
+ "うぶげ",
+ "うぶごえ",
+ "うまれる",
+ "うめる",
+ "うもう",
+ "うやまう",
+ "うよく",
+ "うらがえす",
+ "うらぐち",
+ "うらない",
+ "うりあげ",
+ "うりきれ",
+ "うるさい",
+ "うれしい",
+ "うれゆき",
+ "うれる",
+ "うろこ",
+ "うわき",
+ "うわさ",
+ "うんこう",
+ "うんちん",
+ "うんてん",
+ "うんどう",
+ "えいえん",
+ "えいが",
+ "えいきょう",
+ "えいご",
+ "えいせい",
+ "えいぶん",
+ "えいよう",
+ "えいわ",
+ "えおり",
+ "えがお",
+ "えがく",
+ "えきたい",
+ "えくせる",
+ "えしゃく",
+ "えすて",
+ "えつらん",
+ "えのぐ",
+ "えほうまき",
+ "えほん",
+ "えまき",
+ "えもじ",
+ "えもの",
+ "えらい",
+ "えらぶ",
+ "えりあ",
+ "えんえん",
+ "えんかい",
+ "えんぎ",
+ "えんげき",
+ "えんしゅう",
+ "えんぜつ",
+ "えんそく",
+ "えんちょう",
+ "えんとつ",
+ "おいかける",
+ "おいこす",
+ "おいしい",
+ "おいつく",
+ "おうえん",
+ "おうさま",
+ "おうじ",
+ "おうせつ",
+ "おうたい",
+ "おうふく",
+ "おうべい",
+ "おうよう",
+ "おえる",
+ "おおい",
+ "おおう",
+ "おおどおり",
+ "おおや",
+ "おおよそ",
+ "おかえり",
+ "おかず",
+ "おがむ",
+ "おかわり",
+ "おぎなう",
+ "おきる",
+ "おくさま",
+ "おくじょう",
+ "おくりがな",
+ "おくる",
+ "おくれる",
+ "おこす",
+ "おこなう",
+ "おこる",
+ "おさえる",
+ "おさない",
+ "おさめる",
+ "おしいれ",
+ "おしえる",
+ "おじぎ",
+ "おじさん",
+ "おしゃれ",
+ "おそらく",
+ "おそわる",
+ "おたがい",
+ "おたく",
+ "おだやか",
+ "おちつく",
+ "おっと",
+ "おつり",
+ "おでかけ",
+ "おとしもの",
+ "おとなしい",
+ "おどり",
+ "おどろかす",
+ "おばさん",
+ "おまいり",
+ "おめでとう",
+ "おもいで",
+ "おもう",
+ "おもたい",
+ "おもちゃ",
+ "おやつ",
+ "おやゆび",
+ "およぼす",
+ "おらんだ",
+ "おろす",
+ "おんがく",
+ "おんけい",
+ "おんしゃ",
+ "おんせん",
+ "おんだん",
+ "おんちゅう",
+ "おんどけい",
+ "かあつ",
+ "かいが",
+ "がいき",
+ "がいけん",
+ "がいこう",
+ "かいさつ",
+ "かいしゃ",
+ "かいすいよく",
+ "かいぜん",
+ "かいぞうど",
+ "かいつう",
+ "かいてん",
+ "かいとう",
+ "かいふく",
+ "がいへき",
+ "かいほう",
+ "かいよう",
+ "がいらい",
+ "かいわ",
+ "かえる",
+ "かおり",
+ "かかえる",
+ "かがく",
+ "かがし",
+ "かがみ",
+ "かくご",
+ "かくとく",
+ "かざる",
+ "がぞう",
+ "かたい",
+ "かたち",
+ "がちょう",
+ "がっきゅう",
+ "がっこう",
+ "がっさん",
+ "がっしょう",
+ "かなざわし",
+ "かのう",
+ "がはく",
+ "かぶか",
+ "かほう",
+ "かほご",
+ "かまう",
+ "かまぼこ",
+ "かめれおん",
+ "かゆい",
+ "かようび",
+ "からい",
+ "かるい",
+ "かろう",
+ "かわく",
+ "かわら",
+ "がんか",
+ "かんけい",
+ "かんこう",
+ "かんしゃ",
+ "かんそう",
+ "かんたん",
+ "かんち",
+ "がんばる",
+ "きあい",
+ "きあつ",
+ "きいろ",
+ "ぎいん",
+ "きうい",
+ "きうん",
+ "きえる",
+ "きおう",
+ "きおく",
+ "きおち",
+ "きおん",
+ "きかい",
+ "きかく",
+ "きかんしゃ",
+ "ききて",
+ "きくばり",
+ "きくらげ",
+ "きけんせい",
+ "きこう",
+ "きこえる",
+ "きこく",
+ "きさい",
+ "きさく",
+ "きさま",
+ "きさらぎ",
+ "ぎじかがく",
+ "ぎしき",
+ "ぎじたいけん",
+ "ぎじにってい",
+ "ぎじゅつしゃ",
+ "きすう",
+ "きせい",
+ "きせき",
+ "きせつ",
+ "きそう",
+ "きぞく",
+ "きぞん",
+ "きたえる",
+ "きちょう",
+ "きつえん",
+ "ぎっちり",
+ "きつつき",
+ "きつね",
+ "きてい",
+ "きどう",
+ "きどく",
+ "きない",
+ "きなが",
+ "きなこ",
+ "きぬごし",
+ "きねん",
+ "きのう",
+ "きのした",
+ "きはく",
+ "きびしい",
+ "きひん",
+ "きふく",
+ "きぶん",
+ "きぼう",
+ "きほん",
+ "きまる",
+ "きみつ",
+ "きむずかしい",
+ "きめる",
+ "きもだめし",
+ "きもち",
+ "きもの",
+ "きゃく",
+ "きやく",
+ "ぎゅうにく",
+ "きよう",
+ "きょうりゅう",
+ "きらい",
+ "きらく",
+ "きりん",
+ "きれい",
+ "きれつ",
+ "きろく",
+ "ぎろん",
+ "きわめる",
+ "ぎんいろ",
+ "きんかくじ",
+ "きんじょ",
+ "きんようび",
+ "ぐあい",
+ "くいず",
+ "くうかん",
+ "くうき",
+ "くうぐん",
+ "くうこう",
+ "ぐうせい",
+ "くうそう",
+ "ぐうたら",
+ "くうふく",
+ "くうぼ",
+ "くかん",
+ "くきょう",
+ "くげん",
+ "ぐこう",
+ "くさい",
+ "くさき",
+ "くさばな",
+ "くさる",
+ "くしゃみ",
+ "くしょう",
+ "くすのき",
+ "くすりゆび",
+ "くせげ",
+ "くせん",
+ "ぐたいてき",
+ "くださる",
+ "くたびれる",
+ "くちこみ",
+ "くちさき",
+ "くつした",
+ "ぐっすり",
+ "くつろぐ",
+ "くとうてん",
+ "くどく",
+ "くなん",
+ "くねくね",
+ "くのう",
+ "くふう",
+ "くみあわせ",
+ "くみたてる",
+ "くめる",
+ "くやくしょ",
+ "くらす",
+ "くらべる",
+ "くるま",
+ "くれる",
+ "くろう",
+ "くわしい",
+ "ぐんかん",
+ "ぐんしょく",
+ "ぐんたい",
+ "ぐんて",
+ "けあな",
+ "けいかく",
+ "けいけん",
+ "けいこ",
+ "けいさつ",
+ "げいじゅつ",
+ "けいたい",
+ "げいのうじん",
+ "けいれき",
+ "けいろ",
+ "けおとす",
+ "けおりもの",
+ "げきか",
+ "げきげん",
+ "げきだん",
+ "げきちん",
+ "げきとつ",
+ "げきは",
+ "げきやく",
+ "げこう",
+ "げこくじょう",
+ "げざい",
+ "けさき",
+ "げざん",
+ "けしき",
+ "けしごむ",
+ "けしょう",
+ "げすと",
+ "けたば",
+ "けちゃっぷ",
+ "けちらす",
+ "けつあつ",
+ "けつい",
+ "けつえき",
+ "けっこん",
+ "けつじょ",
+ "けっせき",
+ "けってい",
+ "けつまつ",
+ "げつようび",
+ "げつれい",
+ "けつろん",
+ "げどく",
+ "けとばす",
+ "けとる",
+ "けなげ",
+ "けなす",
+ "けなみ",
+ "けぬき",
+ "げねつ",
+ "けねん",
+ "けはい",
+ "げひん",
+ "けぶかい",
+ "げぼく",
+ "けまり",
+ "けみかる",
+ "けむし",
+ "けむり",
+ "けもの",
+ "けらい",
+ "けろけろ",
+ "けわしい",
+ "けんい",
+ "けんえつ",
+ "けんお",
+ "けんか",
+ "げんき",
+ "けんげん",
+ "けんこう",
+ "けんさく",
+ "けんしゅう",
+ "けんすう",
+ "げんそう",
+ "けんちく",
+ "けんてい",
+ "けんとう",
+ "けんない",
+ "けんにん",
+ "げんぶつ",
+ "けんま",
+ "けんみん",
+ "けんめい",
+ "けんらん",
+ "けんり",
+ "こあくま",
+ "こいぬ",
+ "こいびと",
+ "ごうい",
+ "こうえん",
+ "こうおん",
+ "こうかん",
+ "ごうきゅう",
+ "ごうけい",
+ "こうこう",
+ "こうさい",
+ "こうじ",
+ "こうすい",
+ "ごうせい",
+ "こうそく",
+ "こうたい",
+ "こうちゃ",
+ "こうつう",
+ "こうてい",
+ "こうどう",
+ "こうない",
+ "こうはい",
+ "ごうほう",
+ "ごうまん",
+ "こうもく",
+ "こうりつ",
+ "こえる",
+ "こおり",
+ "ごかい",
+ "ごがつ",
+ "ごかん",
+ "こくご",
+ "こくさい",
+ "こくとう",
+ "こくない",
+ "こくはく",
+ "こぐま",
+ "こけい",
+ "こける",
+ "ここのか",
+ "こころ",
+ "こさめ",
+ "こしつ",
+ "こすう",
+ "こせい",
+ "こせき",
+ "こぜん",
+ "こそだて",
+ "こたい",
+ "こたえる",
+ "こたつ",
+ "こちょう",
+ "こっか",
+ "こつこつ",
+ "こつばん",
+ "こつぶ",
+ "こてい",
+ "こてん",
+ "ことがら",
+ "ことし",
+ "ことば",
+ "ことり",
+ "こなごな",
+ "こねこね",
+ "このまま",
+ "このみ",
+ "このよ",
+ "ごはん",
+ "こひつじ",
+ "こふう",
+ "こふん",
+ "こぼれる",
+ "ごまあぶら",
+ "こまかい",
+ "ごますり",
+ "こまつな",
+ "こまる",
+ "こむぎこ",
+ "こもじ",
+ "こもち",
+ "こもの",
+ "こもん",
+ "こやく",
+ "こやま",
+ "こゆう",
+ "こゆび",
+ "こよい",
+ "こよう",
+ "こりる",
+ "これくしょん",
+ "ころっけ",
+ "こわもて",
+ "こわれる",
+ "こんいん",
+ "こんかい",
+ "こんき",
+ "こんしゅう",
+ "こんすい",
+ "こんだて",
+ "こんとん",
+ "こんなん",
+ "こんびに",
+ "こんぽん",
+ "こんまけ",
+ "こんや",
+ "こんれい",
+ "こんわく",
+ "ざいえき",
+ "さいかい",
+ "さいきん",
+ "ざいげん",
+ "ざいこ",
+ "さいしょ",
+ "さいせい",
+ "ざいたく",
+ "ざいちゅう",
+ "さいてき",
+ "ざいりょう",
+ "さうな",
+ "さかいし",
+ "さがす",
+ "さかな",
+ "さかみち",
+ "さがる",
+ "さぎょう",
+ "さくし",
+ "さくひん",
+ "さくら",
+ "さこく",
+ "さこつ",
+ "さずかる",
+ "ざせき",
+ "さたん",
+ "さつえい",
+ "ざつおん",
+ "ざっか",
+ "ざつがく",
+ "さっきょく",
+ "ざっし",
+ "さつじん",
+ "ざっそう",
+ "さつたば",
+ "さつまいも",
+ "さてい",
+ "さといも",
+ "さとう",
+ "さとおや",
+ "さとし",
+ "さとる",
+ "さのう",
+ "さばく",
+ "さびしい",
+ "さべつ",
+ "さほう",
+ "さほど",
+ "さます",
+ "さみしい",
+ "さみだれ",
+ "さむけ",
+ "さめる",
+ "さやえんどう",
+ "さゆう",
+ "さよう",
+ "さよく",
+ "さらだ",
+ "ざるそば",
+ "さわやか",
+ "さわる",
+ "さんいん",
+ "さんか",
+ "さんきゃく",
+ "さんこう",
+ "さんさい",
+ "ざんしょ",
+ "さんすう",
+ "さんせい",
+ "さんそ",
+ "さんち",
+ "さんま",
+ "さんみ",
+ "さんらん",
+ "しあい",
+ "しあげ",
+ "しあさって",
+ "しあわせ",
+ "しいく",
+ "しいん",
+ "しうち",
+ "しえい",
+ "しおけ",
+ "しかい",
+ "しかく",
+ "じかん",
+ "しごと",
+ "しすう",
+ "じだい",
+ "したうけ",
+ "したぎ",
+ "したて",
+ "したみ",
+ "しちょう",
+ "しちりん",
+ "しっかり",
+ "しつじ",
+ "しつもん",
+ "してい",
+ "してき",
+ "してつ",
+ "じてん",
+ "じどう",
+ "しなぎれ",
+ "しなもの",
+ "しなん",
+ "しねま",
+ "しねん",
+ "しのぐ",
+ "しのぶ",
+ "しはい",
+ "しばかり",
+ "しはつ",
+ "しはらい",
+ "しはん",
+ "しひょう",
+ "しふく",
+ "じぶん",
+ "しへい",
+ "しほう",
+ "しほん",
+ "しまう",
+ "しまる",
+ "しみん",
+ "しむける",
+ "じむしょ",
+ "しめい",
+ "しめる",
+ "しもん",
+ "しゃいん",
+ "しゃうん",
+ "しゃおん",
+ "じゃがいも",
+ "しやくしょ",
+ "しゃくほう",
+ "しゃけん",
+ "しゃこ",
+ "しゃざい",
+ "しゃしん",
+ "しゃせん",
+ "しゃそう",
+ "しゃたい",
+ "しゃちょう",
+ "しゃっきん",
+ "じゃま",
+ "しゃりん",
+ "しゃれい",
+ "じゆう",
+ "じゅうしょ",
+ "しゅくはく",
+ "じゅしん",
+ "しゅっせき",
+ "しゅみ",
+ "しゅらば",
+ "じゅんばん",
+ "しょうかい",
+ "しょくたく",
+ "しょっけん",
+ "しょどう",
+ "しょもつ",
+ "しらせる",
+ "しらべる",
+ "しんか",
+ "しんこう",
+ "じんじゃ",
+ "しんせいじ",
+ "しんちく",
+ "しんりん",
+ "すあげ",
+ "すあし",
+ "すあな",
+ "ずあん",
+ "すいえい",
+ "すいか",
+ "すいとう",
+ "ずいぶん",
+ "すいようび",
+ "すうがく",
+ "すうじつ",
+ "すうせん",
+ "すおどり",
+ "すきま",
+ "すくう",
+ "すくない",
+ "すける",
+ "すごい",
+ "すこし",
+ "ずさん",
+ "すずしい",
+ "すすむ",
+ "すすめる",
+ "すっかり",
+ "ずっしり",
+ "ずっと",
+ "すてき",
+ "すてる",
+ "すねる",
+ "すのこ",
+ "すはだ",
+ "すばらしい",
+ "ずひょう",
+ "ずぶぬれ",
+ "すぶり",
+ "すふれ",
+ "すべて",
+ "すべる",
+ "ずほう",
+ "すぼん",
+ "すまい",
+ "すめし",
+ "すもう",
+ "すやき",
+ "すらすら",
+ "するめ",
+ "すれちがう",
+ "すろっと",
+ "すわる",
+ "すんぜん",
+ "すんぽう",
+ "せあぶら",
+ "せいかつ",
+ "せいげん",
+ "せいじ",
+ "せいよう",
+ "せおう",
+ "せかいかん",
+ "せきにん",
+ "せきむ",
+ "せきゆ",
+ "せきらんうん",
+ "せけん",
+ "せこう",
+ "せすじ",
+ "せたい",
+ "せたけ",
+ "せっかく",
+ "せっきゃく",
+ "ぜっく",
+ "せっけん",
+ "せっこつ",
+ "せっさたくま",
+ "せつぞく",
+ "せつだん",
+ "せつでん",
+ "せっぱん",
+ "せつび",
+ "せつぶん",
+ "せつめい",
+ "せつりつ",
+ "せなか",
+ "せのび",
+ "せはば",
+ "せびろ",
+ "せぼね",
+ "せまい",
+ "せまる",
+ "せめる",
+ "せもたれ",
+ "せりふ",
+ "ぜんあく",
+ "せんい",
+ "せんえい",
+ "せんか",
+ "せんきょ",
+ "せんく",
+ "せんげん",
+ "ぜんご",
+ "せんさい",
+ "せんしゅ",
+ "せんすい",
+ "せんせい",
+ "せんぞ",
+ "せんたく",
+ "せんちょう",
+ "せんてい",
+ "せんとう",
+ "せんぬき",
+ "せんねん",
+ "せんぱい",
+ "ぜんぶ",
+ "ぜんぽう",
+ "せんむ",
+ "せんめんじょ",
+ "せんもん",
+ "せんやく",
+ "せんゆう",
+ "せんよう",
+ "ぜんら",
+ "ぜんりゃく",
+ "せんれい",
+ "せんろ",
+ "そあく",
+ "そいとげる",
+ "そいね",
+ "そうがんきょう",
+ "そうき",
+ "そうご",
+ "そうしん",
+ "そうだん",
+ "そうなん",
+ "そうび",
+ "そうめん",
+ "そうり",
+ "そえもの",
+ "そえん",
+ "そがい",
+ "そげき",
+ "そこう",
+ "そこそこ",
+ "そざい",
+ "そしな",
+ "そせい",
+ "そせん",
+ "そそぐ",
+ "そだてる",
+ "そつう",
+ "そつえん",
+ "そっかん",
+ "そつぎょう",
+ "そっけつ",
+ "そっこう",
+ "そっせん",
+ "そっと",
+ "そとがわ",
+ "そとづら",
+ "そなえる",
+ "そなた",
+ "そふぼ",
+ "そぼく",
+ "そぼろ",
+ "そまつ",
+ "そまる",
+ "そむく",
+ "そむりえ",
+ "そめる",
+ "そもそも",
+ "そよかぜ",
+ "そらまめ",
+ "そろう",
+ "そんかい",
+ "そんけい",
+ "そんざい",
+ "そんしつ",
+ "そんぞく",
+ "そんちょう",
+ "ぞんび",
+ "ぞんぶん",
+ "そんみん",
+ "たあい",
+ "たいいん",
+ "たいうん",
+ "たいえき",
+ "たいおう",
+ "だいがく",
+ "たいき",
+ "たいぐう",
+ "たいけん",
+ "たいこ",
+ "たいざい",
+ "だいじょうぶ",
+ "だいすき",
+ "たいせつ",
+ "たいそう",
+ "だいたい",
+ "たいちょう",
+ "たいてい",
+ "だいどころ",
+ "たいない",
+ "たいねつ",
+ "たいのう",
+ "たいはん",
+ "だいひょう",
+ "たいふう",
+ "たいへん",
+ "たいほ",
+ "たいまつばな",
+ "たいみんぐ",
+ "たいむ",
+ "たいめん",
+ "たいやき",
+ "たいよう",
+ "たいら",
+ "たいりょく",
+ "たいる",
+ "たいわん",
+ "たうえ",
+ "たえる",
+ "たおす",
+ "たおる",
+ "たおれる",
+ "たかい",
+ "たかね",
+ "たきび",
+ "たくさん",
+ "たこく",
+ "たこやき",
+ "たさい",
+ "たしざん",
+ "だじゃれ",
+ "たすける",
+ "たずさわる",
+ "たそがれ",
+ "たたかう",
+ "たたく",
+ "ただしい",
+ "たたみ",
+ "たちばな",
+ "だっかい",
+ "だっきゃく",
+ "だっこ",
+ "だっしゅつ",
+ "だったい",
+ "たてる",
+ "たとえる",
+ "たなばた",
+ "たにん",
+ "たぬき",
+ "たのしみ",
+ "たはつ",
+ "たぶん",
+ "たべる",
+ "たぼう",
+ "たまご",
+ "たまる",
+ "だむる",
+ "ためいき",
+ "ためす",
+ "ためる",
+ "たもつ",
+ "たやすい",
+ "たよる",
+ "たらす",
+ "たりきほんがん",
+ "たりょう",
+ "たりる",
+ "たると",
+ "たれる",
+ "たれんと",
+ "たろっと",
+ "たわむれる",
+ "だんあつ",
+ "たんい",
+ "たんおん",
+ "たんか",
+ "たんき",
+ "たんけん",
+ "たんご",
+ "たんさん",
+ "たんじょうび",
+ "だんせい",
+ "たんそく",
+ "たんたい",
+ "だんち",
+ "たんてい",
+ "たんとう",
+ "だんな",
+ "たんにん",
+ "だんねつ",
+ "たんのう",
+ "たんぴん",
+ "だんぼう",
+ "たんまつ",
+ "たんめい",
+ "だんれつ",
+ "だんろ",
+ "だんわ",
+ "ちあい",
+ "ちあん",
+ "ちいき",
+ "ちいさい",
+ "ちえん",
+ "ちかい",
+ "ちから",
+ "ちきゅう",
+ "ちきん",
+ "ちけいず",
+ "ちけん",
+ "ちこく",
+ "ちさい",
+ "ちしき",
+ "ちしりょう",
+ "ちせい",
+ "ちそう",
+ "ちたい",
+ "ちたん",
+ "ちちおや",
+ "ちつじょ",
+ "ちてき",
+ "ちてん",
+ "ちぬき",
+ "ちぬり",
+ "ちのう",
+ "ちひょう",
+ "ちへいせん",
+ "ちほう",
+ "ちまた",
+ "ちみつ",
+ "ちみどろ",
+ "ちめいど",
+ "ちゃんこなべ",
+ "ちゅうい",
+ "ちゆりょく",
+ "ちょうし",
+ "ちょさくけん",
+ "ちらし",
+ "ちらみ",
+ "ちりがみ",
+ "ちりょう",
+ "ちるど",
+ "ちわわ",
+ "ちんたい",
+ "ちんもく",
+ "ついか",
+ "ついたち",
+ "つうか",
+ "つうじょう",
+ "つうはん",
+ "つうわ",
+ "つかう",
+ "つかれる",
+ "つくね",
+ "つくる",
+ "つけね",
+ "つける",
+ "つごう",
+ "つたえる",
+ "つづく",
+ "つつじ",
+ "つつむ",
+ "つとめる",
+ "つながる",
+ "つなみ",
+ "つねづね",
+ "つのる",
+ "つぶす",
+ "つまらない",
+ "つまる",
+ "つみき",
+ "つめたい",
+ "つもり",
+ "つもる",
+ "つよい",
+ "つるぼ",
+ "つるみく",
+ "つわもの",
+ "つわり",
+ "てあし",
+ "てあて",
+ "てあみ",
+ "ていおん",
+ "ていか",
+ "ていき",
+ "ていけい",
+ "ていこく",
+ "ていさつ",
+ "ていし",
+ "ていせい",
+ "ていたい",
+ "ていど",
+ "ていねい",
+ "ていひょう",
+ "ていへん",
+ "ていぼう",
+ "てうち",
+ "ておくれ",
+ "てきとう",
+ "てくび",
+ "でこぼこ",
+ "てさぎょう",
+ "てさげ",
+ "てすり",
+ "てそう",
+ "てちがい",
+ "てちょう",
+ "てつがく",
+ "てつづき",
+ "でっぱ",
+ "てつぼう",
+ "てつや",
+ "でぬかえ",
+ "てぬき",
+ "てぬぐい",
+ "てのひら",
+ "てはい",
+ "てぶくろ",
+ "てふだ",
+ "てほどき",
+ "てほん",
+ "てまえ",
+ "てまきずし",
+ "てみじか",
+ "てみやげ",
+ "てらす",
+ "てれび",
+ "てわけ",
+ "てわたし",
+ "でんあつ",
+ "てんいん",
+ "てんかい",
+ "てんき",
+ "てんぐ",
+ "てんけん",
+ "てんごく",
+ "てんさい",
+ "てんし",
+ "てんすう",
+ "でんち",
+ "てんてき",
+ "てんとう",
+ "てんない",
+ "てんぷら",
+ "てんぼうだい",
+ "てんめつ",
+ "てんらんかい",
+ "でんりょく",
+ "でんわ",
+ "どあい",
+ "といれ",
+ "どうかん",
+ "とうきゅう",
+ "どうぐ",
+ "とうし",
+ "とうむぎ",
+ "とおい",
+ "とおか",
+ "とおく",
+ "とおす",
+ "とおる",
+ "とかい",
+ "とかす",
+ "ときおり",
+ "ときどき",
+ "とくい",
+ "とくしゅう",
+ "とくてん",
+ "とくに",
+ "とくべつ",
+ "とけい",
+ "とける",
+ "とこや",
+ "とさか",
+ "としょかん",
+ "とそう",
+ "とたん",
+ "とちゅう",
+ "とっきゅう",
+ "とっくん",
+ "とつぜん",
+ "とつにゅう",
+ "とどける",
+ "ととのえる",
+ "とない",
+ "となえる",
+ "となり",
+ "とのさま",
+ "とばす",
+ "どぶがわ",
+ "とほう",
+ "とまる",
+ "とめる",
+ "ともだち",
+ "ともる",
+ "どようび",
+ "とらえる",
+ "とんかつ",
+ "どんぶり",
+ "ないかく",
+ "ないこう",
+ "ないしょ",
+ "ないす",
+ "ないせん",
+ "ないそう",
+ "なおす",
+ "ながい",
+ "なくす",
+ "なげる",
+ "なこうど",
+ "なさけ",
+ "なたでここ",
+ "なっとう",
+ "なつやすみ",
+ "ななおし",
+ "なにごと",
+ "なにもの",
+ "なにわ",
+ "なのか",
+ "なふだ",
+ "なまいき",
+ "なまえ",
+ "なまみ",
+ "なみだ",
+ "なめらか",
+ "なめる",
+ "なやむ",
+ "ならう",
+ "ならび",
+ "ならぶ",
+ "なれる",
+ "なわとび",
+ "なわばり",
+ "にあう",
+ "にいがた",
+ "にうけ",
+ "におい",
+ "にかい",
+ "にがて",
+ "にきび",
+ "にくしみ",
+ "にくまん",
+ "にげる",
+ "にさんかたんそ",
+ "にしき",
+ "にせもの",
+ "にちじょう",
+ "にちようび",
+ "にっか",
+ "にっき",
+ "にっけい",
+ "にっこう",
+ "にっさん",
+ "にっしょく",
+ "にっすう",
+ "にっせき",
+ "にってい",
+ "になう",
+ "にほん",
+ "にまめ",
+ "にもつ",
+ "にやり",
+ "にゅういん",
+ "にりんしゃ",
+ "にわとり",
+ "にんい",
+ "にんか",
+ "にんき",
+ "にんげん",
+ "にんしき",
+ "にんずう",
+ "にんそう",
+ "にんたい",
+ "にんち",
+ "にんてい",
+ "にんにく",
+ "にんぷ",
+ "にんまり",
+ "にんむ",
+ "にんめい",
+ "にんよう",
+ "ぬいくぎ",
+ "ぬかす",
+ "ぬぐいとる",
+ "ぬぐう",
+ "ぬくもり",
+ "ぬすむ",
+ "ぬまえび",
+ "ぬめり",
+ "ぬらす",
+ "ぬんちゃく",
+ "ねあげ",
+ "ねいき",
+ "ねいる",
+ "ねいろ",
+ "ねぐせ",
+ "ねくたい",
+ "ねくら",
+ "ねこぜ",
+ "ねこむ",
+ "ねさげ",
+ "ねすごす",
+ "ねそべる",
+ "ねだん",
+ "ねつい",
+ "ねっしん",
+ "ねつぞう",
+ "ねったいぎょ",
+ "ねぶそく",
+ "ねふだ",
+ "ねぼう",
+ "ねほりはほり",
+ "ねまき",
+ "ねまわし",
+ "ねみみ",
+ "ねむい",
+ "ねむたい",
+ "ねもと",
+ "ねらう",
+ "ねわざ",
+ "ねんいり",
+ "ねんおし",
+ "ねんかん",
+ "ねんきん",
+ "ねんぐ",
+ "ねんざ",
+ "ねんし",
+ "ねんちゃく",
+ "ねんど",
+ "ねんぴ",
+ "ねんぶつ",
+ "ねんまつ",
+ "ねんりょう",
+ "ねんれい",
+ "のいず",
+ "のおづま",
+ "のがす",
+ "のきなみ",
+ "のこぎり",
+ "のこす",
+ "のこる",
+ "のせる",
+ "のぞく",
+ "のぞむ",
+ "のたまう",
+ "のちほど",
+ "のっく",
+ "のばす",
+ "のはら",
+ "のべる",
+ "のぼる",
+ "のみもの",
+ "のやま",
+ "のらいぬ",
+ "のらねこ",
+ "のりもの",
+ "のりゆき",
+ "のれん",
+ "のんき",
+ "ばあい",
+ "はあく",
+ "ばあさん",
+ "ばいか",
+ "ばいく",
+ "はいけん",
+ "はいご",
+ "はいしん",
+ "はいすい",
+ "はいせん",
+ "はいそう",
+ "はいち",
+ "ばいばい",
+ "はいれつ",
+ "はえる",
+ "はおる",
+ "はかい",
+ "ばかり",
+ "はかる",
+ "はくしゅ",
+ "はけん",
+ "はこぶ",
+ "はさみ",
+ "はさん",
+ "はしご",
+ "ばしょ",
+ "はしる",
+ "はせる",
+ "ぱそこん",
+ "はそん",
+ "はたん",
+ "はちみつ",
+ "はつおん",
+ "はっかく",
+ "はづき",
+ "はっきり",
+ "はっくつ",
+ "はっけん",
+ "はっこう",
+ "はっさん",
+ "はっしん",
+ "はったつ",
+ "はっちゅう",
+ "はってん",
+ "はっぴょう",
+ "はっぽう",
+ "はなす",
+ "はなび",
+ "はにかむ",
+ "はぶらし",
+ "はみがき",
+ "はむかう",
+ "はめつ",
+ "はやい",
+ "はやし",
+ "はらう",
+ "はろうぃん",
+ "はわい",
+ "はんい",
+ "はんえい",
+ "はんおん",
+ "はんかく",
+ "はんきょう",
+ "ばんぐみ",
+ "はんこ",
+ "はんしゃ",
+ "はんすう",
+ "はんだん",
+ "ぱんち",
+ "ぱんつ",
+ "はんてい",
+ "はんとし",
+ "はんのう",
+ "はんぱ",
+ "はんぶん",
+ "はんぺん",
+ "はんぼうき",
+ "はんめい",
+ "はんらん",
+ "はんろん",
+ "ひいき",
+ "ひうん",
+ "ひえる",
+ "ひかく",
+ "ひかり",
+ "ひかる",
+ "ひかん",
+ "ひくい",
+ "ひけつ",
+ "ひこうき",
+ "ひこく",
+ "ひさい",
+ "ひさしぶり",
+ "ひさん",
+ "びじゅつかん",
+ "ひしょ",
+ "ひそか",
+ "ひそむ",
+ "ひたむき",
+ "ひだり",
+ "ひたる",
+ "ひつぎ",
+ "ひっこし",
+ "ひっし",
+ "ひつじゅひん",
+ "ひっす",
+ "ひつぜん",
+ "ぴったり",
+ "ぴっちり",
+ "ひつよう",
+ "ひてい",
+ "ひとごみ",
+ "ひなまつり",
+ "ひなん",
+ "ひねる",
+ "ひはん",
+ "ひびく",
+ "ひひょう",
+ "ひほう",
+ "ひまわり",
+ "ひまん",
+ "ひみつ",
+ "ひめい",
+ "ひめじし",
+ "ひやけ",
+ "ひやす",
+ "ひよう",
+ "びょうき",
+ "ひらがな",
+ "ひらく",
+ "ひりつ",
+ "ひりょう",
+ "ひるま",
+ "ひるやすみ",
+ "ひれい",
+ "ひろい",
+ "ひろう",
+ "ひろき",
+ "ひろゆき",
+ "ひんかく",
+ "ひんけつ",
+ "ひんこん",
+ "ひんしゅ",
+ "ひんそう",
+ "ぴんち",
+ "ひんぱん",
+ "びんぼう",
+ "ふあん",
+ "ふいうち",
+ "ふうけい",
+ "ふうせん",
+ "ぷうたろう",
+ "ふうとう",
+ "ふうふ",
+ "ふえる",
+ "ふおん",
+ "ふかい",
+ "ふきん",
+ "ふくざつ",
+ "ふくぶくろ",
+ "ふこう",
+ "ふさい",
+ "ふしぎ",
+ "ふじみ",
+ "ふすま",
+ "ふせい",
+ "ふせぐ",
+ "ふそく",
+ "ぶたにく",
+ "ふたん",
+ "ふちょう",
+ "ふつう",
+ "ふつか",
+ "ふっかつ",
+ "ふっき",
+ "ふっこく",
+ "ぶどう",
+ "ふとる",
+ "ふとん",
+ "ふのう",
+ "ふはい",
+ "ふひょう",
+ "ふへん",
+ "ふまん",
+ "ふみん",
+ "ふめつ",
+ "ふめん",
+ "ふよう",
+ "ふりこ",
+ "ふりる",
+ "ふるい",
+ "ふんいき",
+ "ぶんがく",
+ "ぶんぐ",
+ "ふんしつ",
+ "ぶんせき",
+ "ふんそう",
+ "ぶんぽう",
+ "へいあん",
+ "へいおん",
+ "へいがい",
+ "へいき",
+ "へいげん",
+ "へいこう",
+ "へいさ",
+ "へいしゃ",
+ "へいせつ",
+ "へいそ",
+ "へいたく",
+ "へいてん",
+ "へいねつ",
+ "へいわ",
+ "へきが",
+ "へこむ",
+ "べにいろ",
+ "べにしょうが",
+ "へらす",
+ "へんかん",
+ "べんきょう",
+ "べんごし",
+ "へんさい",
+ "へんたい",
+ "べんり",
+ "ほあん",
+ "ほいく",
+ "ぼうぎょ",
+ "ほうこく",
+ "ほうそう",
+ "ほうほう",
+ "ほうもん",
+ "ほうりつ",
+ "ほえる",
+ "ほおん",
+ "ほかん",
+ "ほきょう",
+ "ぼきん",
+ "ほくろ",
+ "ほけつ",
+ "ほけん",
+ "ほこう",
+ "ほこる",
+ "ほしい",
+ "ほしつ",
+ "ほしゅ",
+ "ほしょう",
+ "ほせい",
+ "ほそい",
+ "ほそく",
+ "ほたて",
+ "ほたる",
+ "ぽちぶくろ",
+ "ほっきょく",
+ "ほっさ",
+ "ほったん",
+ "ほとんど",
+ "ほめる",
+ "ほんい",
+ "ほんき",
+ "ほんけ",
+ "ほんしつ",
+ "ほんやく",
+ "まいにち",
+ "まかい",
+ "まかせる",
+ "まがる",
+ "まける",
+ "まこと",
+ "まさつ",
+ "まじめ",
+ "ますく",
+ "まぜる",
+ "まつり",
+ "まとめ",
+ "まなぶ",
+ "まぬけ",
+ "まねく",
+ "まほう",
+ "まもる",
+ "まゆげ",
+ "まよう",
+ "まろやか",
+ "まわす",
+ "まわり",
+ "まわる",
+ "まんが",
+ "まんきつ",
+ "まんぞく",
+ "まんなか",
+ "みいら",
+ "みうち",
+ "みえる",
+ "みがく",
+ "みかた",
+ "みかん",
+ "みけん",
+ "みこん",
+ "みじかい",
+ "みすい",
+ "みすえる",
+ "みせる",
+ "みっか",
+ "みつかる",
+ "みつける",
+ "みてい",
+ "みとめる",
+ "みなと",
+ "みなみかさい",
+ "みねらる",
+ "みのう",
+ "みのがす",
+ "みほん",
+ "みもと",
+ "みやげ",
+ "みらい",
+ "みりょく",
+ "みわく",
+ "みんか",
+ "みんぞく",
+ "むいか",
+ "むえき",
+ "むえん",
+ "むかい",
+ "むかう",
+ "むかえ",
+ "むかし",
+ "むぎちゃ",
+ "むける",
+ "むげん",
+ "むさぼる",
+ "むしあつい",
+ "むしば",
+ "むじゅん",
+ "むしろ",
+ "むすう",
+ "むすこ",
+ "むすぶ",
+ "むすめ",
+ "むせる",
+ "むせん",
+ "むちゅう",
+ "むなしい",
+ "むのう",
+ "むやみ",
+ "むよう",
+ "むらさき",
+ "むりょう",
+ "むろん",
+ "めいあん",
+ "めいうん",
+ "めいえん",
+ "めいかく",
+ "めいきょく",
+ "めいさい",
+ "めいし",
+ "めいそう",
+ "めいぶつ",
+ "めいれい",
+ "めいわく",
+ "めぐまれる",
+ "めざす",
+ "めした",
+ "めずらしい",
+ "めだつ",
+ "めまい",
+ "めやす",
+ "めんきょ",
+ "めんせき",
+ "めんどう",
+ "もうしあげる",
+ "もうどうけん",
+ "もえる",
+ "もくし",
+ "もくてき",
+ "もくようび",
+ "もちろん",
+ "もどる",
+ "もらう",
+ "もんく",
+ "もんだい",
+ "やおや",
+ "やける",
+ "やさい",
+ "やさしい",
+ "やすい",
+ "やすたろう",
+ "やすみ",
+ "やせる",
+ "やそう",
+ "やたい",
+ "やちん",
+ "やっと",
+ "やっぱり",
+ "やぶる",
+ "やめる",
+ "ややこしい",
+ "やよい",
+ "やわらかい",
+ "ゆうき",
+ "ゆうびんきょく",
+ "ゆうべ",
+ "ゆうめい",
+ "ゆけつ",
+ "ゆしゅつ",
+ "ゆせん",
+ "ゆそう",
+ "ゆたか",
+ "ゆちゃく",
+ "ゆでる",
+ "ゆにゅう",
+ "ゆびわ",
+ "ゆらい",
+ "ゆれる",
+ "ようい",
+ "ようか",
+ "ようきゅう",
+ "ようじ",
+ "ようす",
+ "ようちえん",
+ "よかぜ",
+ "よかん",
+ "よきん",
+ "よくせい",
+ "よくぼう",
+ "よけい",
+ "よごれる",
+ "よさん",
+ "よしゅう",
+ "よそう",
+ "よそく",
+ "よっか",
+ "よてい",
+ "よどがわく",
+ "よねつ",
+ "よやく",
+ "よゆう",
+ "よろこぶ",
+ "よろしい",
+ "らいう",
+ "らくがき",
+ "らくご",
+ "らくさつ",
+ "らくだ",
+ "らしんばん",
+ "らせん",
+ "らぞく",
+ "らたい",
+ "らっか",
+ "られつ",
+ "りえき",
+ "りかい",
+ "りきさく",
+ "りきせつ",
+ "りくぐん",
+ "りくつ",
+ "りけん",
+ "りこう",
+ "りせい",
+ "りそう",
+ "りそく",
+ "りてん",
+ "りねん",
+ "りゆう",
+ "りゅうがく",
+ "りよう",
+ "りょうり",
+ "りょかん",
+ "りょくちゃ",
+ "りょこう",
+ "りりく",
+ "りれき",
+ "りろん",
+ "りんご",
+ "るいけい",
+ "るいさい",
+ "るいじ",
+ "るいせき",
+ "るすばん",
+ "るりがわら",
+ "れいかん",
+ "れいぎ",
+ "れいせい",
+ "れいぞうこ",
+ "れいとう",
+ "れいぼう",
+ "れきし",
+ "れきだい",
+ "れんあい",
+ "れんけい",
+ "れんこん",
+ "れんさい",
+ "れんしゅう",
+ "れんぞく",
+ "れんらく",
+ "ろうか",
+ "ろうご",
+ "ろうじん",
+ "ろうそく",
+ "ろくが",
+ "ろこつ",
+ "ろじうら",
+ "ろしゅつ",
+ "ろせん",
+ "ろてん",
+ "ろめん",
+ "ろれつ",
+ "ろんぎ",
+ "ろんぱ",
+ "ろんぶん",
+ "ろんり",
+ "わかす",
+ "わかめ",
+ "わかやま",
+ "わかれる",
+ "わしつ",
+ "わじまし",
+ "わすれもの",
+ "わらう",
+ "われる"
+ )
+}
diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt
new file mode 100644
index 000000000..044cc3314
--- /dev/null
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeKorean.kt
@@ -0,0 +1,2060 @@
+package io.iohk.atala.prism.apollo.utils.bip39.wordlists
+
+import kotlin.js.ExperimentalJsExport
+import kotlin.js.JsExport
+
+@OptIn(ExperimentalJsExport::class)
+@JsExport
+internal object MnemonicCodeKorean {
+ val wordList: List =
+ listOf(
+ "가격",
+ "가끔",
+ "가난",
+ "가능",
+ "가득",
+ "가르침",
+ "가뭄",
+ "가방",
+ "가상",
+ "가슴",
+ "가운데",
+ "가을",
+ "가이드",
+ "가입",
+ "가장",
+ "가정",
+ "가족",
+ "가죽",
+ "각오",
+ "각자",
+ "간격",
+ "간부",
+ "간섭",
+ "간장",
+ "간접",
+ "간판",
+ "갈등",
+ "갈비",
+ "갈색",
+ "갈증",
+ "감각",
+ "감기",
+ "감소",
+ "감수성",
+ "감자",
+ "감정",
+ "갑자기",
+ "강남",
+ "강당",
+ "강도",
+ "강력히",
+ "강변",
+ "강북",
+ "강사",
+ "강수량",
+ "강아지",
+ "강원도",
+ "강의",
+ "강제",
+ "강조",
+ "같이",
+ "개구리",
+ "개나리",
+ "개방",
+ "개별",
+ "개선",
+ "개성",
+ "개인",
+ "객관적",
+ "거실",
+ "거액",
+ "거울",
+ "거짓",
+ "거품",
+ "걱정",
+ "건강",
+ "건물",
+ "건설",
+ "건조",
+ "건축",
+ "걸음",
+ "검사",
+ "검토",
+ "게시판",
+ "게임",
+ "겨울",
+ "견해",
+ "결과",
+ "결국",
+ "결론",
+ "결석",
+ "결승",
+ "결심",
+ "결정",
+ "결혼",
+ "경계",
+ "경고",
+ "경기",
+ "경력",
+ "경복궁",
+ "경비",
+ "경상도",
+ "경영",
+ "경우",
+ "경쟁",
+ "경제",
+ "경주",
+ "경찰",
+ "경치",
+ "경향",
+ "경험",
+ "계곡",
+ "계단",
+ "계란",
+ "계산",
+ "계속",
+ "계약",
+ "계절",
+ "계층",
+ "계획",
+ "고객",
+ "고구려",
+ "고궁",
+ "고급",
+ "고등학생",
+ "고무신",
+ "고민",
+ "고양이",
+ "고장",
+ "고전",
+ "고집",
+ "고춧가루",
+ "고통",
+ "고향",
+ "곡식",
+ "골목",
+ "골짜기",
+ "골프",
+ "공간",
+ "공개",
+ "공격",
+ "공군",
+ "공급",
+ "공기",
+ "공동",
+ "공무원",
+ "공부",
+ "공사",
+ "공식",
+ "공업",
+ "공연",
+ "공원",
+ "공장",
+ "공짜",
+ "공책",
+ "공통",
+ "공포",
+ "공항",
+ "공휴일",
+ "과목",
+ "과일",
+ "과장",
+ "과정",
+ "과학",
+ "관객",
+ "관계",
+ "관광",
+ "관념",
+ "관람",
+ "관련",
+ "관리",
+ "관습",
+ "관심",
+ "관점",
+ "관찰",
+ "광경",
+ "광고",
+ "광장",
+ "광주",
+ "괴로움",
+ "굉장히",
+ "교과서",
+ "교문",
+ "교복",
+ "교실",
+ "교양",
+ "교육",
+ "교장",
+ "교직",
+ "교통",
+ "교환",
+ "교훈",
+ "구경",
+ "구름",
+ "구멍",
+ "구별",
+ "구분",
+ "구석",
+ "구성",
+ "구속",
+ "구역",
+ "구입",
+ "구청",
+ "구체적",
+ "국가",
+ "국기",
+ "국내",
+ "국립",
+ "국물",
+ "국민",
+ "국수",
+ "국어",
+ "국왕",
+ "국적",
+ "국제",
+ "국회",
+ "군대",
+ "군사",
+ "군인",
+ "궁극적",
+ "권리",
+ "권위",
+ "권투",
+ "귀국",
+ "귀신",
+ "규정",
+ "규칙",
+ "균형",
+ "그날",
+ "그냥",
+ "그늘",
+ "그러나",
+ "그룹",
+ "그릇",
+ "그림",
+ "그제서야",
+ "그토록",
+ "극복",
+ "극히",
+ "근거",
+ "근교",
+ "근래",
+ "근로",
+ "근무",
+ "근본",
+ "근원",
+ "근육",
+ "근처",
+ "글씨",
+ "글자",
+ "금강산",
+ "금고",
+ "금년",
+ "금메달",
+ "금액",
+ "금연",
+ "금요일",
+ "금지",
+ "긍정적",
+ "기간",
+ "기관",
+ "기념",
+ "기능",
+ "기독교",
+ "기둥",
+ "기록",
+ "기름",
+ "기법",
+ "기본",
+ "기분",
+ "기쁨",
+ "기숙사",
+ "기술",
+ "기억",
+ "기업",
+ "기온",
+ "기운",
+ "기원",
+ "기적",
+ "기준",
+ "기침",
+ "기혼",
+ "기획",
+ "긴급",
+ "긴장",
+ "길이",
+ "김밥",
+ "김치",
+ "김포공항",
+ "깍두기",
+ "깜빡",
+ "깨달음",
+ "깨소금",
+ "껍질",
+ "꼭대기",
+ "꽃잎",
+ "나들이",
+ "나란히",
+ "나머지",
+ "나물",
+ "나침반",
+ "나흘",
+ "낙엽",
+ "난방",
+ "날개",
+ "날씨",
+ "날짜",
+ "남녀",
+ "남대문",
+ "남매",
+ "남산",
+ "남자",
+ "남편",
+ "남학생",
+ "낭비",
+ "낱말",
+ "내년",
+ "내용",
+ "내일",
+ "냄비",
+ "냄새",
+ "냇물",
+ "냉동",
+ "냉면",
+ "냉방",
+ "냉장고",
+ "넥타이",
+ "넷째",
+ "노동",
+ "노란색",
+ "노력",
+ "노인",
+ "녹음",
+ "녹차",
+ "녹화",
+ "논리",
+ "논문",
+ "논쟁",
+ "놀이",
+ "농구",
+ "농담",
+ "농민",
+ "농부",
+ "농업",
+ "농장",
+ "농촌",
+ "높이",
+ "눈동자",
+ "눈물",
+ "눈썹",
+ "뉴욕",
+ "느낌",
+ "늑대",
+ "능동적",
+ "능력",
+ "다방",
+ "다양성",
+ "다음",
+ "다이어트",
+ "다행",
+ "단계",
+ "단골",
+ "단독",
+ "단맛",
+ "단순",
+ "단어",
+ "단위",
+ "단점",
+ "단체",
+ "단추",
+ "단편",
+ "단풍",
+ "달걀",
+ "달러",
+ "달력",
+ "달리",
+ "닭고기",
+ "담당",
+ "담배",
+ "담요",
+ "담임",
+ "답변",
+ "답장",
+ "당근",
+ "당분간",
+ "당연히",
+ "당장",
+ "대규모",
+ "대낮",
+ "대단히",
+ "대답",
+ "대도시",
+ "대략",
+ "대량",
+ "대륙",
+ "대문",
+ "대부분",
+ "대신",
+ "대응",
+ "대장",
+ "대전",
+ "대접",
+ "대중",
+ "대책",
+ "대출",
+ "대충",
+ "대통령",
+ "대학",
+ "대한민국",
+ "대합실",
+ "대형",
+ "덩어리",
+ "데이트",
+ "도대체",
+ "도덕",
+ "도둑",
+ "도망",
+ "도서관",
+ "도심",
+ "도움",
+ "도입",
+ "도자기",
+ "도저히",
+ "도전",
+ "도중",
+ "도착",
+ "독감",
+ "독립",
+ "독서",
+ "독일",
+ "독창적",
+ "동화책",
+ "뒷모습",
+ "뒷산",
+ "딸아이",
+ "마누라",
+ "마늘",
+ "마당",
+ "마라톤",
+ "마련",
+ "마무리",
+ "마사지",
+ "마약",
+ "마요네즈",
+ "마을",
+ "마음",
+ "마이크",
+ "마중",
+ "마지막",
+ "마찬가지",
+ "마찰",
+ "마흔",
+ "막걸리",
+ "막내",
+ "막상",
+ "만남",
+ "만두",
+ "만세",
+ "만약",
+ "만일",
+ "만점",
+ "만족",
+ "만화",
+ "많이",
+ "말기",
+ "말씀",
+ "말투",
+ "맘대로",
+ "망원경",
+ "매년",
+ "매달",
+ "매력",
+ "매번",
+ "매스컴",
+ "매일",
+ "매장",
+ "맥주",
+ "먹이",
+ "먼저",
+ "먼지",
+ "멀리",
+ "메일",
+ "며느리",
+ "며칠",
+ "면담",
+ "멸치",
+ "명단",
+ "명령",
+ "명예",
+ "명의",
+ "명절",
+ "명칭",
+ "명함",
+ "모금",
+ "모니터",
+ "모델",
+ "모든",
+ "모범",
+ "모습",
+ "모양",
+ "모임",
+ "모조리",
+ "모집",
+ "모퉁이",
+ "목걸이",
+ "목록",
+ "목사",
+ "목소리",
+ "목숨",
+ "목적",
+ "목표",
+ "몰래",
+ "몸매",
+ "몸무게",
+ "몸살",
+ "몸속",
+ "몸짓",
+ "몸통",
+ "몹시",
+ "무관심",
+ "무궁화",
+ "무더위",
+ "무덤",
+ "무릎",
+ "무슨",
+ "무엇",
+ "무역",
+ "무용",
+ "무조건",
+ "무지개",
+ "무척",
+ "문구",
+ "문득",
+ "문법",
+ "문서",
+ "문제",
+ "문학",
+ "문화",
+ "물가",
+ "물건",
+ "물결",
+ "물고기",
+ "물론",
+ "물리학",
+ "물음",
+ "물질",
+ "물체",
+ "미국",
+ "미디어",
+ "미사일",
+ "미술",
+ "미역",
+ "미용실",
+ "미움",
+ "미인",
+ "미팅",
+ "미혼",
+ "민간",
+ "민족",
+ "민주",
+ "믿음",
+ "밀가루",
+ "밀리미터",
+ "밑바닥",
+ "바가지",
+ "바구니",
+ "바나나",
+ "바늘",
+ "바닥",
+ "바닷가",
+ "바람",
+ "바이러스",
+ "바탕",
+ "박물관",
+ "박사",
+ "박수",
+ "반대",
+ "반드시",
+ "반말",
+ "반발",
+ "반성",
+ "반응",
+ "반장",
+ "반죽",
+ "반지",
+ "반찬",
+ "받침",
+ "발가락",
+ "발걸음",
+ "발견",
+ "발달",
+ "발레",
+ "발목",
+ "발바닥",
+ "발생",
+ "발음",
+ "발자국",
+ "발전",
+ "발톱",
+ "발표",
+ "밤하늘",
+ "밥그릇",
+ "밥맛",
+ "밥상",
+ "밥솥",
+ "방금",
+ "방면",
+ "방문",
+ "방바닥",
+ "방법",
+ "방송",
+ "방식",
+ "방안",
+ "방울",
+ "방지",
+ "방학",
+ "방해",
+ "방향",
+ "배경",
+ "배꼽",
+ "배달",
+ "배드민턴",
+ "백두산",
+ "백색",
+ "백성",
+ "백인",
+ "백제",
+ "백화점",
+ "버릇",
+ "버섯",
+ "버튼",
+ "번개",
+ "번역",
+ "번지",
+ "번호",
+ "벌금",
+ "벌레",
+ "벌써",
+ "범위",
+ "범인",
+ "범죄",
+ "법률",
+ "법원",
+ "법적",
+ "법칙",
+ "베이징",
+ "벨트",
+ "변경",
+ "변동",
+ "변명",
+ "변신",
+ "변호사",
+ "변화",
+ "별도",
+ "별명",
+ "별일",
+ "병실",
+ "병아리",
+ "병원",
+ "보관",
+ "보너스",
+ "보라색",
+ "보람",
+ "보름",
+ "보상",
+ "보안",
+ "보자기",
+ "보장",
+ "보전",
+ "보존",
+ "보통",
+ "보편적",
+ "보험",
+ "복도",
+ "복사",
+ "복숭아",
+ "복습",
+ "볶음",
+ "본격적",
+ "본래",
+ "본부",
+ "본사",
+ "본성",
+ "본인",
+ "본질",
+ "볼펜",
+ "봉사",
+ "봉지",
+ "봉투",
+ "부근",
+ "부끄러움",
+ "부담",
+ "부동산",
+ "부문",
+ "부분",
+ "부산",
+ "부상",
+ "부엌",
+ "부인",
+ "부작용",
+ "부장",
+ "부정",
+ "부족",
+ "부지런히",
+ "부친",
+ "부탁",
+ "부품",
+ "부회장",
+ "북부",
+ "북한",
+ "분노",
+ "분량",
+ "분리",
+ "분명",
+ "분석",
+ "분야",
+ "분위기",
+ "분필",
+ "분홍색",
+ "불고기",
+ "불과",
+ "불교",
+ "불꽃",
+ "불만",
+ "불법",
+ "불빛",
+ "불안",
+ "불이익",
+ "불행",
+ "브랜드",
+ "비극",
+ "비난",
+ "비닐",
+ "비둘기",
+ "비디오",
+ "비로소",
+ "비만",
+ "비명",
+ "비밀",
+ "비바람",
+ "비빔밥",
+ "비상",
+ "비용",
+ "비율",
+ "비중",
+ "비타민",
+ "비판",
+ "빌딩",
+ "빗물",
+ "빗방울",
+ "빗줄기",
+ "빛깔",
+ "빨간색",
+ "빨래",
+ "빨리",
+ "사건",
+ "사계절",
+ "사나이",
+ "사냥",
+ "사람",
+ "사랑",
+ "사립",
+ "사모님",
+ "사물",
+ "사방",
+ "사상",
+ "사생활",
+ "사설",
+ "사슴",
+ "사실",
+ "사업",
+ "사용",
+ "사월",
+ "사장",
+ "사전",
+ "사진",
+ "사촌",
+ "사춘기",
+ "사탕",
+ "사투리",
+ "사흘",
+ "산길",
+ "산부인과",
+ "산업",
+ "산책",
+ "살림",
+ "살인",
+ "살짝",
+ "삼계탕",
+ "삼국",
+ "삼십",
+ "삼월",
+ "삼촌",
+ "상관",
+ "상금",
+ "상대",
+ "상류",
+ "상반기",
+ "상상",
+ "상식",
+ "상업",
+ "상인",
+ "상자",
+ "상점",
+ "상처",
+ "상추",
+ "상태",
+ "상표",
+ "상품",
+ "상황",
+ "새벽",
+ "색깔",
+ "색연필",
+ "생각",
+ "생명",
+ "생물",
+ "생방송",
+ "생산",
+ "생선",
+ "생신",
+ "생일",
+ "생활",
+ "서랍",
+ "서른",
+ "서명",
+ "서민",
+ "서비스",
+ "서양",
+ "서울",
+ "서적",
+ "서점",
+ "서쪽",
+ "서클",
+ "석사",
+ "석유",
+ "선거",
+ "선물",
+ "선배",
+ "선생",
+ "선수",
+ "선원",
+ "선장",
+ "선전",
+ "선택",
+ "선풍기",
+ "설거지",
+ "설날",
+ "설렁탕",
+ "설명",
+ "설문",
+ "설사",
+ "설악산",
+ "설치",
+ "설탕",
+ "섭씨",
+ "성공",
+ "성당",
+ "성명",
+ "성별",
+ "성인",
+ "성장",
+ "성적",
+ "성질",
+ "성함",
+ "세금",
+ "세미나",
+ "세상",
+ "세월",
+ "세종대왕",
+ "세탁",
+ "센터",
+ "센티미터",
+ "셋째",
+ "소규모",
+ "소극적",
+ "소금",
+ "소나기",
+ "소년",
+ "소득",
+ "소망",
+ "소문",
+ "소설",
+ "소속",
+ "소아과",
+ "소용",
+ "소원",
+ "소음",
+ "소중히",
+ "소지품",
+ "소질",
+ "소풍",
+ "소형",
+ "속담",
+ "속도",
+ "속옷",
+ "손가락",
+ "손길",
+ "손녀",
+ "손님",
+ "손등",
+ "손목",
+ "손뼉",
+ "손실",
+ "손질",
+ "손톱",
+ "손해",
+ "솔직히",
+ "솜씨",
+ "송아지",
+ "송이",
+ "송편",
+ "쇠고기",
+ "쇼핑",
+ "수건",
+ "수년",
+ "수단",
+ "수돗물",
+ "수동적",
+ "수면",
+ "수명",
+ "수박",
+ "수상",
+ "수석",
+ "수술",
+ "수시로",
+ "수업",
+ "수염",
+ "수영",
+ "수입",
+ "수준",
+ "수집",
+ "수출",
+ "수컷",
+ "수필",
+ "수학",
+ "수험생",
+ "수화기",
+ "숙녀",
+ "숙소",
+ "숙제",
+ "순간",
+ "순서",
+ "순수",
+ "순식간",
+ "순위",
+ "숟가락",
+ "술병",
+ "술집",
+ "숫자",
+ "스님",
+ "스물",
+ "스스로",
+ "스승",
+ "스웨터",
+ "스위치",
+ "스케이트",
+ "스튜디오",
+ "스트레스",
+ "스포츠",
+ "슬쩍",
+ "슬픔",
+ "습관",
+ "습기",
+ "승객",
+ "승리",
+ "승부",
+ "승용차",
+ "승진",
+ "시각",
+ "시간",
+ "시골",
+ "시금치",
+ "시나리오",
+ "시댁",
+ "시리즈",
+ "시멘트",
+ "시민",
+ "시부모",
+ "시선",
+ "시설",
+ "시스템",
+ "시아버지",
+ "시어머니",
+ "시월",
+ "시인",
+ "시일",
+ "시작",
+ "시장",
+ "시절",
+ "시점",
+ "시중",
+ "시즌",
+ "시집",
+ "시청",
+ "시합",
+ "시험",
+ "식구",
+ "식기",
+ "식당",
+ "식량",
+ "식료품",
+ "식물",
+ "식빵",
+ "식사",
+ "식생활",
+ "식초",
+ "식탁",
+ "식품",
+ "신고",
+ "신규",
+ "신념",
+ "신문",
+ "신발",
+ "신비",
+ "신사",
+ "신세",
+ "신용",
+ "신제품",
+ "신청",
+ "신체",
+ "신화",
+ "실감",
+ "실내",
+ "실력",
+ "실례",
+ "실망",
+ "실수",
+ "실습",
+ "실시",
+ "실장",
+ "실정",
+ "실질적",
+ "실천",
+ "실체",
+ "실컷",
+ "실태",
+ "실패",
+ "실험",
+ "실현",
+ "심리",
+ "심부름",
+ "심사",
+ "심장",
+ "심정",
+ "심판",
+ "쌍둥이",
+ "씨름",
+ "씨앗",
+ "아가씨",
+ "아나운서",
+ "아드님",
+ "아들",
+ "아쉬움",
+ "아스팔트",
+ "아시아",
+ "아울러",
+ "아저씨",
+ "아줌마",
+ "아직",
+ "아침",
+ "아파트",
+ "아프리카",
+ "아픔",
+ "아홉",
+ "아흔",
+ "악기",
+ "악몽",
+ "악수",
+ "안개",
+ "안경",
+ "안과",
+ "안내",
+ "안녕",
+ "안동",
+ "안방",
+ "안부",
+ "안주",
+ "알루미늄",
+ "알코올",
+ "암시",
+ "암컷",
+ "압력",
+ "앞날",
+ "앞문",
+ "애인",
+ "애정",
+ "액수",
+ "앨범",
+ "야간",
+ "야단",
+ "야옹",
+ "약간",
+ "약국",
+ "약속",
+ "약수",
+ "약점",
+ "약품",
+ "약혼녀",
+ "양념",
+ "양력",
+ "양말",
+ "양배추",
+ "양주",
+ "양파",
+ "어둠",
+ "어려움",
+ "어른",
+ "어젯밤",
+ "어쨌든",
+ "어쩌다가",
+ "어쩐지",
+ "언니",
+ "언덕",
+ "언론",
+ "언어",
+ "얼굴",
+ "얼른",
+ "얼음",
+ "얼핏",
+ "엄마",
+ "업무",
+ "업종",
+ "업체",
+ "엉덩이",
+ "엉망",
+ "엉터리",
+ "엊그제",
+ "에너지",
+ "에어컨",
+ "엔진",
+ "여건",
+ "여고생",
+ "여관",
+ "여군",
+ "여권",
+ "여대생",
+ "여덟",
+ "여동생",
+ "여든",
+ "여론",
+ "여름",
+ "여섯",
+ "여성",
+ "여왕",
+ "여인",
+ "여전히",
+ "여직원",
+ "여학생",
+ "여행",
+ "역사",
+ "역시",
+ "역할",
+ "연결",
+ "연구",
+ "연극",
+ "연기",
+ "연락",
+ "연설",
+ "연세",
+ "연속",
+ "연습",
+ "연애",
+ "연예인",
+ "연인",
+ "연장",
+ "연주",
+ "연출",
+ "연필",
+ "연합",
+ "연휴",
+ "열기",
+ "열매",
+ "열쇠",
+ "열심히",
+ "열정",
+ "열차",
+ "열흘",
+ "염려",
+ "엽서",
+ "영국",
+ "영남",
+ "영상",
+ "영양",
+ "영역",
+ "영웅",
+ "영원히",
+ "영하",
+ "영향",
+ "영혼",
+ "영화",
+ "옆구리",
+ "옆방",
+ "옆집",
+ "예감",
+ "예금",
+ "예방",
+ "예산",
+ "예상",
+ "예선",
+ "예술",
+ "예습",
+ "예식장",
+ "예약",
+ "예전",
+ "예절",
+ "예정",
+ "예컨대",
+ "옛날",
+ "오늘",
+ "오락",
+ "오랫동안",
+ "오렌지",
+ "오로지",
+ "오른발",
+ "오븐",
+ "오십",
+ "오염",
+ "오월",
+ "오전",
+ "오직",
+ "오징어",
+ "오페라",
+ "오피스텔",
+ "오히려",
+ "옥상",
+ "옥수수",
+ "온갖",
+ "온라인",
+ "온몸",
+ "온종일",
+ "온통",
+ "올가을",
+ "올림픽",
+ "올해",
+ "옷차림",
+ "와이셔츠",
+ "와인",
+ "완성",
+ "완전",
+ "왕비",
+ "왕자",
+ "왜냐하면",
+ "왠지",
+ "외갓집",
+ "외국",
+ "외로움",
+ "외삼촌",
+ "외출",
+ "외침",
+ "외할머니",
+ "왼발",
+ "왼손",
+ "왼쪽",
+ "요금",
+ "요일",
+ "요즘",
+ "요청",
+ "용기",
+ "용서",
+ "용어",
+ "우산",
+ "우선",
+ "우승",
+ "우연히",
+ "우정",
+ "우체국",
+ "우편",
+ "운동",
+ "운명",
+ "운반",
+ "운전",
+ "운행",
+ "울산",
+ "울음",
+ "움직임",
+ "웃어른",
+ "웃음",
+ "워낙",
+ "원고",
+ "원래",
+ "원서",
+ "원숭이",
+ "원인",
+ "원장",
+ "원피스",
+ "월급",
+ "월드컵",
+ "월세",
+ "월요일",
+ "웨이터",
+ "위반",
+ "위법",
+ "위성",
+ "위원",
+ "위험",
+ "위협",
+ "윗사람",
+ "유난히",
+ "유럽",
+ "유명",
+ "유물",
+ "유산",
+ "유적",
+ "유치원",
+ "유학",
+ "유행",
+ "유형",
+ "육군",
+ "육상",
+ "육십",
+ "육체",
+ "은행",
+ "음력",
+ "음료",
+ "음반",
+ "음성",
+ "음식",
+ "음악",
+ "음주",
+ "의견",
+ "의논",
+ "의문",
+ "의복",
+ "의식",
+ "의심",
+ "의외로",
+ "의욕",
+ "의원",
+ "의학",
+ "이것",
+ "이곳",
+ "이념",
+ "이놈",
+ "이달",
+ "이대로",
+ "이동",
+ "이렇게",
+ "이력서",
+ "이론적",
+ "이름",
+ "이민",
+ "이발소",
+ "이별",
+ "이불",
+ "이빨",
+ "이상",
+ "이성",
+ "이슬",
+ "이야기",
+ "이용",
+ "이웃",
+ "이월",
+ "이윽고",
+ "이익",
+ "이전",
+ "이중",
+ "이튿날",
+ "이틀",
+ "이혼",
+ "인간",
+ "인격",
+ "인공",
+ "인구",
+ "인근",
+ "인기",
+ "인도",
+ "인류",
+ "인물",
+ "인생",
+ "인쇄",
+ "인연",
+ "인원",
+ "인재",
+ "인종",
+ "인천",
+ "인체",
+ "인터넷",
+ "인하",
+ "인형",
+ "일곱",
+ "일기",
+ "일단",
+ "일대",
+ "일등",
+ "일반",
+ "일본",
+ "일부",
+ "일상",
+ "일생",
+ "일손",
+ "일요일",
+ "일월",
+ "일정",
+ "일종",
+ "일주일",
+ "일찍",
+ "일체",
+ "일치",
+ "일행",
+ "일회용",
+ "임금",
+ "임무",
+ "입대",
+ "입력",
+ "입맛",
+ "입사",
+ "입술",
+ "입시",
+ "입원",
+ "입장",
+ "입학",
+ "자가용",
+ "자격",
+ "자극",
+ "자동",
+ "자랑",
+ "자부심",
+ "자식",
+ "자신",
+ "자연",
+ "자원",
+ "자율",
+ "자전거",
+ "자정",
+ "자존심",
+ "자판",
+ "작가",
+ "작년",
+ "작성",
+ "작업",
+ "작용",
+ "작은딸",
+ "작품",
+ "잔디",
+ "잔뜩",
+ "잔치",
+ "잘못",
+ "잠깐",
+ "잠수함",
+ "잠시",
+ "잠옷",
+ "잠자리",
+ "잡지",
+ "장관",
+ "장군",
+ "장기간",
+ "장래",
+ "장례",
+ "장르",
+ "장마",
+ "장면",
+ "장모",
+ "장미",
+ "장비",
+ "장사",
+ "장소",
+ "장식",
+ "장애인",
+ "장인",
+ "장점",
+ "장차",
+ "장학금",
+ "재능",
+ "재빨리",
+ "재산",
+ "재생",
+ "재작년",
+ "재정",
+ "재채기",
+ "재판",
+ "재학",
+ "재활용",
+ "저것",
+ "저고리",
+ "저곳",
+ "저녁",
+ "저런",
+ "저렇게",
+ "저번",
+ "저울",
+ "저절로",
+ "저축",
+ "적극",
+ "적당히",
+ "적성",
+ "적용",
+ "적응",
+ "전개",
+ "전공",
+ "전기",
+ "전달",
+ "전라도",
+ "전망",
+ "전문",
+ "전반",
+ "전부",
+ "전세",
+ "전시",
+ "전용",
+ "전자",
+ "전쟁",
+ "전주",
+ "전철",
+ "전체",
+ "전통",
+ "전혀",
+ "전후",
+ "절대",
+ "절망",
+ "절반",
+ "절약",
+ "절차",
+ "점검",
+ "점수",
+ "점심",
+ "점원",
+ "점점",
+ "점차",
+ "접근",
+ "접시",
+ "접촉",
+ "젓가락",
+ "정거장",
+ "정도",
+ "정류장",
+ "정리",
+ "정말",
+ "정면",
+ "정문",
+ "정반대",
+ "정보",
+ "정부",
+ "정비",
+ "정상",
+ "정성",
+ "정오",
+ "정원",
+ "정장",
+ "정지",
+ "정치",
+ "정확히",
+ "제공",
+ "제과점",
+ "제대로",
+ "제목",
+ "제발",
+ "제법",
+ "제삿날",
+ "제안",
+ "제일",
+ "제작",
+ "제주도",
+ "제출",
+ "제품",
+ "제한",
+ "조각",
+ "조건",
+ "조금",
+ "조깅",
+ "조명",
+ "조미료",
+ "조상",
+ "조선",
+ "조용히",
+ "조절",
+ "조정",
+ "조직",
+ "존댓말",
+ "존재",
+ "졸업",
+ "졸음",
+ "종교",
+ "종로",
+ "종류",
+ "종소리",
+ "종업원",
+ "종종",
+ "종합",
+ "좌석",
+ "죄인",
+ "주관적",
+ "주름",
+ "주말",
+ "주머니",
+ "주먹",
+ "주문",
+ "주민",
+ "주방",
+ "주변",
+ "주식",
+ "주인",
+ "주일",
+ "주장",
+ "주전자",
+ "주택",
+ "준비",
+ "줄거리",
+ "줄기",
+ "줄무늬",
+ "중간",
+ "중계방송",
+ "중국",
+ "중년",
+ "중단",
+ "중독",
+ "중반",
+ "중부",
+ "중세",
+ "중소기업",
+ "중순",
+ "중앙",
+ "중요",
+ "중학교",
+ "즉석",
+ "즉시",
+ "즐거움",
+ "증가",
+ "증거",
+ "증권",
+ "증상",
+ "증세",
+ "지각",
+ "지갑",
+ "지경",
+ "지극히",
+ "지금",
+ "지급",
+ "지능",
+ "지름길",
+ "지리산",
+ "지방",
+ "지붕",
+ "지식",
+ "지역",
+ "지우개",
+ "지원",
+ "지적",
+ "지점",
+ "지진",
+ "지출",
+ "직선",
+ "직업",
+ "직원",
+ "직장",
+ "진급",
+ "진동",
+ "진로",
+ "진료",
+ "진리",
+ "진짜",
+ "진찰",
+ "진출",
+ "진통",
+ "진행",
+ "질문",
+ "질병",
+ "질서",
+ "짐작",
+ "집단",
+ "집안",
+ "집중",
+ "짜증",
+ "찌꺼기",
+ "차남",
+ "차라리",
+ "차량",
+ "차림",
+ "차별",
+ "차선",
+ "차츰",
+ "착각",
+ "찬물",
+ "찬성",
+ "참가",
+ "참기름",
+ "참새",
+ "참석",
+ "참여",
+ "참외",
+ "참조",
+ "찻잔",
+ "창가",
+ "창고",
+ "창구",
+ "창문",
+ "창밖",
+ "창작",
+ "창조",
+ "채널",
+ "채점",
+ "책가방",
+ "책방",
+ "책상",
+ "책임",
+ "챔피언",
+ "처벌",
+ "처음",
+ "천국",
+ "천둥",
+ "천장",
+ "천재",
+ "천천히",
+ "철도",
+ "철저히",
+ "철학",
+ "첫날",
+ "첫째",
+ "청년",
+ "청바지",
+ "청소",
+ "청춘",
+ "체계",
+ "체력",
+ "체온",
+ "체육",
+ "체중",
+ "체험",
+ "초등학생",
+ "초반",
+ "초밥",
+ "초상화",
+ "초순",
+ "초여름",
+ "초원",
+ "초저녁",
+ "초점",
+ "초청",
+ "초콜릿",
+ "촛불",
+ "총각",
+ "총리",
+ "총장",
+ "촬영",
+ "최근",
+ "최상",
+ "최선",
+ "최신",
+ "최악",
+ "최종",
+ "추석",
+ "추억",
+ "추진",
+ "추천",
+ "추측",
+ "축구",
+ "축소",
+ "축제",
+ "축하",
+ "출근",
+ "출발",
+ "출산",
+ "출신",
+ "출연",
+ "출입",
+ "출장",
+ "출판",
+ "충격",
+ "충고",
+ "충돌",
+ "충분히",
+ "충청도",
+ "취업",
+ "취직",
+ "취향",
+ "치약",
+ "친구",
+ "친척",
+ "칠십",
+ "칠월",
+ "칠판",
+ "침대",
+ "침묵",
+ "침실",
+ "칫솔",
+ "칭찬",
+ "카메라",
+ "카운터",
+ "칼국수",
+ "캐릭터",
+ "캠퍼스",
+ "캠페인",
+ "커튼",
+ "컨디션",
+ "컬러",
+ "컴퓨터",
+ "코끼리",
+ "코미디",
+ "콘서트",
+ "콜라",
+ "콤플렉스",
+ "콩나물",
+ "쾌감",
+ "쿠데타",
+ "크림",
+ "큰길",
+ "큰딸",
+ "큰소리",
+ "큰아들",
+ "큰어머니",
+ "큰일",
+ "큰절",
+ "클래식",
+ "클럽",
+ "킬로",
+ "타입",
+ "타자기",
+ "탁구",
+ "탁자",
+ "탄생",
+ "태권도",
+ "태양",
+ "태풍",
+ "택시",
+ "탤런트",
+ "터널",
+ "터미널",
+ "테니스",
+ "테스트",
+ "테이블",
+ "텔레비전",
+ "토론",
+ "토마토",
+ "토요일",
+ "통계",
+ "통과",
+ "통로",
+ "통신",
+ "통역",
+ "통일",
+ "통장",
+ "통제",
+ "통증",
+ "통합",
+ "통화",
+ "퇴근",
+ "퇴원",
+ "퇴직금",
+ "튀김",
+ "트럭",
+ "특급",
+ "특별",
+ "특성",
+ "특수",
+ "특징",
+ "특히",
+ "튼튼히",
+ "티셔츠",
+ "파란색",
+ "파일",
+ "파출소",
+ "판결",
+ "판단",
+ "판매",
+ "판사",
+ "팔십",
+ "팔월",
+ "팝송",
+ "패션",
+ "팩스",
+ "팩시밀리",
+ "팬티",
+ "퍼센트",
+ "페인트",
+ "편견",
+ "편의",
+ "편지",
+ "편히",
+ "평가",
+ "평균",
+ "평생",
+ "평소",
+ "평양",
+ "평일",
+ "평화",
+ "포스터",
+ "포인트",
+ "포장",
+ "포함",
+ "표면",
+ "표정",
+ "표준",
+ "표현",
+ "품목",
+ "품질",
+ "풍경",
+ "풍속",
+ "풍습",
+ "프랑스",
+ "프린터",
+ "플라스틱",
+ "피곤",
+ "피망",
+ "피아노",
+ "필름",
+ "필수",
+ "필요",
+ "필자",
+ "필통",
+ "핑계",
+ "하느님",
+ "하늘",
+ "하드웨어",
+ "하룻밤",
+ "하반기",
+ "하숙집",
+ "하순",
+ "하여튼",
+ "하지만",
+ "하천",
+ "하품",
+ "하필",
+ "학과",
+ "학교",
+ "학급",
+ "학기",
+ "학년",
+ "학력",
+ "학번",
+ "학부모",
+ "학비",
+ "학생",
+ "학술",
+ "학습",
+ "학용품",
+ "학원",
+ "학위",
+ "학자",
+ "학점",
+ "한계",
+ "한글",
+ "한꺼번에",
+ "한낮",
+ "한눈",
+ "한동안",
+ "한때",
+ "한라산",
+ "한마디",
+ "한문",
+ "한번",
+ "한복",
+ "한식",
+ "한여름",
+ "한쪽",
+ "할머니",
+ "할아버지",
+ "할인",
+ "함께",
+ "함부로",
+ "합격",
+ "합리적",
+ "항공",
+ "항구",
+ "항상",
+ "항의",
+ "해결",
+ "해군",
+ "해답",
+ "해당",
+ "해물",
+ "해석",
+ "해설",
+ "해수욕장",
+ "해안",
+ "핵심",
+ "핸드백",
+ "햄버거",
+ "햇볕",
+ "햇살",
+ "행동",
+ "행복",
+ "행사",
+ "행운",
+ "행위",
+ "향기",
+ "향상",
+ "향수",
+ "허락",
+ "허용",
+ "헬기",
+ "현관",
+ "현금",
+ "현대",
+ "현상",
+ "현실",
+ "현장",
+ "현재",
+ "현지",
+ "혈액",
+ "협력",
+ "형부",
+ "형사",
+ "형수",
+ "형식",
+ "형제",
+ "형태",
+ "형편",
+ "혜택",
+ "호기심",
+ "호남",
+ "호랑이",
+ "호박",
+ "호텔",
+ "호흡",
+ "혹시",
+ "홀로",
+ "홈페이지",
+ "홍보",
+ "홍수",
+ "홍차",
+ "화면",
+ "화분",
+ "화살",
+ "화요일",
+ "화장",
+ "화학",
+ "확보",
+ "확인",
+ "확장",
+ "확정",
+ "환갑",
+ "환경",
+ "환영",
+ "환율",
+ "환자",
+ "활기",
+ "활동",
+ "활발히",
+ "활용",
+ "활짝",
+ "회견",
+ "회관",
+ "회복",
+ "회색",
+ "회원",
+ "회장",
+ "회전",
+ "횟수",
+ "횡단보도",
+ "효율적",
+ "후반",
+ "후춧가루",
+ "훈련",
+ "훨씬",
+ "휴식",
+ "휴일",
+ "흉내",
+ "흐름",
+ "흑백",
+ "흑인",
+ "흔적",
+ "흔히",
+ "흥미",
+ "흥분",
+ "희곡",
+ "희망",
+ "희생",
+ "흰색",
+ "힘껏"
+ )
+}
diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt
new file mode 100644
index 000000000..eb3eebd7e
--- /dev/null
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSimplifiedChinese.kt
@@ -0,0 +1,2060 @@
+package io.iohk.atala.prism.apollo.utils.bip39.wordlists
+
+import kotlin.js.ExperimentalJsExport
+import kotlin.js.JsExport
+
+@OptIn(ExperimentalJsExport::class)
+@JsExport
+internal object MnemonicCodeSimplifiedChinese {
+ val wordList: List =
+ listOf(
+ "的",
+ "一",
+ "是",
+ "在",
+ "不",
+ "了",
+ "有",
+ "和",
+ "人",
+ "这",
+ "中",
+ "大",
+ "为",
+ "上",
+ "个",
+ "国",
+ "我",
+ "以",
+ "要",
+ "他",
+ "时",
+ "来",
+ "用",
+ "们",
+ "生",
+ "到",
+ "作",
+ "地",
+ "于",
+ "出",
+ "就",
+ "分",
+ "对",
+ "成",
+ "会",
+ "可",
+ "主",
+ "发",
+ "年",
+ "动",
+ "同",
+ "工",
+ "也",
+ "能",
+ "下",
+ "过",
+ "子",
+ "说",
+ "产",
+ "种",
+ "面",
+ "而",
+ "方",
+ "后",
+ "多",
+ "定",
+ "行",
+ "学",
+ "法",
+ "所",
+ "民",
+ "得",
+ "经",
+ "十",
+ "三",
+ "之",
+ "进",
+ "着",
+ "等",
+ "部",
+ "度",
+ "家",
+ "电",
+ "力",
+ "里",
+ "如",
+ "水",
+ "化",
+ "高",
+ "自",
+ "二",
+ "理",
+ "起",
+ "小",
+ "物",
+ "现",
+ "实",
+ "加",
+ "量",
+ "都",
+ "两",
+ "体",
+ "制",
+ "机",
+ "当",
+ "使",
+ "点",
+ "从",
+ "业",
+ "本",
+ "去",
+ "把",
+ "性",
+ "好",
+ "应",
+ "开",
+ "它",
+ "合",
+ "还",
+ "因",
+ "由",
+ "其",
+ "些",
+ "然",
+ "前",
+ "外",
+ "天",
+ "政",
+ "四",
+ "日",
+ "那",
+ "社",
+ "义",
+ "事",
+ "平",
+ "形",
+ "相",
+ "全",
+ "表",
+ "间",
+ "样",
+ "与",
+ "关",
+ "各",
+ "重",
+ "新",
+ "线",
+ "内",
+ "数",
+ "正",
+ "心",
+ "反",
+ "你",
+ "明",
+ "看",
+ "原",
+ "又",
+ "么",
+ "利",
+ "比",
+ "或",
+ "但",
+ "质",
+ "气",
+ "第",
+ "向",
+ "道",
+ "命",
+ "此",
+ "变",
+ "条",
+ "只",
+ "没",
+ "结",
+ "解",
+ "问",
+ "意",
+ "建",
+ "月",
+ "公",
+ "无",
+ "系",
+ "军",
+ "很",
+ "情",
+ "者",
+ "最",
+ "立",
+ "代",
+ "想",
+ "已",
+ "通",
+ "并",
+ "提",
+ "直",
+ "题",
+ "党",
+ "程",
+ "展",
+ "五",
+ "果",
+ "料",
+ "象",
+ "员",
+ "革",
+ "位",
+ "入",
+ "常",
+ "文",
+ "总",
+ "次",
+ "品",
+ "式",
+ "活",
+ "设",
+ "及",
+ "管",
+ "特",
+ "件",
+ "长",
+ "求",
+ "老",
+ "头",
+ "基",
+ "资",
+ "边",
+ "流",
+ "路",
+ "级",
+ "少",
+ "图",
+ "山",
+ "统",
+ "接",
+ "知",
+ "较",
+ "将",
+ "组",
+ "见",
+ "计",
+ "别",
+ "她",
+ "手",
+ "角",
+ "期",
+ "根",
+ "论",
+ "运",
+ "农",
+ "指",
+ "几",
+ "九",
+ "区",
+ "强",
+ "放",
+ "决",
+ "西",
+ "被",
+ "干",
+ "做",
+ "必",
+ "战",
+ "先",
+ "回",
+ "则",
+ "任",
+ "取",
+ "据",
+ "处",
+ "队",
+ "南",
+ "给",
+ "色",
+ "光",
+ "门",
+ "即",
+ "保",
+ "治",
+ "北",
+ "造",
+ "百",
+ "规",
+ "热",
+ "领",
+ "七",
+ "海",
+ "口",
+ "东",
+ "导",
+ "器",
+ "压",
+ "志",
+ "世",
+ "金",
+ "增",
+ "争",
+ "济",
+ "阶",
+ "油",
+ "思",
+ "术",
+ "极",
+ "交",
+ "受",
+ "联",
+ "什",
+ "认",
+ "六",
+ "共",
+ "权",
+ "收",
+ "证",
+ "改",
+ "清",
+ "美",
+ "再",
+ "采",
+ "转",
+ "更",
+ "单",
+ "风",
+ "切",
+ "打",
+ "白",
+ "教",
+ "速",
+ "花",
+ "带",
+ "安",
+ "场",
+ "身",
+ "车",
+ "例",
+ "真",
+ "务",
+ "具",
+ "万",
+ "每",
+ "目",
+ "至",
+ "达",
+ "走",
+ "积",
+ "示",
+ "议",
+ "声",
+ "报",
+ "斗",
+ "完",
+ "类",
+ "八",
+ "离",
+ "华",
+ "名",
+ "确",
+ "才",
+ "科",
+ "张",
+ "信",
+ "马",
+ "节",
+ "话",
+ "米",
+ "整",
+ "空",
+ "元",
+ "况",
+ "今",
+ "集",
+ "温",
+ "传",
+ "土",
+ "许",
+ "步",
+ "群",
+ "广",
+ "石",
+ "记",
+ "需",
+ "段",
+ "研",
+ "界",
+ "拉",
+ "林",
+ "律",
+ "叫",
+ "且",
+ "究",
+ "观",
+ "越",
+ "织",
+ "装",
+ "影",
+ "算",
+ "低",
+ "持",
+ "音",
+ "众",
+ "书",
+ "布",
+ "复",
+ "容",
+ "儿",
+ "须",
+ "际",
+ "商",
+ "非",
+ "验",
+ "连",
+ "断",
+ "深",
+ "难",
+ "近",
+ "矿",
+ "千",
+ "周",
+ "委",
+ "素",
+ "技",
+ "备",
+ "半",
+ "办",
+ "青",
+ "省",
+ "列",
+ "习",
+ "响",
+ "约",
+ "支",
+ "般",
+ "史",
+ "感",
+ "劳",
+ "便",
+ "团",
+ "往",
+ "酸",
+ "历",
+ "市",
+ "克",
+ "何",
+ "除",
+ "消",
+ "构",
+ "府",
+ "称",
+ "太",
+ "准",
+ "精",
+ "值",
+ "号",
+ "率",
+ "族",
+ "维",
+ "划",
+ "选",
+ "标",
+ "写",
+ "存",
+ "候",
+ "毛",
+ "亲",
+ "快",
+ "效",
+ "斯",
+ "院",
+ "查",
+ "江",
+ "型",
+ "眼",
+ "王",
+ "按",
+ "格",
+ "养",
+ "易",
+ "置",
+ "派",
+ "层",
+ "片",
+ "始",
+ "却",
+ "专",
+ "状",
+ "育",
+ "厂",
+ "京",
+ "识",
+ "适",
+ "属",
+ "圆",
+ "包",
+ "火",
+ "住",
+ "调",
+ "满",
+ "县",
+ "局",
+ "照",
+ "参",
+ "红",
+ "细",
+ "引",
+ "听",
+ "该",
+ "铁",
+ "价",
+ "严",
+ "首",
+ "底",
+ "液",
+ "官",
+ "德",
+ "随",
+ "病",
+ "苏",
+ "失",
+ "尔",
+ "死",
+ "讲",
+ "配",
+ "女",
+ "黄",
+ "推",
+ "显",
+ "谈",
+ "罪",
+ "神",
+ "艺",
+ "呢",
+ "席",
+ "含",
+ "企",
+ "望",
+ "密",
+ "批",
+ "营",
+ "项",
+ "防",
+ "举",
+ "球",
+ "英",
+ "氧",
+ "势",
+ "告",
+ "李",
+ "台",
+ "落",
+ "木",
+ "帮",
+ "轮",
+ "破",
+ "亚",
+ "师",
+ "围",
+ "注",
+ "远",
+ "字",
+ "材",
+ "排",
+ "供",
+ "河",
+ "态",
+ "封",
+ "另",
+ "施",
+ "减",
+ "树",
+ "溶",
+ "怎",
+ "止",
+ "案",
+ "言",
+ "士",
+ "均",
+ "武",
+ "固",
+ "叶",
+ "鱼",
+ "波",
+ "视",
+ "仅",
+ "费",
+ "紧",
+ "爱",
+ "左",
+ "章",
+ "早",
+ "朝",
+ "害",
+ "续",
+ "轻",
+ "服",
+ "试",
+ "食",
+ "充",
+ "兵",
+ "源",
+ "判",
+ "护",
+ "司",
+ "足",
+ "某",
+ "练",
+ "差",
+ "致",
+ "板",
+ "田",
+ "降",
+ "黑",
+ "犯",
+ "负",
+ "击",
+ "范",
+ "继",
+ "兴",
+ "似",
+ "余",
+ "坚",
+ "曲",
+ "输",
+ "修",
+ "故",
+ "城",
+ "夫",
+ "够",
+ "送",
+ "笔",
+ "船",
+ "占",
+ "右",
+ "财",
+ "吃",
+ "富",
+ "春",
+ "职",
+ "觉",
+ "汉",
+ "画",
+ "功",
+ "巴",
+ "跟",
+ "虽",
+ "杂",
+ "飞",
+ "检",
+ "吸",
+ "助",
+ "升",
+ "阳",
+ "互",
+ "初",
+ "创",
+ "抗",
+ "考",
+ "投",
+ "坏",
+ "策",
+ "古",
+ "径",
+ "换",
+ "未",
+ "跑",
+ "留",
+ "钢",
+ "曾",
+ "端",
+ "责",
+ "站",
+ "简",
+ "述",
+ "钱",
+ "副",
+ "尽",
+ "帝",
+ "射",
+ "草",
+ "冲",
+ "承",
+ "独",
+ "令",
+ "限",
+ "阿",
+ "宣",
+ "环",
+ "双",
+ "请",
+ "超",
+ "微",
+ "让",
+ "控",
+ "州",
+ "良",
+ "轴",
+ "找",
+ "否",
+ "纪",
+ "益",
+ "依",
+ "优",
+ "顶",
+ "础",
+ "载",
+ "倒",
+ "房",
+ "突",
+ "坐",
+ "粉",
+ "敌",
+ "略",
+ "客",
+ "袁",
+ "冷",
+ "胜",
+ "绝",
+ "析",
+ "块",
+ "剂",
+ "测",
+ "丝",
+ "协",
+ "诉",
+ "念",
+ "陈",
+ "仍",
+ "罗",
+ "盐",
+ "友",
+ "洋",
+ "错",
+ "苦",
+ "夜",
+ "刑",
+ "移",
+ "频",
+ "逐",
+ "靠",
+ "混",
+ "母",
+ "短",
+ "皮",
+ "终",
+ "聚",
+ "汽",
+ "村",
+ "云",
+ "哪",
+ "既",
+ "距",
+ "卫",
+ "停",
+ "烈",
+ "央",
+ "察",
+ "烧",
+ "迅",
+ "境",
+ "若",
+ "印",
+ "洲",
+ "刻",
+ "括",
+ "激",
+ "孔",
+ "搞",
+ "甚",
+ "室",
+ "待",
+ "核",
+ "校",
+ "散",
+ "侵",
+ "吧",
+ "甲",
+ "游",
+ "久",
+ "菜",
+ "味",
+ "旧",
+ "模",
+ "湖",
+ "货",
+ "损",
+ "预",
+ "阻",
+ "毫",
+ "普",
+ "稳",
+ "乙",
+ "妈",
+ "植",
+ "息",
+ "扩",
+ "银",
+ "语",
+ "挥",
+ "酒",
+ "守",
+ "拿",
+ "序",
+ "纸",
+ "医",
+ "缺",
+ "雨",
+ "吗",
+ "针",
+ "刘",
+ "啊",
+ "急",
+ "唱",
+ "误",
+ "训",
+ "愿",
+ "审",
+ "附",
+ "获",
+ "茶",
+ "鲜",
+ "粮",
+ "斤",
+ "孩",
+ "脱",
+ "硫",
+ "肥",
+ "善",
+ "龙",
+ "演",
+ "父",
+ "渐",
+ "血",
+ "欢",
+ "械",
+ "掌",
+ "歌",
+ "沙",
+ "刚",
+ "攻",
+ "谓",
+ "盾",
+ "讨",
+ "晚",
+ "粒",
+ "乱",
+ "燃",
+ "矛",
+ "乎",
+ "杀",
+ "药",
+ "宁",
+ "鲁",
+ "贵",
+ "钟",
+ "煤",
+ "读",
+ "班",
+ "伯",
+ "香",
+ "介",
+ "迫",
+ "句",
+ "丰",
+ "培",
+ "握",
+ "兰",
+ "担",
+ "弦",
+ "蛋",
+ "沉",
+ "假",
+ "穿",
+ "执",
+ "答",
+ "乐",
+ "谁",
+ "顺",
+ "烟",
+ "缩",
+ "征",
+ "脸",
+ "喜",
+ "松",
+ "脚",
+ "困",
+ "异",
+ "免",
+ "背",
+ "星",
+ "福",
+ "买",
+ "染",
+ "井",
+ "概",
+ "慢",
+ "怕",
+ "磁",
+ "倍",
+ "祖",
+ "皇",
+ "促",
+ "静",
+ "补",
+ "评",
+ "翻",
+ "肉",
+ "践",
+ "尼",
+ "衣",
+ "宽",
+ "扬",
+ "棉",
+ "希",
+ "伤",
+ "操",
+ "垂",
+ "秋",
+ "宜",
+ "氢",
+ "套",
+ "督",
+ "振",
+ "架",
+ "亮",
+ "末",
+ "宪",
+ "庆",
+ "编",
+ "牛",
+ "触",
+ "映",
+ "雷",
+ "销",
+ "诗",
+ "座",
+ "居",
+ "抓",
+ "裂",
+ "胞",
+ "呼",
+ "娘",
+ "景",
+ "威",
+ "绿",
+ "晶",
+ "厚",
+ "盟",
+ "衡",
+ "鸡",
+ "孙",
+ "延",
+ "危",
+ "胶",
+ "屋",
+ "乡",
+ "临",
+ "陆",
+ "顾",
+ "掉",
+ "呀",
+ "灯",
+ "岁",
+ "措",
+ "束",
+ "耐",
+ "剧",
+ "玉",
+ "赵",
+ "跳",
+ "哥",
+ "季",
+ "课",
+ "凯",
+ "胡",
+ "额",
+ "款",
+ "绍",
+ "卷",
+ "齐",
+ "伟",
+ "蒸",
+ "殖",
+ "永",
+ "宗",
+ "苗",
+ "川",
+ "炉",
+ "岩",
+ "弱",
+ "零",
+ "杨",
+ "奏",
+ "沿",
+ "露",
+ "杆",
+ "探",
+ "滑",
+ "镇",
+ "饭",
+ "浓",
+ "航",
+ "怀",
+ "赶",
+ "库",
+ "夺",
+ "伊",
+ "灵",
+ "税",
+ "途",
+ "灭",
+ "赛",
+ "归",
+ "召",
+ "鼓",
+ "播",
+ "盘",
+ "裁",
+ "险",
+ "康",
+ "唯",
+ "录",
+ "菌",
+ "纯",
+ "借",
+ "糖",
+ "盖",
+ "横",
+ "符",
+ "私",
+ "努",
+ "堂",
+ "域",
+ "枪",
+ "润",
+ "幅",
+ "哈",
+ "竟",
+ "熟",
+ "虫",
+ "泽",
+ "脑",
+ "壤",
+ "碳",
+ "欧",
+ "遍",
+ "侧",
+ "寨",
+ "敢",
+ "彻",
+ "虑",
+ "斜",
+ "薄",
+ "庭",
+ "纳",
+ "弹",
+ "饲",
+ "伸",
+ "折",
+ "麦",
+ "湿",
+ "暗",
+ "荷",
+ "瓦",
+ "塞",
+ "床",
+ "筑",
+ "恶",
+ "户",
+ "访",
+ "塔",
+ "奇",
+ "透",
+ "梁",
+ "刀",
+ "旋",
+ "迹",
+ "卡",
+ "氯",
+ "遇",
+ "份",
+ "毒",
+ "泥",
+ "退",
+ "洗",
+ "摆",
+ "灰",
+ "彩",
+ "卖",
+ "耗",
+ "夏",
+ "择",
+ "忙",
+ "铜",
+ "献",
+ "硬",
+ "予",
+ "繁",
+ "圈",
+ "雪",
+ "函",
+ "亦",
+ "抽",
+ "篇",
+ "阵",
+ "阴",
+ "丁",
+ "尺",
+ "追",
+ "堆",
+ "雄",
+ "迎",
+ "泛",
+ "爸",
+ "楼",
+ "避",
+ "谋",
+ "吨",
+ "野",
+ "猪",
+ "旗",
+ "累",
+ "偏",
+ "典",
+ "馆",
+ "索",
+ "秦",
+ "脂",
+ "潮",
+ "爷",
+ "豆",
+ "忽",
+ "托",
+ "惊",
+ "塑",
+ "遗",
+ "愈",
+ "朱",
+ "替",
+ "纤",
+ "粗",
+ "倾",
+ "尚",
+ "痛",
+ "楚",
+ "谢",
+ "奋",
+ "购",
+ "磨",
+ "君",
+ "池",
+ "旁",
+ "碎",
+ "骨",
+ "监",
+ "捕",
+ "弟",
+ "暴",
+ "割",
+ "贯",
+ "殊",
+ "释",
+ "词",
+ "亡",
+ "壁",
+ "顿",
+ "宝",
+ "午",
+ "尘",
+ "闻",
+ "揭",
+ "炮",
+ "残",
+ "冬",
+ "桥",
+ "妇",
+ "警",
+ "综",
+ "招",
+ "吴",
+ "付",
+ "浮",
+ "遭",
+ "徐",
+ "您",
+ "摇",
+ "谷",
+ "赞",
+ "箱",
+ "隔",
+ "订",
+ "男",
+ "吹",
+ "园",
+ "纷",
+ "唐",
+ "败",
+ "宋",
+ "玻",
+ "巨",
+ "耕",
+ "坦",
+ "荣",
+ "闭",
+ "湾",
+ "键",
+ "凡",
+ "驻",
+ "锅",
+ "救",
+ "恩",
+ "剥",
+ "凝",
+ "碱",
+ "齿",
+ "截",
+ "炼",
+ "麻",
+ "纺",
+ "禁",
+ "废",
+ "盛",
+ "版",
+ "缓",
+ "净",
+ "睛",
+ "昌",
+ "婚",
+ "涉",
+ "筒",
+ "嘴",
+ "插",
+ "岸",
+ "朗",
+ "庄",
+ "街",
+ "藏",
+ "姑",
+ "贸",
+ "腐",
+ "奴",
+ "啦",
+ "惯",
+ "乘",
+ "伙",
+ "恢",
+ "匀",
+ "纱",
+ "扎",
+ "辩",
+ "耳",
+ "彪",
+ "臣",
+ "亿",
+ "璃",
+ "抵",
+ "脉",
+ "秀",
+ "萨",
+ "俄",
+ "网",
+ "舞",
+ "店",
+ "喷",
+ "纵",
+ "寸",
+ "汗",
+ "挂",
+ "洪",
+ "贺",
+ "闪",
+ "柬",
+ "爆",
+ "烯",
+ "津",
+ "稻",
+ "墙",
+ "软",
+ "勇",
+ "像",
+ "滚",
+ "厘",
+ "蒙",
+ "芳",
+ "肯",
+ "坡",
+ "柱",
+ "荡",
+ "腿",
+ "仪",
+ "旅",
+ "尾",
+ "轧",
+ "冰",
+ "贡",
+ "登",
+ "黎",
+ "削",
+ "钻",
+ "勒",
+ "逃",
+ "障",
+ "氨",
+ "郭",
+ "峰",
+ "币",
+ "港",
+ "伏",
+ "轨",
+ "亩",
+ "毕",
+ "擦",
+ "莫",
+ "刺",
+ "浪",
+ "秘",
+ "援",
+ "株",
+ "健",
+ "售",
+ "股",
+ "岛",
+ "甘",
+ "泡",
+ "睡",
+ "童",
+ "铸",
+ "汤",
+ "阀",
+ "休",
+ "汇",
+ "舍",
+ "牧",
+ "绕",
+ "炸",
+ "哲",
+ "磷",
+ "绩",
+ "朋",
+ "淡",
+ "尖",
+ "启",
+ "陷",
+ "柴",
+ "呈",
+ "徒",
+ "颜",
+ "泪",
+ "稍",
+ "忘",
+ "泵",
+ "蓝",
+ "拖",
+ "洞",
+ "授",
+ "镜",
+ "辛",
+ "壮",
+ "锋",
+ "贫",
+ "虚",
+ "弯",
+ "摩",
+ "泰",
+ "幼",
+ "廷",
+ "尊",
+ "窗",
+ "纲",
+ "弄",
+ "隶",
+ "疑",
+ "氏",
+ "宫",
+ "姐",
+ "震",
+ "瑞",
+ "怪",
+ "尤",
+ "琴",
+ "循",
+ "描",
+ "膜",
+ "违",
+ "夹",
+ "腰",
+ "缘",
+ "珠",
+ "穷",
+ "森",
+ "枝",
+ "竹",
+ "沟",
+ "催",
+ "绳",
+ "忆",
+ "邦",
+ "剩",
+ "幸",
+ "浆",
+ "栏",
+ "拥",
+ "牙",
+ "贮",
+ "礼",
+ "滤",
+ "钠",
+ "纹",
+ "罢",
+ "拍",
+ "咱",
+ "喊",
+ "袖",
+ "埃",
+ "勤",
+ "罚",
+ "焦",
+ "潜",
+ "伍",
+ "墨",
+ "欲",
+ "缝",
+ "姓",
+ "刊",
+ "饱",
+ "仿",
+ "奖",
+ "铝",
+ "鬼",
+ "丽",
+ "跨",
+ "默",
+ "挖",
+ "链",
+ "扫",
+ "喝",
+ "袋",
+ "炭",
+ "污",
+ "幕",
+ "诸",
+ "弧",
+ "励",
+ "梅",
+ "奶",
+ "洁",
+ "灾",
+ "舟",
+ "鉴",
+ "苯",
+ "讼",
+ "抱",
+ "毁",
+ "懂",
+ "寒",
+ "智",
+ "埔",
+ "寄",
+ "届",
+ "跃",
+ "渡",
+ "挑",
+ "丹",
+ "艰",
+ "贝",
+ "碰",
+ "拔",
+ "爹",
+ "戴",
+ "码",
+ "梦",
+ "芽",
+ "熔",
+ "赤",
+ "渔",
+ "哭",
+ "敬",
+ "颗",
+ "奔",
+ "铅",
+ "仲",
+ "虎",
+ "稀",
+ "妹",
+ "乏",
+ "珍",
+ "申",
+ "桌",
+ "遵",
+ "允",
+ "隆",
+ "螺",
+ "仓",
+ "魏",
+ "锐",
+ "晓",
+ "氮",
+ "兼",
+ "隐",
+ "碍",
+ "赫",
+ "拨",
+ "忠",
+ "肃",
+ "缸",
+ "牵",
+ "抢",
+ "博",
+ "巧",
+ "壳",
+ "兄",
+ "杜",
+ "讯",
+ "诚",
+ "碧",
+ "祥",
+ "柯",
+ "页",
+ "巡",
+ "矩",
+ "悲",
+ "灌",
+ "龄",
+ "伦",
+ "票",
+ "寻",
+ "桂",
+ "铺",
+ "圣",
+ "恐",
+ "恰",
+ "郑",
+ "趣",
+ "抬",
+ "荒",
+ "腾",
+ "贴",
+ "柔",
+ "滴",
+ "猛",
+ "阔",
+ "辆",
+ "妻",
+ "填",
+ "撤",
+ "储",
+ "签",
+ "闹",
+ "扰",
+ "紫",
+ "砂",
+ "递",
+ "戏",
+ "吊",
+ "陶",
+ "伐",
+ "喂",
+ "疗",
+ "瓶",
+ "婆",
+ "抚",
+ "臂",
+ "摸",
+ "忍",
+ "虾",
+ "蜡",
+ "邻",
+ "胸",
+ "巩",
+ "挤",
+ "偶",
+ "弃",
+ "槽",
+ "劲",
+ "乳",
+ "邓",
+ "吉",
+ "仁",
+ "烂",
+ "砖",
+ "租",
+ "乌",
+ "舰",
+ "伴",
+ "瓜",
+ "浅",
+ "丙",
+ "暂",
+ "燥",
+ "橡",
+ "柳",
+ "迷",
+ "暖",
+ "牌",
+ "秧",
+ "胆",
+ "详",
+ "簧",
+ "踏",
+ "瓷",
+ "谱",
+ "呆",
+ "宾",
+ "糊",
+ "洛",
+ "辉",
+ "愤",
+ "竞",
+ "隙",
+ "怒",
+ "粘",
+ "乃",
+ "绪",
+ "肩",
+ "籍",
+ "敏",
+ "涂",
+ "熙",
+ "皆",
+ "侦",
+ "悬",
+ "掘",
+ "享",
+ "纠",
+ "醒",
+ "狂",
+ "锁",
+ "淀",
+ "恨",
+ "牲",
+ "霸",
+ "爬",
+ "赏",
+ "逆",
+ "玩",
+ "陵",
+ "祝",
+ "秒",
+ "浙",
+ "貌",
+ "役",
+ "彼",
+ "悉",
+ "鸭",
+ "趋",
+ "凤",
+ "晨",
+ "畜",
+ "辈",
+ "秩",
+ "卵",
+ "署",
+ "梯",
+ "炎",
+ "滩",
+ "棋",
+ "驱",
+ "筛",
+ "峡",
+ "冒",
+ "啥",
+ "寿",
+ "译",
+ "浸",
+ "泉",
+ "帽",
+ "迟",
+ "硅",
+ "疆",
+ "贷",
+ "漏",
+ "稿",
+ "冠",
+ "嫩",
+ "胁",
+ "芯",
+ "牢",
+ "叛",
+ "蚀",
+ "奥",
+ "鸣",
+ "岭",
+ "羊",
+ "凭",
+ "串",
+ "塘",
+ "绘",
+ "酵",
+ "融",
+ "盆",
+ "锡",
+ "庙",
+ "筹",
+ "冻",
+ "辅",
+ "摄",
+ "袭",
+ "筋",
+ "拒",
+ "僚",
+ "旱",
+ "钾",
+ "鸟",
+ "漆",
+ "沈",
+ "眉",
+ "疏",
+ "添",
+ "棒",
+ "穗",
+ "硝",
+ "韩",
+ "逼",
+ "扭",
+ "侨",
+ "凉",
+ "挺",
+ "碗",
+ "栽",
+ "炒",
+ "杯",
+ "患",
+ "馏",
+ "劝",
+ "豪",
+ "辽",
+ "勃",
+ "鸿",
+ "旦",
+ "吏",
+ "拜",
+ "狗",
+ "埋",
+ "辊",
+ "掩",
+ "饮",
+ "搬",
+ "骂",
+ "辞",
+ "勾",
+ "扣",
+ "估",
+ "蒋",
+ "绒",
+ "雾",
+ "丈",
+ "朵",
+ "姆",
+ "拟",
+ "宇",
+ "辑",
+ "陕",
+ "雕",
+ "偿",
+ "蓄",
+ "崇",
+ "剪",
+ "倡",
+ "厅",
+ "咬",
+ "驶",
+ "薯",
+ "刷",
+ "斥",
+ "番",
+ "赋",
+ "奉",
+ "佛",
+ "浇",
+ "漫",
+ "曼",
+ "扇",
+ "钙",
+ "桃",
+ "扶",
+ "仔",
+ "返",
+ "俗",
+ "亏",
+ "腔",
+ "鞋",
+ "棱",
+ "覆",
+ "框",
+ "悄",
+ "叔",
+ "撞",
+ "骗",
+ "勘",
+ "旺",
+ "沸",
+ "孤",
+ "吐",
+ "孟",
+ "渠",
+ "屈",
+ "疾",
+ "妙",
+ "惜",
+ "仰",
+ "狠",
+ "胀",
+ "谐",
+ "抛",
+ "霉",
+ "桑",
+ "岗",
+ "嘛",
+ "衰",
+ "盗",
+ "渗",
+ "脏",
+ "赖",
+ "涌",
+ "甜",
+ "曹",
+ "阅",
+ "肌",
+ "哩",
+ "厉",
+ "烃",
+ "纬",
+ "毅",
+ "昨",
+ "伪",
+ "症",
+ "煮",
+ "叹",
+ "钉",
+ "搭",
+ "茎",
+ "笼",
+ "酷",
+ "偷",
+ "弓",
+ "锥",
+ "恒",
+ "杰",
+ "坑",
+ "鼻",
+ "翼",
+ "纶",
+ "叙",
+ "狱",
+ "逮",
+ "罐",
+ "络",
+ "棚",
+ "抑",
+ "膨",
+ "蔬",
+ "寺",
+ "骤",
+ "穆",
+ "冶",
+ "枯",
+ "册",
+ "尸",
+ "凸",
+ "绅",
+ "坯",
+ "牺",
+ "焰",
+ "轰",
+ "欣",
+ "晋",
+ "瘦",
+ "御",
+ "锭",
+ "锦",
+ "丧",
+ "旬",
+ "锻",
+ "垄",
+ "搜",
+ "扑",
+ "邀",
+ "亭",
+ "酯",
+ "迈",
+ "舒",
+ "脆",
+ "酶",
+ "闲",
+ "忧",
+ "酚",
+ "顽",
+ "羽",
+ "涨",
+ "卸",
+ "仗",
+ "陪",
+ "辟",
+ "惩",
+ "杭",
+ "姚",
+ "肚",
+ "捉",
+ "飘",
+ "漂",
+ "昆",
+ "欺",
+ "吾",
+ "郎",
+ "烷",
+ "汁",
+ "呵",
+ "饰",
+ "萧",
+ "雅",
+ "邮",
+ "迁",
+ "燕",
+ "撒",
+ "姻",
+ "赴",
+ "宴",
+ "烦",
+ "债",
+ "帐",
+ "斑",
+ "铃",
+ "旨",
+ "醇",
+ "董",
+ "饼",
+ "雏",
+ "姿",
+ "拌",
+ "傅",
+ "腹",
+ "妥",
+ "揉",
+ "贤",
+ "拆",
+ "歪",
+ "葡",
+ "胺",
+ "丢",
+ "浩",
+ "徽",
+ "昂",
+ "垫",
+ "挡",
+ "览",
+ "贪",
+ "慰",
+ "缴",
+ "汪",
+ "慌",
+ "冯",
+ "诺",
+ "姜",
+ "谊",
+ "凶",
+ "劣",
+ "诬",
+ "耀",
+ "昏",
+ "躺",
+ "盈",
+ "骑",
+ "乔",
+ "溪",
+ "丛",
+ "卢",
+ "抹",
+ "闷",
+ "咨",
+ "刮",
+ "驾",
+ "缆",
+ "悟",
+ "摘",
+ "铒",
+ "掷",
+ "颇",
+ "幻",
+ "柄",
+ "惠",
+ "惨",
+ "佳",
+ "仇",
+ "腊",
+ "窝",
+ "涤",
+ "剑",
+ "瞧",
+ "堡",
+ "泼",
+ "葱",
+ "罩",
+ "霍",
+ "捞",
+ "胎",
+ "苍",
+ "滨",
+ "俩",
+ "捅",
+ "湘",
+ "砍",
+ "霞",
+ "邵",
+ "萄",
+ "疯",
+ "淮",
+ "遂",
+ "熊",
+ "粪",
+ "烘",
+ "宿",
+ "档",
+ "戈",
+ "驳",
+ "嫂",
+ "裕",
+ "徙",
+ "箭",
+ "捐",
+ "肠",
+ "撑",
+ "晒",
+ "辨",
+ "殿",
+ "莲",
+ "摊",
+ "搅",
+ "酱",
+ "屏",
+ "疫",
+ "哀",
+ "蔡",
+ "堵",
+ "沫",
+ "皱",
+ "畅",
+ "叠",
+ "阁",
+ "莱",
+ "敲",
+ "辖",
+ "钩",
+ "痕",
+ "坝",
+ "巷",
+ "饿",
+ "祸",
+ "丘",
+ "玄",
+ "溜",
+ "曰",
+ "逻",
+ "彭",
+ "尝",
+ "卿",
+ "妨",
+ "艇",
+ "吞",
+ "韦",
+ "怨",
+ "矮",
+ "歇"
+ )
+}
diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt
new file mode 100644
index 000000000..66e6f5ab0
--- /dev/null
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeSpanish.kt
@@ -0,0 +1,2060 @@
+package io.iohk.atala.prism.apollo.utils.bip39.wordlists
+
+import kotlin.js.ExperimentalJsExport
+import kotlin.js.JsExport
+
+@OptIn(ExperimentalJsExport::class)
+@JsExport
+internal object MnemonicCodeSpanish {
+ val wordList: List =
+ listOf(
+ "ábaco",
+ "abdomen",
+ "abeja",
+ "abierto",
+ "abogado",
+ "abono",
+ "aborto",
+ "abrazo",
+ "abrir",
+ "abuelo",
+ "abuso",
+ "acabar",
+ "academia",
+ "acceso",
+ "acción",
+ "aceite",
+ "acelga",
+ "acento",
+ "aceptar",
+ "ácido",
+ "aclarar",
+ "acné",
+ "acoger",
+ "acoso",
+ "activo",
+ "acto",
+ "actriz",
+ "actuar",
+ "acudir",
+ "acuerdo",
+ "acusar",
+ "adicto",
+ "admitir",
+ "adoptar",
+ "adorno",
+ "aduana",
+ "adulto",
+ "aéreo",
+ "afectar",
+ "afición",
+ "afinar",
+ "afirmar",
+ "ágil",
+ "agitar",
+ "agonía",
+ "agosto",
+ "agotar",
+ "agregar",
+ "agrio",
+ "agua",
+ "agudo",
+ "águila",
+ "aguja",
+ "ahogo",
+ "ahorro",
+ "aire",
+ "aislar",
+ "ajedrez",
+ "ajeno",
+ "ajuste",
+ "alacrán",
+ "alambre",
+ "alarma",
+ "alba",
+ "álbum",
+ "alcalde",
+ "aldea",
+ "alegre",
+ "alejar",
+ "alerta",
+ "aleta",
+ "alfiler",
+ "alga",
+ "algodón",
+ "aliado",
+ "aliento",
+ "alivio",
+ "alma",
+ "almeja",
+ "almíbar",
+ "altar",
+ "alteza",
+ "altivo",
+ "alto",
+ "altura",
+ "alumno",
+ "alzar",
+ "amable",
+ "amante",
+ "amapola",
+ "amargo",
+ "amasar",
+ "ámbar",
+ "ámbito",
+ "ameno",
+ "amigo",
+ "amistad",
+ "amor",
+ "amparo",
+ "amplio",
+ "ancho",
+ "anciano",
+ "ancla",
+ "andar",
+ "andén",
+ "anemia",
+ "ángulo",
+ "anillo",
+ "ánimo",
+ "anís",
+ "anotar",
+ "antena",
+ "antiguo",
+ "antojo",
+ "anual",
+ "anular",
+ "anuncio",
+ "añadir",
+ "añejo",
+ "año",
+ "apagar",
+ "aparato",
+ "apetito",
+ "apio",
+ "aplicar",
+ "apodo",
+ "aporte",
+ "apoyo",
+ "aprender",
+ "aprobar",
+ "apuesta",
+ "apuro",
+ "arado",
+ "araña",
+ "arar",
+ "árbitro",
+ "árbol",
+ "arbusto",
+ "archivo",
+ "arco",
+ "arder",
+ "ardilla",
+ "arduo",
+ "área",
+ "árido",
+ "aries",
+ "armonía",
+ "arnés",
+ "aroma",
+ "arpa",
+ "arpón",
+ "arreglo",
+ "arroz",
+ "arruga",
+ "arte",
+ "artista",
+ "asa",
+ "asado",
+ "asalto",
+ "ascenso",
+ "asegurar",
+ "aseo",
+ "asesor",
+ "asiento",
+ "asilo",
+ "asistir",
+ "asno",
+ "asombro",
+ "áspero",
+ "astilla",
+ "astro",
+ "astuto",
+ "asumir",
+ "asunto",
+ "atajo",
+ "ataque",
+ "atar",
+ "atento",
+ "ateo",
+ "ático",
+ "atleta",
+ "átomo",
+ "atraer",
+ "atroz",
+ "atún",
+ "audaz",
+ "audio",
+ "auge",
+ "aula",
+ "aumento",
+ "ausente",
+ "autor",
+ "aval",
+ "avance",
+ "avaro",
+ "ave",
+ "avellana",
+ "avena",
+ "avestruz",
+ "avión",
+ "aviso",
+ "ayer",
+ "ayuda",
+ "ayuno",
+ "azafrán",
+ "azar",
+ "azote",
+ "azúcar",
+ "azufre",
+ "azul",
+ "baba",
+ "babor",
+ "bache",
+ "bahía",
+ "baile",
+ "bajar",
+ "balanza",
+ "balcón",
+ "balde",
+ "bambú",
+ "banco",
+ "banda",
+ "baño",
+ "barba",
+ "barco",
+ "barniz",
+ "barro",
+ "báscula",
+ "bastón",
+ "basura",
+ "batalla",
+ "batería",
+ "batir",
+ "batuta",
+ "baúl",
+ "bazar",
+ "bebé",
+ "bebida",
+ "bello",
+ "besar",
+ "beso",
+ "bestia",
+ "bicho",
+ "bien",
+ "bingo",
+ "blanco",
+ "bloque",
+ "blusa",
+ "boa",
+ "bobina",
+ "bobo",
+ "boca",
+ "bocina",
+ "boda",
+ "bodega",
+ "boina",
+ "bola",
+ "bolero",
+ "bolsa",
+ "bomba",
+ "bondad",
+ "bonito",
+ "bono",
+ "bonsái",
+ "borde",
+ "borrar",
+ "bosque",
+ "bote",
+ "botín",
+ "bóveda",
+ "bozal",
+ "bravo",
+ "brazo",
+ "brecha",
+ "breve",
+ "brillo",
+ "brinco",
+ "brisa",
+ "broca",
+ "broma",
+ "bronce",
+ "brote",
+ "bruja",
+ "brusco",
+ "bruto",
+ "buceo",
+ "bucle",
+ "bueno",
+ "buey",
+ "bufanda",
+ "bufón",
+ "búho",
+ "buitre",
+ "bulto",
+ "burbuja",
+ "burla",
+ "burro",
+ "buscar",
+ "butaca",
+ "buzón",
+ "caballo",
+ "cabeza",
+ "cabina",
+ "cabra",
+ "cacao",
+ "cadáver",
+ "cadena",
+ "caer",
+ "café",
+ "caída",
+ "caimán",
+ "caja",
+ "cajón",
+ "cal",
+ "calamar",
+ "calcio",
+ "caldo",
+ "calidad",
+ "calle",
+ "calma",
+ "calor",
+ "calvo",
+ "cama",
+ "cambio",
+ "camello",
+ "camino",
+ "campo",
+ "cáncer",
+ "candil",
+ "canela",
+ "canguro",
+ "canica",
+ "canto",
+ "caña",
+ "cañón",
+ "caoba",
+ "caos",
+ "capaz",
+ "capitán",
+ "capote",
+ "captar",
+ "capucha",
+ "cara",
+ "carbón",
+ "cárcel",
+ "careta",
+ "carga",
+ "cariño",
+ "carne",
+ "carpeta",
+ "carro",
+ "carta",
+ "casa",
+ "casco",
+ "casero",
+ "caspa",
+ "castor",
+ "catorce",
+ "catre",
+ "caudal",
+ "causa",
+ "cazo",
+ "cebolla",
+ "ceder",
+ "cedro",
+ "celda",
+ "célebre",
+ "celoso",
+ "célula",
+ "cemento",
+ "ceniza",
+ "centro",
+ "cerca",
+ "cerdo",
+ "cereza",
+ "cero",
+ "cerrar",
+ "certeza",
+ "césped",
+ "cetro",
+ "chacal",
+ "chaleco",
+ "champú",
+ "chancla",
+ "chapa",
+ "charla",
+ "chico",
+ "chiste",
+ "chivo",
+ "choque",
+ "choza",
+ "chuleta",
+ "chupar",
+ "ciclón",
+ "ciego",
+ "cielo",
+ "cien",
+ "cierto",
+ "cifra",
+ "cigarro",
+ "cima",
+ "cinco",
+ "cine",
+ "cinta",
+ "ciprés",
+ "circo",
+ "ciruela",
+ "cisne",
+ "cita",
+ "ciudad",
+ "clamor",
+ "clan",
+ "claro",
+ "clase",
+ "clave",
+ "cliente",
+ "clima",
+ "clínica",
+ "cobre",
+ "cocción",
+ "cochino",
+ "cocina",
+ "coco",
+ "código",
+ "codo",
+ "cofre",
+ "coger",
+ "cohete",
+ "cojín",
+ "cojo",
+ "cola",
+ "colcha",
+ "colegio",
+ "colgar",
+ "colina",
+ "collar",
+ "colmo",
+ "columna",
+ "combate",
+ "comer",
+ "comida",
+ "cómodo",
+ "compra",
+ "conde",
+ "conejo",
+ "conga",
+ "conocer",
+ "consejo",
+ "contar",
+ "copa",
+ "copia",
+ "corazón",
+ "corbata",
+ "corcho",
+ "cordón",
+ "corona",
+ "correr",
+ "coser",
+ "cosmos",
+ "costa",
+ "cráneo",
+ "cráter",
+ "crear",
+ "crecer",
+ "creído",
+ "crema",
+ "cría",
+ "crimen",
+ "cripta",
+ "crisis",
+ "cromo",
+ "crónica",
+ "croqueta",
+ "crudo",
+ "cruz",
+ "cuadro",
+ "cuarto",
+ "cuatro",
+ "cubo",
+ "cubrir",
+ "cuchara",
+ "cuello",
+ "cuento",
+ "cuerda",
+ "cuesta",
+ "cueva",
+ "cuidar",
+ "culebra",
+ "culpa",
+ "culto",
+ "cumbre",
+ "cumplir",
+ "cuna",
+ "cuneta",
+ "cuota",
+ "cupón",
+ "cúpula",
+ "curar",
+ "curioso",
+ "curso",
+ "curva",
+ "cutis",
+ "dama",
+ "danza",
+ "dar",
+ "dardo",
+ "dátil",
+ "deber",
+ "débil",
+ "década",
+ "decir",
+ "dedo",
+ "defensa",
+ "definir",
+ "dejar",
+ "delfín",
+ "delgado",
+ "delito",
+ "demora",
+ "denso",
+ "dental",
+ "deporte",
+ "derecho",
+ "derrota",
+ "desayuno",
+ "deseo",
+ "desfile",
+ "desnudo",
+ "destino",
+ "desvío",
+ "detalle",
+ "detener",
+ "deuda",
+ "día",
+ "diablo",
+ "diadema",
+ "diamante",
+ "diana",
+ "diario",
+ "dibujo",
+ "dictar",
+ "diente",
+ "dieta",
+ "diez",
+ "difícil",
+ "digno",
+ "dilema",
+ "diluir",
+ "dinero",
+ "directo",
+ "dirigir",
+ "disco",
+ "diseño",
+ "disfraz",
+ "diva",
+ "divino",
+ "doble",
+ "doce",
+ "dolor",
+ "domingo",
+ "don",
+ "donar",
+ "dorado",
+ "dormir",
+ "dorso",
+ "dos",
+ "dosis",
+ "dragón",
+ "droga",
+ "ducha",
+ "duda",
+ "duelo",
+ "dueño",
+ "dulce",
+ "dúo",
+ "duque",
+ "durar",
+ "dureza",
+ "duro",
+ "ébano",
+ "ebrio",
+ "echar",
+ "eco",
+ "ecuador",
+ "edad",
+ "edición",
+ "edificio",
+ "editor",
+ "educar",
+ "efecto",
+ "eficaz",
+ "eje",
+ "ejemplo",
+ "elefante",
+ "elegir",
+ "elemento",
+ "elevar",
+ "elipse",
+ "élite",
+ "elixir",
+ "elogio",
+ "eludir",
+ "embudo",
+ "emitir",
+ "emoción",
+ "empate",
+ "empeño",
+ "empleo",
+ "empresa",
+ "enano",
+ "encargo",
+ "enchufe",
+ "encía",
+ "enemigo",
+ "enero",
+ "enfado",
+ "enfermo",
+ "engaño",
+ "enigma",
+ "enlace",
+ "enorme",
+ "enredo",
+ "ensayo",
+ "enseñar",
+ "entero",
+ "entrar",
+ "envase",
+ "envío",
+ "época",
+ "equipo",
+ "erizo",
+ "escala",
+ "escena",
+ "escolar",
+ "escribir",
+ "escudo",
+ "esencia",
+ "esfera",
+ "esfuerzo",
+ "espada",
+ "espejo",
+ "espía",
+ "esposa",
+ "espuma",
+ "esquí",
+ "estar",
+ "este",
+ "estilo",
+ "estufa",
+ "etapa",
+ "eterno",
+ "ética",
+ "etnia",
+ "evadir",
+ "evaluar",
+ "evento",
+ "evitar",
+ "exacto",
+ "examen",
+ "exceso",
+ "excusa",
+ "exento",
+ "exigir",
+ "exilio",
+ "existir",
+ "éxito",
+ "experto",
+ "explicar",
+ "exponer",
+ "extremo",
+ "fábrica",
+ "fábula",
+ "fachada",
+ "fácil",
+ "factor",
+ "faena",
+ "faja",
+ "falda",
+ "fallo",
+ "falso",
+ "faltar",
+ "fama",
+ "familia",
+ "famoso",
+ "faraón",
+ "farmacia",
+ "farol",
+ "farsa",
+ "fase",
+ "fatiga",
+ "fauna",
+ "favor",
+ "fax",
+ "febrero",
+ "fecha",
+ "feliz",
+ "feo",
+ "feria",
+ "feroz",
+ "fértil",
+ "fervor",
+ "festín",
+ "fiable",
+ "fianza",
+ "fiar",
+ "fibra",
+ "ficción",
+ "ficha",
+ "fideo",
+ "fiebre",
+ "fiel",
+ "fiera",
+ "fiesta",
+ "figura",
+ "fijar",
+ "fijo",
+ "fila",
+ "filete",
+ "filial",
+ "filtro",
+ "fin",
+ "finca",
+ "fingir",
+ "finito",
+ "firma",
+ "flaco",
+ "flauta",
+ "flecha",
+ "flor",
+ "flota",
+ "fluir",
+ "flujo",
+ "flúor",
+ "fobia",
+ "foca",
+ "fogata",
+ "fogón",
+ "folio",
+ "folleto",
+ "fondo",
+ "forma",
+ "forro",
+ "fortuna",
+ "forzar",
+ "fosa",
+ "foto",
+ "fracaso",
+ "frágil",
+ "franja",
+ "frase",
+ "fraude",
+ "freír",
+ "freno",
+ "fresa",
+ "frío",
+ "frito",
+ "fruta",
+ "fuego",
+ "fuente",
+ "fuerza",
+ "fuga",
+ "fumar",
+ "función",
+ "funda",
+ "furgón",
+ "furia",
+ "fusil",
+ "fútbol",
+ "futuro",
+ "gacela",
+ "gafas",
+ "gaita",
+ "gajo",
+ "gala",
+ "galería",
+ "gallo",
+ "gamba",
+ "ganar",
+ "gancho",
+ "ganga",
+ "ganso",
+ "garaje",
+ "garza",
+ "gasolina",
+ "gastar",
+ "gato",
+ "gavilán",
+ "gemelo",
+ "gemir",
+ "gen",
+ "género",
+ "genio",
+ "gente",
+ "geranio",
+ "gerente",
+ "germen",
+ "gesto",
+ "gigante",
+ "gimnasio",
+ "girar",
+ "giro",
+ "glaciar",
+ "globo",
+ "gloria",
+ "gol",
+ "golfo",
+ "goloso",
+ "golpe",
+ "goma",
+ "gordo",
+ "gorila",
+ "gorra",
+ "gota",
+ "goteo",
+ "gozar",
+ "grada",
+ "gráfico",
+ "grano",
+ "grasa",
+ "gratis",
+ "grave",
+ "grieta",
+ "grillo",
+ "gripe",
+ "gris",
+ "grito",
+ "grosor",
+ "grúa",
+ "grueso",
+ "grumo",
+ "grupo",
+ "guante",
+ "guapo",
+ "guardia",
+ "guerra",
+ "guía",
+ "guiño",
+ "guion",
+ "guiso",
+ "guitarra",
+ "gusano",
+ "gustar",
+ "haber",
+ "hábil",
+ "hablar",
+ "hacer",
+ "hacha",
+ "hada",
+ "hallar",
+ "hamaca",
+ "harina",
+ "haz",
+ "hazaña",
+ "hebilla",
+ "hebra",
+ "hecho",
+ "helado",
+ "helio",
+ "hembra",
+ "herir",
+ "hermano",
+ "héroe",
+ "hervir",
+ "hielo",
+ "hierro",
+ "hígado",
+ "higiene",
+ "hijo",
+ "himno",
+ "historia",
+ "hocico",
+ "hogar",
+ "hoguera",
+ "hoja",
+ "hombre",
+ "hongo",
+ "honor",
+ "honra",
+ "hora",
+ "hormiga",
+ "horno",
+ "hostil",
+ "hoyo",
+ "hueco",
+ "huelga",
+ "huerta",
+ "hueso",
+ "huevo",
+ "huida",
+ "huir",
+ "humano",
+ "húmedo",
+ "humilde",
+ "humo",
+ "hundir",
+ "huracán",
+ "hurto",
+ "icono",
+ "ideal",
+ "idioma",
+ "ídolo",
+ "iglesia",
+ "iglú",
+ "igual",
+ "ilegal",
+ "ilusión",
+ "imagen",
+ "imán",
+ "imitar",
+ "impar",
+ "imperio",
+ "imponer",
+ "impulso",
+ "incapaz",
+ "índice",
+ "inerte",
+ "infiel",
+ "informe",
+ "ingenio",
+ "inicio",
+ "inmenso",
+ "inmune",
+ "innato",
+ "insecto",
+ "instante",
+ "interés",
+ "íntimo",
+ "intuir",
+ "inútil",
+ "invierno",
+ "ira",
+ "iris",
+ "ironía",
+ "isla",
+ "islote",
+ "jabalí",
+ "jabón",
+ "jamón",
+ "jarabe",
+ "jardín",
+ "jarra",
+ "jaula",
+ "jazmín",
+ "jefe",
+ "jeringa",
+ "jinete",
+ "jornada",
+ "joroba",
+ "joven",
+ "joya",
+ "juerga",
+ "jueves",
+ "juez",
+ "jugador",
+ "jugo",
+ "juguete",
+ "juicio",
+ "junco",
+ "jungla",
+ "junio",
+ "juntar",
+ "júpiter",
+ "jurar",
+ "justo",
+ "juvenil",
+ "juzgar",
+ "kilo",
+ "koala",
+ "labio",
+ "lacio",
+ "lacra",
+ "lado",
+ "ladrón",
+ "lagarto",
+ "lágrima",
+ "laguna",
+ "laico",
+ "lamer",
+ "lámina",
+ "lámpara",
+ "lana",
+ "lancha",
+ "langosta",
+ "lanza",
+ "lápiz",
+ "largo",
+ "larva",
+ "lástima",
+ "lata",
+ "látex",
+ "latir",
+ "laurel",
+ "lavar",
+ "lazo",
+ "leal",
+ "lección",
+ "leche",
+ "lector",
+ "leer",
+ "legión",
+ "legumbre",
+ "lejano",
+ "lengua",
+ "lento",
+ "leña",
+ "león",
+ "leopardo",
+ "lesión",
+ "letal",
+ "letra",
+ "leve",
+ "leyenda",
+ "libertad",
+ "libro",
+ "licor",
+ "líder",
+ "lidiar",
+ "lienzo",
+ "liga",
+ "ligero",
+ "lima",
+ "límite",
+ "limón",
+ "limpio",
+ "lince",
+ "lindo",
+ "línea",
+ "lingote",
+ "lino",
+ "linterna",
+ "líquido",
+ "liso",
+ "lista",
+ "litera",
+ "litio",
+ "litro",
+ "llaga",
+ "llama",
+ "llanto",
+ "llave",
+ "llegar",
+ "llenar",
+ "llevar",
+ "llorar",
+ "llover",
+ "lluvia",
+ "lobo",
+ "loción",
+ "loco",
+ "locura",
+ "lógica",
+ "logro",
+ "lombriz",
+ "lomo",
+ "lonja",
+ "lote",
+ "lucha",
+ "lucir",
+ "lugar",
+ "lujo",
+ "luna",
+ "lunes",
+ "lupa",
+ "lustro",
+ "luto",
+ "luz",
+ "maceta",
+ "macho",
+ "madera",
+ "madre",
+ "maduro",
+ "maestro",
+ "mafia",
+ "magia",
+ "mago",
+ "maíz",
+ "maldad",
+ "maleta",
+ "malla",
+ "malo",
+ "mamá",
+ "mambo",
+ "mamut",
+ "manco",
+ "mando",
+ "manejar",
+ "manga",
+ "maniquí",
+ "manjar",
+ "mano",
+ "manso",
+ "manta",
+ "mañana",
+ "mapa",
+ "máquina",
+ "mar",
+ "marco",
+ "marea",
+ "marfil",
+ "margen",
+ "marido",
+ "mármol",
+ "marrón",
+ "martes",
+ "marzo",
+ "masa",
+ "máscara",
+ "masivo",
+ "matar",
+ "materia",
+ "matiz",
+ "matriz",
+ "máximo",
+ "mayor",
+ "mazorca",
+ "mecha",
+ "medalla",
+ "medio",
+ "médula",
+ "mejilla",
+ "mejor",
+ "melena",
+ "melón",
+ "memoria",
+ "menor",
+ "mensaje",
+ "mente",
+ "menú",
+ "mercado",
+ "merengue",
+ "mérito",
+ "mes",
+ "mesón",
+ "meta",
+ "meter",
+ "método",
+ "metro",
+ "mezcla",
+ "miedo",
+ "miel",
+ "miembro",
+ "miga",
+ "mil",
+ "milagro",
+ "militar",
+ "millón",
+ "mimo",
+ "mina",
+ "minero",
+ "mínimo",
+ "minuto",
+ "miope",
+ "mirar",
+ "misa",
+ "miseria",
+ "misil",
+ "mismo",
+ "mitad",
+ "mito",
+ "mochila",
+ "moción",
+ "moda",
+ "modelo",
+ "moho",
+ "mojar",
+ "molde",
+ "moler",
+ "molino",
+ "momento",
+ "momia",
+ "monarca",
+ "moneda",
+ "monja",
+ "monto",
+ "moño",
+ "morada",
+ "morder",
+ "moreno",
+ "morir",
+ "morro",
+ "morsa",
+ "mortal",
+ "mosca",
+ "mostrar",
+ "motivo",
+ "mover",
+ "móvil",
+ "mozo",
+ "mucho",
+ "mudar",
+ "mueble",
+ "muela",
+ "muerte",
+ "muestra",
+ "mugre",
+ "mujer",
+ "mula",
+ "muleta",
+ "multa",
+ "mundo",
+ "muñeca",
+ "mural",
+ "muro",
+ "músculo",
+ "museo",
+ "musgo",
+ "música",
+ "muslo",
+ "nácar",
+ "nación",
+ "nadar",
+ "naipe",
+ "naranja",
+ "nariz",
+ "narrar",
+ "nasal",
+ "natal",
+ "nativo",
+ "natural",
+ "náusea",
+ "naval",
+ "nave",
+ "navidad",
+ "necio",
+ "néctar",
+ "negar",
+ "negocio",
+ "negro",
+ "neón",
+ "nervio",
+ "neto",
+ "neutro",
+ "nevar",
+ "nevera",
+ "nicho",
+ "nido",
+ "niebla",
+ "nieto",
+ "niñez",
+ "niño",
+ "nítido",
+ "nivel",
+ "nobleza",
+ "noche",
+ "nómina",
+ "noria",
+ "norma",
+ "norte",
+ "nota",
+ "noticia",
+ "novato",
+ "novela",
+ "novio",
+ "nube",
+ "nuca",
+ "núcleo",
+ "nudillo",
+ "nudo",
+ "nuera",
+ "nueve",
+ "nuez",
+ "nulo",
+ "número",
+ "nutria",
+ "oasis",
+ "obeso",
+ "obispo",
+ "objeto",
+ "obra",
+ "obrero",
+ "observar",
+ "obtener",
+ "obvio",
+ "oca",
+ "ocaso",
+ "océano",
+ "ochenta",
+ "ocho",
+ "ocio",
+ "ocre",
+ "octavo",
+ "octubre",
+ "oculto",
+ "ocupar",
+ "ocurrir",
+ "odiar",
+ "odio",
+ "odisea",
+ "oeste",
+ "ofensa",
+ "oferta",
+ "oficio",
+ "ofrecer",
+ "ogro",
+ "oído",
+ "oír",
+ "ojo",
+ "ola",
+ "oleada",
+ "olfato",
+ "olivo",
+ "olla",
+ "olmo",
+ "olor",
+ "olvido",
+ "ombligo",
+ "onda",
+ "onza",
+ "opaco",
+ "opción",
+ "ópera",
+ "opinar",
+ "oponer",
+ "optar",
+ "óptica",
+ "opuesto",
+ "oración",
+ "orador",
+ "oral",
+ "órbita",
+ "orca",
+ "orden",
+ "oreja",
+ "órgano",
+ "orgía",
+ "orgullo",
+ "oriente",
+ "origen",
+ "orilla",
+ "oro",
+ "orquesta",
+ "oruga",
+ "osadía",
+ "oscuro",
+ "osezno",
+ "oso",
+ "ostra",
+ "otoño",
+ "otro",
+ "oveja",
+ "óvulo",
+ "óxido",
+ "oxígeno",
+ "oyente",
+ "ozono",
+ "pacto",
+ "padre",
+ "paella",
+ "página",
+ "pago",
+ "país",
+ "pájaro",
+ "palabra",
+ "palco",
+ "paleta",
+ "pálido",
+ "palma",
+ "paloma",
+ "palpar",
+ "pan",
+ "panal",
+ "pánico",
+ "pantera",
+ "pañuelo",
+ "papá",
+ "papel",
+ "papilla",
+ "paquete",
+ "parar",
+ "parcela",
+ "pared",
+ "parir",
+ "paro",
+ "párpado",
+ "parque",
+ "párrafo",
+ "parte",
+ "pasar",
+ "paseo",
+ "pasión",
+ "paso",
+ "pasta",
+ "pata",
+ "patio",
+ "patria",
+ "pausa",
+ "pauta",
+ "pavo",
+ "payaso",
+ "peatón",
+ "pecado",
+ "pecera",
+ "pecho",
+ "pedal",
+ "pedir",
+ "pegar",
+ "peine",
+ "pelar",
+ "peldaño",
+ "pelea",
+ "peligro",
+ "pellejo",
+ "pelo",
+ "peluca",
+ "pena",
+ "pensar",
+ "peñón",
+ "peón",
+ "peor",
+ "pepino",
+ "pequeño",
+ "pera",
+ "percha",
+ "perder",
+ "pereza",
+ "perfil",
+ "perico",
+ "perla",
+ "permiso",
+ "perro",
+ "persona",
+ "pesa",
+ "pesca",
+ "pésimo",
+ "pestaña",
+ "pétalo",
+ "petróleo",
+ "pez",
+ "pezuña",
+ "picar",
+ "pichón",
+ "pie",
+ "piedra",
+ "pierna",
+ "pieza",
+ "pijama",
+ "pilar",
+ "piloto",
+ "pimienta",
+ "pino",
+ "pintor",
+ "pinza",
+ "piña",
+ "piojo",
+ "pipa",
+ "pirata",
+ "pisar",
+ "piscina",
+ "piso",
+ "pista",
+ "pitón",
+ "pizca",
+ "placa",
+ "plan",
+ "plata",
+ "playa",
+ "plaza",
+ "pleito",
+ "pleno",
+ "plomo",
+ "pluma",
+ "plural",
+ "pobre",
+ "poco",
+ "poder",
+ "podio",
+ "poema",
+ "poesía",
+ "poeta",
+ "polen",
+ "policía",
+ "pollo",
+ "polvo",
+ "pomada",
+ "pomelo",
+ "pomo",
+ "pompa",
+ "poner",
+ "porción",
+ "portal",
+ "posada",
+ "poseer",
+ "posible",
+ "poste",
+ "potencia",
+ "potro",
+ "pozo",
+ "prado",
+ "precoz",
+ "pregunta",
+ "premio",
+ "prensa",
+ "preso",
+ "previo",
+ "primo",
+ "príncipe",
+ "prisión",
+ "privar",
+ "proa",
+ "probar",
+ "proceso",
+ "producto",
+ "proeza",
+ "profesor",
+ "programa",
+ "prole",
+ "promesa",
+ "pronto",
+ "propio",
+ "próximo",
+ "prueba",
+ "público",
+ "puchero",
+ "pudor",
+ "pueblo",
+ "puerta",
+ "puesto",
+ "pulga",
+ "pulir",
+ "pulmón",
+ "pulpo",
+ "pulso",
+ "puma",
+ "punto",
+ "puñal",
+ "puño",
+ "pupa",
+ "pupila",
+ "puré",
+ "quedar",
+ "queja",
+ "quemar",
+ "querer",
+ "queso",
+ "quieto",
+ "química",
+ "quince",
+ "quitar",
+ "rábano",
+ "rabia",
+ "rabo",
+ "ración",
+ "radical",
+ "raíz",
+ "rama",
+ "rampa",
+ "rancho",
+ "rango",
+ "rapaz",
+ "rápido",
+ "rapto",
+ "rasgo",
+ "raspa",
+ "rato",
+ "rayo",
+ "raza",
+ "razón",
+ "reacción",
+ "realidad",
+ "rebaño",
+ "rebote",
+ "recaer",
+ "receta",
+ "rechazo",
+ "recoger",
+ "recreo",
+ "recto",
+ "recurso",
+ "red",
+ "redondo",
+ "reducir",
+ "reflejo",
+ "reforma",
+ "refrán",
+ "refugio",
+ "regalo",
+ "regir",
+ "regla",
+ "regreso",
+ "rehén",
+ "reino",
+ "reír",
+ "reja",
+ "relato",
+ "relevo",
+ "relieve",
+ "relleno",
+ "reloj",
+ "remar",
+ "remedio",
+ "remo",
+ "rencor",
+ "rendir",
+ "renta",
+ "reparto",
+ "repetir",
+ "reposo",
+ "reptil",
+ "res",
+ "rescate",
+ "resina",
+ "respeto",
+ "resto",
+ "resumen",
+ "retiro",
+ "retorno",
+ "retrato",
+ "reunir",
+ "revés",
+ "revista",
+ "rey",
+ "rezar",
+ "rico",
+ "riego",
+ "rienda",
+ "riesgo",
+ "rifa",
+ "rígido",
+ "rigor",
+ "rincón",
+ "riñón",
+ "río",
+ "riqueza",
+ "risa",
+ "ritmo",
+ "rito",
+ "rizo",
+ "roble",
+ "roce",
+ "rociar",
+ "rodar",
+ "rodeo",
+ "rodilla",
+ "roer",
+ "rojizo",
+ "rojo",
+ "romero",
+ "romper",
+ "ron",
+ "ronco",
+ "ronda",
+ "ropa",
+ "ropero",
+ "rosa",
+ "rosca",
+ "rostro",
+ "rotar",
+ "rubí",
+ "rubor",
+ "rudo",
+ "rueda",
+ "rugir",
+ "ruido",
+ "ruina",
+ "ruleta",
+ "rulo",
+ "rumbo",
+ "rumor",
+ "ruptura",
+ "ruta",
+ "rutina",
+ "sábado",
+ "saber",
+ "sabio",
+ "sable",
+ "sacar",
+ "sagaz",
+ "sagrado",
+ "sala",
+ "saldo",
+ "salero",
+ "salir",
+ "salmón",
+ "salón",
+ "salsa",
+ "salto",
+ "salud",
+ "salvar",
+ "samba",
+ "sanción",
+ "sandía",
+ "sanear",
+ "sangre",
+ "sanidad",
+ "sano",
+ "santo",
+ "sapo",
+ "saque",
+ "sardina",
+ "sartén",
+ "sastre",
+ "satán",
+ "sauna",
+ "saxofón",
+ "sección",
+ "seco",
+ "secreto",
+ "secta",
+ "sed",
+ "seguir",
+ "seis",
+ "sello",
+ "selva",
+ "semana",
+ "semilla",
+ "senda",
+ "sensor",
+ "señal",
+ "señor",
+ "separar",
+ "sepia",
+ "sequía",
+ "ser",
+ "serie",
+ "sermón",
+ "servir",
+ "sesenta",
+ "sesión",
+ "seta",
+ "setenta",
+ "severo",
+ "sexo",
+ "sexto",
+ "sidra",
+ "siesta",
+ "siete",
+ "siglo",
+ "signo",
+ "sílaba",
+ "silbar",
+ "silencio",
+ "silla",
+ "símbolo",
+ "simio",
+ "sirena",
+ "sistema",
+ "sitio",
+ "situar",
+ "sobre",
+ "socio",
+ "sodio",
+ "sol",
+ "solapa",
+ "soldado",
+ "soledad",
+ "sólido",
+ "soltar",
+ "solución",
+ "sombra",
+ "sondeo",
+ "sonido",
+ "sonoro",
+ "sonrisa",
+ "sopa",
+ "soplar",
+ "soporte",
+ "sordo",
+ "sorpresa",
+ "sorteo",
+ "sostén",
+ "sótano",
+ "suave",
+ "subir",
+ "suceso",
+ "sudor",
+ "suegra",
+ "suelo",
+ "sueño",
+ "suerte",
+ "sufrir",
+ "sujeto",
+ "sultán",
+ "sumar",
+ "superar",
+ "suplir",
+ "suponer",
+ "supremo",
+ "sur",
+ "surco",
+ "sureño",
+ "surgir",
+ "susto",
+ "sutil",
+ "tabaco",
+ "tabique",
+ "tabla",
+ "tabú",
+ "taco",
+ "tacto",
+ "tajo",
+ "talar",
+ "talco",
+ "talento",
+ "talla",
+ "talón",
+ "tamaño",
+ "tambor",
+ "tango",
+ "tanque",
+ "tapa",
+ "tapete",
+ "tapia",
+ "tapón",
+ "taquilla",
+ "tarde",
+ "tarea",
+ "tarifa",
+ "tarjeta",
+ "tarot",
+ "tarro",
+ "tarta",
+ "tatuaje",
+ "tauro",
+ "taza",
+ "tazón",
+ "teatro",
+ "techo",
+ "tecla",
+ "técnica",
+ "tejado",
+ "tejer",
+ "tejido",
+ "tela",
+ "teléfono",
+ "tema",
+ "temor",
+ "templo",
+ "tenaz",
+ "tender",
+ "tener",
+ "tenis",
+ "tenso",
+ "teoría",
+ "terapia",
+ "terco",
+ "término",
+ "ternura",
+ "terror",
+ "tesis",
+ "tesoro",
+ "testigo",
+ "tetera",
+ "texto",
+ "tez",
+ "tibio",
+ "tiburón",
+ "tiempo",
+ "tienda",
+ "tierra",
+ "tieso",
+ "tigre",
+ "tijera",
+ "tilde",
+ "timbre",
+ "tímido",
+ "timo",
+ "tinta",
+ "tío",
+ "típico",
+ "tipo",
+ "tira",
+ "tirón",
+ "titán",
+ "títere",
+ "título",
+ "tiza",
+ "toalla",
+ "tobillo",
+ "tocar",
+ "tocino",
+ "todo",
+ "toga",
+ "toldo",
+ "tomar",
+ "tono",
+ "tonto",
+ "topar",
+ "tope",
+ "toque",
+ "tórax",
+ "torero",
+ "tormenta",
+ "torneo",
+ "toro",
+ "torpedo",
+ "torre",
+ "torso",
+ "tortuga",
+ "tos",
+ "tosco",
+ "toser",
+ "tóxico",
+ "trabajo",
+ "tractor",
+ "traer",
+ "tráfico",
+ "trago",
+ "traje",
+ "tramo",
+ "trance",
+ "trato",
+ "trauma",
+ "trazar",
+ "trébol",
+ "tregua",
+ "treinta",
+ "tren",
+ "trepar",
+ "tres",
+ "tribu",
+ "trigo",
+ "tripa",
+ "triste",
+ "triunfo",
+ "trofeo",
+ "trompa",
+ "tronco",
+ "tropa",
+ "trote",
+ "trozo",
+ "truco",
+ "trueno",
+ "trufa",
+ "tubería",
+ "tubo",
+ "tuerto",
+ "tumba",
+ "tumor",
+ "túnel",
+ "túnica",
+ "turbina",
+ "turismo",
+ "turno",
+ "tutor",
+ "ubicar",
+ "úlcera",
+ "umbral",
+ "unidad",
+ "unir",
+ "universo",
+ "uno",
+ "untar",
+ "uña",
+ "urbano",
+ "urbe",
+ "urgente",
+ "urna",
+ "usar",
+ "usuario",
+ "útil",
+ "utopía",
+ "uva",
+ "vaca",
+ "vacío",
+ "vacuna",
+ "vagar",
+ "vago",
+ "vaina",
+ "vajilla",
+ "vale",
+ "válido",
+ "valle",
+ "valor",
+ "válvula",
+ "vampiro",
+ "vara",
+ "variar",
+ "varón",
+ "vaso",
+ "vecino",
+ "vector",
+ "vehículo",
+ "veinte",
+ "vejez",
+ "vela",
+ "velero",
+ "veloz",
+ "vena",
+ "vencer",
+ "venda",
+ "veneno",
+ "vengar",
+ "venir",
+ "venta",
+ "venus",
+ "ver",
+ "verano",
+ "verbo",
+ "verde",
+ "vereda",
+ "verja",
+ "verso",
+ "verter",
+ "vía",
+ "viaje",
+ "vibrar",
+ "vicio",
+ "víctima",
+ "vida",
+ "vídeo",
+ "vidrio",
+ "viejo",
+ "viernes",
+ "vigor",
+ "vil",
+ "villa",
+ "vinagre",
+ "vino",
+ "viñedo",
+ "violín",
+ "viral",
+ "virgo",
+ "virtud",
+ "visor",
+ "víspera",
+ "vista",
+ "vitamina",
+ "viudo",
+ "vivaz",
+ "vivero",
+ "vivir",
+ "vivo",
+ "volcán",
+ "volumen",
+ "volver",
+ "voraz",
+ "votar",
+ "voto",
+ "voz",
+ "vuelo",
+ "vulgar",
+ "yacer",
+ "yate",
+ "yegua",
+ "yema",
+ "yerno",
+ "yeso",
+ "yodo",
+ "yoga",
+ "yogur",
+ "zafiro",
+ "zanja",
+ "zapato",
+ "zarza",
+ "zona",
+ "zorro",
+ "zumo",
+ "zurdo"
+ )
+}
diff --git a/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt
new file mode 100644
index 000000000..7dde768c1
--- /dev/null
+++ b/cryptography/src/commonMain/kotlin/io/iohk/atala/prism/apollo/utils/bip39/wordlists/MnemonicCodeTraditionalChinese.kt
@@ -0,0 +1,2060 @@
+package io.iohk.atala.prism.apollo.utils.bip39.wordlists
+
+import kotlin.js.ExperimentalJsExport
+import kotlin.js.JsExport
+
+@OptIn(ExperimentalJsExport::class)
+@JsExport
+internal object MnemonicCodeTraditionalChinese {
+ val wordList: List =
+ listOf(
+ "的",
+ "一",
+ "是",
+ "在",
+ "不",
+ "了",
+ "有",
+ "和",
+ "人",
+ "這",
+ "中",
+ "大",
+ "為",
+ "上",
+ "個",
+ "國",
+ "我",
+ "以",
+ "要",
+ "他",
+ "時",
+ "來",
+ "用",
+ "們",
+ "生",
+ "到",
+ "作",
+ "地",
+ "於",
+ "出",
+ "就",
+ "分",
+ "對",
+ "成",
+ "會",
+ "可",
+ "主",
+ "發",
+ "年",
+ "動",
+ "同",
+ "工",
+ "也",
+ "能",
+ "下",
+ "過",
+ "子",
+ "說",
+ "產",
+ "種",
+ "面",
+ "而",
+ "方",
+ "後",
+ "多",
+ "定",
+ "行",
+ "學",
+ "法",
+ "所",
+ "民",
+ "得",
+ "經",
+ "十",
+ "三",
+ "之",
+ "進",
+ "著",
+ "等",
+ "部",
+ "度",
+ "家",
+ "電",
+ "力",
+ "裡",
+ "如",
+ "水",
+ "化",
+ "高",
+ "自",
+ "二",
+ "理",
+ "起",
+ "小",
+ "物",
+ "現",
+ "實",
+ "加",
+ "量",
+ "都",
+ "兩",
+ "體",
+ "制",
+ "機",
+ "當",
+ "使",
+ "點",
+ "從",
+ "業",
+ "本",
+ "去",
+ "把",
+ "性",
+ "好",
+ "應",
+ "開",
+ "它",
+ "合",
+ "還",
+ "因",
+ "由",
+ "其",
+ "些",
+ "然",
+ "前",
+ "外",
+ "天",
+ "政",
+ "四",
+ "日",
+ "那",
+ "社",
+ "義",
+ "事",
+ "平",
+ "形",
+ "相",
+ "全",
+ "表",
+ "間",
+ "樣",
+ "與",
+ "關",
+ "各",
+ "重",
+ "新",
+ "線",
+ "內",
+ "數",
+ "正",
+ "心",
+ "反",
+ "你",
+ "明",
+ "看",
+ "原",
+ "又",
+ "麼",
+ "利",
+ "比",
+ "或",
+ "但",
+ "質",
+ "氣",
+ "第",
+ "向",
+ "道",
+ "命",
+ "此",
+ "變",
+ "條",
+ "只",
+ "沒",
+ "結",
+ "解",
+ "問",
+ "意",
+ "建",
+ "月",
+ "公",
+ "無",
+ "系",
+ "軍",
+ "很",
+ "情",
+ "者",
+ "最",
+ "立",
+ "代",
+ "想",
+ "已",
+ "通",
+ "並",
+ "提",
+ "直",
+ "題",
+ "黨",
+ "程",
+ "展",
+ "五",
+ "果",
+ "料",
+ "象",
+ "員",
+ "革",
+ "位",
+ "入",
+ "常",
+ "文",
+ "總",
+ "次",
+ "品",
+ "式",
+ "活",
+ "設",
+ "及",
+ "管",
+ "特",
+ "件",
+ "長",
+ "求",
+ "老",
+ "頭",
+ "基",
+ "資",
+ "邊",
+ "流",
+ "路",
+ "級",
+ "少",
+ "圖",
+ "山",
+ "統",
+ "接",
+ "知",
+ "較",
+ "將",
+ "組",
+ "見",
+ "計",
+ "別",
+ "她",
+ "手",
+ "角",
+ "期",
+ "根",
+ "論",
+ "運",
+ "農",
+ "指",
+ "幾",
+ "九",
+ "區",
+ "強",
+ "放",
+ "決",
+ "西",
+ "被",
+ "幹",
+ "做",
+ "必",
+ "戰",
+ "先",
+ "回",
+ "則",
+ "任",
+ "取",
+ "據",
+ "處",
+ "隊",
+ "南",
+ "給",
+ "色",
+ "光",
+ "門",
+ "即",
+ "保",
+ "治",
+ "北",
+ "造",
+ "百",
+ "規",
+ "熱",
+ "領",
+ "七",
+ "海",
+ "口",
+ "東",
+ "導",
+ "器",
+ "壓",
+ "志",
+ "世",
+ "金",
+ "增",
+ "爭",
+ "濟",
+ "階",
+ "油",
+ "思",
+ "術",
+ "極",
+ "交",
+ "受",
+ "聯",
+ "什",
+ "認",
+ "六",
+ "共",
+ "權",
+ "收",
+ "證",
+ "改",
+ "清",
+ "美",
+ "再",
+ "採",
+ "轉",
+ "更",
+ "單",
+ "風",
+ "切",
+ "打",
+ "白",
+ "教",
+ "速",
+ "花",
+ "帶",
+ "安",
+ "場",
+ "身",
+ "車",
+ "例",
+ "真",
+ "務",
+ "具",
+ "萬",
+ "每",
+ "目",
+ "至",
+ "達",
+ "走",
+ "積",
+ "示",
+ "議",
+ "聲",
+ "報",
+ "鬥",
+ "完",
+ "類",
+ "八",
+ "離",
+ "華",
+ "名",
+ "確",
+ "才",
+ "科",
+ "張",
+ "信",
+ "馬",
+ "節",
+ "話",
+ "米",
+ "整",
+ "空",
+ "元",
+ "況",
+ "今",
+ "集",
+ "溫",
+ "傳",
+ "土",
+ "許",
+ "步",
+ "群",
+ "廣",
+ "石",
+ "記",
+ "需",
+ "段",
+ "研",
+ "界",
+ "拉",
+ "林",
+ "律",
+ "叫",
+ "且",
+ "究",
+ "觀",
+ "越",
+ "織",
+ "裝",
+ "影",
+ "算",
+ "低",
+ "持",
+ "音",
+ "眾",
+ "書",
+ "布",
+ "复",
+ "容",
+ "兒",
+ "須",
+ "際",
+ "商",
+ "非",
+ "驗",
+ "連",
+ "斷",
+ "深",
+ "難",
+ "近",
+ "礦",
+ "千",
+ "週",
+ "委",
+ "素",
+ "技",
+ "備",
+ "半",
+ "辦",
+ "青",
+ "省",
+ "列",
+ "習",
+ "響",
+ "約",
+ "支",
+ "般",
+ "史",
+ "感",
+ "勞",
+ "便",
+ "團",
+ "往",
+ "酸",
+ "歷",
+ "市",
+ "克",
+ "何",
+ "除",
+ "消",
+ "構",
+ "府",
+ "稱",
+ "太",
+ "準",
+ "精",
+ "值",
+ "號",
+ "率",
+ "族",
+ "維",
+ "劃",
+ "選",
+ "標",
+ "寫",
+ "存",
+ "候",
+ "毛",
+ "親",
+ "快",
+ "效",
+ "斯",
+ "院",
+ "查",
+ "江",
+ "型",
+ "眼",
+ "王",
+ "按",
+ "格",
+ "養",
+ "易",
+ "置",
+ "派",
+ "層",
+ "片",
+ "始",
+ "卻",
+ "專",
+ "狀",
+ "育",
+ "廠",
+ "京",
+ "識",
+ "適",
+ "屬",
+ "圓",
+ "包",
+ "火",
+ "住",
+ "調",
+ "滿",
+ "縣",
+ "局",
+ "照",
+ "參",
+ "紅",
+ "細",
+ "引",
+ "聽",
+ "該",
+ "鐵",
+ "價",
+ "嚴",
+ "首",
+ "底",
+ "液",
+ "官",
+ "德",
+ "隨",
+ "病",
+ "蘇",
+ "失",
+ "爾",
+ "死",
+ "講",
+ "配",
+ "女",
+ "黃",
+ "推",
+ "顯",
+ "談",
+ "罪",
+ "神",
+ "藝",
+ "呢",
+ "席",
+ "含",
+ "企",
+ "望",
+ "密",
+ "批",
+ "營",
+ "項",
+ "防",
+ "舉",
+ "球",
+ "英",
+ "氧",
+ "勢",
+ "告",
+ "李",
+ "台",
+ "落",
+ "木",
+ "幫",
+ "輪",
+ "破",
+ "亞",
+ "師",
+ "圍",
+ "注",
+ "遠",
+ "字",
+ "材",
+ "排",
+ "供",
+ "河",
+ "態",
+ "封",
+ "另",
+ "施",
+ "減",
+ "樹",
+ "溶",
+ "怎",
+ "止",
+ "案",
+ "言",
+ "士",
+ "均",
+ "武",
+ "固",
+ "葉",
+ "魚",
+ "波",
+ "視",
+ "僅",
+ "費",
+ "緊",
+ "愛",
+ "左",
+ "章",
+ "早",
+ "朝",
+ "害",
+ "續",
+ "輕",
+ "服",
+ "試",
+ "食",
+ "充",
+ "兵",
+ "源",
+ "判",
+ "護",
+ "司",
+ "足",
+ "某",
+ "練",
+ "差",
+ "致",
+ "板",
+ "田",
+ "降",
+ "黑",
+ "犯",
+ "負",
+ "擊",
+ "范",
+ "繼",
+ "興",
+ "似",
+ "餘",
+ "堅",
+ "曲",
+ "輸",
+ "修",
+ "故",
+ "城",
+ "夫",
+ "夠",
+ "送",
+ "筆",
+ "船",
+ "佔",
+ "右",
+ "財",
+ "吃",
+ "富",
+ "春",
+ "職",
+ "覺",
+ "漢",
+ "畫",
+ "功",
+ "巴",
+ "跟",
+ "雖",
+ "雜",
+ "飛",
+ "檢",
+ "吸",
+ "助",
+ "昇",
+ "陽",
+ "互",
+ "初",
+ "創",
+ "抗",
+ "考",
+ "投",
+ "壞",
+ "策",
+ "古",
+ "徑",
+ "換",
+ "未",
+ "跑",
+ "留",
+ "鋼",
+ "曾",
+ "端",
+ "責",
+ "站",
+ "簡",
+ "述",
+ "錢",
+ "副",
+ "盡",
+ "帝",
+ "射",
+ "草",
+ "衝",
+ "承",
+ "獨",
+ "令",
+ "限",
+ "阿",
+ "宣",
+ "環",
+ "雙",
+ "請",
+ "超",
+ "微",
+ "讓",
+ "控",
+ "州",
+ "良",
+ "軸",
+ "找",
+ "否",
+ "紀",
+ "益",
+ "依",
+ "優",
+ "頂",
+ "礎",
+ "載",
+ "倒",
+ "房",
+ "突",
+ "坐",
+ "粉",
+ "敵",
+ "略",
+ "客",
+ "袁",
+ "冷",
+ "勝",
+ "絕",
+ "析",
+ "塊",
+ "劑",
+ "測",
+ "絲",
+ "協",
+ "訴",
+ "念",
+ "陳",
+ "仍",
+ "羅",
+ "鹽",
+ "友",
+ "洋",
+ "錯",
+ "苦",
+ "夜",
+ "刑",
+ "移",
+ "頻",
+ "逐",
+ "靠",
+ "混",
+ "母",
+ "短",
+ "皮",
+ "終",
+ "聚",
+ "汽",
+ "村",
+ "雲",
+ "哪",
+ "既",
+ "距",
+ "衛",
+ "停",
+ "烈",
+ "央",
+ "察",
+ "燒",
+ "迅",
+ "境",
+ "若",
+ "印",
+ "洲",
+ "刻",
+ "括",
+ "激",
+ "孔",
+ "搞",
+ "甚",
+ "室",
+ "待",
+ "核",
+ "校",
+ "散",
+ "侵",
+ "吧",
+ "甲",
+ "遊",
+ "久",
+ "菜",
+ "味",
+ "舊",
+ "模",
+ "湖",
+ "貨",
+ "損",
+ "預",
+ "阻",
+ "毫",
+ "普",
+ "穩",
+ "乙",
+ "媽",
+ "植",
+ "息",
+ "擴",
+ "銀",
+ "語",
+ "揮",
+ "酒",
+ "守",
+ "拿",
+ "序",
+ "紙",
+ "醫",
+ "缺",
+ "雨",
+ "嗎",
+ "針",
+ "劉",
+ "啊",
+ "急",
+ "唱",
+ "誤",
+ "訓",
+ "願",
+ "審",
+ "附",
+ "獲",
+ "茶",
+ "鮮",
+ "糧",
+ "斤",
+ "孩",
+ "脫",
+ "硫",
+ "肥",
+ "善",
+ "龍",
+ "演",
+ "父",
+ "漸",
+ "血",
+ "歡",
+ "械",
+ "掌",
+ "歌",
+ "沙",
+ "剛",
+ "攻",
+ "謂",
+ "盾",
+ "討",
+ "晚",
+ "粒",
+ "亂",
+ "燃",
+ "矛",
+ "乎",
+ "殺",
+ "藥",
+ "寧",
+ "魯",
+ "貴",
+ "鐘",
+ "煤",
+ "讀",
+ "班",
+ "伯",
+ "香",
+ "介",
+ "迫",
+ "句",
+ "豐",
+ "培",
+ "握",
+ "蘭",
+ "擔",
+ "弦",
+ "蛋",
+ "沉",
+ "假",
+ "穿",
+ "執",
+ "答",
+ "樂",
+ "誰",
+ "順",
+ "煙",
+ "縮",
+ "徵",
+ "臉",
+ "喜",
+ "松",
+ "腳",
+ "困",
+ "異",
+ "免",
+ "背",
+ "星",
+ "福",
+ "買",
+ "染",
+ "井",
+ "概",
+ "慢",
+ "怕",
+ "磁",
+ "倍",
+ "祖",
+ "皇",
+ "促",
+ "靜",
+ "補",
+ "評",
+ "翻",
+ "肉",
+ "踐",
+ "尼",
+ "衣",
+ "寬",
+ "揚",
+ "棉",
+ "希",
+ "傷",
+ "操",
+ "垂",
+ "秋",
+ "宜",
+ "氫",
+ "套",
+ "督",
+ "振",
+ "架",
+ "亮",
+ "末",
+ "憲",
+ "慶",
+ "編",
+ "牛",
+ "觸",
+ "映",
+ "雷",
+ "銷",
+ "詩",
+ "座",
+ "居",
+ "抓",
+ "裂",
+ "胞",
+ "呼",
+ "娘",
+ "景",
+ "威",
+ "綠",
+ "晶",
+ "厚",
+ "盟",
+ "衡",
+ "雞",
+ "孫",
+ "延",
+ "危",
+ "膠",
+ "屋",
+ "鄉",
+ "臨",
+ "陸",
+ "顧",
+ "掉",
+ "呀",
+ "燈",
+ "歲",
+ "措",
+ "束",
+ "耐",
+ "劇",
+ "玉",
+ "趙",
+ "跳",
+ "哥",
+ "季",
+ "課",
+ "凱",
+ "胡",
+ "額",
+ "款",
+ "紹",
+ "卷",
+ "齊",
+ "偉",
+ "蒸",
+ "殖",
+ "永",
+ "宗",
+ "苗",
+ "川",
+ "爐",
+ "岩",
+ "弱",
+ "零",
+ "楊",
+ "奏",
+ "沿",
+ "露",
+ "桿",
+ "探",
+ "滑",
+ "鎮",
+ "飯",
+ "濃",
+ "航",
+ "懷",
+ "趕",
+ "庫",
+ "奪",
+ "伊",
+ "靈",
+ "稅",
+ "途",
+ "滅",
+ "賽",
+ "歸",
+ "召",
+ "鼓",
+ "播",
+ "盤",
+ "裁",
+ "險",
+ "康",
+ "唯",
+ "錄",
+ "菌",
+ "純",
+ "借",
+ "糖",
+ "蓋",
+ "橫",
+ "符",
+ "私",
+ "努",
+ "堂",
+ "域",
+ "槍",
+ "潤",
+ "幅",
+ "哈",
+ "竟",
+ "熟",
+ "蟲",
+ "澤",
+ "腦",
+ "壤",
+ "碳",
+ "歐",
+ "遍",
+ "側",
+ "寨",
+ "敢",
+ "徹",
+ "慮",
+ "斜",
+ "薄",
+ "庭",
+ "納",
+ "彈",
+ "飼",
+ "伸",
+ "折",
+ "麥",
+ "濕",
+ "暗",
+ "荷",
+ "瓦",
+ "塞",
+ "床",
+ "築",
+ "惡",
+ "戶",
+ "訪",
+ "塔",
+ "奇",
+ "透",
+ "梁",
+ "刀",
+ "旋",
+ "跡",
+ "卡",
+ "氯",
+ "遇",
+ "份",
+ "毒",
+ "泥",
+ "退",
+ "洗",
+ "擺",
+ "灰",
+ "彩",
+ "賣",
+ "耗",
+ "夏",
+ "擇",
+ "忙",
+ "銅",
+ "獻",
+ "硬",
+ "予",
+ "繁",
+ "圈",
+ "雪",
+ "函",
+ "亦",
+ "抽",
+ "篇",
+ "陣",
+ "陰",
+ "丁",
+ "尺",
+ "追",
+ "堆",
+ "雄",
+ "迎",
+ "泛",
+ "爸",
+ "樓",
+ "避",
+ "謀",
+ "噸",
+ "野",
+ "豬",
+ "旗",
+ "累",
+ "偏",
+ "典",
+ "館",
+ "索",
+ "秦",
+ "脂",
+ "潮",
+ "爺",
+ "豆",
+ "忽",
+ "托",
+ "驚",
+ "塑",
+ "遺",
+ "愈",
+ "朱",
+ "替",
+ "纖",
+ "粗",
+ "傾",
+ "尚",
+ "痛",
+ "楚",
+ "謝",
+ "奮",
+ "購",
+ "磨",
+ "君",
+ "池",
+ "旁",
+ "碎",
+ "骨",
+ "監",
+ "捕",
+ "弟",
+ "暴",
+ "割",
+ "貫",
+ "殊",
+ "釋",
+ "詞",
+ "亡",
+ "壁",
+ "頓",
+ "寶",
+ "午",
+ "塵",
+ "聞",
+ "揭",
+ "炮",
+ "殘",
+ "冬",
+ "橋",
+ "婦",
+ "警",
+ "綜",
+ "招",
+ "吳",
+ "付",
+ "浮",
+ "遭",
+ "徐",
+ "您",
+ "搖",
+ "谷",
+ "贊",
+ "箱",
+ "隔",
+ "訂",
+ "男",
+ "吹",
+ "園",
+ "紛",
+ "唐",
+ "敗",
+ "宋",
+ "玻",
+ "巨",
+ "耕",
+ "坦",
+ "榮",
+ "閉",
+ "灣",
+ "鍵",
+ "凡",
+ "駐",
+ "鍋",
+ "救",
+ "恩",
+ "剝",
+ "凝",
+ "鹼",
+ "齒",
+ "截",
+ "煉",
+ "麻",
+ "紡",
+ "禁",
+ "廢",
+ "盛",
+ "版",
+ "緩",
+ "淨",
+ "睛",
+ "昌",
+ "婚",
+ "涉",
+ "筒",
+ "嘴",
+ "插",
+ "岸",
+ "朗",
+ "莊",
+ "街",
+ "藏",
+ "姑",
+ "貿",
+ "腐",
+ "奴",
+ "啦",
+ "慣",
+ "乘",
+ "夥",
+ "恢",
+ "勻",
+ "紗",
+ "扎",
+ "辯",
+ "耳",
+ "彪",
+ "臣",
+ "億",
+ "璃",
+ "抵",
+ "脈",
+ "秀",
+ "薩",
+ "俄",
+ "網",
+ "舞",
+ "店",
+ "噴",
+ "縱",
+ "寸",
+ "汗",
+ "掛",
+ "洪",
+ "賀",
+ "閃",
+ "柬",
+ "爆",
+ "烯",
+ "津",
+ "稻",
+ "牆",
+ "軟",
+ "勇",
+ "像",
+ "滾",
+ "厘",
+ "蒙",
+ "芳",
+ "肯",
+ "坡",
+ "柱",
+ "盪",
+ "腿",
+ "儀",
+ "旅",
+ "尾",
+ "軋",
+ "冰",
+ "貢",
+ "登",
+ "黎",
+ "削",
+ "鑽",
+ "勒",
+ "逃",
+ "障",
+ "氨",
+ "郭",
+ "峰",
+ "幣",
+ "港",
+ "伏",
+ "軌",
+ "畝",
+ "畢",
+ "擦",
+ "莫",
+ "刺",
+ "浪",
+ "秘",
+ "援",
+ "株",
+ "健",
+ "售",
+ "股",
+ "島",
+ "甘",
+ "泡",
+ "睡",
+ "童",
+ "鑄",
+ "湯",
+ "閥",
+ "休",
+ "匯",
+ "舍",
+ "牧",
+ "繞",
+ "炸",
+ "哲",
+ "磷",
+ "績",
+ "朋",
+ "淡",
+ "尖",
+ "啟",
+ "陷",
+ "柴",
+ "呈",
+ "徒",
+ "顏",
+ "淚",
+ "稍",
+ "忘",
+ "泵",
+ "藍",
+ "拖",
+ "洞",
+ "授",
+ "鏡",
+ "辛",
+ "壯",
+ "鋒",
+ "貧",
+ "虛",
+ "彎",
+ "摩",
+ "泰",
+ "幼",
+ "廷",
+ "尊",
+ "窗",
+ "綱",
+ "弄",
+ "隸",
+ "疑",
+ "氏",
+ "宮",
+ "姐",
+ "震",
+ "瑞",
+ "怪",
+ "尤",
+ "琴",
+ "循",
+ "描",
+ "膜",
+ "違",
+ "夾",
+ "腰",
+ "緣",
+ "珠",
+ "窮",
+ "森",
+ "枝",
+ "竹",
+ "溝",
+ "催",
+ "繩",
+ "憶",
+ "邦",
+ "剩",
+ "幸",
+ "漿",
+ "欄",
+ "擁",
+ "牙",
+ "貯",
+ "禮",
+ "濾",
+ "鈉",
+ "紋",
+ "罷",
+ "拍",
+ "咱",
+ "喊",
+ "袖",
+ "埃",
+ "勤",
+ "罰",
+ "焦",
+ "潛",
+ "伍",
+ "墨",
+ "欲",
+ "縫",
+ "姓",
+ "刊",
+ "飽",
+ "仿",
+ "獎",
+ "鋁",
+ "鬼",
+ "麗",
+ "跨",
+ "默",
+ "挖",
+ "鏈",
+ "掃",
+ "喝",
+ "袋",
+ "炭",
+ "污",
+ "幕",
+ "諸",
+ "弧",
+ "勵",
+ "梅",
+ "奶",
+ "潔",
+ "災",
+ "舟",
+ "鑑",
+ "苯",
+ "訟",
+ "抱",
+ "毀",
+ "懂",
+ "寒",
+ "智",
+ "埔",
+ "寄",
+ "屆",
+ "躍",
+ "渡",
+ "挑",
+ "丹",
+ "艱",
+ "貝",
+ "碰",
+ "拔",
+ "爹",
+ "戴",
+ "碼",
+ "夢",
+ "芽",
+ "熔",
+ "赤",
+ "漁",
+ "哭",
+ "敬",
+ "顆",
+ "奔",
+ "鉛",
+ "仲",
+ "虎",
+ "稀",
+ "妹",
+ "乏",
+ "珍",
+ "申",
+ "桌",
+ "遵",
+ "允",
+ "隆",
+ "螺",
+ "倉",
+ "魏",
+ "銳",
+ "曉",
+ "氮",
+ "兼",
+ "隱",
+ "礙",
+ "赫",
+ "撥",
+ "忠",
+ "肅",
+ "缸",
+ "牽",
+ "搶",
+ "博",
+ "巧",
+ "殼",
+ "兄",
+ "杜",
+ "訊",
+ "誠",
+ "碧",
+ "祥",
+ "柯",
+ "頁",
+ "巡",
+ "矩",
+ "悲",
+ "灌",
+ "齡",
+ "倫",
+ "票",
+ "尋",
+ "桂",
+ "鋪",
+ "聖",
+ "恐",
+ "恰",
+ "鄭",
+ "趣",
+ "抬",
+ "荒",
+ "騰",
+ "貼",
+ "柔",
+ "滴",
+ "猛",
+ "闊",
+ "輛",
+ "妻",
+ "填",
+ "撤",
+ "儲",
+ "簽",
+ "鬧",
+ "擾",
+ "紫",
+ "砂",
+ "遞",
+ "戲",
+ "吊",
+ "陶",
+ "伐",
+ "餵",
+ "療",
+ "瓶",
+ "婆",
+ "撫",
+ "臂",
+ "摸",
+ "忍",
+ "蝦",
+ "蠟",
+ "鄰",
+ "胸",
+ "鞏",
+ "擠",
+ "偶",
+ "棄",
+ "槽",
+ "勁",
+ "乳",
+ "鄧",
+ "吉",
+ "仁",
+ "爛",
+ "磚",
+ "租",
+ "烏",
+ "艦",
+ "伴",
+ "瓜",
+ "淺",
+ "丙",
+ "暫",
+ "燥",
+ "橡",
+ "柳",
+ "迷",
+ "暖",
+ "牌",
+ "秧",
+ "膽",
+ "詳",
+ "簧",
+ "踏",
+ "瓷",
+ "譜",
+ "呆",
+ "賓",
+ "糊",
+ "洛",
+ "輝",
+ "憤",
+ "競",
+ "隙",
+ "怒",
+ "粘",
+ "乃",
+ "緒",
+ "肩",
+ "籍",
+ "敏",
+ "塗",
+ "熙",
+ "皆",
+ "偵",
+ "懸",
+ "掘",
+ "享",
+ "糾",
+ "醒",
+ "狂",
+ "鎖",
+ "淀",
+ "恨",
+ "牲",
+ "霸",
+ "爬",
+ "賞",
+ "逆",
+ "玩",
+ "陵",
+ "祝",
+ "秒",
+ "浙",
+ "貌",
+ "役",
+ "彼",
+ "悉",
+ "鴨",
+ "趨",
+ "鳳",
+ "晨",
+ "畜",
+ "輩",
+ "秩",
+ "卵",
+ "署",
+ "梯",
+ "炎",
+ "灘",
+ "棋",
+ "驅",
+ "篩",
+ "峽",
+ "冒",
+ "啥",
+ "壽",
+ "譯",
+ "浸",
+ "泉",
+ "帽",
+ "遲",
+ "矽",
+ "疆",
+ "貸",
+ "漏",
+ "稿",
+ "冠",
+ "嫩",
+ "脅",
+ "芯",
+ "牢",
+ "叛",
+ "蝕",
+ "奧",
+ "鳴",
+ "嶺",
+ "羊",
+ "憑",
+ "串",
+ "塘",
+ "繪",
+ "酵",
+ "融",
+ "盆",
+ "錫",
+ "廟",
+ "籌",
+ "凍",
+ "輔",
+ "攝",
+ "襲",
+ "筋",
+ "拒",
+ "僚",
+ "旱",
+ "鉀",
+ "鳥",
+ "漆",
+ "沈",
+ "眉",
+ "疏",
+ "添",
+ "棒",
+ "穗",
+ "硝",
+ "韓",
+ "逼",
+ "扭",
+ "僑",
+ "涼",
+ "挺",
+ "碗",
+ "栽",
+ "炒",
+ "杯",
+ "患",
+ "餾",
+ "勸",
+ "豪",
+ "遼",
+ "勃",
+ "鴻",
+ "旦",
+ "吏",
+ "拜",
+ "狗",
+ "埋",
+ "輥",
+ "掩",
+ "飲",
+ "搬",
+ "罵",
+ "辭",
+ "勾",
+ "扣",
+ "估",
+ "蔣",
+ "絨",
+ "霧",
+ "丈",
+ "朵",
+ "姆",
+ "擬",
+ "宇",
+ "輯",
+ "陝",
+ "雕",
+ "償",
+ "蓄",
+ "崇",
+ "剪",
+ "倡",
+ "廳",
+ "咬",
+ "駛",
+ "薯",
+ "刷",
+ "斥",
+ "番",
+ "賦",
+ "奉",
+ "佛",
+ "澆",
+ "漫",
+ "曼",
+ "扇",
+ "鈣",
+ "桃",
+ "扶",
+ "仔",
+ "返",
+ "俗",
+ "虧",
+ "腔",
+ "鞋",
+ "棱",
+ "覆",
+ "框",
+ "悄",
+ "叔",
+ "撞",
+ "騙",
+ "勘",
+ "旺",
+ "沸",
+ "孤",
+ "吐",
+ "孟",
+ "渠",
+ "屈",
+ "疾",
+ "妙",
+ "惜",
+ "仰",
+ "狠",
+ "脹",
+ "諧",
+ "拋",
+ "黴",
+ "桑",
+ "崗",
+ "嘛",
+ "衰",
+ "盜",
+ "滲",
+ "臟",
+ "賴",
+ "湧",
+ "甜",
+ "曹",
+ "閱",
+ "肌",
+ "哩",
+ "厲",
+ "烴",
+ "緯",
+ "毅",
+ "昨",
+ "偽",
+ "症",
+ "煮",
+ "嘆",
+ "釘",
+ "搭",
+ "莖",
+ "籠",
+ "酷",
+ "偷",
+ "弓",
+ "錐",
+ "恆",
+ "傑",
+ "坑",
+ "鼻",
+ "翼",
+ "綸",
+ "敘",
+ "獄",
+ "逮",
+ "罐",
+ "絡",
+ "棚",
+ "抑",
+ "膨",
+ "蔬",
+ "寺",
+ "驟",
+ "穆",
+ "冶",
+ "枯",
+ "冊",
+ "屍",
+ "凸",
+ "紳",
+ "坯",
+ "犧",
+ "焰",
+ "轟",
+ "欣",
+ "晉",
+ "瘦",
+ "禦",
+ "錠",
+ "錦",
+ "喪",
+ "旬",
+ "鍛",
+ "壟",
+ "搜",
+ "撲",
+ "邀",
+ "亭",
+ "酯",
+ "邁",
+ "舒",
+ "脆",
+ "酶",
+ "閒",
+ "憂",
+ "酚",
+ "頑",
+ "羽",
+ "漲",
+ "卸",
+ "仗",
+ "陪",
+ "闢",
+ "懲",
+ "杭",
+ "姚",
+ "肚",
+ "捉",
+ "飄",
+ "漂",
+ "昆",
+ "欺",
+ "吾",
+ "郎",
+ "烷",
+ "汁",
+ "呵",
+ "飾",
+ "蕭",
+ "雅",
+ "郵",
+ "遷",
+ "燕",
+ "撒",
+ "姻",
+ "赴",
+ "宴",
+ "煩",
+ "債",
+ "帳",
+ "斑",
+ "鈴",
+ "旨",
+ "醇",
+ "董",
+ "餅",
+ "雛",
+ "姿",
+ "拌",
+ "傅",
+ "腹",
+ "妥",
+ "揉",
+ "賢",
+ "拆",
+ "歪",
+ "葡",
+ "胺",
+ "丟",
+ "浩",
+ "徽",
+ "昂",
+ "墊",
+ "擋",
+ "覽",
+ "貪",
+ "慰",
+ "繳",
+ "汪",
+ "慌",
+ "馮",
+ "諾",
+ "姜",
+ "誼",
+ "兇",
+ "劣",
+ "誣",
+ "耀",
+ "昏",
+ "躺",
+ "盈",
+ "騎",
+ "喬",
+ "溪",
+ "叢",
+ "盧",
+ "抹",
+ "悶",
+ "諮",
+ "刮",
+ "駕",
+ "纜",
+ "悟",
+ "摘",
+ "鉺",
+ "擲",
+ "頗",
+ "幻",
+ "柄",
+ "惠",
+ "慘",
+ "佳",
+ "仇",
+ "臘",
+ "窩",
+ "滌",
+ "劍",
+ "瞧",
+ "堡",
+ "潑",
+ "蔥",
+ "罩",
+ "霍",
+ "撈",
+ "胎",
+ "蒼",
+ "濱",
+ "倆",
+ "捅",
+ "湘",
+ "砍",
+ "霞",
+ "邵",
+ "萄",
+ "瘋",
+ "淮",
+ "遂",
+ "熊",
+ "糞",
+ "烘",
+ "宿",
+ "檔",
+ "戈",
+ "駁",
+ "嫂",
+ "裕",
+ "徙",
+ "箭",
+ "捐",
+ "腸",
+ "撐",
+ "曬",
+ "辨",
+ "殿",
+ "蓮",
+ "攤",
+ "攪",
+ "醬",
+ "屏",
+ "疫",
+ "哀",
+ "蔡",
+ "堵",
+ "沫",
+ "皺",
+ "暢",
+ "疊",
+ "閣",
+ "萊",
+ "敲",
+ "轄",
+ "鉤",
+ "痕",
+ "壩",
+ "巷",
+ "餓",
+ "禍",
+ "丘",
+ "玄",
+ "溜",
+ "曰",
+ "邏",
+ "彭",
+ "嘗",
+ "卿",
+ "妨",
+ "艇",
+ "吞",
+ "韋",
+ "怨",
+ "矮",
+ "歇"
+ )
+}
diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt
similarity index 84%
rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt
rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt
index 369d9aabc..3a253b291 100644
--- a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt
+++ b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/derivation/HDKeyTest.kt
@@ -12,7 +12,6 @@ import kotlin.test.assertNotNull
import kotlin.test.assertTrue
class HDKeyTest {
-
lateinit var seed: ByteArray
lateinit var privateKey: String
lateinit var derivedPrivateKey: String
@@ -75,11 +74,12 @@ class HDKeyTest {
@Test
fun testDeriveChild_whenNoChainCode_thenThrowException() {
val depth = 1
- val hdKey = HDKey(
- privateKey = privateKey.encodeToByteArray(),
- depth = depth,
- childIndex = BigIntegerWrapper(childIndex)
- )
+ val hdKey =
+ HDKey(
+ privateKey = privateKey.encodeToByteArray(),
+ depth = depth,
+ childIndex = BigIntegerWrapper(childIndex)
+ )
assertFailsWith(Exception::class) {
hdKey.deriveChild(BigIntegerWrapper(childIndex))
@@ -89,11 +89,12 @@ class HDKeyTest {
@Test
fun testDeriveChild_whenPrivateKeyNotHardened_thenThrowException() {
val depth = 1
- val hdKey = HDKey(
- privateKey = privateKey.encodeToByteArray(),
- depth = depth,
- childIndex = BigIntegerWrapper(childIndex)
- )
+ val hdKey =
+ HDKey(
+ privateKey = privateKey.encodeToByteArray(),
+ depth = depth,
+ childIndex = BigIntegerWrapper(childIndex)
+ )
assertFailsWith(Exception::class) {
hdKey.deriveChild(BigIntegerWrapper(childIndex))
@@ -105,11 +106,12 @@ class HDKeyTest {
val depth = 1
childIndex = BigInteger(1)
- val hdKey = HDKey(
- privateKey = Random.Default.nextBytes(33),
- depth = depth,
- childIndex = BigIntegerWrapper(childIndex)
- )
+ val hdKey =
+ HDKey(
+ privateKey = Random.Default.nextBytes(33),
+ depth = depth,
+ childIndex = BigIntegerWrapper(childIndex)
+ )
assertFailsWith(Exception::class) {
hdKey.deriveChild(BigIntegerWrapper(childIndex))
diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt
similarity index 66%
rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt
rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt
index 006d7563b..c18febb4e 100644
--- a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt
+++ b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMECSecp256k1KeysTests.kt
@@ -15,7 +15,10 @@ class KMMECSecp256k1KeysTests {
val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromByteArray(base64ByteArray)
val message = "Test"
val signature = privateKey.sign(message.encodeToByteArray())
- assertEquals("MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", signature.base64UrlEncoded)
+ assertEquals(
+ "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ",
+ signature.base64UrlEncoded
+ )
}
@Test
@@ -25,7 +28,10 @@ class KMMECSecp256k1KeysTests {
val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromByteArray(base64ByteArray)
val message = "Test"
val signature = privateKey.sign(message.encodeToByteArray())
- assertEquals("MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", signature.base64UrlEncoded)
+ assertEquals(
+ "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ",
+ signature.base64UrlEncoded
+ )
assertTrue(privateKey.verify(signature, message.encodeToByteArray()))
}
@@ -36,7 +42,10 @@ class KMMECSecp256k1KeysTests {
val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromByteArray(base64ByteArray)
val message = "Test"
val signature = privateKey.sign(message.encodeToByteArray())
- assertEquals("MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", signature.base64UrlEncoded)
+ assertEquals(
+ "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ",
+ signature.base64UrlEncoded
+ )
val publicKey = privateKey.getPublicKey()
assertTrue(publicKey.verify(signature, message.encodeToByteArray()))
}
@@ -46,20 +55,25 @@ class KMMECSecp256k1KeysTests {
val privateKeyBase64 = "N_JFgvYaReyRXwassz5FHg33A4I6dczzdXrjdHGksmg"
val base64ByteArray = privateKeyBase64.base64UrlDecodedBytes
val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromByteArray(base64ByteArray)
- assertEquals("BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q", privateKey.getPublicKey().raw.base64UrlEncoded)
+ assertEquals(
+ "BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q",
+ privateKey.getPublicKey().raw.base64UrlEncoded
+ )
}
@Test
fun testIsPointOnSecp256k1Curve() {
- val point = KMMECPoint(
- "P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU".base64UrlDecodedBytes,
- "gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes
- )
- try {
- val publicKey = KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates(
- point.x,
- point.y
+ val point =
+ KMMECPoint(
+ "P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU".base64UrlDecodedBytes,
+ "gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes
)
+ try {
+ val publicKey =
+ KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates(
+ point.x,
+ point.y
+ )
assertNotNull(publicKey)
assertTrue(true)
} catch (ex: Exception) {
@@ -69,7 +83,10 @@ class KMMECSecp256k1KeysTests {
@Test
fun testGetCurvePoint() {
- val publicKey = KMMECSecp256k1PublicKey("BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes)
+ val publicKey =
+ KMMECSecp256k1PublicKey(
+ "BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes
+ )
val point = publicKey.getCurvePoint()
assertEquals("P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU", point.x.base64UrlEncoded)
assertEquals("gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q", point.y.base64UrlEncoded)
@@ -78,10 +95,11 @@ class KMMECSecp256k1KeysTests {
@Test
fun testECSecp256K1FromByteCoordinates() {
try {
- val publicKey = KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates(
- "P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU".base64UrlDecodedBytes,
- "gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes
- )
+ val publicKey =
+ KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates(
+ "P6XiWtDoaj6g3le12ljqjl3J_ZXa_kRswC9GNUYmkTU".base64UrlDecodedBytes,
+ "gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q".base64UrlDecodedBytes
+ )
assertNotNull(publicKey)
assertTrue(true)
} catch (ex: Exception) {
diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTestsIgnored.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTestsIgnored.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTestsIgnored.kt
rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTestsIgnored.kt
diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPairTests.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPairTests.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPairTests.kt
rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPairTests.kt
diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/MnemonicTests.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/MnemonicTests.kt
similarity index 100%
rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/MnemonicTests.kt
rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/MnemonicTests.kt
diff --git a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt
similarity index 52%
rename from base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt
rename to cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt
index 027916bda..16fbaa719 100644
--- a/base-asymmetric-encryption/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt
+++ b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1LibTests.kt
@@ -9,14 +9,16 @@ import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
-// @OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)
class Secp256k1LibTests {
@Test
fun testCreatePublicKey() {
val privKeyBase64 = "N/JFgvYaReyRXwassz5FHg33A4I6dczzdXrjdHGksmg="
val base64ByteArray = privKeyBase64.base64DecodedBytes
val pubKey = Secp256k1Lib().createPublicKey(base64ByteArray, false)
- assertEquals("BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q", pubKey.base64UrlEncoded)
+ assertEquals(
+ "BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q",
+ pubKey.base64UrlEncoded
+ )
}
@Test
@@ -24,8 +26,15 @@ class Secp256k1LibTests {
val privKeyBase64 = "96ViMAl0/N1Xm5RJesQxC2NvxhNc4ZkwPyVevZ4akDI="
val derivedPrivKeyBase64 = "xEDIjzhlf/0o+vL42KupeLuZDiWBqpUHhVuwO8a2BBA="
- val derivedKey = Secp256k1Lib().derivePrivateKey(privKeyBase64.base64DecodedBytes, derivedPrivKeyBase64.base64PadDecodedBytes)
- assertEquals("u-Yqv0HafNqAlodCU2_ahWRZ91IvQ438BK6wbJSaUwE", derivedKey!!.base64UrlEncoded)
+ val derivedKey =
+ Secp256k1Lib().derivePrivateKey(
+ privKeyBase64.base64DecodedBytes,
+ derivedPrivKeyBase64.base64PadDecodedBytes
+ )
+ assertEquals(
+ "u-Yqv0HafNqAlodCU2_ahWRZ91IvQ438BK6wbJSaUwE",
+ derivedKey!!.base64UrlEncoded
+ )
}
@Test
@@ -34,29 +43,45 @@ class Secp256k1LibTests {
val message = "Test"
val signature = Secp256k1Lib().sign(privKeyBase64.base64UrlDecodedBytes, message.encodeToByteArray())
- assertEquals("MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ", signature.base64UrlEncoded)
+ assertEquals(
+ "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ",
+ signature.base64UrlEncoded
+ )
}
@Test
fun testVerification() {
val pubKeyBase64 = "BD-l4lrQ6Go-oN5XtdpY6o5dyf2V2v5EbMAvRjVGJpE1gYVURJfxKMpNPnKlLr4MOLNVaYvBNOoy9L50E8jVx8Q"
- val signatureBase64 = "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ"
+ val signatureBase64 =
+ "MEUCIQCFeGlhJrH-9R70X4JzrurWs52SwuxCnJ8ky6riFwMOrwIgT7zlLo7URMHW5tiMgG73IOw2Dm3XyLl1iqW1-t5NFWQ"
val message = "Test"
- assertTrue { Secp256k1Lib().verify(pubKeyBase64.base64UrlDecodedBytes, signatureBase64.base64UrlDecodedBytes, message.encodeToByteArray()) }
+ assertTrue {
+ Secp256k1Lib().verify(
+ pubKeyBase64.base64UrlDecodedBytes,
+ signatureBase64.base64UrlDecodedBytes,
+ message.encodeToByteArray()
+ )
+ }
}
@Test
fun testCompress() {
val pubKeyBase64 = "BHza5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8rW7N7DD04troywCgLkg0_ABP-IcxZcE1-qKjwCWYTVO8"
- assertEquals(Secp256k1Lib().compressPublicKey(pubKeyBase64.base64UrlDecodedBytes).base64UrlEncoded, "A3za5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8r")
+ assertEquals(
+ Secp256k1Lib().compressPublicKey(pubKeyBase64.base64UrlDecodedBytes).base64UrlEncoded,
+ "A3za5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8r"
+ )
}
@Test
fun testUncompress() {
val pubKeyBase64 = "A3za5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8r"
- assertEquals(Secp256k1Lib().uncompressPublicKey(pubKeyBase64.base64UrlDecodedBytes).base64UrlEncoded, "BHza5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8rW7N7DD04troywCgLkg0_ABP-IcxZcE1-qKjwCWYTVO8")
+ assertEquals(
+ Secp256k1Lib().uncompressPublicKey(pubKeyBase64.base64UrlDecodedBytes).base64UrlEncoded,
+ "BHza5mV6_Iz6XdyMpxpjUMprZUCN_MpMuQCTFYpxSf8rW7N7DD04troywCgLkg0_ABP-IcxZcE1-qKjwCWYTVO8"
+ )
}
}
diff --git a/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt
new file mode 100644
index 000000000..06eec69c1
--- /dev/null
+++ b/cryptography/src/commonTest/kotlin/io/iohk/atala/prism/apollo/utils/Secp256k1TestVectors.kt
@@ -0,0 +1,189 @@
+package io.iohk.atala.prism.apollo.utils
+
+class TestPoint(val x: ByteArray, val y: ByteArray)
+
+object Secp256k1TestVectors {
+ // Vectors from https://crypto.stackexchange.com/a/21206
+ val vectors =
+ listOf(
+ TestPoint(
+ "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798".decodeHex(),
+ "483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8".decodeHex()
+ ),
+ TestPoint(
+ "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5".decodeHex(),
+ "1ae168fea63dc339a3c58419466ceaeef7f632653266d0e1236431a950cfe52a".decodeHex()
+ ),
+ TestPoint(
+ "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9".decodeHex(),
+ "388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672".decodeHex()
+ ),
+ TestPoint(
+ "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4".decodeHex(),
+ "d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6".decodeHex()
+ ),
+ TestPoint(
+ "fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556".decodeHex(),
+ "ae12777aacfbb620f3be96017f45c560de80f0f6518fe4a03c870c36b075f297".decodeHex()
+ ),
+ TestPoint(
+ "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc".decodeHex(),
+ "6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da".decodeHex()
+ ),
+ TestPoint(
+ "2f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01".decodeHex(),
+ "5c4da8a741539949293d082a132d13b4c2e213d6ba5b7617b5da2cb76cbde904".decodeHex()
+ ),
+ TestPoint(
+ "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe".decodeHex(),
+ "cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37".decodeHex()
+ ),
+ TestPoint(
+ "a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7".decodeHex(),
+ "893aba425419bc27a3b6c7e693a24c696f794c2ed877a1593cbee53b037368d7".decodeHex()
+ ),
+ TestPoint(
+ "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb".decodeHex(),
+ "d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b".decodeHex()
+ ),
+ TestPoint(
+ "d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a".decodeHex(),
+ "a9f34ffdc815e0d7a8b64537e17bd81579238c5dd9a86d526b051b13f4062327".decodeHex()
+ ),
+ TestPoint(
+ "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8".decodeHex(),
+ "0ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81".decodeHex()
+ ),
+ TestPoint(
+ "499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4".decodeHex(),
+ "cac2f6c4b54e855190f044e4a7b3d464464279c27a3f95bcc65f40d403a13f5b".decodeHex()
+ ),
+ TestPoint(
+ "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e".decodeHex(),
+ "581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58".decodeHex()
+ ),
+ TestPoint(
+ "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a".decodeHex(),
+ "f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821".decodeHex()
+ ),
+ TestPoint(
+ "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34".decodeHex(),
+ "4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77".decodeHex()
+ ),
+ TestPoint(
+ "5601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc".decodeHex(),
+ "c136c1dc0cbeb930e9e298043589351d81d8e0bc736ae2a1f5192e5e8b061d58".decodeHex()
+ ),
+ TestPoint(
+ "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c".decodeHex(),
+ "85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a".decodeHex()
+ ),
+ TestPoint(
+ "4ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97".decodeHex(),
+ "12ba26dcb10ec1625da61fa10a844c676162948271d96967450288ee9233dc3a".decodeHex()
+ ),
+ TestPoint(
+ "a90cc3d3f3e146daadfc74ca1372207cb4b725ae708cef713a98edd73d99ef29".decodeHex(),
+ "5a79d6b289610c68bc3b47f3d72f9788a26a06868b4d8e433e1e2ad76fb7dc76".decodeHex()
+ ),
+ TestPoint(
+ "e5a2636bcfd412ebf36ec45b19bfb68a1bc5f8632e678132b885f7df99c5e9b3".decodeHex(),
+ "736c1ce161ae27b405cafd2a7520370153c2c861ac51d6c1d5985d9606b45f39".decodeHex()
+ ),
+ TestPoint(
+ "a6b594b38fb3e77c6edf78161fade2041f4e09fd8497db776e546c41567feb3c".decodeHex(),
+ "71444009192228730cd8237a490feba2afe3d27d7cc1136bc97e439d13330d55".decodeHex()
+ ),
+ TestPoint(
+ "00000000000000000000003b78ce563f89a0ed9414f5aa28ad0d96d6795f9c63".decodeHex(),
+ "3f3979bf72ae8202983dc989aec7f2ff2ed91bdd69ce02fc0700ca100e59ddf3".decodeHex()
+ ),
+ TestPoint(
+ "e24ce4beee294aa6350faa67512b99d388693ae4e7f53d19882a6ea169fc1ce1".decodeHex(),
+ "8b71e83545fc2b5872589f99d948c03108d36797c4de363ebd3ff6a9e1a95b10".decodeHex()
+ ),
+ TestPoint(
+ "4ce119c96e2fa357200b559b2f7dd5a5f02d5290aff74b03f3e471b273211c97".decodeHex(),
+ "ed45d9234ef13e9da259e05ef57bb3989e9d6b7d8e269698bafd77106dcc1ff5".decodeHex()
+ ),
+ TestPoint(
+ "2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c".decodeHex(),
+ "7a17643fc86ba26c4cbcf7c4a5e379ece5fe09f3afd9689c4a8f37aa1a3f60b5".decodeHex()
+ ),
+ TestPoint(
+ "5601570cb47f238d2b0286db4a990fa0f3ba28d1a319f5e7cf55c2a2444da7cc".decodeHex(),
+ "3ec93e23f34146cf161d67fbca76cae27e271f438c951d5e0ae6d1a074f9ded7".decodeHex()
+ ),
+ TestPoint(
+ "defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34".decodeHex(),
+ "bdee54f96b9cae9716684f152d56c251312e0b5fb56a3f09304e660861a910b8".decodeHex()
+ ),
+ TestPoint(
+ "e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a".decodeHex(),
+ "081caf8c661a6a6d624660cb0a86c8efed6976e1bb2dc0f41e0cd330969e940e".decodeHex()
+ ),
+ TestPoint(
+ "d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e".decodeHex(),
+ "a7e1d78d57938d597c7bd13dd733921015bf50d427692c5a3afb235f095d90d7".decodeHex()
+ ),
+ TestPoint(
+ "499fdf9e895e719cfd64e67f07d38e3226aa7b63678949e6e49b241a60e823e4".decodeHex(),
+ "353d093b4ab17aae6f0fbb1b584c2b9bb9bd863d85c06a4339a0bf2afc5ebcd4".decodeHex()
+ ),
+ TestPoint(
+ "f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8".decodeHex(),
+ "f54f6fd17277f5768a7ded149a3250b8c5e5f925ade056e0d64a34ac24fc0eae".decodeHex()
+ ),
+ TestPoint(
+ "d01115d548e7561b15c38f004d734633687cf4419620095bc5b0f47070afe85a".decodeHex(),
+ "560cb00237ea1f285749bac81e8427ea86dc73a2265792ad94fae4eb0bf9d908".decodeHex()
+ ),
+ TestPoint(
+ "774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb".decodeHex(),
+ "267b5fcd1494a1e6fdbc22a928484c9ac8d24e1d20062957cfe28b3536ac3614".decodeHex()
+ ),
+ TestPoint(
+ "a0434d9e47f3c86235477c7b1ae6ae5d3442d49b1943c2b752a68e2a47e247c7".decodeHex(),
+ "76c545bdabe643d85c4938196c5db3969086b3d127885ea6c3411ac3fc8c9358".decodeHex()
+ ),
+ TestPoint(
+ "acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe".decodeHex(),
+ "33cc76de4f5826029bc7f68e89c49e165227775bc8a071f0fa33d9d439b05ff8".decodeHex()
+ ),
+ TestPoint(
+ "2f01e5e15cca351daff3843fb70f3c2f0a1bdd05e5af888a67784ef3e10a2a01".decodeHex(),
+ "a3b25758beac66b6d6c2f7d5ecd2ec4b3d1dec2945a489e84a25d3479342132b".decodeHex()
+ ),
+ TestPoint(
+ "5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc".decodeHex(),
+ "951435bf45daa69f5ce8729279e5ab2457ec2f47ec02184a5af7d9d6f78d9755".decodeHex()
+ ),
+ TestPoint(
+ "fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556".decodeHex(),
+ "51ed8885530449df0c4169fe80ba3a9f217f0f09ae701b5fc378f3c84f8a0998".decodeHex()
+ ),
+ TestPoint(
+ "2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4".decodeHex(),
+ "2753ddd9c91a1c292b24562259363bd90877d8e454f297bf235782c459539959".decodeHex()
+ ),
+ TestPoint(
+ "e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13".decodeHex(),
+ "ae1266c15f2baa48a9bd1df6715aebb7269851cc404201bf30168422b88c630d".decodeHex()
+ ),
+ TestPoint(
+ "f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9".decodeHex(),
+ "c77084f09cd217ebf01cc819d5c80ca99aff5666cb3ddce4934602897b4715bd".decodeHex()
+ ),
+ TestPoint(
+ "c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5".decodeHex(),
+ "e51e970159c23cc65c3a7be6b99315110809cd9acd992f1edc9bce55af301705".decodeHex()
+ ),
+ TestPoint(
+ "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798".decodeHex(),
+ "b7c52588d95c3b9aa25b0403f1eef75702e84bb7597aabe663b82f6f04ef2777".decodeHex()
+ )
+ )
+
+ fun publicKeysFromSecp256k1TestVectors(): List =
+ vectors.map { KMMECSecp256k1PublicKey.secp256k1FromByteCoordinates(it.x, it.y) }
+}
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt
similarity index 87%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt
index 8b83bd247..517c87215 100644
--- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt
+++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDH.kt
@@ -1,14 +1,11 @@
package io.iohk.atala.prism.apollo.secp256k1
-/* ktlint-disable */
import kotlinx.cinterop.UByteVar
import kotlinx.cinterop.allocArray
import kotlinx.cinterop.memScoped
import kotlinx.cinterop.ptr
import kotlinx.cinterop.readBytes
-// import io.iohk.atala.prism.apollo.kmmsecp256k1.*
-import secp256k1.*
-/* ktlint-disable */
+import secp256k1.secp256k1_ecdh
class ECDH : Secp256k1() {
/**
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt
similarity index 96%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt
index d1fc7335d..5844893c1 100644
--- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt
+++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/ECDSA.kt
@@ -1,8 +1,6 @@
package io.iohk.atala.prism.apollo.secp256k1
-/* ktlint-disable */
import fr.acinq.secp256k1.Secp256k1Native
-/* ktlint-disable */
class ECDSA : Secp256k1() {
/**
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt
similarity index 64%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt
index 9ab34ce9d..79ffa1e48 100644
--- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt
+++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Hex.kt
@@ -5,21 +5,23 @@ internal object Hex {
fun decode(hex: String): ByteArray {
val input = hex.filterNot { it.isWhitespace() }
- val offset = when {
- input.length >= 2 && input[0] == '0' && input[1] == 'x' -> 2
- input.length >= 2 && input[0] == '0' && input[1] == 'X' -> 2
- else -> 0
- }
+ val offset =
+ when {
+ input.length >= 2 && input[0] == '0' && input[1] == 'x' -> 2
+ input.length >= 2 && input[0] == '0' && input[1] == 'X' -> 2
+ else -> 0
+ }
val len = input.length - offset
require(len % 2 == 0)
val out = ByteArray(len / 2)
- fun hexToBin(ch: Char): Int = when (ch) {
- in '0'..'9' -> ch - '0'
- in 'a'..'f' -> ch - 'a' + 10
- in 'A'..'F' -> ch - 'A' + 10
- else -> throw IllegalArgumentException("illegal hex character: $ch")
- }
+ fun hexToBin(ch: Char): Int =
+ when (ch) {
+ in '0'..'9' -> ch - '0'
+ in 'a'..'f' -> ch - 'a' + 10
+ in 'A'..'F' -> ch - 'A' + 10
+ else -> throw IllegalArgumentException("illegal hex character: $ch")
+ }
for (i in out.indices) {
out[i] = (hexToBin(input[offset + 2 * i]) * 16 + hexToBin(input[offset + 2 * i + 1])).toByte()
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt
similarity index 81%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt
index fb5f003cb..1db21b450 100644
--- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt
+++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1.kt
@@ -1,6 +1,6 @@
package io.iohk.atala.prism.apollo.secp256k1
-/* ktlint-disable */
+import io.iohk.atala.prism.apollo.utils.toHex
import kotlinx.cinterop.CPointer
import kotlinx.cinterop.DeferScope
import kotlinx.cinterop.MemScope
@@ -13,19 +13,33 @@ import kotlinx.cinterop.memScoped
import kotlinx.cinterop.pin
import kotlinx.cinterop.ptr
import kotlinx.cinterop.readBytes
-import io.iohk.atala.prism.apollo.utils.toHex
-import secp256k1.*
-
-/* ktlint-disable */
+import secp256k1.SECP256K1_CONTEXT_SIGN
+import secp256k1.SECP256K1_CONTEXT_VERIFY
+import secp256k1.SECP256K1_FLAGS_BIT_CONTEXT_SIGN
+import secp256k1.SECP256K1_FLAGS_BIT_CONTEXT_VERIFY
+import secp256k1.SECP256K1_FLAGS_TYPE_CONTEXT
+import secp256k1.secp256k1_context
+import secp256k1.secp256k1_context_create
+import secp256k1.secp256k1_context_destroy
+import secp256k1.secp256k1_ec_privkey_tweak_mul
+import secp256k1.secp256k1_ec_pubkey_parse
+import secp256k1.secp256k1_ec_seckey_negate
+import secp256k1.secp256k1_ec_seckey_tweak_add
+import secp256k1.secp256k1_ec_seckey_verify
+import secp256k1.secp256k1_ecdsa_signature
+import secp256k1.secp256k1_ecdsa_signature_normalize
+import secp256k1.secp256k1_ecdsa_signature_parse_compact
+import secp256k1.secp256k1_ecdsa_signature_parse_der
+import secp256k1.secp256k1_ecdsa_signature_serialize_compact
+import secp256k1.secp256k1_ecdsa_verify
+import secp256k1.secp256k1_pubkey
open class Secp256k1 {
-
val ctx: CPointer by lazy {
secp256k1_context_create((SECP256K1_FLAGS_TYPE_CONTEXT or SECP256K1_FLAGS_BIT_CONTEXT_SIGN or SECP256K1_FLAGS_BIT_CONTEXT_VERIFY).toUInt())
?: error("Could not create secp256k1 context")
}
-
/**
* Convert an ECDSA signature to a normalized lower-S form (bitcoin standardness rule).
* Returns the normalized signature and a boolean set to true if the input signature was not normalized.
@@ -141,11 +155,12 @@ open class Secp256k1 {
val sig = alloc()
val sigPinned = signature.toUByteArray().pin()
val nativeBytes = sigPinned.addressOf(0)
- val result = when {
- signature.size == 64 -> secp256k1_ecdsa_signature_parse_compact(context, sig.ptr, nativeBytes)
- signature.size < 64 -> throw Secp256k1Exception("Unknown signature format")
- else -> secp256k1_ecdsa_signature_parse_der(context, sig.ptr, nativeBytes, signature.size.convert())
- }
+ val result =
+ when {
+ signature.size == 64 -> secp256k1_ecdsa_signature_parse_compact(context, sig.ptr, nativeBytes)
+ signature.size < 64 -> throw Secp256k1Exception("Unknown signature format")
+ else -> secp256k1_ecdsa_signature_parse_der(context, sig.ptr, nativeBytes, signature.size.convert())
+ }
if (result != 1) {
throw Secp256k1Exception("cannot parse signature (size = ${signature.size} sig = ${signature.toHex()}")
}
@@ -183,11 +198,12 @@ open class Secp256k1 {
val sig = alloc()
val nativeBytes = toNat(input)
- val result = when {
- input.size == 64 -> secp256k1_ecdsa_signature_parse_compact(ctx, sig.ptr, nativeBytes)
- input.size < 64 -> throw Secp256k1Exception("Unknown signature format")
- else -> secp256k1_ecdsa_signature_parse_der(ctx, sig.ptr, nativeBytes, input.size.convert())
- }
+ val result =
+ when {
+ input.size == 64 -> secp256k1_ecdsa_signature_parse_compact(ctx, sig.ptr, nativeBytes)
+ input.size < 64 -> throw Secp256k1Exception("Unknown signature format")
+ else -> secp256k1_ecdsa_signature_parse_der(ctx, sig.ptr, nativeBytes, input.size.convert())
+ }
result.requireSuccess("cannot parse signature (size = ${input.size} sig = ${Hex.encode(input)}")
return sig
}
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Exception.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Exception.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Exception.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Exception.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
similarity index 99%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
index 80b92c3db..6e7e11c2a 100644
--- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
+++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
@@ -3,7 +3,6 @@ package io.iohk.atala.prism.apollo.utils
import swift.cryptoKit.Ed25519
public actual class KMMEdPublicKey(val raw: ByteArray = ByteArray(0)) {
-
@Throws(RuntimeException::class)
actual fun verify(message: ByteArray, sig: ByteArray): Boolean {
val result = Ed25519.verifyWithPublicKey(raw.toNSData(), sig.toNSData(), message.toNSData())
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
similarity index 68%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
index 4f532bd7b..9b6b7e07b 100644
--- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
+++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
@@ -3,8 +3,10 @@ package io.iohk.atala.prism.apollo.utils
import platform.Security.SecKeyRef
actual final class KMMRSAKeyPair actual constructor(val privateKey: KMMRSAPrivateKey, val publicKey: KMMRSAPublicKey) {
-
- private constructor(nativePrivateKey: SecKeyRef, nativePublicKey: SecKeyRef) : this(KMMRSAPrivateKey(nativePrivateKey), KMMRSAPublicKey(nativePublicKey))
+ private constructor(
+ nativePrivateKey: SecKeyRef,
+ nativePublicKey: SecKeyRef
+ ) : this(KMMRSAPrivateKey(nativePrivateKey), KMMRSAPublicKey(nativePublicKey))
actual companion object : RSAKeyPairGeneration {
override suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair {
@@ -13,7 +15,11 @@ actual final class KMMRSAKeyPair actual constructor(val privateKey: KMMRSAPrivat
// return KMMRSAKeyPair(pair.privateKey()!!, pair.publicKey()!!)
}
- override suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair {
+ override suspend fun generateRSAKeyPairFrom(
+ seed: ByteArray,
+ algorithm: RSAAsymmetricAlgorithm,
+ keySize: Int
+ ): KMMRSAKeyPair {
TODO("Not yet implemented")
// val pair = IOHKRSA.generateKeyPairWithKeySize(keySize.toLong())!!
// return KMMRSAKeyPair(pair.privateKey()!!, pair.publicKey()!!)
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
similarity index 100%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
similarity index 99%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
rename to cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
index 368847040..d2a9d602b 100644
--- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
+++ b/cryptography/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
@@ -2,5 +2,6 @@ package io.iohk.atala.prism.apollo.utils
actual interface RSAKeyPairGeneration {
suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair
+
suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair
}
diff --git a/base-asymmetric-encryption/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt b/cryptography/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt
similarity index 84%
rename from base-asymmetric-encryption/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt
rename to cryptography/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt
index cb30a65d3..5ea3733b2 100644
--- a/base-asymmetric-encryption/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt
+++ b/cryptography/src/iosTest/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Tests.kt
@@ -33,7 +33,7 @@ class Secp256k1Tests {
val publicKey = secp256k1.createPublicKey(privateKey, false)
assertEquals(
"04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6",
- Hex.encode(publicKey).uppercase(),
+ Hex.encode(publicKey).uppercase()
)
}
@@ -48,9 +48,15 @@ class Secp256k1Tests {
@Test
fun compressPublicKey() {
val secp256k1 = Secp256k1()
- val pub = Hex.decode("04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6")
+ val pub =
+ Hex.decode(
+ "04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6"
+ )
val compressed = secp256k1.publicKeyCompress(pub)
- assertEquals("02C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D", Hex.encode(compressed).uppercase())
+ assertEquals(
+ "02C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D",
+ Hex.encode(compressed).uppercase()
+ )
}
@Test
@@ -60,7 +66,7 @@ class Secp256k1Tests {
val pub = secp256k1.createPublicKey(priv, false)
assertEquals(
"04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6",
- Hex.encode(pub).uppercase(),
+ Hex.encode(pub).uppercase()
)
assertEquals(
"02C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D",
@@ -69,7 +75,7 @@ class Secp256k1Tests {
val npub = Secp256k1Native.pubKeyNegate(pub)
assertEquals(
"04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2DDEFC12B6B8E73968536514302E69ED1DDB24B999EFEE79C12D03AB17E79E1989",
- Hex.encode(npub).uppercase(),
+ Hex.encode(npub).uppercase()
)
assertEquals(
"03C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D",
@@ -85,7 +91,7 @@ class Secp256k1Tests {
val parsed1 = Secp256k1Native.pubkeyParse(pub)
assertEquals(
"04C591A8FF19AC9C4E4E5793673B83123437E975285E7B442F4EE2654DFFCA5E2D2103ED494718C697AC9AEBCFD19612E224DB46661011863ED2FC54E71861E2A6",
- Hex.encode(parsed1).uppercase(),
+ Hex.encode(parsed1).uppercase()
)
val parsed2 = Secp256k1Native.pubkeyParse(parsed1)
assertContentEquals(parsed1, parsed2)
@@ -106,58 +112,82 @@ class Secp256k1Tests {
@Test
fun combinePublicKeys() {
// Mixture of compressed and uncompressed public keys.
- val pub1 = Hex.decode("041b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f70beaf8f588b541507fed6a642c5ab42dfdf8120a7f639de5122d47a69a8e8d1")
- val pub2 = Hex.decode("044d4b6cd1361032ca9bd2aeb9d900aa4d45d9ead80ac9423374c451a7254d07662a3eada2d0fe208b6d257ceb0f064284662e857f57b66b54c198bd310ded36d0")
- val pub3 = Hex.decode("02eec7245d6b7d2ccb30380bfbe2a3648cd7a942653f5aa340edcea1f283686619")
+ val pub1 =
+ Hex.decode(
+ "041b84c5567b126440995d3ed5aaba0565d71e1834604819ff9c17f5e9d5dd078f70beaf8f588b541507fed6a642c5ab42dfdf8120a7f639de5122d47a69a8e8d1"
+ )
+ val pub2 =
+ Hex.decode(
+ "044d4b6cd1361032ca9bd2aeb9d900aa4d45d9ead80ac9423374c451a7254d07662a3eada2d0fe208b6d257ceb0f064284662e857f57b66b54c198bd310ded36d0"
+ )
+ val pub3 =
+ Hex.decode(
+ "02eec7245d6b7d2ccb30380bfbe2a3648cd7a942653f5aa340edcea1f283686619"
+ )
val pub4 = Secp256k1Native.pubKeyCombine(arrayOf(pub1, pub2, pub3))
assertEquals(
"042C0B7CF95324A07D05398B240174DC0C2BE444D96B159AA6C7F7B1E668680991AE31A9C671A36543F46CEA8FCE6984608AA316AA0472A7EED08847440218CB2F",
- Hex.encode(pub4).uppercase(),
+ Hex.encode(pub4).uppercase()
)
}
@Test
fun createEcdsaSignature() {
val ecdsa = ECDSA()
- val message = Hex.decode("CF80CD8AED482D5D1527D7DC72FCEFF84E6326592848447D2DC0B0E87DFC9A90".lowercase()) // sha256hash of "testing"
+ val message =
+ Hex.decode(
+ "CF80CD8AED482D5D1527D7DC72FCEFF84E6326592848447D2DC0B0E87DFC9A90".lowercase()
+ ) // sha256hash of "testing"
val priv = Hex.decode("67E56582298859DDAE725F972992A07C6C4FB9F62A8FFF58CE3CA926A1063530".lowercase())
val sig = ecdsa.sign(message, priv)
assertEquals(
"182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9",
- Hex.encode(sig).uppercase(),
+ Hex.encode(sig).uppercase()
)
}
@Test
fun normalizeEcdsaSignature() {
val secp256k1 = Secp256k1()
- val normalizedDerSig = Hex.decode("30440220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A202201C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase())
+ val normalizedDerSig =
+ Hex.decode(
+ "30440220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A202201C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase()
+ )
val (normalizedCompactSig1, wasNotNormalized1) = secp256k1.signatureNormalize(normalizedDerSig)
assertFalse(wasNotNormalized1)
assertEquals(
"182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9",
- Hex.encode(normalizedCompactSig1).uppercase(),
+ Hex.encode(normalizedCompactSig1).uppercase()
)
- val notNormalizedDerSig = Hex.decode("30450220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A2022100E3990C925DEE3F780C50774AF120B062E0080D86D8C721C6E32F10DBACA57A58".lowercase())
+ val notNormalizedDerSig =
+ Hex.decode(
+ "30450220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A2022100E3990C925DEE3F780C50774AF120B062E0080D86D8C721C6E32F10DBACA57A58".lowercase()
+ )
val (normalizedCompactSig2, wasNotNormalized2) = secp256k1.signatureNormalize(notNormalizedDerSig)
assertTrue(wasNotNormalized2)
assertEquals(
"182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9",
- Hex.encode(normalizedCompactSig2).uppercase(),
+ Hex.encode(normalizedCompactSig2).uppercase()
)
- val normalizedCompactSig = Hex.decode("182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase())
+ val normalizedCompactSig =
+ Hex.decode(
+ "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase()
+ )
val (normalizedCompactSig3, wasNotNormalized3) = secp256k1.signatureNormalize(normalizedCompactSig)
assertFalse(wasNotNormalized3)
assertEquals(
"182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9",
- Hex.encode(normalizedCompactSig3).uppercase(),
+ Hex.encode(normalizedCompactSig3).uppercase()
)
- val notNormalizedCompactSig = Hex.decode("182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A2E3990C925DEE3F780C50774AF120B062E0080D86D8C721C6E32F10DBACA57A58".lowercase())
+ val notNormalizedCompactSig =
+ Hex.decode(
+ "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A2E3990C925DEE3F780C50774AF120B062E0080D86D8C721C6E32F10DBACA57A58".lowercase()
+ )
val (normalizedCompactSig4, wasNotNormalized4) = secp256k1.signatureNormalize(notNormalizedCompactSig)
assertTrue(wasNotNormalized4)
assertEquals(
"182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9",
- Hex.encode(normalizedCompactSig4).uppercase(),
+ Hex.encode(normalizedCompactSig4).uppercase()
)
}
@@ -174,12 +204,18 @@ class Secp256k1Tests {
@Test
fun createCompactEcdsaSignature() {
val ecdsa = ECDSA()
- val message = Hex.decode("CF80CD8AED482D5D1527D7DC72FCEFF84E6326592848447D2DC0B0E87DFC9A90".lowercase()) // sha256hash of "testing"
- val priv = Hex.decode("67E56582298859DDAE725F972992A07C6C4FB9F62A8FFF58CE3CA926A1063530".lowercase())
+ val message =
+ Hex.decode(
+ "CF80CD8AED482D5D1527D7DC72FCEFF84E6326592848447D2DC0B0E87DFC9A90".lowercase()
+ ) // sha256hash of "testing"
+ val priv =
+ Hex.decode(
+ "67E56582298859DDAE725F972992A07C6C4FB9F62A8FFF58CE3CA926A1063530".lowercase()
+ )
val sig = ecdsa.sign(message, priv)
assertEquals(
"182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9",
- Hex.encode(sig).uppercase(),
+ Hex.encode(sig).uppercase()
)
}
@@ -210,7 +246,7 @@ class Secp256k1Tests {
val npriv = secp256k1.privateKeyNegate(priv)
assertEquals(
"981A9A7DD677A622518DA068D66D5F824E5F22F084B8A0E2F195B5662F300C11",
- Hex.encode(npriv).uppercase(),
+ Hex.encode(npriv).uppercase()
)
val nnpriv: ByteArray = secp256k1.privateKeyNegate(npriv)
assertContentEquals(priv, nnpriv)
@@ -224,7 +260,7 @@ class Secp256k1Tests {
val tweakedPriv = secp256k1.privateKeyTweakAdd(priv, tweak)
assertEquals(
"A168571E189E6F9A7E2D657A4B53AE99B909F7E712D1C23CED28093CD57C88F3",
- Hex.encode(tweakedPriv).uppercase(),
+ Hex.encode(tweakedPriv).uppercase()
)
}
@@ -236,29 +272,35 @@ class Secp256k1Tests {
val tweakedPriv = secp256k1.privateKeyTweakMul(priv, tweak)
assertEquals(
"97F8184235F101550F3C71C927507651BD3F1CDB4A5A33B8986ACF0DEE20FFFC",
- Hex.encode(tweakedPriv).uppercase(),
+ Hex.encode(tweakedPriv).uppercase()
)
}
@Test
fun addTweakToPublicKey() {
- val pub = Hex.decode("040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase())
+ val pub =
+ Hex.decode(
+ "040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase()
+ )
val tweak = Hex.decode("3982F19BEF1615BCCFBB05E321C10E1D4CBA3DF0E841C2E41EEB6016347653C3".lowercase())
val tweakedPub = Secp256k1Native.pubKeyTweakAdd(pub, tweak)
assertEquals(
"0411C6790F4B663CCE607BAAE08C43557EDC1A4D11D88DFCB3D841D0C6A941AF525A268E2A863C148555C48FB5FBA368E88718A46E205FABC3DBA2CCFFAB0796EF",
- Hex.encode(tweakedPub).uppercase(),
+ Hex.encode(tweakedPub).uppercase()
)
}
@Test
fun multiplyPublicKeyWithTweak() {
- val pub = Hex.decode("040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase())
+ val pub =
+ Hex.decode(
+ "040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase()
+ )
val tweak = Hex.decode("3982F19BEF1615BCCFBB05E321C10E1D4CBA3DF0E841C2E41EEB6016347653C3".lowercase())
val tweakedPub = Secp256k1Native.pubKeyTweakMul(pub, tweak)
assertEquals(
"04E0FE6FE55EBCA626B98A807F6CAF654139E14E5E3698F01A9A658E21DC1D2791EC060D4F412A794D5370F672BC94B722640B5F76914151CFCA6E712CA48CC589",
- Hex.encode(tweakedPub).uppercase(),
+ Hex.encode(tweakedPub).uppercase()
)
}
@@ -266,11 +308,14 @@ class Secp256k1Tests {
fun createEcdhSecret() {
val ecdh = ECDH()
val priv = Hex.decode("67E56582298859DDAE725F972992A07C6C4FB9F62A8FFF58CE3CA926A1063530".lowercase())
- val pub = Hex.decode("040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase())
+ val pub =
+ Hex.decode(
+ "040A629506E1B65CD9D2E0BA9C75DF9C4FED0DB16DC9625ED14397F0AFC836FAE595DC53F8B0EFE61E703075BD9B143BAC75EC0E19F82A2208CAEB32BE53414C40".lowercase()
+ )
val secret = ecdh.ecdh(priv, pub)
assertEquals(
"2A2A67007A926E6594AF3EB564FC74005B37A9C8AEF2033C4552051B5C87F043",
- Hex.encode(secret).uppercase(),
+ Hex.encode(secret).uppercase()
)
}
@@ -301,11 +346,14 @@ class Secp256k1Tests {
@Test
fun convertCompactEcdsaSignatureToDer() {
val ecdsa = ECDSA()
- val compact = Hex.decode("182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase()) // sha256hash of "testing"
+ val compact =
+ Hex.decode(
+ "182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A21C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9".lowercase()
+ ) // sha256hash of "testing"
val der = ecdsa.compact2der(compact)
assertEquals(
"30440220182A108E1448DC8F1FB467D06A0F3BB8EA0533584CB954EF8DA112F1D60E39A202201C66F36DA211C087F3AF88B50EDF4F9BDAA6CF5FD6817E74DCA34DB12390C6E9",
- Hex.encode(der).uppercase(),
+ Hex.encode(der).uppercase()
)
}
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
similarity index 94%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
index aba30eea6..6af05918e 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
@@ -9,11 +9,11 @@ import io.iohk.atala.prism.apollo.utils.asUint8Array
import io.iohk.atala.prism.apollo.utils.decodeHex
import io.iohk.atala.prism.apollo.utils.external.BN
import io.iohk.atala.prism.apollo.utils.external.ec
-import io.iohk.atala.prism.apollo.utils.external.secp256k1.getPublicKey
+import io.iohk.atala.prism.apollo.utils.external.secp256k1.secp256k1
actual class Secp256k1Lib actual constructor() {
actual fun createPublicKey(privateKey: ByteArray, compressed: Boolean): ByteArray {
- return getPublicKey(privateKey.asUint8Array(), isCompressed = compressed).asByteArray()
+ return secp256k1.getPublicKey(privateKey.asUint8Array(), compressed).asByteArray()
}
actual fun derivePrivateKey(privateKeyBytes: ByteArray, derivedPrivateKeyBytes: ByteArray): ByteArray? {
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/Curve25519Parser.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/Curve25519Parser.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/Curve25519Parser.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/Curve25519Parser.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/JsHashType.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/JsHashType.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/JsHashType.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/JsHashType.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt
similarity index 68%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt
index e09640683..495ae4f86 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMECPointJS.kt
@@ -1,4 +1,4 @@
-package io.iohk.atala.prism.apollo.utils // ktlint-disable filename
+package io.iohk.atala.prism.apollo.utils
import io.iohk.atala.prism.apollo.utils.external.BN
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
similarity index 64%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
index e2d6c5a8e..ae6d02fd2 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
@@ -12,32 +12,35 @@ actual final class KMMRSAKeyPair actual constructor(
val publicKey: KMMRSAPublicKey
) {
actual companion object : RSAKeyPairGeneration {
-
private fun getRsaHashedKeyGenParams(algorithm: RSAAsymmetricAlgorithm, hashType: JsHashType, keySize: Int): RsaHashedKeyGenParams {
val algorithmNativeValue = algorithm.nativeValue()
val keySizeNativeValue = keySize
val hashTypeNativeValue = hashType.nativeValue()
- return js("{name: algorithmNativeValue, modulusLength: keySizeNativeValue, publicExponent: new Uint8Array([1, 0, 1]), hash: hashTypeNativeValue}").unsafeCast()
+ return js(
+ "{name: algorithmNativeValue, modulusLength: keySizeNativeValue, publicExponent: new Uint8Array([1, 0, 1]), hash: hashTypeNativeValue}"
+ ).unsafeCast()
}
override suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, hash: JsHashType, keySize: Int): KMMRSAKeyPair {
return MainScope().promise {
- val keyPair = crypto.subtle.generateKey(
- getRsaHashedKeyGenParams(algorithm, hash, keySize),
- true,
- arrayOf(KeyUsage.sign, KeyUsage.verify)
- ).await()
+ val keyPair =
+ crypto.subtle.generateKey(
+ getRsaHashedKeyGenParams(algorithm, hash, keySize),
+ true,
+ arrayOf(KeyUsage.sign, KeyUsage.verify)
+ ).await()
KMMRSAKeyPair(KMMRSAPrivateKey(keyPair.privateKey), KMMRSAPublicKey(keyPair.publicKey))
}.await()
}
override suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, hash: JsHashType, keySize: Int): KMMRSAKeyPair {
return MainScope().promise {
- val keyPair = crypto.subtle.generateKey(
- getRsaHashedKeyGenParams(algorithm, hash, keySize),
- true,
- arrayOf(KeyUsage.sign, KeyUsage.verify)
- ).await()
+ val keyPair =
+ crypto.subtle.generateKey(
+ getRsaHashedKeyGenParams(algorithm, hash, keySize),
+ true,
+ arrayOf(KeyUsage.sign, KeyUsage.verify)
+ ).await()
KMMRSAKeyPair(KMMRSAPrivateKey(keyPair.privateKey), KMMRSAPublicKey(keyPair.publicKey))
}.await()
}
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
similarity index 99%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
index b09d765f9..d270ea2f8 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
@@ -2,5 +2,6 @@ package io.iohk.atala.prism.apollo.utils
actual interface RSAKeyPairGeneration {
suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, hash: JsHashType, keySize: Int): KMMRSAKeyPair
+
suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, hash: JsHashType, keySize: Int): KMMRSAKeyPair
}
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt
similarity index 96%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt
index 57f9af8db..0cd1e4278 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP32.kt
@@ -1,8 +1,7 @@
// Automatically generated by dukat and then slightly adjusted manually to make it compile
-@file:Suppress("ktlint")
+@file:Suppress("ktlint", "internal:ktlint-suppression")
@file:JsModule("bip32")
-/* ktlint-disable */
package io.iohk.atala.prism.apollo.utils.external
import node.buffer.Buffer
@@ -61,4 +60,3 @@ internal external fun fromPrivateKey(privateKey: Buffer, chainCode: Buffer, netw
internal external fun fromPublicKey(publicKey: Buffer, chainCode: Buffer, network: Network = definedExternally): BIP32Interface
internal external fun fromSeed(seed: Buffer, network: Network = definedExternally): BIP32Interface
-/* ktlint-disable */
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt
similarity index 95%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt
index ce8b428a8..5b161a0bb 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BIP39.kt
@@ -1,8 +1,7 @@
// Automatically generated by dukat and then slightly adjusted manually to make it compile
-@file:Suppress("ktlint")
+@file:Suppress("ktlint", "internal:ktlint-suppression")
@file:JsModule("bip39")
-/* ktlint-disable */
package io.iohk.atala.prism.apollo.utils.external
import node.buffer.Buffer
@@ -29,4 +28,3 @@ internal external fun validateMnemonic(mnemonic: String, wordlist: Array
internal external fun setDefaultWordlist(language: String)
internal external fun getDefaultWordlist(): String
-/* ktlint-disable */
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt
similarity index 97%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt
index 123d51834..b9334bff9 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/BNjs.kt
@@ -1,12 +1,11 @@
// Automatically generated by dukat and then slightly adjusted manually to make it compile
-@file:Suppress("ktlint")
+@file:Suppress("ktlint", "internal:ktlint-suppression")
// @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
-/* ktlint-disable */
package io.iohk.atala.prism.apollo.utils.external
-import org.khronos.webgl.* // ktlint-disable no-wildcard-imports
-import kotlin.js.* // ktlint-disable no-wildcard-imports
+import org.khronos.webgl.*
+import kotlin.js.*
external interface EGCD {
var a: BN
@@ -204,4 +203,3 @@ open external class RedBN : BN {
open fun redNeg(): RedBN
open fun redPow(b: BN): RedBN
}
-/* ktlint-disable */
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt
similarity index 99%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt
index 1e43474d2..c387bac02 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Curve.kt
@@ -1,10 +1,9 @@
// Automatically generated by dukat and then slightly adjusted manually to make it compile
-@file:Suppress("ktlint")
+@file:Suppress("ktlint", "internal:ktlint-suppression")
// @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
@file:JsQualifier("curve")
@file:JsModule("elliptic")
-/* ktlint-disable */
package io.iohk.atala.prism.apollo.utils.external
import org.khronos.webgl.Uint8Array
@@ -175,4 +174,3 @@ open external class short(conf: ShortConf) : base {
open fun toJSON(): Array */>
}
}
-/* ktlint-disable */
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt
similarity index 99%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt
index 3311a0c67..946e73005 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Ellipticjs.kt
@@ -1,5 +1,5 @@
// Automatically generated by dukat and then slightly adjusted manually to make it compile
-@file:Suppress("ktlint")
+@file:Suppress("ktlint", "internal:ktlint-suppression")
// @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
@file:JsModule("elliptic")
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt
similarity index 93%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt
index 6ab99ced1..855ad71eb 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/PresetCurve.kt
@@ -1,10 +1,9 @@
// Automatically generated by dukat and then slightly adjusted manually to make it compile
-@file:Suppress("ktlint")
+@file:Suppress("ktlint", "internal:ktlint-suppression")
// @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
@file:JsQualifier("curves")
@file:JsModule("elliptic")
-/* ktlint-disable */
package io.iohk.atala.prism.apollo.utils.external
open external class PresetCurve(options: Options) {
@@ -33,4 +32,3 @@ open external class PresetCurve(options: Options) {
set(value) = definedExternally
}
}
-/* ktlint-disable */
diff --git a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt
similarity index 90%
rename from base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt
rename to cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt
index 9897fcb6c..dc961e0d6 100644
--- a/base-asymmetric-encryption/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/Stabelib.kt
@@ -1,6 +1,6 @@
// Automatically generated by dukat and then slightly adjusted manually to make it compile
+@file:Suppress("ktlint", "internal:ktlint-suppression", "SpellCheckingInspection")
@file:JsModule("@stablelib/x25519")
-@file:Suppress("SpellCheckingInspection")
package io.iohk.atala.prism.apollo.utils.external
diff --git a/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt
new file mode 100644
index 000000000..61bacc759
--- /dev/null
+++ b/cryptography/src/jsMain/kotlin/io/iohk/atala/prism/apollo/utils/external/secp256k1/secp256k1js.kt
@@ -0,0 +1,96 @@
+// Automatically generated by dukat and then slightly adjusted manually to make it compile
+@file:Suppress("ktlint", "internal:ktlint-suppression")
+// @file:Suppress("INTERFACE_WITH_SUPERCLASS", "OVERRIDING_FINAL_MEMBER", "RETURN_TYPE_MISMATCH_ON_OVERRIDE", "CONFLICTING_OVERLOADS")
+@file:JsModule("@noble/curves/secp256k1")
+
+package io.iohk.atala.prism.apollo.utils.external.secp256k1
+
+import io.iohk.atala.prism.apollo.utils.external.BN
+import kotlin.js.*
+import org.khronos.webgl.*
+import org.w3c.dom.*
+import org.w3c.dom.events.*
+import org.w3c.dom.parsing.*
+import org.w3c.dom.svg.*
+import org.w3c.dom.url.*
+import org.w3c.fetch.*
+import org.w3c.files.*
+import org.w3c.notifications.*
+import org.w3c.performance.*
+import org.w3c.workers.*
+import org.w3c.xhr.*
+import org.khronos.webgl.Uint8Array
+
+external interface `T$0` {
+ var k1neg: Boolean
+ var k1: Any
+ var k2neg: Boolean
+ var k2: Any
+}
+
+external interface `T$1` {
+ var beta: Any
+ var splitScalar: (k: Any) -> `T$0`
+}
+
+
+external interface `T$2` {
+ var nBitLength: Number
+ var nByteLength: Number
+ var Fp: Any
+ var n: Any
+ var h: Any
+ var hEff: Any?
+ get() = definedExternally
+ set(value) = definedExternally
+ var Gx: Any
+ var Gy: Any
+ var allowInfinityPoint: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var a: Any
+ var b: Any
+ var allowedPrivateKeyLengths: Array?
+ get() = definedExternally
+ set(value) = definedExternally
+ var wrapPrivateKey: Boolean?
+ get() = definedExternally
+ set(value) = definedExternally
+ var endo: `T$1`?
+ get() = definedExternally
+ set(value) = definedExternally
+ var hash: Any
+ var hmac: (key: Uint8Array, messages: Uint8Array) -> Uint8Array
+ var randomBytes: (bytesLength: Number?) -> Uint8Array
+ var lowS: Boolean
+ var bits2int: ((bytes: Uint8Array) -> Any)?
+ get() = definedExternally
+ set(value) = definedExternally
+ var bits2int_modN: ((bytes: Uint8Array) -> Any)?
+ get() = definedExternally
+ set(value) = definedExternally
+ var p: Any
+}
+
+external interface `T$4` {
+ var normPrivateKeyToScalar: (key: dynamic /* Uint8Array | String | Any */) -> Any
+ fun isValidPrivateKey(privateKey: Uint8Array): Boolean
+ fun isValidPrivateKey(privateKey: String): Boolean
+ fun isValidPrivateKey(privateKey: Any): Boolean
+ var randomPrivateKey: () -> Uint8Array
+}
+
+external interface `T$5` {
+ var create: (hash: Any) -> Any
+ var CURVE:`T$2`
+ var getPublicKey: (privateKey: dynamic /* Uint8Array | String | Any */, isCompressed: Boolean?) -> Uint8Array
+ var getSharedSecret: (privateA: dynamic /* Uint8Array | String | Any */, publicB: dynamic /* Uint8Array | String */, isCompressed: Boolean?) -> Uint8Array
+ var sign: (msgHash: dynamic /* Uint8Array | String */, privKey: dynamic /* Uint8Array | String | Any */, opts: Any?) -> Any
+ var verify: (signature: dynamic /* Uint8Array | String | `T$3` */, msgHash: dynamic /* Uint8Array | String */, publicKey: dynamic /* Uint8Array | String */, opts: Any?) -> Boolean
+ var ProjectivePoint: Any
+ var Signature: Any
+ var utils: `T$4`
+}
+
+
+external var secp256k1: `T$5`
diff --git a/base-asymmetric-encryption/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTests.kt b/cryptography/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTests.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTests.kt
rename to cryptography/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPairTests.kt
diff --git a/base-asymmetric-encryption/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519Tests.kt b/cryptography/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519Tests.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519Tests.kt
rename to cryptography/src/jsTest/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519Tests.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/Mnemonic.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/derivation/MnemonicCode.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/secp256k1/Secp256k1Lib.kt
diff --git a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
similarity index 97%
rename from base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
index 4e40ea7ad..a768cf944 100644
--- a/base-asymmetric-encryption/src/androidMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
+++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdKeyPair.kt
@@ -17,7 +17,7 @@ actual class KMMEdKeyPair actual constructor(
val pair = generator.generateKeyPair()
return KMMEdKeyPair(
privateKey = KMMEdPrivateKey((pair.private as Ed25519PrivateKeyParameters).encoded),
- publicKey = KMMEdPublicKey((pair.public as Ed25519PublicKeyParameters).encoded),
+ publicKey = KMMEdPublicKey((pair.public as Ed25519PublicKeyParameters).encoded)
)
}
}
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
similarity index 99%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
index 5092af0a0..42f1d6ef7 100644
--- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
+++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPrivateKey.kt
@@ -5,7 +5,6 @@ import org.bouncycastle.crypto.signers.Ed25519Signer
import java.io.ByteArrayInputStream
actual class KMMEdPrivateKey(val raw: ByteArray) {
-
fun publicKey(): KMMEdPublicKey {
val private = Ed25519PrivateKeyParameters(raw, 0)
val public = private.generatePublicKey()
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMEdPublicKey.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
similarity index 99%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
index 35d472890..3acf9191f 100644
--- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
+++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAKeyPair.kt
@@ -5,7 +5,6 @@ import java.security.SecureRandom
actual final class KMMRSAKeyPair actual constructor(val privateKey: KMMRSAPrivateKey, val publicKey: KMMRSAPublicKey) {
actual companion object : RSAKeyPairGeneration {
-
override suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair {
val keyPairGen = KeyPairGenerator.getInstance(algorithm.nativeValue())
keyPairGen.initialize(keySize, SecureRandom())
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPrivateKey.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMRSAPublicKey.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519KeyPair.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
similarity index 99%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
index 1067ed504..78da76f87 100644
--- a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
+++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PrivateKey.kt
@@ -3,7 +3,6 @@ package io.iohk.atala.prism.apollo.utils
import org.bouncycastle.crypto.params.X25519PrivateKeyParameters
actual class KMMX25519PrivateKey(val raw: ByteArray) {
-
fun publicKey(): KMMX25519PublicKey {
val private = X25519PrivateKeyParameters(raw, 0)
val public = private.generatePublicKey()
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/KMMX25519PublicKey.kt
diff --git a/base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
similarity index 100%
rename from base-asymmetric-encryption/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAAsymmetricAlgorithm.kt
diff --git a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
similarity index 99%
rename from base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
rename to cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
index 368847040..d2a9d602b 100644
--- a/base-asymmetric-encryption/src/iosMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
+++ b/cryptography/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/utils/RSAKeyPairGeneration.kt
@@ -2,5 +2,6 @@ package io.iohk.atala.prism.apollo.utils
actual interface RSAKeyPairGeneration {
suspend fun generateRSAKeyPair(algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair
+
suspend fun generateRSAKeyPairFrom(seed: ByteArray, algorithm: RSAAsymmetricAlgorithm, keySize: Int): KMMRSAKeyPair
}
diff --git a/base-asymmetric-encryption/src/nativeInterop/cinterop/IOHKCryptoKit.def b/cryptography/src/nativeInterop/cinterop/IOHKCryptoKit.def
similarity index 100%
rename from base-asymmetric-encryption/src/nativeInterop/cinterop/IOHKCryptoKit.def
rename to cryptography/src/nativeInterop/cinterop/IOHKCryptoKit.def
diff --git a/base-asymmetric-encryption/src/nativeInterop/cinterop/IOHKSecureRandomGeneration.def b/cryptography/src/nativeInterop/cinterop/IOHKSecureRandomGeneration.def
similarity index 100%
rename from base-asymmetric-encryption/src/nativeInterop/cinterop/IOHKSecureRandomGeneration.def
rename to cryptography/src/nativeInterop/cinterop/IOHKSecureRandomGeneration.def
diff --git a/base-asymmetric-encryption/src/nativeInterop/cinterop/SwiftCryptoKit.def b/cryptography/src/nativeInterop/cinterop/SwiftCryptoKit.def
similarity index 100%
rename from base-asymmetric-encryption/src/nativeInterop/cinterop/SwiftCryptoKit.def
rename to cryptography/src/nativeInterop/cinterop/SwiftCryptoKit.def
diff --git a/base-asymmetric-encryption/webpack.config.d/polyfill.js b/cryptography/webpack.config.d/polyfill.js
similarity index 100%
rename from base-asymmetric-encryption/webpack.config.d/polyfill.js
rename to cryptography/webpack.config.d/polyfill.js
diff --git a/ecdsa/build.gradle.kts b/ecdsa/build.gradle.kts
deleted file mode 100644
index 7c438150f..000000000
--- a/ecdsa/build.gradle.kts
+++ /dev/null
@@ -1,275 +0,0 @@
-import org.gradle.internal.os.OperatingSystem
-import org.jetbrains.dokka.gradle.DokkaTask
-import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackOutput.Target
-
-val currentModuleName = "ApolloECDSA"
-val os: OperatingSystem = OperatingSystem.current()
-
-plugins {
- kotlin("multiplatform")
- kotlin("native.cocoapods")
- id("com.android.library")
- id("org.jetbrains.dokka")
-}
-
-kotlin {
- android {
- publishAllLibraryVariants()
- }
- jvm {
- compilations.all {
- kotlinOptions {
- jvmTarget = "11"
- }
- }
- testRuns["test"].executionTask.configure {
- useJUnitPlatform()
- }
- }
- if (os.isMacOsX) {
- ios()
-// tvos()
-// watchos()
-// macosX64()
-// if (System.getProperty("os.arch") != "x86_64") { // M1Chip
-// iosSimulatorArm64()
-// tvosSimulatorArm64()
-// watchosSimulatorArm64()
-// macosArm64()
-// }
- }
-// if (os.isWindows) {
-// // mingwX86() // it depend on kotlinx-datetime lib to support this platform before we can support it as well
-// mingwX64()
-// }
- js(IR) {
- this.moduleName = currentModuleName
- this.binaries.library()
- this.useCommonJs()
- this.compilations["main"].packageJson {
- this.version = rootProject.version.toString()
- }
- this.compilations["test"].packageJson {
- this.version = rootProject.version.toString()
- }
- browser {
- this.webpackTask {
- this.output.library = currentModuleName
- this.output.libraryTarget = Target.VAR
- }
- this.commonWebpackConfig {
- this.cssSupport {
- this.enabled = true
- }
- }
- this.testTask {
- if (os.isWindows) {
- this.enabled = false
- }
- this.useKarma {
- this.useChromeHeadless()
- }
- }
- }
- nodejs {
- this.testTask {
- if (os.isWindows) {
- this.enabled = false
- }
- this.useKarma {
- this.useChromeHeadless()
- }
- }
- }
- }
-
- if (os.isMacOsX) {
- cocoapods {
- this.summary = "ApolloECDSA is ECDSA"
- this.version = rootProject.version.toString()
- this.authors = "IOG"
- this.ios.deploymentTarget = "13.0"
- this.osx.deploymentTarget = "12.0"
- this.tvos.deploymentTarget = "13.0"
- this.watchos.deploymentTarget = "8.0"
- framework {
- this.baseName = currentModuleName
- }
-
- pod("IOHKRSA") {
- version = "1.0.0"
- packageName = "IOHKRSA1"
- source = path(project.file("../iOSLibs/IOHKRSA"))
- }
-
- pod("IOHKSecureRandomGeneration") {
- version = "1.0.0"
- packageName = "IOHKSecureRandomGeneration2"
- source = path(project.file("../iOSLibs/IOHKSecureRandomGeneration"))
- }
- }
- }
-
- sourceSets {
- val commonMain by getting {
- dependencies {
- implementation(project(":utils"))
- implementation(project(":base-asymmetric-encryption"))
- implementation(project(":hashing"))
- }
- }
- val commonTest by getting {
- dependencies {
- implementation(kotlin("test"))
- }
- }
- val jvmMain by getting {
- dependencies {
- implementation("org.bouncycastle:bcprov-jdk15on:1.68")
- }
- }
- val jvmTest by getting
- val androidMain by getting {
- dependencies {
- implementation("org.bouncycastle:bcprov-jdk15on:1.68")
- }
- }
- val androidTest by getting {
- dependencies {
- implementation("junit:junit:4.13.2")
- }
- }
- val jsMain by getting {
- dependencies {
- implementation(npm("elliptic", "6.5.4"))
- implementation(npm("@types/elliptic", "6.4.14"))
-
- // Polyfill dependencies
- implementation(npm("stream-browserify", "3.0.0"))
- implementation(npm("buffer", "6.0.3"))
-
- implementation("org.jetbrains.kotlin-wrappers:kotlin-web:1.0.0-pre.461")
- implementation("org.jetbrains.kotlin-wrappers:kotlin-node:18.11.13-pre.461")
- }
- }
- val jsTest by getting
- if (os.isMacOsX) {
- val iosMain by getting
- val iosTest by getting
-// val tvosMain by getting
-// val tvosTest by getting
-// val watchosMain by getting
-// val watchosTest by getting
-// val macosX64Main by getting
-// val macosX64Test by getting
-// if (System.getProperty("os.arch") != "x86_64") { // M1Chip
-// val iosSimulatorArm64Main by getting {
-// this.dependsOn(iosMain)
-// }
-// val iosSimulatorArm64Test by getting {
-// this.dependsOn(iosTest)
-// }
-// val tvosSimulatorArm64Main by getting {
-// this.dependsOn(tvosMain)
-// }
-// val tvosSimulatorArm64Test by getting {
-// this.dependsOn(tvosTest)
-// }
-// val watchosSimulatorArm64Main by getting {
-// this.dependsOn(watchosMain)
-// }
-// val watchosSimulatorArm64Test by getting {
-// this.dependsOn(watchosTest)
-// }
-// val macosArm64Main by getting {
-// this.dependsOn(macosX64Main)
-// }
-// val macosArm64Test by getting {
-// this.dependsOn(macosX64Test)
-// }
-// }
- }
-// if (os.isWindows) {
-// // val mingwX86Main by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well
-// // val mingwX86Test by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well
-// val mingwX64Main by getting
-// val mingwX64Test by getting
-// }
- }
-}
-
-android {
- compileSdk = 32
- sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
- defaultConfig {
- minSdk = 21
- targetSdk = 32
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
- }
- /**
- * Because Software Components will not be created automatically for Maven publishing from
- * Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.
- * disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new
- * publishing DSL.
- */
- publishing {
- multipleVariants {
- withSourcesJar()
- withJavadocJar()
- allVariants()
- }
- }
-}
-
-// Dokka implementation
-tasks.withType {
- moduleName.set(project.name)
- moduleVersion.set(rootProject.version.toString())
- description = """
- This is a Kotlin Multiplatform Library for ECDSA
- """.trimIndent()
- dokkaSourceSets {
- // TODO: Figure out how to include files to the documentations
- named("commonMain") {
- includes.from("Module.md", "docs/Module.md")
- }
- }
-}
-
-// afterEvaluate {
-// tasks.withType {
-// testLogging {
-// events("passed", "skipped", "failed", "standard_out", "standard_error")
-// showExceptions = true
-// showStackTraces = true
-// }
-// }
-// }
-
-// TODO(Investigate why the below tasks fails)
-tasks.matching {
- fun String.isOneOf(values: List): Boolean {
- for (value in values) {
- if (this == value) {
- return true
- }
- }
- return false
- }
-
- it.name.isOneOf(
- listOf(
- "linkPodReleaseFrameworkIosFat",
- ":linkPodReleaseFrameworkIosFat",
- ":base-asymmetric-encryption:linkPodReleaseFrameworkIosFat",
- "linkPodDebugFrameworkIosFat",
- ":linkPodDebugFrameworkIosFat",
- ":base-asymmetric-encryption:linkPodDebugFrameworkIosFat"
- )
- )
-}.all {
- this.enabled = false
-}
diff --git a/ecdsa/ecdsa.podspec b/ecdsa/ecdsa.podspec
deleted file mode 100644
index 663c8fdc7..000000000
--- a/ecdsa/ecdsa.podspec
+++ /dev/null
@@ -1,43 +0,0 @@
-Pod::Spec.new do |spec|
- spec.name = 'ecdsa'
- spec.version = '1.7.0-alpha'
- spec.homepage = ''
- spec.source = { :http=> ''}
- spec.authors = 'IOG'
- spec.license = ''
- spec.summary = 'ApolloECDSA is ECDSA'
- spec.vendored_frameworks = 'build/cocoapods/framework/ApolloECDSA.framework'
- spec.libraries = 'c++'
- spec.ios.deployment_target = '13.0'
- spec.osx.deployment_target = '12.0'
- spec.tvos.deployment_target = '13.0'
- spec.watchos.deployment_target = '8.0'
- spec.dependency 'IOHKRSA', '1.0.0'
- spec.dependency 'IOHKSecureRandomGeneration', '1.0.0'
-
- spec.pod_target_xcconfig = {
- 'KOTLIN_PROJECT_PATH' => ':ecdsa',
- 'PRODUCT_MODULE_NAME' => 'ApolloECDSA',
- }
-
- spec.script_phases = [
- {
- :name => 'Build ecdsa',
- :execution_position => :before_compile,
- :shell_path => '/bin/sh',
- :script => <<-SCRIPT
- if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
- echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
- exit 0
- fi
- set -ev
- REPO_ROOT="$PODS_TARGET_SRCROOT"
- "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
- -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
- -Pkotlin.native.cocoapods.archs="$ARCHS" \
- -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
- SCRIPT
- }
- ]
-
-end
\ No newline at end of file
diff --git a/ecdsa/src/androidMain/AndroidManifest.xml b/ecdsa/src/androidMain/AndroidManifest.xml
deleted file mode 100644
index 3ee55cfd8..000000000
--- a/ecdsa/src/androidMain/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/ecdsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
deleted file mode 100644
index 8fa645d39..000000000
--- a/ecdsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
+++ /dev/null
@@ -1,43 +0,0 @@
-package io.iohk.atala.prism.apollo.ecdsa
-
-import io.iohk.atala.prism.apollo.utils.KMMECPrivateKey
-import io.iohk.atala.prism.apollo.utils.KMMECPublicKey
-import org.bouncycastle.jce.provider.BouncyCastleProvider
-import java.security.Signature
-
-actual object KMMECDSA {
- private val provider = BouncyCastleProvider()
-
- actual fun sign(
- type: ECDSAType,
- data: ByteArray,
- privateKey: KMMECPrivateKey
- ): ByteArray {
- val signatureAlgorithm = when (type) {
- ECDSAType.ECDSA_SHA256 -> "SHA256withECDSA"
- ECDSAType.ECDSA_SHA384 -> "SHA384withECDSA"
- ECDSAType.ECDSA_SHA512 -> "SHA512withECDSA"
- }
- val signer = Signature.getInstance(signatureAlgorithm, provider)
- signer.initSign(privateKey.nativeValue)
- signer.update(data)
- return signer.sign()
- }
-
- actual fun verify(
- type: ECDSAType,
- data: ByteArray,
- publicKey: KMMECPublicKey,
- signature: ByteArray
- ): Boolean {
- val signatureAlgorithm = when (type) {
- ECDSAType.ECDSA_SHA256 -> "SHA256withECDSA"
- ECDSAType.ECDSA_SHA384 -> "SHA384withECDSA"
- ECDSAType.ECDSA_SHA512 -> "SHA512withECDSA"
- }
- val verifier = Signature.getInstance(signatureAlgorithm, provider)
- verifier.initVerify(publicKey.nativeValue)
- verifier.update(data)
- return verifier.verify(signature)
- }
-}
diff --git a/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/ECDSAType.kt b/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/ECDSAType.kt
deleted file mode 100644
index 95139ad2b..000000000
--- a/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/ECDSAType.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package io.iohk.atala.prism.apollo.ecdsa
-
-enum class ECDSAType {
- ECDSA_SHA256,
- ECDSA_SHA384,
- ECDSA_SHA512
-}
diff --git a/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
deleted file mode 100644
index dfd349d29..000000000
--- a/ecdsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package io.iohk.atala.prism.apollo.ecdsa
-
-expect object KMMECDSA {
- fun sign(type: ECDSAType, data: ByteArray, privateKey: KMMECPrivateKey): ByteArray
- fun verify(type: ECDSAType, data: ByteArray, publicKey: KMMECPublicKey, signature: ByteArray): Boolean
-}
diff --git a/ecdsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSATests.kt b/ecdsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSATests.kt
deleted file mode 100644
index 13d81d896..000000000
--- a/ecdsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSATests.kt
+++ /dev/null
@@ -1,141 +0,0 @@
-package io.iohk.atala.prism.apollo.ecdsa
-
-import io.iohk.atala.prism.apollo.utils.KMMECSecp256k1KeyPair
-import io.iohk.atala.prism.apollo.utils.KMMECSecp256k1PrivateKey
-import io.iohk.atala.prism.apollo.utils.decodeHex
-import kotlin.test.Ignore
-import kotlin.test.Test
-import kotlin.test.assertFalse
-import kotlin.test.assertTrue
-
-class KMMECDSATests {
-
- @Test
- fun testECDSA() {
- val textToSign = "Hello IOG!"
- val keyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair()
-
- val signature = KMMECDSA.sign(
- ECDSAType.ECDSA_SHA256,
- textToSign.encodeToByteArray(),
- keyPair.privateKey
- )
-
- assertTrue(
- KMMECDSA.verify(
- ECDSAType.ECDSA_SHA256,
- textToSign.encodeToByteArray(),
- keyPair.publicKey,
- signature
- )
- )
- }
-
- @Test
- fun testSignAndVerifyText() {
- val keyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair()
- val text = "The quick brown fox jumps over the lazy dog"
-
- val signature = KMMECDSA.sign(
- type = ECDSAType.ECDSA_SHA256,
- privateKey = keyPair.privateKey,
- data = text.encodeToByteArray()
- )
-
- assertTrue(
- KMMECDSA.verify(
- type = ECDSAType.ECDSA_SHA256,
- data = text.encodeToByteArray(),
- publicKey = keyPair.publicKey,
- signature = signature
- )
- )
- }
-
- @Test
- fun testSignAndVerifyData() {
- val testData = byteArrayOf(-107, 101, 68, 118, 27, 74, 29, 50, -32, 72, 47, -127, -49, 3, -8, -55, -63, -66, 46, 125)
- val keyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair()
-
- val signature = KMMECDSA.sign(
- type = ECDSAType.ECDSA_SHA256,
- privateKey = keyPair.privateKey,
- data = testData
- )
-
- assertTrue(
- KMMECDSA.verify(
- type = ECDSAType.ECDSA_SHA256,
- data = testData,
- publicKey = keyPair.publicKey,
- signature = signature
- )
- )
- }
-
- @Test
- fun testNotVerifyWrongInput() {
- val type = ECDSAType.ECDSA_SHA256
- val keyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair()
- val wrongKeyPair = KMMECSecp256k1KeyPair.generateSecp256k1KeyPair()
-
- val text = "The quick brown fox jumps over the lazy dog"
- val wrongText = "Wrong text"
-
- val signature = KMMECDSA.sign(
- type = type,
- privateKey = keyPair.privateKey,
- data = text.encodeToByteArray()
- )
- val wrongSignature = KMMECDSA.sign(
- type = type,
- privateKey = keyPair.privateKey,
- data = wrongText.encodeToByteArray()
- )
-
- assertFalse(
- KMMECDSA.verify(
- type = type,
- data = wrongText.encodeToByteArray(),
- publicKey = keyPair.publicKey,
- signature = signature
- )
- )
- assertFalse(
- KMMECDSA.verify(
- type = type,
- data = text.encodeToByteArray(),
- publicKey = wrongKeyPair.publicKey,
- signature = signature
- )
- )
- assertFalse(
- KMMECDSA.verify(
- type = type,
- data = text.encodeToByteArray(),
- publicKey = keyPair.publicKey,
- signature = wrongSignature
- )
- )
- }
-
- @Test
- @Ignore // Not working for JS
- fun testVerifySameSignatureInAllImplementations() {
- val testData = byteArrayOf(-107, 101, 68, 118, 27, 74, 29, 50, -32, 72, 47, -127, -49, 3, -8, -55, -63, -66, 46, 125)
- val hexEncodedPrivateKey = "0123fbf1050c3fc060b709fdcf240e766a41190c40afc5ac7a702961df8313c0"
- val hexEncodedSignature =
- "30450221008a78c557dfc18275b5c800281ef8d26d2b40572b9c1442d708c610f50f797bd302207e44e340f787df7ab1299dabfc988e4c02fcaca0f68dbe813050f4b8641fa739"
- val privateKey = KMMECSecp256k1PrivateKey.secp256k1FromBytes(hexEncodedPrivateKey.decodeHex())
- val signature = hexEncodedSignature.decodeHex()
-
- assertTrue(
- KMMECDSA.verify(
- type = ECDSAType.ECDSA_SHA256,
- data = testData,
- publicKey = privateKey.getPublicKey(),
- signature = signature
- )
- )
- }
-}
diff --git a/ecdsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
deleted file mode 100644
index ddb1bd336..000000000
--- a/ecdsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
+++ /dev/null
@@ -1,115 +0,0 @@
-package io.iohk.atala.prism.apollo.ecdsa
-
-/* ktlint-disable */
-import io.iohk.atala.prism.apollo.hashing.SHA256
-import io.iohk.atala.prism.apollo.hashing.SHA384
-import io.iohk.atala.prism.apollo.hashing.SHA512
-import io.iohk.atala.prism.apollo.secp256k1.Secp256k1Exception
-import io.iohk.atala.prism.apollo.utils.KMMECPrivateKey
-import io.iohk.atala.prism.apollo.utils.KMMECPublicKey
-import io.iohk.atala.prism.apollo.utils.toHex
-import kotlinx.cinterop.UByteVar
-import kotlinx.cinterop.addressOf
-import kotlinx.cinterop.alloc
-import kotlinx.cinterop.allocArray
-import kotlinx.cinterop.convert
-import kotlinx.cinterop.memScoped
-import kotlinx.cinterop.pin
-import kotlinx.cinterop.ptr
-import kotlinx.cinterop.readBytes
-import secp256k1.*
-/* ktlint-disable */
-
-actual object KMMECDSA {
- @OptIn(ExperimentalUnsignedTypes::class)
- actual fun sign(
- type: ECDSAType,
- data: ByteArray,
- privateKey: KMMECPrivateKey
- ): ByteArray {
- val hashedData = when (type) {
- ECDSAType.ECDSA_SHA256 -> SHA256().digest(data)
- ECDSAType.ECDSA_SHA384 -> SHA384().digest(data)
- ECDSAType.ECDSA_SHA512 -> SHA512().digest(data)
- }
- memScoped {
- // Context
- val context = secp256k1_context_create((SECP256K1_CONTEXT_SIGN or SECP256K1_CONTEXT_VERIFY).convert())
-
- val privateKeyPinned = privateKey.nativeValue.pin()
- val nPrivateKey = privateKeyPinned.addressOf(0)
-
- val messagePinned = hashedData.toUByteArray().pin()
- val nMessage = messagePinned.addressOf(0)
-
- val nSig = alloc()
- if (secp256k1_ecdsa_sign(context, nSig.ptr, nMessage, nPrivateKey, null, null) != 1) {
- throw Secp256k1Exception("secp256k1_ecdsa_sign() failed")
- }
- val natOutput = allocArray(64)
-
- if(secp256k1_ecdsa_signature_serialize_compact(context, natOutput, nSig.ptr) != 1) {
- throw Secp256k1Exception("secp256k1_ecdsa_signature_serialize_compact() failed")
- }
-
- this.defer {
- secp256k1_context_destroy(context)
- privateKeyPinned.unpin()
- messagePinned.unpin()
- }
- return natOutput.readBytes(64)
- }
- }
-
- @OptIn(ExperimentalUnsignedTypes::class)
- actual fun verify(
- type: ECDSAType,
- data: ByteArray,
- publicKey: KMMECPublicKey,
- signature: ByteArray
- ): Boolean {
- val hashedData = when (type) {
- ECDSAType.ECDSA_SHA256 -> SHA256().digest(data)
- ECDSAType.ECDSA_SHA384 -> SHA384().digest(data)
- ECDSAType.ECDSA_SHA512 -> SHA512().digest(data)
- }
- memScoped {
- // Context
- val context = secp256k1_context_create((SECP256K1_CONTEXT_SIGN or SECP256K1_CONTEXT_VERIFY).convert())
-
- // Public Key Alloc
- val publicKeyPinned = publicKey.getEncoded().asUByteArray().pin()
- val natPub = publicKeyPinned.addressOf(0)
- val nPublicKey = alloc()
-
- if (secp256k1_ec_pubkey_parse(context, nPublicKey.ptr, natPub, publicKey.nativeValue.size.convert()) != 1) {
- throw Secp256k1Exception("secp256k1_ec_pubkey_parse() failed")
- }
-
- // Message
- val messagePinned = hashedData.toUByteArray().pin()
- val nMessage = messagePinned.addressOf(0)
-
- // Signature
- val sig = alloc()
- val sigPinned = signature.toUByteArray().pin()
- val nativeBytes = sigPinned.addressOf(0)
- val result = when {
- signature.size == 64 -> secp256k1_ecdsa_signature_parse_compact(context, sig.ptr, nativeBytes)
- signature.size < 64 -> throw Secp256k1Exception("Unknown signature format")
- else -> secp256k1_ecdsa_signature_parse_der(context, sig.ptr, nativeBytes, signature.size.convert())
- }
- if (result != 1) {
- throw Secp256k1Exception("cannot parse signature (size = ${signature.size} sig = ${signature.toHex()}")
- }
-
- this.defer {
- secp256k1_context_destroy(context)
- publicKeyPinned.unpin()
- messagePinned.unpin()
- sigPinned.unpin()
- }
- return secp256k1_ecdsa_verify(context, sig.ptr, nMessage, nPublicKey.ptr) == 1
- }
- }
-}
diff --git a/ecdsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
deleted file mode 100644
index 0928f4cfe..000000000
--- a/ecdsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-package io.iohk.atala.prism.apollo.ecdsa
-
-import io.iohk.atala.prism.apollo.hashing.internal.toHexString
-import io.iohk.atala.prism.apollo.utils.ECConfig
-import io.iohk.atala.prism.apollo.utils.KMMECPrivateKey
-import io.iohk.atala.prism.apollo.utils.KMMECPublicKey
-import io.iohk.atala.prism.apollo.utils.decodeHex
-import io.iohk.atala.prism.apollo.utils.external.ec
-
-actual object KMMECDSA {
- actual fun sign(
- type: ECDSAType,
- data: ByteArray,
- privateKey: KMMECPrivateKey
- ): ByteArray {
- when (type) {
- ECDSAType.ECDSA_SHA256 -> {}
- ECDSAType.ECDSA_SHA384, ECDSAType.ECDSA_SHA512 -> {
- throw NotImplementedError("Only ECDSA with SHA256 is supported")
- }
- }
- val byteList = privateKey.nativeValue.toArray().map { it.toByte() }
- val padding = ByteArray(ECConfig.PRIVATE_KEY_BYTE_SIZE - byteList.size) { 0 }
- val privateKeyBytes = (padding + byteList).toHexString()
-
- val ecjs = ec("secp256k1")
- val signature = ecjs.sign(data.toHexString(), privateKeyBytes, enc = "hex")
- val value = signature.toDER(enc = "hex").unsafeCast()
- return value.decodeHex()
- }
-
- actual fun verify(
- type: ECDSAType,
- data: ByteArray,
- publicKey: KMMECPublicKey,
- signature: ByteArray
- ): Boolean {
- when (type) {
- ECDSAType.ECDSA_SHA256 -> {}
- ECDSAType.ECDSA_SHA384, ECDSAType.ECDSA_SHA512 -> {
- throw NotImplementedError("Only ECDSA with SHA256 is supported")
- }
- }
- val ecjs = ec("secp256k1")
- return ecjs.verify(data.toHexString(), signature.toHexString(), publicKey.getEncoded().toHexString(), enc = "hex")
- }
-}
diff --git a/ecdsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt b/ecdsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
deleted file mode 100644
index 8fa645d39..000000000
--- a/ecdsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/ecdsa/KMMECDSA.kt
+++ /dev/null
@@ -1,43 +0,0 @@
-package io.iohk.atala.prism.apollo.ecdsa
-
-import io.iohk.atala.prism.apollo.utils.KMMECPrivateKey
-import io.iohk.atala.prism.apollo.utils.KMMECPublicKey
-import org.bouncycastle.jce.provider.BouncyCastleProvider
-import java.security.Signature
-
-actual object KMMECDSA {
- private val provider = BouncyCastleProvider()
-
- actual fun sign(
- type: ECDSAType,
- data: ByteArray,
- privateKey: KMMECPrivateKey
- ): ByteArray {
- val signatureAlgorithm = when (type) {
- ECDSAType.ECDSA_SHA256 -> "SHA256withECDSA"
- ECDSAType.ECDSA_SHA384 -> "SHA384withECDSA"
- ECDSAType.ECDSA_SHA512 -> "SHA512withECDSA"
- }
- val signer = Signature.getInstance(signatureAlgorithm, provider)
- signer.initSign(privateKey.nativeValue)
- signer.update(data)
- return signer.sign()
- }
-
- actual fun verify(
- type: ECDSAType,
- data: ByteArray,
- publicKey: KMMECPublicKey,
- signature: ByteArray
- ): Boolean {
- val signatureAlgorithm = when (type) {
- ECDSAType.ECDSA_SHA256 -> "SHA256withECDSA"
- ECDSAType.ECDSA_SHA384 -> "SHA384withECDSA"
- ECDSAType.ECDSA_SHA512 -> "SHA512withECDSA"
- }
- val verifier = Signature.getInstance(signatureAlgorithm, provider)
- verifier.initVerify(publicKey.nativeValue)
- verifier.update(data)
- return verifier.verify(signature)
- }
-}
diff --git a/gradle.properties b/gradle.properties
index fd614ec4c..da34c5854 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,16 +1,8 @@
-#Gradle
-org.gradle.jvmargs=-Xmx3072M -Dkotlin.daemon.jvm.options\="-Xmx3072M"
-
-#Kotlin
-kotlin.code.style=official
-
-#Android
-android.useAndroidX=true
-
-#MPP
-# kotlin.mpp.enableGranularSourceSetsMetadata=true
-# kotlin.native.enableDependencyPropagation=false
-kotlin.mpp.enableCInteropCommonization=true
-kotlin.native.cacheKind.iosSimulatorArm64=none
-kotlin.native.cacheKind.iosX64=none
-kotlin.native.cacheKind.iosArm64=none
+version = 1.0.15
+org.gradle.jvmargs = -Xmx3072M -Dkotlin.daemon.jvm.options="-Xmx3072M"
+kotlin.code.style = official
+android.useAndroidX = true
+kotlin.mpp.enableCInteropCommonization = true
+kotlin.native.cacheKind.iosSimulatorArm64 = none
+kotlin.native.cacheKind.iosX64 = none
+kotlin.native.cacheKind.iosArm64 = none
diff --git a/hashing/src/commonTest/kotlin/io/iohk/atala/prism/apollo/hashing/hmac/HmacSHA512Tests.kt b/hashing/src/commonTest/kotlin/io/iohk/atala/prism/apollo/hashing/hmac/HmacSHA512Tests.kt
index afc6b460f..4d941461f 100644
--- a/hashing/src/commonTest/kotlin/io/iohk/atala/prism/apollo/hashing/hmac/HmacSHA512Tests.kt
+++ b/hashing/src/commonTest/kotlin/io/iohk/atala/prism/apollo/hashing/hmac/HmacSHA512Tests.kt
@@ -7,30 +7,34 @@ import io.iohk.atala.prism.apollo.hashing.internal.toHexString
import kotlin.test.Test
import kotlin.test.assertEquals
+/**
+ * Test From:
+ * - NIST test data
+ * - https://tools.ietf.org/rfc/rfc4231.txt
+ * - https://github.com/crypto-browserify/hash-test-vectors/blob/master/hmac.json
+ * - https://github.com/xsc/pandect/blob/main/test/pandect/hmac_test.clj
+ */
class HmacSHA512Tests : BaseHmacHashTests() {
-
override fun hash(key: ByteArray, stringToHash: ByteArray, outputLength: Int?): String {
val hash = SHA512().createHmac(key, outputLength)
return hash.digest(stringToHash).toHexString()
}
- /**
- * From:
- * - NIST test data
- * - https://tools.ietf.org/rfc/rfc4231.txt
- * - https://github.com/crypto-browserify/hash-test-vectors/blob/master/hmac.json
- * - https://github.com/xsc/pandect/blob/main/test/pandect/hmac_test.clj
- */
-
@Test
fun test_Strings() {
assertEquals(
"fc25e240658ca785b7a811a8d3f7b4ca48cfa26a8a366bf2cd1f836b05fcb024bd36853081811d6cea4216ebad79da1cfcb95ea4586b8a0ce356596a55fb1347",
- hash("000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F", "Sample message for keylen=blocklen")
+ hash(
+ "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F",
+ "Sample message for keylen=blocklen"
+ )
)
assertEquals(
"fd44c18bda0bb0a6ce0e82b031bf2818f6539bd56ec00bdc10a8a2d730b3634de2545d639b0f2cf710d0692c72a1896f1f211c2b922d1a96c392e07e7ea9fedc",
- hash("000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F", "Sample message for keylen
assertEquals(output, hash(key, ByteArray(index) { it.toByte() }))
diff --git a/iOSLibs/build.gradle.kts b/iOSLibs/build.gradle.kts
index 6fd7bb623..4c2166ab9 100644
--- a/iOSLibs/build.gradle.kts
+++ b/iOSLibs/build.gradle.kts
@@ -19,7 +19,7 @@ libraries.forEach { library ->
"-target",
"${library}Iphoneos",
"-sdk",
- sdk,
+ sdk
)
}
"macosx" -> {
@@ -30,7 +30,7 @@ libraries.forEach { library ->
"-target",
"${library}Macos",
"-sdk",
- sdk,
+ sdk
)
}
}
@@ -42,22 +42,22 @@ libraries.forEach { library ->
inputs.files(
fileTree("$projectDir/$library.xcodeproj") { exclude("**/xcuserdata") },
- fileTree("$projectDir/$library"),
+ fileTree("$projectDir/$library")
)
when (sdk) {
"iphoneos" -> {
outputs.files(
- fileTree("$projectDir/$library/build/Release-iphoneos"),
+ fileTree("$projectDir/$library/build/Release-iphoneos")
)
}
"iphonesimulator" -> {
outputs.files(
- fileTree("$projectDir/$library/build/Release-iphonesimulator"),
+ fileTree("$projectDir/$library/build/Release-iphonesimulator")
)
}
"macosx" -> {
outputs.files(
- fileTree("$projectDir/$library/build/Release"),
+ fileTree("$projectDir/$library/build/Release")
)
}
}
diff --git a/jose/build.gradle.kts b/jose/build.gradle.kts
deleted file mode 100644
index ac7d0a97e..000000000
--- a/jose/build.gradle.kts
+++ /dev/null
@@ -1,219 +0,0 @@
-import org.gradle.internal.os.OperatingSystem
-import org.jetbrains.dokka.gradle.DokkaTask
-
-val currentModuleName = "JOSE"
-val os: OperatingSystem = OperatingSystem.current()
-
-plugins {
- kotlin("multiplatform")
- kotlin("native.cocoapods")
- id("com.android.library")
- id("org.jetbrains.dokka")
-}
-
-kotlin {
- android {
- publishAllLibraryVariants()
- }
- jvm {
- compilations.all {
- kotlinOptions {
- jvmTarget = "11"
- }
- }
- testRuns["test"].executionTask.configure {
- useJUnitPlatform()
- }
- }
- if (os.isMacOsX) {
- // ios()
-// tvos()
-// watchos()
-// macosX64()
-// if (System.getProperty("os.arch") != "x86_64") { // M1Chip
-// iosSimulatorArm64()
-// tvosSimulatorArm64()
-// watchosSimulatorArm64()
-// macosArm64()
-// }
- }
-// if (os.isWindows) {
-// // mingwX86() // it depend on kotlinx-datetime lib to support this platform before we can support it as well
-// mingwX64()
-// }
-// js(IR) {
-// this.moduleName = currentModuleName
-// this.binaries.library()
-// this.useCommonJs()
-// this.compilations["main"].packageJson {
-// this.version = rootProject.version.toString()
-// }
-// this.compilations["test"].packageJson {
-// this.version = rootProject.version.toString()
-// }
-// browser {
-// this.webpackTask {
-// this.output.library = currentModuleName
-// this.output.libraryTarget = Target.VAR
-// }
-// this.commonWebpackConfig {
-// this.cssSupport {
-// this.enabled = true
-// }
-// }
-// this.testTask {
-// if (os.isWindows) {
-// this.enabled = false
-// }
-// this.useKarma {
-// this.useChromeHeadless()
-// }
-// }
-// }
-// nodejs {
-// this.testTask {
-// if (os.isWindows) {
-// this.enabled = false
-// }
-// this.useKarma {
-// this.useChromeHeadless()
-// }
-// }
-// }
-// }
-
- if (os.isMacOsX) {
- cocoapods {
- this.summary = "JOSE is JSON Object Signing and Encryption"
- this.version = rootProject.version.toString()
- this.authors = "IOG"
- this.ios.deploymentTarget = "13.0"
- this.osx.deploymentTarget = "12.0"
- this.tvos.deploymentTarget = "13.0"
- this.watchos.deploymentTarget = "8.0"
- framework {
- this.baseName = currentModuleName
- }
- }
- }
-
- sourceSets {
- val commonMain by getting
- val commonTest by getting {
- dependencies {
- implementation(kotlin("test"))
- }
- }
- val jvmMain by getting {
- dependencies {
- implementation("com.nimbusds:nimbus-jose-jwt:9.31")
- }
- }
- val jvmTest by getting
- val androidMain by getting {
- dependencies {
- implementation("com.nimbusds:nimbus-jose-jwt:9.31")
- }
- }
- val androidTest by getting {
- dependencies {
- implementation("junit:junit:4.13.2")
- }
- }
-// val jsMain by getting
-// val jsTest by getting
- if (os.isMacOsX) {
-// val iosMain by getting
-// val iosTest by getting
-// val tvosMain by getting
-// val tvosTest by getting
-// val watchosMain by getting
-// val watchosTest by getting
-// val macosX64Main by getting
-// val macosX64Test by getting
- if (System.getProperty("os.arch") != "x86_64") { // M1Chip
-// val iosSimulatorArm64Main by getting {
-// this.dependsOn(iosMain)
-// }
-// val iosSimulatorArm64Test by getting {
-// this.dependsOn(iosTest)
-// }
-// val tvosSimulatorArm64Main by getting {
-// this.dependsOn(tvosMain)
-// }
-// val tvosSimulatorArm64Test by getting {
-// this.dependsOn(tvosTest)
-// }
-// val watchosSimulatorArm64Main by getting {
-// this.dependsOn(watchosMain)
-// }
-// val watchosSimulatorArm64Test by getting {
-// this.dependsOn(watchosTest)
-// }
-// val macosArm64Main by getting {
-// this.dependsOn(macosX64Main)
-// }
-// val macosArm64Test by getting {
-// this.dependsOn(macosX64Test)
-// }
- }
- }
-// if (os.isWindows) {
-// // val mingwX86Main by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well
-// // val mingwX86Test by getting // it depend on kotlinx-datetime lib to support this platform before we can support it as well
-// val mingwX64Main by getting
-// val mingwX64Test by getting
-// }
- }
-}
-
-android {
- compileSdk = 32
- sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
- defaultConfig {
- minSdk = 21
- targetSdk = 32
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_11
- targetCompatibility = JavaVersion.VERSION_11
- }
- /**
- * Because Software Components will not be created automatically for Maven publishing from
- * Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.
- * disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new
- * publishing DSL.
- */
- publishing {
- multipleVariants {
- withSourcesJar()
- withJavadocJar()
- allVariants()
- }
- }
-}
-
-// Dokka implementation
-tasks.withType {
- moduleName.set(project.name)
- moduleVersion.set(rootProject.version.toString())
- description = """
- This is a Kotlin Multiplatform Library for JOSE - JSON Object Signing and Encryption
- """.trimIndent()
- dokkaSourceSets {
- // TODO: Figure out how to include files to the documentations
- named("commonMain") {
- includes.from("Module.md", "docs/Module.md")
- }
- }
-}
-
-// afterEvaluate {
-// tasks.withType {
-// testLogging {
-// events("passed", "skipped", "failed", "standard_out", "standard_error")
-// showExceptions = true
-// showStackTraces = true
-// }
-// }
-// }
diff --git a/jose/jose.podspec b/jose/jose.podspec
deleted file mode 100644
index 02a6fa529..000000000
--- a/jose/jose.podspec
+++ /dev/null
@@ -1,42 +0,0 @@
-Pod::Spec.new do |spec|
- spec.name = 'jose'
- spec.version = '1.7.0-alpha'
- spec.homepage = ''
- spec.source = { :http=> ''}
- spec.authors = 'IOG'
- spec.license = ''
- spec.summary = 'JOSE is JSON Object Signing and Encryption'
- spec.vendored_frameworks = 'build/cocoapods/framework/jose.framework'
- spec.libraries = 'c++'
- spec.ios.deployment_target = '13.0'
- spec.osx.deployment_target = '12.0'
- spec.tvos.deployment_target = '13.0'
- spec.watchos.deployment_target = '8.0'
-
-
- spec.pod_target_xcconfig = {
- 'KOTLIN_PROJECT_PATH' => ':jose',
- 'PRODUCT_MODULE_NAME' => 'jose',
- }
-
- spec.script_phases = [
- {
- :name => 'Build jose',
- :execution_position => :before_compile,
- :shell_path => '/bin/sh',
- :script => <<-SCRIPT
- if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
- echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
- exit 0
- fi
- set -ev
- REPO_ROOT="$PODS_TARGET_SRCROOT"
- "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
- -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
- -Pkotlin.native.cocoapods.archs="$ARCHS" \
- -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
- SCRIPT
- }
- ]
-
-end
\ No newline at end of file
diff --git a/jose/src/androidMain/AndroidManifest.xml b/jose/src/androidMain/AndroidManifest.xml
deleted file mode 100644
index 09bb0c772..000000000
--- a/jose/src/androidMain/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/jose/src/androidMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt b/jose/src/androidMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt
deleted file mode 100644
index ac7648732..000000000
--- a/jose/src/androidMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt
+++ /dev/null
@@ -1,199 +0,0 @@
-package io.iohk.atala.prism.apollo.jose
-
-import com.nimbusds.jose.JOSEException
-import com.nimbusds.jose.JOSEObjectType
-import com.nimbusds.jose.JWSAlgorithm
-import com.nimbusds.jose.JWSHeader
-import com.nimbusds.jose.JWSObject
-import com.nimbusds.jose.JWSObjectJSON
-import com.nimbusds.jose.Payload
-import com.nimbusds.jose.UnprotectedHeader
-import com.nimbusds.jose.crypto.ECDSASigner
-import com.nimbusds.jose.crypto.ECDSAVerifier
-import com.nimbusds.jose.crypto.Ed25519Signer
-import com.nimbusds.jose.crypto.Ed25519Verifier
-import com.nimbusds.jose.jwk.Curve
-import com.nimbusds.jose.jwk.ECKey
-import com.nimbusds.jose.jwk.JWK
-import com.nimbusds.jose.jwk.OctetKeyPair
-import com.nimbusds.jose.util.Base64URL
-import com.nimbusds.jwt.JWTClaimsSet
-import com.nimbusds.jwt.SignedJWT
-import java.security.SignatureException
-
-sealed interface Key {
- val id: String
- val jwk: JWK
- val curve: Curve
-}
-
-enum class Typ(val typ: String) {
- Encrypted("application/didcomm-encrypted+json"),
- Signed("application/didcomm-signed+json"),
- Plaintext("application/didcomm-plain+json");
-
- companion object {
- fun parse(str: String): Typ = when (str) {
- "application/didcomm-encrypted+json" -> Encrypted
- "application/didcomm-signed+json" -> Signed
- "application/didcomm-plain+json" -> Plaintext
- else -> throw IllegalArgumentException("Unsupported message typ")
- }
- }
-}
-
-enum class SignAlg {
- /**
- * Elliptic curve digital signature with edwards curves Ed25519 and SHA-512
- */
- ED25519,
-
- /**
- * Elliptic curve digital signature with NIST p-256 curve and SHA-256
- */
- ES256,
-
- /**
- * Elliptic curve digital signature with Secp256k1 keys
- */
- ES256K
-}
-
-inline fun JWK.asKey(): Key {
- if (this !is Key) throw IllegalArgumentException("Can not cast JWK to ${Key::class.java.name}")
- return this
-}
-
-object JWS {
- fun sign(payload: String, key: Key): String {
- val jwk = key.jwk
- val alg = getJWSAlgorithm(jwk)
-
- val signer = try {
- when (alg) {
- JWSAlgorithm.ES256 -> ECDSASigner(jwk.asKey())
- JWSAlgorithm.ES256K -> ECDSASigner(jwk.asKey())
- JWSAlgorithm.EdDSA -> Ed25519Signer(jwk.asKey())
- else -> throw NotImplementedError(alg.name)
- }
- } catch (e: JOSEException) {
- throw NotImplementedError(alg.name)
- }
-
- val jwsProtectedHeader = JWSHeader.Builder(alg)
- .type(JOSEObjectType(Typ.Signed.typ))
- .build()
-
- val jwsUnprotectedHeader = UnprotectedHeader.Builder().keyID(key.id).build()
- return JWSObjectJSON(Payload(Base64URL.encode(payload)))
- .apply {
- try {
- sign(jwsProtectedHeader, jwsUnprotectedHeader, signer)
- } catch (e: JOSEException) {
- // this can be thrown if the signature type is not supported
- // example: curve256k1 is not supported in JDK >= 15
- if (e.cause is SignatureException) {
- throw NotImplementedError("Unsupported signature algorithm ${e.cause}")
- }
- throw NotImplementedError("JWS cannot be signed $e")
- }
- }
- .serializeGeneral()
- }
-
- fun verify(signature: JWSObjectJSON.Signature, signAlg: SignAlg, key: Key) {
- val jwk = key.jwk
-
- val verifier = try {
- when (signAlg) {
- SignAlg.ES256 -> ECDSAVerifier(jwk.asKey())
- SignAlg.ES256K -> ECDSAVerifier(jwk.asKey())
- SignAlg.ED25519 -> Ed25519Verifier(jwk.asKey())
- }
- } catch (e: JOSEException) {
- throw NotImplementedError(signAlg.name)
- }
-
- try {
- if (!signature.verify(verifier)) {
- throw NotImplementedError("Invalid signature")
- }
- } catch (e: JOSEException) {
- // this can be thrown if the signature type is not supported
- // example: curve256k1 is not supported in JDK >= 15
- if (e.cause is SignatureException) {
- throw NotImplementedError("Unsupported signature algorithm ${e.cause}")
- }
- throw NotImplementedError("JWS signature cannot be verified $e")
- }
- }
-}
-
-object JWT {
- fun sign(jwtClaimsSet: JWTClaimsSet, key: Key): String {
- val jwk = key.jwk
- val alg = getJWSAlgorithm(jwk)
-
- val signer = try {
- when (alg) {
- JWSAlgorithm.ES256 -> ECDSASigner(jwk.asKey())
- JWSAlgorithm.ES256K -> ECDSASigner(jwk.asKey())
- JWSAlgorithm.EdDSA -> Ed25519Signer(jwk.asKey())
- else -> throw NotImplementedError(alg.name)
- }
- } catch (e: JOSEException) {
- throw NotImplementedError(alg.name)
- }
-
- val jwsHeader = JWSHeader.Builder(alg)
- .keyID(key.id)
- .build()
-
- return SignedJWT(jwsHeader, jwtClaimsSet).apply {
- try {
- sign(signer)
- } catch (e: JOSEException) {
- throw NotImplementedError("JWT cannot be signed $e")
- }
- }.serialize()
- }
-}
-
-private fun getCryptoAlg(signature: JWSObjectJSON.Signature): SignAlg {
- return when (val alg = signature.header.algorithm) {
- JWSAlgorithm.ES256 -> SignAlg.ES256
- JWSAlgorithm.ES256K -> SignAlg.ES256K
- JWSAlgorithm.EdDSA -> SignAlg.ED25519
- else -> throw NotImplementedError("UnsupportedCurveException ${alg.name}")
- }
-}
-
-private fun getJWSAlgorithm(jwk: JWK): JWSAlgorithm {
- return when (jwk) {
- is ECKey -> {
- when (jwk.curve) {
- Curve.P_256 -> JWSAlgorithm.ES256
- Curve.SECP256K1 -> JWSAlgorithm.ES256K
- else -> {
- throw NotImplementedError("UnsupportedCurveException ${jwk.curve}")
- }
- }
- }
- is OctetKeyPair -> {
- when (jwk.curve) {
- Curve.Ed25519 -> JWSAlgorithm.EdDSA
- else -> throw NotImplementedError("UnsupportedCurveException ${jwk.curve.name}")
- }
- }
- else -> throw NotImplementedError("UnsupportedCurveException ${jwk.javaClass.name}")
- }
-}
-
-private fun getCryptoAlg(jws: JWSObject): SignAlg {
- return when (val alg = jws.header.algorithm) {
- JWSAlgorithm.ES256 -> SignAlg.ES256
- JWSAlgorithm.ES256K -> SignAlg.ES256K
- JWSAlgorithm.EdDSA -> SignAlg.ED25519
- else -> throw NotImplementedError(alg.name)
- }
-}
diff --git a/jose/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt b/jose/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt
deleted file mode 100644
index ac7648732..000000000
--- a/jose/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/jose/JOSE.kt
+++ /dev/null
@@ -1,199 +0,0 @@
-package io.iohk.atala.prism.apollo.jose
-
-import com.nimbusds.jose.JOSEException
-import com.nimbusds.jose.JOSEObjectType
-import com.nimbusds.jose.JWSAlgorithm
-import com.nimbusds.jose.JWSHeader
-import com.nimbusds.jose.JWSObject
-import com.nimbusds.jose.JWSObjectJSON
-import com.nimbusds.jose.Payload
-import com.nimbusds.jose.UnprotectedHeader
-import com.nimbusds.jose.crypto.ECDSASigner
-import com.nimbusds.jose.crypto.ECDSAVerifier
-import com.nimbusds.jose.crypto.Ed25519Signer
-import com.nimbusds.jose.crypto.Ed25519Verifier
-import com.nimbusds.jose.jwk.Curve
-import com.nimbusds.jose.jwk.ECKey
-import com.nimbusds.jose.jwk.JWK
-import com.nimbusds.jose.jwk.OctetKeyPair
-import com.nimbusds.jose.util.Base64URL
-import com.nimbusds.jwt.JWTClaimsSet
-import com.nimbusds.jwt.SignedJWT
-import java.security.SignatureException
-
-sealed interface Key {
- val id: String
- val jwk: JWK
- val curve: Curve
-}
-
-enum class Typ(val typ: String) {
- Encrypted("application/didcomm-encrypted+json"),
- Signed("application/didcomm-signed+json"),
- Plaintext("application/didcomm-plain+json");
-
- companion object {
- fun parse(str: String): Typ = when (str) {
- "application/didcomm-encrypted+json" -> Encrypted
- "application/didcomm-signed+json" -> Signed
- "application/didcomm-plain+json" -> Plaintext
- else -> throw IllegalArgumentException("Unsupported message typ")
- }
- }
-}
-
-enum class SignAlg {
- /**
- * Elliptic curve digital signature with edwards curves Ed25519 and SHA-512
- */
- ED25519,
-
- /**
- * Elliptic curve digital signature with NIST p-256 curve and SHA-256
- */
- ES256,
-
- /**
- * Elliptic curve digital signature with Secp256k1 keys
- */
- ES256K
-}
-
-inline fun JWK.asKey(): Key {
- if (this !is Key) throw IllegalArgumentException("Can not cast JWK to ${Key::class.java.name}")
- return this
-}
-
-object JWS {
- fun sign(payload: String, key: Key): String {
- val jwk = key.jwk
- val alg = getJWSAlgorithm(jwk)
-
- val signer = try {
- when (alg) {
- JWSAlgorithm.ES256 -> ECDSASigner(jwk.asKey())
- JWSAlgorithm.ES256K -> ECDSASigner(jwk.asKey())
- JWSAlgorithm.EdDSA -> Ed25519Signer(jwk.asKey())
- else -> throw NotImplementedError(alg.name)
- }
- } catch (e: JOSEException) {
- throw NotImplementedError(alg.name)
- }
-
- val jwsProtectedHeader = JWSHeader.Builder(alg)
- .type(JOSEObjectType(Typ.Signed.typ))
- .build()
-
- val jwsUnprotectedHeader = UnprotectedHeader.Builder().keyID(key.id).build()
- return JWSObjectJSON(Payload(Base64URL.encode(payload)))
- .apply {
- try {
- sign(jwsProtectedHeader, jwsUnprotectedHeader, signer)
- } catch (e: JOSEException) {
- // this can be thrown if the signature type is not supported
- // example: curve256k1 is not supported in JDK >= 15
- if (e.cause is SignatureException) {
- throw NotImplementedError("Unsupported signature algorithm ${e.cause}")
- }
- throw NotImplementedError("JWS cannot be signed $e")
- }
- }
- .serializeGeneral()
- }
-
- fun verify(signature: JWSObjectJSON.Signature, signAlg: SignAlg, key: Key) {
- val jwk = key.jwk
-
- val verifier = try {
- when (signAlg) {
- SignAlg.ES256 -> ECDSAVerifier(jwk.asKey())
- SignAlg.ES256K -> ECDSAVerifier(jwk.asKey())
- SignAlg.ED25519 -> Ed25519Verifier(jwk.asKey())
- }
- } catch (e: JOSEException) {
- throw NotImplementedError(signAlg.name)
- }
-
- try {
- if (!signature.verify(verifier)) {
- throw NotImplementedError("Invalid signature")
- }
- } catch (e: JOSEException) {
- // this can be thrown if the signature type is not supported
- // example: curve256k1 is not supported in JDK >= 15
- if (e.cause is SignatureException) {
- throw NotImplementedError("Unsupported signature algorithm ${e.cause}")
- }
- throw NotImplementedError("JWS signature cannot be verified $e")
- }
- }
-}
-
-object JWT {
- fun sign(jwtClaimsSet: JWTClaimsSet, key: Key): String {
- val jwk = key.jwk
- val alg = getJWSAlgorithm(jwk)
-
- val signer = try {
- when (alg) {
- JWSAlgorithm.ES256 -> ECDSASigner(jwk.asKey())
- JWSAlgorithm.ES256K -> ECDSASigner(jwk.asKey())
- JWSAlgorithm.EdDSA -> Ed25519Signer(jwk.asKey())
- else -> throw NotImplementedError(alg.name)
- }
- } catch (e: JOSEException) {
- throw NotImplementedError(alg.name)
- }
-
- val jwsHeader = JWSHeader.Builder(alg)
- .keyID(key.id)
- .build()
-
- return SignedJWT(jwsHeader, jwtClaimsSet).apply {
- try {
- sign(signer)
- } catch (e: JOSEException) {
- throw NotImplementedError("JWT cannot be signed $e")
- }
- }.serialize()
- }
-}
-
-private fun getCryptoAlg(signature: JWSObjectJSON.Signature): SignAlg {
- return when (val alg = signature.header.algorithm) {
- JWSAlgorithm.ES256 -> SignAlg.ES256
- JWSAlgorithm.ES256K -> SignAlg.ES256K
- JWSAlgorithm.EdDSA -> SignAlg.ED25519
- else -> throw NotImplementedError("UnsupportedCurveException ${alg.name}")
- }
-}
-
-private fun getJWSAlgorithm(jwk: JWK): JWSAlgorithm {
- return when (jwk) {
- is ECKey -> {
- when (jwk.curve) {
- Curve.P_256 -> JWSAlgorithm.ES256
- Curve.SECP256K1 -> JWSAlgorithm.ES256K
- else -> {
- throw NotImplementedError("UnsupportedCurveException ${jwk.curve}")
- }
- }
- }
- is OctetKeyPair -> {
- when (jwk.curve) {
- Curve.Ed25519 -> JWSAlgorithm.EdDSA
- else -> throw NotImplementedError("UnsupportedCurveException ${jwk.curve.name}")
- }
- }
- else -> throw NotImplementedError("UnsupportedCurveException ${jwk.javaClass.name}")
- }
-}
-
-private fun getCryptoAlg(jws: JWSObject): SignAlg {
- return when (val alg = jws.header.algorithm) {
- JWSAlgorithm.ES256 -> SignAlg.ES256
- JWSAlgorithm.ES256K -> SignAlg.ES256K
- JWSAlgorithm.EdDSA -> SignAlg.ED25519
- else -> throw NotImplementedError(alg.name)
- }
-}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 000000000..7ec89ef51
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,8106 @@
+{
+ "name": "atala-prism-apollo",
+ "version": "0.1.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "atala-prism-apollo",
+ "version": "0.1.0",
+ "license": "ISC",
+ "devDependencies": {
+ "@semantic-release/changelog": "^6.0.2",
+ "@semantic-release/exec": "^6.0.3",
+ "@semantic-release/git": "^10.0.1",
+ "gradle-semantic-release-plugin": "1.7.7",
+ "semantic-release": "^21.0.2",
+ "semantic-release-slack-bot": "^4.0.2"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz",
+ "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
+ "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@octokit/auth-token": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
+ "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/core": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.1.tgz",
+ "integrity": "sha512-lyeeeZyESFo+ffI801SaBKmCfsvarO+dgV8/0gD8u1d87clbEdWsP5yC+dSj3zLhb2eIf5SJrn6vDz9AheETHw==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/auth-token": "^4.0.0",
+ "@octokit/graphql": "^7.0.0",
+ "@octokit/request": "^8.0.2",
+ "@octokit/request-error": "^5.0.0",
+ "@octokit/types": "^12.0.0",
+ "before-after-hook": "^2.2.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/endpoint": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.2.tgz",
+ "integrity": "sha512-qhKW8YLIi+Kmc92FQUFGr++DYtkx/1fBv+Thua6baqnjnOsgBYJDCvWZR1YcINuHGOEQt416WOfE+A/oG60NBQ==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/types": "^12.0.0",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/graphql": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz",
+ "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/request": "^8.0.1",
+ "@octokit/types": "^12.0.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/openapi-types": {
+ "version": "19.0.2",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.0.2.tgz",
+ "integrity": "sha512-8li32fUDUeml/ACRp/njCWTsk5t17cfTM1jp9n08pBrqs5cDFJubtjsSnuz56r5Tad6jdEPJld7LxNp9dNcyjQ==",
+ "dev": true
+ },
+ "node_modules/@octokit/plugin-paginate-rest": {
+ "version": "9.1.3",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.3.tgz",
+ "integrity": "sha512-gm4KmW+pdAfCO5cXJyRZnNfnPE9r6OGpRG8JZpI0eSo1XVk7LXoRcdS7aP4L9azdV0ncHazsLAI0knKjr+snPg==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/types": "^12.2.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=5"
+ }
+ },
+ "node_modules/@octokit/plugin-retry": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz",
+ "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/request-error": "^5.0.0",
+ "@octokit/types": "^12.0.0",
+ "bottleneck": "^2.15.3"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": ">=5"
+ }
+ },
+ "node_modules/@octokit/plugin-throttling": {
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.1.2.tgz",
+ "integrity": "sha512-oFba+ioR6HGb0fgqxMta7Kpk/MdffUTuUxNY856l1nXPvh7Qggp8w4AksRx1SDA8SGd+4cbrpkY4k1J/Xz8nZQ==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/types": "^12.0.0",
+ "bottleneck": "^2.15.3"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "peerDependencies": {
+ "@octokit/core": "^5.0.0"
+ }
+ },
+ "node_modules/@octokit/request": {
+ "version": "8.1.5",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.5.tgz",
+ "integrity": "sha512-zVKbNbX1xUluD9ZR4/tPs1yuYrK9xeh5fGZUXA6u04XGsTvomg0YO8/ZUC0FqAd49hAOEMFPAVUTh+2lBhOhLA==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/endpoint": "^9.0.0",
+ "@octokit/request-error": "^5.0.0",
+ "@octokit/types": "^12.0.0",
+ "is-plain-object": "^5.0.0",
+ "universal-user-agent": "^6.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/request-error": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz",
+ "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/types": "^12.0.0",
+ "deprecation": "^2.0.0",
+ "once": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/@octokit/types": {
+ "version": "12.2.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.2.0.tgz",
+ "integrity": "sha512-ZkdHqHJdifVndN7Pha10+qrgAjy3AcG//Vmjr/o5UFuTiYCcMhqDj39Yr9VM9zJ/42KO2xAYhV7cvLnLI9Kvwg==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/openapi-types": "^19.0.2"
+ }
+ },
+ "node_modules/@pnpm/config.env-replace": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
+ "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/@pnpm/network.ca-file": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz",
+ "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "4.2.10"
+ },
+ "engines": {
+ "node": ">=12.22.0"
+ }
+ },
+ "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": {
+ "version": "4.2.10",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
+ "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
+ "dev": true
+ },
+ "node_modules/@pnpm/npm-conf": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz",
+ "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==",
+ "dev": true,
+ "dependencies": {
+ "@pnpm/config.env-replace": "^1.1.0",
+ "@pnpm/network.ca-file": "^1.0.1",
+ "config-chain": "^1.1.11"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@semantic-release/changelog": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz",
+ "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==",
+ "dev": true,
+ "dependencies": {
+ "@semantic-release/error": "^3.0.0",
+ "aggregate-error": "^3.0.0",
+ "fs-extra": "^11.0.0",
+ "lodash": "^4.17.4"
+ },
+ "engines": {
+ "node": ">=14.17"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=18.0.0"
+ }
+ },
+ "node_modules/@semantic-release/commit-analyzer": {
+ "version": "10.0.4",
+ "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-10.0.4.tgz",
+ "integrity": "sha512-pFGn99fn8w4/MHE0otb2A/l5kxgOuxaaauIh4u30ncoTJuqWj4hXTgEJ03REqjS+w1R2vPftSsO26WC61yOcpw==",
+ "dev": true,
+ "dependencies": {
+ "conventional-changelog-angular": "^6.0.0",
+ "conventional-commits-filter": "^3.0.0",
+ "conventional-commits-parser": "^5.0.0",
+ "debug": "^4.0.0",
+ "import-from": "^4.0.0",
+ "lodash-es": "^4.17.21",
+ "micromatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=20.1.0"
+ }
+ },
+ "node_modules/@semantic-release/error": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz",
+ "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/@semantic-release/exec": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/@semantic-release/exec/-/exec-6.0.3.tgz",
+ "integrity": "sha512-bxAq8vLOw76aV89vxxICecEa8jfaWwYITw6X74zzlO0mc/Bgieqx9kBRz9z96pHectiTAtsCwsQcUyLYWnp3VQ==",
+ "dev": true,
+ "dependencies": {
+ "@semantic-release/error": "^3.0.0",
+ "aggregate-error": "^3.0.0",
+ "debug": "^4.0.0",
+ "execa": "^5.0.0",
+ "lodash": "^4.17.4",
+ "parse-json": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=14.17"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=18.0.0"
+ }
+ },
+ "node_modules/@semantic-release/git": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz",
+ "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==",
+ "dev": true,
+ "dependencies": {
+ "@semantic-release/error": "^3.0.0",
+ "aggregate-error": "^3.0.0",
+ "debug": "^4.0.0",
+ "dir-glob": "^3.0.0",
+ "execa": "^5.0.0",
+ "lodash": "^4.17.4",
+ "micromatch": "^4.0.0",
+ "p-reduce": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.17"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=18.0.0"
+ }
+ },
+ "node_modules/@semantic-release/github": {
+ "version": "9.2.3",
+ "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.3.tgz",
+ "integrity": "sha512-FAjXb1F84CVI6IG8fWi+XS9ErYD+s3MHkP03zBa3+GyUrV4kqwYu/WPppIciHxujGFR51SAWPkOY5rnH6ZlrxA==",
+ "dev": true,
+ "dependencies": {
+ "@octokit/core": "^5.0.0",
+ "@octokit/plugin-paginate-rest": "^9.0.0",
+ "@octokit/plugin-retry": "^6.0.0",
+ "@octokit/plugin-throttling": "^8.0.0",
+ "@semantic-release/error": "^4.0.0",
+ "aggregate-error": "^5.0.0",
+ "debug": "^4.3.4",
+ "dir-glob": "^3.0.1",
+ "globby": "^14.0.0",
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "issue-parser": "^6.0.0",
+ "lodash-es": "^4.17.21",
+ "mime": "^3.0.0",
+ "p-filter": "^3.0.0",
+ "url-join": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=20.1.0"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/@semantic-release/error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
+ "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/aggregate-error": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
+ "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
+ "dev": true,
+ "dependencies": {
+ "clean-stack": "^5.2.0",
+ "indent-string": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/clean-stack": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz",
+ "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "5.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/github/node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm": {
+ "version": "10.0.6",
+ "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-10.0.6.tgz",
+ "integrity": "sha512-DyqHrGE8aUyapA277BB+4kV0C4iMHh3sHzUWdf0jTgp5NNJxVUz76W1f57FB64Ue03him3CBXxFqQD2xGabxow==",
+ "dev": true,
+ "dependencies": {
+ "@semantic-release/error": "^4.0.0",
+ "aggregate-error": "^5.0.0",
+ "execa": "^8.0.0",
+ "fs-extra": "^11.0.0",
+ "lodash-es": "^4.17.21",
+ "nerf-dart": "^1.0.0",
+ "normalize-url": "^8.0.0",
+ "npm": "^9.5.0",
+ "rc": "^1.2.8",
+ "read-pkg": "^8.0.0",
+ "registry-auth-token": "^5.0.0",
+ "semver": "^7.1.2",
+ "tempy": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=20.1.0"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
+ "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/aggregate-error": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
+ "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
+ "dev": true,
+ "dependencies": {
+ "clean-stack": "^5.2.0",
+ "indent-string": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/clean-stack": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz",
+ "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "5.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/execa": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
+ "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^8.0.1",
+ "human-signals": "^5.0.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/get-stream": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
+ "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/human-signals": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
+ "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.17.0"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@semantic-release/npm/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@semantic-release/release-notes-generator": {
+ "version": "11.0.7",
+ "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-11.0.7.tgz",
+ "integrity": "sha512-T09QB9ImmNx7Q6hY6YnnEbw/rEJ6a+22LBxfZq+pSAXg/OL/k0siwEm5cK4k1f9dE2Z2mPIjJKKohzUm0jbxcQ==",
+ "dev": true,
+ "dependencies": {
+ "conventional-changelog-angular": "^6.0.0",
+ "conventional-changelog-writer": "^6.0.0",
+ "conventional-commits-filter": "^4.0.0",
+ "conventional-commits-parser": "^5.0.0",
+ "debug": "^4.0.0",
+ "get-stream": "^7.0.0",
+ "import-from": "^4.0.0",
+ "into-stream": "^7.0.0",
+ "lodash-es": "^4.17.21",
+ "read-pkg-up": "^10.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=20.1.0"
+ }
+ },
+ "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-filter": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz",
+ "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz",
+ "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz",
+ "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@types/mdast": {
+ "version": "3.0.15",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
+ "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "^2"
+ }
+ },
+ "node_modules/@types/minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==",
+ "dev": true
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
+ "dev": true
+ },
+ "node_modules/@types/unist": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
+ "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==",
+ "dev": true
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz",
+ "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dev": true,
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz",
+ "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/ansicolors": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz",
+ "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==",
+ "dev": true
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/argv-formatter": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz",
+ "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==",
+ "dev": true
+ },
+ "node_modules/array-ify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
+ "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
+ "dev": true
+ },
+ "node_modules/arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/bail": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz",
+ "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/before-after-hook": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
+ "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
+ "dev": true
+ },
+ "node_modules/bottleneck": {
+ "version": "2.19.5",
+ "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz",
+ "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==",
+ "dev": true
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase-keys": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+ "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+ "dev": true,
+ "dependencies": {
+ "camelcase": "^5.3.1",
+ "map-obj": "^4.0.0",
+ "quick-lru": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cardinal": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz",
+ "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==",
+ "dev": true,
+ "dependencies": {
+ "ansicolors": "~0.3.2",
+ "redeyed": "~2.1.0"
+ },
+ "bin": {
+ "cdl": "bin/cdl.js"
+ }
+ },
+ "node_modules/ccount": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz",
+ "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/character-entities": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz",
+ "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-entities-legacy": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz",
+ "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/character-reference-invalid": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz",
+ "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cli-table3": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz",
+ "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ },
+ "optionalDependencies": {
+ "@colors/colors": "1.5.0"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "node_modules/compare-func": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
+ "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
+ "dev": true,
+ "dependencies": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^5.1.0"
+ }
+ },
+ "node_modules/config-chain": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+ "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+ "dev": true,
+ "dependencies": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
+ "node_modules/conventional-changelog-angular": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz",
+ "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==",
+ "dev": true,
+ "dependencies": {
+ "compare-func": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/conventional-changelog-writer": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz",
+ "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==",
+ "dev": true,
+ "dependencies": {
+ "conventional-commits-filter": "^3.0.0",
+ "dateformat": "^3.0.3",
+ "handlebars": "^4.7.7",
+ "json-stringify-safe": "^5.0.1",
+ "meow": "^8.1.2",
+ "semver": "^7.0.0",
+ "split": "^1.0.1"
+ },
+ "bin": {
+ "conventional-changelog-writer": "cli.js"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/conventional-commits-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz",
+ "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==",
+ "dev": true,
+ "dependencies": {
+ "lodash.ismatch": "^4.4.0",
+ "modify-values": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/conventional-commits-parser": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz",
+ "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==",
+ "dev": true,
+ "dependencies": {
+ "is-text-path": "^2.0.0",
+ "JSONStream": "^1.3.5",
+ "meow": "^12.0.1",
+ "split2": "^4.0.0"
+ },
+ "bin": {
+ "conventional-commits-parser": "cli.mjs"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/conventional-commits-parser/node_modules/meow": {
+ "version": "12.1.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz",
+ "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true
+ },
+ "node_modules/cosmiconfig": {
+ "version": "8.3.6",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz",
+ "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==",
+ "dev": true,
+ "dependencies": {
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0",
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
+ "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/crypto-random-string/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/dateformat": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decamelize-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
+ "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
+ "dev": true,
+ "dependencies": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/decamelize-keys/node_modules/map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/deprecation": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
+ "dev": true
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/env-ci": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-9.1.1.tgz",
+ "integrity": "sha512-Im2yEWeF4b2RAMAaWvGioXk6m0UNaIjD8hj28j2ij5ldnIFrDQT0+pzDvpbRkcjurhXhf/AsBKv8P2rtmGi9Aw==",
+ "dev": true,
+ "dependencies": {
+ "execa": "^7.0.0",
+ "java-properties": "^1.0.2"
+ },
+ "engines": {
+ "node": "^16.14 || >=18"
+ }
+ },
+ "node_modules/env-ci/node_modules/execa": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz",
+ "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^4.3.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/env-ci/node_modules/human-signals": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
+ "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.18.0"
+ }
+ },
+ "node_modules/env-ci/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/env-ci/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/figures": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz",
+ "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^5.0.0",
+ "is-unicode-supported": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/figures/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz",
+ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^7.1.0",
+ "path-exists": "^5.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/find-versions": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz",
+ "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==",
+ "dev": true,
+ "dependencies": {
+ "semver-regex": "^4.0.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
+ "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/git-log-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz",
+ "integrity": "sha512-rnCVNfkTL8tdNryFuaY0fYiBWEBcgF748O6ZI61rslBvr2o7U65c2/6npCRqH40vuAhtgtDiqLTJjBVdrejCzA==",
+ "dev": true,
+ "dependencies": {
+ "argv-formatter": "~1.0.0",
+ "spawn-error-forwarder": "~1.0.0",
+ "split2": "~1.0.0",
+ "stream-combiner2": "~1.1.1",
+ "through2": "~2.0.0",
+ "traverse": "~0.6.6"
+ }
+ },
+ "node_modules/git-log-parser/node_modules/split2": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz",
+ "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==",
+ "dev": true,
+ "dependencies": {
+ "through2": "~2.0.0"
+ }
+ },
+ "node_modules/git-log-parser/node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/globby": {
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz",
+ "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^1.0.0",
+ "fast-glob": "^3.3.2",
+ "ignore": "^5.2.4",
+ "path-type": "^5.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby/node_modules/path-type": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
+ "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/gradle-semantic-release-plugin": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/gradle-semantic-release-plugin/-/gradle-semantic-release-plugin-1.7.7.tgz",
+ "integrity": "sha512-tfjK+aO3FDADl3zZGJwa5dcQK+iLIc+vao8PD1z+wEiNi0kQPfod6n7kTEZdi2IoaueUAQ4BqvImf249FSSyLg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/KengoTODA"
+ }
+ ],
+ "dependencies": {
+ "promisified-properties": "^2.0.27",
+ "split2": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "semantic-release": "^21.0.2"
+ }
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "node_modules/hard-rejection": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
+ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hook-std": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz",
+ "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz",
+ "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.2.tgz",
+ "integrity": "sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz",
+ "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==",
+ "dev": true,
+ "dependencies": {
+ "agent-base": "^7.0.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/import-fresh/node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/import-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz",
+ "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true
+ },
+ "node_modules/into-stream": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz",
+ "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==",
+ "dev": true,
+ "dependencies": {
+ "from2": "^2.3.0",
+ "p-is-promise": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-alphabetical": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz",
+ "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-alphanumerical": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz",
+ "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
+ "dev": true,
+ "dependencies": {
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true
+ },
+ "node_modules/is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-decimal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz",
+ "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hexadecimal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz",
+ "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-text-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz",
+ "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==",
+ "dev": true,
+ "dependencies": {
+ "text-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/issue-parser": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz",
+ "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==",
+ "dev": true,
+ "dependencies": {
+ "lodash.capitalize": "^4.2.1",
+ "lodash.escaperegexp": "^4.1.2",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.uniqby": "^4.7.0"
+ },
+ "engines": {
+ "node": ">=10.13"
+ }
+ },
+ "node_modules/java-properties": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz",
+ "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "dev": true
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonparse": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+ "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
+ "dev": true,
+ "engines": [
+ "node >= 0.2.0"
+ ]
+ },
+ "node_modules/JSONStream": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
+ "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
+ "dev": true,
+ "dependencies": {
+ "jsonparse": "^1.2.0",
+ "through": ">=2.2.7 <3"
+ },
+ "bin": {
+ "JSONStream": "bin.js"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-json-file/node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz",
+ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^6.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
+ "dev": true
+ },
+ "node_modules/lodash.capitalize": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
+ "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==",
+ "dev": true
+ },
+ "node_modules/lodash.escaperegexp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
+ "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==",
+ "dev": true
+ },
+ "node_modules/lodash.ismatch": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
+ "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==",
+ "dev": true
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
+ "dev": true
+ },
+ "node_modules/lodash.uniqby": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
+ "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
+ "dev": true
+ },
+ "node_modules/longest-streak": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
+ "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/map-obj": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
+ "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/markdown-table": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
+ "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
+ "dev": true,
+ "dependencies": {
+ "repeat-string": "^1.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/marked": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz",
+ "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==",
+ "dev": true,
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 16"
+ }
+ },
+ "node_modules/marked-terminal": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.2.0.tgz",
+ "integrity": "sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-escapes": "^6.2.0",
+ "cardinal": "^2.1.1",
+ "chalk": "^5.2.0",
+ "cli-table3": "^0.6.3",
+ "node-emoji": "^1.11.0",
+ "supports-hyperlinks": "^2.3.0"
+ },
+ "engines": {
+ "node": ">=14.13.1 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0"
+ }
+ },
+ "node_modules/marked-terminal/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz",
+ "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0",
+ "unist-util-is": "^4.0.0",
+ "unist-util-visit-parents": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/mdast-util-from-markdown": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
+ "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-string": "^2.0.0",
+ "micromark": "~2.11.0",
+ "parse-entities": "^2.0.0",
+ "unist-util-stringify-position": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz",
+ "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==",
+ "dev": true,
+ "dependencies": {
+ "mdast-util-gfm-autolink-literal": "^0.1.0",
+ "mdast-util-gfm-strikethrough": "^0.2.0",
+ "mdast-util-gfm-table": "^0.1.0",
+ "mdast-util-gfm-task-list-item": "^0.1.0",
+ "mdast-util-to-markdown": "^0.6.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-autolink-literal": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz",
+ "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==",
+ "dev": true,
+ "dependencies": {
+ "ccount": "^1.0.0",
+ "mdast-util-find-and-replace": "^1.1.0",
+ "micromark": "^2.11.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-strikethrough": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz",
+ "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==",
+ "dev": true,
+ "dependencies": {
+ "mdast-util-to-markdown": "^0.6.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-table": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz",
+ "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==",
+ "dev": true,
+ "dependencies": {
+ "markdown-table": "^2.0.0",
+ "mdast-util-to-markdown": "~0.6.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-gfm-task-list-item": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz",
+ "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==",
+ "dev": true,
+ "dependencies": {
+ "mdast-util-to-markdown": "~0.6.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-markdown": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz",
+ "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "longest-streak": "^2.0.0",
+ "mdast-util-to-string": "^2.0.0",
+ "parse-entities": "^2.0.0",
+ "repeat-string": "^1.0.0",
+ "zwitch": "^1.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-string": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
+ "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/meow": {
+ "version": "8.1.2",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
+ "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/minimist": "^1.2.0",
+ "camelcase-keys": "^6.2.2",
+ "decamelize-keys": "^1.1.0",
+ "hard-rejection": "^2.1.0",
+ "minimist-options": "4.1.0",
+ "normalize-package-data": "^3.0.0",
+ "read-pkg-up": "^7.0.1",
+ "redent": "^3.0.0",
+ "trim-newlines": "^3.0.0",
+ "type-fest": "^0.18.0",
+ "yargs-parser": "^20.2.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/meow/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/meow/node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true
+ },
+ "node_modules/meow/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/meow/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/meow/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/meow/node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/meow/node_modules/read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/meow/node_modules/read-pkg-up": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+ "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/meow/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/meow/node_modules/type-fest": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
+ "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromark": {
+ "version": "2.11.4",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
+ "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "dependencies": {
+ "debug": "^4.0.0",
+ "parse-entities": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-gfm": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz",
+ "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==",
+ "dev": true,
+ "dependencies": {
+ "micromark": "~2.11.0",
+ "micromark-extension-gfm-autolink-literal": "~0.5.0",
+ "micromark-extension-gfm-strikethrough": "~0.6.5",
+ "micromark-extension-gfm-table": "~0.4.0",
+ "micromark-extension-gfm-tagfilter": "~0.3.0",
+ "micromark-extension-gfm-task-list-item": "~0.3.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-autolink-literal": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz",
+ "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==",
+ "dev": true,
+ "dependencies": {
+ "micromark": "~2.11.3"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-strikethrough": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz",
+ "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==",
+ "dev": true,
+ "dependencies": {
+ "micromark": "~2.11.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-table": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz",
+ "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==",
+ "dev": true,
+ "dependencies": {
+ "micromark": "~2.11.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-tagfilter": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz",
+ "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-gfm-task-list-item": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz",
+ "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==",
+ "dev": true,
+ "dependencies": {
+ "micromark": "~2.11.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
+ "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
+ "dev": true,
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minimist-options": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
+ "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+ "dev": true,
+ "dependencies": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0",
+ "kind-of": "^6.0.3"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/modify-values": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
+ "node_modules/nerf-dart": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz",
+ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==",
+ "dev": true
+ },
+ "node_modules/node-emoji": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
+ "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==",
+ "dev": true,
+ "dependencies": {
+ "lodash": "^4.17.21"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
+ "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^4.0.1",
+ "is-core-module": "^2.5.0",
+ "semver": "^7.3.4",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/normalize-package-data/node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/normalize-url": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz",
+ "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm": {
+ "version": "9.9.1",
+ "resolved": "https://registry.npmjs.org/npm/-/npm-9.9.1.tgz",
+ "integrity": "sha512-D3YZ1ZTxPGDHLLiFU9q3sVrPfYnn6BaJ1hogm3vdWi8oOmHGtTlPUPXAM0iG22UT0JRkBnMDOh6oUhpbEYgg2A==",
+ "bundleDependencies": [
+ "@isaacs/string-locale-compare",
+ "@npmcli/arborist",
+ "@npmcli/config",
+ "@npmcli/fs",
+ "@npmcli/map-workspaces",
+ "@npmcli/package-json",
+ "@npmcli/promise-spawn",
+ "@npmcli/run-script",
+ "abbrev",
+ "archy",
+ "cacache",
+ "chalk",
+ "ci-info",
+ "cli-columns",
+ "cli-table3",
+ "columnify",
+ "fastest-levenshtein",
+ "fs-minipass",
+ "glob",
+ "graceful-fs",
+ "hosted-git-info",
+ "ini",
+ "init-package-json",
+ "is-cidr",
+ "json-parse-even-better-errors",
+ "libnpmaccess",
+ "libnpmdiff",
+ "libnpmexec",
+ "libnpmfund",
+ "libnpmhook",
+ "libnpmorg",
+ "libnpmpack",
+ "libnpmpublish",
+ "libnpmsearch",
+ "libnpmteam",
+ "libnpmversion",
+ "make-fetch-happen",
+ "minimatch",
+ "minipass",
+ "minipass-pipeline",
+ "ms",
+ "node-gyp",
+ "nopt",
+ "normalize-package-data",
+ "npm-audit-report",
+ "npm-install-checks",
+ "npm-package-arg",
+ "npm-pick-manifest",
+ "npm-profile",
+ "npm-registry-fetch",
+ "npm-user-validate",
+ "npmlog",
+ "p-map",
+ "pacote",
+ "parse-conflict-json",
+ "proc-log",
+ "qrcode-terminal",
+ "read",
+ "semver",
+ "sigstore",
+ "spdx-expression-parse",
+ "ssri",
+ "supports-color",
+ "tar",
+ "text-table",
+ "tiny-relative-date",
+ "treeverse",
+ "validate-npm-package-name",
+ "which",
+ "write-file-atomic"
+ ],
+ "dev": true,
+ "dependencies": {
+ "@isaacs/string-locale-compare": "^1.1.0",
+ "@npmcli/arborist": "^6.5.0",
+ "@npmcli/config": "^6.4.0",
+ "@npmcli/fs": "^3.1.0",
+ "@npmcli/map-workspaces": "^3.0.4",
+ "@npmcli/package-json": "^4.0.1",
+ "@npmcli/promise-spawn": "^6.0.2",
+ "@npmcli/run-script": "^6.0.2",
+ "abbrev": "^2.0.0",
+ "archy": "~1.0.0",
+ "cacache": "^17.1.3",
+ "chalk": "^5.3.0",
+ "ci-info": "^3.8.0",
+ "cli-columns": "^4.0.0",
+ "cli-table3": "^0.6.3",
+ "columnify": "^1.6.0",
+ "fastest-levenshtein": "^1.0.16",
+ "fs-minipass": "^3.0.2",
+ "glob": "^10.2.7",
+ "graceful-fs": "^4.2.11",
+ "hosted-git-info": "^6.1.1",
+ "ini": "^4.1.1",
+ "init-package-json": "^5.0.0",
+ "is-cidr": "^4.0.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "libnpmaccess": "^7.0.2",
+ "libnpmdiff": "^5.0.20",
+ "libnpmexec": "^6.0.4",
+ "libnpmfund": "^4.2.1",
+ "libnpmhook": "^9.0.3",
+ "libnpmorg": "^5.0.4",
+ "libnpmpack": "^5.0.20",
+ "libnpmpublish": "^7.5.0",
+ "libnpmsearch": "^6.0.2",
+ "libnpmteam": "^5.0.3",
+ "libnpmversion": "^4.0.2",
+ "make-fetch-happen": "^11.1.1",
+ "minimatch": "^9.0.3",
+ "minipass": "^5.0.0",
+ "minipass-pipeline": "^1.2.4",
+ "ms": "^2.1.2",
+ "node-gyp": "^9.4.0",
+ "nopt": "^7.2.0",
+ "normalize-package-data": "^5.0.0",
+ "npm-audit-report": "^5.0.0",
+ "npm-install-checks": "^6.2.0",
+ "npm-package-arg": "^10.1.0",
+ "npm-pick-manifest": "^8.0.2",
+ "npm-profile": "^7.0.1",
+ "npm-registry-fetch": "^14.0.5",
+ "npm-user-validate": "^2.0.0",
+ "npmlog": "^7.0.1",
+ "p-map": "^4.0.0",
+ "pacote": "^15.2.0",
+ "parse-conflict-json": "^3.0.1",
+ "proc-log": "^3.0.0",
+ "qrcode-terminal": "^0.12.0",
+ "read": "^2.1.0",
+ "semver": "^7.5.4",
+ "sigstore": "^1.9.0",
+ "spdx-expression-parse": "^3.0.1",
+ "ssri": "^10.0.4",
+ "supports-color": "^9.4.0",
+ "tar": "^6.1.15",
+ "text-table": "~0.2.0",
+ "tiny-relative-date": "^1.3.0",
+ "treeverse": "^3.0.0",
+ "validate-npm-package-name": "^5.0.0",
+ "which": "^3.0.1",
+ "write-file-atomic": "^5.0.1"
+ },
+ "bin": {
+ "npm": "bin/npm-cli.js",
+ "npx": "bin/npx-cli.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/@colors/colors": {
+ "version": "1.5.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=0.1.90"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": {
+ "version": "5.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/@isaacs/string-locale-compare": {
+ "version": "1.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/@npmcli/arborist": {
+ "version": "6.5.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@isaacs/string-locale-compare": "^1.1.0",
+ "@npmcli/fs": "^3.1.0",
+ "@npmcli/installed-package-contents": "^2.0.2",
+ "@npmcli/map-workspaces": "^3.0.2",
+ "@npmcli/metavuln-calculator": "^5.0.0",
+ "@npmcli/name-from-folder": "^2.0.0",
+ "@npmcli/node-gyp": "^3.0.0",
+ "@npmcli/package-json": "^4.0.0",
+ "@npmcli/query": "^3.0.0",
+ "@npmcli/run-script": "^6.0.0",
+ "bin-links": "^4.0.1",
+ "cacache": "^17.0.4",
+ "common-ancestor-path": "^1.0.1",
+ "hosted-git-info": "^6.1.1",
+ "json-parse-even-better-errors": "^3.0.0",
+ "json-stringify-nice": "^1.1.4",
+ "minimatch": "^9.0.0",
+ "nopt": "^7.0.0",
+ "npm-install-checks": "^6.2.0",
+ "npm-package-arg": "^10.1.0",
+ "npm-pick-manifest": "^8.0.1",
+ "npm-registry-fetch": "^14.0.3",
+ "npmlog": "^7.0.1",
+ "pacote": "^15.0.8",
+ "parse-conflict-json": "^3.0.0",
+ "proc-log": "^3.0.0",
+ "promise-all-reject-late": "^1.0.0",
+ "promise-call-limit": "^1.0.2",
+ "read-package-json-fast": "^3.0.2",
+ "semver": "^7.3.7",
+ "ssri": "^10.0.1",
+ "treeverse": "^3.0.0",
+ "walk-up-path": "^3.0.1"
+ },
+ "bin": {
+ "arborist": "bin/index.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/config": {
+ "version": "6.4.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/map-workspaces": "^3.0.2",
+ "ci-info": "^3.8.0",
+ "ini": "^4.1.0",
+ "nopt": "^7.0.0",
+ "proc-log": "^3.0.0",
+ "read-package-json-fast": "^3.0.2",
+ "semver": "^7.3.5",
+ "walk-up-path": "^3.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/disparity-colors": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "ansi-styles": "^4.3.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/fs": {
+ "version": "3.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/git": {
+ "version": "4.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/promise-spawn": "^6.0.0",
+ "lru-cache": "^7.4.4",
+ "npm-pick-manifest": "^8.0.0",
+ "proc-log": "^3.0.0",
+ "promise-inflight": "^1.0.1",
+ "promise-retry": "^2.0.1",
+ "semver": "^7.3.5",
+ "which": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/installed-package-contents": {
+ "version": "2.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-bundled": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "bin": {
+ "installed-package-contents": "lib/index.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/map-workspaces": {
+ "version": "3.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/name-from-folder": "^2.0.0",
+ "glob": "^10.2.2",
+ "minimatch": "^9.0.0",
+ "read-package-json-fast": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/metavuln-calculator": {
+ "version": "5.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cacache": "^17.0.0",
+ "json-parse-even-better-errors": "^3.0.0",
+ "pacote": "^15.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/name-from-folder": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/node-gyp": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/package-json": {
+ "version": "4.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^4.1.0",
+ "glob": "^10.2.2",
+ "hosted-git-info": "^6.1.1",
+ "json-parse-even-better-errors": "^3.0.0",
+ "normalize-package-data": "^5.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/promise-spawn": {
+ "version": "6.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "which": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/query": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.10"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@npmcli/run-script": {
+ "version": "6.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/node-gyp": "^3.0.0",
+ "@npmcli/promise-spawn": "^6.0.0",
+ "node-gyp": "^9.0.0",
+ "read-package-json-fast": "^3.0.0",
+ "which": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/bundle": {
+ "version": "1.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.2.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/protobuf-specs": {
+ "version": "0.2.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/sign": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^1.1.0",
+ "@sigstore/protobuf-specs": "^0.2.0",
+ "make-fetch-happen": "^11.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@sigstore/tuf": {
+ "version": "1.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/protobuf-specs": "^0.2.0",
+ "tuf-js": "^1.1.7"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@tootallnate/once": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/npm/node_modules/@tufjs/canonical-json": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/@tufjs/models": {
+ "version": "1.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/canonical-json": "1.0.0",
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/abbrev": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/abort-controller": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
+ "node_modules/npm/node_modules/agent-base": {
+ "version": "6.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/agentkeepalive": {
+ "version": "4.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.1.0",
+ "depd": "^2.0.0",
+ "humanize-ms": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/aggregate-error": {
+ "version": "3.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/aproba": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/archy": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/are-we-there-yet": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^4.1.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/base64-js": {
+ "version": "1.5.1",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/bin-links": {
+ "version": "4.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cmd-shim": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0",
+ "read-cmd-shim": "^4.0.0",
+ "write-file-atomic": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/buffer": {
+ "version": "6.0.3",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/npm/node_modules/builtins": {
+ "version": "5.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/cacache": {
+ "version": "17.1.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/fs": "^3.1.0",
+ "fs-minipass": "^3.0.0",
+ "glob": "^10.2.2",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-collect": "^1.0.2",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "p-map": "^4.0.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11",
+ "unique-filename": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/chalk": {
+ "version": "5.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/chownr": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/ci-info": {
+ "version": "3.8.0",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/cidr-regex": {
+ "version": "3.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "ip-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/clean-stack": {
+ "version": "2.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/npm/node_modules/cli-columns": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/npm/node_modules/cli-table3": {
+ "version": "0.6.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^4.2.0"
+ },
+ "engines": {
+ "node": "10.* || >= 12.*"
+ },
+ "optionalDependencies": {
+ "@colors/colors": "1.5.0"
+ }
+ },
+ "node_modules/npm/node_modules/clone": {
+ "version": "1.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/npm/node_modules/cmd-shim": {
+ "version": "6.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/color-convert": {
+ "version": "2.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/color-name": {
+ "version": "1.1.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/color-support": {
+ "version": "1.1.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "bin": {
+ "color-support": "bin.js"
+ }
+ },
+ "node_modules/npm/node_modules/columnify": {
+ "version": "1.6.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "strip-ansi": "^6.0.1",
+ "wcwidth": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/common-ancestor-path": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/concat-map": {
+ "version": "0.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/console-control-strings": {
+ "version": "1.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/cross-spawn/node_modules/which": {
+ "version": "2.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/cssesc": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm/node_modules/debug": {
+ "version": "4.3.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/npm/node_modules/debug/node_modules/ms": {
+ "version": "2.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/defaults": {
+ "version": "1.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "clone": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/delegates": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/depd": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/npm/node_modules/diff": {
+ "version": "5.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/npm/node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/encoding": {
+ "version": "0.1.13",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "iconv-lite": "^0.6.2"
+ }
+ },
+ "node_modules/npm/node_modules/env-paths": {
+ "version": "2.2.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/npm/node_modules/err-code": {
+ "version": "2.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/npm/node_modules/events": {
+ "version": "3.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.x"
+ }
+ },
+ "node_modules/npm/node_modules/exponential-backoff": {
+ "version": "3.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/npm/node_modules/fastest-levenshtein": {
+ "version": "1.0.16",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.9.1"
+ }
+ },
+ "node_modules/npm/node_modules/foreground-child": {
+ "version": "3.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/fs-minipass": {
+ "version": "3.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/function-bind": {
+ "version": "1.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/gauge": {
+ "version": "5.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^4.0.1",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/glob": {
+ "version": "10.2.7",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.0.3",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2",
+ "path-scurry": "^1.7.0"
+ },
+ "bin": {
+ "glob": "dist/cjs/src/bin.js"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/has": {
+ "version": "1.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/npm/node_modules/has-unicode": {
+ "version": "2.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/hosted-git-info": {
+ "version": "6.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^7.5.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/http-cache-semantics": {
+ "version": "4.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/npm/node_modules/http-proxy-agent": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tootallnate/once": "2",
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/npm/node_modules/https-proxy-agent": {
+ "version": "5.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "6",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/npm/node_modules/humanize-ms": {
+ "version": "1.2.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm/node_modules/ieee754": {
+ "version": "1.2.1",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "inBundle": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/npm/node_modules/ignore-walk": {
+ "version": "6.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minimatch": "^9.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/npm/node_modules/indent-string": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/inflight": {
+ "version": "1.0.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/npm/node_modules/inherits": {
+ "version": "2.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/ini": {
+ "version": "4.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/init-package-json": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-package-arg": "^10.0.0",
+ "promzard": "^1.0.0",
+ "read": "^2.0.0",
+ "read-package-json": "^6.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4",
+ "validate-npm-package-name": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/ip": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/ip-regex": {
+ "version": "4.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/is-cidr": {
+ "version": "4.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "cidr-regex": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/is-core-module": {
+ "version": "2.13.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "has": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/npm/node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/is-lambda": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/isexe": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/jackspeak": {
+ "version": "2.2.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/npm/node_modules/json-parse-even-better-errors": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/json-stringify-nice": {
+ "version": "1.1.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/jsonparse": {
+ "version": "1.3.1",
+ "dev": true,
+ "engines": [
+ "node >= 0.2.0"
+ ],
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/just-diff": {
+ "version": "6.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/just-diff-apply": {
+ "version": "5.5.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/libnpmaccess": {
+ "version": "7.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-package-arg": "^10.1.0",
+ "npm-registry-fetch": "^14.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmdiff": {
+ "version": "5.0.20",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^6.5.0",
+ "@npmcli/disparity-colors": "^3.0.0",
+ "@npmcli/installed-package-contents": "^2.0.2",
+ "binary-extensions": "^2.2.0",
+ "diff": "^5.1.0",
+ "minimatch": "^9.0.0",
+ "npm-package-arg": "^10.1.0",
+ "pacote": "^15.0.8",
+ "tar": "^6.1.13"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmexec": {
+ "version": "6.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^6.5.0",
+ "@npmcli/run-script": "^6.0.0",
+ "ci-info": "^3.7.1",
+ "npm-package-arg": "^10.1.0",
+ "npmlog": "^7.0.1",
+ "pacote": "^15.0.8",
+ "proc-log": "^3.0.0",
+ "read": "^2.0.0",
+ "read-package-json-fast": "^3.0.2",
+ "semver": "^7.3.7",
+ "walk-up-path": "^3.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmfund": {
+ "version": "4.2.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^6.5.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmhook": {
+ "version": "9.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^14.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmorg": {
+ "version": "5.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^14.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmpack": {
+ "version": "5.0.20",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/arborist": "^6.5.0",
+ "@npmcli/run-script": "^6.0.0",
+ "npm-package-arg": "^10.1.0",
+ "pacote": "^15.0.8"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmpublish": {
+ "version": "7.5.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "ci-info": "^3.6.1",
+ "normalize-package-data": "^5.0.0",
+ "npm-package-arg": "^10.1.0",
+ "npm-registry-fetch": "^14.0.3",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.7",
+ "sigstore": "^1.4.0",
+ "ssri": "^10.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmsearch": {
+ "version": "6.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-registry-fetch": "^14.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmteam": {
+ "version": "5.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^2.0.0",
+ "npm-registry-fetch": "^14.0.3"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/libnpmversion": {
+ "version": "4.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^4.0.1",
+ "@npmcli/run-script": "^6.0.0",
+ "json-parse-even-better-errors": "^3.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/lru-cache": {
+ "version": "7.18.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/npm/node_modules/make-fetch-happen": {
+ "version": "11.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "agentkeepalive": "^4.2.1",
+ "cacache": "^17.0.0",
+ "http-cache-semantics": "^4.1.1",
+ "http-proxy-agent": "^5.0.0",
+ "https-proxy-agent": "^5.0.0",
+ "is-lambda": "^1.0.1",
+ "lru-cache": "^7.7.1",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-flush": "^1.0.5",
+ "minipass-pipeline": "^1.2.4",
+ "negotiator": "^0.6.3",
+ "promise-retry": "^2.0.1",
+ "socks-proxy-agent": "^7.0.0",
+ "ssri": "^10.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/minimatch": {
+ "version": "9.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/minipass": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-collect": {
+ "version": "1.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-fetch": {
+ "version": "3.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^5.0.0",
+ "minipass-sized": "^1.0.3",
+ "minizlib": "^2.1.2"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ },
+ "optionalDependencies": {
+ "encoding": "^0.1.13"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-flush": {
+ "version": "1.0.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-json-stream": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "jsonparse": "^1.3.1",
+ "minipass": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-pipeline": {
+ "version": "1.2.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-sized": {
+ "version": "1.0.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/minizlib": {
+ "version": "2.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "minipass": "^3.0.0",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/minizlib/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/mkdirp": {
+ "version": "1.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/ms": {
+ "version": "2.1.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/mute-stream": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/negotiator": {
+ "version": "0.6.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp": {
+ "version": "9.4.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.0",
+ "exponential-backoff": "^3.1.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.6",
+ "make-fetch-happen": "^11.0.3",
+ "nopt": "^6.0.0",
+ "npmlog": "^6.0.0",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.5",
+ "tar": "^6.1.2",
+ "which": "^2.0.2"
+ },
+ "bin": {
+ "node-gyp": "bin/node-gyp.js"
+ },
+ "engines": {
+ "node": "^12.13 || ^14.13 || >=16"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": {
+ "version": "1.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/gauge": {
+ "version": "4.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.3",
+ "console-control-strings": "^1.1.0",
+ "has-unicode": "^2.0.1",
+ "signal-exit": "^3.0.7",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.5"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/glob": {
+ "version": "7.2.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": {
+ "version": "3.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/nopt": {
+ "version": "6.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^1.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": {
+ "version": "6.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "are-we-there-yet": "^3.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^4.0.3",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^12.13.0 || ^14.15.0 || >=16.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/node-gyp/node_modules/which": {
+ "version": "2.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/nopt": {
+ "version": "7.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "abbrev": "^2.0.0"
+ },
+ "bin": {
+ "nopt": "bin/nopt.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/normalize-package-data": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^6.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-audit-report": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-bundled": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-install-checks": {
+ "version": "6.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "semver": "^7.1.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-normalize-package-bin": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-package-arg": {
+ "version": "10.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "hosted-git-info": "^6.0.0",
+ "proc-log": "^3.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-name": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-packlist": {
+ "version": "7.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "ignore-walk": "^6.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-pick-manifest": {
+ "version": "8.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-install-checks": "^6.0.0",
+ "npm-normalize-package-bin": "^3.0.0",
+ "npm-package-arg": "^10.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-profile": {
+ "version": "7.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "npm-registry-fetch": "^14.0.0",
+ "proc-log": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-registry-fetch": {
+ "version": "14.0.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "make-fetch-happen": "^11.0.0",
+ "minipass": "^5.0.0",
+ "minipass-fetch": "^3.0.0",
+ "minipass-json-stream": "^1.0.1",
+ "minizlib": "^2.1.2",
+ "npm-package-arg": "^10.0.0",
+ "proc-log": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npm-user-validate": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/npmlog": {
+ "version": "7.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "are-we-there-yet": "^4.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^5.0.0",
+ "set-blocking": "^2.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/once": {
+ "version": "1.4.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/npm/node_modules/p-map": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "aggregate-error": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/pacote": {
+ "version": "15.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "@npmcli/git": "^4.0.0",
+ "@npmcli/installed-package-contents": "^2.0.1",
+ "@npmcli/promise-spawn": "^6.0.1",
+ "@npmcli/run-script": "^6.0.0",
+ "cacache": "^17.0.0",
+ "fs-minipass": "^3.0.0",
+ "minipass": "^5.0.0",
+ "npm-package-arg": "^10.0.0",
+ "npm-packlist": "^7.0.0",
+ "npm-pick-manifest": "^8.0.0",
+ "npm-registry-fetch": "^14.0.0",
+ "proc-log": "^3.0.0",
+ "promise-retry": "^2.0.1",
+ "read-package-json": "^6.0.0",
+ "read-package-json-fast": "^3.0.0",
+ "sigstore": "^1.3.0",
+ "ssri": "^10.0.0",
+ "tar": "^6.1.11"
+ },
+ "bin": {
+ "pacote": "lib/bin.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/parse-conflict-json": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "json-parse-even-better-errors": "^3.0.0",
+ "just-diff": "^6.0.0",
+ "just-diff-apply": "^5.2.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm/node_modules/path-key": {
+ "version": "3.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/path-scurry": {
+ "version": "1.9.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^9.1.1",
+ "minipass": "^5.0.0 || ^6.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "9.1.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/npm/node_modules/postcss-selector-parser": {
+ "version": "6.0.13",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm/node_modules/proc-log": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/process": {
+ "version": "0.11.10",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/npm/node_modules/promise-all-reject-late": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/promise-call-limit": {
+ "version": "1.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/promise-inflight": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/promise-retry": {
+ "version": "2.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "err-code": "^2.0.2",
+ "retry": "^0.12.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/promzard": {
+ "version": "1.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "read": "^2.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/qrcode-terminal": {
+ "version": "0.12.0",
+ "dev": true,
+ "inBundle": true,
+ "bin": {
+ "qrcode-terminal": "bin/qrcode-terminal.js"
+ }
+ },
+ "node_modules/npm/node_modules/read": {
+ "version": "2.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "mute-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/read-cmd-shim": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/read-package-json": {
+ "version": "6.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^10.2.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "normalize-package-data": "^5.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/read-package-json-fast": {
+ "version": "3.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "json-parse-even-better-errors": "^3.0.0",
+ "npm-normalize-package-bin": "^3.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/readable-stream": {
+ "version": "4.4.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/retry": {
+ "version": "0.12.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/npm/node_modules/rimraf": {
+ "version": "3.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/npm/node_modules/rimraf/node_modules/glob": {
+ "version": "7.2.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/rimraf/node_modules/minimatch": {
+ "version": "3.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/npm/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/npm/node_modules/semver": {
+ "version": "7.5.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/set-blocking": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/shebang-command": {
+ "version": "2.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/signal-exit": {
+ "version": "4.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/npm/node_modules/sigstore": {
+ "version": "1.9.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@sigstore/bundle": "^1.1.0",
+ "@sigstore/protobuf-specs": "^0.2.0",
+ "@sigstore/sign": "^1.0.0",
+ "@sigstore/tuf": "^1.0.3",
+ "make-fetch-happen": "^11.0.1"
+ },
+ "bin": {
+ "sigstore": "bin/sigstore.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/smart-buffer": {
+ "version": "4.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6.0.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/socks": {
+ "version": "2.7.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ip": "^2.0.0",
+ "smart-buffer": "^4.2.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0",
+ "npm": ">= 3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/socks-proxy-agent": {
+ "version": "7.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^6.0.2",
+ "debug": "^4.3.3",
+ "socks": "^2.6.2"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/npm/node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/spdx-license-ids": {
+ "version": "3.0.13",
+ "dev": true,
+ "inBundle": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/npm/node_modules/ssri": {
+ "version": "10.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/string_decoder": {
+ "version": "1.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/npm/node_modules/string-width": {
+ "version": "4.2.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/supports-color": {
+ "version": "9.4.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/tar": {
+ "version": "6.1.15",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^5.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/npm/node_modules/tar/node_modules/fs-minipass": {
+ "version": "2.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "minipass": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": {
+ "version": "3.3.6",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm/node_modules/text-table": {
+ "version": "0.2.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/tiny-relative-date": {
+ "version": "1.3.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/treeverse": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/tuf-js": {
+ "version": "1.1.7",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "@tufjs/models": "1.0.4",
+ "debug": "^4.3.4",
+ "make-fetch-happen": "^11.1.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/unique-filename": {
+ "version": "3.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "unique-slug": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/unique-slug": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "dev": true,
+ "inBundle": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/validate-npm-package-name": {
+ "version": "5.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "builtins": "^5.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/walk-up-path": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/wcwidth": {
+ "version": "1.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "node_modules/npm/node_modules/which": {
+ "version": "3.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/wide-align": {
+ "version": "1.1.5",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^1.0.2 || 2 || 3 || 4"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT"
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "5.1.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/npm/node_modules/wrappy": {
+ "version": "1.0.2",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/npm/node_modules/write-file-atomic": {
+ "version": "5.0.1",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/npm/node_modules/yallist": {
+ "version": "4.0.0",
+ "dev": true,
+ "inBundle": true,
+ "license": "ISC"
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-each-series": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz",
+ "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-filter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz",
+ "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==",
+ "dev": true,
+ "dependencies": {
+ "p-map": "^5.1.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-is-promise": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz",
+ "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz",
+ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^1.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz",
+ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz",
+ "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==",
+ "dev": true,
+ "dependencies": {
+ "aggregate-error": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map/node_modules/aggregate-error": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz",
+ "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==",
+ "dev": true,
+ "dependencies": {
+ "clean-stack": "^4.0.0",
+ "indent-string": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map/node_modules/clean-stack": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz",
+ "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-map/node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-reduce": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz",
+ "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-entities": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
+ "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
+ "dev": true,
+ "dependencies": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parsimmon": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/parsimmon/-/parsimmon-1.18.1.tgz",
+ "integrity": "sha512-u7p959wLfGAhJpSDJVYXoyMCXWYwHia78HhRBWqk7AIbxdmlrfdp5wX0l3xv/iTSH5HvhN9K7o26hwwpgS5Nmw==",
+ "dev": true
+ },
+ "node_modules/path-exists": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
+ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-conf": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
+ "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^2.0.0",
+ "load-json-file": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "dependencies": {
+ "p-try": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pkg-conf/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "node_modules/promisified-properties": {
+ "version": "2.0.27",
+ "resolved": "https://registry.npmjs.org/promisified-properties/-/promisified-properties-2.0.27.tgz",
+ "integrity": "sha512-fmx256M3b0QcHnqOj+Ok127LoYpmnYRf7g2OyLl7qD7Z0fzNbIZhHHIPKyvegbA29iAPP5BVWv7BJ/y2cMHHjA==",
+ "dev": true,
+ "dependencies": {
+ "parsimmon": "^1.13.0"
+ },
+ "engines": {
+ "node": ">=14.16",
+ "npm": ">=7.12"
+ }
+ },
+ "node_modules/proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
+ "dev": true
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/quick-lru": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
+ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/read-pkg": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz",
+ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/normalize-package-data": "^2.4.1",
+ "normalize-package-data": "^6.0.0",
+ "parse-json": "^7.0.0",
+ "type-fest": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz",
+ "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==",
+ "dev": true,
+ "dependencies": {
+ "find-up": "^6.3.0",
+ "read-pkg": "^8.1.0",
+ "type-fest": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg-up/node_modules/type-fest": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.7.1.tgz",
+ "integrity": "sha512-iWr8RUmzAJRfhZugX9O7nZE6pCxDU8CZ3QxsLuTnGcBLJpCaP2ll3s4eMTBoFnU/CeXY/5rfQSuAEsTGJO4y8A==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg/node_modules/json-parse-even-better-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz",
+ "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==",
+ "dev": true,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-pkg/node_modules/lines-and-columns": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz",
+ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/read-pkg/node_modules/normalize-package-data": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz",
+ "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==",
+ "dev": true,
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "is-core-module": "^2.8.1",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/read-pkg/node_modules/parse-json": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz",
+ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.21.4",
+ "error-ex": "^1.3.2",
+ "json-parse-even-better-errors": "^3.0.0",
+ "lines-and-columns": "^2.0.3",
+ "type-fest": "^3.8.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/read-pkg/node_modules/type-fest": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.7.1.tgz",
+ "integrity": "sha512-iWr8RUmzAJRfhZugX9O7nZE6pCxDU8CZ3QxsLuTnGcBLJpCaP2ll3s4eMTBoFnU/CeXY/5rfQSuAEsTGJO4y8A==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "dev": true,
+ "dependencies": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/redeyed": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz",
+ "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==",
+ "dev": true,
+ "dependencies": {
+ "esprima": "~4.0.0"
+ }
+ },
+ "node_modules/registry-auth-token": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz",
+ "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==",
+ "dev": true,
+ "dependencies": {
+ "@pnpm/npm-conf": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/remark-gfm": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz",
+ "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==",
+ "dev": true,
+ "dependencies": {
+ "mdast-util-gfm": "^0.1.0",
+ "micromark-extension-gfm": "^0.3.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-parse": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
+ "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
+ "dev": true,
+ "dependencies": {
+ "mdast-util-from-markdown": "^0.8.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-stringify": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz",
+ "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==",
+ "dev": true,
+ "dependencies": {
+ "mdast-util-to-markdown": "^0.6.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/semantic-release": {
+ "version": "21.1.2",
+ "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-21.1.2.tgz",
+ "integrity": "sha512-kz76azHrT8+VEkQjoCBHE06JNQgTgsC4bT8XfCzb7DHcsk9vG3fqeMVik8h5rcWCYi2Fd+M3bwA7BG8Z8cRwtA==",
+ "dev": true,
+ "dependencies": {
+ "@semantic-release/commit-analyzer": "^10.0.0",
+ "@semantic-release/error": "^4.0.0",
+ "@semantic-release/github": "^9.0.0",
+ "@semantic-release/npm": "^10.0.2",
+ "@semantic-release/release-notes-generator": "^11.0.0",
+ "aggregate-error": "^5.0.0",
+ "cosmiconfig": "^8.0.0",
+ "debug": "^4.0.0",
+ "env-ci": "^9.0.0",
+ "execa": "^8.0.0",
+ "figures": "^5.0.0",
+ "find-versions": "^5.1.0",
+ "get-stream": "^6.0.0",
+ "git-log-parser": "^1.2.0",
+ "hook-std": "^3.0.0",
+ "hosted-git-info": "^7.0.0",
+ "lodash-es": "^4.17.21",
+ "marked": "^5.0.0",
+ "marked-terminal": "^5.1.1",
+ "micromatch": "^4.0.2",
+ "p-each-series": "^3.0.0",
+ "p-reduce": "^3.0.0",
+ "read-pkg-up": "^10.0.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.3.2",
+ "semver-diff": "^4.0.0",
+ "signale": "^1.2.1",
+ "yargs": "^17.5.1"
+ },
+ "bin": {
+ "semantic-release": "bin/semantic-release.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/semantic-release-slack-bot": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/semantic-release-slack-bot/-/semantic-release-slack-bot-4.0.2.tgz",
+ "integrity": "sha512-EgpUGmxDq5l9qSfAJNkGMOjxi6p5a7lAMnV5sNG53QxpIOsgMUF9X3J+NeaFWXsGyRP5CEkVtDdDkfvvNNo2ag==",
+ "dev": true,
+ "dependencies": {
+ "@semantic-release/error": "^2.2.0",
+ "micromatch": "4.0.2",
+ "node-fetch": "^2.3.0",
+ "slackify-markdown": "^4.3.0"
+ },
+ "engines": {
+ "node": ">=18.13"
+ },
+ "peerDependencies": {
+ "semantic-release": ">=11.0.0"
+ }
+ },
+ "node_modules/semantic-release-slack-bot/node_modules/@semantic-release/error": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz",
+ "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==",
+ "dev": true
+ },
+ "node_modules/semantic-release-slack-bot/node_modules/micromatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
+ "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/semantic-release/node_modules/@semantic-release/error": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz",
+ "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/semantic-release/node_modules/aggregate-error": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz",
+ "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==",
+ "dev": true,
+ "dependencies": {
+ "clean-stack": "^5.2.0",
+ "indent-string": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/clean-stack": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz",
+ "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "5.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/execa": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
+ "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^8.0.1",
+ "human-signals": "^5.0.0",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=16.17"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
+ "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/human-signals": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
+ "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.17.0"
+ }
+ },
+ "node_modules/semantic-release/node_modules/indent-string": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
+ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/npm-run-path": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
+ "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/p-reduce": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz",
+ "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semantic-release/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/semantic-release/node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semver": {
+ "version": "7.5.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/semver-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz",
+ "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==",
+ "dev": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/semver-regex": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz",
+ "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/signale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz",
+ "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^2.3.2",
+ "figures": "^2.0.0",
+ "pkg-conf": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/signale/node_modules/figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/slackify-markdown": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/slackify-markdown/-/slackify-markdown-4.4.0.tgz",
+ "integrity": "sha512-a2b0Rh4aPi3PYt23N0vxPn7emkQtShewhLX8uIiXOMlPBAXRki+/9kEXJztZr1Oo9rDb1YxScGuZ0D2ubLPhvQ==",
+ "dev": true,
+ "dependencies": {
+ "mdast-util-to-markdown": "^0.6.2",
+ "remark-gfm": "^1.0.0",
+ "remark-parse": "^9.0.0",
+ "remark-stringify": "^9.0.1",
+ "unified": "^9.0.0",
+ "unist-util-remove": "^2.0.1",
+ "unist-util-visit": "^2.0.3"
+ }
+ },
+ "node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/spawn-error-forwarder": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz",
+ "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==",
+ "dev": true
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
+ "dev": true
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.16",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz",
+ "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==",
+ "dev": true
+ },
+ "node_modules/split": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
+ "dev": true,
+ "dependencies": {
+ "through": "2"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/split2": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
+ "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.x"
+ }
+ },
+ "node_modules/stream-combiner2": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
+ "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==",
+ "dev": true,
+ "dependencies": {
+ "duplexer2": "~0.1.0",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "dev": true,
+ "dependencies": {
+ "min-indent": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/temp-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz",
+ "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ }
+ },
+ "node_modules/tempy": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz",
+ "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==",
+ "dev": true,
+ "dependencies": {
+ "is-stream": "^3.0.0",
+ "temp-dir": "^3.0.0",
+ "type-fest": "^2.12.2",
+ "unique-string": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tempy/node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tempy/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/text-extensions": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz",
+ "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "dev": true
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true
+ },
+ "node_modules/traverse": {
+ "version": "0.6.7",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz",
+ "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/trim-newlines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
+ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/trough": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz",
+ "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/uglify-js": {
+ "version": "3.17.4",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
+ "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
+ "dev": true,
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/unicorn-magic": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
+ "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unified": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz",
+ "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
+ "dev": true,
+ "dependencies": {
+ "bail": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-buffer": "^2.0.0",
+ "is-plain-obj": "^2.0.0",
+ "trough": "^1.0.0",
+ "vfile": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unified/node_modules/is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/unique-string": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
+ "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
+ "dev": true,
+ "dependencies": {
+ "crypto-random-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz",
+ "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
+ "dev": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-remove": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz",
+ "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==",
+ "dev": true,
+ "dependencies": {
+ "unist-util-is": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
+ "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "^2.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
+ "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^4.0.0",
+ "unist-util-visit-parents": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz",
+ "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/universal-user-agent": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz",
+ "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==",
+ "dev": true
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/url-join": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz",
+ "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "node_modules/vfile": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz",
+ "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^2.0.0",
+ "vfile-message": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
+ "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
+ "dev": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yargs/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz",
+ "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zwitch": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
+ "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..c6008ccc6
--- /dev/null
+++ b/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "atala-prism-apollo",
+ "version": "1.0.15",
+ "description": "atala-prism-apollo",
+ "directories": {
+ "example": "examples"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/input-output-hk/atala-prism-apollo.git"
+ },
+ "author": "IOG",
+ "license": "ISC",
+ "bugs": {
+ "url": "https://github.com/input-output-hk/atala-prism-apollo/issues"
+ },
+ "homepage": "https://github.com/input-output-hk/atala-prism-apollo#readme",
+ "devDependencies": {
+ "@semantic-release/changelog": "^6.0.2",
+ "@semantic-release/exec": "^6.0.3",
+ "@semantic-release/git": "^10.0.1",
+ "gradle-semantic-release-plugin": "1.7.7",
+ "semantic-release": "^21.0.2",
+ "semantic-release-slack-bot": "^4.0.2"
+ }
+}
diff --git a/rsa/README.md b/rsa/README.md
deleted file mode 100644
index c77fce15f..000000000
--- a/rsa/README.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# Apollo - AES
-
-[![Kotlin](https://img.shields.io/badge/kotlin-1.7.21-blue.svg?logo=kotlin)](http://kotlinlang.org)
-
-![android](https://camo.githubusercontent.com/b1d9ad56ab51c4ad1417e9a5ad2a8fe63bcc4755e584ec7defef83755c23f923/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d616e64726f69642d3645444238442e7376673f7374796c653d666c6174)
-![apple-silicon](https://camo.githubusercontent.com/a92c841ffd377756a144d5723ff04ecec886953d40ac03baa738590514714921/687474703a2f2f696d672e736869656c64732e696f2f62616467652f737570706f72742d2535424170706c6553696c69636f6e2535442d3433424246462e7376673f7374796c653d666c6174)
-![ios](https://camo.githubusercontent.com/1fec6f0d044c5e1d73656bfceed9a78fd4121b17e82a2705d2a47f6fd1f0e3e5/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d696f732d4344434443442e7376673f7374796c653d666c6174)
-![jvm](https://camo.githubusercontent.com/700f5dcd442fd835875568c038ae5cd53518c80ae5a0cf12c7c5cf4743b5225b/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6a766d2d4442343133442e7376673f7374796c653d666c6174)
-![js](https://camo.githubusercontent.com/3e0a143e39915184b54b60a2ecedec75e801f396d34b5b366c94ec3604f7e6bd/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6a732d4638444235442e7376673f7374796c653d666c6174)
-![getNode-js](https://camo.githubusercontent.com/d08fda729ceebcae0f23c83499ca8f06105350f037661ac9a4cc7f58edfdbca9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6e6f64656a732d3638613036332e7376673f7374796c653d666c6174)
-![macos](https://camo.githubusercontent.com/1b8313498db244646b38a4480186ae2b25464e5e8d71a1920c52b2be5212b909/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d6d61636f732d3131313131312e7376673f7374796c653d666c6174)
-![tvos](https://camo.githubusercontent.com/4ac08d7fb1bcb8ef26388cd2bf53b49626e1ab7cbda581162a946dd43e6a2726/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d74766f732d3830383038302e7376673f7374796c653d666c6174)
-![watchos](https://camo.githubusercontent.com/135dbadae40f9cabe7a3a040f9380fb485cff36c90909f3c1ae36b81c304426b/687474703a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d77617463686f732d4330433043302e7376673f7374796c653d666c6174)
-
-Apollo RSA is Kotlin Multiplatform library for RSA & RSA/PSS signature.
-
-## Supported Key Size
-
-- 1024
-- 2048
-- 3072
-- 4096
-
-## Supported Signature
-
-- RSA
-- RSA/PSS
-
-## Usage
-
-Example of key pair generation, signing and verifying RSA/PSS with SHA256
-```kotlin
-val keyPair = KMMKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048)
-val rsa = RSA()
-val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256)
-val verify = rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256)
-```
-
-## TODO
-
-* Make support for key size depend on the logic of multiable of 1024 instead of the current limited value selection
diff --git a/rsa/rsa.podspec b/rsa/rsa.podspec
deleted file mode 100644
index 804b15835..000000000
--- a/rsa/rsa.podspec
+++ /dev/null
@@ -1,42 +0,0 @@
-Pod::Spec.new do |spec|
- spec.name = 'rsa'
- spec.version = '1.7.0-alpha'
- spec.homepage = ''
- spec.source = { :http=> ''}
- spec.authors = 'IOG'
- spec.license = ''
- spec.summary = 'ApolloRSA is an RSA lib'
- spec.vendored_frameworks = 'build/cocoapods/framework/ApolloRSA.framework'
- spec.libraries = 'c++'
- spec.ios.deployment_target = '13.0'
- spec.osx.deployment_target = '12.0'
- spec.tvos.deployment_target = '13.0'
- spec.watchos.deployment_target = '8.0'
- spec.dependency 'IOHKRSA', '1.0.0'
-
- spec.pod_target_xcconfig = {
- 'KOTLIN_PROJECT_PATH' => ':rsa',
- 'PRODUCT_MODULE_NAME' => 'ApolloRSA',
- }
-
- spec.script_phases = [
- {
- :name => 'Build rsa',
- :execution_position => :before_compile,
- :shell_path => '/bin/sh',
- :script => <<-SCRIPT
- if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
- echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
- exit 0
- fi
- set -ev
- REPO_ROOT="$PODS_TARGET_SRCROOT"
- "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
- -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
- -Pkotlin.native.cocoapods.archs="$ARCHS" \
- -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
- SCRIPT
- }
- ]
-
-end
\ No newline at end of file
diff --git a/rsa/src/androidAndroidTest/AndroidManifest.xml b/rsa/src/androidAndroidTest/AndroidManifest.xml
deleted file mode 100644
index 71a1eb3ee..000000000
--- a/rsa/src/androidAndroidTest/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/rsa/src/androidAndroidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/androidAndroidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
deleted file mode 100644
index ce115cb04..000000000
--- a/rsa/src/androidAndroidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair
-import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.runTest
-import org.junit.Test
-import kotlin.test.assertTrue
-
-@OptIn(ExperimentalCoroutinesApi::class)
-actual class RSATests {
- @Test
- actual fun testRSA() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSA, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSASHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSASHA256))
- }
-
- @Test
- actual fun testRSAPSS() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256))
- }
-}
diff --git a/rsa/src/androidMain/AndroidManifest.xml b/rsa/src/androidMain/AndroidManifest.xml
deleted file mode 100644
index 71a1eb3ee..000000000
--- a/rsa/src/androidMain/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
deleted file mode 100644
index f17909c96..000000000
--- a/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey
-import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey
-import org.bouncycastle.jce.provider.BouncyCastleProvider
-import java.security.Security
-import java.security.Signature
-
-actual final class RSA : RSASigner, RSAVerifier {
-
- init {
- Security.removeProvider("BC")
- Security.addProvider(BouncyCastleProvider())
- }
-
- override suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray {
- val signature = Signature.getInstance(type.nativeValue())
- signature.initSign(privateKey.nativeType)
- signature.update(data)
- return signature.sign()
- }
-
- override suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean {
- val signature = Signature.getInstance(type.nativeValue())
- signature.initVerify(publicKey.nativeType)
- signature.update(data)
- return signature.verify(signedData)
- }
-}
diff --git a/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
deleted file mode 100644
index f0f01128c..000000000
--- a/rsa/src/androidMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual typealias RSASignatureTypeNativeType = String
-
-actual final enum class RSASignatureType : NativeTypeInterface {
- RSASHA256,
- RSASHA384,
- RSASHA512,
- RSAPSSSHA256,
- RSAPSSSHA384,
- RSAPSSSHA512;
-
- override fun nativeValue(): String {
- return when (this) {
- RSASHA256 -> "SHA256withRSA"
- RSASHA384 -> "SHA384withRSA"
- RSASHA512 -> "SHA512withRSA"
- RSAPSSSHA256 -> "SHA256withRSA/PSS"
- RSAPSSSHA384 -> "SHA384withRSA/PSS"
- RSAPSSSHA512 -> "SHA512withRSA/PSS"
- }
- }
-}
diff --git a/rsa/src/androidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/androidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
deleted file mode 100644
index ce115cb04..000000000
--- a/rsa/src/androidTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair
-import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.runTest
-import org.junit.Test
-import kotlin.test.assertTrue
-
-@OptIn(ExperimentalCoroutinesApi::class)
-actual class RSATests {
- @Test
- actual fun testRSA() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSA, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSASHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSASHA256))
- }
-
- @Test
- actual fun testRSAPSS() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256))
- }
-}
diff --git a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
deleted file mode 100644
index 708cd98d6..000000000
--- a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-expect final class RSA : RSASigner, RSAVerifier
diff --git a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
deleted file mode 100644
index 67f270bfb..000000000
--- a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-expect class RSASignatureTypeNativeType
-
-expect final enum class RSASignatureType : NativeTypeInterface {
- RSASHA256,
- RSASHA384,
- RSASHA512,
- RSAPSSSHA256,
- RSAPSSSHA384,
- RSAPSSSHA512;
-}
diff --git a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASigner.kt b/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASigner.kt
deleted file mode 100644
index 9a12b53c3..000000000
--- a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASigner.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey
-
-interface RSASigner {
- /**
- * Returns the signature bytes of all the data updated. The format of the signature depends on the underlying
- * signature scheme.
- *
- * @param privateKey private key in PKCS#8 pem format
- * @param data the data to sign
- * @return the signature bytes of the signing operation's result.
- */
- suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray
-}
diff --git a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSAVerifier.kt b/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSAVerifier.kt
deleted file mode 100644
index 363266a0d..000000000
--- a/rsa/src/commonMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSAVerifier.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey
-
-interface RSAVerifier {
- /**
- * Verifies the passed-in signature.
- *
- * @param publicKey public key in PKCS#8 pem format
- * @param data data that we need to sign
- * @param signedData data that has already been signed
- * @return boolean value representing if the verifying was correct or not
- */
- suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean
-}
diff --git a/rsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
deleted file mode 100644
index 83fecaa0b..000000000
--- a/rsa/src/commonTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.TestResult
-
-@OptIn(ExperimentalCoroutinesApi::class)
-expect class RSATests {
- fun testRSA(): TestResult
- fun testRSAPSS(): TestResult
-}
diff --git a/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
deleted file mode 100644
index cca55373d..000000000
--- a/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import cocoapods.IOHKRSA.IOHKRSA
-import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey
-import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey
-import io.iohk.atala.prism.apollo.utils.toByteArray
-import io.iohk.atala.prism.apollo.utils.toNSData
-
-actual final class RSA : RSASigner, RSAVerifier {
- override suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray {
- return IOHKRSA.signRSAWithKey(
- privateKey.nativeType,
- type.nativeValue(),
- data.toNSData()
- )!!.toByteArray()
- }
-
- override suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean {
- return IOHKRSA.verifyRSAWithKey(
- publicKey.nativeType,
- type.nativeValue(),
- data.toNSData(),
- signedData.toNSData()
- )
- }
-}
diff --git a/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
deleted file mode 100644
index b2652656f..000000000
--- a/rsa/src/iosMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import cocoapods.IOHKRSA.RSASignatureMessageType
-import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaPSSSHA256
-import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaPSSSHA384
-import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaPSSSHA512
-import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaSHA256
-import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaSHA384
-import cocoapods.IOHKRSA.RSASignatureMessageTypeRsaSHA512
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual typealias RSASignatureTypeNativeType = Long
-
-actual final enum class RSASignatureType : NativeTypeInterface {
- RSASHA256,
- RSASHA384,
- RSASHA512,
- RSAPSSSHA256,
- RSAPSSSHA384,
- RSAPSSSHA512;
-
- override fun nativeValue(): RSASignatureMessageType {
- return when (this) {
- RSASHA256 -> RSASignatureMessageTypeRsaSHA256
- RSASHA384 -> RSASignatureMessageTypeRsaSHA384
- RSASHA512 -> RSASignatureMessageTypeRsaSHA512
- RSAPSSSHA256 -> RSASignatureMessageTypeRsaPSSSHA256
- RSAPSSSHA384 -> RSASignatureMessageTypeRsaPSSSHA384
- RSAPSSSHA512 -> RSASignatureMessageTypeRsaPSSSHA512
- }
- }
-}
diff --git a/rsa/src/iosTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/iosTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
deleted file mode 100644
index ecadb4656..000000000
--- a/rsa/src/iosTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair
-import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.runTest
-import kotlin.test.Test
-import kotlin.test.assertTrue
-
-@OptIn(ExperimentalCoroutinesApi::class)
-actual class RSATests {
- @Test
- actual fun testRSA() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256))
- }
-
- @Test
- actual fun testRSAPSS() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256))
- }
-}
diff --git a/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
deleted file mode 100644
index d2bff71cf..000000000
--- a/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
+++ /dev/null
@@ -1,67 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey
-import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey
-import io.iohk.atala.prism.apollo.utils.toArrayBuffer
-import io.iohk.atala.prism.apollo.utils.toByteArray
-import kotlinx.coroutines.MainScope
-import kotlinx.coroutines.await
-import kotlinx.coroutines.promise
-import web.crypto.RsaPssParams
-import web.crypto.crypto
-
-actual final class RSA : RSASigner, RSAVerifier {
-
- private fun getRsaPssParams(): RsaPssParams {
- val algorithm = "RSA-PSS"
- return js("{name: algorithm, saltLength: 32}") as RsaPssParams
- }
-
- override suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray {
- return when (type) {
- RSASignatureType.RSASHA256, RSASignatureType.RSASHA384, RSASignatureType.RSASHA512 -> {
- MainScope().promise {
- crypto.subtle.sign(
- privateKey.nativeType.algorithm.name,
- privateKey.nativeType,
- data.toArrayBuffer()
- ).await().toByteArray()
- }.await()
- }
- RSASignatureType.RSAPSSSHA256, RSASignatureType.RSAPSSSHA384, RSASignatureType.RSAPSSSHA512 -> {
- MainScope().promise {
- crypto.subtle.sign(
- getRsaPssParams(),
- privateKey.nativeType,
- data.toArrayBuffer()
- ).await().toByteArray()
- }.await()
- }
- }
- }
-
- override suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean {
- return when (type) {
- RSASignatureType.RSASHA256, RSASignatureType.RSASHA384, RSASignatureType.RSASHA512 -> {
- MainScope().promise {
- crypto.subtle.verify(
- publicKey.nativeType.algorithm.name,
- publicKey.nativeType,
- signedData.toArrayBuffer(),
- data.toArrayBuffer()
- ).await()
- }.await()
- }
- RSASignatureType.RSAPSSSHA256, RSASignatureType.RSAPSSSHA384, RSASignatureType.RSAPSSSHA512 -> {
- MainScope().promise {
- crypto.subtle.verify(
- getRsaPssParams(),
- publicKey.nativeType,
- signedData.toArrayBuffer(),
- data.toArrayBuffer()
- ).await()
- }.await()
- }
- }
- }
-}
diff --git a/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
deleted file mode 100644
index 95278d688..000000000
--- a/rsa/src/jsMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual typealias RSASignatureTypeNativeType = String
-
-actual final enum class RSASignatureType : NativeTypeInterface {
- RSASHA256,
- RSASHA384,
- RSASHA512,
- RSAPSSSHA256,
- RSAPSSSHA384,
- RSAPSSSHA512;
-
- override fun nativeValue(): RSASignatureTypeNativeType {
- return when (this) {
- RSASHA256 -> "RSA-PSS"
- RSASHA384 -> "RSA-PSS"
- RSASHA512 -> "RSA-PSS"
- RSAPSSSHA256 -> "RSASSA-PKCS1-v1_5"
- RSAPSSSHA384 -> "RSASSA-PKCS1-v1_5"
- RSAPSSSHA512 -> "RSASSA-PKCS1-v1_5"
- }
- }
-}
diff --git a/rsa/src/jsTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/jsTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
deleted file mode 100644
index 736631f19..000000000
--- a/rsa/src/jsTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.JsHashType
-import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair
-import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.runTest
-import kotlin.test.Test
-import kotlin.test.assertTrue
-
-@OptIn(ExperimentalCoroutinesApi::class)
-actual class RSATests {
- @Test
- actual fun testRSA() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, JsHashType.SHA256, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256))
- }
-
- @Test
- actual fun testRSAPSS() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, JsHashType.SHA256, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256))
- }
-}
diff --git a/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt b/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
deleted file mode 100644
index f17909c96..000000000
--- a/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSA.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.KMMRSAPrivateKey
-import io.iohk.atala.prism.apollo.utils.KMMRSAPublicKey
-import org.bouncycastle.jce.provider.BouncyCastleProvider
-import java.security.Security
-import java.security.Signature
-
-actual final class RSA : RSASigner, RSAVerifier {
-
- init {
- Security.removeProvider("BC")
- Security.addProvider(BouncyCastleProvider())
- }
-
- override suspend fun sign(privateKey: KMMRSAPrivateKey, data: ByteArray, type: RSASignatureType): ByteArray {
- val signature = Signature.getInstance(type.nativeValue())
- signature.initSign(privateKey.nativeType)
- signature.update(data)
- return signature.sign()
- }
-
- override suspend fun verify(publicKey: KMMRSAPublicKey, data: ByteArray, signedData: ByteArray, type: RSASignatureType): Boolean {
- val signature = Signature.getInstance(type.nativeValue())
- signature.initVerify(publicKey.nativeType)
- signature.update(data)
- return signature.verify(signedData)
- }
-}
diff --git a/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt b/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
deleted file mode 100644
index f0f01128c..000000000
--- a/rsa/src/jvmMain/kotlin/io/iohk/atala/prism/apollo/rsa/RSASignatureType.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.NativeTypeInterface
-
-actual typealias RSASignatureTypeNativeType = String
-
-actual final enum class RSASignatureType : NativeTypeInterface {
- RSASHA256,
- RSASHA384,
- RSASHA512,
- RSAPSSSHA256,
- RSAPSSSHA384,
- RSAPSSSHA512;
-
- override fun nativeValue(): String {
- return when (this) {
- RSASHA256 -> "SHA256withRSA"
- RSASHA384 -> "SHA384withRSA"
- RSASHA512 -> "SHA512withRSA"
- RSAPSSSHA256 -> "SHA256withRSA/PSS"
- RSAPSSSHA384 -> "SHA384withRSA/PSS"
- RSAPSSSHA512 -> "SHA512withRSA/PSS"
- }
- }
-}
diff --git a/rsa/src/jvmTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt b/rsa/src/jvmTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
deleted file mode 100644
index 1c7ffa0e9..000000000
--- a/rsa/src/jvmTest/kotlin/io/iohk/atala/prism/apollo/rsa/RSATests.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package io.iohk.atala.prism.apollo.rsa
-
-import io.iohk.atala.prism.apollo.utils.KMMRSAKeyPair
-import io.iohk.atala.prism.apollo.utils.RSAAsymmetricAlgorithm
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.runTest
-import org.junit.jupiter.api.Test
-import kotlin.test.assertTrue
-
-@OptIn(ExperimentalCoroutinesApi::class)
-actual class RSATests {
- @Test
- actual fun testRSA() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSA, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSASHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSASHA256))
- }
-
- @Test
- actual fun testRSAPSS() = runTest {
- val msgToSign = "Hello IOG!"
- val keyPair = KMMRSAKeyPair.generateRSAKeyPair(RSAAsymmetricAlgorithm.RSAPSS, 2048)
- val rsa = RSA()
- val signature = rsa.sign(keyPair.privateKey, msgToSign.encodeToByteArray(), RSASignatureType.RSAPSSSHA256)
-
- assertTrue(rsa.verify(keyPair.publicKey, msgToSign.encodeToByteArray(), signature, RSASignatureType.RSAPSSSHA256))
- }
-}
diff --git a/secp256k1-kmp/src/commonMain/kotlin/fr/acinq/secp256k1/Secp256k1.kt b/secp256k1-kmp/src/commonMain/kotlin/fr/acinq/secp256k1/Secp256k1.kt
index bb7a05d7a..99018ce35 100644
--- a/secp256k1-kmp/src/commonMain/kotlin/fr/acinq/secp256k1/Secp256k1.kt
+++ b/secp256k1-kmp/src/commonMain/kotlin/fr/acinq/secp256k1/Secp256k1.kt
@@ -18,10 +18,7 @@ package fr.acinq.secp256k1
import kotlin.jvm.JvmStatic
-/* ktlint-disable */
-
public interface Secp256k1 {
-
/**
* Verify an ECDSA signature.
*
diff --git a/settings.gradle.kts b/settings.gradle.kts
index d33d8d0d2..7a40c78f2 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -29,10 +29,10 @@ include(":base58")
include(":base64")
include(":multibase")
include(":utils")
-include(":base-symmetric-encryption")
+include(":cryptography")
include(":secure-random")
// include(":aes")
-include(":base-asymmetric-encryption")
+include(":cryptography")
include(":iOSLibs")
// include(":rsa")
// include(":ecdsa")