From 1bb27da048119a92d34a4473fb1aef9649d4fc74 Mon Sep 17 00:00:00 2001 From: Chad Ostrowski <221614+chadoh@users.noreply.github.com> Date: Tue, 9 Mar 2021 17:13:17 -0500 Subject: [PATCH 1/9] switch from Travis to GH Actions --- .github/workflows/test.yml | 25 +++++++++++++++++++++++++ .travis.yml | 14 -------------- 2 files changed, 25 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/test.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..fdc3099 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,25 @@ +name: CI +on: push +jobs: + test: + runs-on: ubuntu-latest + env: + RUST_BACKTRACE: 1 + steps: + - name: Checkout Code + uses: actions/checkout@v2 + + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable-2020-10-08 + target: wasm32-unknown-unknown + + - name: Check that build works + run: ./build.sh + # TODO: check that files in `res` are unchanged + + - name: Test + uses: actions-rs/cargo@v1 + with: + command: test diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c75b75f..0000000 --- a/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: node_js -node_js: - - 12.0 -os: - - linux - - osx - -before_install: - - curl https://sh.rustup.rs -sSf -m 60 | sh -s -- -y -v --default-toolchain stable - - if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then HOME="/c/Users/travis"; fi - - export PATH="$HOME/.cargo/bin:$PATH" - - rustup target add wasm32-unknown-unknown -script: - - npm run test From 9b7b065c1276d60c7b008bfdd5d7983f29d356ba Mon Sep 17 00:00:00 2001 From: Chad Ostrowski <221614+chadoh@users.noreply.github.com> Date: Tue, 9 Mar 2021 16:28:39 -0500 Subject: [PATCH 2/9] Update for NEP141 * Copy from https://github.com/near/near-sdk-rs/tree/master/examples/fungible-token * Update relative file paths to git refs * Add detail to README to explain simulation test setup & lack of AssemblyScript --- .dependabot/config.yml | 22 - .gitignore | 1 - Cargo.lock | 2545 ++++++ Cargo.toml | 29 + README.md | 68 +- build.sh | 6 + contracts/assemblyscript/as-pect.config.js | 2 - contracts/assemblyscript/as-pect.d.ts | 1 - contracts/assemblyscript/as_types.d.ts | 1 - contracts/assemblyscript/asconfig.json | 7 - contracts/assemblyscript/build.js | 68 - .../assemblyscript/nep21-basic/README.md | 34 - .../nep21-basic/__tests__/main.unit.spec.ts | 144 - .../__tests__/non-spec.unit.spec.ts | 23 - contracts/assemblyscript/nep21-basic/main.ts | 115 - .../assemblyscript/nep21-basic/models.ts | 21 - .../assemblyscript/nep21-basic/non-spec.ts | 35 - contracts/assemblyscript/nep21-basic/types.ts | 5 - contracts/assemblyscript/tsconfig.json | 4 - contracts/rust/.cargo/config | 2 - contracts/rust/.gitkeep | 0 contracts/rust/Cargo.lock | 462 - contracts/rust/Cargo.toml | 21 - contracts/rust/README.md | 18 - contracts/rust/build.js | 23 - contracts/rust/src/lib.rs | 596 -- flags.sh | 7 + ft/Cargo.toml | 12 + ft/src/lib.rs | 164 + package.json | 25 - res/defi.wasm | Bin 0 -> 137762 bytes res/fungible_token.wasm | Bin 0 -> 223207 bytes rust-toolchain | 1 + test-contract-defi/Cargo.toml | 13 + test-contract-defi/src/lib.rs | 88 + tests/general.rs | 325 + yarn.lock | 7653 ----------------- 37 files changed, 3217 insertions(+), 9324 deletions(-) delete mode 100644 .dependabot/config.yml create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100755 build.sh delete mode 100644 contracts/assemblyscript/as-pect.config.js delete mode 100644 contracts/assemblyscript/as-pect.d.ts delete mode 100644 contracts/assemblyscript/as_types.d.ts delete mode 100644 contracts/assemblyscript/asconfig.json delete mode 100755 contracts/assemblyscript/build.js delete mode 100644 contracts/assemblyscript/nep21-basic/README.md delete mode 100644 contracts/assemblyscript/nep21-basic/__tests__/main.unit.spec.ts delete mode 100644 contracts/assemblyscript/nep21-basic/__tests__/non-spec.unit.spec.ts delete mode 100644 contracts/assemblyscript/nep21-basic/main.ts delete mode 100644 contracts/assemblyscript/nep21-basic/models.ts delete mode 100644 contracts/assemblyscript/nep21-basic/non-spec.ts delete mode 100644 contracts/assemblyscript/nep21-basic/types.ts delete mode 100644 contracts/assemblyscript/tsconfig.json delete mode 100644 contracts/rust/.cargo/config delete mode 100644 contracts/rust/.gitkeep delete mode 100644 contracts/rust/Cargo.lock delete mode 100644 contracts/rust/Cargo.toml delete mode 100644 contracts/rust/README.md delete mode 100755 contracts/rust/build.js delete mode 100644 contracts/rust/src/lib.rs create mode 100644 flags.sh create mode 100644 ft/Cargo.toml create mode 100644 ft/src/lib.rs delete mode 100644 package.json create mode 100755 res/defi.wasm create mode 100755 res/fungible_token.wasm create mode 100644 rust-toolchain create mode 100644 test-contract-defi/Cargo.toml create mode 100644 test-contract-defi/src/lib.rs create mode 100644 tests/general.rs delete mode 100644 yarn.lock diff --git a/.dependabot/config.yml b/.dependabot/config.yml deleted file mode 100644 index 7ff9df0..0000000 --- a/.dependabot/config.yml +++ /dev/null @@ -1,22 +0,0 @@ -version: 1 -update_configs: - - package_manager: "javascript" - directory: "/" - update_schedule: "live" - automerged_updates: - - match: - dependency_type: "development" - update_type: "all" - - match: - dependency_type: "production" - update_type: "all" - - package_manager: "rust:cargo" - directory: "/contracts/rust" - update_schedule: "live" - automerged_updates: - - match: - dependency_type: "development" - update_type: "all" - - match: - dependency_type: "production" - update_type: "all" diff --git a/.gitignore b/.gitignore index 43eb57d..0812698 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,3 @@ yarn-debug.log* yarn-error.log* **/target -**/res \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..14788f4 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,2545 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "ahash" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" + +[[package]] +name = "aho-corasick" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +dependencies = [ + "memchr", +] + +[[package]] +name = "ansi_term" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +dependencies = [ + "winapi", +] + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "async-mutex" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-trait" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3a45e77e34375a7923b1e8febb049bb011f064714a8e17a1a616fef01da13d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bincode" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d175dfa69e619905c4c3cdb7c3c203fa3bdd5d51184e3afdb2742c0280493772" +dependencies = [ + "byteorder", + "serde", +] + +[[package]] +name = "bindgen" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66c0bb6167449588ff70803f4127f0684f9063097eca5016f37eb52b92c2cf36" +dependencies = [ + "bitflags", + "cexpr", + "cfg-if 0.1.10", + "clang-sys", + "clap", + "env_logger", + "lazy_static", + "lazycell", + "log", + "peeking_take_while", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "which", +] + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + +[[package]] +name = "bitvec" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5011ffc90248764d7005b0e10c7294f5aa1bd87d9dd7248f4ad475b347c294d" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a5720225ef5daecf08657f23791354e1685a8c91a4c60c7f3d3b2892f978f4" +dependencies = [ + "crypto-mac", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "blake3" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if 0.1.10", + "constant_time_eq", + "crypto-mac", + "digest 0.9.0", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "block-padding", + "generic-array 0.14.4", +] + +[[package]] +name = "block-padding" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" + +[[package]] +name = "borsh" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5a26c53ddf60281f18e7a29b20db7ba3db82a9d81b9650bfaa02d646f50d364" +dependencies = [ + "borsh-derive", + "hashbrown", +] + +[[package]] +name = "borsh-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b637a47728b78a78cd7f4b85bf06d71ef4221840e059a38f048be2422bf673b2" +dependencies = [ + "borsh-derive-internal", + "borsh-schema-derive-internal", + "proc-macro-crate", + "proc-macro2", + "syn", +] + +[[package]] +name = "borsh-derive-internal" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d813fa25eb0bed78c36492cff4415f38c760d6de833d255ba9095bd8ebb7d725" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "borsh-schema-derive-internal" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf78ee4a98c8cb9eba1bac3d3e2a1ea3d7673c719ce691e67b5cbafc472d3b7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + +[[package]] +name = "byte-slice-cast" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c1bf4a04a88c54f589125563643d773f3254b5c38571395e2b591c693bbc81" + +[[package]] +name = "byteorder" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" + +[[package]] +name = "bytes" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" + +[[package]] +name = "c2-chacha" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb6b83fa00a7c53f420893670940c8fdfaa89f9dd9adb52062cca39482a31ab6" +dependencies = [ + "cipher", + "ppv-lite86", +] + +[[package]] +name = "cached" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2afe73808fbaac302e39c9754bfc3c4b4d0f99c9c240b9f4e4efc841ad1b74" +dependencies = [ + "async-mutex", + "async-trait", + "cached_proc_macro", + "cached_proc_macro_types", + "futures", + "hashbrown", + "once_cell", +] + +[[package]] +name = "cached_proc_macro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf857ae42d910aede5c5186e62684b0d7a597ce2fe3bd14448ab8f7ef439848c" +dependencies = [ + "async-mutex", + "cached_proc_macro_types", + "darling", + "quote", + "syn", +] + +[[package]] +name = "cached_proc_macro_types" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" + +[[package]] +name = "cc" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cexpr" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" +dependencies = [ + "nom", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "libc", + "num-integer", + "num-traits", + "serde", + "time", + "winapi", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array 0.14.4", +] + +[[package]] +name = "clang-sys" +version = "0.29.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "2.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +dependencies = [ + "ansi_term", + "atty", + "bitflags", + "strsim 0.8.0", + "textwrap", + "unicode-width", + "vec_map", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" +dependencies = [ + "bitflags", +] + +[[package]] +name = "concat-with" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ae45936bbf9bddd6a0268c0ea5d3814a72403f4b69a1c318aae2ce90444ad55" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "cpuid-bool" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array 0.14.4", + "subtle", +] + +[[package]] +name = "curve25519-dalek" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f627126b946c25a4638eec0ea634fc52506dea98db118aae985118ce7c3d723f" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.9.3", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "defi" +version = "0.0.1" +dependencies = [ + "near-contract-standards", + "near-sdk", +] + +[[package]] +name = "derive_more" +version = "0.99.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cb0e6161ad61ed084a36ba71fbba9e3ac5aee3606fb607fe08da6acbcf3d8c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.3", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.4", +] + +[[package]] +name = "dynasm" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7d1242462849390bb2ad38aeed769499f1afc7383affa2ab0c1baa894c0200" +dependencies = [ + "bitflags", + "byteorder", + "lazy_static", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dynasmrt" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dd4d1d5ca12258cef339a57a7643e8b233a42dea9bb849630ddd9dd7726aa9" +dependencies = [ + "byteorder", + "dynasm", + "memmap2", +] + +[[package]] +name = "easy-ext" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80581ee1c96b68c603eee514af47f075b39829304bde1a04381c826f3e06a9b4" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "ed25519" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c66a534cbb46ab4ea03477eae19d5c22c01da8258030280b7bd9d8433fb6ef" +dependencies = [ + "signature", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek", + "ed25519", + "rand 0.7.3", + "serde", + "sha2", + "zeroize", +] + +[[package]] +name = "elastic-array" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d63720ea2bc2e1b79f7aa044d9dc0b825f9ccb6930b32120f8fb9e873aa84bc" +dependencies = [ + "heapsize", +] + +[[package]] +name = "env_logger" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "errno" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa68f2fb9cae9d37c9b2b3584aba698a2e97f72d7aef7b9f7aa71d8b54ce46fe" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067" +dependencies = [ + "gcc", + "libc", +] + +[[package]] +name = "ethbloom" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "779864b9c7f7ead1f092972c3257496c6a84b46dba2ce131dd8a282cb2cc5972" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-rlp", + "impl-serde", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64b5df66a228d85e4b17e5d6c6aa43b0310898ffe8a85988c4c032357aaabfd" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-rlp", + "impl-serde", + "primitive-types", + "uint", +] + +[[package]] +name = "event-listener" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" + +[[package]] +name = "fixed-hash" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" +dependencies = [ + "byteorder", + "rand 0.8.3", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] +name = "fs_extra" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" + +[[package]] +name = "fungible-token" +version = "1.0.0" +dependencies = [ + "near-contract-standards", + "near-sdk", +] + +[[package]] +name = "fungible-token-wrapper" +version = "0.0.1" +dependencies = [ + "defi", + "fungible-token", + "near-sdk", + "near-sdk-sim", +] + +[[package]] +name = "funty" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" + +[[package]] +name = "futures" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f55667319111d593ba876406af7c409c0ebb44dc4be6132a783ccf163ea14c1" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c2dd2df839b57db9ab69c2c9d8f3e8c81984781937fe2807dc6dcf3b2ad2939" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15496a72fabf0e62bdc3df11a59a3787429221dd0710ba8ef163d6f7a9112c94" + +[[package]] +name = "futures-executor" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891a4b7b96d84d5940084b2a37632dd65deeae662c114ceaa2c879629c9c0ad1" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71c2c65c57704c32f5241c1223167c2c3294fd34ac020c807ddbe6db287ba59" + +[[package]] +name = "futures-macro" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea405816a5139fb39af82c2beb921d52143f556038378d6db21183a5c37fbfb7" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85754d98985841b7d4f5e8e6fbfa4a4ac847916893ec511a2917ccd8525b8bb3" + +[[package]] +name = "futures-task" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa189ef211c15ee602667a6fcfe1c1fd9e07d42250d2156382820fba33c9df80" + +[[package]] +name = "futures-util" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1812c7ab8aedf8d6f2701a43e1243acdbcc2b36ab26e2ad421eb99ac963d96d1" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "proc-macro-hack", + "proc-macro-nested", + "slab", +] + +[[package]] +name = "gcc" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" + +[[package]] +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.10.2+wasi-snapshot-preview1", +] + +[[package]] +name = "glob" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" + +[[package]] +name = "hashbrown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" +dependencies = [ + "ahash", +] + +[[package]] +name = "heapsize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461" +dependencies = [ + "winapi", +] + +[[package]] +name = "heck" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89829a5d69c23d348314a7ac337fe39173b61149a9864deabd260983aed48c21" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df170efa359aebdd5cb7fe78edcc67107748e4737bdca8a8fb40d15ea7a877ed" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b47ca4d2b6931707a55fce5cf66aff80e2178c8b63bbb4ecb5695cbc870ddf6f" +dependencies = [ + "serde", +] + +[[package]] +name = "indexmap" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1fa934250de4de8aef298d81c729a7d33d8c239daa3a7575e6b92bfc7313b" +dependencies = [ + "autocfg", + "hashbrown", + "serde", +] + +[[package]] +name = "instant" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" + +[[package]] +name = "jemalloc-sys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" +dependencies = [ + "cc", + "fs_extra", + "libc", +] + +[[package]] +name = "jemallocator" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" +dependencies = [ + "jemalloc-sys", + "libc", +] + +[[package]] +name = "jobserver" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c71313ebb9439f74b00d9d2dcec36440beaf57a6aa0623068441dd7cd81a7f2" +dependencies = [ + "libc", +] + +[[package]] +name = "keccak" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" + +[[package]] +name = "lazy-static-include" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c942ea960c2d8678d32cb14aa56d5c37f21107b54aa281c944e4d03690c55d1" +dependencies = [ + "lazy_static", + "slash-formatter", + "syn", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + +[[package]] +name = "libc" +version = "0.2.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7282d924be3275cec7f6756ff4121987bc6481325397dde6ba3e7802b1a8b1c" + +[[package]] +name = "libloading" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" +dependencies = [ + "cc", + "winapi", +] + +[[package]] +name = "librocksdb-sys" +version = "6.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b56f651c204634b936be2f92dbb42c36867e00ff7fe2405591f3b9fa66f09" +dependencies = [ + "bindgen", + "cc", + "glob", + "libc", +] + +[[package]] +name = "lock_api" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "lock_api" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd96ffd135b2fd7b973ac026d28085defbe8983df057ced3eb4f2130b0831312" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" + +[[package]] +name = "memchr" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" + +[[package]] +name = "memmap" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "memmap2" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e3e85b970d650e2ae6d70592474087051c11c54da7f7b4949725c5735fbcc6" +dependencies = [ + "libc", +] + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + +[[package]] +name = "near-contract-standards" +version = "3.0.0-pre.3" +source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +dependencies = [ + "near-sdk", +] + +[[package]] +name = "near-crypto" +version = "0.1.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "arrayref", + "blake2", + "borsh", + "bs58", + "c2-chacha", + "curve25519-dalek", + "derive_more", + "ed25519-dalek", + "lazy_static", + "libc", + "parity-secp256k1", + "rand 0.7.3", + "rand_core 0.5.1", + "serde", + "serde_json", + "subtle", + "thiserror", +] + +[[package]] +name = "near-metrics" +version = "0.1.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "lazy_static", + "log", + "prometheus", +] + +[[package]] +name = "near-pool" +version = "0.1.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "borsh", + "near-crypto", + "near-primitives", + "rand 0.7.3", +] + +[[package]] +name = "near-primitives" +version = "0.1.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "base64 0.13.0", + "borsh", + "bs58", + "byteorder", + "chrono", + "derive_more", + "easy-ext", + "hex", + "jemallocator", + "lazy_static", + "near-crypto", + "near-primitives-core 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-rpc-error-macro 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-vm-errors 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "num-rational", + "primitive-types", + "rand 0.7.3", + "reed-solomon-erasure", + "regex", + "serde", + "serde_json", + "sha2", + "smart-default", + "validator", +] + +[[package]] +name = "near-primitives-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92035b79bf9983502fe7b67b5a9fecea7604e979d439727827fd0d8f0d77720e" +dependencies = [ + "base64 0.11.0", + "borsh", + "bs58", + "derive_more", + "hex", + "lazy_static", + "num-rational", + "serde", + "serde_json", + "sha2", +] + +[[package]] +name = "near-primitives-core" +version = "0.1.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "base64 0.11.0", + "borsh", + "bs58", + "derive_more", + "hex", + "lazy_static", + "num-rational", + "serde", + "serde_json", + "sha2", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffa8dbf8437a28ac40fcb85859ab0d0b8385013935b000c7a51ae79631dd74d9" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn", +] + +[[package]] +name = "near-rpc-error-core" +version = "0.1.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6111d713e90c7c551dee937f4a06cb9ea2672243455a4454cc7566387ba2d9" +dependencies = [ + "near-rpc-error-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn", +] + +[[package]] +name = "near-rpc-error-macro" +version = "0.1.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "near-rpc-error-core 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn", +] + +[[package]] +name = "near-runtime-utils" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47f5c1891cec5a03e3dc99f985031408b19516305e2e59d64c4ce52b409e46a0" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "near-runtime-utils" +version = "3.0.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "near-sdk" +version = "3.0.0-pre.3" +source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +dependencies = [ + "base64 0.13.0", + "borsh", + "bs58", + "near-primitives-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-sdk-macros", + "near-vm-logic 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "serde_json", + "wee_alloc", +] + +[[package]] +name = "near-sdk-core" +version = "3.0.0-pre.3" +source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +dependencies = [ + "Inflector", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "near-sdk-macros" +version = "3.0.0-pre.3" +source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +dependencies = [ + "near-sdk-core", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "near-sdk-sim" +version = "3.0.0-pre.3" +source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +dependencies = [ + "funty", + "lazy-static-include", + "near-crypto", + "near-pool", + "near-primitives", + "near-sdk", + "near-store", + "near-vm-logic 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "node-runtime", +] + +[[package]] +name = "near-store" +version = "2.2.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "borsh", + "byteorder", + "cached", + "derive_more", + "elastic-array", + "lazy_static", + "near-crypto", + "near-primitives", + "num_cpus", + "rand 0.7.3", + "rocksdb", + "serde", + "serde_json", + "strum", +] + +[[package]] +name = "near-vm-errors" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a100dda565c5375ac061126167afc5c33cdba1f2e325cfae3ce08f4a5a432a" +dependencies = [ + "borsh", + "hex", + "near-rpc-error-macro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", +] + +[[package]] +name = "near-vm-errors" +version = "3.0.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "borsh", + "hex", + "near-rpc-error-macro 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "serde", +] + +[[package]] +name = "near-vm-logic" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a12201244dd59ae79506767afe7a8f51b5eb7bd0aa237d355dfa635f7b777c4a" +dependencies = [ + "base64 0.13.0", + "borsh", + "bs58", + "byteorder", + "near-primitives-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-runtime-utils 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-vm-errors 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "sha2", + "sha3", +] + +[[package]] +name = "near-vm-logic" +version = "3.0.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "base64 0.13.0", + "borsh", + "bs58", + "byteorder", + "near-primitives-core 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-runtime-utils 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-vm-errors 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "serde", + "sha2", + "sha3", +] + +[[package]] +name = "near-vm-runner" +version = "3.0.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "borsh", + "cached", + "log", + "near-primitives", + "near-vm-errors 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-vm-logic 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "parity-wasm", + "pwasm-utils", + "wasmer-runtime-core-near", + "wasmer-runtime-near", +] + +[[package]] +name = "nix" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2e0b4f3320ed72aaedb9a5ac838690a8047c7b275da22711fddff4f8a14229" +dependencies = [ + "bitflags", + "cc", + "cfg-if 0.1.10", + "libc", + "void", +] + +[[package]] +name = "node-runtime" +version = "3.0.0" +source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +dependencies = [ + "borsh", + "byteorder", + "ethereum-types", + "hex", + "lazy_static", + "log", + "near-crypto", + "near-metrics", + "near-primitives", + "near-runtime-utils 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-store", + "near-vm-errors 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-vm-logic 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-vm-runner", + "num-bigint", + "num-rational", + "num-traits", + "rand 0.7.3", + "serde", + "serde_json", +] + +[[package]] +name = "nom" +version = "5.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +dependencies = [ + "memchr", + "version_check", +] + +[[package]] +name = "num-bigint" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e9a41747ae4633fce5adffb4d2e81ffc5e89593cb19917f8fb2cc5ff76507bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "once_cell" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10acf907b94fc1b1a152d08ef97e7759650268cf986bf127f387e602b02c7e5a" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "page_size" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebde548fbbf1ea81a99b128872779c437752fb99f217c45245e1a61dcd9edcd" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "parity-scale-codec" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cd3dab59b5cf4bc81069ade0fc470341a1ef3ad5fa73e5a8943bed2ec12b2e8" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "serde", +] + +[[package]] +name = "parity-secp256k1" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fca4f82fccae37e8bbdaeb949a4a218a1bbc485d11598f193d2a908042e5fc1" +dependencies = [ + "arrayvec", + "cc", + "cfg-if 0.1.10", + "rand 0.7.3", +] + +[[package]] +name = "parity-wasm" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc878dac00da22f8f61e7af3157988424567ab01d9920b962ef7dcbd7cd865" + +[[package]] +name = "parking_lot" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3a704eb390aafdc107b0e392f56a82b668e3a71366993b5340f5833fd62505e" +dependencies = [ + "lock_api 0.3.4", + "parking_lot_core 0.7.2", +] + +[[package]] +name = "parking_lot" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +dependencies = [ + "instant", + "lock_api 0.4.2", + "parking_lot_core 0.8.3", +] + +[[package]] +name = "parking_lot_core" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d58c7c768d4ba344e3e8d72518ac13e259d7c7ade24167003b8488e10b6740a3" +dependencies = [ + "cfg-if 0.1.10", + "cloudabi", + "libc", + "redox_syscall 0.1.57", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall 0.2.5", + "smallvec", + "winapi", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pin-project-lite" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439697af366c49a6d0a010c56a0d97685bc140ce0d377b13a2ea2aa42d64a827" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "primitive-types" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2415937401cb030a2a0a4d922483f945fa068f52a7dbb22ce0fe5f2b6f6adace" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +dependencies = [ + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro-nested" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" + +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "prometheus" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8425533e7122f0c3cc7a37e6244b16ad3a2cc32ae7ac6276e2a75da0d9c200d" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "parking_lot 0.11.1", + "protobuf", + "regex", + "thiserror", +] + +[[package]] +name = "protobuf" +version = "2.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f72884896d22e0da0e5b266cb9a780b791f6c3b2f5beab6368d6cd4f0dbb86" + +[[package]] +name = "pwasm-utils" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f7a12f176deee919f4ba55326ee17491c8b707d0987aed822682c821b660192" +dependencies = [ + "byteorder", + "log", + "parity-wasm", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +dependencies = [ + "libc", + "rand_chacha 0.3.0", + "rand_core 0.6.2", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.2", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +dependencies = [ + "getrandom 0.2.2", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "redox_syscall" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" + +[[package]] +name = "redox_syscall" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94341e4e44e24f6b591b59e47a8a027df12e008d73fd5672dbea9cc22f4507d9" +dependencies = [ + "bitflags", +] + +[[package]] +name = "reed-solomon-erasure" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a415a013dd7c5d4221382329a5a3482566da675737494935cbbbcdec04662f9d" +dependencies = [ + "smallvec", +] + +[[package]] +name = "regex" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9251239e129e16308e70d853559389de218ac275b515068abc96829d05b948a" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", +] + +[[package]] +name = "regex-syntax" +version = "0.6.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581" + +[[package]] +name = "rlp" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e54369147e3e7796c9b885c7304db87ca3d09a0a98f72843d532868675bbfba8" +dependencies = [ + "bytes", + "rustc-hex", +] + +[[package]] +name = "rocksdb" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d83c02c429044d58474eaf5ae31e062d0de894e21125b47437ec0edc1397e6" +dependencies = [ + "libc", + "librocksdb-sys", +] + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06c64263859d87aa2eb554587e2d23183398d617427327cf2b3d0ed8c69e4800" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-bench" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d733da87e79faaac25616e33d26299a41143fd4cd42746cbb0e91d8feea243fd" +dependencies = [ + "byteorder", + "serde", +] + +[[package]] +name = "serde_bytes" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c84d3526699cd55261af4b941e4e725444df67aa4f9e6a3564f18030d12672df" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa827a14b29ab7f44778d14a88d3cb76e949c45083f7dbfa507d0cb699dc12de" +dependencies = [ + "block-buffer", + "cfg-if 1.0.0", + "cpuid-bool", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer", + "digest 0.9.0", + "keccak", + "opaque-debug", +] + +[[package]] +name = "shlex" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" + +[[package]] +name = "signature" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0242b8e50dd9accdd56170e94ca1ebd223b098eb9c83539a6e367d0f36ae68" + +[[package]] +name = "slab" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" + +[[package]] +name = "slash-formatter" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55a065b7c425d213cbefcaaa4b62dd936183fa41c806a74767c72dd659ff4ad0" +dependencies = [ + "concat-with", +] + +[[package]] +name = "smallvec" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" + +[[package]] +name = "smart-default" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + +[[package]] +name = "strum" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "subtle" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" + +[[package]] +name = "syn" +version = "1.0.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4211ce9909eb971f111059df92c45640aad50a619cf55cd76476be803c4c68e6" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "synstructure" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target-lexicon" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" + +[[package]] +name = "termcolor" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8018d24e04c95ac8790716a5987d0fec4f8b27249ffa0f7d33f1369bdfb88cbd" +dependencies = [ + "once_cell", +] + +[[package]] +name = "time" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "317cca572a0e89c3ce0ca1f1bdc9369547fe318a683418e42ac8f59d14701023" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "toml" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +dependencies = [ + "serde", +] + +[[package]] +name = "typenum" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" + +[[package]] +name = "uint" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11fe9a9348741cf134085ad57c249508345fe16411b3d7fb4ff2da2f1d6382e" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +dependencies = [ + "matches", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" + +[[package]] +name = "unicode-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" + +[[package]] +name = "url" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", +] + +[[package]] +name = "validator" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d6937c33ec6039d8071bcf72933146b5bbe378d645d8fa59bdadabfc2a249" +dependencies = [ + "idna", + "lazy_static", + "regex", + "serde", + "serde_derive", + "serde_json", + "url", + "validator_types", +] + +[[package]] +name = "validator_types" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9680608df133af2c1ddd5eaf1ddce91d60d61b6bc51494ef326458365a470a" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.2+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" + +[[package]] +name = "wasmer-runtime-core-near" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2390b0b8cf58615c2f8b454d9535e1aed1d14c510cc1ce1af806a1992ad53300" +dependencies = [ + "bincode", + "blake3", + "cc", + "digest 0.8.1", + "errno", + "hex", + "indexmap", + "lazy_static", + "libc", + "nix", + "page_size", + "parking_lot 0.10.2", + "rustc_version", + "serde", + "serde-bench", + "serde_bytes", + "serde_derive", + "smallvec", + "target-lexicon", + "wasmparser", + "winapi", +] + +[[package]] +name = "wasmer-runtime-near" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6660e86bc7697fa29bab902214d5b33d394a990826c401b10816bcd285f938f" +dependencies = [ + "lazy_static", + "memmap", + "serde", + "serde_derive", + "wasmer-runtime-core-near", + "wasmer-singlepass-backend-near", +] + +[[package]] +name = "wasmer-singlepass-backend-near" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3f23543ef8f59667be4945c22eb4b1a50a79ff340555f6f23354223d2695541" +dependencies = [ + "bincode", + "byteorder", + "dynasm", + "dynasmrt", + "lazy_static", + "libc", + "nix", + "serde", + "serde_derive", + "smallvec", + "wasmer-runtime-core-near", +] + +[[package]] +name = "wasmparser" +version = "0.51.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeb1956b19469d1c5e63e459d29e7b5aa0f558d9f16fcef09736f8a265e6c10a" + +[[package]] +name = "wee_alloc" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "memory_units", + "winapi", +] + +[[package]] +name = "which" +version = "3.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724" +dependencies = [ + "libc", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "wyz" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + +[[package]] +name = "zeroize" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a974bcdd357f0dca4d41677db03436324d45a4c9ed2d0b873a5a360ce41c36" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f369ddb18862aba61aa49bf31e74d29f0f162dec753063200e1dc084345d16" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..bdfe63c --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,29 @@ +[package] +name = "fungible-token-wrapper" +version = "0.0.1" +authors = ["Near Inc "] +edition = "2018" + +[dev-dependencies] +near-sdk = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } +near-sdk-sim = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } + +# remember to include a line for each contract +fungible-token = { path = "./ft" } +defi = { path = "./test-contract-defi" } + +[profile.release] +codegen-units = 1 +# Tell `rustc` to optimize for small code size. +opt-level = "z" +lto = true +debug = false +panic = "abort" +overflow-checks = true + +[workspace] +# remember to include a member for each contract +members = [ + "ft", + "test-contract-defi", +] diff --git a/README.md b/README.md index c1226b0..ab37c53 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,44 @@ -Fungible Tokens (FTs) -===================== +Fungible Token (FT) +=================== -This repository includes an old fungible token implementations in Rust and AssemblyScript for [NEP#21 - Fungible Token](https://github.com/near/NEPs/pull/21) -The new NEP-141 has not been fleshed out into various examples yet, but can be understood by reading the [Nomicon Spec](https://nomicon.io/Standards/Tokens/FungibleTokenCore.html). -There is a basic example that is a good reference implementation in the [`near-sdk-rs` examples folder](https://github.com/near/near-sdk-rs/tree/master/examples/fungible-token). +Example implementation of a [Fungible Token] contract which uses [near-contract-standards] and [simulation] tests. This is a contract-only example. -# Rust + [Fungible Token]: https://nomicon.io/Standards/Tokens/FungibleTokenCore.html + [near-contract-standards]: https://github.com/near/near-sdk-rs/tree/master/near-contract-standards + [simulation]: https://github.com/near/near-sdk-rs/tree/master/near-sdk-sim -_Using Gitpod? You can skip these setup steps!_ +## Building -To run this project locally: +Follow instructions for installing Rust here https://docs.near.org/docs/tutorials/contracts/intro-to-rust#3-step-rust-installation (if you're using Gitpod, you can skip this step). -1. Prerequisites: Make sure you have Node.js ≥ 12 installed (https://nodejs.org), then use it to install [yarn]: `npm install --global yarn` (or just `npm i -g yarn`) -2. Install dependencies: `yarn install` (or just `yarn`) -3. Follow instructions for installing [rust] here https://docs.near.org/docs/tutorials/contracts/intro-to-rust#3-step-rust-installation +To build run: +```bash +./build.sh +``` -Now you can run all the [rust]-related scripts listed in `package.json`! Scripts you might want to start with: +## Testing -- `yarn test:unit:rs`: Runs all Rust tests in the project -- `yarn build:rs`: Compiles the Rust contracts to [Wasm] binaries +As with many Rust libraries and contracts, there are tests in the main fungible token implementation at `ft/src/lib.rs`. +Additionally, this project has [simulation] tests in `tests/general.rs`. Simulation tests allow testing cross-contract calls, which is crucial to ensuring that the `ft_transfer_call` function works properly. These simulation tests are the reason this project has the file structure it does. Note that the root project has a `Cargo.toml` which sets it up as a workspace. `ft` and `test-contract-defi` are both small & focused contract projects, the latter only existing for simulation tests. The root project imports `near-sdk-sim` and tests interaction between these contracts. -# AssemblyScript +You can run all these tests with one command: -_Using Gitpod? You can skip these setup steps!_ +```bash +cargo test +``` -To run this project locally: +If you want to run only simulation tests, you can use `cargo test simulation`, since all the simulation tests include "simulation" in their names. -1. Prerequisites: Make sure you have Node.js ≥ 12 installed (https://nodejs.org), then use it to install [yarn]: `npm install --global yarn` (or just `npm i -g yarn`) -2. Install dependencies: `yarn install` (or just `yarn`) -Now you can run all the [AssemblyScript]-related scripts listed in `package.json`! Scripts you might want to start with: +## Notes -- `yarn test:unit:as`: Runs all AssemblyScript tests with filenames ending in - `unit.spec` -- `yarn build:as`: Compiles the AssemblyScript contracts to [Wasm] binaries + - The maximum balance value is limited by U128 (`2**128 - 1`). + - JSON calls should pass U128 as a base-10 string. E.g. "100". + - This does not include escrow functionality, as `ft_transfer_call` provides a superior approach. An escrow system can, of course, be added as a separate contract or additional functionality within this contract. -## Data collection +## No AssemblyScript? -By using Gitpod in this project, you agree to opt-in to basic, anonymous analytics. No personal information is transmitted. Instead, these usage statistics aid in discovering potential bugs and user flow information. +[near-contract-standards] is currently Rust-only. We strongly suggest using this library to create your own Fungible Token contract to ensure it works as expected. - [rust]: https://www.rust-lang.org/ - [yarn]: https://yarnpkg.com/ - [AssemblyScript]: https://assemblyscript.org/ - [Wasm]: https://webassembly.org/ - - -# Course on FTs on NEAR - -If you want to learn more about fungible tokens and create your own project, head over to the course on ["Building and Issuing Fungible Tokens on NEAR"](https://vitalpoint.ai/academy/building-and-issuing-fungible-tokens-on-near/). The course was created by [Vital Point AI](https://github.com/ALuhning), who are part of the [NEAR Guilds Program](https://near.org/guilds/) - -What you will learn -* Fundamentals of FTs -* NEAR enhancement proposals (NEPs) vs Ethereum Improvement Proposals (EIPs) -* How to consult the relevant standards and specifications - specifically the NEAR Fungible Token Standard (NEP-21) and Ethereum ERC-20 -* Build a robust AssemblyScript contract (and supporting contracts) that issues and manages a Fungible Token on the NEAR blockchain -* with a React front-end +Someday NEAR core or community contributors may provide a similar library for AssemblyScript, at which point this example will be updated to include both a Rust and AssemblyScript version. diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..ad6182b --- /dev/null +++ b/build.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -e +cd "`dirname $0`" +source ./flags.sh +cargo build --all --target wasm32-unknown-unknown --release +cp target/wasm32-unknown-unknown/release/*.wasm ./res/ diff --git a/contracts/assemblyscript/as-pect.config.js b/contracts/assemblyscript/as-pect.config.js deleted file mode 100644 index 3d76ece..0000000 --- a/contracts/assemblyscript/as-pect.config.js +++ /dev/null @@ -1,2 +0,0 @@ -module.exports = require("near-sdk-as/imports"); -module.exports.include.push("**/*.unit.spec.ts"); diff --git a/contracts/assemblyscript/as-pect.d.ts b/contracts/assemblyscript/as-pect.d.ts deleted file mode 100644 index f65696b..0000000 --- a/contracts/assemblyscript/as-pect.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// \ No newline at end of file diff --git a/contracts/assemblyscript/as_types.d.ts b/contracts/assemblyscript/as_types.d.ts deleted file mode 100644 index 4e9e49a..0000000 --- a/contracts/assemblyscript/as_types.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// \ No newline at end of file diff --git a/contracts/assemblyscript/asconfig.json b/contracts/assemblyscript/asconfig.json deleted file mode 100644 index 191e650..0000000 --- a/contracts/assemblyscript/asconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "near-sdk-as/asconfig.json", - "entry": "nep21-basic/main.ts", - "options": { - "binaryFile": "out/nep21-basic-as.wasm" - } -} \ No newline at end of file diff --git a/contracts/assemblyscript/build.js b/contracts/assemblyscript/build.js deleted file mode 100755 index 0caed29..0000000 --- a/contracts/assemblyscript/build.js +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env node -const compile = require("near-sdk-as/compiler").compile; -const fs = require("fs"); -const path = require("path"); - -scanProjects().map(compileContract); - -// ---------------------------------------------------------------------------- -// Helper functions for the code above -// ---------------------------------------------------------------------------- - -function compileContract(fqPath) { - const folder = fqPath.replace(`${__dirname}/`, ""); - const name = folder - .replace(/(a-z)*\/main\.ts/, "") - .split(/[\.\/]/) - .pop(); - - const output = `out/${name}-as.wasm`; - - console.log(`\ncompiling contract [ ${folder} ] to [ ${output} ]`); - - compile( - fqPath, // input file - output, // output file - [ - "-O3z", - "--debug", // Shows debug output - "--measure", // shows compiler run time - "--runPasses", - "inlining-optimizing,dce", // inlines to optimize and removes deadcode - ], - { - verbose: false, // Output the cli args passed to asc - } - ); - - reportFilesize(output); -} - -function scanProjects() { - let filter = "main.ts"; - - const target = process.argv.pop(); - if (target !== __filename) { - filter = target; - } - - return readDirR(path.resolve(__dirname)) // only AssemblyScript files - .filter((fqPath) => fqPath.includes(filter)) // ignore cross contract calls - .filter((fqPath) => fqPath.includes("main.ts")); // just the contract entry points -} - -function reportFilesize(fqPath) { - const stats = fs.statSync(fqPath); - console.log(`Filesize : ${stats.size / 1000.0} kb`); -} - -/** - * List all files in a directory recursively in a synchronous fashion - * adapted from https://gist.github.com/kethinov/6658166#gistcomment-2109513 - * @param {string} dir top level to begin recursive descent through gstall subfolders - */ -function readDirR(dir) { - return fs.statSync(dir).isDirectory() - ? [].concat(...fs.readdirSync(dir).map((f) => readDirR(path.join(dir, f)))) - : dir; -} diff --git a/contracts/assemblyscript/nep21-basic/README.md b/contracts/assemblyscript/nep21-basic/README.md deleted file mode 100644 index c7b554f..0000000 --- a/contracts/assemblyscript/nep21-basic/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Minimal NEP#21 Implementation - -This repository includes FT implementations in Rust and AssemblyScript for [NEP#21 - Fungible Token](https://github.com/nearprotocol/NEPs/blob/master/specs/Standards/Tokens/FungibleToken.md) - -# Reference-level explanation - -The full implementation in Rust can be found there: https://github.com/nearprotocol/near-sdk-rs/blob/master/examples/fungible-token/src/lib.rs - -**NOTES** - -- All amounts, balances and allowance are limited by `u128` (max value `2**128 - 1`). -- Token standard uses JSON for serialization of arguments and results. -- Amounts in arguments and results have are serialized as Base-10 strings, e.g. `"100"`. This is done to avoid JSON limitation of max integer value of `2**53`. - -# Drawbacks - -- Current interface doesn't have minting, precision (decimals), naming. But it should be done as extensions, e.g. a Precision extension. -- It's not possible to exchange tokens without transferring them to escrow first. -- It's not possible to transfer tokens to a contract with a single transaction without setting the allowance first. It should be possible if we introduce `transfer_with` function that transfers tokens and calls escrow contract. It needs to handle result of the execution and contracts have to be aware of this API. - -# Future possibilities - -- Support for multiple token types -- Minting and burning -- Precision, naming and short token name. - -# Notable limitations of this implementation [this section not needed, given Drawbacks section above] - -- Anyone can mint tokens (!!) [in Drawbacks above it says that minting is not supported; which is it?] -- No functions to return metadata such as the name or symbol of this FT - -# Notable additions that go beyond the specification of NEP#21 - -`mint_to`: the spec gives no guidance or requirements on how tokens are minted/created/assigned. If this implementation of `mint_to` is close to matching your needs, feel free to ship your FT with only minor modifications (such as caller verification). diff --git a/contracts/assemblyscript/nep21-basic/__tests__/main.unit.spec.ts b/contracts/assemblyscript/nep21-basic/__tests__/main.unit.spec.ts deleted file mode 100644 index 6fee9e9..0000000 --- a/contracts/assemblyscript/nep21-basic/__tests__/main.unit.spec.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { u128, VMContext, storage } from 'near-sdk-as' -import * as contract from '../main' -import * as model from '../models' -import * as nonSpec from '../non-spec' - -const alice = 'alice' -const bob = 'bob' -const carol = 'carol' - -beforeEach(() => { - // increase storage size to avoid InconsistentStateError(IntegerOverflow) - // i like this - VMContext.setStorage_usage(200) - - // given tokens are minted to alice - nonSpec.mint(alice) -}) - -afterEach(() => { - // cleanup storage between tests - storage.delete('minted') - - model.balanceRegistry.delete(alice) - model.balanceRegistry.delete(bob) - model.balanceRegistry.delete(carol) - - model.allowanceRegistry.delete(model.getAllowanceKey(alice, bob)) -}) - -/******************/ -/* CHANGE METHODS */ -/******************/ - -// export function set_allowance(escrow_account_id: AccountId, allowance: Amount): void { -describe('set_allowance', () => { - it('should change the allowance of an escrow account on owner', () => { - // when alice records bob as her escrow up to `allowance` - VMContext.setPredecessor_account_id(alice) - const allowance = u128.from(100) - contract.set_allowance(bob, allowance) - - // then bob will appear to be authorized to transfer up to `allowance` of alice's tokens - expect(contract.get_allowance(alice, bob)).toBe(allowance) - }) -}) - -describe('transfer_from', () => { - it('should reflect updates to account balances when called by token owner', () => { - // given alice holds all tokens - const aliceBalanceBeforeXfer = contract.get_balance(alice) - - // when we transfer tokens to bob - VMContext.setPredecessor_account_id(alice) - const amount = u128.from(2) - contract.transfer_from(alice, bob, amount) - - // then we should expect to see bob and alice's balances reflect the change - const aliceBalanceAfterXfer = contract.get_balance(alice) - const bobBalanceAfterXfer = contract.get_balance(bob) - expect(aliceBalanceAfterXfer).toBe(u128.sub(aliceBalanceBeforeXfer, amount)) - expect(bobBalanceAfterXfer).toBe(amount) - }) - - it('should reflect updates to account balances when called by escrow', () => { - // given alice holds all tokens - const aliceBalanceBeforeXfer = contract.get_balance(alice) - - // when we set bob as escrow - VMContext.setPredecessor_account_id(alice) - const amount = u128.from(2) - contract.set_allowance(bob, amount) - - // and when bob transfers alice's tokens to carol - VMContext.setPredecessor_account_id(bob) - contract.transfer_from(alice, carol, amount) - - // then we should expect to see bob and alice's balances reflect the change - const aliceBalanceAfterXfer = contract.get_balance(alice) - const carolBalanceAfterXfer = contract.get_balance(carol) - expect(aliceBalanceAfterXfer).toBe(u128.sub(aliceBalanceBeforeXfer, amount)) - expect(carolBalanceAfterXfer).toBe(amount) - }) -}) - -describe('transfer', () => { - it('should reflect updates to account balances', () => { - // given alice holds all tokens - const aliceBalanceBeforeXfer = contract.get_balance(alice) - - // when we transfer tokens to bob - VMContext.setPredecessor_account_id(alice) - const amount = u128.from(2) - contract.transfer(bob, amount) - - // then we should expect to see bob and alice's balances reflect the change - const aliceBalanceAfterXfer = contract.get_balance(alice) - const bobBalanceAfterXfer = contract.get_balance(bob) - expect(aliceBalanceAfterXfer).toBe(u128.sub(aliceBalanceBeforeXfer, amount)) - expect(bobBalanceAfterXfer).toBe(amount) - }) -}) - -/****************/ -/* VIEW METHODS */ -/****************/ - -describe('get_total_supply', () => { - it('should match the TOTAL_SUPPLY', () => { - expect(contract.get_total_supply()).toBe(model.TOTAL_SUPPLY) - }) -}) - -describe('get_balance', () => { - it('should provide the balance of an account', () => { - // when we ask for alice's balance - const balance = contract.get_balance(alice) - - // then initial owner after minting should have all the tokens - expect(balance).toBe(model.TOTAL_SUPPLY) - - // any other account should throw - expect(() => { - contract.get_balance(bob) - }).toThrow(nonSpec.ERR_INVALID_ACCOUNT) - }) -}) - -describe('get_allowance', () => { - it("should provide the allowance an escrow has to spend of an owner's tokens", () => { - // when alice records bob as her escrow up to `allowance` - VMContext.setPredecessor_account_id(alice) - const allowance = u128.from(100) - contract.set_allowance(bob, allowance) - - // then bob will appear to be authorized to transfer up to `allowance` of alice's tokens - expect(contract.get_allowance(alice, bob)).toBe(allowance) - }) - - xit('should reflect updates after transfer_from()', () => { - // given an existing allowance between escrow and owner - // when tokens are transfered by escrow - // then existing allowance should decrease accordingly - }) -}) diff --git a/contracts/assemblyscript/nep21-basic/__tests__/non-spec.unit.spec.ts b/contracts/assemblyscript/nep21-basic/__tests__/non-spec.unit.spec.ts deleted file mode 100644 index e8065fa..0000000 --- a/contracts/assemblyscript/nep21-basic/__tests__/non-spec.unit.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as contract from '../main' -import * as nonSpec from '../non-spec' - -////////////////////////////// -// non-spec interface tests // -////////////////////////////// - -const alice = 'alice' -const bob = 'bob' -const carol = 'carol' - -it('should mint tokens up to MAX_SUPPLY', () => { - expect(() => { - let limit = contract.get_total_supply() - nonSpec.mint(alice) - expect(contract.get_balance(alice)).toBe(limit) - }).not.toThrow() - - // minting can only happen once - expect(() => { - nonSpec.mint(bob) - }).toThrow() -}) diff --git a/contracts/assemblyscript/nep21-basic/main.ts b/contracts/assemblyscript/nep21-basic/main.ts deleted file mode 100644 index b803303..0000000 --- a/contracts/assemblyscript/nep21-basic/main.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { context, u128 } from 'near-sdk-as' -import { AccountId, Amount } from './types' -import { - allowanceRegistry, - balanceRegistry, - getAllowanceKey as keyFrom, - TOTAL_SUPPLY, -} from './models' - -import { - ERR_INVALID_AMOUNT, - ERR_INVALID_ACCOUNT, - ERR_INVALID_ESCROW_ACCOUNT, - ERR_INSUFFICIENT_BALANCE, - ERR_INSUFFICIENT_ESCROW_BALANCE, -} from './non-spec' - -/******************/ -/* CHANGE METHODS */ -/******************/ - -/** - * Sets the `allowance` for `escrow_account_id` on the account of the caller of this contract - * (`predecessor_id`) who is the balance owner. - * - * @param escrow_account_id - * @param allowance - */ -export function set_allowance(escrow_account_id: AccountId, allowance: Amount): void { - assert(allowance > u128.Zero, ERR_INVALID_AMOUNT) - - const owner_id = context.predecessor - allowanceRegistry.set(keyFrom(owner_id, escrow_account_id), u128.from(allowance)) -} - -/** - * Transfers the `amount` of tokens from `owner_id` to the `new_owner_id`. - * Requirements: - * - `amount` should be a positive integer. - * - `owner_id` should have balance on the account greater or equal than the transfer `amount`. - * - If this function is called by an escrow account (`owner_id != predecessor_id`), - * then the allowance of the caller of the function (`predecessor_id`) on - * the account of `owner_id` should be greater or equal than the transfer `amount`. - * @param owner_id - * @param new_owner_id - * @param amount - */ -export function transfer_from(owner_id: AccountId, new_owner_id: AccountId, amount: Amount): void { - assert(amount > u128.Zero, ERR_INVALID_AMOUNT) - assert(balanceRegistry.contains(owner_id), ERR_INVALID_ACCOUNT) - assert(balanceRegistry.getSome(owner_id) >= amount, ERR_INSUFFICIENT_BALANCE) - - if(owner_id != context.predecessor) { - const key = keyFrom(owner_id, context.predecessor) - assert(allowanceRegistry.contains(key), ERR_INVALID_ESCROW_ACCOUNT) - - const allowance = allowanceRegistry.getSome(key) - assert(allowance >= amount, ERR_INSUFFICIENT_ESCROW_BALANCE) - - allowanceRegistry.set(key, u128.sub(allowance, amount)) - } - - const balanceOfOwner = balanceRegistry.getSome(owner_id) - const balanceOfNewOwner = balanceRegistry.get(new_owner_id, u128.Zero)! - - balanceRegistry.set(owner_id, u128.sub(balanceOfOwner, amount)) - balanceRegistry.set(new_owner_id, u128.add(balanceOfNewOwner, amount)) -} - -/** - * Transfer `amount` of tokens from the caller of the contract (`predecessor_id`) to - * `new_owner_id`. - * Note: This call behaves as if `transfer_from` with `owner_id` equal to the caller - * of the contract (`predecessor_id`). - * @param new_owner_id - * @param amount - */ -// it bugs me that we have both of these when we decided we didn't need both for NFT -// but i guess that's part of the spec -export function transfer(new_owner_id: AccountId, amount: Amount): void { - const owner_id = context.predecessor - transfer_from(owner_id, new_owner_id, amount) -} - -/****************/ -/* VIEW METHODS */ -/****************/ - -/** - * Returns total supply of tokens. - */ -export function get_total_supply(): u128 { - return TOTAL_SUPPLY -} - -/** - * Returns balance of the `owner_id` account. - * @param owner_id - */ -// do we need a warning similar to the one for get_allowance? -export function get_balance(owner_id: AccountId): u128 { - assert(balanceRegistry.contains(owner_id), ERR_INVALID_ACCOUNT) - return balanceRegistry.getSome(owner_id) -} -/** - * Returns current allowance of `escrow_account_id` for the account of `owner_id`. - * - * NOTE: Other contracts should not rely on this information, because by the moment a contract - * receives this information, the allowance may already be changed by the owner. - * So this method should only be used on the front-end to see the current allowance. - */ -export function get_allowance(owner_id: AccountId, escrow_account_id: AccountId): u128 { - const key = keyFrom(owner_id, escrow_account_id) - return allowanceRegistry.get(key, u128.Zero)! -} diff --git a/contracts/assemblyscript/nep21-basic/models.ts b/contracts/assemblyscript/nep21-basic/models.ts deleted file mode 100644 index 8749151..0000000 --- a/contracts/assemblyscript/nep21-basic/models.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { u128, PersistentMap } from 'near-sdk-as' -import { AccountId, AllowanceKey, Amount } from './types' - -/**************************/ -/* DATA TYPES AND STORAGE */ -/**************************/ - -export const TOTAL_SUPPLY = u128.from(10) - -export const allowanceRegistry = new PersistentMap('a') -export const balanceRegistry = new PersistentMap('b') - -/** - * Generate a consistent key format for looking up which `owner_id` has given - * an `escrow_id` some `allowance` to transfer on their behalf - * @param owner_id - * @param escrow_id - */ -export function getAllowanceKey(owner_id: AccountId, escrow_id: AccountId): string { - return owner_id + ":" + escrow_id -} diff --git a/contracts/assemblyscript/nep21-basic/non-spec.ts b/contracts/assemblyscript/nep21-basic/non-spec.ts deleted file mode 100644 index e76afc3..0000000 --- a/contracts/assemblyscript/nep21-basic/non-spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { AccountId } from './types' -import { TOTAL_SUPPLY, balanceRegistry } from './models' -import { storage } from 'near-sdk-as' - -/******************/ -/* ERROR MESSAGES */ -/******************/ - -export const ERR_INVALID_AMOUNT = 'Allowance must be greater than zero' -export const ERR_INVALID_ACCOUNT = 'Account not found in registry' -export const ERR_INVALID_ESCROW_ACCOUNT = 'Escrow account not found in registry' -export const ERR_INSUFFICIENT_BALANCE = 'Account does not have enough balance for this transaction' -export const ERR_INSUFFICIENT_ESCROW_BALANCE = 'Escrow account does not have enough allowance for this transaction' -export const ERR_TOKEN_ALREADY_MINTED = 'Token has previously been minted' - -/********************/ -/* NON-SPEC METHODS */ -/********************/ - -// huh! -// so I would have to deploy this contract then immediately call this endpoint -// -// * could someone malicious call it in between? -// * could we hard-code the default token owner in another way? -// * could we make it possible to mint more in the future? is that undesirable? -export function mint(owner_id: AccountId): void { - // check if previously minted - assert(!storage.contains('minted'), ERR_TOKEN_ALREADY_MINTED) - - // assign ownership - balanceRegistry.set(owner_id, TOTAL_SUPPLY) - - // record that minting is complete - storage.set('minted', true) -} diff --git a/contracts/assemblyscript/nep21-basic/types.ts b/contracts/assemblyscript/nep21-basic/types.ts deleted file mode 100644 index 3613101..0000000 --- a/contracts/assemblyscript/nep21-basic/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { u128 } from 'near-sdk-as' - -export type AccountId = string -export type AllowanceKey = string // format is Owner:Escrow -export type Amount = u128 diff --git a/contracts/assemblyscript/tsconfig.json b/contracts/assemblyscript/tsconfig.json deleted file mode 100644 index 798b474..0000000 --- a/contracts/assemblyscript/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "assemblyscript/std/assembly.json", - "include": ["./**/*.ts"] -} diff --git a/contracts/rust/.cargo/config b/contracts/rust/.cargo/config deleted file mode 100644 index 58910a4..0000000 --- a/contracts/rust/.cargo/config +++ /dev/null @@ -1,2 +0,0 @@ -[build] -rustflags = ["-C", "link-args=-s"] diff --git a/contracts/rust/.gitkeep b/contracts/rust/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/contracts/rust/Cargo.lock b/contracts/rust/Cargo.lock deleted file mode 100644 index 1a814b0..0000000 --- a/contracts/rust/Cargo.lock +++ /dev/null @@ -1,462 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" - -[[package]] -name = "autocfg" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" - -[[package]] -name = "base64" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" - -[[package]] -name = "block-buffer" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" -dependencies = [ - "block-padding", - "byte-tools", - "byteorder", - "generic-array", -] - -[[package]] -name = "block-padding" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" -dependencies = [ - "byte-tools", -] - -[[package]] -name = "borsh" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d42092adf8d207d987cb8d676f068305a80b3dd58487a06680e8586e7c4c25" -dependencies = [ - "borsh-derive", -] - -[[package]] -name = "borsh-derive" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "912b5e5f545801db1290ea4f05c8af512db0805dade9b9af76798c5fc4a04164" -dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "syn", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e75ae71ba613fe0b86556e910b053b040cb52b8c52c034370744f8760f176262" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de62f1b5fe76adc6510a4e7c3feb0172650f0088bbd5fead41c0c016db5c5ae" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "bs58" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" - -[[package]] -name = "byte-tools" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" - -[[package]] -name = "byteorder" -version = "1.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" - -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - -[[package]] -name = "digest" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" -dependencies = [ - "generic-array", -] - -[[package]] -name = "fake-simd" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" - -[[package]] -name = "generic-array" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" -dependencies = [ - "typenum", -] - -[[package]] -name = "indexmap" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292" -dependencies = [ - "autocfg", -] - -[[package]] -name = "itoa" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" - -[[package]] -name = "keccak" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" - -[[package]] -name = "libc" -version = "0.2.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99e85c08494b21a9054e7fe1374a732aeadaff3980b6990b94bfd3a70f690005" - -[[package]] -name = "memory_units" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" - -[[package]] -name = "near-rpc-error-core" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffa8dbf8437a28ac40fcb85859ab0d0b8385013935b000c7a51ae79631dd74d9" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "serde_json", - "syn", -] - -[[package]] -name = "near-rpc-error-macro" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6111d713e90c7c551dee937f4a06cb9ea2672243455a4454cc7566387ba2d9" -dependencies = [ - "near-rpc-error-core", - "proc-macro2", - "quote", - "serde", - "serde_json", - "syn", -] - -[[package]] -name = "near-runtime-fees" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d11ba7681bd6669ae735af9771191251c6996b2ff30483ca1fde37a6bbf25b0" -dependencies = [ - "num-rational", - "serde", -] - -[[package]] -name = "near-sdk" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7247d658c51447ea3cd6e86ea55131cf85d17a40f844fc22a0699346ba2fd93" -dependencies = [ - "base64", - "borsh", - "bs58", - "near-runtime-fees", - "near-sdk-macros", - "near-vm-logic", - "serde", - "serde_json", - "wee_alloc", -] - -[[package]] -name = "near-sdk-core" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d058a4b835f5b8bb9783cc5acb27ba13f1810e546c020f4bac28a9093f64012" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "near-sdk-macros" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320be357d10a590c270c7f77658e9fb0503a4a1d1d1a49ec3ed9570be864230b" -dependencies = [ - "near-sdk-core", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "near-vm-errors" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d195c45caa46fc6cb0a3c3c623219c3bf5dcfa367ec9266313ff560d115c1d95" -dependencies = [ - "borsh", - "near-rpc-error-macro", - "serde", -] - -[[package]] -name = "near-vm-logic" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5701ec6de5426f5528c5a97e2b690c60b9ffcb01d31d5482999fdc56ab16a05" -dependencies = [ - "base64", - "bs58", - "byteorder", - "near-runtime-fees", - "near-vm-errors", - "serde", - "sha2", - "sha3", -] - -[[package]] -name = "nep21-basic" -version = "0.1.0" -dependencies = [ - "near-sdk", -] - -[[package]] -name = "num-bigint" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-integer" -version = "0.1.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" -dependencies = [ - "autocfg", - "num-bigint", - "num-integer", - "num-traits", - "serde", -] - -[[package]] -name = "num-traits" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096" -dependencies = [ - "autocfg", -] - -[[package]] -name = "opaque-debug" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" - -[[package]] -name = "proc-macro2" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" -dependencies = [ - "unicode-xid", -] - -[[package]] -name = "quote" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c1f4b0efa5fc5e8ceb705136bfee52cfdb6a4e3509f770b478cd6ed434232a7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "ryu" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1" - -[[package]] -name = "serde" -version = "1.0.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.114" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164eacbdb13512ec2745fb09d51fd5b22b0d65ed294a1dcf7285a360c80a675c" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha2" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" -dependencies = [ - "block-buffer", - "digest", - "fake-simd", - "opaque-debug", -] - -[[package]] -name = "sha3" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd26bc0e7a2e3a7c959bc494caf58b72ee0c71d67704e9520f736ca7e4853ecf" -dependencies = [ - "block-buffer", - "byte-tools", - "digest", - "keccak", - "opaque-debug", -] - -[[package]] -name = "syn" -version = "1.0.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4211ce9909eb971f111059df92c45640aad50a619cf55cd76476be803c4c68e6" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "typenum" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" - -[[package]] -name = "unicode-xid" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" - -[[package]] -name = "wee_alloc" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" -dependencies = [ - "cfg-if", - "libc", - "memory_units", - "winapi", -] - -[[package]] -name = "winapi" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/contracts/rust/Cargo.toml b/contracts/rust/Cargo.toml deleted file mode 100644 index 05298f5..0000000 --- a/contracts/rust/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -[package] -name = "nep21-basic" -version = "0.1.0" -authors = ["Near Inc "] -edition = "2018" - -[lib] -crate-type = ["cdylib", "rlib"] - -[dependencies] -near-sdk = "2.0.1" - -[profile.release] -codegen-units = 1 -# Tell `rustc` to optimize for small code size. -opt-level = "z" -lto = true -debug = false -panic = "abort" -# Opt into extra safety checks on arithmetic operations https://stackoverflow.com/a/64136471/249801 -overflow-checks = true diff --git a/contracts/rust/README.md b/contracts/rust/README.md deleted file mode 100644 index ac6b070..0000000 --- a/contracts/rust/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Fungible token - -This is an example Fungible Token implementation in rust for [NEP#21 - Fungible Token](https://github.com/nearprotocol/NEPs/blob/master/specs/Standards/Tokens/FungibleToken.md) - -# Reference-level explanation - -The full implementation in Rust can be found there: https://github.com/nearprotocol/near-sdk-rs/blob/master/examples/fungible-token/src/lib.rs - -**NOTES** - - The maximum balance value is limited by U128 (2**128 - 1). - - JSON calls should pass U128 as a base-10 string. E.g. "100". - - The contract optimizes the inner trie structure by hashing account IDs. It will prevent some - abuse of deep tries. Shouldn't be an issue, once NEAR clients implement full hashing of keys. - - This contract doesn't optimize the amount of storage, since any account can create unlimited - amount of allowances to other accounts. It's unclear how to address this issue unless, this - contract limits the total number of different allowances possible at the same time. - And even if it limits the total number, it's still possible to transfer small amounts to - multiple accounts. \ No newline at end of file diff --git a/contracts/rust/build.js b/contracts/rust/build.js deleted file mode 100755 index 2fcb16e..0000000 --- a/contracts/rust/build.js +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env node -const sh = require('shelljs') -const path = require('path') - -sh.fatal = true // same as "set -e" - -sh.cd(__dirname) - -// Note: see flags in ./cargo/config -sh.exec('cargo build --target wasm32-unknown-unknown --release') - -const outdir = '../../out' -sh.mkdir('-p', outdir) - -sh.ls('./target/wasm32-unknown-unknown/release/*.wasm').map(src => { - const output = path.basename(src) - .replace('.wasm', '-rs.wasm') - .replace(/_/g, '-') - - console.log(`\ncopying [ ${src} ] to [ out/${output} ]`); - - sh.cp(src, `${outdir}/${output}`) -}) diff --git a/contracts/rust/src/lib.rs b/contracts/rust/src/lib.rs deleted file mode 100644 index 70e7caa..0000000 --- a/contracts/rust/src/lib.rs +++ /dev/null @@ -1,596 +0,0 @@ -/** -* Fungible Token implementation with JSON serialization. -* NOTES: -* - The maximum balance value is limited by U128 (2**128 - 1). -* - JSON calls should pass U128 as a base-10 string. E.g. "100". -* - The contract optimizes the inner trie structure by hashing account IDs. It will prevent some -* abuse of deep tries. Shouldn't be an issue, once NEAR clients implement full hashing of keys. -* - The contract tracks the change in storage before and after the call. If the storage increases, -* the contract requires the caller of the contract to attach enough deposit to the function call -* to cover the storage cost. -* This is done to prevent a denial of service attack on the contract by taking all available storage. -* If the storage decreases, the contract will issue a refund for the cost of the released storage. -* The unused tokens from the attached deposit are also refunded, so it's safe to -* attach more deposit than required. -* - To prevent the deployed contract from being modified or deleted, it should not have any access -* keys on its account. -*/ -use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; -use near_sdk::collections::UnorderedMap; -use near_sdk::json_types::U128; -use near_sdk::{env, near_bindgen, wee_alloc, AccountId, Balance, Promise, StorageUsage}; - -#[global_allocator] -static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; - -/// Price per 1 byte of storage from mainnet genesis config. -const STORAGE_PRICE_PER_BYTE: Balance = 100000000000000000000; - -/// Contains balance and allowances information for one account. -#[derive(BorshDeserialize, BorshSerialize)] -pub struct Account { - /// Current account balance. - pub balance: Balance, - /// Escrow Account ID hash to the allowance amount. - /// Allowance is the amount of tokens the Escrow Account ID can spent on behalf of the account - /// owner. - pub allowances: UnorderedMap, Balance>, -} - -impl Account { - /// Initializes a new Account with 0 balance and no allowances for a given `account_hash`. - pub fn new(account_hash: Vec) -> Self { - Self { - balance: 0, - allowances: UnorderedMap::new(account_hash), - } - } - - /// Sets allowance for account `escrow_account_id` to `allowance`. - pub fn set_allowance(&mut self, escrow_account_id: &AccountId, allowance: Balance) { - let escrow_hash = env::sha256(escrow_account_id.as_bytes()); - if allowance > 0 { - self.allowances.insert(&escrow_hash, &allowance); - } else { - self.allowances.remove(&escrow_hash); - } - } - - /// Returns the allowance of account `escrow_account_id`. - pub fn get_allowance(&self, escrow_account_id: &AccountId) -> Balance { - let escrow_hash = env::sha256(escrow_account_id.as_bytes()); - self.allowances.get(&escrow_hash).unwrap_or(0) - } -} - -#[near_bindgen] -#[derive(BorshDeserialize, BorshSerialize)] -pub struct FungibleToken { - /// sha256(AccountID) -> Account details. - pub accounts: UnorderedMap, Account>, - - /// Total supply of the all token. - pub total_supply: Balance, -} - -impl Default for FungibleToken { - fn default() -> Self { - panic!("Fun token should be initialized before usage") - } -} - -#[near_bindgen] -impl FungibleToken { - /// Initializes the contract with the given total supply owned by the given `owner_id`. - #[init] - pub fn new(owner_id: AccountId, total_supply: U128) -> Self { - let total_supply = total_supply.into(); - assert!(!env::state_exists(), "Already initialized"); - let mut ft = Self { - accounts: UnorderedMap::new(b"a".to_vec()), - total_supply, - }; - let mut account = ft.get_account(&owner_id); - account.balance = total_supply; - ft.set_account(&owner_id, &account); - ft - } - - /// Increments the `allowance` for `escrow_account_id` by `amount` on the account of the caller of this contract - /// (`predecessor_id`) who is the balance owner. - /// Requirements: - /// * Caller of the method has to attach deposit enough to cover storage difference at the - /// fixed storage price defined in the contract. - #[payable] - pub fn inc_allowance(&mut self, escrow_account_id: AccountId, amount: U128) { - let initial_storage = env::storage_usage(); - assert!( - env::is_valid_account_id(escrow_account_id.as_bytes()), - "Escrow account ID is invalid" - ); - let owner_id = env::predecessor_account_id(); - if escrow_account_id == owner_id { - env::panic(b"Can not increment allowance for yourself"); - } - let mut account = self.get_account(&owner_id); - let current_allowance = account.get_allowance(&escrow_account_id); - account.set_allowance( - &escrow_account_id, - current_allowance.saturating_add(amount.0), - ); - self.set_account(&owner_id, &account); - self.refund_storage(initial_storage); - } - - /// Decrements the `allowance` for `escrow_account_id` by `amount` on the account of the caller of this contract - /// (`predecessor_id`) who is the balance owner. - /// Requirements: - /// * Caller of the method has to attach deposit enough to cover storage difference at the - /// fixed storage price defined in the contract. - #[payable] - pub fn dec_allowance(&mut self, escrow_account_id: AccountId, amount: U128) { - let initial_storage = env::storage_usage(); - assert!( - env::is_valid_account_id(escrow_account_id.as_bytes()), - "Escrow account ID is invalid" - ); - let owner_id = env::predecessor_account_id(); - if escrow_account_id == owner_id { - env::panic(b"Can not decrement allowance for yourself"); - } - let mut account = self.get_account(&owner_id); - let current_allowance = account.get_allowance(&escrow_account_id); - account.set_allowance( - &escrow_account_id, - current_allowance.saturating_sub(amount.0), - ); - self.set_account(&owner_id, &account); - self.refund_storage(initial_storage); - } - - /// Transfers the `amount` of tokens from `owner_id` to the `new_owner_id`. - /// Requirements: - /// * `amount` should be a positive integer. - /// * `owner_id` should have balance on the account greater or equal than the transfer `amount`. - /// * If this function is called by an escrow account (`owner_id != predecessor_account_id`), - /// then the allowance of the caller of the function (`predecessor_account_id`) on - /// the account of `owner_id` should be greater or equal than the transfer `amount`. - /// * Caller of the method has to attach deposit enough to cover storage difference at the - /// fixed storage price defined in the contract. - #[payable] - pub fn transfer_from(&mut self, owner_id: AccountId, new_owner_id: AccountId, amount: U128) { - let initial_storage = env::storage_usage(); - assert!( - env::is_valid_account_id(new_owner_id.as_bytes()), - "New owner's account ID is invalid" - ); - let amount = amount.into(); - if amount == 0 { - env::panic(b"Can't transfer 0 tokens"); - } - assert_ne!( - owner_id, new_owner_id, - "The new owner should be different from the current owner" - ); - // Retrieving the account from the state. - let mut account = self.get_account(&owner_id); - - // Checking and updating unlocked balance - if account.balance < amount { - env::panic(b"Not enough balance"); - } - account.balance -= amount; - - // If transferring by escrow, need to check and update allowance. - let escrow_account_id = env::predecessor_account_id(); - if escrow_account_id != owner_id { - let allowance = account.get_allowance(&escrow_account_id); - if allowance < amount { - env::panic(b"Not enough allowance"); - } - account.set_allowance(&escrow_account_id, allowance - amount); - } - - // Saving the account back to the state. - self.set_account(&owner_id, &account); - - // Deposit amount to the new owner and save the new account to the state. - let mut new_account = self.get_account(&new_owner_id); - new_account.balance += amount; - self.set_account(&new_owner_id, &new_account); - self.refund_storage(initial_storage); - } - - /// Transfer `amount` of tokens from the caller of the contract (`predecessor_id`) to - /// `new_owner_id`. - /// Act the same was as `transfer_from` with `owner_id` equal to the caller of the contract - /// (`predecessor_id`). - /// Requirements: - /// * Caller of the method has to attach deposit enough to cover storage difference at the - /// fixed storage price defined in the contract. - #[payable] - pub fn transfer(&mut self, new_owner_id: AccountId, amount: U128) { - // NOTE: New owner's Account ID checked in transfer_from. - // Storage fees are also refunded in transfer_from. - self.transfer_from(env::predecessor_account_id(), new_owner_id, amount); - } - - /// Returns total supply of tokens. - pub fn get_total_supply(&self) -> U128 { - self.total_supply.into() - } - - /// Returns balance of the `owner_id` account. - pub fn get_balance(&self, owner_id: AccountId) -> U128 { - self.get_account(&owner_id).balance.into() - } - - /// Returns current allowance of `escrow_account_id` for the account of `owner_id`. - /// - /// NOTE: Other contracts should not rely on this information, because by the moment a contract - /// receives this information, the allowance may already be changed by the owner. - /// So this method should only be used on the front-end to see the current allowance. - pub fn get_allowance(&self, owner_id: AccountId, escrow_account_id: AccountId) -> U128 { - assert!( - env::is_valid_account_id(escrow_account_id.as_bytes()), - "Escrow account ID is invalid" - ); - self.get_account(&owner_id) - .get_allowance(&escrow_account_id) - .into() - } -} - -impl FungibleToken { - /// Helper method to get the account details for `owner_id`. - fn get_account(&self, owner_id: &AccountId) -> Account { - assert!( - env::is_valid_account_id(owner_id.as_bytes()), - "Owner's account ID is invalid" - ); - let account_hash = env::sha256(owner_id.as_bytes()); - self.accounts - .get(&account_hash) - .unwrap_or_else(|| Account::new(account_hash)) - } - - /// Helper method to set the account details for `owner_id` to the state. - fn set_account(&mut self, owner_id: &AccountId, account: &Account) { - let account_hash = env::sha256(owner_id.as_bytes()); - if account.balance > 0 || !account.allowances.is_empty() { - self.accounts.insert(&account_hash, &account); - } else { - self.accounts.remove(&account_hash); - } - } - - fn refund_storage(&self, initial_storage: StorageUsage) { - let current_storage = env::storage_usage(); - let attached_deposit = env::attached_deposit(); - let refund_amount = if current_storage > initial_storage { - let required_deposit = - Balance::from(current_storage - initial_storage) * STORAGE_PRICE_PER_BYTE; - assert!( - required_deposit <= attached_deposit, - "The required attached deposit is {}, but the given attached deposit is is {}", - required_deposit, - attached_deposit, - ); - attached_deposit - required_deposit - } else { - attached_deposit - + Balance::from(initial_storage - current_storage) * STORAGE_PRICE_PER_BYTE - }; - if refund_amount > 0 { - env::log(format!("Refunding {} tokens for storage", refund_amount).as_bytes()); - Promise::new(env::predecessor_account_id()).transfer(refund_amount); - } - } -} - -#[cfg(not(target_arch = "wasm32"))] -#[cfg(test)] -mod tests { - use near_sdk::MockedBlockchain; - use near_sdk::{testing_env, VMContext}; - - use super::*; - - fn alice() -> AccountId { - "alice.near".to_string() - } - fn bob() -> AccountId { - "bob.near".to_string() - } - fn carol() -> AccountId { - "carol.near".to_string() - } - - fn get_context(predecessor_account_id: AccountId) -> VMContext { - VMContext { - current_account_id: alice(), - signer_account_id: bob(), - signer_account_pk: vec![0, 1, 2], - predecessor_account_id, - input: vec![], - block_index: 0, - block_timestamp: 0, - account_balance: 1_000_000_000_000_000_000_000_000_000u128, - account_locked_balance: 0, - storage_usage: 10u64.pow(6), - attached_deposit: 0, - prepaid_gas: 10u64.pow(18), - random_seed: vec![0, 1, 2], - is_view: false, - output_data_receivers: vec![], - epoch_height: 0, - } - } - - #[test] - fn test_initialize_new_token() { - let context = get_context(carol()); - testing_env!(context); - let total_supply = 1_000_000_000_000_000u128; - let contract = FungibleToken::new(bob(), total_supply.into()); - assert_eq!(contract.get_total_supply().0, total_supply); - assert_eq!(contract.get_balance(bob()).0, total_supply); - } - - #[test] - #[should_panic] - fn test_initialize_new_token_twice_fails() { - let context = get_context(carol()); - testing_env!(context); - let total_supply = 1_000_000_000_000_000u128; - { - let _contract = FungibleToken::new(bob(), total_supply.into()); - } - FungibleToken::new(bob(), total_supply.into()); - } - - #[test] - fn test_transfer_to_a_different_account_works() { - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = 1_000_000_000_000_000u128; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.storage_usage = env::storage_usage(); - - context.attached_deposit = 1000 * STORAGE_PRICE_PER_BYTE; - testing_env!(context.clone()); - let transfer_amount = total_supply / 3; - contract.transfer(bob(), transfer_amount.into()); - context.storage_usage = env::storage_usage(); - context.account_balance = env::account_balance(); - - context.is_view = true; - context.attached_deposit = 0; - testing_env!(context.clone()); - assert_eq!( - contract.get_balance(carol()).0, - (total_supply - transfer_amount) - ); - assert_eq!(contract.get_balance(bob()).0, transfer_amount); - } - - #[test] - #[should_panic(expected = "The new owner should be different from the current owner")] - fn test_transfer_to_self_fails() { - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = 1_000_000_000_000_000u128; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.storage_usage = env::storage_usage(); - - context.attached_deposit = 1000 * STORAGE_PRICE_PER_BYTE; - testing_env!(context.clone()); - let transfer_amount = total_supply / 3; - contract.transfer(carol(), transfer_amount.into()); - } - - #[test] - #[should_panic(expected = "Can not increment allowance for yourself")] - fn test_increment_allowance_to_self_fails() { - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = 1_000_000_000_000_000u128; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.attached_deposit = STORAGE_PRICE_PER_BYTE * 1000; - testing_env!(context.clone()); - contract.inc_allowance(carol(), (total_supply / 2).into()); - } - - #[test] - #[should_panic(expected = "Can not decrement allowance for yourself")] - fn test_decrement_allowance_to_self_fails() { - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = 1_000_000_000_000_000u128; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.attached_deposit = STORAGE_PRICE_PER_BYTE * 1000; - testing_env!(context.clone()); - contract.dec_allowance(carol(), (total_supply / 2).into()); - } - - #[test] - fn test_decrement_allowance_after_allowance_was_saturated() { - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = 1_000_000_000_000_000u128; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.attached_deposit = STORAGE_PRICE_PER_BYTE * 1000; - testing_env!(context.clone()); - contract.dec_allowance(bob(), (total_supply / 2).into()); - assert_eq!(contract.get_allowance(carol(), bob()), 0.into()) - } - - #[test] - fn test_increment_allowance_does_not_overflow() { - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = std::u128::MAX; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.attached_deposit = STORAGE_PRICE_PER_BYTE * 1000; - testing_env!(context.clone()); - contract.inc_allowance(bob(), total_supply.into()); - contract.inc_allowance(bob(), total_supply.into()); - assert_eq!( - contract.get_allowance(carol(), bob()), - std::u128::MAX.into() - ) - } - - #[test] - #[should_panic( - expected = "The required attached deposit is 33100000000000000000000, but the given attached deposit is is 0" - )] - fn test_increment_allowance_with_insufficient_attached_deposit() { - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = 1_000_000_000_000_000u128; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.attached_deposit = 0; - testing_env!(context.clone()); - contract.inc_allowance(bob(), (total_supply / 2).into()); - } - - #[test] - fn test_carol_escrows_to_bob_transfers_to_alice() { - // Acting as carol - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = 1_000_000_000_000_000u128; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.storage_usage = env::storage_usage(); - - context.is_view = true; - testing_env!(context.clone()); - assert_eq!(contract.get_total_supply().0, total_supply); - - let allowance = total_supply / 3; - let transfer_amount = allowance / 3; - context.is_view = false; - context.attached_deposit = STORAGE_PRICE_PER_BYTE * 1000; - testing_env!(context.clone()); - contract.inc_allowance(bob(), allowance.into()); - context.storage_usage = env::storage_usage(); - context.account_balance = env::account_balance(); - - context.is_view = true; - context.attached_deposit = 0; - testing_env!(context.clone()); - assert_eq!(contract.get_allowance(carol(), bob()).0, allowance); - - // Acting as bob now - context.is_view = false; - context.attached_deposit = STORAGE_PRICE_PER_BYTE * 1000; - context.predecessor_account_id = bob(); - testing_env!(context.clone()); - contract.transfer_from(carol(), alice(), transfer_amount.into()); - context.storage_usage = env::storage_usage(); - context.account_balance = env::account_balance(); - - context.is_view = true; - context.attached_deposit = 0; - testing_env!(context.clone()); - assert_eq!( - contract.get_balance(carol()).0, - total_supply - transfer_amount - ); - assert_eq!(contract.get_balance(alice()).0, transfer_amount); - assert_eq!( - contract.get_allowance(carol(), bob()).0, - allowance - transfer_amount - ); - } - - #[test] - fn test_carol_escrows_to_bob_locks_and_transfers_to_alice() { - // Acting as carol - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = 1_000_000_000_000_000u128; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.storage_usage = env::storage_usage(); - - context.is_view = true; - testing_env!(context.clone()); - assert_eq!(contract.get_total_supply().0, total_supply); - - let allowance = total_supply / 3; - let transfer_amount = allowance / 3; - context.is_view = false; - context.attached_deposit = STORAGE_PRICE_PER_BYTE * 1000; - testing_env!(context.clone()); - contract.inc_allowance(bob(), allowance.into()); - context.storage_usage = env::storage_usage(); - context.account_balance = env::account_balance(); - - context.is_view = true; - context.attached_deposit = 0; - testing_env!(context.clone()); - assert_eq!(contract.get_allowance(carol(), bob()).0, allowance); - assert_eq!(contract.get_balance(carol()).0, total_supply); - - // Acting as bob now - context.is_view = false; - context.attached_deposit = STORAGE_PRICE_PER_BYTE * 1000; - context.predecessor_account_id = bob(); - testing_env!(context.clone()); - contract.transfer_from(carol(), alice(), transfer_amount.into()); - context.storage_usage = env::storage_usage(); - context.account_balance = env::account_balance(); - - context.is_view = true; - context.attached_deposit = 0; - testing_env!(context.clone()); - assert_eq!( - contract.get_balance(carol()).0, - (total_supply - transfer_amount) - ); - assert_eq!(contract.get_balance(alice()).0, transfer_amount); - assert_eq!( - contract.get_allowance(carol(), bob()).0, - allowance - transfer_amount - ); - } - - #[test] - fn test_self_allowance_set_for_refund() { - let mut context = get_context(carol()); - testing_env!(context.clone()); - let total_supply = 1_000_000_000_000_000u128; - let mut contract = FungibleToken::new(carol(), total_supply.into()); - context.storage_usage = env::storage_usage(); - - let initial_balance = context.account_balance; - let initial_storage = context.storage_usage; - context.attached_deposit = STORAGE_PRICE_PER_BYTE * 1000; - testing_env!(context.clone()); - contract.inc_allowance(bob(), (total_supply / 2).into()); - context.storage_usage = env::storage_usage(); - context.account_balance = env::account_balance(); - assert_eq!( - context.account_balance, - initial_balance - + Balance::from(context.storage_usage - initial_storage) * STORAGE_PRICE_PER_BYTE - ); - - let initial_balance = context.account_balance; - let initial_storage = context.storage_usage; - testing_env!(context.clone()); - context.attached_deposit = 0; - testing_env!(context.clone()); - contract.dec_allowance(bob(), (total_supply / 2).into()); - context.storage_usage = env::storage_usage(); - context.account_balance = env::account_balance(); - assert!(context.storage_usage < initial_storage); - assert!(context.account_balance < initial_balance); - assert_eq!( - context.account_balance, - initial_balance - - Balance::from(initial_storage - context.storage_usage) * STORAGE_PRICE_PER_BYTE - ); - } -} diff --git a/flags.sh b/flags.sh new file mode 100644 index 0000000..d513d51 --- /dev/null +++ b/flags.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ -z "$KEEP_NAMES" ]; then + export RUSTFLAGS='-C link-arg=-s' +else + export RUSTFLAGS='' +fi \ No newline at end of file diff --git a/ft/Cargo.toml b/ft/Cargo.toml new file mode 100644 index 0000000..d9970d4 --- /dev/null +++ b/ft/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "fungible-token" +version = "1.0.0" +authors = ["Near Inc "] +edition = "2018" + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +near-sdk = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } +near-contract-standards = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } diff --git a/ft/src/lib.rs b/ft/src/lib.rs new file mode 100644 index 0000000..9580da0 --- /dev/null +++ b/ft/src/lib.rs @@ -0,0 +1,164 @@ +/*! +Fungible Token implementation with JSON serialization. +NOTES: + - The maximum balance value is limited by U128 (2**128 - 1). + - JSON calls should pass U128 as a base-10 string. E.g. "100". + - The contract optimizes the inner trie structure by hashing account IDs. It will prevent some + abuse of deep tries. Shouldn't be an issue, once NEAR clients implement full hashing of keys. + - The contract tracks the change in storage before and after the call. If the storage increases, + the contract requires the caller of the contract to attach enough deposit to the function call + to cover the storage cost. + This is done to prevent a denial of service attack on the contract by taking all available storage. + If the storage decreases, the contract will issue a refund for the cost of the released storage. + The unused tokens from the attached deposit are also refunded, so it's safe to + attach more deposit than required. + - To prevent the deployed contract from being modified or deleted, it should not have any access + keys on its account. +*/ +use near_contract_standards::fungible_token::metadata::{ + FungibleTokenMetadata, FungibleTokenMetadataProvider, FT_METADATA_SPEC, +}; +use near_contract_standards::fungible_token::FungibleToken; +use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; +use near_sdk::collections::LazyOption; +use near_sdk::json_types::{ValidAccountId, U128}; +use near_sdk::{env, log, near_bindgen, AccountId, Balance, PanicOnDefault, PromiseOrValue}; + +near_sdk::setup_alloc!(); + +#[near_bindgen] +#[derive(BorshDeserialize, BorshSerialize, PanicOnDefault)] +pub struct Contract { + token: FungibleToken, + metadata: LazyOption, +} + +const DATA_IMAGE_SVG_NEAR_ICON: &str = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 288 288'%3E%3Cg id='l' data-name='l'%3E%3Cpath d='M187.58,79.81l-30.1,44.69a3.2,3.2,0,0,0,4.75,4.2L191.86,103a1.2,1.2,0,0,1,2,.91v80.46a1.2,1.2,0,0,1-2.12.77L102.18,77.93A15.35,15.35,0,0,0,90.47,72.5H87.34A15.34,15.34,0,0,0,72,87.84V201.16A15.34,15.34,0,0,0,87.34,216.5h0a15.35,15.35,0,0,0,13.08-7.31l30.1-44.69a3.2,3.2,0,0,0-4.75-4.2L96.14,186a1.2,1.2,0,0,1-2-.91V104.61a1.2,1.2,0,0,1,2.12-.77l89.55,107.23a15.35,15.35,0,0,0,11.71,5.43h3.13A15.34,15.34,0,0,0,216,201.16V87.84A15.34,15.34,0,0,0,200.66,72.5h0A15.35,15.35,0,0,0,187.58,79.81Z'/%3E%3C/g%3E%3C/svg%3E"; + +#[near_bindgen] +impl Contract { + /// Initializes the contract with the given total supply owned by the given `owner_id` with + /// default metadata (for example purposes only). + #[init] + pub fn new_default_meta(owner_id: ValidAccountId, total_supply: U128) -> Self { + Self::new( + owner_id, + total_supply, + FungibleTokenMetadata { + spec: FT_METADATA_SPEC.to_string(), + name: "Example NEAR fungible token".to_string(), + symbol: "EXAMPLE".to_string(), + icon: Some(DATA_IMAGE_SVG_NEAR_ICON.to_string()), + reference: None, + reference_hash: None, + decimals: 24, + }, + ) + } + + /// Initializes the contract with the given total supply owned by the given `owner_id` with + /// the given fungible token metadata. + #[init] + pub fn new( + owner_id: ValidAccountId, + total_supply: U128, + metadata: FungibleTokenMetadata, + ) -> Self { + assert!(!env::state_exists(), "Already initialized"); + metadata.assert_valid(); + let mut this = Self { + token: FungibleToken::new(b"a".to_vec()), + metadata: LazyOption::new(b"m".to_vec(), Some(&metadata)), + }; + this.token.internal_register_account(owner_id.as_ref()); + this.token.internal_deposit(owner_id.as_ref(), total_supply.into()); + this + } + + fn on_account_closed(&mut self, account_id: AccountId, balance: Balance) { + log!("Closed @{} with {}", account_id, balance); + } + + fn on_tokens_burned(&mut self, account_id: AccountId, amount: Balance) { + log!("Account @{} burned {}", account_id, amount); + } +} + +near_contract_standards::impl_fungible_token_core!(Contract, token, on_tokens_burned); +near_contract_standards::impl_fungible_token_storage!(Contract, token, on_account_closed); + +#[near_bindgen] +impl FungibleTokenMetadataProvider for Contract { + fn ft_metadata(&self) -> FungibleTokenMetadata { + self.metadata.get().unwrap() + } +} + +#[cfg(all(test, not(target_arch = "wasm32")))] +mod tests { + use near_sdk::test_utils::{accounts, VMContextBuilder}; + use near_sdk::MockedBlockchain; + use near_sdk::{testing_env, Balance}; + + use super::*; + + const TOTAL_SUPPLY: Balance = 1_000_000_000_000_000; + + fn get_context(predecessor_account_id: ValidAccountId) -> VMContextBuilder { + let mut builder = VMContextBuilder::new(); + builder + .current_account_id(accounts(0)) + .signer_account_id(predecessor_account_id.clone()) + .predecessor_account_id(predecessor_account_id); + builder + } + + #[test] + fn test_new() { + let mut context = get_context(accounts(1)); + testing_env!(context.build()); + let contract = Contract::new_default_meta(accounts(1).into(), TOTAL_SUPPLY.into()); + testing_env!(context.is_view(true).build()); + assert_eq!(contract.ft_total_supply().0, TOTAL_SUPPLY); + assert_eq!(contract.ft_balance_of(accounts(1)).0, TOTAL_SUPPLY); + } + + #[test] + #[should_panic(expected = "The contract is not initialized")] + fn test_default() { + let context = get_context(accounts(1)); + testing_env!(context.build()); + let _contract = Contract::default(); + } + + #[test] + fn test_transfer() { + let mut context = get_context(accounts(2)); + testing_env!(context.build()); + let mut contract = Contract::new_default_meta(accounts(2).into(), TOTAL_SUPPLY.into()); + testing_env!(context + .storage_usage(env::storage_usage()) + .attached_deposit(contract.storage_balance_bounds().min.into()) + .predecessor_account_id(accounts(1)) + .build()); + // Paying for account registration, aka storage deposit + contract.storage_deposit(None, None); + + testing_env!(context + .storage_usage(env::storage_usage()) + .attached_deposit(1) + .predecessor_account_id(accounts(2)) + .build()); + let transfer_amount = TOTAL_SUPPLY / 3; + contract.ft_transfer(accounts(1), transfer_amount.into(), None); + + testing_env!(context + .storage_usage(env::storage_usage()) + .account_balance(env::account_balance()) + .is_view(true) + .attached_deposit(0) + .build()); + assert_eq!(contract.ft_balance_of(accounts(2)).0, (TOTAL_SUPPLY - transfer_amount)); + assert_eq!(contract.ft_balance_of(accounts(1)).0, transfer_amount); + } +} diff --git a/package.json b/package.json deleted file mode 100644 index 7951e73..0000000 --- a/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "near-fungible-token-examples", - "private": true, - "description": "Implementation of NEP21 using Rust and AssemblyScript", - "author": "Near, Inc. ", - "license": "(MIT AND Apache-2.0)", - "scripts": { - "build": "yarn build:as && yarn build:rs", - "build:as": "asb --baseDir contracts/assemblyscript", - "build:rs": "./contracts/rust/build.js", - "clean": "rm -rf ./out && (cd contracts/rust && cargo clean)", - "test": "yarn test:unit:as && yarn test:unit:rs", - "test:unit:as": "asp --verbose --nologo -c contracts/assemblyscript/as-pect.config.js -f unit.spec", - "test:unit:rs": "(cd contracts/rust && cargo test -- --nocapture --color always)" - }, - "devDependencies": { - "jest": "^26.6.3", - "near-cli": "^1.5.3", - "near-sdk-as": "^2.2.4", - "shelljs": "^0.8.4" - }, - "engines": { - "node": ">=12.0.0" - } -} diff --git a/res/defi.wasm b/res/defi.wasm new file mode 100755 index 0000000000000000000000000000000000000000..00bb98dae6185996c56c0516fd33b0b7608d0cba GIT binary patch literal 137762 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"] +edition = "2018" + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +near-sdk = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } +near-contract-standards = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } + diff --git a/test-contract-defi/src/lib.rs b/test-contract-defi/src/lib.rs new file mode 100644 index 0000000..0ebdaa9 --- /dev/null +++ b/test-contract-defi/src/lib.rs @@ -0,0 +1,88 @@ +/*! +Some hypothetical DeFi contract that will do smart things with the transferred tokens +*/ +use near_contract_standards::fungible_token::receiver::FungibleTokenReceiver; +use near_sdk::borsh::{self, BorshDeserialize, BorshSerialize}; +use near_sdk::json_types::{ValidAccountId, U128}; +use near_sdk::{ + env, ext_contract, log, near_bindgen, setup_alloc, AccountId, Balance, Gas, PanicOnDefault, + PromiseOrValue, +}; + +setup_alloc!(); + +const BASE_GAS: Gas = 5_000_000_000_000; +const PROMISE_CALL: Gas = 5_000_000_000_000; +const GAS_FOR_FT_ON_TRANSFER: Gas = BASE_GAS + PROMISE_CALL; + +const NO_DEPOSIT: Balance = 0; + +#[near_bindgen] +#[derive(BorshDeserialize, BorshSerialize, PanicOnDefault)] +pub struct DeFi { + fungible_token_account_id: AccountId, +} + +// Defining cross-contract interface. This allows to create a new promise. +#[ext_contract(ext_self)] +pub trait ValueReturnTrait { + fn value_please(&self, amount_to_return: String) -> PromiseOrValue; +} + +// Have to repeat the same trait for our own implementation. +trait ValueReturnTrait { + fn value_please(&self, amount_to_return: String) -> PromiseOrValue; +} + +#[near_bindgen] +impl DeFi { + #[init] + pub fn new(fungible_token_account_id: ValidAccountId) -> Self { + assert!(!env::state_exists(), "Already initialized"); + Self { fungible_token_account_id: fungible_token_account_id.into() } + } +} + +#[near_bindgen] +impl FungibleTokenReceiver for DeFi { + /// If given `msg: "take-my-money", immediately returns U128::From(0) + /// Otherwise, makes a cross-contract call to own `value_please` function, passing `msg` + /// value_please will attempt to parse `msg` as an integer and return a U128 version of it + fn ft_on_transfer( + &mut self, + sender_id: ValidAccountId, + amount: U128, + msg: String, + ) -> PromiseOrValue { + // Verifying that we were called by fungible token contract that we expect. + assert_eq!( + &env::predecessor_account_id(), + &self.fungible_token_account_id, + "Only supports the one fungible token contract" + ); + log!("in {} tokens from @{} ft_on_transfer, msg = {}", amount.0, sender_id.as_ref(), msg); + match msg.as_str() { + "take-my-money" => PromiseOrValue::Value(U128::from(0)), + _ => { + let prepaid_gas = env::prepaid_gas(); + let account_id = env::current_account_id(); + ext_self::value_please( + msg, + &account_id, + NO_DEPOSIT, + prepaid_gas - GAS_FOR_FT_ON_TRANSFER, + ) + .into() + } + } + } +} + +#[near_bindgen] +impl ValueReturnTrait for DeFi { + fn value_please(&self, amount_to_return: String) -> PromiseOrValue { + log!("in value_please, amount_to_return = {}", amount_to_return); + let amount: Balance = amount_to_return.parse().expect("Not an integer"); + PromiseOrValue::Value(amount.into()) + } +} diff --git a/tests/general.rs b/tests/general.rs new file mode 100644 index 0000000..9ca064a --- /dev/null +++ b/tests/general.rs @@ -0,0 +1,325 @@ +/// Bring contract crate into namespace +extern crate fungible_token; + +use std::convert::TryInto; + +use defi::*; +/// Import the generated proxy contract +use fungible_token::ContractContract as FtContract; + +use near_sdk::serde_json::json; +use near_sdk::{env, json_types::U128}; +use near_sdk_sim::{ + call, deploy, init_simulator, to_yocto, view, ContractAccount, UserAccount, DEFAULT_GAS, +}; + +// Load in contract bytes at runtime +near_sdk_sim::lazy_static_include::lazy_static_include_bytes! { + TOKEN_WASM_BYTES => "res/fungible_token.wasm", + DEFI_WASM_BYTES => "res/defi.wasm", +} + +const FT_ID: &str = "ft"; +const DEFI_ID: &str = "defi"; + +fn init( + initial_balance: u128, +) -> (UserAccount, ContractAccount, ContractAccount, UserAccount) { + let root = init_simulator(None); + // uses default values for deposit and gas + let ft = deploy!( + // Contract Proxy + contract: FtContract, + // Contract account id + contract_id: FT_ID, + // Bytes of contract + bytes: &TOKEN_WASM_BYTES, + // User deploying the contract, + signer_account: root, + // init method + init_method: new_default_meta( + root.account_id().try_into().unwrap(), + initial_balance.into() + ) + ); + let alice = root.create_user("alice".to_string(), to_yocto("100")); + register_user(&ft, &alice); + + let defi = deploy!( + contract: DeFiContract, + contract_id: DEFI_ID, + bytes: &DEFI_WASM_BYTES, + signer_account: root, + init_method: new( + FT_ID.try_into().unwrap() + ) + ); + + (root, ft, defi, alice) +} + +// For given `contract` which uses the Account Storage standard, +// register the given `user` +fn register_user(contract: &ContractAccount, user: &UserAccount) { + call!( + user, + contract.storage_deposit(Some(user.account_id().try_into().unwrap()), None), + deposit = env::storage_byte_cost() * 125 + ) + .assert_success(); +} + +#[test] +fn simulate_total_supply() { + let initial_balance = to_yocto("100"); + let (_, ft, _, _) = init(initial_balance); + + let total_supply: U128 = view!(ft.ft_total_supply()).unwrap_json(); + + assert_eq!(initial_balance, total_supply.0); +} + +#[test] +fn simulate_simple_transfer() { + let transfer_amount = to_yocto("100"); + let initial_balance = to_yocto("100000"); + let (root, ft, _, alice) = init(initial_balance); + + // Transfer from root to alice. + // Uses default gas amount, `near_sdk_sim::DEFAULT_GAS` + call!( + root, + ft.ft_transfer(alice.account_id().try_into().unwrap(), transfer_amount.into(), None), + deposit = 1 + ) + .assert_success(); + + let root_balance: U128 = + view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); + let alice_balance: U128 = + view!(ft.ft_balance_of(alice.account_id().try_into().unwrap())).unwrap_json(); + assert_eq!(initial_balance - transfer_amount, root_balance.0); + assert_eq!(transfer_amount, alice_balance.0); +} + +#[test] +fn simulate_close_account_empty_balance() { + let initial_balance = to_yocto("100000"); + let (_root, ft, _, alice) = init(initial_balance); + + let outcome = call!(alice, ft.storage_unregister(None), deposit = 1); + outcome.assert_success(); + let result: bool = outcome.unwrap_json(); + assert!(result); +} + +#[test] +fn simulate_close_account_non_empty_balance() { + let initial_balance = to_yocto("100000"); + let (root, ft, _, _alice) = init(initial_balance); + + let outcome = call!(root, ft.storage_unregister(None), deposit = 1); + assert!(!outcome.is_ok(), "Should panic"); + assert!(format!("{:?}", outcome.status()) + .contains("Can't unregister the account with the positive balance without force")); + + let outcome = call!(root, ft.storage_unregister(Some(false)), deposit = 1); + assert!(!outcome.is_ok(), "Should panic"); + assert!(format!("{:?}", outcome.status()) + .contains("Can't unregister the account with the positive balance without force")); +} + +#[test] +fn simulate_close_account_force_non_empty_balance() { + let initial_balance = to_yocto("100000"); + let (root, ft, _, _alice) = init(initial_balance); + + let outcome = call!(root, ft.storage_unregister(Some(true)), deposit = 1); + assert_eq!( + outcome.logs()[0], + format!("Closed @{} with {}", root.account_id(), initial_balance) + ); + outcome.assert_success(); + let result: bool = outcome.unwrap_json(); + assert!(result); + + let total_supply: U128 = view!(ft.ft_total_supply()).unwrap_json(); + + assert_eq!(total_supply.0, 0); +} + +#[test] +fn simulate_transfer_call_with_burned_amount() { + let transfer_amount = to_yocto("100"); + let initial_balance = to_yocto("1000"); + let (root, ft, defi, _alice) = init(initial_balance); + + // defi contract must be registered as a FT account + register_user(&ft, &defi.user_account); + + // root invests in defi by calling `ft_transfer_call` + let outcome = root + .create_transaction(FT_ID.to_string()) + .function_call( + "ft_transfer_call".to_string(), + json!({ + "receiver_id": DEFI_ID.to_string(), + "amount": transfer_amount.to_string(), + "msg": "10", + }) + .to_string() + .into_bytes(), + DEFAULT_GAS / 2, + 1, + ) + .function_call( + "storage_unregister".to_string(), + json!({ + "force": true + }) + .to_string() + .into_bytes(), + DEFAULT_GAS / 2, + 1, + ) + .submit(); + + assert_eq!( + outcome.logs()[1], + format!("Closed @{} with {}", root.account_id(), initial_balance - transfer_amount) + ); + + let result: bool = outcome.unwrap_json(); + assert!(result); + + let callback_outcome = outcome.get_receipt_results().remove(1).unwrap(); + + assert_eq!(callback_outcome.logs()[0], "The account of the sender was deleted"); + assert_eq!(callback_outcome.logs()[1], format!("Account @{} burned {}", root.account_id(), 10)); + + let used_amount: U128 = callback_outcome.unwrap_json(); + // Sender deleted the account. Even though the returned amount was 10, it was not refunded back + // to the sender, but was taken out of the receiver's balance and was burned. + assert_eq!(used_amount.0, transfer_amount); + + let total_supply: U128 = view!(ft.ft_total_supply()).unwrap_json(); + + assert_eq!(total_supply.0, transfer_amount - 10); + + let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + assert_eq!(defi_balance.0, transfer_amount - 10); +} + +#[test] +fn simulate_transfer_call_with_immediate_return_and_no_refund() { + let transfer_amount = to_yocto("100"); + let initial_balance = to_yocto("1000"); + let (root, ft, defi, _alice) = init(initial_balance); + + // defi contract must be registered as a FT account + register_user(&ft, &defi.user_account); + + // root invests in defi by calling `ft_transfer_call` + call!( + root, + ft.ft_transfer_call( + DEFI_ID.try_into().unwrap(), + transfer_amount.into(), + None, + "take-my-money".into() + ), + deposit = 1 + ) + .assert_success(); + + let root_balance: U128 = + view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); + let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + assert_eq!(initial_balance - transfer_amount, root_balance.0); + assert_eq!(transfer_amount, defi_balance.0); +} + +#[test] +fn simulate_transfer_call_when_called_contract_not_registered_with_ft() { + let transfer_amount = to_yocto("100"); + let initial_balance = to_yocto("1000"); + let (root, ft, _defi, _alice) = init(initial_balance); + + // call fails because DEFI contract is not registered as FT user + call!( + root, + ft.ft_transfer_call( + DEFI_ID.try_into().unwrap(), + transfer_amount.into(), + None, + "take-my-money".into() + ), + deposit = 1 + ); + + // balances remain unchanged + let root_balance: U128 = + view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); + let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + assert_eq!(initial_balance, root_balance.0); + assert_eq!(0, defi_balance.0); +} + +#[test] +fn simulate_transfer_call_with_promise_and_refund() { + let transfer_amount = to_yocto("100"); + let refund_amount = to_yocto("50"); + let initial_balance = to_yocto("1000"); + let (root, ft, defi, _alice) = init(initial_balance); + + register_user(&ft, &defi.user_account); + + call!( + root, + ft.ft_transfer_call( + DEFI_ID.try_into().unwrap(), + transfer_amount.into(), + None, + refund_amount.to_string() + ), + deposit = 1 + ); + + let root_balance: U128 = + view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); + let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + assert_eq!(initial_balance - transfer_amount + refund_amount, root_balance.0); + assert_eq!(transfer_amount - refund_amount, defi_balance.0); +} + +#[test] +fn simulate_transfer_call_promise_panics_for_a_full_refund() { + let transfer_amount = to_yocto("100"); + let initial_balance = to_yocto("1000"); + let (root, ft, defi, _alice) = init(initial_balance); + + // defi contract must be registered as a FT account + register_user(&ft, &defi.user_account); + + // root invests in defi by calling `ft_transfer_call` + let res = call!( + root, + ft.ft_transfer_call( + DEFI_ID.try_into().unwrap(), + transfer_amount.into(), + None, + "no parsey as integer big panic oh no".to_string() + ), + deposit = 1 + ); + assert!(res.is_ok()); + + // uncomment to see failure message from defi::value_please + // println!("{:#?}", res.promise_results()); + + let root_balance: U128 = + view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); + let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + assert_eq!(initial_balance, root_balance.0); + assert_eq!(0, defi_balance.0); +} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 774274b..0000000 --- a/yarn.lock +++ /dev/null @@ -1,7653 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@as-pect/assembly@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@as-pect/assembly/-/assembly-5.0.0.tgz#aa85efbedb93ea79f7236769bd96e3ba7824189e" - integrity sha512-tFPFxBCyiC4vMqZHxanhIxJL9nX7TqUCa91aty1poFGwyfbLr5/XEVnPRTwfTn8pNEtcfJ99lTjUDdYxhmv8qA== - -"@as-pect/cli@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@as-pect/cli/-/cli-5.0.0.tgz#83325bad5fcd813f7e07f91cfff8b99595378216" - integrity sha512-gpS/Zt1NBN2O1zvhbqQwXiu6hmAQxhPubdFkWWVmQamcHy42uDVdUesqmHwSQTOSBtTSTYHFK4GJbg6yipUbEA== - dependencies: - "@as-pect/assembly" "^5.0.0" - "@as-pect/core" "^5.0.0" - chalk "^4.1.0" - glob "^7.1.6" - optionalDependencies: - "@as-pect/csv-reporter" "^5.0.0" - "@as-pect/json-reporter" "^5.0.0" - -"@as-pect/core@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@as-pect/core/-/core-5.0.0.tgz#0126843e6cb5792537102aafddbcb9f7832364e9" - integrity sha512-uTtOSVXfoJyAQA6Gp+sYTzGHq/XSK31/OHNR8lpT6KkpZ0ij5B1RrqcpoVU29MF/PujOihmXxXqr6o86rz5Oqw== - dependencies: - "@as-pect/assembly" "^5.0.0" - "@as-pect/snapshots" "^5.0.0" - chalk "^4.1.0" - long "^4.0.0" - -"@as-pect/csv-reporter@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@as-pect/csv-reporter/-/csv-reporter-5.0.0.tgz#bbbf29a9615aa78206596a02ffb13e9496fc7f95" - integrity sha512-I/JBRtxGeGLdAN4WeDMBNkmgTRebAyuQBzPjcYOca4dqCgT3BlfDnL+iZeVt9vcJUXxUqaXidRvFYqNJnG+UMQ== - dependencies: - "@as-pect/core" "^5.0.0" - -"@as-pect/json-reporter@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@as-pect/json-reporter/-/json-reporter-5.0.0.tgz#0295bd04212ba6ee18ce45bdc074b4d50379317c" - integrity sha512-3FGmSqKbHTWL9Aj5iYT/T64NLVg9WR+NoFNfGaRnIXVCsmHZ/9Ee1CXGqGZrcAh586VZskhqvYZKZ+rD79X3OQ== - dependencies: - "@as-pect/core" "^5.0.0" - -"@as-pect/snapshots@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@as-pect/snapshots/-/snapshots-5.0.0.tgz#e888dde1f9d47631c45b48da79b574d22032c0fa" - integrity sha512-2HQH4w9d32ZnNF7HKVTiYQHsMgPV2+FRnhVE13qhm5BsBrrNkHVlJODdKhMXTg5HovITA4azZSu2A/ZQV7Mmjw== - dependencies: - diff "^5.0.0" - nearley "^2.19.9" - -"@assemblyscript/loader@^0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" - integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" - integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.6" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.6" - "@babel/parser" "^7.9.6" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" - integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== - dependencies: - "@babel/types" "^7.9.6" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-function-name@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" - integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.9.5" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.12.1": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" - integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== - dependencies: - "@babel/types" "^7.12.5" - -"@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-plugin-utils@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-replace-supers@^7.8.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" - integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" - integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== - -"@babel/helpers@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" - integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.6" - "@babel/types" "^7.9.6" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" - integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" - integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" - integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" - integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-transform-runtime@^7.5.5": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" - integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== - dependencies: - "@babel/helper-module-imports" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/runtime@^7.5.5": - version "7.12.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" - integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.3.3", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" - integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.6" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.6" - "@babel/types" "^7.9.6" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": - version "7.9.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" - integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== - dependencies: - "@babel/helper-validator-identifier" "^7.9.5" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.12.5": - version "7.12.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.6.tgz#ae0e55ef1cce1fbc881cd26f8234eb3e657edc96" - integrity sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@ethersproject/abi@5.0.0-beta.153": - version "5.0.0-beta.153" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" - integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== - dependencies: - "@ethersproject/address" ">=5.0.0-beta.128" - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/hash" ">=5.0.0-beta.128" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - "@ethersproject/strings" ">=5.0.0-beta.130" - -"@ethersproject/abstract-provider@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.5.tgz#797a32a8707830af1ad8f833e9c228994d5572b9" - integrity sha512-i/CjElAkzV7vQBAeoz+IpjGfcFYEP9eD7j3fzZ0fzTq03DO7PPnR+xkEZ1IoDXGwDS+55aLM1xvLDwB/Lx6IOQ== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/networks" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/web" "^5.0.6" - -"@ethersproject/abstract-signer@^5.0.6": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.7.tgz#cdbd3bd479edf77c71b7f6a6156b0275b1176ded" - integrity sha512-8W8gy/QutEL60EoMEpvxZ8MFAEWs/JvH5nmZ6xeLXoZvmBCasGmxqHdYjo2cxg0nevkPkq9SeenSsBBZSCx+SQ== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - -"@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.5.tgz#2caa65f6b7125015395b1b54c985ee0b27059cc7" - integrity sha512-DpkQ6rwk9jTefrRsJzEm6nhRiJd9pvhn1xN0rw5N/jswXG5r7BLk/GVA0mMAVWAsYfvi2xSc5L41FMox43RYEA== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/rlp" "^5.0.3" - bn.js "^4.4.0" - -"@ethersproject/base64@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.4.tgz#b0d8fdbf3dda977cf546dcd35725a7b1d5256caa" - integrity sha512-4KRykQ7BQMeOXfvio1YITwHjxwBzh92UoXIdzxDE1p53CK28bbHPdsPNYo0wl0El7lJAMpT2SOdL0hhbWRnyIA== - dependencies: - "@ethersproject/bytes" "^5.0.4" - -"@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.8.tgz#cee33bd8eb0266176def0d371b45274b1d2c4ec0" - integrity sha512-KXFVAFKS1jdTXYN8BE5Oj+ZfPMh28iRdFeNGBVT6cUFdtiPVqeXqc0ggvBqA3A1VoFFGgM7oAeaagA393aORHA== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - bn.js "^4.4.0" - -"@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.5.tgz#688b70000e550de0c97a151a21f15b87d7f97d7c" - integrity sha512-IEj9HpZB+ACS6cZ+QQMTqmu/cnUK2fYNE6ms/PVxjoBjoxc6HCraLpam1KuRvreMy0i523PLmjN8OYeikRdcUQ== - dependencies: - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.5.tgz#0ed19b002e8404bdf6d135234dc86a7d9bcf9b71" - integrity sha512-foaQVmxp2+ik9FrLUCtVrLZCj4M3Ibgkqvh+Xw/vFRSerkjVSYePApaVE5essxhoSlF1U9oXfWY09QI2AXtgKA== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - -"@ethersproject/hash@>=5.0.0-beta.128": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.6.tgz#2a2e8a1470685421217e9e86e9971ca636e609ce" - integrity sha512-Gvh57v6BWhwnud6l7tMfQm32PRQ2DYx2WaAAQmAxAfYvmzUkpQCBstnGeNMXIL8/2wdkvcB2u+WZRWaZtsFuUQ== - dependencies: - "@ethersproject/abstract-signer" "^5.0.6" - "@ethersproject/address" "^5.0.5" - "@ethersproject/bignumber" "^5.0.8" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.4" - "@ethersproject/strings" "^5.0.4" - -"@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.4.tgz#36ca0a7d1ae2a272da5654cb886776d0c680ef3a" - integrity sha512-GNpiOUm9PGUxFNqOxYKDQBM0u68bG9XC9iOulEQ8I0tOx/4qUpgVzvgXL6ugxr0RY554Gz/NQsVqknqPzUcxpQ== - dependencies: - "@ethersproject/bytes" "^5.0.4" - js-sha3 "0.5.7" - -"@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.5": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.6.tgz#faa484203e86e08be9e07fef826afeef7183fe88" - integrity sha512-FrX0Vnb3JZ1md/7GIZfmJ06XOAA8r3q9Uqt9O5orr4ZiksnbpXKlyDzQtlZ5Yv18RS8CAUbiKH9vwidJg1BPmQ== - -"@ethersproject/networks@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.4.tgz#6d320a5e15a0cda804f5da88be0ba846156f6eec" - integrity sha512-/wHDTRms5mpJ09BoDrbNdFWINzONe05wZRgohCXvEv39rrH/Gd/yAnct8wC0RsW3tmFOgjgQxuBvypIxuUynTw== - dependencies: - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.0.4": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.4.tgz#a67a1f5a52c30850b5062c861631e73d131f666e" - integrity sha512-UdyX3GqBxFt15B0uSESdDNmhvEbK3ACdDXl2soshoPcneXuTswHDeA0LoPlnaZzhbgk4p6jqb4GMms5C26Qu6A== - dependencies: - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/rlp@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.4.tgz#0090a0271e84ea803016a112a79f5cfd80271a77" - integrity sha512-5qrrZad7VTjofxSsm7Zg/7Dr4ZOln4S2CqiDdOuTv6MBKnXj0CiBojXyuDy52M8O3wxH0CyE924hXWTDV1PQWQ== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/signing-key@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.5.tgz#acfd06fc05a14180df7e027688bbd23fc4baf782" - integrity sha512-Z1wY7JC1HVO4CvQWY2TyTTuAr8xK3bJijZw1a9G92JEmKdv1j255R/0YLBBcFTl2J65LUjtXynNJ2GbArPGi5g== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - elliptic "6.5.3" - -"@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.4": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.5.tgz#ed7e99a282a02f40757691b04a24cd83f3752195" - integrity sha512-JED6WaIV00xM/gvj8vSnd+0VWtDYdidTmavFRCTQakqfz+4tDo6Jz5LHgG+dd45h7ah7ykCHW0C7ZXWEDROCXQ== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.5": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.6.tgz#b8b27938be6e9ed671dbdd35fe98af8b14d0df7c" - integrity sha512-htsFhOD+NMBxx676A8ehSuwVV49iqpSB+CkjPZ02tpNew0K6p8g0CZ46Z1ZP946gIHAU80xQ0NACHYrjIUaCFA== - dependencies: - "@ethersproject/address" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/rlp" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - -"@ethersproject/web@^5.0.6": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.9.tgz#b08f8295f4bfd4777c8723fe9572f5453b9f03cb" - integrity sha512-//QNlv1MSkOII1hv3+HQwWoiVFS+BMVGI0KYeUww4cyrEktnx1QIez5bTSab9s9fWTFaWKNmQNBwMbxAqPuYDw== - dependencies: - "@ethersproject/base64" "^5.0.3" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" - slash "^3.0.0" - -"@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== - dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== - dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" - "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" - -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" - -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== - dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@ledgerhq/devices@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.15.0.tgz#ca8d1d2b5074257019b7b838f53d0337b451e57c" - integrity sha512-b/Mm/+fY8DY3C/i9E7I5NP43dW6Un3GKkHHHI4yLEX8B6TKugR3m/a23UhEaWo5ZaucAU+yA4p4in9l6lyDr1g== - dependencies: - "@ledgerhq/errors" "^5.15.0" - "@ledgerhq/logs" "^5.15.0" - rxjs "^6.5.5" - -"@ledgerhq/errors@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.15.0.tgz#e5d5b5ad48fc07f6308b78b065242e158bc044a2" - integrity sha512-ZlLhR7qaChPgEbvcqOptRepWGm8VhhwOM6kC1gx3WErutbtaOjUX8lLA4ButWFU2f+xTl2rS/5c86wC7qGqGXQ== - -"@ledgerhq/hw-transport-node-hid-noevents@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-5.15.0.tgz#b67c88e1b2ca8de71c9c0dc42041bee116eb8065" - integrity sha512-YI82E116gMUJihBD+rDrJX23k5CKWAAEkj175R/ssmVxBCTf3gyAEtaiF4DrdaIVubRK1XFiPbfs/47RHAKrqA== - dependencies: - "@ledgerhq/devices" "^5.15.0" - "@ledgerhq/errors" "^5.15.0" - "@ledgerhq/hw-transport" "^5.15.0" - "@ledgerhq/logs" "^5.15.0" - node-hid "^1.2.0" - -"@ledgerhq/hw-transport-node-hid@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-5.15.0.tgz#8121b8b59980de9f6a8a42565fa30f3042c4bc43" - integrity sha512-JX/QnV4hYQESqfyjGwkU0TNHtGEHQ1PHS7ISMqv7bZKvj2hhO3G45xM7fPoLlBa3tZrbDLnNLWkqcFxo60w/jA== - dependencies: - "@ledgerhq/devices" "^5.15.0" - "@ledgerhq/errors" "^5.15.0" - "@ledgerhq/hw-transport" "^5.15.0" - "@ledgerhq/hw-transport-node-hid-noevents" "^5.15.0" - "@ledgerhq/logs" "^5.15.0" - lodash "^4.17.15" - node-hid "^1.2.0" - usb "^1.6.3" - -"@ledgerhq/hw-transport@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.15.0.tgz#01dc22adb156061728dbb937df2f310c761d06b9" - integrity sha512-WIHqxEMGa1+MH5xTLLZcjPainFhCihzWVDw3zo1mzUqTzVEgYXFhnn2j6Lboov0Elpit+KiPOA1XuSofslajhg== - dependencies: - "@ledgerhq/devices" "^5.15.0" - "@ledgerhq/errors" "^5.15.0" - events "^3.1.0" - -"@ledgerhq/logs@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.15.0.tgz#870524ade408b50ce74971509aa170e9d85c0575" - integrity sha512-QuAva3K3YFDtQidi8xAfOQcb+aExJus3p0GhPNscOE+r152klBdiZUHLp818zEeQZT7PRSm83gEknmeUYjGU9A== - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sinonjs/commons@^1.7.0": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" - integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@types/babel__core@^7.0.0": - version "7.1.9" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.9.tgz#77e59d438522a6fb898fa43dc3455c6e72f3963d" - integrity sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__core@^7.1.7": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18" - integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q== - dependencies: - "@babel/types" "^7.3.0" - -"@types/babel__traverse@^7.0.4": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.15.tgz#db9e4238931eb69ef8aab0ad6523d4d4caa39d03" - integrity sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A== - dependencies: - "@babel/types" "^7.3.0" - -"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== - dependencies: - "@types/node" "*" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/graceful-fs@^4.1.2": - version "4.1.3" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.3.tgz#039af35fe26bec35003e8d86d2ee9c586354348f" - integrity sha512-AiHRaEB50LQg0pZmm659vNBb9f4SJ0qrAnteuzhSeAUcJKxoYgEnprg/83kppCnc2zvtCKbdZry1a5pVY3lOTQ== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/node@*": - version "14.0.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c" - integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA== - -"@types/node@^12.12.6": - version "12.19.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.4.tgz#cdfbb62e26c7435ed9aab9c941393cc3598e9b46" - integrity sha512-o3oj1bETk8kBwzz1WlO6JWL/AfAA3Vm6J1B3C9CsdxHYp7XgPiH7OEXPUbZTndHlRaIElrANkQfe6ZmfJb3H2w== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.0.1.tgz#b6e98083f13faa1e5231bfa3bdb1b0feff536b6d" - integrity sha512-boy4xPNEtiw6N3abRhBi/e7hNvy3Tt8E9ZRAQrwAGzoCGZS/1wjo9KY7JHhnfnEsG5wSjDbymCozUM9a3ea7OQ== - -"@types/secp256k1@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.1.tgz#fb3aa61a1848ad97d7425ff9dcba784549fca5a4" - integrity sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog== - dependencies: - "@types/node" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== - -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^15.0.0": - version "15.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79" - integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w== - dependencies: - "@types/yargs-parser" "*" - -abab@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -abstract-leveldown@~2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" - integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== - dependencies: - xtend "~4.0.0" - -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-walk@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== - -acorn@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe" - integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.5.5: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" - integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== - dependencies: - string-width "^3.0.0" - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -as-bignum@^0.2.11: - version "0.2.11" - resolved "https://registry.yarnpkg.com/as-bignum/-/as-bignum-0.2.11.tgz#f650afdad2bbb796388ae5063c89b29d96ff14b5" - integrity sha512-lMz8ltqyFzVUb9SvQQH5OXK8oT0xjRyNyi8zMSWTbq7RGu+wd9VRAtyZ5NyvMrwA7/5umVSDCx3pQkL0Jmd21Q== - -asbuild@^0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/asbuild/-/asbuild-0.0.10.tgz#393df07f8287e90ffd10812805408fbf84d4656c" - integrity sha512-pSBYULxYuOjFVfcyeMgnJLsFbFbwqONxn9yYwMj7F44HcdVvsJzDx7wdg49uG8KmIuiQc7vjoMg3bg6oC/Al7g== - dependencies: - yargs "^15.4.1" - -ascii-table@0.0.9: - version "0.0.9" - resolved "https://registry.yarnpkg.com/ascii-table/-/ascii-table-0.0.9.tgz#06a6604d6a55d4bf41a9a47d9872d7a78da31e73" - integrity sha1-BqZgTWpV1L9BqaR9mHLXp42jHnM= - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assemblyscript-json@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/assemblyscript-json/-/assemblyscript-json-0.3.3.tgz#cc2d05d432d5df290768c51f72a1f00ff8b52a0d" - integrity sha512-TTYZK3rbfan7w5i0lv7bZS4rlXNDe8r/38kjzrQqF6dJaSE/fqSJOnpHsiBTtRgwkLRPL0NAen7ItD/3j9I6eg== - -assemblyscript@^0.17.3: - version "0.17.9" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.17.9.tgz#b43bbf797b424a12f411c96f7f488549aab7f821" - integrity sha512-uy7c2+f0d2v8OJDrTJbyFPrNxtAwwzmw/1EcckSi75QnUlPqQhZhYPPSRpPIyWCfi94DRoRwsU389FszdrEZtw== - dependencies: - binaryen "98.0.0-nightly.20201109" - long "^4.0.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-eventemitter@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" - integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== - dependencies: - async "^2.4.0" - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^1.4.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -await-semaphore@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" - integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== - -axios@^0.19.0: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - -babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== - dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.0.tgz#cf5feef29551253471cfa82fc8e0f5063df07a77" - integrity sha512-mGkvkpocWJes1CmMKtgGUwCeeq0pOhALyymozzDWYomHTbDLwueDYG6p4TK1YOeYHCzBzYPsWkgTto10JubI1Q== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== - dependencies: - babel-plugin-jest-hoist "^26.6.2" - babel-preset-current-node-syntax "^1.0.0" - -backoff@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" - integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= - dependencies: - precond "0.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base-x@^3.0.2, base-x@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" - integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== - dependencies: - safe-buffer "^5.0.1" - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bignumber.js@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" - integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== - -binary-install@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/binary-install/-/binary-install-0.0.1.tgz#bcb08ff8f5adcf9e4b4cb33af89b530f5ae6649b" - integrity sha512-axr6lqB4ec/pkEOb/JMnZpfcroWv1zT48pVz1oQHG7XmGkS77vmdxmP1btuH79lWQdy9e2MVw/uW0D8siopkRg== - dependencies: - axios "^0.19.0" - env-paths "^2.2.0" - mkdirp "^0.5.1" - rimraf "^3.0.0" - tar "^5.0.5" - universal-url "^2.0.0" - -binaryen@98.0.0-nightly.20201109: - version "98.0.0-nightly.20201109" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-98.0.0-nightly.20201109.tgz#512bf6ca15c67bf7402144734a4836e63993aa05" - integrity sha512-iRarAqdH5lMWlMBzrDuJgLYJR2g4QXk93iYE2zpr6gEZkb/jCgDpPUXdhuN11Ge1zZ/6By4DwA1mmifcx7FWaw== - -bindings@^1.4.0, bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip39-light@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/bip39-light/-/bip39-light-1.0.7.tgz#06a72f251b89389a136d3f177f29b03342adc5ba" - integrity sha512-WDTmLRQUsiioBdTs9BmSEmkJza+8xfJmptsNJjxnoq3EydSa/ZBXT6rm66KoT3PJIRYMnhSKNR7S9YL1l7R40Q== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - -bip39@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.4.0.tgz#a0b8adbf163f53495f00f05d9ede7c25369ccf13" - integrity sha512-1++HywqIyPtWDo7gm4v0ylYbwkLvHkuwVSKbBlZBbTCP/mnkyrlARBny906VLAwxJbC5xw9EvuJasHFIZaIFMQ== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -bl@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" - integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blakejs@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" - integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= - -bluebird@^3.5.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" - integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0, bn.js@^4.8.0: - version "4.11.9" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" - integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== - -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2: - version "5.1.3" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" - integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== - -body-parser@1.19.0, body-parser@^1.16.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -borsh@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.3.1.tgz#c31c3a149610e37913deada80e89073fb15cf55b" - integrity sha512-gJoSTnhwLxN/i2+15Y7uprU8h3CKI+Co4YKZKvrGYUy0FwHWM20x5Sx7eU8Xv4HQqV+7rb4r3P7K1cBIQe3q8A== - dependencies: - "@types/bn.js" "^4.11.5" - bn.js "^5.0.0" - bs58 "^4.0.0" - text-encoding-utf-8 "^1.0.2" - -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= - dependencies: - base-x "^3.0.2" - -bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -bsert@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/bsert/-/bsert-0.0.10.tgz#231ac82873a1418c6ade301ab5cd9ae385895597" - integrity sha512-NHNwlac+WPy4t2LoNh8pXk8uaIGH3NSaIUbTTRXGpE2WEbq0te/tDykYHkFK57YKLPjv/aGHmbqvnGeVWDz57Q== - -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -bufferutil@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.2.tgz#79f68631910f6b993d870fc77dc0a2894eb96cd5" - integrity sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA== - dependencies: - node-gyp-build "^4.2.0" - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.0.0.tgz#5259f7c30e35e278f1bdc2a4d91230b37cad981e" - integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== - -capability@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/capability/-/capability-0.2.5.tgz#51ad87353f1936ffd77f2f21c74633a4dea88801" - integrity sha1-Ua2HNT8ZNv/Xfy8hx0YzpN6oiAE= - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -checkpoint-store@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" - integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= - dependencies: - functional-red-black-tree "^1.0.1" - -chownr@^1.1.1, chownr@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cids@^0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== - -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -cli-boxes@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" - integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.1.tgz#a4cb67aad45cd83d8d05128fc9f4d8fbb887e6b3" - integrity sha512-rcvHOWyGyid6I1WjT/3NatKj2kDt9OdSHSXpyLXaMWFbKpGACNW8pRhhdPUq9MWUOdwn8Rz9AVETjF4105rZZQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -clone@^2.0.0, clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.19.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-hash@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" - integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== - dependencies: - cids "^0.7.1" - multicodec "^0.5.5" - multihashes "^0.4.15" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -cookiejar@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" - integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cors@^2.8.1: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" - integrity sha1-rLniIaThe9sHbpBlfEK5PjcmzwY= - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-fetch@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.3.tgz#e8a0b3c54598136e037f8650f8e823ccdfac198e" - integrity sha512-PrWWNH3yL2NYIb/7WF/5vFG3DCQiXDOVf8k3ijatbrtnwNuhMWLC7YF7uqf53tbTFDzHIUD8oITw4Bxt8ST3Nw== - dependencies: - node-fetch "2.1.2" - whatwg-fetch "2.0.4" - -cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" - integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== - dependencies: - ms "2.1.2" - -debug@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== - dependencies: - ms "^2.1.1" - -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decimal.js@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.0.tgz#39466113a9e036111d02f82489b5fd6b0b5ed231" - integrity sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^3.2.0, decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -decompress-response@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" - integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== - dependencies: - mimic-response "^2.0.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -deferred-leveldown@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" - integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== - dependencies: - abstract-leveldown "~2.6.0" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -depd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diff@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -discontinuous-range@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" - integrity sha1-44Mx8IRLukm5qctxx3FYWqsbxlo= - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== - dependencies: - is-obj "^2.0.0" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: - version "6.5.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" - integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emittery@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451" - integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -encoding@^0.1.11: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== - -errno@~0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-polyfill@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/error-polyfill/-/error-polyfill-0.1.2.tgz#05b27de7d126cbc9d42a96f45faab28a98a0b28b" - integrity sha512-8uhnXlJuhFkmIfhw2tAHtWQGpXcw5rrc0dhuY3bhn8tBHvh6l0oL9VJvR2suqx9eltglKKhVPv8luPQy+UxLTA== - dependencies: - capability "^0.2.5" - o3 "^1.0.3" - u3 "^0.1.0" - -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.53" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" - integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.3" - next-tick "~1.0.0" - -es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -escalade@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.0.tgz#e8e2d7c7a8b76f6ee64c2181d6b8151441602d4e" - integrity sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escodegen@^1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eth-block-tracker@^4.4.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" - integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== - dependencies: - "@babel/plugin-transform-runtime" "^7.5.5" - "@babel/runtime" "^7.5.5" - eth-query "^2.1.0" - json-rpc-random-id "^1.0.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-ens-namehash@2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= - dependencies: - idna-uts46-hx "^2.3.1" - js-sha3 "^0.5.7" - -eth-json-rpc-errors@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz#148377ef55155585981c21ff574a8937f9d6991f" - integrity sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-json-rpc-errors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz#c1965de0301fe941c058e928bebaba2e1285e3c4" - integrity sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-json-rpc-filters@^4.1.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.1.tgz#82204a13c99927dbf42cbb3962846650c6281f33" - integrity sha512-tPfohezq8mSmwa47xvq6PGzBDLZ0njWJMB1J+OPuv+n+1WkWDlf3l3tqJXpq96RxhrzK2q7wiweRS5aGIzpq4Q== - dependencies: - await-semaphore "^0.1.3" - eth-json-rpc-middleware "^6.0.0" - eth-query "^2.1.2" - json-rpc-engine "^5.3.0" - lodash.flatmap "^4.5.0" - safe-event-emitter "^1.0.1" - -eth-json-rpc-infura@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-4.1.0.tgz#623478375ba65e4304dea529ed69e8bd7938270d" - integrity sha512-DFYitKovzVlCdUulEccdm4g6k/vnvyByuw7rd5OoWDBSIiaeinI8Z/SntLjSIs2c+YvE20DGwk/GLwZGCWDN1Q== - dependencies: - eth-json-rpc-middleware "^4.4.0" - eth-rpc-errors "^3.0.0" - json-rpc-engine "^5.1.3" - node-fetch "^2.6.0" - -eth-json-rpc-middleware@^4.1.5, eth-json-rpc-middleware@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.1.tgz#07d3dd0724c24a8d31e4a172ee96271da71b4228" - integrity sha512-yoSuRgEYYGFdVeZg3poWOwAlRI+MoBIltmOB86MtpoZjvLbou9EB/qWMOWSmH2ryCWLW97VYY6NWsmWm3OAA7A== - dependencies: - btoa "^1.2.1" - clone "^2.1.1" - eth-json-rpc-errors "^1.0.1" - eth-query "^2.1.2" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.7" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.6.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^5.1.3" - json-stable-stringify "^1.0.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-json-rpc-middleware@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz#4fe16928b34231a2537856f08a5ebbc3d0c31175" - integrity sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ== - dependencies: - btoa "^1.2.1" - clone "^2.1.1" - eth-query "^2.1.2" - eth-rpc-errors "^3.0.0" - eth-sig-util "^1.4.2" - ethereumjs-util "^5.1.2" - json-rpc-engine "^5.3.0" - json-stable-stringify "^1.0.1" - node-fetch "^2.6.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-lib@0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@^0.1.26: - version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" - integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" - -eth-query@^2.1.0, eth-query@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= - dependencies: - json-rpc-random-id "^1.0.0" - xtend "^4.0.1" - -eth-rpc-errors@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" - integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-sig-util@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" - integrity sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA= - dependencies: - ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" - ethereumjs-util "^5.1.1" - -eth-sig-util@^2.5.3: - version "2.5.3" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.5.3.tgz#6938308b38226e0b3085435474900b03036abcbe" - integrity sha512-KpXbCKmmBUNUTGh9MRKmNkIPietfhzBqqYqysDavLseIiMUGl95k6UcPEkALAZlj41e9E6yioYXc1PC333RKqw== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - -ethereum-bloom-filters@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.7.tgz#b7b80735e385dbb7f944ce6b4533e24511306060" - integrity sha512-cDcJJSJ9GMAcURiAWO3DxIEhTL/uWqlQnvgKpuYQzYPrt/izuGU+1ntQmHt0IRq6ADoSYHFnB+aCEFIldjhkMQ== - dependencies: - js-sha3 "^0.8.0" - -ethereum-common@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" - integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= - -ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - dependencies: - "@types/pbkdf2" "^3.0.0" - "@types/secp256k1" "^4.0.1" - blakejs "^1.1.0" - browserify-aes "^1.2.0" - bs58check "^2.1.2" - create-hash "^1.2.0" - create-hmac "^1.1.7" - hash.js "^1.1.7" - keccak "^3.0.0" - pbkdf2 "^3.0.17" - randombytes "^2.1.0" - safe-buffer "^5.1.2" - scrypt-js "^3.0.0" - secp256k1 "^4.0.1" - setimmediate "^1.0.5" - -ethereumjs-abi@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" - integrity sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE= - dependencies: - bn.js "^4.10.0" - ethereumjs-util "^4.3.0" - -"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.8" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#1ce6a1d64235fabe2aaf827fd606def55693508f" - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-account@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" - integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== - dependencies: - ethereumjs-util "^5.0.0" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-block@^1.2.2, ethereumjs-block@^1.6.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" - integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== - dependencies: - async "^2.0.1" - ethereum-common "0.2.0" - ethereumjs-tx "^1.2.2" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-block@~2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" - integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== - dependencies: - async "^2.0.1" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.1" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" - integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== - -ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - -ethereumjs-tx@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" - integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== - dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" - -ethereumjs-util@^4.3.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" - integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== - dependencies: - bn.js "^4.8.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - rlp "^2.0.0" - -ethereumjs-util@^5.0.0, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.5: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" - integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "^0.1.3" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-util@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.3" - -ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" - integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" - integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - -ethjs-util@0.1.6, ethjs-util@^0.1.3: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -events@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" - integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== - -events@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240" - integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-template@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" - integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== - -expect@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== - dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - -express@^4.14.0: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" - integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== - dependencies: - type "^2.0.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fake-merkle-patricia-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" - integrity sha1-S4w6z7Ugr635hgsfFM2M40As3dM= - dependencies: - checkpoint-store "^1.1.0" - -fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fast-safe-stringify@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" - integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fetch-ponyfill@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" - integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= - dependencies: - node-fetch "~1.7.1" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flagged-respawn@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -github-from-package@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" - integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= - -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== - dependencies: - ini "^1.3.5" - -global@~4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= - dependencies: - min-document "^2.19.0" - process "~0.5.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -got@9.6.0, got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -got@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" - -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasurl@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hasurl/-/hasurl-1.0.0.tgz#e4c619097ae1e8fc906bee904ce47e94f5e1ea37" - integrity sha512-43ypUd3DbwyCT01UYpA99AEZxZ4aKtRxWGBHEIbjcOsUghd9YUON0C+JF6isNjaiwC/UF5neaUudy6JS9jZPZQ== - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@^1.7.2, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" - integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== - dependencies: - punycode "2.1.0" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.5, ini@~1.3.0: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84" - integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" - integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== - dependencies: - has "^1.0.3" - -is-core-module@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.1.0.tgz#a4cc031d9b1aca63eecbd18a650e13cb4eeab946" - integrity sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-docker@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" - integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" - integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= - -is-installed-globally@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= - -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" - integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-url@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -is2@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is2/-/is2-2.0.1.tgz#8ac355644840921ce435d94f05d3a94634d3481a" - integrity sha512-+WaJvnaA7aJySz2q/8sLjMb2Mw14KTplHmSwcSpZ/fWJPkUmqw3YTzSWbPJ7OAwRvdYTWF2Wg+yYJ1AdP5Z8CA== - dependencies: - deep-is "^0.1.3" - ip-regex "^2.1.0" - is-url "^1.2.2" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== - dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" - -jest-cli@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== - dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" - prompts "^2.0.1" - yargs "^15.4.1" - -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" - -jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" - -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - -jest-environment-node@^26.0.0, jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== - dependencies: - "@jest/types" "^26.6.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.6.2" - is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== - dependencies: - chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" - slash "^3.0.0" - stack-utils "^2.0.2" - -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== - -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== - dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" - -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" - slash "^3.0.0" - -jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - cjs-module-lexer "^0.6.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.4.1" - -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - natural-compare "^1.4.0" - pretty-format "^26.6.2" - semver "^7.3.2" - -jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== - dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.6.2" - string-length "^4.0.1" - -jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" - integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== - dependencies: - "@jest/core" "^26.6.3" - import-local "^3.0.2" - jest-cli "^26.6.3" - -js-base64@^3.4.3: - version "3.6.0" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.6.0.tgz#773e1de628f4f298d65a7e9842c50244751f5756" - integrity sha512-wVdUBYQeY2gY73RIlPrysvpYx+2vheGo8Y1SNQv/BzHToWpAZzJU7Z6uheKMAe+GLSBig5/Ps2nxg/8tRB73xg== - -js-sha256@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - -js-sha3@0.5.7, js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= - -js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^16.4.0: - version "16.4.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" - integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== - dependencies: - abab "^2.0.3" - acorn "^7.1.1" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.2.0" - data-urls "^2.0.0" - decimal.js "^10.2.0" - domexception "^2.0.1" - escodegen "^1.14.1" - html-encoding-sniffer "^2.0.1" - is-potential-custom-element-name "^1.0.0" - nwsapi "^2.2.0" - parse5 "5.1.1" - request "^2.88.2" - request-promise-native "^1.0.8" - saxes "^5.0.0" - symbol-tree "^3.2.4" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - ws "^7.2.3" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-rpc-engine@^5.1.3, json-rpc-engine@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" - integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== - dependencies: - eth-rpc-errors "^3.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -keccak@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -level-codec@~7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" - integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== - -level-errors@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" - integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== - dependencies: - errno "~0.1.1" - -level-errors@~1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" - integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== - dependencies: - errno "~0.1.1" - -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - integrity sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= - dependencies: - inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" - xtend "^4.0.0" - -level-ws@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" - integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= - dependencies: - readable-stream "~1.0.15" - xtend "~2.1.1" - -levelup@^1.2.1: - version "1.3.9" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" - integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== - dependencies: - deferred-leveldown "~1.2.1" - level-codec "~7.0.0" - level-errors "~1.0.3" - level-iterator-stream "~1.3.0" - prr "~1.0.1" - semver "~5.4.1" - xtend "~4.0.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.flatmap@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" - integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash@^4.17.13, lodash@^4.17.15: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - -lodash@^4.17.14, lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -ltgt@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memdown@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= - dependencies: - abstract-leveldown "~2.7.1" - functional-red-black-tree "^1.0.1" - immediate "^3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" - integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== - dependencies: - async "^1.4.2" - ethereumjs-util "^5.0.0" - level-ws "0.0.0" - levelup "^1.2.1" - memdown "^1.0.0" - readable-stream "^2.0.0" - rlp "^2.0.0" - semaphore ">=1.0.1" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -mimic-response@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" - integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= - dependencies: - dom-walk "^0.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -minizlib@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" - integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mixpanel@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/mixpanel/-/mixpanel-0.13.0.tgz#699bf510d9ba013c75edcf979ff1e24085fde9d2" - integrity sha512-YOWmpr/o4+zJ8LPjuLUkWLc2ImFeIkX6hF1t62Wlvq6loC6e8EK8qieYO4gYPTPxxtjAryl7xmIvf/7qnPwjrQ== - dependencies: - https-proxy-agent "5.0.0" - -mkdirp-classic@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" - integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== - -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= - dependencies: - mkdirp "*" - -mkdirp@*: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mock-fs@^4.1.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.13.0.tgz#31c02263673ec3789f90eb7b6963676aa407a598" - integrity sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA== - -moo@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.1.tgz#7aae7f384b9b09f620b6abf6f74ebbcd1b65dbc4" - integrity sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicodec@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" - -multicodec@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multihashes@^0.4.15, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== - dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - -mustache@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.0.1.tgz#d99beb031701ad433338e7ea65e0489416c854a2" - integrity sha512-yL5VE97+OXn4+Er3THSmTdCFCtx5hHWzrolvH+JObZnUYwuaG7XV+Ch4fR2cIrcYI0tFHxS7iyFYl14bW8y2sA== - -nan@2.13.2: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== - -nan@^2.14.0: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -nano-json-stream-parser@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -ncp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" - integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= - -near-api-js@^0.34.0: - version "0.34.0" - resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-0.34.0.tgz#2deba01d877859edb87d9f338b3446e3240d7db2" - integrity sha512-wYSPerV5/AcdlMvJ1Ntzxb1RxeiETrLqBplv2yF0/Fi8USXhZV0Kk5svrA1Uxx4OI2diTY46+rvXs7gQqtkgPA== - dependencies: - "@types/bn.js" "^4.11.5" - bn.js "^5.0.0" - bs58 "^4.0.0" - depd "^2.0.0" - error-polyfill "^0.1.2" - http-errors "^1.7.2" - js-sha256 "^0.9.0" - mustache "^4.0.0" - node-fetch "^2.6.1" - text-encoding-utf-8 "^1.0.2" - tweetnacl "^1.0.1" - -near-api-js@^0.36.3: - version "0.36.3" - resolved "https://registry.yarnpkg.com/near-api-js/-/near-api-js-0.36.3.tgz#f374ec33ecb774ec5ad19a8e464d679d8b4438d6" - integrity sha512-/pWMoUkoP3/8XJRL+uHUReW40XCa31+33tZX2QgACvrMHXJ41HzEK9+RxjaSDsJZ70BtOB4ybfuk4Pj5MEhqCQ== - dependencies: - "@types/bn.js" "^4.11.5" - bn.js "^5.0.0" - borsh "^0.3.1" - bs58 "^4.0.0" - depd "^2.0.0" - error-polyfill "^0.1.2" - http-errors "^1.7.2" - js-sha256 "^0.9.0" - mustache "^4.0.0" - node-fetch "^2.6.1" - text-encoding-utf-8 "^1.0.2" - tweetnacl "^1.0.1" - -near-cli@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/near-cli/-/near-cli-1.5.3.tgz#0d56d03fd3c3f1045c9272d8641185bd6d6eead9" - integrity sha512-0OBu50NFY+UmGVhkD6FSvS4hzXG5v3r93SZFqOpSbX7IQPNTnn0cnGogpZXSqRpK5oKz9mDzQq1CrH7nwiRT8g== - dependencies: - ascii-table "0.0.9" - bn.js "^5.1.1" - bs58 "^4.0.1" - chalk "^4.0.0" - flagged-respawn "^1.0.1" - is-ci "^2.0.0" - jest-environment-node "^26.0.0" - mixpanel "^0.13.0" - ncp "^2.0.0" - near-api-js "^0.36.3" - near-seed-phrase "^0.1.0" - near-web3-provider "^1.0.6" - open "^7.0.1" - rimraf "^3.0.0" - stoppable "^1.1.0" - tcp-port-used "^1.0.1" - update-notifier "^5.0.0" - uuid "^8.0.0" - v8flags "^3.1.3" - web3 "^1.2.11" - yargs "^16.0.3" - optionalDependencies: - "@ledgerhq/hw-transport-node-hid" "^5.15.0" - near-ledger-js "^0.1.1" - -near-hd-key@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/near-hd-key/-/near-hd-key-1.0.0.tgz#b18fbbc8d5348a29d226ec8d546ba089afc42ce8" - integrity sha512-NknsGxGM1YivNUKdlhYl1pPWtRGOg8uBSJHd0j4B8mk0MxAeumIcorazp4V888sJleu/GptfPcGNlfiEf0zXaw== - dependencies: - bip39 "2.4.0" - create-hmac "1.1.6" - tweetnacl "^1.0.1" - -near-ledger-js@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/near-ledger-js/-/near-ledger-js-0.1.1.tgz#7eeb17cea58e07014d13f63048127b7e0abc6f0e" - integrity sha512-Gp65GDPlp3DUJUs51pgfH2LMrD27st03mao6VXc5az3x5vQKCWwMNlQyGlOxXSh9TKVZ+b+3HvHg0HBBs+ZLTA== - dependencies: - bs58 "^4.0.1" - -near-mock-vm@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/near-mock-vm/-/near-mock-vm-2.2.4.tgz#ee319f1b20d1da3b4d9075fa983f0f19839b1702" - integrity sha512-rjdWsjwnGNMHxEaao15XP3tpZPfgv/M2Yc/wxXYahEJwKGBfKk738NkEEqYrVl7OYHmoOBp3LF4udOvNhL3WbQ== - dependencies: - "@assemblyscript/loader" "^0.9.4" - yargs "^15.3.1" - -near-sdk-as@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/near-sdk-as/-/near-sdk-as-2.2.4.tgz#61f6d561184f852c3cc6047b28b578b80c5fc22c" - integrity sha512-OOXVB2rZvNpF2zKw2RmMFjd1cxdpZr4mrmOj3MLQlmjy6AofAgeTqmipN6GIRnf7vmm5Ct45rMKLXLlTC2yICQ== - dependencies: - near-mock-vm "^2.2.4" - near-sdk-bindgen "^2.2.4" - near-sdk-core "^2.2.4" - near-sdk-simulator "^2.2.4" - -near-sdk-bindgen@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/near-sdk-bindgen/-/near-sdk-bindgen-2.2.4.tgz#688ae4ae15d14e8c899f3903f22f6852f4b86ddb" - integrity sha512-oN71HCtm+jOkWDDcSRPgzoAiUSlwe+7tf5OA+WwfQRMos2ajXitUmeEq46NcB9L/s/6Ge6/POhmsSA1n9hnPlQ== - -near-sdk-core@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/near-sdk-core/-/near-sdk-core-2.2.4.tgz#4a6390b2a29ae233aee970bd359b3d3f456a26a4" - integrity sha512-mv36znOJ6Ibj9ISzA2ubahAjTGUxE4jMNsIGZlSLnBAzpj+tjmewr4+N6VVM7DG0vQ1lVH2CHHFMJBjNqRn88w== - dependencies: - "@as-pect/cli" "^5.0.0" - as-bignum "^0.2.11" - asbuild "^0.0.10" - assemblyscript "^0.17.3" - assemblyscript-json "^0.3.3" - bn.js "^5.1.1" - bs58 "^4.0.1" - js-base64 "^3.4.3" - near-vm "^1.1.0" - visitor-as "^0.3.2" - -near-sdk-simulator@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/near-sdk-simulator/-/near-sdk-simulator-2.2.4.tgz#95acd60eb0d422d85aa247e672f166bbad254e6f" - integrity sha512-tVoh959ysQqj7QpzTWrXBGsauTJ9KHJ7V/R8lr6rldsp8GzAVqiW7+QLtboYEs6DcPfiew1kBGLDSR/e1hh9Hw== - -near-seed-phrase@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/near-seed-phrase/-/near-seed-phrase-0.1.0.tgz#8a9a842fc112759e86dfe65325a113a9dbd6a526" - integrity sha512-tkeb9LUi/2w1mHjP1xwTrTSQyaUBQRbYtgUnhUTJjFznXVRi4Ai+jifWhwPDvSjQ0IPqYmD8MuWRie3kY0yT1g== - dependencies: - bip39-light "^1.0.7" - bs58 "^4.0.1" - near-hd-key "^1.0.0" - tweetnacl "^1.0.2" - -near-vm@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/near-vm/-/near-vm-1.1.0.tgz#3166bdef13e7071829d2f5621b16ddfe298e011c" - integrity sha512-7L8pmtoBJXJ5+ETdXKuFM8E9tvOd5r3IXAxF4khhg73/HC58fCTQVUZKxfF4P6tXx2j3V+gFMnioOgbr2KrpnA== - dependencies: - binary-install "^0.0.1" - -near-web3-provider@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/near-web3-provider/-/near-web3-provider-1.0.6.tgz#d7c7e5c613af87c6782fbf405402446db2192b00" - integrity sha512-nrpyOGYLsoOZbuXEDXB8j5NjKDjE4PDGnCSHpH3aC8lOE5K2v5JaJxglSBssWky+qi+pUgVrc6GFvMb9UrUZlw== - dependencies: - bn.js "^5.1.2" - bs58 "^4.0.1" - bsert "0.0.10" - eth-sig-util "^2.5.3" - near-api-js "^0.34.0" - tweetnacl "^1.0.3" - web3-provider-engine "^15.0.7" - web3-utils "^1.2.8" - -nearley@^2.19.9: - version "2.20.1" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474" - integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ== - dependencies: - commander "^2.19.0" - moo "^0.5.0" - railroad-diagrams "^1.0.0" - randexp "0.4.6" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -next-tick@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" - integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -node-abi@^2.7.0: - version "2.17.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.17.0.tgz#f167c92780497ff01eeaf473fcf8138e0fcc87fa" - integrity sha512-dFRAA0ACk/aBo0TIXQMEWMLUTyWYYT8OBYIzLmEUrQTElGRjxDCvyBZIsDL0QA7QCaj9PrawhOmTEdsuLY4uOQ== - dependencies: - semver "^5.4.1" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" - integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= - -node-fetch@^2.6.0, node-fetch@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-fetch@~1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-gyp-build@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" - integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== - -node-hid@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/node-hid/-/node-hid-1.2.0.tgz#d084a9750832b28fd6de6fe2ccd8063fe8e3e7c0" - integrity sha512-ap06Wo1E0aGrZf0t1zvjWSk+IzI6yvKpTDYQRIrdxLHEelifnGDx6XOb2VVlrQhxzM4etma8jH/i0M1LUB55dA== - dependencies: - bindings "^1.5.0" - nan "^2.14.0" - prebuild-install "^5.3.3" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" - integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - -noop-logger@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" - integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" - integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= - dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -o3@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/o3/-/o3-1.0.3.tgz#192ce877a882dfa6751f0412a865fafb2da1dac0" - integrity sha1-GSzod6iC36Z1HwQSqGX6+y2h2sA= - dependencies: - capability "^0.2.5" - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -oboe@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" - integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= - dependencies: - http-https "^1.0.0" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - -open@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/open/-/open-7.0.3.tgz#db551a1af9c7ab4c7af664139930826138531c48" - integrity sha512-sP2ru2v0P290WFfv49Ap8MF6PkzGNnGlAwHweB4WR4mr5d2d0woiCluUeJ218w7/+PmoBy9JmYgD5A4mLcWOFA== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= - dependencies: - p-finally "^1.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-headers@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" - integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== - -parse-json@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" - integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== - 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" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parse5@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" - integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" - integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -prebuild-install@^5.3.3: - version "5.3.4" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.4.tgz#6982d10084269d364c1856550b7d090ea31fa293" - integrity sha512-AkKN+pf4fSEihjapLEEj8n85YIw/tN6BQqkhzbDc0RvEZGdkpJBGMUYx66AAMcPG2KzmPQS7Cm16an4HVBRRMA== - dependencies: - detect-libc "^1.0.3" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp "^0.5.1" - napi-build-utils "^1.0.1" - node-abi "^2.7.0" - noop-logger "^0.1.1" - npmlog "^4.0.1" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^3.0.3" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - which-pm-runs "^1.0.0" - -precond@0.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" - integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= - -promise-to-callback@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" - integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= - dependencies: - is-fn "^1.0.0" - set-immediate-shim "^1.0.1" - -prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.4" - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== - dependencies: - escape-goat "^2.0.0" - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -railroad-diagrams@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" - integrity sha1-635iZ1SN3t+4mcG5Dlc3RVnN234= - -randexp@0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" - integrity sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ== - dependencies: - discontinuous-range "1.0.0" - ret "~0.1.10" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@^1.2.7, rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^1.0.33: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.0.6, readable-stream@^2.2.9: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~1.0.15: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -registry-auth-token@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" - integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.79.0, request@^2.85.0, request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== - dependencies: - is-core-module "^2.0.0" - path-parse "^1.0.6" - -resolve@^1.8.1: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rlp@^2.0.0, rlp@^2.2.3: - version "2.2.6" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" - integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== - dependencies: - bn.js "^4.11.1" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -rustbn.js@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" - integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== - -rxjs@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-event-emitter@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" - integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== - dependencies: - events "^3.0.0" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -saxes@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -scrypt-js@^3.0.0, scrypt-js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semaphore@>=1.0.1, semaphore@^1.0.3: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" - integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2: - version "7.3.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" - integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== - dependencies: - lru-cache "^6.0.0" - -semver@~5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -servify@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" - integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== - dependencies: - body-parser "^1.16.0" - cors "^2.8.1" - express "^4.14.0" - request "^2.79.0" - xhr "^2.3.3" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -simple-concat@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" - integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= - -simple-get@^2.7.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" - integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== - dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-get@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" - integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== - dependencies: - decompress-response "^4.2.0" - once "^1.3.1" - simple-concat "^1.0.0" - -sisteransi@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.6: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" - integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stack-utils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593" - integrity sha512-0H7QK2ECz3fyZMzQ8rH0j2ykpfbnd20BFtfg/SqVC2+sCTtcw0aDTGB7dk+de4U4uUeuz6nOtJcrkFFLG1B0Rg== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stoppable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" - integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" - integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= - dependencies: - is-hex-prefixed "1.0.0" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -swarm-js@^0.1.40: - version "0.1.40" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" - integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== - dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - eth-lib "^0.1.26" - fs-extra "^4.0.2" - got "^7.1.0" - mime-types "^2.1.16" - mkdirp-promise "^5.0.1" - mock-fs "^4.1.0" - setimmediate "^1.0.5" - tar "^4.0.2" - xhr-request "^1.0.1" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -tar-fs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.0.tgz#d1cdd121ab465ee0eb9ccde2d35049d3f3daf0d5" - integrity sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg== - dependencies: - chownr "^1.1.1" - mkdirp-classic "^0.5.2" - pump "^3.0.0" - tar-stream "^2.0.0" - -tar-stream@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325" - integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q== - dependencies: - bl "^4.0.1" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^4.0.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - -tar@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/tar/-/tar-5.0.5.tgz#03fcdb7105bc8ea3ce6c86642b9c942495b04f93" - integrity sha512-MNIgJddrV2TkuwChwcSNds/5E9VijOiw7kAc1y5hTNJoLDSuIyid2QtLYiCYNnICebpuvjhPQZsXwUL0O3l7OQ== - dependencies: - chownr "^1.1.3" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.0" - mkdirp "^0.5.0" - yallist "^4.0.0" - -tcp-port-used@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tcp-port-used/-/tcp-port-used-1.0.1.tgz#46061078e2d38c73979a2c2c12b5a674e6689d70" - integrity sha512-rwi5xJeU6utXoEIiMvVBMc9eJ2/ofzB+7nLOdnZuFTmNCLqRiQh2sMG9MqCxHU/69VC/Fwp5dV9306Qd54ll1Q== - dependencies: - debug "4.1.0" - is2 "2.0.1" - -term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-encoding-utf-8@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" - integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== - dependencies: - punycode "^2.1.1" - -ts-mixer@^5.1.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-5.2.1.tgz#59bf13bb3aa5a332b1ec8d042cbe3af9a860f500" - integrity sha512-JD0OH+4J4tsBLzcjv/oPEfRNOULYJYgJ6CiYqUlSKv5+bncVVxFSu1cxLd8+d9am91XqVoB8IMx7MXntf/PuJg== - -tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl-util@^0.15.0: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -tweetnacl@^1.0.0, tweetnacl@^1.0.1, tweetnacl@^1.0.2, tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" - integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -u3@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/u3/-/u3-0.1.0.tgz#0060927663b68353c539cda99e9511d6687edd9d" - integrity sha1-AGCSdmO2g1PFOc2pnpUR1mh+3Z0= - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -underscore@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -universal-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universal-url/-/universal-url-2.0.0.tgz#35e7fc2c3374804905cee67ea289ed3a47669809" - integrity sha512-3DLtXdm/G1LQMCnPj+Aw7uDoleQttNHp2g5FnNQKR6cP6taNWS1b/Ehjjx4PVyvejKi3TJyu8iBraKM4q3JQPg== - dependencies: - hasurl "^1.0.0" - whatwg-url "^7.0.0" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unorm@^1.3.3: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -update-notifier@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.0.1.tgz#1f92d45fb1f70b9e33880a72dd262bc12d22c20d" - integrity sha512-BuVpRdlwxeIOvmc32AGYvO1KVdPlsmqSh8KDDBxS6kDE5VR7R8OMP1d8MdhaVBvxl4H3551k9akXr0Y1iIB2Wg== - dependencies: - boxen "^4.2.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.2" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.2" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= - -usb@^1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/usb/-/usb-1.6.3.tgz#c0bc14994e8f9cb16f9602ec0dbadaa57cb919f5" - integrity sha512-23KYMjaWydACd8wgGKMQ4MNwFspAT6Xeim4/9Onqe5Rz/nMb4TM/WHL+qPT0KNFxzNKzAs63n1xQWGEtgaQ2uw== - dependencies: - bindings "^1.4.0" - nan "2.13.2" - prebuild-install "^5.3.3" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -utf-8-validate@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.3.tgz#3b64e418ad2ff829809025fdfef595eab2f03a27" - integrity sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A== - dependencies: - node-gyp-build "^4.2.0" - -utf8@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.0.0, uuid@^8.3.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-to-istanbul@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.0.0.tgz#b4fe00e35649ef7785a9b7fcebcea05f37c332fc" - integrity sha512-fLL2rFuQpMtm9r8hrAV2apXX/WqHJ6+IC4/eQVdMDGBUgH/YMV4Gv3duk3kjmyg6uiQWBAA9nJwue4iJUOkHeA== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -v8flags@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" - integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== - dependencies: - homedir-polyfill "^1.0.1" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -varint@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -visitor-as@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/visitor-as/-/visitor-as-0.3.2.tgz#1ab82742da0cd29c97b84d192ea229319265d26b" - integrity sha512-UrqNE0BatyC2PH4e2m2UECJEkr3dR9LtX/Q+2bnydQGi3q/z+rt3mEehM6G8gEDY3KzFIvyXilnepOYgsq7DgQ== - dependencies: - lodash.clonedeep "^4.5.0" - ts-mixer "^5.1.0" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -web3-bzz@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.3.0.tgz#83dfd77fa8a64bbb660462dffd0fee2a02ef1051" - integrity sha512-ibYAnKab+sgTo/UdfbrvYfWblXjjgSMgyy9/FHa6WXS14n/HVB+HfWqGz2EM3fok8Wy5XoKGMvdqvERQ/mzq1w== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - underscore "1.9.1" - -web3-core-helpers@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.0.tgz#697cc3246a7eaaaac64ea506828d861c981c3f31" - integrity sha512-+MFb1kZCrRctf7UYE7NCG4rGhSXaQJ/KF07di9GVK1pxy1K0+rFi61ZobuV1ky9uQp+uhhSPts4Zp55kRDB5sw== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.3.0" - web3-utils "1.3.0" - -web3-core-method@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.0.tgz#a71387af842aec7dbad5dbbd1130c14cc6c8beb3" - integrity sha512-h0yFDrYVzy5WkLxC/C3q+hiMnzxdWm9p1T1rslnuHgOp6nYfqzu/6mUIXrsS4h/OWiGJt+BZ0xVZmtC31HDWtg== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.3.0" - web3-core-promievent "1.3.0" - web3-core-subscriptions "1.3.0" - web3-utils "1.3.0" - -web3-core-promievent@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.0.tgz#e0442dd0a8989b6bdce09293976cee6d9237a484" - integrity sha512-blv69wrXw447TP3iPvYJpllkhW6B18nfuEbrfcr3n2Y0v1Jx8VJacNZFDFsFIcgXcgUIVCtOpimU7w9v4+rtaw== - dependencies: - eventemitter3 "4.0.4" - -web3-core-requestmanager@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.0.tgz#c5b9a0304504c0e6cce6c90bc1a3bff82732aa1f" - integrity sha512-3yMbuGcomtzlmvTVqNRydxsx7oPlw3ioRL6ReF9PeNYDkUsZaUib+6Dp5eBt7UXh5X+SIn/xa1smhDHz5/HpAw== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.3.0" - web3-providers-http "1.3.0" - web3-providers-ipc "1.3.0" - web3-providers-ws "1.3.0" - -web3-core-subscriptions@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.0.tgz#c2622ccd2b84f4687475398ff966b579dba0847e" - integrity sha512-MUUQUAhJDb+Nz3S97ExVWveH4utoUnsbPWP+q1HJH437hEGb4vunIb9KvN3hFHLB+aHJfPeStM/4yYTz5PeuyQ== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.3.0" - -web3-core@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.0.tgz#b818903738461c1cca0163339e1d6d3fa51242cf" - integrity sha512-BwWvAaKJf4KFG9QsKRi3MNoNgzjI6szyUlgme1qNPxUdCkaS3Rdpa0VKYNHP7M/YTk82/59kNE66mH5vmoaXjA== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.3.0" - web3-core-method "1.3.0" - web3-core-requestmanager "1.3.0" - web3-utils "1.3.0" - -web3-eth-abi@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.0.tgz#387b7ea9b38be69ad8856bc7b4e9a6a69bb4d22b" - integrity sha512-1OrZ9+KGrBeBRd3lO8upkpNua9+7cBsQAgor9wbA25UrcUYSyL8teV66JNRu9gFxaTbkpdrGqM7J/LXpraXWrg== - dependencies: - "@ethersproject/abi" "5.0.0-beta.153" - underscore "1.9.1" - web3-utils "1.3.0" - -web3-eth-accounts@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.3.0.tgz#010acf389b2bee6d5e1aecb2fe78bfa5c8f26c7a" - integrity sha512-/Q7EVW4L2wWUbNRtOTwAIrYvJid/5UnKMw67x/JpvRMwYC+e+744P536Ja6SG4X3MnzFvd3E/jruV4qa6k+zIw== - dependencies: - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-js "^3.0.1" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.3.0" - web3-core-helpers "1.3.0" - web3-core-method "1.3.0" - web3-utils "1.3.0" - -web3-eth-contract@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.0.tgz#c758340ac800788e29fa29edc8b0c0ac957b741c" - integrity sha512-3SCge4SRNCnzLxf0R+sXk6vyTOl05g80Z5+9/B5pERwtPpPWaQGw8w01vqYqsYBKC7zH+dxhMaUgVzU2Dgf7bQ== - dependencies: - "@types/bn.js" "^4.11.5" - underscore "1.9.1" - web3-core "1.3.0" - web3-core-helpers "1.3.0" - web3-core-method "1.3.0" - web3-core-promievent "1.3.0" - web3-core-subscriptions "1.3.0" - web3-eth-abi "1.3.0" - web3-utils "1.3.0" - -web3-eth-ens@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.3.0.tgz#0887ba38473c104cf5fb8a715828b3b354fa02a2" - integrity sha512-WnOru+EcuM5dteiVYJcHXo/I7Wq+ei8RrlS2nir49M0QpYvUPGbCGgTbifcjJQTWamgORtWdljSA1s2Asdb74w== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.3.0" - web3-core-helpers "1.3.0" - web3-core-promievent "1.3.0" - web3-eth-abi "1.3.0" - web3-eth-contract "1.3.0" - web3-utils "1.3.0" - -web3-eth-iban@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.0.tgz#15b782dfaf273ebc4e3f389f1367f4e88ddce4a5" - integrity sha512-v9mZWhR4fPF17/KhHLiWir4YHWLe09O3B/NTdhWqw3fdAMJNztzMHGzgHxA/4fU+rhrs/FhDzc4yt32zMEXBZw== - dependencies: - bn.js "^4.11.9" - web3-utils "1.3.0" - -web3-eth-personal@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.3.0.tgz#d376e03dc737d961ff1f8d1aca866efad8477135" - integrity sha512-2czUhElsJdLpuNfun9GeLiClo5O6Xw+bLSjl3f4bNG5X2V4wcIjX2ygep/nfstLLtkz8jSkgl/bV7esANJyeRA== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.3.0" - web3-core-helpers "1.3.0" - web3-core-method "1.3.0" - web3-net "1.3.0" - web3-utils "1.3.0" - -web3-eth@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.3.0.tgz#898e5f5a8827f9bc6844e267a52eb388916a6771" - integrity sha512-/bzJcxXPM9EM18JM5kO2JjZ3nEqVo3HxqU93aWAEgJNqaP/Lltmufl2GpvIB2Hvj+FXAjAXquxUdQ2/xP7BzHQ== - dependencies: - underscore "1.9.1" - web3-core "1.3.0" - web3-core-helpers "1.3.0" - web3-core-method "1.3.0" - web3-core-subscriptions "1.3.0" - web3-eth-abi "1.3.0" - web3-eth-accounts "1.3.0" - web3-eth-contract "1.3.0" - web3-eth-ens "1.3.0" - web3-eth-iban "1.3.0" - web3-eth-personal "1.3.0" - web3-net "1.3.0" - web3-utils "1.3.0" - -web3-net@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.3.0.tgz#b69068cccffab58911c2f08ca4abfbefb0f948c6" - integrity sha512-Xz02KylOyrB2YZzCkysEDrY7RbKxb7LADzx3Zlovfvuby7HBwtXVexXKtoGqksa+ns1lvjQLLQGb+OeLi7Sr7w== - dependencies: - web3-core "1.3.0" - web3-core-method "1.3.0" - web3-utils "1.3.0" - -web3-provider-engine@^15.0.7: - version "15.0.12" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-15.0.12.tgz#24d7f2f6fb6de856824c7306291018c4fc543ac3" - integrity sha512-/OfhQalKPND1iB5ggvGuYF0+SIb2Qj5OFTrT2VrZWP79UhMTdP7T+L2FtblmRdCeOetoAzZHdBaIwLOZsmIX+w== - dependencies: - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^4.4.2" - eth-json-rpc-errors "^2.0.2" - eth-json-rpc-filters "^4.1.1" - eth-json-rpc-infura "^4.0.1" - eth-json-rpc-middleware "^4.1.5" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - -web3-providers-http@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.0.tgz#88227f64c88b32abed4359383c2663616e0dc531" - integrity sha512-cMKhUI6PqlY/EC+ZDacAxajySBu8AzW8jOjt1Pe/mbRQgS0rcZyvLePGTTuoyaA8C21F8UW+EE5jj7YsNgOuqA== - dependencies: - web3-core-helpers "1.3.0" - xhr2-cookies "1.1.0" - -web3-providers-ipc@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.0.tgz#d7c2b203733b46f7b4e7b15633d891648cf9a293" - integrity sha512-0CrLuRofR+1J38nEj4WsId/oolwQEM6Yl1sOt41S/6bNI7htdkwgVhSloFIMJMDFHtRw229QIJ6wIaKQz0X1Og== - dependencies: - oboe "2.1.5" - underscore "1.9.1" - web3-core-helpers "1.3.0" - -web3-providers-ws@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.0.tgz#84adeff65acd4624d7f5bb43c5b2b22d8f0f63a4" - integrity sha512-Im5MthhJnJst8nSoq0TgbyOdaiFQFa5r6sHPOVllhgIgViDqzbnlAFW9sNzQ0Q8VXPNfPIQKi9cOrHlSRNPjRw== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.3.0" - websocket "^1.0.32" - -web3-shh@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.3.0.tgz#62d15297da8fb5f733dd1b98f9ade300590f4d49" - integrity sha512-IZTojA4VCwVq+7eEIHuL1tJXtU+LJDhO8Y2QmuwetEWW1iBgWCGPHZasipWP+7kDpSm/5lo5GRxL72FF/Os/tA== - dependencies: - web3-core "1.3.0" - web3-core-method "1.3.0" - web3-core-subscriptions "1.3.0" - web3-net "1.3.0" - -web3-utils@1.3.0, web3-utils@^1.2.8: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.0.tgz#5bac16e5e0ec9fe7bdcfadb621655e8aa3cf14e1" - integrity sha512-2mS5axFCbkhicmoDRuJeuo0TVGQDgC2sPi/5dblfVC+PMtX0efrb8Xlttv/eGkq7X4E83Pds34FH98TP2WOUZA== - dependencies: - bn.js "^4.11.9" - eth-lib "0.2.8" - ethereum-bloom-filters "^1.0.6" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - underscore "1.9.1" - utf8 "3.0.0" - -web3@^1.2.11: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.0.tgz#8fe4cd6e2a21c91904f343ba75717ee4c76bb349" - integrity sha512-4q9dna0RecnrlgD/bD1C5S+81Untbd6Z/TBD7rb+D5Bvvc0Wxjr4OP70x+LlnwuRDjDtzBwJbNUblh2grlVArw== - dependencies: - web3-bzz "1.3.0" - web3-core "1.3.0" - web3-eth "1.3.0" - web3-eth-personal "1.3.0" - web3-net "1.3.0" - web3-shh "1.3.0" - web3-utils "1.3.0" - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -websocket@^1.0.32: - version "1.0.32" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" - integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -whatwg-url@^8.0.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771" - integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^5.0.0" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -ws@^5.1.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" - integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.2.3: - version "7.3.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" - integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -xhr-request-promise@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" - integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== - dependencies: - xhr-request "^1.1.0" - -xhr-request@^1.0.1, xhr-request@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" - integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== - dependencies: - buffer-to-arraybuffer "^0.0.5" - object-assign "^4.1.1" - query-string "^5.0.1" - simple-get "^2.7.0" - timed-out "^4.0.1" - url-set-query "^1.0.0" - xhr "^2.0.4" - -xhr2-cookies@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= - dependencies: - cookiejar "^2.1.1" - -xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: - version "2.5.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" - integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== - dependencies: - global "~4.3.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= - dependencies: - object-keys "~0.4.0" - -y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -y18n@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.1.tgz#1ad2a7eddfa8bce7caa2e1f6b5da96c39d99d571" - integrity sha512-/jJ831jEs4vGDbYPQp4yGKDYPSCCEQ45uZWJHE1AoYBzqdZi8+LDWas0z4HrmJXmKdpFsTiowSHXdxyFhpmdMg== - -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= - -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.0.0: - version "20.2.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.0.tgz#944791ca2be2e08ddadd3d87e9de4c6484338605" - integrity sha512-2agPoRFPoIcFzOIp6656gcvsg2ohtscpw2OINr/q46+Sq41xz2OYLqx5HRHabmFU1OARIPAYH5uteICE7mn/5A== - -yargs@^15.3.1, yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yargs@^16.0.3: - version "16.0.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.0.3.tgz#7a919b9e43c90f80d4a142a89795e85399a7e54c" - integrity sha512-6+nLw8xa9uK1BOEOykaiYAJVh6/CjxWXK/q9b5FpRgNslt8s22F2xMBqVIKgCRjNgGvGPBy8Vog7WN7yh4amtA== - dependencies: - cliui "^7.0.0" - escalade "^3.0.2" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.1" - yargs-parser "^20.0.0" From db053ef0f5aa232227098395ba4c96dfe6e90d5e Mon Sep 17 00:00:00 2001 From: Chad Ostrowski <221614+chadoh@users.noreply.github.com> Date: Tue, 9 Mar 2021 19:29:45 -0500 Subject: [PATCH 3/9] add rustfmt.toml from near-sdk-rs Using rustfmt with these files without the same settings causes many changes --- rustfmt.toml | 1 + 1 file changed, 1 insertion(+) create mode 100644 rustfmt.toml diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..2a35f02 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1 @@ +use_small_heuristics = "Max" From 540e9be997f36aec57abd88b3ca3908f7e251f8b Mon Sep 17 00:00:00 2001 From: Chad Ostrowski <221614+chadoh@users.noreply.github.com> Date: Tue, 9 Mar 2021 20:48:08 -0500 Subject: [PATCH 4/9] Remove unnecessary "extern crate" Matches https://github.com/near/near-sdk-rs/pull/324 --- tests/general.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/general.rs b/tests/general.rs index 9ca064a..3280554 100644 --- a/tests/general.rs +++ b/tests/general.rs @@ -1,6 +1,3 @@ -/// Bring contract crate into namespace -extern crate fungible_token; - use std::convert::TryInto; use defi::*; From 2a17edd7b8625c9625ead3b3b8119e799b11c425 Mon Sep 17 00:00:00 2001 From: Chad Ostrowski <221614+chadoh@users.noreply.github.com> Date: Mon, 15 Mar 2021 14:56:55 -0400 Subject: [PATCH 5/9] update from latest near-sdk-rs * fix `commit` to `rev` * use latest commit from near-sdk-rs * use latest version of fungible-token example, which reorganizes simulation testing directory --- Cargo.lock | 1168 ++++++++++++++++++++-- Cargo.toml | 4 +- ft/Cargo.toml | 4 +- res/defi.wasm | Bin 137762 -> 137820 bytes res/fungible_token.wasm | Bin 223207 -> 223842 bytes test-contract-defi/Cargo.toml | 4 +- tests/sim/main.rs | 3 + tests/sim/no_macros.rs | 62 ++ tests/sim/utils.rs | 94 ++ tests/{general.rs => sim/with_macros.rs} | 140 +-- 10 files changed, 1278 insertions(+), 201 deletions(-) create mode 100644 tests/sim/main.rs create mode 100644 tests/sim/no_macros.rs create mode 100644 tests/sim/utils.rs rename tests/{general.rs => sim/with_macros.rs} (61%) diff --git a/Cargo.lock b/Cargo.lock index 14788f4..11c11ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,6 +6,21 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +[[package]] +name = "addr2line" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" +dependencies = [ + "gimli 0.23.0", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + [[package]] name = "ahash" version = "0.4.7" @@ -30,6 +45,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "anyhow" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afddf7f520a80dbf76e6f50a35bca42a2331ef227a28b3b6dc5c2e2338d114b1" + [[package]] name = "arrayref" version = "0.3.6" @@ -79,6 +100,20 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +[[package]] +name = "backtrace" +version = "0.3.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d117600f438b1707d4e4ae15d3595657288f8235a0eb593e80ecc98ab34e1bc" +dependencies = [ + "addr2line", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object 0.23.0", + "rustc-demangle", +] + [[package]] name = "base64" version = "0.11.0" @@ -122,7 +157,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "which", + "which 3.1.1", ] [[package]] @@ -287,7 +322,7 @@ checksum = "bf857ae42d910aede5c5186e62684b0d7a597ce2fe3bd14448ab8f7ef439848c" dependencies = [ "async-mutex", "cached_proc_macro_types", - "darling", + "darling 0.10.2", "quote", "syn", ] @@ -359,7 +394,7 @@ checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a" dependencies = [ "glob", "libc", - "libloading", + "libloading 0.5.2", ] [[package]] @@ -404,6 +439,217 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" +[[package]] +name = "cranelift-bforest" +version = "0.67.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f065f6889758f817f61a230220d1811ba99a9762af2fb69ae23048314f75ff2" +dependencies = [ + "cranelift-entity 0.67.0", +] + +[[package]] +name = "cranelift-bforest" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9221545c0507dc08a62b2d8b5ffe8e17ac580b0a74d1813b496b8d70b070fbd0" +dependencies = [ + "cranelift-entity 0.68.0", +] + +[[package]] +name = "cranelift-codegen" +version = "0.67.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "510aa2ab4307644100682b94e449940a0ea15c5887f1d4b9678b8dd5ef31e736" +dependencies = [ + "byteorder", + "cranelift-bforest 0.67.0", + "cranelift-codegen-meta 0.67.0", + "cranelift-codegen-shared 0.67.0", + "cranelift-entity 0.67.0", + "gimli 0.21.0", + "log", + "regalloc 0.0.30", + "serde", + "smallvec", + "target-lexicon 0.11.2", + "thiserror", +] + +[[package]] +name = "cranelift-codegen" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9936ea608b6cd176f107037f6adbb4deac933466fc7231154f96598b2d3ab1" +dependencies = [ + "byteorder", + "cranelift-bforest 0.68.0", + "cranelift-codegen-meta 0.68.0", + "cranelift-codegen-shared 0.68.0", + "cranelift-entity 0.68.0", + "gimli 0.22.0", + "log", + "regalloc 0.0.31", + "smallvec", + "target-lexicon 0.11.2", + "thiserror", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.67.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4cb0c7e87c60d63b35f9670c15479ee4a5e557dd127efab88b2f9b2ca83c9a0" +dependencies = [ + "cranelift-codegen-shared 0.67.0", + "cranelift-entity 0.67.0", +] + +[[package]] +name = "cranelift-codegen-meta" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef2b2768568306540f4c8db3acce9105534d34c4a1e440529c1e702d7f8c8d7" +dependencies = [ + "cranelift-codegen-shared 0.68.0", + "cranelift-entity 0.68.0", +] + +[[package]] +name = "cranelift-codegen-shared" +version = "0.67.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60636227098693e06de8d6d88beea2a7d32ecf8a8030dacdb57c68e06f381826" + +[[package]] +name = "cranelift-codegen-shared" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6759012d6d19c4caec95793f052613e9d4113e925e7f14154defbac0f1d4c938" + +[[package]] +name = "cranelift-entity" +version = "0.67.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6156db73e0c9f65f80c512988d63ec736be0dee3dd66bf951e3e28aed9dc02d3" +dependencies = [ + "serde", +] + +[[package]] +name = "cranelift-entity" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86badbce14e15f52a45b666b38abe47b204969dd7f8fb7488cb55dd46b361fa6" +dependencies = [ + "serde", +] + +[[package]] +name = "cranelift-frontend" +version = "0.67.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e09cd158c9a820a4cc14a34076811da225cce1d31dc6d03c5ef85b91aef560b9" +dependencies = [ + "cranelift-codegen 0.67.0", + "log", + "smallvec", + "target-lexicon 0.11.2", +] + +[[package]] +name = "cranelift-frontend" +version = "0.68.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b608bb7656c554d0a4cf8f50c7a10b857e80306f6ff829ad6d468a7e2323c8d8" +dependencies = [ + "cranelift-codegen 0.68.0", + "log", + "smallvec", + "target-lexicon 0.11.2", +] + +[[package]] +name = "cranelift-native" +version = "0.67.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7054533ae1fc2048c1a6110bdf8f4314b77c60329ec6a7df79d2cfb84e3dcc1c" +dependencies = [ + "cranelift-codegen 0.67.0", + "raw-cpuid", + "target-lexicon 0.11.2", +] + +[[package]] +name = "cranelift-wasm" +version = "0.67.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aee0e0b68eba99f99a4923212d97aca9e44655ca8246f07fffe11236109b0d0" +dependencies = [ + "cranelift-codegen 0.67.0", + "cranelift-entity 0.67.0", + "cranelift-frontend 0.67.0", + "log", + "serde", + "thiserror", + "wasmparser 0.59.0", +] + +[[package]] +name = "crc32fast" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dca26ee1f8d361640700bde38b2c37d8c22b3ce2d360e1fc1c74ea4b0aa7d775" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2584f639eb95fea8c798496315b297cf81b9b58b6d30ab066a75455333cf4b12" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", + "lazy_static", + "memoffset 0.6.1", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7e9d99fa91428effe99c5c6d4634cdeba32b8cf784fc428a2a687f61a952c49" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "lazy_static", +] + [[package]] name = "crunchy" version = "0.2.2" @@ -439,8 +685,18 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.10.2", + "darling_macro 0.10.2", +] + +[[package]] +name = "darling" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06d4a9551359071d1890820e3571252b91229e0712e7c36b08940e603c5a8fc" +dependencies = [ + "darling_core 0.12.2", + "darling_macro 0.12.2", ] [[package]] @@ -457,13 +713,38 @@ dependencies = [ "syn", ] +[[package]] +name = "darling_core" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b443e5fb0ddd56e0c9bfa47dc060c5306ee500cb731f2b91432dd65589a77684" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.10.0", + "syn", +] + [[package]] name = "darling_macro" version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" dependencies = [ - "darling_core", + "darling_core 0.10.2", + "quote", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0220073ce504f12a70efc4e7cdaea9e9b1b324872e7ad96a208056d7a638b81" +dependencies = [ + "darling_core 0.12.2", "quote", "syn", ] @@ -564,6 +845,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + [[package]] name = "elastic-array" version = "0.11.0" @@ -573,6 +860,27 @@ dependencies = [ "heapsize", ] +[[package]] +name = "enumset" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbd795df6708a599abf1ee10eacc72efd052b7a5f70fdf0715e4d5151a6db9c3" +dependencies = [ + "enumset_derive", +] + +[[package]] +name = "enumset_derive" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e19c52f9ec503c8a68dc04daf71a04b07e690c32ab1a8b68e33897f255269d47" +dependencies = [ + "darling 0.12.2", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "env_logger" version = "0.7.1" @@ -640,6 +948,12 @@ version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7531096570974c3a9dcf9e4b8e1cede1ec26cf5046219fb3b9d897503b9be59" +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + [[package]] name = "fixed-hash" version = "0.7.0" @@ -837,6 +1151,34 @@ dependencies = [ "wasi 0.10.2+wasi-snapshot-preview1", ] +[[package]] +name = "gimli" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65c" +dependencies = [ + "fallible-iterator", + "indexmap", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" +dependencies = [ + "fallible-iterator", + "indexmap", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" + [[package]] name = "glob" version = "0.3.0" @@ -1023,6 +1365,12 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +[[package]] +name = "leb128" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a" + [[package]] name = "libc" version = "0.2.86" @@ -1039,6 +1387,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "libloading" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" +dependencies = [ + "cfg-if 1.0.0", + "winapi", +] + [[package]] name = "librocksdb-sys" version = "6.11.4" @@ -1078,6 +1436,15 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + [[package]] name = "matches" version = "0.1.8" @@ -1109,16 +1476,50 @@ dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157b4208e3059a8f9e78d559edc658e13df41410cb3ae03979c83130067fdd87" +dependencies = [ + "autocfg", +] + [[package]] name = "memory_units" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "more-asserts" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238" + [[package]] name = "near-contract-standards" version = "3.0.0-pre.3" -source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +source = "git+https://github.com/near/near-sdk-rs.git?rev=249dacdcd3fd34bc00f0895a275f33f05cd910c1#249dacdcd3fd34bc00f0895a275f33f05cd910c1" dependencies = [ "near-sdk", ] @@ -1126,7 +1527,8 @@ dependencies = [ [[package]] name = "near-crypto" version = "0.1.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb14bec070cfd808438712cda5d54703001b9cf1196c8afaeadc9514e06d00a3" dependencies = [ "arrayref", "blake2", @@ -1150,7 +1552,8 @@ dependencies = [ [[package]] name = "near-metrics" version = "0.1.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7b9dcbc960db15fcec85bcb29a78b57e4005b7b1a0afc70a26a97453862528e" dependencies = [ "lazy_static", "log", @@ -1159,8 +1562,9 @@ dependencies = [ [[package]] name = "near-pool" -version = "0.1.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +version = "0.1.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde79472f7cfc0675733b65f79f9e50c20bfbb9806298ab2872916869a45dccd" dependencies = [ "borsh", "near-crypto", @@ -1170,8 +1574,9 @@ dependencies = [ [[package]] name = "near-primitives" -version = "0.1.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +version = "0.1.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75ed2263518ca67a3c158c144813832fd96f48ab239494bb9d7793d315f31417" dependencies = [ "base64 0.13.0", "borsh", @@ -1184,9 +1589,9 @@ dependencies = [ "jemallocator", "lazy_static", "near-crypto", - "near-primitives-core 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "near-rpc-error-macro 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "near-vm-errors 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-primitives-core 0.4.0", + "near-rpc-error-macro", + "near-vm-errors 4.0.0-pre.1", "num-rational", "primitive-types", "rand 0.7.3", @@ -1219,10 +1624,11 @@ dependencies = [ [[package]] name = "near-primitives-core" -version = "0.1.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2b3fb5acf3a494aed4e848446ef2d6ebb47dbe91c681105d4d1786c2ee63e52" dependencies = [ - "base64 0.11.0", + "base64 0.13.0", "borsh", "bs58", "derive_more", @@ -1247,24 +1653,13 @@ dependencies = [ "syn", ] -[[package]] -name = "near-rpc-error-core" -version = "0.1.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "syn", -] - [[package]] name = "near-rpc-error-macro" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c6111d713e90c7c551dee937f4a06cb9ea2672243455a4454cc7566387ba2d9" dependencies = [ - "near-rpc-error-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-rpc-error-core", "proc-macro2", "quote", "serde", @@ -1273,16 +1668,31 @@ dependencies = [ ] [[package]] -name = "near-rpc-error-macro" -version = "0.1.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +name = "near-runtime" +version = "4.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e4c0a4cd2ee5ccbc1fd5d492180ebf33ac1159d721b2e0c58c11953131fb449" dependencies = [ - "near-rpc-error-core 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "proc-macro2", - "quote", + "borsh", + "byteorder", + "ethereum-types", + "hex", + "lazy_static", + "log", + "near-crypto", + "near-metrics", + "near-primitives", + "near-runtime-utils 4.0.0-pre.1", + "near-store", + "near-vm-errors 4.0.0-pre.1", + "near-vm-logic 4.0.0-pre.1", + "near-vm-runner", + "num-bigint", + "num-rational", + "num-traits", + "rand 0.7.3", "serde", "serde_json", - "syn", ] [[package]] @@ -1297,8 +1707,9 @@ dependencies = [ [[package]] name = "near-runtime-utils" -version = "3.0.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +version = "4.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a48d80c4ca1d4cf99bc16490e1e3d49826c150dfc4410ac498918e45c7d98e07" dependencies = [ "lazy_static", "regex", @@ -1307,14 +1718,14 @@ dependencies = [ [[package]] name = "near-sdk" version = "3.0.0-pre.3" -source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +source = "git+https://github.com/near/near-sdk-rs.git?rev=249dacdcd3fd34bc00f0895a275f33f05cd910c1#249dacdcd3fd34bc00f0895a275f33f05cd910c1" dependencies = [ "base64 0.13.0", "borsh", "bs58", - "near-primitives-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-primitives-core 0.1.0", "near-sdk-macros", - "near-vm-logic 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-vm-logic 3.0.0", "serde", "serde_json", "wee_alloc", @@ -1323,7 +1734,7 @@ dependencies = [ [[package]] name = "near-sdk-core" version = "3.0.0-pre.3" -source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +source = "git+https://github.com/near/near-sdk-rs.git?rev=249dacdcd3fd34bc00f0895a275f33f05cd910c1#249dacdcd3fd34bc00f0895a275f33f05cd910c1" dependencies = [ "Inflector", "proc-macro2", @@ -1334,7 +1745,7 @@ dependencies = [ [[package]] name = "near-sdk-macros" version = "3.0.0-pre.3" -source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +source = "git+https://github.com/near/near-sdk-rs.git?rev=249dacdcd3fd34bc00f0895a275f33f05cd910c1#249dacdcd3fd34bc00f0895a275f33f05cd910c1" dependencies = [ "near-sdk-core", "proc-macro2", @@ -1345,23 +1756,24 @@ dependencies = [ [[package]] name = "near-sdk-sim" version = "3.0.0-pre.3" -source = "git+https://github.com/near/near-sdk-rs.git#330d161b68ba80280fdbc02facd7f0744bd36d48" +source = "git+https://github.com/near/near-sdk-rs.git?rev=249dacdcd3fd34bc00f0895a275f33f05cd910c1#249dacdcd3fd34bc00f0895a275f33f05cd910c1" dependencies = [ "funty", "lazy-static-include", "near-crypto", "near-pool", "near-primitives", + "near-runtime", "near-sdk", "near-store", - "near-vm-logic 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "node-runtime", + "near-vm-logic 4.0.0-pre.1", ] [[package]] name = "near-store" -version = "2.2.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +version = "0.1.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e880d1d9a4ca5a1ca1ea0366fd80e295465f90cd0c1209f45d6d0b7a443ed4" dependencies = [ "borsh", "byteorder", @@ -1387,18 +1799,19 @@ checksum = "53a100dda565c5375ac061126167afc5c33cdba1f2e325cfae3ce08f4a5a432a" dependencies = [ "borsh", "hex", - "near-rpc-error-macro 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-rpc-error-macro", "serde", ] [[package]] name = "near-vm-errors" -version = "3.0.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +version = "4.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e281d8730ed8cb0e3e69fb689acee6b93cdb43824cd69a8ffd7e1bfcbd1177d7" dependencies = [ "borsh", "hex", - "near-rpc-error-macro 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-rpc-error-macro", "serde", ] @@ -1412,9 +1825,9 @@ dependencies = [ "borsh", "bs58", "byteorder", - "near-primitives-core 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "near-runtime-utils 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "near-vm-errors 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "near-primitives-core 0.1.0", + "near-runtime-utils 3.0.0", + "near-vm-errors 3.0.0", "serde", "sha2", "sha3", @@ -1422,16 +1835,17 @@ dependencies = [ [[package]] name = "near-vm-logic" -version = "3.0.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +version = "4.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11cb28a2d07f37680efdaf860f4c9802828c44fc50c08009e7884de75d982c5" dependencies = [ "base64 0.13.0", "borsh", "bs58", "byteorder", - "near-primitives-core 0.1.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "near-runtime-utils 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "near-vm-errors 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-primitives-core 0.4.0", + "near-runtime-utils 4.0.0-pre.1", + "near-vm-errors 4.0.0-pre.1", "serde", "sha2", "sha3", @@ -1439,19 +1853,26 @@ dependencies = [ [[package]] name = "near-vm-runner" -version = "3.0.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" +version = "4.0.0-pre.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93a66e94e12ec66a29674cc4efa975c280415aa0c944d7294cedbdb0c3858b48" dependencies = [ + "anyhow", "borsh", "cached", "log", "near-primitives", - "near-vm-errors 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "near-vm-logic 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", + "near-vm-errors 4.0.0-pre.1", + "near-vm-logic 4.0.0-pre.1", "parity-wasm", "pwasm-utils", + "tracing", + "wasmer", + "wasmer-compiler-singlepass", "wasmer-runtime-core-near", "wasmer-runtime-near", + "wasmer-types", + "wasmtime", ] [[package]] @@ -1467,33 +1888,6 @@ dependencies = [ "void", ] -[[package]] -name = "node-runtime" -version = "3.0.0" -source = "git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80#1e88c6c699e3a2c49c6cbd09d284f69885982e80" -dependencies = [ - "borsh", - "byteorder", - "ethereum-types", - "hex", - "lazy_static", - "log", - "near-crypto", - "near-metrics", - "near-primitives", - "near-runtime-utils 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "near-store", - "near-vm-errors 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "near-vm-logic 3.0.0 (git+https://github.com/near/nearcore.git?rev=1e88c6c699e3a2c49c6cbd09d284f69885982e80)", - "near-vm-runner", - "num-bigint", - "num-rational", - "num-traits", - "rand 0.7.3", - "serde", - "serde_json", -] - [[package]] name = "nom" version = "5.1.2" @@ -1557,6 +1951,33 @@ dependencies = [ "libc", ] +[[package]] +name = "object" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37fd5004feb2ce328a52b0b3d01dbf4ffff72583493900ed15f22d4111c51693" +dependencies = [ + "crc32fast", + "indexmap", + "wasmparser 0.57.0", +] + +[[package]] +name = "object" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3b63360ec3cb337817c2dbd47ab4a0f170d285d8e5a2064600f3def1402397" +dependencies = [ + "crc32fast", + "indexmap", +] + +[[package]] +name = "object" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" + [[package]] name = "once_cell" version = "1.7.0" @@ -1818,7 +2239,7 @@ dependencies = [ "libc", "rand_chacha 0.2.2", "rand_core 0.5.1", - "rand_hc", + "rand_hc 0.2.0", ] [[package]] @@ -1830,6 +2251,7 @@ dependencies = [ "libc", "rand_chacha 0.3.0", "rand_core 0.6.2", + "rand_hc 0.3.0", ] [[package]] @@ -1879,6 +2301,51 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_hc" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" +dependencies = [ + "rand_core 0.6.2", +] + +[[package]] +name = "raw-cpuid" +version = "7.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb71f708fe39b2c5e98076204c3cc094ee5a4c12c4cdb119a2b72dc34164f41" +dependencies = [ + "bitflags", + "cc", + "rustc_version", +] + +[[package]] +name = "rayon" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "lazy_static", + "num_cpus", +] + [[package]] name = "redox_syscall" version = "0.1.57" @@ -1903,6 +2370,28 @@ dependencies = [ "smallvec", ] +[[package]] +name = "regalloc" +version = "0.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2041c2d34f6ff346d6f428974f03d8bf12679b0c816bb640dc5eb1d48848d8d1" +dependencies = [ + "log", + "rustc-hash", + "smallvec", +] + +[[package]] +name = "regalloc" +version = "0.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "571f7f397d61c4755285cd37853fe8e03271c243424a907415909379659381c5" +dependencies = [ + "log", + "rustc-hash", + "smallvec", +] + [[package]] name = "regex" version = "1.4.3" @@ -1921,6 +2410,27 @@ version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5eb417147ba9860a96cfe72a0b93bf88fee1744b5636ec99ab20c1aa9376581" +[[package]] +name = "region" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877e54ea2adcd70d80e9179344c97f93ef0dffd6b03e1f4529e6e83ab2fa9ae0" +dependencies = [ + "bitflags", + "libc", + "mach", + "winapi", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + [[package]] name = "rlp" version = "0.5.0" @@ -1941,6 +2451,12 @@ dependencies = [ "librocksdb-sys", ] +[[package]] +name = "rustc-demangle" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -2109,6 +2625,12 @@ dependencies = [ "syn", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -2127,6 +2649,12 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "strum" version = "0.20.0" @@ -2189,6 +2717,26 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" +[[package]] +name = "target-lexicon" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "422045212ea98508ae3d28025bc5aaa2bd4a9cdaecd442a08da2ee620ee9ea95" + +[[package]] +name = "tempfile" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "rand 0.8.3", + "redox_syscall 0.2.5", + "remove_dir_all", + "winapi", +] + [[package]] name = "termcolor" version = "1.1.2" @@ -2279,6 +2827,38 @@ dependencies = [ "serde", ] +[[package]] +name = "tracing" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01ebdc2bb4498ab1ab5f5b73c5803825e60199229ccba0698170e3be0e7f959f" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f50de3927f93d202783f4513cda820ab47ef17f624b03c096e86ef00c67e6b5f" +dependencies = [ + "lazy_static", +] + [[package]] name = "typenum" version = "1.12.0" @@ -2397,6 +2977,168 @@ version = "0.10.2+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +[[package]] +name = "wasmer" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a70cfae554988d904d64ca17ab0e7cd652ee5c8a0807094819c1ea93eb9d6866" +dependencies = [ + "cfg-if 0.1.10", + "indexmap", + "more-asserts", + "target-lexicon 0.11.2", + "thiserror", + "wasmer-compiler", + "wasmer-compiler-cranelift", + "wasmer-derive", + "wasmer-engine", + "wasmer-engine-jit", + "wasmer-engine-native", + "wasmer-types", + "wasmer-vm", + "wat", + "winapi", +] + +[[package]] +name = "wasmer-compiler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b7732a9cab472bd921d5a0c422f45b3d03f62fa2c40a89e0770cef6d47e383e" +dependencies = [ + "enumset", + "serde", + "serde_bytes", + "smallvec", + "target-lexicon 0.11.2", + "thiserror", + "wasmer-types", + "wasmer-vm", + "wasmparser 0.65.0", +] + +[[package]] +name = "wasmer-compiler-cranelift" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48cb9395f094e1d81534f4c5e330ed4cdb424e8df870d29ad585620284f5fddb" +dependencies = [ + "cranelift-codegen 0.68.0", + "cranelift-frontend 0.68.0", + "gimli 0.22.0", + "more-asserts", + "rayon", + "serde", + "smallvec", + "tracing", + "wasmer-compiler", + "wasmer-types", + "wasmer-vm", +] + +[[package]] +name = "wasmer-compiler-singlepass" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "426ae6ef0f606ca815510f3e2ef6f520e217514bfb7a664defe180b9a9e75d07" +dependencies = [ + "byteorder", + "dynasm", + "dynasmrt", + "lazy_static", + "more-asserts", + "rayon", + "serde", + "smallvec", + "wasmer-compiler", + "wasmer-types", + "wasmer-vm", +] + +[[package]] +name = "wasmer-derive" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b86dcd2c3efdb8390728a2b56f762db07789aaa5aa872a9dc776ba3a7912ed" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "wasmer-engine" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efe4667d6bd888f26ae8062a63a9379fa697415b4b4e380f33832e8418fd71b5" +dependencies = [ + "backtrace", + "bincode", + "lazy_static", + "memmap2", + "more-asserts", + "rustc-demangle", + "serde", + "serde_bytes", + "target-lexicon 0.11.2", + "thiserror", + "wasmer-compiler", + "wasmer-types", + "wasmer-vm", +] + +[[package]] +name = "wasmer-engine-jit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26770be802888011b4a3072f2a282fc2faa68aa48c71b3db6252a3937a85f3da" +dependencies = [ + "bincode", + "cfg-if 0.1.10", + "region", + "serde", + "serde_bytes", + "wasmer-compiler", + "wasmer-engine", + "wasmer-types", + "wasmer-vm", + "winapi", +] + +[[package]] +name = "wasmer-engine-native" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bb4083a6c69f2cd4b000b82a80717f37c6cc2e536aee3a8ffe9af3edc276a8b" +dependencies = [ + "bincode", + "cfg-if 0.1.10", + "leb128", + "libloading 0.6.7", + "serde", + "tempfile", + "tracing", + "wasmer-compiler", + "wasmer-engine", + "wasmer-object", + "wasmer-types", + "wasmer-vm", + "which 4.0.2", +] + +[[package]] +name = "wasmer-object" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abf8e0c12b82ff81ebecd30d7e118be5fec871d6de885a90eeb105df0a769a7b" +dependencies = [ + "object 0.22.0", + "thiserror", + "wasmer-compiler", + "wasmer-types", +] + [[package]] name = "wasmer-runtime-core-near" version = "0.17.1" @@ -2421,8 +3163,8 @@ dependencies = [ "serde_bytes", "serde_derive", "smallvec", - "target-lexicon", - "wasmparser", + "target-lexicon 0.10.0", + "wasmparser 0.51.4", "winapi", ] @@ -2459,12 +3201,236 @@ dependencies = [ "wasmer-runtime-core-near", ] +[[package]] +name = "wasmer-types" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f4ac28c2951cd792c18332f03da523ed06b170f5cf6bb5b1bdd7e36c2a8218" +dependencies = [ + "cranelift-entity 0.68.0", + "serde", + "thiserror", +] + +[[package]] +name = "wasmer-vm" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7635ba0b6d2fd325f588d69a950ad9fa04dddbf6ad08b6b2a183146319bf6ae" +dependencies = [ + "backtrace", + "cc", + "cfg-if 0.1.10", + "indexmap", + "libc", + "memoffset 0.6.1", + "more-asserts", + "region", + "serde", + "thiserror", + "wasmer-types", + "winapi", +] + [[package]] name = "wasmparser" version = "0.51.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aeb1956b19469d1c5e63e459d29e7b5aa0f558d9f16fcef09736f8a265e6c10a" +[[package]] +name = "wasmparser" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32fddd575d477c6e9702484139cf9f23dcd554b06d185ed0f56c857dd3a47aa6" + +[[package]] +name = "wasmparser" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a950e6a618f62147fd514ff445b2a0b53120d382751960797f85f058c7eda9b9" + +[[package]] +name = "wasmparser" +version = "0.65.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc2fe6350834b4e528ba0901e7aa405d78b89dc1fa3145359eb4de0e323fcf" + +[[package]] +name = "wasmtime" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373b87ebd6721f4121e28eeaaa41943548c48bcca04ac9bb063004207e5e7d70" +dependencies = [ + "anyhow", + "backtrace", + "bincode", + "cfg-if 0.1.10", + "lazy_static", + "libc", + "log", + "region", + "rustc-demangle", + "serde", + "smallvec", + "target-lexicon 0.11.2", + "wasmparser 0.59.0", + "wasmtime-environ", + "wasmtime-jit", + "wasmtime-profiling", + "wasmtime-runtime", + "winapi", +] + +[[package]] +name = "wasmtime-cranelift" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c01df908e54d40bed80326ade122825d464888991beafd950d186f1be309c2" +dependencies = [ + "cranelift-codegen 0.67.0", + "cranelift-entity 0.67.0", + "cranelift-frontend 0.67.0", + "cranelift-wasm", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-debug" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28962772f96fadb79dc7be5ade135ca55d2b0017a012f4869e2476a03abbe733" +dependencies = [ + "anyhow", + "gimli 0.21.0", + "more-asserts", + "object 0.21.1", + "target-lexicon 0.11.2", + "thiserror", + "wasmparser 0.59.0", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-environ" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c0d7401bf253b7b1f426afd70d285bb23ea9a1c7605d6af788c95db5084edf5" +dependencies = [ + "anyhow", + "cfg-if 0.1.10", + "cranelift-codegen 0.67.0", + "cranelift-entity 0.67.0", + "cranelift-wasm", + "gimli 0.21.0", + "indexmap", + "log", + "more-asserts", + "serde", + "thiserror", + "wasmparser 0.59.0", +] + +[[package]] +name = "wasmtime-jit" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c838a108318e7c5a2201addb3d3b27a6ef3d142f0eb0addc815b9c2541e5db5" +dependencies = [ + "anyhow", + "cfg-if 0.1.10", + "cranelift-codegen 0.67.0", + "cranelift-entity 0.67.0", + "cranelift-frontend 0.67.0", + "cranelift-native", + "cranelift-wasm", + "gimli 0.21.0", + "log", + "more-asserts", + "object 0.21.1", + "region", + "serde", + "target-lexicon 0.11.2", + "thiserror", + "wasmparser 0.59.0", + "wasmtime-cranelift", + "wasmtime-debug", + "wasmtime-environ", + "wasmtime-obj", + "wasmtime-profiling", + "wasmtime-runtime", + "winapi", +] + +[[package]] +name = "wasmtime-obj" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc8422b0acce519b74c3ae5db59167c611ea92220e5c334ad406e977277e0f23" +dependencies = [ + "anyhow", + "more-asserts", + "object 0.21.1", + "target-lexicon 0.11.2", + "wasmtime-debug", + "wasmtime-environ", +] + +[[package]] +name = "wasmtime-profiling" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33f2689bf523f843555e57e24d59abf0c5013007366b866081d73a15e510b4b2" +dependencies = [ + "anyhow", + "cfg-if 0.1.10", + "lazy_static", + "libc", + "serde", + "target-lexicon 0.11.2", + "wasmtime-environ", + "wasmtime-runtime", +] + +[[package]] +name = "wasmtime-runtime" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7353f5e79390048128e44b5ceda7255723b2066de4026df9a168b0b2593df71" +dependencies = [ + "backtrace", + "cc", + "cfg-if 0.1.10", + "indexmap", + "lazy_static", + "libc", + "log", + "memoffset 0.5.6", + "more-asserts", + "region", + "thiserror", + "wasmtime-environ", + "winapi", +] + +[[package]] +name = "wast" +version = "35.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db5ae96da18bb5926341516fd409b5a8ce4e4714da7f0a1063d3b20ac9f9a1e1" +dependencies = [ + "leb128", +] + +[[package]] +name = "wat" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0fa059022c5dabe129f02b429d67086400deb8277f89c975555dacc1dadbcc" +dependencies = [ + "wast", +] + [[package]] name = "wee_alloc" version = "0.4.5" @@ -2486,6 +3452,16 @@ dependencies = [ "libc", ] +[[package]] +name = "which" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87c14ef7e1b8b8ecfc75d5eca37949410046e66f15d185c01d70824f1f8111ef" +dependencies = [ + "libc", + "thiserror", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index bdfe63c..04f27b8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,8 +5,8 @@ authors = ["Near Inc "] edition = "2018" [dev-dependencies] -near-sdk = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } -near-sdk-sim = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } +near-sdk = { git = "https://github.com/near/near-sdk-rs.git", rev="249dacdcd3fd34bc00f0895a275f33f05cd910c1" } +near-sdk-sim = { git = "https://github.com/near/near-sdk-rs.git", rev="249dacdcd3fd34bc00f0895a275f33f05cd910c1" } # remember to include a line for each contract fungible-token = { path = "./ft" } diff --git a/ft/Cargo.toml b/ft/Cargo.toml index d9970d4..00f49f6 100644 --- a/ft/Cargo.toml +++ b/ft/Cargo.toml @@ -8,5 +8,5 @@ edition = "2018" crate-type = ["cdylib", "rlib"] [dependencies] -near-sdk = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } -near-contract-standards = { git = "https://github.com/near/near-sdk-rs.git", commit="330d161b68ba80280fdbc02facd7f0744bd36d48" } +near-sdk = { git = "https://github.com/near/near-sdk-rs.git", rev="249dacdcd3fd34bc00f0895a275f33f05cd910c1" } +near-contract-standards = { git = "https://github.com/near/near-sdk-rs.git", rev="249dacdcd3fd34bc00f0895a275f33f05cd910c1" } diff --git a/res/defi.wasm b/res/defi.wasm index 00bb98dae6185996c56c0516fd33b0b7608d0cba..52fa5293f842ff32af1182c89ebd0e72c7d37612 100755 GIT binary patch delta 18182 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 delta 17832 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 OiD8)SwKON=0{$OHLPr$< diff --git a/res/fungible_token.wasm b/res/fungible_token.wasm index 67dff531fa732bdc46ffbeca0abedef8b54f6127..92dff1a77baeb7a59b2847666b9f97bbf0281021 100755 GIT binary patch delta 40020 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 "res/fungible_token.wasm", + DEFI_WASM_BYTES => "res/defi.wasm", +} + +const FT_ID: &str = "ft"; +const DEFI_ID: &str = "defi"; + +// Register the given `user` with FT contract +pub fn register_user(user: &near_sdk_sim::UserAccount) { + user.call( + FT_ID.to_string(), + "storage_deposit", + &json!({ + "account_id": user.valid_account_id() + }) + .to_string() + .into_bytes(), + near_sdk_sim::DEFAULT_GAS / 2, + near_sdk::env::storage_byte_cost() * 125, // attached deposit + ) + .assert_success(); +} + +pub fn init_no_macros(initial_balance: u128) -> (UserAccount, UserAccount, UserAccount) { + let root = init_simulator(None); + + let ft = root.deploy(&FT_WASM_BYTES, FT_ID.into(), STORAGE_AMOUNT); + + ft.call( + FT_ID.into(), + "new_default_meta", + &json!({ + "owner_id": root.valid_account_id(), + "total_supply": U128::from(initial_balance), + }) + .to_string() + .into_bytes(), + DEFAULT_GAS / 2, + 0, // attached deposit + ) + .assert_success(); + + let alice = root.create_user("alice".to_string(), to_yocto("100")); + register_user(&alice); + + (root, ft, alice) +} + +pub fn init_with_macros( + initial_balance: u128, +) -> (UserAccount, ContractAccount, ContractAccount, UserAccount) { + let root = init_simulator(None); + // uses default values for deposit and gas + let ft = deploy!( + // Contract Proxy + contract: FtContract, + // Contract account id + contract_id: FT_ID, + // Bytes of contract + bytes: &FT_WASM_BYTES, + // User deploying the contract, + signer_account: root, + // init method + init_method: new_default_meta( + root.valid_account_id(), + initial_balance.into() + ) + ); + let alice = root.create_user("alice".to_string(), to_yocto("100")); + register_user(&alice); + + let defi = deploy!( + contract: DeFiContract, + contract_id: DEFI_ID, + bytes: &DEFI_WASM_BYTES, + signer_account: root, + init_method: new( + ft.valid_account_id() + ) + ); + + (root, ft, defi, alice) +} diff --git a/tests/general.rs b/tests/sim/with_macros.rs similarity index 61% rename from tests/general.rs rename to tests/sim/with_macros.rs index 3280554..8f8ae49 100644 --- a/tests/general.rs +++ b/tests/sim/with_macros.rs @@ -1,70 +1,8 @@ -use std::convert::TryInto; - -use defi::*; -/// Import the generated proxy contract -use fungible_token::ContractContract as FtContract; - +use near_sdk::json_types::U128; use near_sdk::serde_json::json; -use near_sdk::{env, json_types::U128}; -use near_sdk_sim::{ - call, deploy, init_simulator, to_yocto, view, ContractAccount, UserAccount, DEFAULT_GAS, -}; - -// Load in contract bytes at runtime -near_sdk_sim::lazy_static_include::lazy_static_include_bytes! { - TOKEN_WASM_BYTES => "res/fungible_token.wasm", - DEFI_WASM_BYTES => "res/defi.wasm", -} - -const FT_ID: &str = "ft"; -const DEFI_ID: &str = "defi"; - -fn init( - initial_balance: u128, -) -> (UserAccount, ContractAccount, ContractAccount, UserAccount) { - let root = init_simulator(None); - // uses default values for deposit and gas - let ft = deploy!( - // Contract Proxy - contract: FtContract, - // Contract account id - contract_id: FT_ID, - // Bytes of contract - bytes: &TOKEN_WASM_BYTES, - // User deploying the contract, - signer_account: root, - // init method - init_method: new_default_meta( - root.account_id().try_into().unwrap(), - initial_balance.into() - ) - ); - let alice = root.create_user("alice".to_string(), to_yocto("100")); - register_user(&ft, &alice); - - let defi = deploy!( - contract: DeFiContract, - contract_id: DEFI_ID, - bytes: &DEFI_WASM_BYTES, - signer_account: root, - init_method: new( - FT_ID.try_into().unwrap() - ) - ); - - (root, ft, defi, alice) -} +use near_sdk_sim::{call, to_yocto, transaction::ExecutionStatus, view, DEFAULT_GAS}; -// For given `contract` which uses the Account Storage standard, -// register the given `user` -fn register_user(contract: &ContractAccount, user: &UserAccount) { - call!( - user, - contract.storage_deposit(Some(user.account_id().try_into().unwrap()), None), - deposit = env::storage_byte_cost() * 125 - ) - .assert_success(); -} +use crate::utils::{init_with_macros as init, register_user}; #[test] fn simulate_total_supply() { @@ -86,15 +24,13 @@ fn simulate_simple_transfer() { // Uses default gas amount, `near_sdk_sim::DEFAULT_GAS` call!( root, - ft.ft_transfer(alice.account_id().try_into().unwrap(), transfer_amount.into(), None), + ft.ft_transfer(alice.valid_account_id(), transfer_amount.into(), None), deposit = 1 ) .assert_success(); - let root_balance: U128 = - view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); - let alice_balance: U128 = - view!(ft.ft_balance_of(alice.account_id().try_into().unwrap())).unwrap_json(); + let root_balance: U128 = view!(ft.ft_balance_of(root.valid_account_id())).unwrap_json(); + let alice_balance: U128 = view!(ft.ft_balance_of(alice.valid_account_id())).unwrap_json(); assert_eq!(initial_balance - transfer_amount, root_balance.0); assert_eq!(transfer_amount, alice_balance.0); } @@ -134,7 +70,7 @@ fn simulate_close_account_force_non_empty_balance() { let outcome = call!(root, ft.storage_unregister(Some(true)), deposit = 1); assert_eq!( outcome.logs()[0], - format!("Closed @{} with {}", root.account_id(), initial_balance) + format!("Closed @{} with {}", root.valid_account_id(), initial_balance) ); outcome.assert_success(); let result: bool = outcome.unwrap_json(); @@ -152,15 +88,15 @@ fn simulate_transfer_call_with_burned_amount() { let (root, ft, defi, _alice) = init(initial_balance); // defi contract must be registered as a FT account - register_user(&ft, &defi.user_account); + register_user(&defi.user_account); // root invests in defi by calling `ft_transfer_call` let outcome = root - .create_transaction(FT_ID.to_string()) + .create_transaction(ft.account_id()) .function_call( "ft_transfer_call".to_string(), json!({ - "receiver_id": DEFI_ID.to_string(), + "receiver_id": defi.valid_account_id(), "amount": transfer_amount.to_string(), "msg": "10", }) @@ -183,7 +119,7 @@ fn simulate_transfer_call_with_burned_amount() { assert_eq!( outcome.logs()[1], - format!("Closed @{} with {}", root.account_id(), initial_balance - transfer_amount) + format!("Closed @{} with {}", root.valid_account_id(), initial_balance - transfer_amount) ); let result: bool = outcome.unwrap_json(); @@ -192,7 +128,10 @@ fn simulate_transfer_call_with_burned_amount() { let callback_outcome = outcome.get_receipt_results().remove(1).unwrap(); assert_eq!(callback_outcome.logs()[0], "The account of the sender was deleted"); - assert_eq!(callback_outcome.logs()[1], format!("Account @{} burned {}", root.account_id(), 10)); + assert_eq!( + callback_outcome.logs()[1], + format!("Account @{} burned {}", root.valid_account_id(), 10) + ); let used_amount: U128 = callback_outcome.unwrap_json(); // Sender deleted the account. Even though the returned amount was 10, it was not refunded back @@ -203,7 +142,7 @@ fn simulate_transfer_call_with_burned_amount() { assert_eq!(total_supply.0, transfer_amount - 10); - let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + let defi_balance: U128 = view!(ft.ft_balance_of(defi.valid_account_id())).unwrap_json(); assert_eq!(defi_balance.0, transfer_amount - 10); } @@ -214,13 +153,13 @@ fn simulate_transfer_call_with_immediate_return_and_no_refund() { let (root, ft, defi, _alice) = init(initial_balance); // defi contract must be registered as a FT account - register_user(&ft, &defi.user_account); + register_user(&defi.user_account); // root invests in defi by calling `ft_transfer_call` call!( root, ft.ft_transfer_call( - DEFI_ID.try_into().unwrap(), + defi.valid_account_id(), transfer_amount.into(), None, "take-my-money".into() @@ -229,9 +168,8 @@ fn simulate_transfer_call_with_immediate_return_and_no_refund() { ) .assert_success(); - let root_balance: U128 = - view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); - let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + let root_balance: U128 = view!(ft.ft_balance_of(root.valid_account_id())).unwrap_json(); + let defi_balance: U128 = view!(ft.ft_balance_of(defi.valid_account_id())).unwrap_json(); assert_eq!(initial_balance - transfer_amount, root_balance.0); assert_eq!(transfer_amount, defi_balance.0); } @@ -240,13 +178,13 @@ fn simulate_transfer_call_with_immediate_return_and_no_refund() { fn simulate_transfer_call_when_called_contract_not_registered_with_ft() { let transfer_amount = to_yocto("100"); let initial_balance = to_yocto("1000"); - let (root, ft, _defi, _alice) = init(initial_balance); + let (root, ft, defi, _alice) = init(initial_balance); // call fails because DEFI contract is not registered as FT user call!( root, ft.ft_transfer_call( - DEFI_ID.try_into().unwrap(), + defi.valid_account_id(), transfer_amount.into(), None, "take-my-money".into() @@ -255,9 +193,8 @@ fn simulate_transfer_call_when_called_contract_not_registered_with_ft() { ); // balances remain unchanged - let root_balance: U128 = - view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); - let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + let root_balance: U128 = view!(ft.ft_balance_of(root.valid_account_id())).unwrap_json(); + let defi_balance: U128 = view!(ft.ft_balance_of(defi.valid_account_id())).unwrap_json(); assert_eq!(initial_balance, root_balance.0); assert_eq!(0, defi_balance.0); } @@ -269,12 +206,12 @@ fn simulate_transfer_call_with_promise_and_refund() { let initial_balance = to_yocto("1000"); let (root, ft, defi, _alice) = init(initial_balance); - register_user(&ft, &defi.user_account); + register_user(&defi.user_account); call!( root, ft.ft_transfer_call( - DEFI_ID.try_into().unwrap(), + defi.valid_account_id(), transfer_amount.into(), None, refund_amount.to_string() @@ -282,9 +219,8 @@ fn simulate_transfer_call_with_promise_and_refund() { deposit = 1 ); - let root_balance: U128 = - view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); - let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + let root_balance: U128 = view!(ft.ft_balance_of(root.valid_account_id())).unwrap_json(); + let defi_balance: U128 = view!(ft.ft_balance_of(defi.valid_account_id())).unwrap_json(); assert_eq!(initial_balance - transfer_amount + refund_amount, root_balance.0); assert_eq!(transfer_amount - refund_amount, defi_balance.0); } @@ -296,13 +232,13 @@ fn simulate_transfer_call_promise_panics_for_a_full_refund() { let (root, ft, defi, _alice) = init(initial_balance); // defi contract must be registered as a FT account - register_user(&ft, &defi.user_account); + register_user(&defi.user_account); // root invests in defi by calling `ft_transfer_call` let res = call!( root, ft.ft_transfer_call( - DEFI_ID.try_into().unwrap(), + defi.valid_account_id(), transfer_amount.into(), None, "no parsey as integer big panic oh no".to_string() @@ -311,12 +247,18 @@ fn simulate_transfer_call_promise_panics_for_a_full_refund() { ); assert!(res.is_ok()); - // uncomment to see failure message from defi::value_please - // println!("{:#?}", res.promise_results()); + assert_eq!(res.promise_errors().len(), 1); + + if let ExecutionStatus::Failure(execution_error) = + &res.promise_errors().remove(0).unwrap().outcome().status + { + assert!(execution_error.to_string().contains("ParseIntError")); + } else { + unreachable!(); + } - let root_balance: U128 = - view!(ft.ft_balance_of(root.account_id().try_into().unwrap())).unwrap_json(); - let defi_balance: U128 = view!(ft.ft_balance_of(DEFI_ID.try_into().unwrap())).unwrap_json(); + let root_balance: U128 = view!(ft.ft_balance_of(root.valid_account_id())).unwrap_json(); + let defi_balance: U128 = view!(ft.ft_balance_of(defi.valid_account_id())).unwrap_json(); assert_eq!(initial_balance, root_balance.0); assert_eq!(0, defi_balance.0); } From f860259fcc94978568958d31f39c6f075395d186 Mon Sep 17 00:00:00 2001 From: Chad Ostrowski <221614+chadoh@users.noreply.github.com> Date: Mon, 15 Mar 2021 14:58:00 -0400 Subject: [PATCH 6/9] add .gitattributes file to suppress Cargo.lock diffs --- .gitattributes | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitattributes b/.gitattributes index a030d66..383338e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1 @@ -package-lock.json linguist-generated=true -diff -yarn.lock linguist-generated=true -diff +Cargo.lock -diff From 1f445903650e7d156ac82f77862c6619e11b87e4 Mon Sep 17 00:00:00 2001 From: Chad Ostrowski <221614+chadoh@users.noreply.github.com> Date: Mon, 15 Mar 2021 15:07:32 -0400 Subject: [PATCH 7/9] fix doc structure description in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ab37c53..79c6b32 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ To build run: As with many Rust libraries and contracts, there are tests in the main fungible token implementation at `ft/src/lib.rs`. -Additionally, this project has [simulation] tests in `tests/general.rs`. Simulation tests allow testing cross-contract calls, which is crucial to ensuring that the `ft_transfer_call` function works properly. These simulation tests are the reason this project has the file structure it does. Note that the root project has a `Cargo.toml` which sets it up as a workspace. `ft` and `test-contract-defi` are both small & focused contract projects, the latter only existing for simulation tests. The root project imports `near-sdk-sim` and tests interaction between these contracts. +Additionally, this project has [simulation] tests in `tests/sim`. Simulation tests allow testing cross-contract calls, which is crucial to ensuring that the `ft_transfer_call` function works properly. These simulation tests are the reason this project has the file structure it does. Note that the root project has a `Cargo.toml` which sets it up as a workspace. `ft` and `test-contract-defi` are both small & focused contract projects, the latter only existing for simulation tests. The root project imports `near-sdk-sim` and tests interaction between these contracts. You can run all these tests with one command: From b2922e597609d91ac375b559cc9ad7c25a879196 Mon Sep 17 00:00:00 2001 From: Chad Ostrowski <221614+chadoh@users.noreply.github.com> Date: Mon, 15 Mar 2021 15:34:13 -0400 Subject: [PATCH 8/9] add Contributing section to README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 79c6b32..19ec5d8 100644 --- a/README.md +++ b/README.md @@ -42,3 +42,7 @@ If you want to run only simulation tests, you can use `cargo test simulation`, s [near-contract-standards] is currently Rust-only. We strongly suggest using this library to create your own Fungible Token contract to ensure it works as expected. Someday NEAR core or community contributors may provide a similar library for AssemblyScript, at which point this example will be updated to include both a Rust and AssemblyScript version. + +## Contributing + +When making changes to the files in `ft` or `test-contract-defi`, remember to use `./build.sh` to compile all contracts and copy the output to the `res` folder. If you forget this, **the simulation tests will not use the latest versions**. From 056016bfa939599c4a795ca3f15544c37dd16b25 Mon Sep 17 00:00:00 2001 From: Chad Ostrowski <221614+chadoh@users.noreply.github.com> Date: Tue, 16 Mar 2021 20:03:53 -0400 Subject: [PATCH 9/9] fix outdated @nearprotocol.com email address --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 04f27b8..78917bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "fungible-token-wrapper" version = "0.0.1" -authors = ["Near Inc "] +authors = ["Near Inc "] edition = "2018" [dev-dependencies]