From 61c7181476d6baa0671c9c50cb8ab313f287c83d Mon Sep 17 00:00:00 2001 From: thisyahlen <104053934+thisyahlen-deriv@users.noreply.github.com> Date: Wed, 13 Sep 2023 11:51:15 +0800 Subject: [PATCH 01/12] Thisyahlen/wall 1744/wallet gradient background (#9926) * chore: add gradient background for wallet * chore: add gradient background for wallet * chore: add gradient to wallet header card * fix: mobile demo --- .../WalletGradientBackground.scss | 1126 +++++++++++++++++ .../WalletGradientBackground.tsx | 28 + .../WalletGradientBackground/index.ts | 1 + .../WalletListCard/WalletListCard.tsx | 9 +- .../WalletListCardIcon.scss | 6 - 5 files changed, 1163 insertions(+), 7 deletions(-) create mode 100644 packages/wallets/src/components/WalletGradientBackground/WalletGradientBackground.scss create mode 100644 packages/wallets/src/components/WalletGradientBackground/WalletGradientBackground.tsx create mode 100644 packages/wallets/src/components/WalletGradientBackground/index.ts diff --git a/packages/wallets/src/components/WalletGradientBackground/WalletGradientBackground.scss b/packages/wallets/src/components/WalletGradientBackground/WalletGradientBackground.scss new file mode 100644 index 000000000000..d7a7a53ca61e --- /dev/null +++ b/packages/wallets/src/components/WalletGradientBackground/WalletGradientBackground.scss @@ -0,0 +1,1126 @@ +.wallets-gradient { + &--USD { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(244, 67, 54, 0.24) 0%, + rgba(40, 57, 145, 0.48) 100% + ); + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(244, 67, 54, 0.24) 0%, + rgba(40, 57, 145, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(244, 67, 54, 0.4) 0%, + rgba(244, 67, 54, 0.16) 50.52%, + rgba(40, 57, 145, 0.56) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(244, 67, 54, 0.24) 0%, + rgba(40, 57, 145, 0.48) 100% + ); + } + } + } + + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(244, 67, 54, 0.24) 0%, + rgba(40, 57, 145, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(244, 67, 54, 0.4) 0%, + rgba(244, 67, 54, 0.16) 50.52%, + rgba(40, 57, 145, 0.56) 100% + ) + #151717; + border-radius: 8px; + } + } + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(244, 67, 54, 0.4) 0%, + rgba(244, 67, 54, 0.16) 50.52%, + rgba(40, 57, 145, 0.56) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(244, 67, 54, 0.24) 0%, + rgba(40, 57, 145, 0.48) 100% + ); + } + } + } + } + &--AUD { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(13, 180, 61, 0.24) 0%, + rgba(255, 205, 0, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(13, 180, 61, 0.24) 0%, + rgba(255, 205, 0, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(13, 180, 61, 0.4) 0%, + rgba(13, 180, 61, 0.16) 50.52%, + rgba(255, 205, 0, 0.56) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(13, 180, 61, 0.4) 0%, + rgba(13, 180, 61, 0.16) 50.52%, + rgba(255, 205, 0, 0.56) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(13, 180, 61, 0.24) 0%, + rgba(255, 205, 0, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(13, 180, 61, 0.24) 0%, + rgba(255, 205, 0, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(13, 180, 61, 0.4) 0%, + rgba(13, 180, 61, 0.16) 50.52%, + rgba(255, 205, 0, 0.56) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(13, 180, 61, 0.4) 0%, + rgba(13, 180, 61, 0.16) 50.52%, + rgba(255, 205, 0, 0.56) 100% + ) + #151717; + } + } + } + } + &--EUR { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.24) 0%, + rgba(248, 209, 46, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.24) 0%, + rgba(248, 209, 46, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.4) 0%, + rgba(40, 57, 145, 0.16) 50.52%, + rgba(248, 209, 46, 0.56) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.4) 0%, + rgba(40, 57, 145, 0.16) 50.52%, + rgba(248, 209, 46, 0.56) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.24) 0%, + rgba(248, 209, 46, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.24) 0%, + rgba(248, 209, 46, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.4) 0%, + rgba(40, 57, 145, 0.16) 50.52%, + rgba(248, 209, 46, 0.56) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.4) 0%, + rgba(40, 57, 145, 0.16) 50.52%, + rgba(248, 209, 46, 0.56) 100% + ) + #151717; + } + } + } + } + &--GBP { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.24) 0%, + rgba(40, 57, 145, 0.24) 0.01%, + rgba(244, 67, 54, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.24) 0%, + rgba(40, 57, 145, 0.24) 0.01%, + rgba(244, 67, 54, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.4) 0%, + rgba(40, 57, 145, 0.16) 50.52%, + rgba(244, 67, 54, 0.56) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.4) 0%, + rgba(40, 57, 145, 0.16) 50.52%, + rgba(244, 67, 54, 0.56) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.24) 0%, + rgba(40, 57, 145, 0.24) 0.01%, + rgba(244, 67, 54, 0.48) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.24) 0%, + rgba(40, 57, 145, 0.24) 0.01%, + rgba(244, 67, 54, 0.48) 100% + ) + #151717; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.4) 0%, + rgba(40, 57, 145, 0.16) 50.52%, + rgba(244, 67, 54, 0.56) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(40, 57, 145, 0.4) 0%, + rgba(40, 57, 145, 0.16) 50.52%, + rgba(244, 67, 54, 0.56) 100% + ) + #151717; + } + } + } + } + &--BTC { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(247, 147, 27, 0.24) 0%, + rgba(247, 199, 27, 0.477) 99.99% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(247, 147, 27, 0.24) 0%, + rgba(247, 199, 27, 0.477) 99.99%, + rgba(255, 100, 68, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(247, 147, 27, 0.4) 0%, + rgba(247, 147, 27, 0.16) 50.52%, + rgba(247, 199, 27, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(247, 147, 27, 0.4) 0%, + rgba(247, 147, 27, 0.16) 50.52%, + rgba(247, 199, 27, 0.4) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(247, 147, 27, 0.24) 0%, + rgba(247, 199, 27, 0.477) 99.99% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(247, 147, 27, 0.24) 0%, + rgba(247, 199, 27, 0.477) 99.99%, + rgba(255, 100, 68, 0.48) 100% + ) + #151717; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(247, 147, 27, 0.4) 0%, + rgba(247, 147, 27, 0.16) 50.52%, + rgba(247, 199, 27, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(247, 147, 27, 0.4) 0%, + rgba(247, 147, 27, 0.16) 50.52%, + rgba(247, 199, 27, 0.4) 100% + ) + #151717; + } + } + } + } + &--ETH { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(82, 86, 127, 0.24) 0%, + rgba(130, 140, 173, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(82, 86, 127, 0.24) 0%, + rgba(130, 140, 173, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(82, 86, 127, 0.4) 0%, + rgba(82, 86, 127, 0.16) 50.52%, + rgba(130, 140, 173, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(82, 86, 127, 0.4) 0%, + rgba(82, 86, 127, 0.16) 50.52%, + rgba(130, 140, 173, 0.4) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(82, 86, 127, 0.24) 0%, + rgba(130, 140, 173, 0.48) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(82, 86, 127, 0.24) 0%, + rgba(130, 140, 173, 0.48) 100% + ) + #151717; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(82, 86, 127, 0.24) 0%, + rgba(130, 140, 173, 0.48) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(82, 86, 127, 0.24) 0%, + rgba(130, 140, 173, 0.48) 100% + ) + #151717; + } + } + } + } + &--LTC { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(165, 168, 169, 0.24) 0%, + rgba(193, 204, 207, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(165, 168, 169, 0.4) 0%, + rgba(165, 168, 169, 0.16) 50.52%, + rgba(193, 204, 207, 0.4) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(165, 168, 169, 0.4) 0%, + rgba(165, 168, 169, 0.16) 50.52%, + rgba(193, 204, 207, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(165, 168, 169, 0.4) 0%, + rgba(165, 168, 169, 0.16) 50.52%, + rgba(193, 204, 207, 0.4) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(165, 168, 169, 0.24) 0%, + rgba(193, 204, 207, 0.48) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(165, 168, 169, 0.24) 0%, + rgba(193, 204, 207, 0.48) 100% + ) + #151717; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(165, 168, 169, 0.4) 0%, + rgba(165, 168, 169, 0.16) 50.52%, + rgba(193, 204, 207, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(165, 168, 169, 0.4) 0%, + rgba(165, 168, 169, 0.16) 50.52%, + rgba(193, 204, 207, 0.4) 100% + ) + #151717; + } + } + } + } + &--UST { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #151717; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #151717; + } + } + } + } + &--USDT { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #151717; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #151717; + } + } + } + } + &--TUSDT { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #151717; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #151717; + } + } + } + } + &--eUSDT { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(0, 147, 147, 0.24) 0%, + rgba(0, 147, 147, 0.48) 100% + ) + #151717; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(0, 147, 147, 0.4) 0%, + rgba(0, 147, 147, 0.16) 50.52%, + rgba(4, 217, 217, 0.4) 100% + ) + #151717; + } + } + } + } + &--USDC { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(39, 117, 202, 0.24) 0%, + rgba(34, 76, 225, 0.48) 100% + ) + #ffffff; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(39, 117, 202, 0.24) 0%, + rgba(34, 76, 225, 0.48) 100% + ) + #151717; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(39, 117, 202, 0.4) 0%, + rgba(39, 117, 202, 0.16) 50.52%, + rgba(34, 76, 225, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(39, 117, 202, 0.4) 0%, + rgba(39, 117, 202, 0.16) 50.52%, + rgba(34, 76, 225, 0.4) 100% + ) + #151717; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(39, 117, 202, 0.24) 0%, + rgba(34, 76, 225, 0.48) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(39, 117, 202, 0.24) 0%, + rgba(34, 76, 225, 0.48) 100% + ) + #151717; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(39, 117, 202, 0.4) 0%, + rgba(39, 117, 202, 0.16) 50.52%, + rgba(34, 76, 225, 0.4) 100% + ) + #ffffff; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(39, 117, 202, 0.4) 0%, + rgba(39, 117, 202, 0.16) 50.52%, + rgba(34, 76, 225, 0.4) 100% + ) + #151717; + } + } + } + } + &--demo { + &-desktop { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(255, 100, 68, 0.24) 0%, + rgba(255, 68, 79, 0.48) 100% + ) + #212329; + border-radius: 8px; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(255, 100, 68, 0.24) 0%, + rgba(255, 68, 79, 0.48) 100% + ) + #fbdddd; + border-radius: 8px; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(255, 100, 68, 0.4) 0%, + rgba(255, 100, 68, 0.16) 50.52%, + rgba(255, 68, 79, 0.4) 100% + ) + #212329; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(255, 100, 68, 0.4) 0%, + rgba(255, 100, 68, 0.16) 50.52%, + rgba(255, 68, 79, 0.4) 100% + ) + #fbdddd; + } + } + } + &-mobile { + &-card { + &-light { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(255, 100, 68, 0.24) 0%, + rgba(255, 68, 79, 0.48) 100% + ) + #212329; + } + &-dark { + background: radial-gradient( + 100% 277.78% at 0% 100%, + rgba(255, 100, 68, 0.24) 0%, + rgba(255, 68, 79, 0.48) 100% + ) + #fbdddd; + } + } + + &-header { + &-light { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(255, 100, 68, 0.4) 0%, + rgba(255, 100, 68, 0.16) 50.52%, + rgba(255, 68, 79, 0.4) 100% + ) + #212329; + } + &-dark { + background: radial-gradient( + 100% 4130.74% at 0% 100%, + rgba(255, 100, 68, 0.4) 0%, + rgba(255, 100, 68, 0.16) 50.52%, + rgba(255, 68, 79, 0.4) 100% + ) + #fbdddd; + } + } + } + } +} diff --git a/packages/wallets/src/components/WalletGradientBackground/WalletGradientBackground.tsx b/packages/wallets/src/components/WalletGradientBackground/WalletGradientBackground.tsx new file mode 100644 index 000000000000..3ee2bac2c7a0 --- /dev/null +++ b/packages/wallets/src/components/WalletGradientBackground/WalletGradientBackground.tsx @@ -0,0 +1,28 @@ +import React from 'react'; +import './WalletGradientBackground.scss'; + +type WalletGradientBackground = { + is_demo: boolean; + currency: string; + type?: 'card' | 'header'; + theme?: 'dark' | 'light'; + device?: 'desktop' | 'mobile'; + children: React.ReactNode; +}; + +const WalletGradientBackground: React.FC = ({ + is_demo, + currency, + theme = 'light', + type = 'card', + device = 'desktop', + children, +}) => { + const className = is_demo + ? `wallets-gradient--demo-${device}-${type}-${theme}` + : `wallets-gradient--${currency}-${device}-${type}-${theme}`; + + return
{children}
; +}; + +export default WalletGradientBackground; diff --git a/packages/wallets/src/components/WalletGradientBackground/index.ts b/packages/wallets/src/components/WalletGradientBackground/index.ts new file mode 100644 index 000000000000..ad03b517aae2 --- /dev/null +++ b/packages/wallets/src/components/WalletGradientBackground/index.ts @@ -0,0 +1 @@ +export { default as WalletGradientBackground } from './WalletGradientBackground'; diff --git a/packages/wallets/src/components/WalletListCard/WalletListCard.tsx b/packages/wallets/src/components/WalletListCard/WalletListCard.tsx index 2c70de9d6fe9..9757a891f1e0 100644 --- a/packages/wallets/src/components/WalletListCard/WalletListCard.tsx +++ b/packages/wallets/src/components/WalletListCard/WalletListCard.tsx @@ -1,6 +1,7 @@ import React from 'react'; import { useWalletAccountsList } from '@deriv/api'; import IcDropdown from '../../public/images/ic-dropdown.svg'; +import WalletGradientBackground from '../WalletGradientBackground/WalletGradientBackground'; import WalletListCardIBalance from '../WalletListCardIBalance/WalletListCardIBalance'; import WalletListCardIcon from '../WalletListCardIcon/WalletListCardIcon'; import WalletListCardIDetails from '../WalletListCardIDetails/WalletListCardIDetails'; @@ -15,7 +16,13 @@ const WalletListCard: React.FC = ({ account }) => {
- + + +
diff --git a/packages/wallets/src/components/WalletListCardIcon/WalletListCardIcon.scss b/packages/wallets/src/components/WalletListCardIcon/WalletListCardIcon.scss index 211b5324d427..b41d4e52766d 100644 --- a/packages/wallets/src/components/WalletListCardIcon/WalletListCardIcon.scss +++ b/packages/wallets/src/components/WalletListCardIcon/WalletListCardIcon.scss @@ -7,11 +7,5 @@ align-items: center; flex-shrink: 0; border-radius: 4px; - background: linear-gradient( - 90deg, - rgba(131, 58, 180, 1) 0%, - rgba(253, 29, 29, 1) 50%, - rgba(252, 176, 69, 1) 100% - ); } } From 1ea969fbb740c31df39fa3dd5d68aa052670340d Mon Sep 17 00:00:00 2001 From: henry-deriv <118344354+henry-deriv@users.noreply.github.com> Date: Wed, 13 Sep 2023 11:54:05 +0800 Subject: [PATCH 02/12] henry/wall-1655/feat: add more wallets carousel (#9916) * feat: add more wallets carousel * fix: code smells * fix: resolve comments and useAvailableWallets hook --- packages/api/src/hooks/useVerifyEmail.ts | 2 +- packages/wallets/src/AppContent.tsx | 6 +- .../WalletsAddMoreCarousel.scss | 82 +++++++++++++++++++ .../WalletsAddMoreCarousel.tsx | 78 ++++++++++++++++++ .../WalletsAddMoreCarousel/index.ts | 4 + packages/wallets/src/index.tsx | 2 +- 6 files changed, 171 insertions(+), 3 deletions(-) create mode 100644 packages/wallets/src/components/WalletsAddMoreCarousel/WalletsAddMoreCarousel.scss create mode 100644 packages/wallets/src/components/WalletsAddMoreCarousel/WalletsAddMoreCarousel.tsx create mode 100644 packages/wallets/src/components/WalletsAddMoreCarousel/index.ts diff --git a/packages/api/src/hooks/useVerifyEmail.ts b/packages/api/src/hooks/useVerifyEmail.ts index 7fcbfcb6167c..2106b86a056d 100644 --- a/packages/api/src/hooks/useVerifyEmail.ts +++ b/packages/api/src/hooks/useVerifyEmail.ts @@ -6,7 +6,7 @@ type TPayload = Parameters>['mutate /** A custom hook for verifying email address */ const useVerifyEmail = () => { const { mutate: _mutate, ...rest } = useRequest('verify_email'); - + const mutate = useCallback((payload: TPayload) => _mutate({ payload }), [_mutate]); return { diff --git a/packages/wallets/src/AppContent.tsx b/packages/wallets/src/AppContent.tsx index cdd95286dea1..2d831f53dbeb 100644 --- a/packages/wallets/src/AppContent.tsx +++ b/packages/wallets/src/AppContent.tsx @@ -1,4 +1,5 @@ import React from 'react'; +import WalletsAddMore from './components/WalletsAddMoreCarousel'; import useDevice from './hooks/useDevice'; import { DesktopWalletsList, WalletsCarousel } from './components'; import './AppContent.scss'; @@ -8,7 +9,10 @@ const AppContent: React.FC = () => { return (
-
{is_mobile ? : }
+
+ {is_mobile ? : } + +
); }; diff --git a/packages/wallets/src/components/WalletsAddMoreCarousel/WalletsAddMoreCarousel.scss b/packages/wallets/src/components/WalletsAddMoreCarousel/WalletsAddMoreCarousel.scss new file mode 100644 index 000000000000..118912635524 --- /dev/null +++ b/packages/wallets/src/components/WalletsAddMoreCarousel/WalletsAddMoreCarousel.scss @@ -0,0 +1,82 @@ +.wallets-add-more { + display: flex; + flex-direction: column; + width: 100%; + padding-top: 2.4rem; + + @media (max-width: 375px) { + padding-top: 0; + gap: 0.8rem; + } + + &__header { + font-size: 3.2rem; + font-weight: 700; + margin-bottom: 1.6rem; + + @media (max-width: 375px) { + font-size: 2.8rem; + padding-left: 1.6rem; + margin-bottom: 0; + } + } + &__carousel { + overflow: hidden; + background-color: #fff; + padding: 3.2rem 0 3.2rem 1.6rem; + border-radius: 0.8rem; + position: relative; + border: 0.1rem solid #d6dadb; + height: 100%; + + @media (max-width: 375px) { + padding: 1.6rem 0 2.4rem 1.6rem; + border-radius: unset; + } + + &-wrapper { + height: 100%; + display: flex; + align-items: center; + justify-content: flex-start; + gap: 2.4rem; + + @media (max-width: 375px) { + gap: 1.6rem; + } + } + + &-btn { + z-index: 1; + position: absolute; + height: 4rem; + width: 4rem; + border-radius: 50%; + cursor: pointer; + top: 45%; + + &--prev { + left: 1.6rem; + } + &--next { + right: 1.6rem; + } + &:disabled { + opacity: 0.3; + display: none; + } + } + } + &__card { + width: 23.2rem; + height: 28.2rem; + border-radius: 1.6rem; + flex-shrink: 0; + border: 0.1rem solid #d6dadb; + + @media (max-width: 375px) { + height: 29.2rem; + width: 19.2rem; + } + } +} diff --git a/packages/wallets/src/components/WalletsAddMoreCarousel/WalletsAddMoreCarousel.tsx b/packages/wallets/src/components/WalletsAddMoreCarousel/WalletsAddMoreCarousel.tsx new file mode 100644 index 000000000000..f8c444785657 --- /dev/null +++ b/packages/wallets/src/components/WalletsAddMoreCarousel/WalletsAddMoreCarousel.tsx @@ -0,0 +1,78 @@ +import React, { useCallback, useEffect, useState } from 'react'; +import useEmblaCarousel, { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel-react'; +import { useAvailableWallets } from '@deriv/api'; +import useDevice from '../../hooks/useDevice'; + +const WalletsAddMoreCarousel = () => { + const { is_mobile } = useDevice(); + const { data } = useAvailableWallets(); + const options: EmblaOptionsType = { + align: 0, + containScroll: 'trimSnaps', + }; + + const [WalletsAddMoreRef, emblaApi] = useEmblaCarousel(options); + const [is_hovered, setIsHovered] = useState(is_mobile); + const [prev_btn_enabled, setPrevBtnEnabled] = useState(false); + const [next_btn_enabled, setNextBtnEnabled] = useState(false); + + const scrollPrev = useCallback(() => emblaApi?.scrollPrev(), [emblaApi]); + const scrollNext = useCallback(() => emblaApi?.scrollNext(), [emblaApi]); + + useEffect(() => { + if (!emblaApi) return; + + const onSelect = (embla_api: EmblaCarouselType) => { + setPrevBtnEnabled(embla_api.canScrollPrev()); + setNextBtnEnabled(embla_api.canScrollNext()); + }; + + onSelect(emblaApi); + emblaApi.on('reInit', onSelect); + emblaApi.reInit({ watchDrag: is_mobile }); + emblaApi.on('select', onSelect); + }, [emblaApi, is_mobile]); + + return ( + +
+

Add more Wallets

+
!is_mobile && setIsHovered(true)} + onMouseLeave={() => !is_mobile && setIsHovered(false)} + > +
+ {data?.map(item => ( +
+ {item.currency} +
+ ))} +
+ {!is_mobile && is_hovered && ( + + + + + )} +
+
+
+ ); +}; + +export default WalletsAddMoreCarousel; diff --git a/packages/wallets/src/components/WalletsAddMoreCarousel/index.ts b/packages/wallets/src/components/WalletsAddMoreCarousel/index.ts new file mode 100644 index 000000000000..8bc14603240d --- /dev/null +++ b/packages/wallets/src/components/WalletsAddMoreCarousel/index.ts @@ -0,0 +1,4 @@ +import WalletsAddMoreCarousel from './WalletsAddMoreCarousel'; +import './WalletsAddMoreCarousel.scss'; + +export default WalletsAddMoreCarousel; diff --git a/packages/wallets/src/index.tsx b/packages/wallets/src/index.tsx index eaf4c353b9dd..d8aa16d9aa96 100644 --- a/packages/wallets/src/index.tsx +++ b/packages/wallets/src/index.tsx @@ -5,7 +5,7 @@ import './index.scss'; const App: React.FC = () => ( - ; + ); From 85cb07563ffb7827dee6fda8a46d329f3c99b697 Mon Sep 17 00:00:00 2001 From: thisyahlen <104053934+thisyahlen-deriv@users.noreply.github.com> Date: Wed, 13 Sep 2023 11:56:04 +0800 Subject: [PATCH 03/12] thisyahlen/chore: add styles to wallet card carousel (#9957) * chore: add styles to wallet card carousel * chore: add styles and buttons * fix: standarize type * chore: rename progressbar * fix: props * fix: split components * chore: empty commit * fix: types * fix: comments * chore: comments * chore: comments * chore: rename description for useDevice * fix: comments * chore: conflicts --- packages/wallets/src/AppContent.tsx | 8 +-- .../components/AccountsList/AccountsList.tsx | 7 ++- .../components/ProgressBar/ProgressBar.scss | 24 +++++++++ .../components/ProgressBar/ProgressBar.tsx | 30 +++++++++++ .../src/components/ProgressBar/index.ts | 1 + .../src/components/WalletCard/WalletCard.scss | 45 ++++++++++++++++ .../src/components/WalletCard/WalletCard.tsx | 34 ++++++++++++ .../src/components/WalletCard/index.ts | 1 + .../WalletListCardIActions.scss | 48 +++++++++++++++++ .../WalletListCardIActions.tsx | 34 ++++++++++-- .../WalletsCarousel/WalletsCarousel.scss | 53 ------------------ .../WalletsCarousel/WalletsCarousel.tsx | 54 +++---------------- .../WalletsCarouselContent.scss | 22 ++++++++ .../WalletsCarouselContent.tsx | 46 ++++++++++++++++ .../WalletsCarouselContent/index.ts | 1 + packages/wallets/src/components/index.ts | 3 ++ packages/wallets/src/hooks/useDevice.tsx | 2 +- 17 files changed, 301 insertions(+), 112 deletions(-) create mode 100644 packages/wallets/src/components/ProgressBar/ProgressBar.scss create mode 100644 packages/wallets/src/components/ProgressBar/ProgressBar.tsx create mode 100644 packages/wallets/src/components/ProgressBar/index.ts create mode 100644 packages/wallets/src/components/WalletCard/WalletCard.scss create mode 100644 packages/wallets/src/components/WalletCard/WalletCard.tsx create mode 100644 packages/wallets/src/components/WalletCard/index.ts delete mode 100644 packages/wallets/src/components/WalletsCarousel/WalletsCarousel.scss create mode 100644 packages/wallets/src/components/WalletsCarouselContent/WalletsCarouselContent.scss create mode 100644 packages/wallets/src/components/WalletsCarouselContent/WalletsCarouselContent.tsx create mode 100644 packages/wallets/src/components/WalletsCarouselContent/index.ts diff --git a/packages/wallets/src/AppContent.tsx b/packages/wallets/src/AppContent.tsx index 2d831f53dbeb..6788d5bd7f0e 100644 --- a/packages/wallets/src/AppContent.tsx +++ b/packages/wallets/src/AppContent.tsx @@ -7,12 +7,12 @@ import './AppContent.scss'; const AppContent: React.FC = () => { const { is_mobile } = useDevice(); + if (is_mobile) return ; + return (
-
- {is_mobile ? : } - -
+
{!is_mobile && }
\ +
); }; diff --git a/packages/wallets/src/components/AccountsList/AccountsList.tsx b/packages/wallets/src/components/AccountsList/AccountsList.tsx index ef9110d97557..84e9c66e4a46 100644 --- a/packages/wallets/src/components/AccountsList/AccountsList.tsx +++ b/packages/wallets/src/components/AccountsList/AccountsList.tsx @@ -1,13 +1,12 @@ import React from 'react'; -import { useWalletAccountsList } from '@deriv/api'; -import './AccountsList.scss'; +import { useActiveWalletAccount } from '@deriv/api'; type TAccountsListProps = { - data: ReturnType['data'][number]; + data: ReturnType['data']; }; const AccountsList = ({ data }: TAccountsListProps) => { - return
{data.loginid}
; + return
{data?.loginid}
; }; export default AccountsList; diff --git a/packages/wallets/src/components/ProgressBar/ProgressBar.scss b/packages/wallets/src/components/ProgressBar/ProgressBar.scss new file mode 100644 index 000000000000..6c0e0ca0efe3 --- /dev/null +++ b/packages/wallets/src/components/ProgressBar/ProgressBar.scss @@ -0,0 +1,24 @@ +.wallets-progress-bar { + display: flex; + justify-content: center; + cursor: pointer; + + &-active { + width: 2.5rem; + height: 0.8rem; + background-color: #ff444f; + border-radius: 1rem; + } + + &-inactive { + width: 0.8rem; + height: 0.8rem; + margin: 0 0.4rem; + border-radius: 50%; + background-color: #c2c2c2; + } + + &-transition { + transition: all 0.24s linear; + } +} diff --git a/packages/wallets/src/components/ProgressBar/ProgressBar.tsx b/packages/wallets/src/components/ProgressBar/ProgressBar.tsx new file mode 100644 index 000000000000..2c3058c6d0ab --- /dev/null +++ b/packages/wallets/src/components/ProgressBar/ProgressBar.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import './ProgressBar.scss'; + +type TProps = { + is_transition?: boolean; + active_index: number; + indexes: Array; + setActiveIndex: React.Dispatch>; +}; + +const ProgressBar: React.FC = ({ is_transition = 'true', active_index, indexes, setActiveIndex }) => { + return ( +
+ {indexes.map(idx => { + const is_active = idx === active_index; + + const bar_classname = is_active ? 'wallets-progress-bar-active' : 'wallets-progress-bar-inactive'; + return ( +
setActiveIndex(idx)} + className={`${bar_classname} ${is_transition ? 'wallets-progress-bar-transition' : ''}`} + /> + ); + })} +
+ ); +}; + +export default ProgressBar; diff --git a/packages/wallets/src/components/ProgressBar/index.ts b/packages/wallets/src/components/ProgressBar/index.ts new file mode 100644 index 000000000000..e072ff53dedd --- /dev/null +++ b/packages/wallets/src/components/ProgressBar/index.ts @@ -0,0 +1 @@ +export { default as ProgressBar } from './ProgressBar'; diff --git a/packages/wallets/src/components/WalletCard/WalletCard.scss b/packages/wallets/src/components/WalletCard/WalletCard.scss new file mode 100644 index 000000000000..66ed1b008dc2 --- /dev/null +++ b/packages/wallets/src/components/WalletCard/WalletCard.scss @@ -0,0 +1,45 @@ +.wallets-card { + display: flex; + flex-direction: column; + align-items: center; + + &__data { + width: 24rem; + height: 14.4rem; + border-radius: 8px; + background-color: rgb(242, 200, 200); + position: relative; + + &__details { + display: flex; + width: 100%; + height: 100%; + padding: 1.6rem; + flex-direction: column; + justify-content: space-between; + align-items: flex-start; + + &-icon { + width: 3.2rem; + height: 3.2rem; + } + + &-balance { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 0.4rem; + } + + &-landing_company { + display: flex; + justify-content: flex-end; + align-items: flex-start; + gap: 0.4rem; + position: absolute; + right: 1.6rem; + top: 1.6rem; + } + } + } +} diff --git a/packages/wallets/src/components/WalletCard/WalletCard.tsx b/packages/wallets/src/components/WalletCard/WalletCard.tsx new file mode 100644 index 000000000000..cf0c6a296d00 --- /dev/null +++ b/packages/wallets/src/components/WalletCard/WalletCard.tsx @@ -0,0 +1,34 @@ +import React from 'react'; +import { useWalletAccountsList } from '@deriv/api'; +import { WalletListCardBadge } from '../WalletListCardBadge'; +import './WalletCard.scss'; + +type TProps = { + account: NonNullable['data']>[number]; +}; + +const WalletCard: React.FC = ({ account }) => { + return ( +
+
+
+
+

{account.currency}

+
+ +
+

{account.currency} Wallet

+

+ {account.display_balance} {account.currency} +

+
+
+ {account?.landing_company_name && } +
+
+
+
+ ); +}; + +export default WalletCard; diff --git a/packages/wallets/src/components/WalletCard/index.ts b/packages/wallets/src/components/WalletCard/index.ts new file mode 100644 index 000000000000..1476484016cd --- /dev/null +++ b/packages/wallets/src/components/WalletCard/index.ts @@ -0,0 +1 @@ +export { default as WalletCard } from './WalletCard'; diff --git a/packages/wallets/src/components/WalletListCardIActions/WalletListCardIActions.scss b/packages/wallets/src/components/WalletListCardIActions/WalletListCardIActions.scss index 6d206c5d8182..8b17828e6601 100644 --- a/packages/wallets/src/components/WalletListCardIActions/WalletListCardIActions.scss +++ b/packages/wallets/src/components/WalletListCardIActions/WalletListCardIActions.scss @@ -16,3 +16,51 @@ border: 1px solid var(--system-light-3-less-prominent-text, #999); } } + +.wallets-mobile-actions { + display: flex; + flex-direction: row; + align-items: center; + cursor: pointer; + min-width: 5.6rem; + + &__container { + display: flex; + padding: 0rem 1.6rem; + justify-content: center; + align-items: center; + gap: 0.8rem; + align-self: stretch; + } + + &-content { + display: flex; + width: 7rem; + flex-direction: column; + align-items: center; + gap: 0.4rem; + + &-icon { + display: flex; + width: 3.5rem; + height: 3.5rem; + padding: 0.8rem; + justify-content: center; + align-items: center; + border-radius: 16px; + border: 1px solid var(--system-light-5-active-background, #d6dadb); + } + + &-text { + color: var(--system-light-1-prominent-text, #333); + text-align: center; + + /* mobile/extra small/XS - regular */ + font-family: 'IBM Plex Sans'; + font-size: 1rem; + font-style: normal; + font-weight: 400; + line-height: 1.2rem; /* 150% */ + } + } +} diff --git a/packages/wallets/src/components/WalletListCardIActions/WalletListCardIActions.tsx b/packages/wallets/src/components/WalletListCardIActions/WalletListCardIActions.tsx index 596dc18b8d86..58ae2bbae038 100644 --- a/packages/wallets/src/components/WalletListCardIActions/WalletListCardIActions.tsx +++ b/packages/wallets/src/components/WalletListCardIActions/WalletListCardIActions.tsx @@ -1,5 +1,6 @@ import React from 'react'; -import { useWalletAccountsList } from '@deriv/api'; +import { useActiveWalletAccount, useWalletAccountsList } from '@deriv/api'; +import useDevice from '../../hooks/useDevice'; import IcCashierAdd from '../../public/images/ic-cashier-deposit.svg'; import IcCashierStatement from '../../public/images/ic-cashier-statement.svg'; import IcCashierTransfer from '../../public/images/ic-cashier-transfer.svg'; @@ -40,14 +41,39 @@ const getWalletHeaderButtons = (is_demo: boolean, handleAction?: () => void) => }; type TProps = { - account: NonNullable['data']>[number]; + account?: NonNullable['data']>[number]; }; const WalletListCardIActions: React.FC = ({ account }) => { - const is_demo = account.is_virtual; + const { is_mobile } = useDevice(); + const { data: active_wallet } = useActiveWalletAccount(); + const is_demo = !!active_wallet?.is_virtual; + + if (is_mobile) + return ( +
+
+ {getWalletHeaderButtons(is_demo).map(button => ( + +
+ +
{button.text}
+
+
+ ))} +
+
+ ); + return (
- {getWalletHeaderButtons(is_demo).map(button => ( + {getWalletHeaderButtons(!!account?.is_virtual).map(button => ( diff --git a/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.scss b/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.scss deleted file mode 100644 index 8efe2e66b088..000000000000 --- a/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.scss +++ /dev/null @@ -1,53 +0,0 @@ -.wallets-carousel { - background-color: #f2f3f4; - width: 100vw; - padding: 2rem; - overflow: hidden; - - &__container { - height: 100%; - display: flex; - align-items: center; - justify-content: flex-start; - gap: 2.4rem; - } -} - -.wallets-card { - width: 100%; - height: 13rem; - background-color: #add8e6; - - &__data { - display: flex; - justify-content: space-between; - width: 100%; - height: 100%; - padding: 1.6rem; - - &__details { - display: flex; - flex-direction: column; - justify-content: space-between; - - &-balance { - display: flex; - flex-direction: column; - gap: 1rem; - - & > h3 { - font-size: 1.6rem; - font-weight: bold; - } - } - } - - &__landing-company { - font-size: 1rem; - font-weight: bold; - padding: 0.5rem; - height: max-content; - border: 1px solid #000000; - } - } -} diff --git a/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.tsx b/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.tsx index 3d2a2e5f912b..784dd90d3061 100644 --- a/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.tsx +++ b/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.tsx @@ -1,52 +1,14 @@ -import React, { useState } from 'react'; -import useEmblaCarousel from 'embla-carousel-react'; -import { useWalletAccountsList } from '@deriv/api'; -import { AccountsList } from '..'; -import './WalletsCarousel.scss'; - -const WalletsCarousel = () => { - const [emblaRef, emblaApi] = useEmblaCarousel({ skipSnaps: true, containScroll: false }); - const [active_index, setActiveIndex] = useState(0); - const { data: wallet_accounts_list } = useWalletAccountsList(); - - React.useEffect(() => { - emblaApi?.scrollTo(active_index); - }, [active_index, emblaApi]); - - React.useEffect(() => { - emblaApi?.on('select', () => { - const scroll_snap_index = emblaApi.selectedScrollSnap(); - setActiveIndex(scroll_snap_index); - }); - }, [emblaApi]); - - if (!wallet_accounts_list.length) return

No wallets found

; +import React from 'react'; +import { useActiveWalletAccount } from '@deriv/api'; +import { AccountsList } from '../AccountsList'; +import { WalletsCarouselContent } from '../WalletsCarouselContent'; +const WalletsCarousel: React.FC = () => { + const { data: active_wallet } = useActiveWalletAccount(); return ( -
-
- {wallet_accounts_list.map(wallet => ( -
-
-
-

{wallet.currency}

-
-

{wallet.currency} Wallet

-

- {wallet.balance} {wallet.currency} -

-
-
-
-

{wallet.landing_company_name}

-
-
-
- ))} -
-
- + +
); }; diff --git a/packages/wallets/src/components/WalletsCarouselContent/WalletsCarouselContent.scss b/packages/wallets/src/components/WalletsCarouselContent/WalletsCarouselContent.scss new file mode 100644 index 000000000000..ec93ed351bb5 --- /dev/null +++ b/packages/wallets/src/components/WalletsCarouselContent/WalletsCarouselContent.scss @@ -0,0 +1,22 @@ +.wallets-carousel-content { + background-color: #f2f3f4; + width: 100vw; + padding: 2rem; + overflow: hidden; + gap: 1.6rem; + + &__container { + height: 100%; + display: flex; + align-items: center; + justify-content: flex-start; + gap: 2.4rem; + } + + &__progress-bar { + display: flex; + align-items: center; + justify-content: center; + padding: 1.6rem; + } +} diff --git a/packages/wallets/src/components/WalletsCarouselContent/WalletsCarouselContent.tsx b/packages/wallets/src/components/WalletsCarouselContent/WalletsCarouselContent.tsx new file mode 100644 index 000000000000..526443f2796c --- /dev/null +++ b/packages/wallets/src/components/WalletsCarouselContent/WalletsCarouselContent.tsx @@ -0,0 +1,46 @@ +import React, { useState } from 'react'; +import useEmblaCarousel from 'embla-carousel-react'; +import { useWalletAccountsList } from '@deriv/api'; +import { ProgressBar } from '../ProgressBar'; +import { WalletCard } from '../WalletCard'; +import { WalletListCardIActions } from '../WalletListCardIActions'; +import './WalletsCarouselContent.scss'; + +const WalletsCarouselContent: React.FC = () => { + const [wallet_embla_ref, emblaApi] = useEmblaCarousel({ skipSnaps: true, containScroll: false }); + const [active_index, setActiveIndex] = useState(0); + const { data: wallet_accounts_list } = useWalletAccountsList(); + + React.useEffect(() => { + emblaApi?.scrollTo(active_index); + }, [active_index, emblaApi]); + + React.useEffect(() => { + emblaApi?.on('select', () => { + const scroll_snap_index = emblaApi.selectedScrollSnap(); + setActiveIndex(scroll_snap_index); + }); + }, [emblaApi]); + const amount_of_steps = Array.from({ length: wallet_accounts_list.length }, (_, idx) => idx + 1); + + return ( +
+
+ {wallet_accounts_list.map(wallet => ( + + ))} +
+
+ +
+ +
+ ); +}; + +export default WalletsCarouselContent; diff --git a/packages/wallets/src/components/WalletsCarouselContent/index.ts b/packages/wallets/src/components/WalletsCarouselContent/index.ts new file mode 100644 index 000000000000..5dd167fd80db --- /dev/null +++ b/packages/wallets/src/components/WalletsCarouselContent/index.ts @@ -0,0 +1 @@ +export { default as WalletsCarouselContent } from './WalletsCarouselContent'; diff --git a/packages/wallets/src/components/index.ts b/packages/wallets/src/components/index.ts index 2961cedda0f5..abb0fe92cddc 100644 --- a/packages/wallets/src/components/index.ts +++ b/packages/wallets/src/components/index.ts @@ -8,3 +8,6 @@ export * from './WalletListCardIDetails'; export * from './WalletListCardIcon'; export * from './WalletListCardTitle'; export * from './WalletsCarousel'; +export * from './WalletCard'; +export * from './ProgressBar'; +export * from './WalletsCarouselContent'; diff --git a/packages/wallets/src/hooks/useDevice.tsx b/packages/wallets/src/hooks/useDevice.tsx index a298afb65dc3..e4d00355d061 100644 --- a/packages/wallets/src/hooks/useDevice.tsx +++ b/packages/wallets/src/hooks/useDevice.tsx @@ -1,6 +1,6 @@ import { useWindowSize } from 'usehooks-ts'; -/** A custom hook to check for the client device (Try to use this for behaviour only and not for hiding JSX element) */ +/** A custom hook to check for the client device and determine the layout to be rendered */ const useDevice = () => { const { width } = useWindowSize(); const is_mobile = width < 768; From 896849934348f166f966330f280b40a36b8c9fcc Mon Sep 17 00:00:00 2001 From: Farhan Ahmad Nurzi <125247833+farhan-nurzi-deriv@users.noreply.github.com> Date: Wed, 13 Sep 2023 12:19:32 +0800 Subject: [PATCH 04/12] FarhanNurzi/WALL-1669/Add accordion to Wallet header (#9938) * feat: wallet accordion for desktop * feat: change accordion behaviors (active acc expanded by default) * chore: refactor accountlist and add animations * chore: hide account list / content from dom when accordion is closed * feat: options and multipliers account listing in wallet desktop * refactor: cleanup styles and delete unexpected props * chore: remove TradingAccountCard dynamic classname for divider and use css only * fix: options and multipliers translations --- .../forms/personal-details-form.jsx | 2 +- packages/components/stories/icon/icons.js | 36 ++++----- packages/wallets/package.json | 1 + packages/wallets/src/AppContent.scss | 2 +- .../components/AccountsList/AccountsList.scss | 15 +++- .../components/AccountsList/AccountsList.tsx | 17 +++-- .../DesktopWalletsList/DesktopWalletsList.tsx | 6 +- .../OptionsAndMultipliersListing.scss | 36 +++++++++ .../OptionsAndMultipliersListing.tsx | 74 +++++++++++++++++++ .../OptionsAndMultipliersListing/index.ts | 1 + .../TradingAccountCard.scss | 54 ++++++++++++++ .../TradingAccountCard/TradingAccountCard.tsx | 34 +++++++++ .../components/TradingAccountCard/index.ts | 1 + .../WalletListCard/WalletListCard.scss | 7 +- .../WalletListCard/WalletListCard.tsx | 4 - .../WalletsAccordion/WalletsAccordion.scss | 60 +++++++++++++++ .../WalletsAccordion/WalletsAccordion.tsx | 33 +++++++++ .../src/components/WalletsAccordion/index.ts | 1 + .../WalletsAccordionContainer.scss | 7 ++ .../WalletsAccordionContainer.tsx | 38 ++++++++++ .../WalletsAccordionContainer/index.ts | 1 + .../WalletsCarousel/WalletsCarousel.tsx | 4 +- packages/wallets/src/components/index.ts | 4 + .../public/images/ic-appstore-binary-bot.svg | 14 ++++ .../public/images/ic-appstore-deriv-bot.svg | 14 ++++ .../public/images/ic-appstore-deriv-go.svg | 14 ++++ .../images/ic-appstore-deriv-trader.svg | 14 ++++ .../images/ic-appstore-smart-trader.svg | 14 ++++ 28 files changed, 460 insertions(+), 48 deletions(-) create mode 100644 packages/wallets/src/components/OptionsAndMultipliersListing/OptionsAndMultipliersListing.scss create mode 100644 packages/wallets/src/components/OptionsAndMultipliersListing/OptionsAndMultipliersListing.tsx create mode 100644 packages/wallets/src/components/OptionsAndMultipliersListing/index.ts create mode 100644 packages/wallets/src/components/TradingAccountCard/TradingAccountCard.scss create mode 100644 packages/wallets/src/components/TradingAccountCard/TradingAccountCard.tsx create mode 100644 packages/wallets/src/components/TradingAccountCard/index.ts create mode 100644 packages/wallets/src/components/WalletsAccordion/WalletsAccordion.scss create mode 100644 packages/wallets/src/components/WalletsAccordion/WalletsAccordion.tsx create mode 100644 packages/wallets/src/components/WalletsAccordion/index.ts create mode 100644 packages/wallets/src/components/WalletsAccordionContainer/WalletsAccordionContainer.scss create mode 100644 packages/wallets/src/components/WalletsAccordionContainer/WalletsAccordionContainer.tsx create mode 100644 packages/wallets/src/components/WalletsAccordionContainer/index.ts create mode 100644 packages/wallets/src/public/images/ic-appstore-binary-bot.svg create mode 100644 packages/wallets/src/public/images/ic-appstore-deriv-bot.svg create mode 100644 packages/wallets/src/public/images/ic-appstore-deriv-go.svg create mode 100644 packages/wallets/src/public/images/ic-appstore-deriv-trader.svg create mode 100644 packages/wallets/src/public/images/ic-appstore-smart-trader.svg diff --git a/packages/account/src/Components/forms/personal-details-form.jsx b/packages/account/src/Components/forms/personal-details-form.jsx index eb5da8d0565f..4be847596d3e 100644 --- a/packages/account/src/Components/forms/personal-details-form.jsx +++ b/packages/account/src/Components/forms/personal-details-form.jsx @@ -16,7 +16,7 @@ import { import { getLegalEntityName, isDesktop, isMobile, routes, validPhone } from '@deriv/shared'; import { Localize, localize } from '@deriv/translations'; import InlineNoteWithIcon from '../inline-note-with-icon'; -import { DateOfBirthField, FormInputField } from "./form-fields.jsx"; +import { DateOfBirthField, FormInputField } from './form-fields.jsx'; import FormBodySection from '../form-body-section'; import FormSubHeader from '../form-sub-header'; import PoiNameDobExample from '../../Assets/ic-poi-name-dob-example.svg'; diff --git a/packages/components/stories/icon/icons.js b/packages/components/stories/icon/icons.js index 21d37b79b53c..23ea1becd147 100644 --- a/packages/components/stories/icon/icons.js +++ b/packages/components/stories/icon/icons.js @@ -54,7 +54,7 @@ export const icons = 'IcAppstoreWalletUsdLight', 'IcAppstoreWalletUsdcLight', 'IcAppstoreWalletUsdtLight', - 'IcAppstoreWarning' + 'IcAppstoreWarning', ], 'brand': [ 'IcBrandDerivEzWordmark', @@ -64,7 +64,7 @@ export const icons = 'IcBrandDmt5FinancialStp', 'IcBrandDmt5Financial', 'IcBrandDmt5Synthetics', - 'IcBrandDxtradeWordmark' + 'IcBrandDxtradeWordmark', ], 'cashier': [ 'IcCashierAdd', @@ -238,7 +238,7 @@ export const icons = 'IcCashierWyreLight', 'IcCashierZenithbankDark', 'IcCashierZenithbankLight', - 'IcCashier' + 'IcCashier', ], 'common': [ 'IcAccountCross', @@ -611,7 +611,7 @@ export const icons = 'IcWip', 'IcZingpay', 'IcZoomIn', - 'IcZoomOut' + 'IcZoomOut', ], 'contract': [ 'IcContractBarrier', @@ -629,7 +629,7 @@ export const icons = 'IcContractStartTimeCircle', 'IcContractStartTime', 'IcContractStrike', - 'IcContractTarget' + 'IcContractTarget', ], 'currency': [ 'IcCurrencyAud', @@ -653,10 +653,10 @@ export const icons = 'IcCurrencyUsdc', 'IcCurrencyUsdk', 'IcCurrencyUst', - 'IcCurrencyVirtual' + 'IcCurrencyVirtual', ], 'derivez': [ - 'IcDerivez' + 'IcDerivez', ], 'dxtrade': [ 'IcDxtradeDerivX', @@ -673,7 +673,7 @@ export const icons = 'IcDxtradeFinancialPlatform', 'IcDxtradeFinancial', 'IcDxtradeOnePassword', - 'IcDxtradeSyntheticPlatform' + 'IcDxtradeSyntheticPlatform', ], 'flag': [ 'IcFlagDe', @@ -690,7 +690,7 @@ export const icons = 'IcFlagUk', 'IcFlagVi', 'IcFlagZhCn', - 'IcFlagZhTw' + 'IcFlagZhTw', ], 'mt5': [ 'IcMt5Acuity', @@ -719,7 +719,7 @@ export const icons = 'IcMt5SyntheticDashboard', 'IcMt5SyntheticIndices', 'IcMt5SyntheticPlatform', - 'IcMt5TradeTypes' + 'IcMt5TradeTypes', ], 'option': [ 'IcOptionAccumulators', @@ -737,7 +737,7 @@ export const icons = 'IcOptionOverUnder', 'IcOptionRaiseFall', 'IcOptionTouchNotouch', - 'IcOptionUpDownAsian' + 'IcOptionUpDownAsian', ], 'rebranding': [ 'IcRebrandingBinaryBot', @@ -758,7 +758,7 @@ export const icons = 'IcRebrandingDxtrade', 'IcRebrandingMt5Logo', 'IcRebrandingSmarttraderDashboard', - 'IcRebrandingSmarttrader' + 'IcRebrandingSmarttrader', ], 'stock': [ 'IcStockAdidasSalomon', @@ -808,7 +808,7 @@ export const icons = 'IcStockVisa', 'IcStockWallMart', 'IcStockWaltDisney', - 'IcStockZoom' + 'IcStockZoom', ], 'tradetype': [ 'IcTradetypeAccu', @@ -847,7 +847,7 @@ export const icons = 'IcTradetypeTurbosshort', 'IcTradetypeUpordown', 'IcTradetypeVanillaLongCall', - 'IcTradetypeVanillaLongPut' + 'IcTradetypeVanillaLongPut', ], 'underlying': [ 'IcUnderlying1HZ100V', @@ -1006,7 +1006,7 @@ export const icons = 'IcUnderlyingWLDEUR', 'IcUnderlyingWLDGBP', 'IcUnderlyingWLDUSD', - 'IcUnderlyingWLDXAU' + 'IcUnderlyingWLDXAU', ], 'wallet': [ 'IcWalletClearFunds', @@ -1042,6 +1042,6 @@ export const icons = 'IcWalletWebmoneyLight', 'IcWalletWebmoney', 'IcWalletZingpayDark', - 'IcWalletZingpayLight' - ] -} \ No newline at end of file + 'IcWalletZingpayLight', + ], +} diff --git a/packages/wallets/package.json b/packages/wallets/package.json index d6b19712c477..c961818c9ebd 100644 --- a/packages/wallets/package.json +++ b/packages/wallets/package.json @@ -5,6 +5,7 @@ "main": "src/index.tsx", "dependencies": { "@deriv/api": "^1.0.0", + "@deriv/translations": "^1.0.0", "embla-carousel-react": "^8.0.0-rc12", "react": "^17.0.2", "usehooks-ts": "^2.7.0" diff --git a/packages/wallets/src/AppContent.scss b/packages/wallets/src/AppContent.scss index fa1eb201cf49..03c47aa14096 100644 --- a/packages/wallets/src/AppContent.scss +++ b/packages/wallets/src/AppContent.scss @@ -4,7 +4,7 @@ align-items: center; gap: 24px; width: 100%; - height: 100%; + min-height: 100%; align-self: stretch; background: var(--system-light-7-secondary-background, #f2f3f4); diff --git a/packages/wallets/src/components/AccountsList/AccountsList.scss b/packages/wallets/src/components/AccountsList/AccountsList.scss index 50b08737370b..6a05f9dede30 100644 --- a/packages/wallets/src/components/AccountsList/AccountsList.scss +++ b/packages/wallets/src/components/AccountsList/AccountsList.scss @@ -1,6 +1,13 @@ .wallets-accounts-list { - height: 60vh; - width: 100vw; - margin-top: 2rem; - background-color: #add8e6; + height: 100%; + width: 100%; + background: var(--system-light-8-primary-background, #fff); + + @include desktop { + border-radius: 0 0 16px 16px; + } + + &__content { + margin-top: 24px; + } } diff --git a/packages/wallets/src/components/AccountsList/AccountsList.tsx b/packages/wallets/src/components/AccountsList/AccountsList.tsx index 84e9c66e4a46..db326773c0d4 100644 --- a/packages/wallets/src/components/AccountsList/AccountsList.tsx +++ b/packages/wallets/src/components/AccountsList/AccountsList.tsx @@ -1,12 +1,15 @@ import React from 'react'; -import { useActiveWalletAccount } from '@deriv/api'; +import { OptionsAndMultipliersListing } from '..'; +import './AccountsList.scss'; -type TAccountsListProps = { - data: ReturnType['data']; -}; - -const AccountsList = ({ data }: TAccountsListProps) => { - return
{data?.loginid}
; +const AccountsList = () => { + return ( +
+
+ +
+
+ ); }; export default AccountsList; diff --git a/packages/wallets/src/components/DesktopWalletsList/DesktopWalletsList.tsx b/packages/wallets/src/components/DesktopWalletsList/DesktopWalletsList.tsx index 9c17ce323ec2..2e95bf28edcd 100644 --- a/packages/wallets/src/components/DesktopWalletsList/DesktopWalletsList.tsx +++ b/packages/wallets/src/components/DesktopWalletsList/DesktopWalletsList.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { useWalletAccountsList } from '@deriv/api'; -import WalletListCard from '../WalletListCard/WalletListCard'; +import { WalletsAccordionContainer } from '..'; const DesktopWalletsList: React.FC = () => { const { data } = useWalletAccountsList(); @@ -9,9 +9,7 @@ const DesktopWalletsList: React.FC = () => { return ( - {data?.map(account => { - return ; - })} + ); }; diff --git a/packages/wallets/src/components/OptionsAndMultipliersListing/OptionsAndMultipliersListing.scss b/packages/wallets/src/components/OptionsAndMultipliersListing/OptionsAndMultipliersListing.scss new file mode 100644 index 000000000000..522a8d121ea5 --- /dev/null +++ b/packages/wallets/src/components/OptionsAndMultipliersListing/OptionsAndMultipliersListing.scss @@ -0,0 +1,36 @@ +.wallets-options-and-multipliers-listing { + width: 100%; + height: 100%; + padding-top: 24px; + + @include desktop { + border-top: 2px solid var(--system-light-7-secondary-background, #f2f3f4); + } + + &__header { + padding-bottom: 24px; + + &-title { + font-weight: bold; + font-size: 24px; + line-height: 36px; + display: flex; + align-items: center; + } + + &-subtitle { + font-size: 16px; + line-height: 24px; + + &__link { + color: var(--brand-coral, #ff444f); + } + } + } + + &__content { + display: grid; + gap: 1.6rem 4.8rem; + grid-template-columns: repeat(3, 1fr); + } +} diff --git a/packages/wallets/src/components/OptionsAndMultipliersListing/OptionsAndMultipliersListing.tsx b/packages/wallets/src/components/OptionsAndMultipliersListing/OptionsAndMultipliersListing.tsx new file mode 100644 index 000000000000..33518ba7a4b5 --- /dev/null +++ b/packages/wallets/src/components/OptionsAndMultipliersListing/OptionsAndMultipliersListing.tsx @@ -0,0 +1,74 @@ +import React from 'react'; +import { Localize } from '@deriv/translations'; +import IcAppstoreBinaryBot from '../../public/images/ic-appstore-binary-bot.svg'; +import IcAppstoreDerivBot from '../../public/images/ic-appstore-deriv-bot.svg'; +import IcAppstoreDerivGo from '../../public/images/ic-appstore-deriv-go.svg'; +import IcAppstoreDerivTrader from '../../public/images/ic-appstore-deriv-trader.svg'; +import IcAppstoreSmartTrader from '../../public/images/ic-appstore-smart-trader.svg'; +import { TradingAccountCard } from '..'; +import './OptionsAndMultipliersListing.scss'; + +const options_and_multipliers = [ + { + title: 'Deriv Trader', + description: 'Options and multipliers trading platform.', + icon: , + }, + { + title: 'Deriv Bot', + description: 'Automate your trading, no coding needed.', + icon: , + }, + { + title: 'SmartTrader', + description: 'Our legacy options trading platform.', + icon: , + }, + { + title: 'Binary Bot', + description: 'Our legacy automated trading platform.', + icon: , + }, + { + title: 'Deriv GO', + description: 'Trade on the go with our mobile app.', + icon: , + }, +]; + +const OptionsAndMultipliersListing = () => { + return ( + + ); +}; + +export default OptionsAndMultipliersListing; diff --git a/packages/wallets/src/components/OptionsAndMultipliersListing/index.ts b/packages/wallets/src/components/OptionsAndMultipliersListing/index.ts new file mode 100644 index 000000000000..69db36629803 --- /dev/null +++ b/packages/wallets/src/components/OptionsAndMultipliersListing/index.ts @@ -0,0 +1 @@ +export { default as OptionsAndMultipliersListing } from './OptionsAndMultipliersListing'; diff --git a/packages/wallets/src/components/TradingAccountCard/TradingAccountCard.scss b/packages/wallets/src/components/TradingAccountCard/TradingAccountCard.scss new file mode 100644 index 000000000000..cc3e36d56624 --- /dev/null +++ b/packages/wallets/src/components/TradingAccountCard/TradingAccountCard.scss @@ -0,0 +1,54 @@ +$columns: 3; +$grid-last-row-children: '&:nth-child(#{$columns}n+1):nth-last-child(-n+#{$columns})'; + +.wallets-trading-account-card { + display: flex; + align-items: center; + gap: 16px; + height: 88px; + + #{$grid-last-row-children} > &__content, + #{$grid-last-row-children} ~ & > &__content { + border-bottom: none; + } + + &__content { + display: flex; + gap: 16px; + align-items: center; + flex-grow: 1; + height: 100%; + border-bottom: 1px solid var(--system-light-6-hover-background, #e6e9e9); + } + + &__icon { + width: 48px; + height: 48px; + } + + &__details { + flex-grow: 1; + + &-title { + font-weight: bold; + font-size: 1.4rem; + line-height: 20px; + } + + &-description { + font-size: 1.2rem; + line-height: 14px; + } + } + + &__action { + outline: none; + border: none; + color: var(--system-dark-1-prominent-text, #fff); + font-weight: bold; + padding: 6px 16px; + border-radius: 4px; + background: var(--button-primary-default, #ff444f); + cursor: pointer; + } +} diff --git a/packages/wallets/src/components/TradingAccountCard/TradingAccountCard.tsx b/packages/wallets/src/components/TradingAccountCard/TradingAccountCard.tsx new file mode 100644 index 000000000000..7d70cdb3b79b --- /dev/null +++ b/packages/wallets/src/components/TradingAccountCard/TradingAccountCard.tsx @@ -0,0 +1,34 @@ +import React, { ReactElement } from 'react'; +import { Localize } from '@deriv/translations'; +import './TradingAccountCard.scss'; + +type TProps = { + description: string; + icon: ReactElement; + title: string; +}; + +const TradingAccountCard: React.FC = ({ description, icon, title }) => { + return ( +
+ {icon} +
+
+

+ +

+

+ +

+
+
+ +
+
+
+ ); +}; + +export default TradingAccountCard; diff --git a/packages/wallets/src/components/TradingAccountCard/index.ts b/packages/wallets/src/components/TradingAccountCard/index.ts new file mode 100644 index 000000000000..d4252c34ac01 --- /dev/null +++ b/packages/wallets/src/components/TradingAccountCard/index.ts @@ -0,0 +1 @@ +export { default as TradingAccountCard } from './TradingAccountCard'; diff --git a/packages/wallets/src/components/WalletListCard/WalletListCard.scss b/packages/wallets/src/components/WalletListCard/WalletListCard.scss index 58e49881da52..0a0d11799ce2 100644 --- a/packages/wallets/src/components/WalletListCard/WalletListCard.scss +++ b/packages/wallets/src/components/WalletListCard/WalletListCard.scss @@ -2,11 +2,10 @@ &__card_container { flex: 1; display: flex; - padding: 24px; align-items: flex-start; width: 100%; border-radius: 16px; - background: var(--system-light-8-primary-background, #fff); + background: inherit; } &__content { @@ -26,8 +25,4 @@ align-self: stretch; border-radius: 16px; } - - &__dropdown { - cursor: pointer; - } } diff --git a/packages/wallets/src/components/WalletListCard/WalletListCard.tsx b/packages/wallets/src/components/WalletListCard/WalletListCard.tsx index 9757a891f1e0..6f84a8d14d3b 100644 --- a/packages/wallets/src/components/WalletListCard/WalletListCard.tsx +++ b/packages/wallets/src/components/WalletListCard/WalletListCard.tsx @@ -1,6 +1,5 @@ import React from 'react'; import { useWalletAccountsList } from '@deriv/api'; -import IcDropdown from '../../public/images/ic-dropdown.svg'; import WalletGradientBackground from '../WalletGradientBackground/WalletGradientBackground'; import WalletListCardIBalance from '../WalletListCardIBalance/WalletListCardIBalance'; import WalletListCardIcon from '../WalletListCardIcon/WalletListCardIcon'; @@ -26,9 +25,6 @@ const WalletListCard: React.FC = ({ account }) => {
-
- -
); diff --git a/packages/wallets/src/components/WalletsAccordion/WalletsAccordion.scss b/packages/wallets/src/components/WalletsAccordion/WalletsAccordion.scss new file mode 100644 index 000000000000..c7836d79be49 --- /dev/null +++ b/packages/wallets/src/components/WalletsAccordion/WalletsAccordion.scss @@ -0,0 +1,60 @@ +.wallets-accordion { + width: 100%; + background: var(--system-light-8-primary-background, #fff); + border-radius: 16px; + padding: 24px; + + &__header { + width: 100%; + display: flex; + align-items: center; + padding: 0; + gap: 24px; + } + + &__content { + animation: hide-accordion-content 0.3s ease; + transform: translateY(-3rem); + opacity: 0; + display: none; + + &--visible { + animation: show-accordion-content 0.3s ease; + transform: translateY(0); + opacity: 1; + display: block; + } + } + + &__dropdown { + transition: all 0.3s ease; + cursor: pointer; + + &--open { + transform: rotate(180deg); + transition: all 0.3s ease; + } + } + + @keyframes show-accordion-content { + from { + transform: translateY(-3rem); + opacity: 0; + } + to { + transform: translateY(0); + opacity: 1; + } + } + + @keyframes hide-accordion-content { + from { + transform: translateY(0); + opacity: 1; + } + to { + transform: translateY(-3rem); + opacity: 0; + } + } +} diff --git a/packages/wallets/src/components/WalletsAccordion/WalletsAccordion.tsx b/packages/wallets/src/components/WalletsAccordion/WalletsAccordion.tsx new file mode 100644 index 000000000000..036f24f60e4d --- /dev/null +++ b/packages/wallets/src/components/WalletsAccordion/WalletsAccordion.tsx @@ -0,0 +1,33 @@ +import React, { ReactElement, useMemo } from 'react'; +import { useWalletAccountsList } from '@deriv/api'; +import IcDropdown from '../../public/images/ic-dropdown.svg'; +import './WalletsAccordion.scss'; + +type TProps = { + account_info?: ReturnType['data'][number]; + active_account?: string; + content: ReactElement; + header: ReactElement; + switchAccount: (loginid?: string) => void; +}; + +const WalletsAccordion: React.FC = ({ active_account, account_info, switchAccount, header, content }) => { + const is_open = useMemo(() => active_account === account_info?.loginid, [active_account]); + + return ( +
+
+ {header} +
switchAccount(account_info?.loginid)} + > + +
+
+
{is_open && content}
+
+ ); +}; + +export default WalletsAccordion; diff --git a/packages/wallets/src/components/WalletsAccordion/index.ts b/packages/wallets/src/components/WalletsAccordion/index.ts new file mode 100644 index 000000000000..055b1ba67c6b --- /dev/null +++ b/packages/wallets/src/components/WalletsAccordion/index.ts @@ -0,0 +1 @@ +export { default as WalletsAccordion } from './WalletsAccordion'; diff --git a/packages/wallets/src/components/WalletsAccordionContainer/WalletsAccordionContainer.scss b/packages/wallets/src/components/WalletsAccordionContainer/WalletsAccordionContainer.scss new file mode 100644 index 000000000000..af954c52fb14 --- /dev/null +++ b/packages/wallets/src/components/WalletsAccordionContainer/WalletsAccordionContainer.scss @@ -0,0 +1,7 @@ +.wallets-accordion-container { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + gap: 24px; +} diff --git a/packages/wallets/src/components/WalletsAccordionContainer/WalletsAccordionContainer.tsx b/packages/wallets/src/components/WalletsAccordionContainer/WalletsAccordionContainer.tsx new file mode 100644 index 000000000000..bb97362f8f6f --- /dev/null +++ b/packages/wallets/src/components/WalletsAccordionContainer/WalletsAccordionContainer.tsx @@ -0,0 +1,38 @@ +import React, { useState } from 'react'; +import { useWalletAccountsList } from '@deriv/api'; +import { AccountsList, WalletListCard, WalletsAccordion } from '..'; +import './WalletsAccordionContainer.scss'; + +type TProps = { + wallets_list: ReturnType['data']; +}; + +const WalletsAccordionContainer: React.FC = ({ wallets_list }) => { + const [active_account, setActiveAccount] = useState(wallets_list.find(account => account.is_active)?.loginid); + + const swithAccount = (loginid?: string) => { + if (!loginid) return; + + setActiveAccount(loginid); + // implement switch account here + }; + + return ( +
+ {wallets_list.map(account => { + return ( + } + content={} + /> + ); + })} +
+ ); +}; + +export default WalletsAccordionContainer; diff --git a/packages/wallets/src/components/WalletsAccordionContainer/index.ts b/packages/wallets/src/components/WalletsAccordionContainer/index.ts new file mode 100644 index 000000000000..c328cdd59ce5 --- /dev/null +++ b/packages/wallets/src/components/WalletsAccordionContainer/index.ts @@ -0,0 +1 @@ +export { default as WalletsAccordionContainer } from './WalletsAccordionContainer'; diff --git a/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.tsx b/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.tsx index 784dd90d3061..77ef6043d795 100644 --- a/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.tsx +++ b/packages/wallets/src/components/WalletsCarousel/WalletsCarousel.tsx @@ -1,14 +1,12 @@ import React from 'react'; -import { useActiveWalletAccount } from '@deriv/api'; import { AccountsList } from '../AccountsList'; import { WalletsCarouselContent } from '../WalletsCarouselContent'; const WalletsCarousel: React.FC = () => { - const { data: active_wallet } = useActiveWalletAccount(); return ( - + ); }; diff --git a/packages/wallets/src/components/index.ts b/packages/wallets/src/components/index.ts index abb0fe92cddc..36e30a1f72e8 100644 --- a/packages/wallets/src/components/index.ts +++ b/packages/wallets/src/components/index.ts @@ -1,5 +1,7 @@ export * from './AccountsList'; export * from './DesktopWalletsList'; +export * from './OptionsAndMultipliersListing'; +export * from './TradingAccountCard'; export * from './WalletListCard'; export * from './WalletListCardBadge'; export * from './WalletListCardIActions'; @@ -7,6 +9,8 @@ export * from './WalletListCardIBalance'; export * from './WalletListCardIDetails'; export * from './WalletListCardIcon'; export * from './WalletListCardTitle'; +export * from './WalletsAccordion'; +export * from './WalletsAccordionContainer'; export * from './WalletsCarousel'; export * from './WalletCard'; export * from './ProgressBar'; diff --git a/packages/wallets/src/public/images/ic-appstore-binary-bot.svg b/packages/wallets/src/public/images/ic-appstore-binary-bot.svg new file mode 100644 index 000000000000..cc30b74c7f4b --- /dev/null +++ b/packages/wallets/src/public/images/ic-appstore-binary-bot.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/wallets/src/public/images/ic-appstore-deriv-bot.svg b/packages/wallets/src/public/images/ic-appstore-deriv-bot.svg new file mode 100644 index 000000000000..3ac9c2c0aaf6 --- /dev/null +++ b/packages/wallets/src/public/images/ic-appstore-deriv-bot.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/wallets/src/public/images/ic-appstore-deriv-go.svg b/packages/wallets/src/public/images/ic-appstore-deriv-go.svg new file mode 100644 index 000000000000..84c6020b8183 --- /dev/null +++ b/packages/wallets/src/public/images/ic-appstore-deriv-go.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/wallets/src/public/images/ic-appstore-deriv-trader.svg b/packages/wallets/src/public/images/ic-appstore-deriv-trader.svg new file mode 100644 index 000000000000..09cfff46d877 --- /dev/null +++ b/packages/wallets/src/public/images/ic-appstore-deriv-trader.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/wallets/src/public/images/ic-appstore-smart-trader.svg b/packages/wallets/src/public/images/ic-appstore-smart-trader.svg new file mode 100644 index 000000000000..eabd99eaa29e --- /dev/null +++ b/packages/wallets/src/public/images/ic-appstore-smart-trader.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file From 80baa67aff2fca3be0f917a3c9796cc3f356f2e4 Mon Sep 17 00:00:00 2001 From: Farrah Mae Ochoa <82315152+farrah-deriv@users.noreply.github.com> Date: Wed, 13 Sep 2023 13:43:35 +0800 Subject: [PATCH 05/12] fix: translations (#10045) --- .../order-details-confirm-modal.jsx | 3 +-- packages/p2p/src/utils/file-uploader.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/order-details-confirm-modal.jsx b/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/order-details-confirm-modal.jsx index e991b26444aa..45bfb1f2131f 100644 --- a/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/order-details-confirm-modal.jsx +++ b/packages/p2p/src/components/modal-manager/modals/order-details-confirm-modal/order-details-confirm-modal.jsx @@ -2,10 +2,9 @@ import React from 'react'; import { useStores } from 'Stores'; import { Button, Modal, Text } from '@deriv/components'; import { isMobile, formatMoney } from '@deriv/shared'; -import { localize } from '@deriv/translations'; import FileUploaderComponent from 'Components/file-uploader-component'; import FormError from 'Components/form/error.jsx'; -import { Localize } from 'Components/i18next'; +import { Localize, localize } from 'Components/i18next'; import { useModalManagerContext } from 'Components/modal-manager/modal-manager-context'; import { getErrorMessage, max_pot_file_size } from 'Utils/file-uploader'; import { removeTrailingZeros, roundOffDecimal, setDecimalPlaces } from 'Utils/format-value'; diff --git a/packages/p2p/src/utils/file-uploader.js b/packages/p2p/src/utils/file-uploader.js index affb6eab616a..dbc354e1ccce 100644 --- a/packages/p2p/src/utils/file-uploader.js +++ b/packages/p2p/src/utils/file-uploader.js @@ -1,4 +1,4 @@ -import { localize } from '@deriv/translations'; +import { localize } from 'Components/i18next'; export const convertToMB = bytes => bytes / (1024 * 1024); From d267c4c2e6438181db434182ce13da8c519e079f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Sep 2023 14:36:49 +0800 Subject: [PATCH 06/12] =?UTF-8?q?translations:=20=F0=9F=93=9A=20sync=20tra?= =?UTF-8?q?nslations=20with=20crowdin=20(#10050)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: DerivFE <80095553+DerivFE@users.noreply.github.com> --- packages/p2p/src/translations/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/p2p/src/translations/it.json b/packages/p2p/src/translations/it.json index 3830deb3d910..633701a07aa9 100644 --- a/packages/p2p/src/translations/it.json +++ b/packages/p2p/src/translations/it.json @@ -61,7 +61,7 @@ "639382772": "Caricare tipi di file supportati.", "649549724": "Non ho ricevuto alcun pagamento.", "654193846": "Il link di verifica sembra non essere valido. Premi il pulsante qui sotto per richiederne uno nuovo", - "655733440": "Others", + "655733440": "Altro", "661808069": "Invia di nuovo l'e-mail {{remaining_time}}", "662578726": "Disponibile", "683273691": "Tasso (1 {{ account_currency }})", From f4254b1fb5b0fa3f954ac86da8cf2294029c898c Mon Sep 17 00:00:00 2001 From: Farhan Ahmad Nurzi <125247833+farhan-nurzi-deriv@users.noreply.github.com> Date: Wed, 13 Sep 2023 15:26:37 +0800 Subject: [PATCH 07/12] FarhanNurzi/WEBREL-1223/Payment details not getting added while creating / editing sell ad when fist time adding payment method (#10046) * chore: revamping payment_methods implementations * fix: payment method not showing in buy-add * chore: delete unused code and comment * refactor: refactor useP2PAdvertiserPaymentMethods, and other review comments * refactor: hooks, test files, remove unused code blocks * refactor: mutation payload type * fix: review comments * refactor: review comments * fix: review comments * fix: add display_name as dependency in useMemo * fix: error in buy-sell-modal pop up after reloading the window * fix: bug in stacked delete payment method modals * fix: advertiser payment methods not showing in create and edit form * refactor: add props to sell-ad payment methods list --- .../modals/quick-add-modal/quick-add-modal.jsx | 10 +++++++--- .../my-ads/create-ad-form-payment-methods.jsx | 13 ++++++++----- .../my-ads/edit-ad-form-payment-methods.jsx | 11 +++++++---- .../my-ads/sell-ad-payment-methods-list.jsx | 5 ++--- .../add-payment-method/add-payment-method-form.jsx | 1 + 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/packages/p2p/src/components/modal-manager/modals/quick-add-modal/quick-add-modal.jsx b/packages/p2p/src/components/modal-manager/modals/quick-add-modal/quick-add-modal.jsx index 9b3e0e11e3ea..f9be893d131a 100644 --- a/packages/p2p/src/components/modal-manager/modals/quick-add-modal/quick-add-modal.jsx +++ b/packages/p2p/src/components/modal-manager/modals/quick-add-modal/quick-add-modal.jsx @@ -1,6 +1,7 @@ import classNames from 'classnames'; import * as React from 'react'; import { Button, Icon, MobileFullPageModal, Modal, Text } from '@deriv/components'; +import { useP2PAdvertiserPaymentMethods } from '@deriv/hooks'; import { isMobile } from '@deriv/shared'; import { observer } from 'mobx-react-lite'; import { localize, Localize } from 'Components/i18next'; @@ -12,8 +13,9 @@ import BuyAdPaymentMethodsList from 'Components/my-ads/buy-ad-payment-methods-li import { useModalManagerContext } from 'Components/modal-manager/modal-manager-context'; const QuickAddModal = ({ advert }) => { - const { my_ads_store, my_profile_store } = useStores(); const { is_modal_open, showModal, useSavedState } = useModalManagerContext(); + const { my_ads_store, my_profile_store } = useStores(); + const { data: p2p_advertiser_payment_methods } = useP2PAdvertiserPaymentMethods(); const type = advert ? advert.type : null; @@ -164,8 +166,9 @@ const QuickAddModal = ({ advert }) => { my_ads_store.setShouldShowAddPaymentMethod(true)} + p2p_advertiser_payment_methods={p2p_advertiser_payment_methods} + selected_methods={selected_methods} /> )} @@ -264,8 +267,9 @@ const QuickAddModal = ({ advert }) => { is_only_horizontal is_scrollable onClickPaymentMethodCard={onClickPaymentMethodCard} - selected_methods={selected_methods} onClickAdd={() => my_ads_store.setShouldShowAddPaymentMethod(true)} + p2p_advertiser_payment_methods={p2p_advertiser_payment_methods} + selected_methods={selected_methods} /> )} diff --git a/packages/p2p/src/components/my-ads/create-ad-form-payment-methods.jsx b/packages/p2p/src/components/my-ads/create-ad-form-payment-methods.jsx index 576c2aa69f75..b52b93edf409 100644 --- a/packages/p2p/src/components/my-ads/create-ad-form-payment-methods.jsx +++ b/packages/p2p/src/components/my-ads/create-ad-form-payment-methods.jsx @@ -1,17 +1,19 @@ import * as React from 'react'; import { observer } from 'mobx-react-lite'; +import { useP2PAdvertiserPaymentMethods } from '@deriv/hooks'; import { useStores } from 'Stores'; -import PaymentMethodCard from '../my-profile/payment-methods/payment-method-card'; import { localize } from 'Components/i18next'; +import { useModalManagerContext } from 'Components/modal-manager/modal-manager-context'; +import PaymentMethodCard from '../my-profile/payment-methods/payment-method-card'; import BuyAdPaymentMethodsList from './buy-ad-payment-methods-list.jsx'; import SellAdPaymentMethodsList from './sell-ad-payment-methods-list.jsx'; -import { useModalManagerContext } from 'Components/modal-manager/modal-manager-context'; const CreateAdFormPaymentMethods = ({ is_sell_advert, onSelectPaymentMethods }) => { - const { my_ads_store, my_profile_store } = useStores(); + const { showModal } = useModalManagerContext(); + const { data: p2p_advertiser_payment_methods } = useP2PAdvertiserPaymentMethods(); + const { my_ads_store } = useStores(); const [selected_buy_methods, setSelectedBuyMethods] = React.useState([]); const [selected_sell_methods, setSelectedSellMethods] = React.useState([]); - const { showModal } = useModalManagerContext(); const onClickPaymentMethodCard = payment_method => { if (!my_ads_store.payment_method_ids.includes(payment_method.id)) { @@ -47,7 +49,7 @@ const CreateAdFormPaymentMethods = ({ is_sell_advert, onSelectPaymentMethods }) }, [is_sell_advert, selected_buy_methods, selected_sell_methods]); if (is_sell_advert) { - if (my_profile_store.advertiser_has_payment_methods) { + if (p2p_advertiser_payment_methods.length) { return ( ); } diff --git a/packages/p2p/src/components/my-ads/edit-ad-form-payment-methods.jsx b/packages/p2p/src/components/my-ads/edit-ad-form-payment-methods.jsx index cc86537c399e..0cfe19380aa6 100644 --- a/packages/p2p/src/components/my-ads/edit-ad-form-payment-methods.jsx +++ b/packages/p2p/src/components/my-ads/edit-ad-form-payment-methods.jsx @@ -1,15 +1,17 @@ import * as React from 'react'; import { observer } from 'mobx-react-lite'; +import { useP2PAdvertiserPaymentMethods } from '@deriv/hooks'; +import { localize } from 'Components/i18next'; import { useStores } from 'Stores'; +import { useModalManagerContext } from 'Components/modal-manager/modal-manager-context'; import PaymentMethodCard from '../my-profile/payment-methods/payment-method-card'; -import { localize } from 'Components/i18next'; import BuyAdPaymentMethodsList from './buy-ad-payment-methods-list.jsx'; import SellAdPaymentMethodsList from './sell-ad-payment-methods-list.jsx'; -import { useModalManagerContext } from 'Components/modal-manager/modal-manager-context'; const EditAdFormPaymentMethods = ({ is_sell_advert, selected_methods, setSelectedMethods, touched }) => { - const { my_ads_store, my_profile_store } = useStores(); const { showModal } = useModalManagerContext(); + const { data: p2p_advertiser_payment_methods } = useP2PAdvertiserPaymentMethods(); + const { my_ads_store } = useStores(); const onClickPaymentMethodCard = payment_method => { if (!my_ads_store.payment_method_ids.includes(payment_method.id)) { @@ -36,7 +38,7 @@ const EditAdFormPaymentMethods = ({ is_sell_advert, selected_methods, setSelecte }, []); if (is_sell_advert) { - if (my_profile_store.advertiser_has_payment_methods) { + if (p2p_advertiser_payment_methods.length) { return ( ); } diff --git a/packages/p2p/src/components/my-ads/sell-ad-payment-methods-list.jsx b/packages/p2p/src/components/my-ads/sell-ad-payment-methods-list.jsx index faf86e5d21d8..3dd84efb620c 100644 --- a/packages/p2p/src/components/my-ads/sell-ad-payment-methods-list.jsx +++ b/packages/p2p/src/components/my-ads/sell-ad-payment-methods-list.jsx @@ -1,6 +1,5 @@ import React from 'react'; import { ThemedScrollbars } from '@deriv/components'; -import { useP2PAdvertiserPaymentMethods } from '@deriv/hooks'; import { isMobile } from '@deriv/shared'; import { observer } from 'mobx-react-lite'; import { localize } from 'Components/i18next'; @@ -14,10 +13,9 @@ const SellAdPaymentMethodsList = ({ is_scrollable = isMobile(), onClickAdd, onClickPaymentMethodCard, + p2p_advertiser_payment_methods, selected_methods, }) => { - const { data: p2p_advertiser_payment_methods } = useP2PAdvertiserPaymentMethods(); - const style = { borderColor: 'var(--brand-secondary)', borderWidth: '2px', @@ -60,6 +58,7 @@ SellAdPaymentMethodsList.propTypes = { is_scrollable: PropTypes.bool, onClickAdd: PropTypes.func, onClickPaymentMethodCard: PropTypes.func, + p2p_advertiser_payment_methods: PropTypes.array, selected_methods: PropTypes.array, }; diff --git a/packages/p2p/src/components/my-profile/payment-methods/add-payment-method/add-payment-method-form.jsx b/packages/p2p/src/components/my-profile/payment-methods/add-payment-method/add-payment-method-form.jsx index a8b901841e81..17beab13431b 100644 --- a/packages/p2p/src/components/my-profile/payment-methods/add-payment-method/add-payment-method-form.jsx +++ b/packages/p2p/src/components/my-profile/payment-methods/add-payment-method/add-payment-method-form.jsx @@ -29,6 +29,7 @@ const AddPaymentMethodForm = ({ should_show_separated_footer = false }) => { React.useEffect(() => { if (mutation_status === 'success') { my_profile_store.setShouldShowAddPaymentMethodForm(false); + my_profile_store.setSelectedPaymentMethod(''); if (isCurrentModal('CreateAdAddPaymentMethodModal')) { hideModal(); From c8457e339c95fecb942f1cbf620231854b12ee15 Mon Sep 17 00:00:00 2001 From: Likhith Kolayari <98398322+likhith-deriv@users.noreply.github.com> Date: Wed, 13 Sep 2023 11:31:44 +0400 Subject: [PATCH 08/12] likhith/fix: :coffin: removed old text related to appstore (#10049) * fix: :coffin: removed old text related to appstore * fix: :coffin: removed old text related to appstore * chore: Trigger Build --- .../__tests__/personal-details.spec.js | 9 --------- .../Components/personal-details/personal-details.jsx | 10 ---------- 2 files changed, 19 deletions(-) diff --git a/packages/account/src/Components/personal-details/__tests__/personal-details.spec.js b/packages/account/src/Components/personal-details/__tests__/personal-details.spec.js index 327c46e3f06b..426049276867 100644 --- a/packages/account/src/Components/personal-details/__tests__/personal-details.spec.js +++ b/packages/account/src/Components/personal-details/__tests__/personal-details.spec.js @@ -41,9 +41,6 @@ const mock_errors = { tax_identification_confirm: 'Please confirm your tax information.', }; -const fake_alert_messaget = - /we need this for verification\. if the information you provide is fake or inaccurate, you won’t be able to deposit and withdraw\./i; - const tax_residence_pop_over_text = /the country in which you meet the criteria for paying taxes\. usually the country in which you physically reside\./i; const tin_pop_over_text = /don't know your tax identification number\?/i; @@ -264,12 +261,6 @@ describe('', () => { expect(screen.getByTestId('personal_details_form')).toBeInTheDocument(); }); - it('should show fake-alert message', () => { - renderwithRouter(); - - expect(screen.getByText(fake_alert_messaget)).toBeInTheDocument(); - }); - it('should show proper salutation message when is_virtual is true', () => { renderwithRouter(); diff --git a/packages/account/src/Components/personal-details/personal-details.jsx b/packages/account/src/Components/personal-details/personal-details.jsx index 40b78626a209..fb04798527b8 100644 --- a/packages/account/src/Components/personal-details/personal-details.jsx +++ b/packages/account/src/Components/personal-details/personal-details.jsx @@ -153,16 +153,6 @@ const PersonalDetails = ({ onScroll={closeToolTip} testId='dt_personal_details_container' > - {!is_qualified_for_idv && ( -
- - {localize( - 'We need this for verification. If the information you provide is fake or inaccurate, you won’t be able to deposit and withdraw.' - )} - -
- )} -
Date: Wed, 13 Sep 2023 15:45:04 +0800 Subject: [PATCH 09/12] =?UTF-8?q?translations:=20=F0=9F=93=9A=20sync=20tra?= =?UTF-8?q?nslations=20with=20crowdin=20(#10055)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: DerivFE <80095553+DerivFE@users.noreply.github.com> --- packages/translations/crowdin/messages.json | 2 +- packages/translations/src/translations/ach.json | 2 +- packages/translations/src/translations/ar.json | 2 +- packages/translations/src/translations/bn.json | 2 +- packages/translations/src/translations/de.json | 2 +- packages/translations/src/translations/es.json | 2 +- packages/translations/src/translations/fr.json | 2 +- packages/translations/src/translations/id.json | 2 +- packages/translations/src/translations/it.json | 2 +- packages/translations/src/translations/ko.json | 2 +- packages/translations/src/translations/pl.json | 2 +- packages/translations/src/translations/pt.json | 2 +- packages/translations/src/translations/ru.json | 2 +- packages/translations/src/translations/si.json | 2 +- packages/translations/src/translations/th.json | 2 +- packages/translations/src/translations/tr.json | 2 +- packages/translations/src/translations/vi.json | 2 +- packages/translations/src/translations/zh_cn.json | 2 +- packages/translations/src/translations/zh_tw.json | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/translations/crowdin/messages.json b/packages/translations/crowdin/messages.json index 8f00402a0235..0c3ff29314ec 100644 --- a/packages/translations/crowdin/messages.json +++ b/packages/translations/crowdin/messages.json @@ -1 +1 @@ -{"0":"","1014140":"You may also call <0>+447723580049 to place your complaint.","1485191":"1:1000","2091451":"Deriv Bot - your automated trading partner","3125515":"Your Deriv MT5 password is for logging in to your Deriv MT5 accounts on the desktop, web, and mobile apps.","3215342":"Last 30 days","3420069":"To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your identity document.","7100308":"Hour must be between 0 and 23.","9488203":"Deriv Bot is a web-based strategy builder for trading digital options. It’s a platform where you can build your own automated trading bot using drag-and-drop 'blocks'.","11539750":"set {{ variable }} to Relative Strength Index Array {{ dummy }}","11872052":"Yes, I'll come back later","14365404":"Request failed for: {{ message_type }}, retrying in {{ delay }}s","15377251":"Profit amount: {{profit}}","17843034":"Check proof of identity document verification status","19424289":"Username","19552684":"USD Basket","21035405":"Please tell us why you’re leaving. (Select up to {{ allowed_reasons }} reasons.)","24900606":"Gold Basket","25854018":"This block displays messages in the developer’s console with an input that can be either a string of text, a number, boolean, or an array of data.","26566655":"Summary","26596220":"Finance","27582767":"{{amount}} {{currency}}","27731356":"Your account is temporarily disabled. Please contact us via <0>live chat to enable deposits and withdrawals again.","27830635":"Deriv (V) Ltd","28581045":"Add a real MT5 account","30801950":"Your account will be opened with {{legal_entity_name}}, regulated by the Malta Gaming Authority, and will be subject to the laws of Malta.","33433576":"Please use an e-wallet to withdraw your funds.","35089987":"Upload the front and back of your driving licence.","41737927":"Thank you","44877997":"Residence permit","45453595":"Binary Coin","45941470":"Where would you like to start?","46523711":"Your proof of identity is verified","49404821":"If you buy a \"<0>{{trade_type}}\" option, you receive a payout at expiry if the final price is {{payout_status}} the strike price. Otherwise, your “<0>{{trade_type}}” option will expire worthless.","50200731":"FX majors (standard/micro lots), FX minors, basket indices, commodities, and cryptocurrencies","53801223":"Hong Kong 50","53964766":"5. Hit Save to download your bot. You can choose to download your bot to your device or your Google Drive.","54185751":"Less than $100,000","55340304":"Keep your current contract?","55916349":"All","56764670":"Deriv Bot will not proceed with any new trades. Any ongoing trades will be completed by our system. Any unsaved changes will be lost.<0>Note: Please check your statement to view completed transactions.","58254854":"Scopes","59169515":"If you select \"Asian Rise\", you will win the payout if the last tick is higher than the average of the ticks.","59341501":"Unrecognized file format","59662816":"Stated limits are subject to change without prior notice.","62748351":"List Length","63869411":"This block tests a given number according to the selection","64402604":"Check transfer information","65185694":"Fiat onramp","65982042":"Total","66519591":"Investor password","67923436":"No, Deriv Bot will stop running when your web browser is closed.","68885999":"Repeats the previous trade when an error is encountered.","69005593":"The example below restarts trading after 30 or more seconds after 1 minute candle was started.","71016232":"OMG/USD","71445658":"Open","71563326":"A fast and secure fiat-to-crypto payment service. Deposit cryptocurrencies from anywhere in the world using your credit/debit cards and bank transfers.","71853457":"$100,001 - $500,000","72500774":"Please fill in Tax residence.","73086872":"You have self-excluded from trading","73326375":"The low is the lowest point ever reached by the market during the contract period.","74963864":"Under","76916358":"You have reached the withdrawal limit.<0/>Please upload your proof of identity and address to lift the limit to continue your withdrawal.","76925355":"Check your bot’s performance","77945356":"Trade on the go with our mobile app.","77982950":"Vanilla options allow you to predict an upward (bullish) or downward (bearish) direction of the underlying asset by purchasing a \"Call\" or a \"Put\".","81450871":"We couldn’t find that page","82839270":"Upload the page of your passport that contains your photo.","83202647":"Collapse Block","84402478":"Where do I find the blocks I need?","85343079":"Financial assessment","85359122":"40 or more","85389154":"Steps required to continue verification on your mobile","89062902":"Trade on MT5","90266322":"2. Start a chat with your newly created Telegram bot and make sure to send it some messages before proceeding to the next step. (e.g. Hello Bot!)","91993812":"The Martingale Strategy is a classic trading technique that has been used for more than a hundred years, popularised by the French mathematician Paul Pierre Levy in the 18th century.","93154671":"1. Hit Reset at the bottom of stats panel.","96381225":"ID verification failed","98473502":"We’re not obliged to conduct an appropriateness test, nor provide you with any risk warnings.","98972777":"random item","100239694":"Upload front of card from your computer","102226908":"Field cannot be empty","108916570":"Duration: {{duration}} days","109073671":"Please use an e-wallet that you have used for deposits previously. Ensure the e-wallet supports withdrawal. See the list of e-wallets that support withdrawals <0>here.","111215238":"Move away from direct light","111718006":"End date","111931529":"Max. total stake over 7 days","113378532":"ETH/USD","115032488":"Buy price and P/L","116005488":"Indicators","117056711":"We’re updating our site","117318539":"Password should have lower and uppercase English letters with numbers.","118158064":"2. Use a logic block to check if current profit/loss exceeds maximum loss. If it does, set trade again to false to prevent the bot from running another cycle.","118586231":"Document number (identity card, passport)","119261701":"Prediction:","119446122":"Contract type is not selected","120340777":"Complete your personal details","123454801":"{{withdraw_amount}} {{currency_symbol}}","124723298":"Upload a proof of address to verify your address","125443840":"6. Restart last trade on error","127307725":"A politically exposed person (PEP) is someone appointed with a prominent public position. Close associates and family members of a PEP are also considered to be PEPs.","129729742":"Tax Identification Number*","130567238":"THEN","132596476":"In providing our services to you, we are required to ask you for some information to assess if a given product or service is appropriate for you and whether you have the experience and knowledge to understand the risks involved.<0/><0/>","132689841":"Trade on web terminal","133284316":"Supported formats: JPEG, JPG, PNG, PDF and GIF only","133523018":"Please go to the Deposit page to get an address.","133536621":"and","133655768":"Note: If you wish to learn more about the Bot Builder, you can proceed to the <0>Tutorials tab.","139454343":"Confirm my limits","141265840":"Funds transfer information","141626595":"Make sure your device has a working camera","142050447":"set {{ variable }} to create text with","142390699":"Connected to your mobile","143970826":"Payment problems?","145146541":"Our accounts and services are unavailable for the Jersey postal code","145736466":"Take a selfie","150486954":"Token name","151344063":"The exit spot is the market price when the contract is closed.","151646545":"Unable to read file {{name}}","152415091":"Math","152524253":"Trade the world’s markets with our popular user-friendly platform.","154545319":"Country of residence is where you currently live.","157593038":"random integer from {{ start_number }} to {{ end_number }}","157871994":"Link expired","158355408":"Some services may be temporarily unavailable.","160746023":"Tether as an Omni token (USDT) is a version of Tether that is hosted on the Omni layer on the Bitcoin blockchain.","160863687":"Camera not detected","164112826":"This block allows you to load blocks from a URL if you have them stored on a remote server, and they will be loaded only when your bot runs.","164564432":"Deposits are temporarily unavailable due to system maintenance. You can make your deposits when the maintenance is complete.","165294347":"Please set your country of residence in your account settings to access the cashier.","165312615":"Continue on phone","165682516":"If you don’t mind sharing, which other trading platforms do you use?","170185684":"Ignore","170244199":"I’m closing my account for other reasons.","171307423":"Recovery","171579918":"Go to Self-exclusion","171638706":"Variables","173991459":"We’re sending your request to the blockchain.","174793462":"Strike","176078831":"Added","176319758":"Max. total stake over 30 days","176327749":"- Android: Tap the account, open <0>Options, and tap <0>Delete.","176654019":"$100,000 - $250,000","177099483":"Your address verification is pending, and we’ve placed some restrictions on your account. The restrictions will be lifted once your address is verified.","178413314":"First name should be between 2 and 50 characters.","179083332":"Date","179737767":"Our legacy options trading platform.","181346014":"Notes ","181881956":"Contract Type: {{ contract_type }}","184024288":"lower case","189705706":"This block uses the variable \"i\" to control the iterations. With each iteration, the value of \"i\" is determined by the items in a given list.","189759358":"Creates a list by repeating a given item","190834737":"Guide","191372501":"Accumulation of Income/Savings","192436105":"No need for symbols, digits, or uppercase letters","192573933":"Verification complete","195972178":"Get character","196810983":"If the duration is more than 24 hours, the Cut-off time and Expiry date will apply instead.","196998347":"We hold customer funds in bank accounts separate from our operational accounts which would not, in the event of insolvency, form part of the company's assets. This meets the <0>Gambling Commission's requirements for the segregation of customer funds at the level: <1>medium protection.","197190401":"Expiry date","201091938":"30 days","203108063":"Congratulations, you have successfully created your {{category}} <0>{{platform}} <1>{{type}} account. ","203179929":"<0>You can open this account once your submitted documents have been verified.","203271702":"Try again","203297887":"The Quick Strategy you just created will be loaded to the workspace.","203924654":"Hit the <0>Start button to begin and follow the tutorial.","204797764":"Transfer to client","204863103":"Exit time","206010672":"Delete {{ delete_count }} Blocks","207824122":"Please withdraw your funds from the following Deriv account(s):","209533725":"You’ve transferred {{amount}} {{currency}}","210385770":"If you have an active account, please log in to continue. Otherwise, please sign up.","211224838":"Investment","211461880":"Common names and surnames are easy to guess","211847965":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable withdrawals.","216650710":"You are using a demo account","217403651":"St. Vincent & Grenadines","217504255":"Financial assessment submitted successfully","218441288":"Identity card number","220014242":"Upload a selfie from your computer","220019594":"Need more help? Contact us through live chat for assistance.","220186645":"Text Is empty","220232017":"demo CFDs","223120514":"In this example, each point of the SMA line is an arithmetic average of close prices for the last 50 days.","223607908":"Last digit stats for latest 1000 ticks for {{underlying_name}}","224650827":"IOT/USD","224929714":"Virtual events based bets in the UK and the Isle of Man are offered by {{legal_entity_name}}, Millennium House, Level 1, Victoria Road, Douglas IM2 4RW, Isle of Man, licensed and regulated in Great Britain by the Gambling Commission under <0>account no. 39172 and by the Gambling Supervision Commission in the Isle of Man (<1>view licence).","225887649":"This block is mandatory. It's added to your strategy by default when you create new strategy. You can not add more than one copy of this block to the canvas.","227591929":"To timestamp {{ input_datetime }} {{ dummy }}","227903202":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts.","228521812":"Tests whether a string of text is empty. Returns a boolean value (true or false).","229355215":"Trade on {{platform_name_dbot}}","233500222":"- High: the highest price","235583807":"SMA is a frequently used indicator in technical analysis. It calculates the average market price over a specified period, and is usually used to identify market trend direction: up or down. For example, if the SMA is moving upwards, it means the market trend is up. ","236642001":"Journal","238496287":"Leverage trading is high-risk, so it's a good idea to use risk management features such as stop loss. Stop loss allows you to","243537306":"1. Under the Blocks menu, go to Utility > Variables.","243614144":"This is only available for existing clients.","245005091":"lower","245187862":"The DRC will make a <0>decision on the complaint (please note that the DRC mentions no timeframe for announcing its decision).","245812353":"if {{ condition }} return {{ value }}","246428134":"Step-by-step guides","247418415":"Gaming trading can become a real addiction, as can any other activity pushed to its limits. To avoid the danger of such an addiction, we provide a reality-check that gives you a summary of your trades and accounts on a regular basis.","248153700":"Reset your password","248565468":"Check your {{ identifier_title }} account email and click the link in the email to proceed.","248909149":"Send a secure link to your phone","251134918":"Account Information","251322536":"Deriv EZ accounts","251445658":"Dark theme","251882697":"Thank you! Your response has been recorded into our system.<0/><0/>Please click ‘OK’ to continue.","254912581":"This block is similar to EMA, except that it gives you the entire EMA line based on the input list and the given period.","256031314":"Cash Business","256602726":"If you close your account:","258448370":"MT5","258912192":"Trading assessment","260069181":"An error occured while trying to load the URL","260086036":"Place blocks here to perform tasks once when your bot starts running.","260361841":"Tax Identification Number can't be longer than 25 characters.","261074187":"4. Once the blocks are loaded onto the workspace, tweak the parameters if you want, or hit Run to start trading.","261250441":"Drag the <0>Trade again block and add it into the <0>do part of the <0>Repeat until block.","262095250":"If you select <0>\"Put\", you’ll earn a payout if the final price is below the strike price at expiry. Otherwise, you won’t receive a payout.","264976398":"3. 'Error' displays a message in red to highlight something that needs to be resolved immediately.","265644304":"Trade types","267992618":"The platforms lack key features or functionality.","268940240":"Your balance ({{format_balance}} {{currency}}) is less than the current minimum withdrawal allowed ({{format_min_withdraw_amount}} {{currency}}). Please top up your account to continue with your withdrawal.","269322978":"Deposit with your local currency via peer-to-peer exchange with fellow traders in your country.","269607721":"Upload","270339490":"If you select \"Over\", you will win the payout if the last digit of the last tick is greater than your prediction.","270610771":"In this example, the open price of a candle is assigned to the variable \"candle_open_price\".","270712176":"descending","270780527":"You've reached the limit for uploading your documents.","272042258":"When you set your limits, they will be aggregated across all your account types in {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} and {{platform_name_bbot}} on Deriv. For example, the losses made on all four platforms will add up and be counted towards the loss limit you set.","272179372":"This block is commonly used to adjust the parameters of your next trade and to implement stop loss/take profit logic.","273350342":"Copy and paste the token into the app.","273728315":"Should not be 0 or empty","274268819":"Volatility 100 Index","275116637":"Deriv X","277469417":"Exclude time cannot be for more than five years.","278684544":"get sub-list from # from end","280021988":"Use these shortcuts","282319001":"Check your image","282564053":"Next, we'll need your proof of address.","283830551":"Your address doesn’t match your profile","283986166":"Self-exclusion on the website only applies to your {{brand_website_name}} account and does not include other companies or websites.","284527272":"antimode","284772879":"Contract","284809500":"Financial Demo","287934290":"Are you sure you want to cancel this transaction?","289898640":"TERMS OF USE","291744889":"<0>1. Trade parameters:<0>","291817757":"Go to our Deriv community and learn about APIs, API tokens, ways to use Deriv APIs, and more.","292491635":"If you select “Stop loss” and specify an amount to limit your loss, your position will be closed automatically when your loss is more than or equals to this amount. Your loss may be more than the amount you entered depending on the market price at closing.","292526130":"Tick and candle analysis","292589175":"This will display the SMA for the specified period, using a candle list.","292887559":"Transfer to {{selected_value}} is not allowed, Please choose another account from dropdown","294305803":"Manage account settings","294335229":"Sell at market price","295173783":"Long/Short","301441673":"Select your citizenship/nationality as it appears on your passport or other government-issued ID.","303959005":"Sell Price:","304309961":"We're reviewing your withdrawal request. You may still cancel this transaction if you wish. Once we start processing, you won't be able to cancel.","310234308":"Close all your positions.","312142140":"Save new limits?","312300092":"Trims the spaces within a given string or text.","313298169":"Our cashier is temporarily down due to system maintenance. You can access the Cashier in a few minutes when the maintenance is complete.","313741895":"This block returns “True” if the last candle is black. It can be placed anywhere on the canvas except within the Trade parameters root block.","315306603":"You have an account that do not have currency assigned. Please choose a currency to trade with this account.","316694303":"Is candle black?","318865860":"close","318984807":"This block repeats the instructions contained within for a specific number of times.","321457615":"Oops, something went wrong!","323179846":"The time interval for each candle can be set from one minute to one day.","323209316":"Select a Deriv Bot Strategy","323360883":"Baskets","325662004":"Expand Block","325763347":"result","326770937":"Withdraw {{currency}} ({{currency_symbol}}) to your wallet","327534692":"Duration value is not allowed. To run the bot, please enter {{min}}.","328539132":"Repeats inside instructions specified number of times","329353047":"Malta Financial Services Authority (MFSA) (licence no. IS/70156)","329404045":"<0>Switch to your real account<1> to create a {{platform}} {{account_title}} account.","333121115":"Select Deriv MT5's account type","333456603":"Withdrawal limits","333807745":"Click on the block you want to remove and press Delete on your keyboard.","334680754":"Switch to your real account to create a Deriv MT5 account","334942497":"Buy time","335040248":"About us","337023006":"Start time cannot be in the past.","339449279":"Remaining time","339610914":"Spread Up/Spread Down","339879944":"GBP/USD","340807218":"Description not found.","342181776":"Cancel transaction","343873723":"This block displays a message. You can specify the color of the message and choose from 6 different sound options.","344418897":"These trading limits and self-exclusion help you control the amount of money and time you spend on {{brand_website_name}} and exercise <0>responsible trading.","345320063":"Invalid timestamp","345818851":"Sorry, an internal error occurred. Hit the above checkbox to try again.","347029309":"Forex: standard/micro","347039138":"Iterate (2)","347217485":"Trouble accessing Deriv MT5 on your mobile?","348951052":"Your cashier is currently locked","349047911":"Over","349110642":"<0>{{payment_agent}}<1>'s contact details","350602311":"Stats show the history of consecutive tick counts, i.e. the number of ticks the price remained within range continuously.","351744408":"Tests if a given text string is empty","352363702":"You may see links to websites with a fake Deriv login page where you’ll get scammed for your money.","353731490":"Job done","354945172":"Submit document","357477280":"No face found","359053005":"Please enter a token name.","359649435":"Given candle list is not valid","359809970":"This block gives you the selected candle value from a list of candles within the selected time interval. You can choose from open price, close price, high price, low price, and open time.","360224937":"Logic","360773403":"Bot Builder","362946954":"Our legacy automated trading platform.","363576009":"- High price: the highest price","363738790":"Browser","363990763":"Sell price:","367801124":"Total assets in your Deriv accounts.","368160866":"in list","369035361":"<0>•Your account number","371151609":"Last used","371710104":"This scope will allow third-party apps to buy and sell contracts for you, renew your expired purchases, and top up your demo accounts.","372291654":"Exclude time must be after today.","372645383":"True if the market direction matches the selection","373021397":"random","373306660":"{{label}} is required.","373495360":"This block returns the entire SMA line, containing a list of all values for a given period.","374537470":"No results for \"{{text}}\"","375714803":"Deal Cancellation Error","377231893":"Deriv Bot is unavailable in the EU","379523479":"To avoid loss of funds, do not share tokens with the Admin scope with unauthorised parties.","380606668":"tick","380694312":"Maximum consecutive trades","384303768":"This block returns \"True\" if the last candle is black. It can be placed anywhere on the canvas except within the Trade parameters root block.","386191140":"You can choose between CFD trading accounts or Options and Multipliers accounts","386278304":"Install the {{platform_name_trader}} web app","386502387":"Bot is not running","389923099":"Zoom in","390647540":"Real account","390890891":"Last quarter","391915203":"Hedging","392582370":"Fall Equals","393789743":"Letters, spaces, periods, hyphens, apostrophes only.","396418990":"Offline","396801529":"To start trading, top-up funds from your Deriv account into this account.","398816980":"Launch {{platform_name_trader}} in seconds the next time you want to trade.","401339495":"Verify address","401345454":"Head to the Tutorials tab to do so.","402343402":"Due to an issue on our server, some of your {{platform}} accounts are unavailable at the moment. Please bear with us and thank you for your patience.","403456289":"The formula for SMA is:","404743411":"Total deposits","406359555":"Contract details","406497323":"Sell your active contract if needed (optional)","411482865":"Add {{deriv_account}} account","412433839":"I agree to the <0>terms and conditions.","413594348":"Only letters, numbers, space, hyphen, period, and forward slash are allowed.","417714706":"If your margin level drops below our stop out level, your positions may be closed automatically to protect you from further losses.","417864079":"You’ll not be able to change currency once you have made a deposit.","418265501":"Demo Derived","419485005":"Spot","419496000":"Your contract is closed automatically when your profit is more than or equals to this amount. This block can only be used with the multipliers trade type.","419736603":"If yes, go to <0>Tutorials.","420072489":"CFD trading frequency","422055502":"From","424272085":"We take your financial well-being seriously and want to ensure you are fully aware of the risks before trading.<0/><0/>","424897068":"Do you understand that you could potentially lose 100% of the money you use to trade?","426031496":"Stop","427134581":"Try using another file type.","427617266":"Bitcoin","428709688":"Your preferred time interval between each report:","431267979":"Here’s a quick guide on how to use Deriv Bot on the go.","432273174":"1:100","432508385":"Take Profit: {{ currency }} {{ take_profit }}","432519573":"Document uploaded","433348384":"Real accounts are not available to politically exposed persons (PEPs).","433616983":"2. Investigation phase","434548438":"Highlight function definition","434896834":"Custom functions","436364528":"Your account will be opened with {{legal_entity_name}}, and will be subject to the laws of Saint Vincent and the Grenadines.","436534334":"<0>We've sent you an email.","437138731":"Create a new {{platform}} password","437453244":"Choose your preferred cryptocurrency","437485293":"File type not supported","437904704":"Maximum open positions","438067535":"Over $500,000","439398769":"This strategy is currently not compatible with Deriv Bot.","442520703":"$250,001 - $500,000","443203714":"Your contract will be closed automatically if your loss reaches this amount.","443559872":"Financial SVG","444484637":"Logic negation","445419365":"1 - 2 years","450983288":"Your deposit is unsuccessful due to an error on the blockchain. Please contact your crypto wallet service provider for more info.","451852761":"Continue on your phone","452054360":"Similar to RSI, this block gives you a list of values for each entry in the input list.","453175851":"Your MT5 Financial STP account will be opened through {{legal_entity_name}}. All trading in this account is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA). None of your other accounts, including your Deriv account, is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA).","453409608":"Your profit is the percentage change in market price times your stake and the multiplier of your choice.","454196938":"Regulation:","456746157":"Grant access to your camera from your browser settings","457020083":"It’ll take longer to verify you if we can’t read it","457494524":"1. From the block library, enter a name for the new variable and click Create.","459612953":"Select account","459817765":"Pending","460070238":"Congratulations","460975214":"Complete your Appropriateness Test","461795838":"Please contact us via live chat to unlock it.","462079779":"Resale not offered","463361726":"Select an item","465993338":"Oscar's Grind","466369320":"Your gross profit is the percentage change in market price times your stake and the multiplier chosen here.","466837068":"Yes, increase my limits","467839232":"I trade forex CFDs and other complex financial instruments regularly on other platforms.","473154195":"Settings","474306498":"We’re sorry to see you leave. Your account is now closed.","475492878":"Try Synthetic Indices","476023405":"Didn't receive the email?","477557241":"Remote blocks to load must be a collection.","478280278":"This block displays a dialog box that uses a customised message to prompt for an input. The input can be either a string of text or a number and can be assigned to a variable. When the dialog box is displayed, your strategy is paused and will only resume after you enter a response and click \"OK\".","479420576":"Tertiary","480356486":"*Boom 300 and Crash 300 Index","481276888":"Goes Outside","483279638":"Assessment Completed<0/><0/>","483551811":"Your <0>payout is the sum of your inital stake and profit.","483591040":"Delete all {{ delete_count }} blocks?","485379166":"View transactions","487239607":"Converts a given True or False to the opposite value","488150742":"Resend email","489768502":"Change investor password","491603904":"Unsupported browser","492198410":"Make sure everything is clear","492566838":"Taxpayer identification number","497518317":"Function that returns a value","498562439":"or","499522484":"1. for \"string\": 1325.68 USD","500215405":"Server maintenance starts at 01:00 GMT every Sunday and may last up to 2 hours. You may experience service disruption during this time.","500855527":"Chief Executives, Senior Officials and Legislators","500920471":"This block performs arithmetic operations between two numbers.","501401157":"You are only allowed to make deposits","501537611":"*Maximum number of open positions","502007051":"Demo Swap-Free SVG","502041595":"This block gives you a specific candle from within the selected time interval.","503137339":"Payout limit","505793554":"last letter","508390614":"Demo Financial STP","510815408":"Letters, numbers, spaces, hyphens only","511679687":"Accumulators allow you to express a view on the range of movement of an index and grow your stake exponentially at a fixed <0>growth rate.","514031715":"list {{ input_list }} is empty","514776243":"Your {{account_type}} password has been changed.","514948272":"Copy link","518955798":"7. Run Once at Start","520136698":"Boom 500 Index","521872670":"item","522283618":"Digital options trading experience","522703281":"divisible by","523123321":"- 10 to the power of a given number","524459540":"How do I create variables?","527329988":"This is a top-100 common password","529056539":"Options","529597350":"If you had any open positions, we have closed them and refunded you.","530953413":"Authorised applications","531114081":"3. Contract Type","531675669":"Euro","535041346":"Max. total stake per day","537788407":"Other CFDs Platform","538017420":"0.5 pips","541650045":"Manage {{platform}} password","541700024":"First, enter your driving licence number and the expiry date.","542038694":"Only letters, numbers, space, underscore, and hyphen are allowed for {{label}}.","542305026":"You must also submit a proof of identity.","543413346":"You have no open positions for this asset. To view other open positions, click Go to Reports","543915570":"Forex, stocks, stock indices, cryptocurrencies, synthetic indices","545476424":"Total withdrawals","549479175":"Deriv Multipliers","550589723":"Your stake will grow at {{growth_rate}}% per tick as long as the current spot price remains within ±{{tick_size_barrier}} from the previous spot price.","551569133":"Learn more about trading limits","554135844":"Edit","554410233":"This is a top-10 common password","555351771":"After defining trade parameters and trade options, you may want to instruct your bot to purchase contracts when specific conditions are met. To do that you can use conditional blocks and indicators blocks to help your bot to make decisions.","555881991":"National Identity Number Slip","556264438":"Time interval","558262475":"On your MT5 mobile app, delete your existing Deriv account:","558866810":"Run your bot","559224320":"Our classic “drag-and-drop” tool for creating trading bots, featuring pop-up trading charts, for advanced users.","561982839":"Change your currency","562599414":"This block returns the purchase price for the selected trade type. This block can be used only in the \"Purchase conditions\" root block.","563034502":"We shall try to resolve your complaint within 15 business days. We will inform you of the outcome together with an explanation of our position and propose any remedial measures we intend to take.","563166122":"We shall acknowledge receiving your complaint, review it carefully, and keep you updated on the handling process. We might request further information or clarifications to facilitate the resolution of the complaint.","563652273":"Go to block","565410797":"The below image illustrates how Simple Moving Average Array block works:","566274201":"1. Market","567019968":"A variable is among the most important and powerful components in creating a bot. It is a way to store information, either as text or numbers. The information stored as a variable can be used and changed according to the given instructions. Variables can be given any name, but usually they are given useful, symbolic names so that it is easier to call them during the execution of instructions.","567163880":"Create a {{platform}} password","567755787":"Tax Identification Number is required.","569057236":"In which country was your document issued?","571921777":"Funds protection level","572576218":"Languages","573173477":"Is candle {{ input_candle }} black?","575702000":"Remember, selfies, pictures of houses, or non-related images will be rejected.","576355707":"Select your country and citizenship:","577215477":"count with {{ variable }} from {{ start_number }} to {{ end_number }} by {{ step_size }}","577779861":"Withdrawal","577883523":"4. Awards and orders","578640761":"Call Spread","579529868":"Show all details — including the bottom 2 lines","580431127":"Restart buy/sell on error (disable for better performance): {{ checkbox }}","580665362":"Stays In/Goes Out","580774080":"insert at","581168980":"Legal","582945649":"2 minutes","584028307":"Allow equals","587577425":"Secure my account","587856857":"Want to know more about APIs?","588609216":"Repeat tour","592087722":"Employment status is required.","593459109":"Try a different currency","594937260":"Derived - BVI","595080994":"Example: CR123456789","595136687":"Save Strategy","597089493":"Here is where you can decide to sell your contract before it expires. Only one copy of this block is allowed.","597481571":"DISCLAIMER","597707115":"Tell us about your trading experience.","599469202":"{{secondPast}}s ago","602278674":"Verify identity","603849445":"Strike price","603849863":"Look for the <0>Repeat While/Until, and click the + icon to add the block to the workspace area.","603899222":"Distance to current spot","606240547":"- Natural log","606877840":"Back to today","607807243":"Get candle","609519227":"This is the email address associated with your Deriv account.","609650241":"Infinite loop detected","610537973":"Any information you provide is confidential and will be used for verification purposes only.","611020126":"View address on Blockchain","611786123":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies, Stocks, and Stock Indices","617345387":"If you select \"Reset-Up”, you win the payout if the exit spot is strictly higher than either the entry spot or the spot at reset time.","617910072":"Use your Deriv account email and password to login into the {{ platform }} platform.","618520466":"Example of a cut-off document","619268911":"<0>a.The Financial Commission will investigate the validity of the complaint within 5 business days.","619407328":"Are you sure you want to unlink from {{identifier_title}}?","623192233":"Please complete the <0>Appropriateness Test to access your cashier.","623542160":"Exponential Moving Average Array (EMAA)","624668261":"You’ve just stopped the bot. Any open contracts can be viewed on the <0>Reports page.","625571750":"Entry spot:","626175020":"Standard Deviation Up Multiplier {{ input_number }}","626809456":"Resubmit","627292452":"<0>Your Proof of Identity or Proof of Address did not meet our requirements. Please check your email for further instructions.","627814558":"This block returns a value when a condition is true. Use this block within either of the function blocks above.","628193133":"Account ID","629145209":"In case if the \"AND\" operation is selected, the block returns \"True\" only if both given values are \"True\"","629395043":"All growth rates","632398049":"This block assigns a null value to an item or statement.","634219491":"You have not provided your tax identification number. This information is necessary for legal and regulatory requirements. Please go to <0>Personal details in your account settings, and fill in your latest tax identification number.","636219628":"<0>c.If no settlement opportunity can be found, the complaint will proceed to the determination phase to be handled by the DRC.","639382772":"Please upload supported file type.","640596349":"You have yet to receive any notifications","640730141":"Refresh this page to restart the identity verification process","641420532":"We've sent you an email","642210189":"Please check your email for the verification link to complete the process.","642393128":"Enter amount","642546661":"Upload back of license from your computer","642995056":"Email","644150241":"The number of contracts you have won since you last cleared your stats.","645016681":"Trading frequency in other financial instruments","645902266":"EUR/NZD","647039329":"Proof of address required","647192851":"Contract will be sold at the prevailing market price when the request is received by our servers. This price may differ from the indicated price.","647745382":"Input List {{ input_list }}","648035589":"Other CFD Platforms","649317411":"On the basis of the information provided in relation to your knowledge and experience, we consider that the investments available via this website are not appropriate for you.<0/><1/>","649923867":"Adds a sign to a number to create a barrier offset. (deprecated)","651284052":"Low Tick","651684094":"Notify","652041791":"To create a Deriv X real account, create a Deriv real account first.","652298946":"Date of birth","654264404":"Up to 1:30","654507872":"True-False","654924603":"Martingale","655937299":"We’ll update your limits. Click <0>Accept to acknowledge that you are fully responsible for your actions, and we are not liable for any addiction or loss.","656296740":"While “Deal cancellation” is active:","656893085":"Timestamp","657325150":"This block is used to define trade options within the Trade parameters root block. Some options are only applicable for certain trade types. Parameters such as duration and stake are common among most trade types. Prediction is used for trade types such as Digits, while barrier offsets are for trade types that involve barriers such as Touch/No Touch, Ends In/Out, etc.","659482342":"Please remember that it is your responsibility to keep your answers accurate and up to date. You can update your personal details at any time in your account settings.","660481941":"To access your mobile apps and other third-party apps, you'll first need to generate an API token.","660991534":"Finish","661759508":"On the basis of the information provided in relation to your knowledge and experience, we consider that the investments available via this website are not appropriate for you.<0/><0/>","662548260":"Forex, Stock indices, Commodities and Cryptocurrencies","662578726":"Available","662609119":"Download the MT5 app","665089217":"Please submit your <0>proof of identity to authenticate your account and access your Cashier.","665777772":"XLM/USD","665872465":"In the example below, the opening price is selected, which is then assigned to a variable called \"op\".","666724936":"Please enter a valid ID number.","672008428":"ZEC/USD","673915530":"Jurisdiction and choice of law","674973192":"Use this password to log in to your Deriv MT5 accounts on the desktop, web, and mobile apps.","676159329":"Could not switch to default account.","677918431":"Market: {{ input_market }} > {{ input_submarket }} > {{ input_symbol }}","680334348":"This block was required to correctly convert your old strategy.","680478881":"Total withdrawal limit","681808253":"Previous spot price","681926004":"Example of a blurry document","682056402":"Standard Deviation Down Multiplier {{ input_number }}","684282133":"Trading instruments","685391401":"If you're having trouble signing in, let us know via <0>chat","686312916":"Trading accounts","686387939":"How do I clear my transaction log?","687193018":"Slippage risk","687212287":"Amount is a required field.","688510664":"You've {{two_fa_status}} 2FA on this device. You'll be logged out of your account on other devices (if any). Use your password and a 2FA code to log back in.","689137215":"Purchase price","691956534":"<0>You have added a {{currency}} account.<0> Make a deposit now to start trading.","693396140":"Deal cancellation (expired)","694035561":"Trade options multipliers","696870196":"- Open time: the opening time stamp","697630556":"This market is presently closed.","698037001":"National Identity Number","699159918":"1. Filing complaints","699646180":"A minimum deposit value of <0>{{minimum_deposit}} {{currency}} is required. Otherwise, the funds will be lost and cannot be recovered.","700259824":"Account currency","701034660":"We are still processing your withdrawal request.<0 />Please wait for the transaction to be completed before deactivating your account.","701462190":"Entry spot","701647434":"Search for string","702451070":"National ID (No Photo)","702561961":"Change theme","705299518":"Next, upload the page of your passport that contains your photo.","706413212":"To access the cashier, you are now in your {{regulation}} {{currency}} ({{loginid}}) account.","706727320":"Binary options trading frequency","706755289":"This block performs trigonometric functions.","706960383":"We’ll offer to buy your contract at this price should you choose to sell it before its expiry. This is based on several factors, such as the current spot price, duration, etc. However, we won’t offer a contract value if the remaining duration is below 60 seconds.","707662672":"{{unblock_date}} at {{unblock_time}}","708055868":"Driving licence number","710123510":"repeat {{ while_or_until }} {{ boolean }}","711999057":"Successful","712101776":"Take a photo of your passport photo page","712635681":"This block gives you the selected candle value from a list of candles. You can choose from open price, close price, high price, low price, and open time.","713054648":"Sending","714080194":"Submit proof","714746816":"MetaTrader 5 Windows app","715841616":"Please enter a valid phone number (e.g. +15417541234).","716428965":"(Closed)","718504300":"Postal/ZIP code","720293140":"Log out","720519019":"Reset my password","721011817":"- Raise the first number to the power of the second number","723045653":"You'll log in to your Deriv account with this email address.","723961296":"Manage password","724203548":"You can send your complaint to the <0>European Commission's Online Dispute Resolution (ODR) platform. This is not applicable to UK clients.","724526379":"Learn more with our tutorials","728042840":"To continue trading with us, please confirm where you live.","728824018":"Spanish Index","729651741":"Choose a photo","730473724":"This block performs the \"AND\" or the \"OR\" logic operation with the given values.","731382582":"BNB/USD","734390964":"Insufficient balance","734881840":"false","742469109":"Reset Balance","742676532":"Trade CFDs on forex, derived indices, cryptocurrencies, and commodities with high leverage.","743623600":"Reference","744110277":"Bollinger Bands Array (BBA)","745656178":"Use this block to sell your contract at the market price.","745674059":"Returns the specific character from a given string of text according to the selected option. ","746112978":"Your computer may take a few seconds to update","750886728":"Switch to your real account to submit your documents","751468800":"Start now","751692023":"We <0>do not guarantee a refund if you make a wrong transfer.","752024971":"Reached maximum number of digits","752992217":"This block gives you the selected constant values.","753088835":"Default","753184969":"In providing our services to you, we are required to obtain information from you in order to assess whether a given product or service is appropriate for you (that is, whether you possess the experience and knowledge to understand the risks involved).<0/><1/>","753727511":"Type","755867072":"{{platform_name_mt5}} is not available in {{country}}","756152377":"SMA places equal weight to the entire distribution of values.","758003269":"make list from text","759783233":"For more information and assistance to counselling and support services, please visit <0>begambleaware.org.","760528514":"Please note that changing the value of \"i\" won't change the value of the original item in the list","761576760":"Fund your account to start trading.","762185380":"<0>Multiply returns by <0>risking only what you put in.","762871622":"{{remaining_time}}s","762926186":"A quick strategy is a ready-made strategy that you can use in Deriv Bot. There are 3 quick strategies you can choose from: Martingale, D'Alembert, and Oscar's Grind.","763019867":"Your Gaming account is scheduled to be closed","764366329":"Trading limits","766317539":"Language","770171141":"Go to {{hostname}}","773091074":"Stake:","773309981":"Oil/USD","773336410":"Tether is a blockchain-enabled platform designed to facilitate the use of fiat currencies in a digital manner.","775679302":"{{pending_withdrawals}} pending withdrawal(s)","775706054":"Do you sell trading bots?","776085955":"Strategies","781924436":"Call Spread/Put Spread","783974693":"Avoid recent years","784311461":"Exponential Moving Average (EMA)","784583814":"Linked to your computer","785969488":"Jump 75 Index","787727156":"Barrier","788005234":"NA","792164271":"This is when your contract will expire based on the Duration or End time you’ve selected.","792622364":"Negative balance protection","793526589":"To file a complaint about our service, send an email to <0>complaints@deriv.com and state your complaint in detail. Please submit any relevant screenshots of your trading or system for our better understanding.","793531921":"Our company is one of the oldest and most reputable online trading companies in the world. We are committed to treat our clients fairly and provide them with excellent service.<0/><1/>Please provide us with feedback on how we can improve our services to you. Rest assured that you will be heard, valued, and treated fairly at all times.","793826881":"This is your personal start page for Deriv","794682658":"Copy the link to your phone","795859446":"Password saved","797007873":"Follow these steps to recover camera access:","797500286":"negative","800228448":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}} and {{legal_entity_name_fx}}.","800521289":"Your personal details are incomplete","801430087":"A link can contain the word \"Deriv\" and still be fake.","802436811":"View transaction details","802438383":"New proof of address is needed","802556390":"seconds","802989607":"Drag your XML file here","803500173":"Initial stake","806165583":"Australia 200","807499069":"Financial commission complaints procedure","808323704":"You can also use \"Compare\" and \"Logic operation\" blocks to make test variables.","811876954":"You may transfer between your Deriv fiat, cryptocurrency, {{platform_name_mt5}}, and {{platform_name_dxtrade}} accounts.","812430133":"Spot price on the previous tick.","812775047":"below the barrier","814827314":"The stop-out level on the chart indicates the price at which your potential loss equals your entire stake. When the market price reaches this level, your position will be closed automatically. This ensures that your loss does not exceed the amount you paid to purchase the contract.","815925952":"This block is mandatory. Only one copy of this block is allowed. It is added to the canvas by default when you open Deriv Bot.","816580787":"Welcome back! Your messages have been restored.","816738009":"<0/><1/>You may also raise your unresolved dispute to the <2>Office of the Arbiter for Financial Services.","818447476":"Switch account?","820877027":"Please verify your proof of identity","823186089":"A block that can contain text.","824797920":"Is list empty?","825042307":"Let’s try again","826511719":"USD/SEK","827688195":"Disable Block","828219890":"then","828602451":"Returns the list of tick values in string format","830164967":"Last name","830703311":"My profile","830993327":"No current transactions available","832053636":"Document submission","832217983":"40 transactions or more in the past 12 months","832398317":"Sell Error","832588873":"Order execution","832721563":"If you select \"Low Tick\", you win the payout if the selected tick is the lowest among the next five ticks.","834966953":"1551661986 seconds since Jan 01 1970 (UTC) translates to 03/04/2019 @ 1:13am (UTC).","835058671":"Total buy price","835336137":"View Detail","835350845":"Add another word or two. Uncommon words are better.","836097457":"I am interested in trading but have very little experience.","837063385":"Do not send other currencies to this address.","837066896":"Your document is being reviewed, please check back in 1-3 days.","839618971":"ADDRESS","839805709":"To smoothly verify you, we need a better photo","840672750":"If this doesn’t work, uninstall and re-install the MT5 app. Then redo steps <0>2 and <0>3.","841434703":"Disable stack","841543189":"View transaction on Blockchain","843333337":"You can only make deposits. Please complete the <0>financial assessment to unlock withdrawals.","845213721":"Logout","845304111":"Slow EMA Period {{ input_number }}","847888634":"Please withdraw all your funds.","848083350":"Your payout is equal to the <0>payout per point multiplied by the difference between the final price and the strike price. You will only earn a profit if your payout is higher than your initial stake.","850582774":"Please update your personal info","851054273":"If you select \"Higher\", you win the payout if the exit spot is strictly higher than the barrier.","851264055":"Creates a list with a given item repeated for a specific number of times.","851508288":"This block constrains a given number within a set range.","852527030":"Step 2","852583045":"Tick List String","854399751":"Digit code must only contain numbers.","854630522":"Choose a cryptocurrency account","857363137":"Volatility 300 (1s) Index","857445204":"Deriv currently supports withdrawals of Tether eUSDT to Ethereum wallet. To ensure a successful transaction, enter a wallet address compatible with the tokens you wish to withdraw. <0>Learn more","857986403":"do something","860319618":"Tourism","862283602":"Phone number*","863328851":"Proof of identity","864610268":"First, enter your {{label}} and the expiry date.","864957760":"Math Number Positive","865424952":"High-to-Low","865642450":"2. Logged in from a different browser","866496238":"Make sure your license details are clear to read, with no blur or glare","868826608":"Excluded from {{brand_website_name}} until","869068127":"The cashier is temporarily down due to maintenance. It will be available as soon as the maintenance is complete.","869823595":"Function","869993298":"Minimum withdrawal","872549975":"You have {{number}} transfers remaining for today.","872661442":"Are you sure you want to update email <0>{{prev_email}} to <1>{{changed_email}}?","872721776":"2. Select your XML file and hit Select.","872817404":"Entry Spot Time","873166343":"1. 'Log' displays a regular message.","874461655":"Scan the QR code with your phone","874484887":"Take profit must be a positive number.","875101277":"If I close my web browser, will Deriv Bot continue to run?","875532284":"Restart process on a different device","876086855":"Complete the financial assessment form","876292912":"Exit","879014472":"Reached maximum number of decimals","879647892":"You may sell the contract up until 60 seconds before expiry. If you do, we’ll pay you the <0>contract value.","881963105":"(XAUUSD, XAGUSD)","885065431":"Get a Deriv account","888274063":"Town/City","888924866":"We don’t accept the following inputs for:","890299833":"Go to Reports","891337947":"Select country","892341141":"Your trading statistics since: {{date_time}}","893117915":"Variable","893963781":"Close-to-Low","893975500":"You do not have any recent bots","894191608":"<0>c.We must award the settlement within 28 days of when the decision is reached.","898457777":"You have added a Deriv Financial account.","898904393":"Barrier:","900646972":"page.","902045490":"3 minutes","903429103":"In candles list read {{ candle_property }} # from end {{ input_number }}","904696726":"API token","905134118":"Payout:","905227556":"Strong passwords contain at least 8 characters, combine uppercase and lowercase letters and numbers.","905564365":"MT5 CFDs","906049814":"We’ll review your documents and notify you of its status within 5 minutes.","907680782":"Proof of ownership verification failed","909272635":"Financial - SVG","910888293":"Too many attempts","911048905":"(BTCUSD, ETHUSD)","912406629":"Follow these steps:","912967164":"Import from your computer","915735109":"Back to {{platform_name}}","918447723":"Real","920125517":"Add demo account","921901739":"- your account details of the bank linked to your account","924046954":"Upload a document showing your name and bank account number or account details.","926813068":"Fixed/Variable","929608744":"You are unable to make withdrawals","930346117":"Capitalization doesn't help very much","930546422":"Touch","933126306":"Enter some text here","933193610":"Only letters, periods, hyphens, apostrophes, and spaces, please.","934835052":"Potential profit","934932936":"PERSONAL","936766426":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit.","937237342":"Strategy name cannot be empty","937682366":"Upload both of these documents to prove your identity.","937831119":"Last name*","937992258":"Table","938500877":"{{ text }}. <0>You can view the summary of this transaction in your email.","938947787":"Withdrawal {{currency}}","938988777":"High barrier","943535887":"Please close your positions in the following Deriv MT5 account(s):","944499219":"Max. open positions","945532698":"Contract sold","946204249":"Read","946841802":"A white (or green) candle indicates that the open price is lower than the close price. This represents an upward movement of the market price.","946944859":"Hit the button below and we'll send you an email with a link. Click that link to verify your withdrawal request.","947046137":"Your withdrawal will be processed within 24 hours","947363256":"Create list","947758334":"City is required","947914894":"Top up  <0>","948156236":"Create {{type}} password","948176566":"New!","948545552":"150+","949859957":"Submit","952927527":"Regulated by the Malta Financial Services Authority (MFSA) (licence no. IS/70156)","955352264":"Trade on {{platform_name_dxtrade}}","956448295":"Cut-off image detected","957182756":"Trigonometric functions","958430760":"In/Out","959031082":"set {{ variable }} to MACD Array {{ dropdown }} {{ dummy }}","960201789":"3. Sell conditions","961178214":"You can only purchase one contract at a time","961266215":"140+","961327418":"My computer","961692401":"Bot","966457287":"set {{ variable }} to Exponential Moving Average {{ dummy }}","968576099":"Up/Down","969987233":"Win up to maximum payout if exit spot is between lower and upper barrier, in proportion to the difference between exit spot and lower barrier.","970915884":"AN","975668699":"I confirm and accept {{company}} 's <0>Terms and Conditions","975950139":"Country of Residence","977929335":"Go to my account settings","981138557":"Redirect","981568830":"You have chosen to exclude yourself from trading on our website until {{exclude_until}}. If you are unable to place a trade or deposit after your self-exclusion period, please contact us via <0>live chat.","981965437":"Scan the QR code below with your 2FA app. We recommend <0>Authy or <1>Google Authenticator.","982146443":"WhatsApp","982402892":"First line of address","982829181":"Barriers","983451828":"2. Select the asset and trade type.","987224688":"How many trades have you placed with other financial instruments in the past 12 months?","988064913":"4. Come back to Deriv Bot and add the Notify Telegram block to the workspace. Paste the Telegram API token and chat ID into the block fields accordingly.","988361781":"You have no trading activity yet.","988934465":"When prompted, you must enable camera access to continue","990739582":"170+","992294492":"Your postal code is invalid","992677950":"Logging out on other devices","993827052":"Choosing this jurisdiction will give you a Financial STP account. Your trades will go directly to the market and have tighter spreads.","995563717":"not {{ boolean }}","999008199":"text","1001160515":"Sell","1001749987":"You’ll get a warning, named margin call, if your account balance drops down close to the stop out level.","1003876411":"Should start with letter or number and may contain a hyphen, period and slash.","1004127734":"Send email","1006458411":"Errors","1006664890":"Silent","1009032439":"All time","1010198306":"This block creates a list with strings and numbers.","1010337648":"We were unable to verify your proof of ownership.","1011424042":"{{text}}. stake<0/>","1012102263":"You will not be able to log in to your account until this date (up to 6 weeks from today).","1015201500":"Define your trade options such as duration and stake.","1016220824":"You need to switch to a real money account to use this feature.<0/>You can do this by selecting a real account from the <1>Account Switcher.","1018803177":"standard deviation","1019265663":"You have no transactions yet.","1019508841":"Barrier 1","1021679446":"Multipliers only","1022934784":"1 minute","1023237947":"1. In the example below, the instructions are repeated as long as the value of x is less than or equal to 10. Once the value of x exceeds 10, the loop is terminated.","1023643811":"This block purchases contract of a specified type.","1023795011":"Even/Odd","1024205076":"Logic operation","1025887996":"Negative Balance Protection","1026046972":"Please enter a payout amount that's lower than {{max_payout}}.","1026289179":"Trade on the go","1027098103":"Leverage gives you the ability to trade a larger position using your existing capital. Leverage varies across different symbols.","1028211549":"All fields are required","1028758659":"Citizenship*","1029164365":"We presume that you possess the experience, knowledge, and expertise to make your own investment decisions and properly assess the risk involved.","1030021206":"change {{ variable }} by {{ number }}","1031602624":"We've sent a secure link to %{number}","1031731167":"Pound Sterling","1032173180":"Deriv","1032907147":"AUD/NZD","1033076894":"- current profit/loss: Use this variable to store the cumulative profit or loss while your bot is running. Set the initial value to 0.","1035893169":"Delete","1036116144":"Speculate on the price movement of an asset without actually owning it.","1036867749":"The desired duration, stake, prediction, and/or barrier(s) for the contract is defined here.","1038575777":"Change password","1039428638":"EU regulation","1039755542":"Use a few words, avoid common phrases","1040472990":"1. Go to Bot Builder.","1040677897":"To continue trading, you must also submit a proof of address.","1041001318":"This block performs the following operations on a given list: sum, minimum, maximum, average, median, mode, antimode, standard deviation, random item.","1041620447":"If you are unable to scan the QR code, you can manually enter this code instead:","1042659819":"You have an account that needs action","1043790274":"There was an error","1044540155":"100+","1044599642":"<0> has been credited into your {{platform}} {{title}} account.","1045704971":"Jump 150 Index","1045782294":"Click the <0>Change password button to change your Deriv password.","1047389068":"Food Services","1047881477":"Unfortunately, your browser does not support the video.","1048687543":"Labuan Financial Services Authority","1048947317":"Sorry, this app is unavailable in {{clients_country}}.","1049384824":"Rise","1050063303":"Videos on Deriv Bot","1050128247":"I confirm that I have verified the payment agent’s transfer information.","1050844889":"Reports","1052779010":"You are on your demo account","1053153674":"Jump 50 Index","1053159279":"Level of education","1053556481":"Once you submit your complaint, we will send you an acknowledgement email to confirm that we have received it.","1055313820":"No document detected","1056381071":"Return to trade","1056821534":"Are you sure?","1057216772":"text {{ input_text }} is empty","1057749183":"Two-factor authentication (2FA)","1057765448":"Stop out level","1057904606":"The concept of the D’Alembert Strategy is said to be similar to the Martingale Strategy where you will increase your contract size after a loss. With the D’Alembert Strategy, you will also decrease your contract size after a successful trade.","1058804653":"Expiry","1060231263":"When are you required to pay an initial margin?","1061308507":"Purchase {{ contract_type }}","1062423382":"Explore the video guides and FAQs to build your bot in the tutorials tab.","1062536855":"Equals","1065353420":"110+","1065498209":"Iterate (1)","1066235879":"Transferring funds will require you to create a second account.","1066459293":"4.3. Acknowledging your complaint","1069347258":"The verification link you used is invalid or expired. Please request for a new one.","1069576070":"Purchase lock","1070624871":"Check proof of address document verification status","1073261747":"Verifications","1076006913":"Profit/loss on the last {{item_count}} contracts","1077515534":"Date to","1078221772":"Leverage prevents you from opening large positions.","1080068516":"Action","1080990424":"Confirm","1082158368":"*Maximum account cash balance","1082406746":"Please enter a stake amount that's at least {{min_stake}}.","1083781009":"Tax identification number*","1083826534":"Enable Block","1086118495":"Traders Hub","1087112394":"You must select the strike price before entering the contract.","1088031284":"Strike:","1088138125":"Tick {{current_tick}} - ","1089085289":"Mobile number","1089436811":"Tutorials","1089687322":"Stop your current bot?","1090041864":"The {{block_type}} block is mandatory and cannot be deleted/disabled.","1095295626":"<0>•The Arbiter for Financial Services will determine whether the complaint can be accepted and is in accordance with the law.","1096078516":"We’ll review your documents and notify you of its status within 3 days.","1096175323":"You’ll need a Deriv account","1098147569":"Purchase commodities or shares of a company.","1098622295":"\"i\" starts with the value of 1, and it will be increased by 2 at every iteration. The loop will repeat until \"i\" reaches the value of 12, and then the loop is terminated.","1100133959":"National ID","1100870148":"To learn more about account limits and how they apply, please go to the <0>Help Centre.","1101560682":"stack","1101712085":"Buy Price","1102420931":"Next, upload the front and back of your driving licence.","1102995654":"Calculates Exponential Moving Average (EMA) list from a list of values with a period","1103309514":"Target","1103452171":"Cookies help us to give you a better experience and personalised content on our site.","1104912023":"Pending verification","1107474660":"Submit proof of address","1107555942":"To","1109217274":"Success!","1110102997":"Statement","1112582372":"Interval duration","1113119682":"This block gives you the selected candle value from a list of candles.","1113292761":"Less than 8MB","1114679006":"You have successfully created your bot using a simple strategy.","1117281935":"Sell conditions (optional)","1117863275":"Security and safety","1118294625":"You have chosen to exclude yourself from trading on our website until {{exclusion_end}}. If you are unable to place a trade or deposit after your self-exclusion period, please contact us via live chat.","1119887091":"Verification","1119986999":"Your proof of address was submitted successfully","1120985361":"Terms & conditions updated","1122910860":"Please complete your <0>financial assessment.","1123927492":"You have not selected your account currency","1125090693":"Must be a number","1126075317":"Add your Deriv MT5 <0>{{account_type_name}} STP account under Deriv (FX) Ltd regulated by Labuan Financial Services Authority (Licence no. MB/18/0024).","1126934455":"Length of token name must be between 2 and 32 characters.","1127149819":"Make sure§","1127224297":"Sorry for the interruption","1128139358":"How many CFD trades have you placed in the past 12 months?","1128321947":"Clear All","1128404172":"Undo","1129124569":"If you select \"Under\", you will win the payout if the last digit of the last tick is less than your prediction.","1129842439":"Please enter a take profit amount.","1130744117":"We shall try to resolve your complaint within 10 business days. We will inform you of the outcome together with an explanation of our position and propose any remedial measures we intend to take.","1130791706":"N","1133651559":"Live chat","1134879544":"Example of a document with glare","1138126442":"Forex: standard","1139483178":"Enable stack","1143730031":"Direction is {{ direction_type }}","1144028300":"Relative Strength Index Array (RSIA)","1145927365":"Run the blocks inside after a given number of seconds","1146064568":"Go to Deposit page","1147269948":"Barrier cannot be zero.","1147625645":"Please proceed to withdraw all your funds from your account before <0>30 November 2021.","1150637063":"*Volatility 150 Index and Volatility 250 Index","1151964318":"both sides","1152294962":"Upload the front of your driving licence.","1154021400":"list","1154239195":"Title and name","1155011317":"This block converts the date and time to the number of seconds since the Unix Epoch (1970-01-01 00:00:00).","1155626418":"below","1158678321":"<0>b.The Head of the Dispute Resolution Committee (DRC) will contact both you and us within 5 business days to obtain all necessary information and see if there is a chance to settle the complaint during the investigation phase.","1160761178":"No payout if exit spot is below or equal to the lower barrier.","1161924555":"Please select an option","1163771266":"The third block is <0>optional. You may use this block if you want to sell your contract before it expires. For now, leave the block as it is. ","1163836811":"Real Estate","1164773983":"Take profit and/or stop loss are not available while deal cancellation is active.","1166128807":"Choose one of your accounts or add a new cryptocurrency account","1166377304":"Increment value","1168029733":"Win payout if exit spot is also equal to entry spot.","1169201692":"Create {{platform}} password","1170228717":"Stay on {{platform_name_trader}}","1171765024":"Step 3","1171961126":"trade parameters","1172524677":"CFDs Demo","1174542625":"- Find the chat ID property in the response, and copy the value of the id property","1174748431":"Payment channel","1175183064":"Vanuatu","1176926166":"Experience with trading other financial instruments","1177396776":"If you select \"Asian Fall\", you will win the payout if the last tick is lower than the average of the ticks.","1177723589":"There are no transactions to display","1178582280":"The number of contracts you have lost since you last cleared your stats.","1178800778":"Take a photo of the back of your license","1178942276":"Please try again in a minute.","1179704370":"Please enter a take profit amount that's higher than the current potential profit.","1180619731":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts, up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts, and up to {{ allowed_dxtrade }} transfers between your Deriv and {{platform_name_dxtrade}} accounts.","1181396316":"This block gives you a random number from within a set range","1181770592":"Profit/loss from selling","1183007646":"- Contract type: the name of the contract type such as Rise, Fall, Touch, No Touch, etс.","1184968647":"Close your contract now or keep it running. If you decide to keep it running, you can check and close it later on the ","1188316409":"To receive your funds, contact the payment agent with the details below","1188980408":"5 minutes","1189249001":"4.1. What is considered a complaint?","1189368976":"Please complete your personal details before you verify your identity.","1191429031":"Please click on the link in the email to change your <0>{{platform_name_dxtrade}} password.","1191644656":"Predict the market direction and select either “Up” or “Down” to open a position. We will charge a commission when you open a position.","1192708099":"Duration unit","1195393249":"Notify {{ notification_type }} with sound: {{ notification_sound }} {{ input_message }}","1196006480":"Profit threshold","1196683606":"Deriv MT5 CFDs demo account","1197326289":"You are no longer able to trade digital options on any of our platforms. Also, you can’t make deposits into your Options account.","1198368641":"Relative Strength Index (RSI)","1199281499":"Last Digits List","1201533528":"Contracts won","1201773643":"numeric","1203297580":"This block sends a message to a Telegram channel.","1204223111":"In this example, the open prices from a list of candles are assigned to a variable called \"candle_list\".","1206227936":"How to mask your card?","1206821331":"Armed Forces","1207152000":"Choose a template and set your trade parameters.","1208714859":"For Short:","1208729868":"Ticks","1208903663":"Invalid token","1211912982":"Bot is starting","1214893428":"Account creation is currently unavailable for mobile. Please log in with your computer to create a new account.","1216408337":"Self-Employed","1217159705":"Bank account number","1217481729":"Tether as an ERC20 token (eUSDT) is a version of Tether that is hosted on Ethereum.","1218546232":"What is Fiat onramp?","1219844088":"do %1","1221250438":"To enable withdrawals, please submit your <0>Proof of Identity (POI) and <1>Proof of Address (POA) and also complete the <2>financial assessment in your account settings.","1222096166":"Deposit via bank wire, credit card, and e-wallet","1222521778":"Making deposits and withdrawals is difficult.","1222544232":"We’ve sent you an email","1225150022":"Number of assets","1227074958":"random fraction","1227240509":"Trim spaces","1228534821":"Some currencies may not be supported by payment agents in your country.","1229883366":"Tax identification number","1230884443":"State/Province (optional)","1231282282":"Use only the following special characters: {{permitted_characters}}","1232291311":"Maximum withdrawal remaining","1232353969":"0-5 transactions in the past 12 months","1233300532":"Payout","1234292259":"Source of wealth","1234764730":"Upload a screenshot of your name and email address from the personal details section.","1235426525":"50%","1237330017":"Pensioner","1238311538":"Admin","1239752061":"In your cryptocurrency wallet, make sure to select the <0>{{network_name}} network when you transfer funds to Deriv.","1239760289":"Complete your trading assessment","1239940690":"Restarts the bot when an error is encountered.","1240027773":"Please Log in","1240688917":"Glossary","1241238585":"You may transfer between your Deriv fiat, cryptocurrency, and {{platform_name_mt5}} accounts.","1242288838":"Hit the checkbox above to choose your document.","1242994921":"Click here to start building your Deriv Bot.","1243064300":"Local","1243287470":"Transaction status","1246207976":"Enter the authentication code generated by your 2FA app:","1246880072":"Select issuing country","1247280835":"Our cryptocurrency cashier is temporarily down due to system maintenance. You can make cryptocurrency deposits and withdrawals in a few minutes when the maintenance is complete.","1248018350":"Source of income","1248940117":"<0>a.The decisions made by the DRC are binding on us. DRC decisions are binding on you only if you accept them.","1250495155":"Token copied!","1252669321":"Import from your Google Drive","1253531007":"Confirmed","1254565203":"set {{ variable }} to create list with","1255827200":"You can also import or build your bot using any of these shortcuts.","1255909792":"last","1255963623":"To date/time {{ input_timestamp }} {{ dummy }}","1258097139":"What could we do to improve?","1258198117":"positive","1259598687":"GBP/JPY","1260259925":"Phone is not in a proper format.","1263387702":"All {{count}} account types use market execution. This means you agree with the broker's price in advance and will place orders at the broker's price.","1264096613":"Search for a given string","1264842111":"You can switch between real and demo accounts.","1265704976":"","1269296089":"Let's build a Bot!","1270581106":"If you select \"No Touch\", you win the payout if the market never touches the barrier at any time during the contract period.","1271461759":"Your contract will be closed automatically if your profit reaches this amount.","1272012156":"GBP/CHF","1272337240":"Days","1272681097":"Hours","1274819385":"3. Complaints and Disputes","1281045211":"Sorts the items in a given list, by their numeric or alphabetical value, in either ascending or descending order.","1281290230":"Select","1282951921":"Only Downs","1284522768":"If \"Loss\" is selected, it will return \"True\" if your last trade was unsuccessful. Otherwise, it will return an empty string.","1286094280":"Withdraw","1286507651":"Close identity verification screen","1288965214":"Passport","1289146554":"British Virgin Islands Financial Services Commission","1289646209":"Margin call","1290525720":"Example: ","1291887623":"Digital options trading frequency","1291997417":"Contracts will expire at exactly 23:59:59 GMT on your selected expiry date.","1292188546":"Reset Deriv MT5 investor password","1292891860":"Notify Telegram","1293660048":"Max. total loss per day","1294756261":"This block creates a function, which is a group of instructions that can be executed at any time. Place other blocks in here to perform any kind of action that you need in your strategy. When all the instructions in a function have been carried out, your bot will continue with the remaining blocks in your strategy. Click the “do something” field to give it a name of your choice. Click the plus icon to send a value (as a named variable) to your function.","1295284664":"Please accept our <0>updated Terms and Conditions to proceed.","1296380713":"Close my contract","1299479533":"8 hours","1300576911":"Please resubmit your proof of address or we may restrict your account.","1302691457":"Occupation","1303016265":"Yes","1303530014":"We’re processing your withdrawal.","1304083330":"copy","1304272843":"Please submit your proof of address.","1304620236":"Enable camera","1304788377":"<0/><1/>If your complaint relates to our data processing practices, you can submit a formal complaint to the <2>Information and Data Protection Commissioner (Malta) on their website or make a complaint to any supervisory authority within the European Union.","1304807342":"Compare CFDs demo accounts","1305217290":"Upload the back of your identity card.","1308625834":"Sets the default time interval for blocks that read list of candles.","1309017029":"Enabling this allows you to save your blocks as one collection which can be easily integrated into other bots.","1309044871":"Returns the value of the latest tick in string format","1309133590":"Earn a range of payouts by correctly predicting market movements with <0>options, or get the upside of CFDs without risking more than your initial stake with <1>multipliers.","1309186223":"- current stake: Use this variable to store the stake amount used in the last contract. You can assign any amount you want, but it must be a positive number.","1310483610":"Results for \"{{ search_term }}\"","1311680770":"payout","1313167179":"Please log in","1316216284":"You can use this password for all your {{platform}} accounts.","1319217849":"Check your mobile","1320750775":"Front and back","1322804930":"Restart the process on the latest version of Google Chrome","1323327633":"Our complaints process comprises the following 4 steps:","1323476617":"Changes the capitalisation of a string of text to Upper case, Lower case, Title case.","1323941798":"Short","1323996051":"Profile","1324922837":"2. The new variable will appear as a block under Set variable.","1325514262":"(licence no. MB/18/0024)","1327181172":"Financial Vanuatu","1327494533":"{{sell_value}} (Sell)","1329136554":"Jump 200 Index","1329325646":"The content of this block is called on every tick","1331199417":"Please enter the correct format. ","1331367811":"Client account number","1332168410":"Learn more","1332168769":"Disconnect","1333576137":"Please update your {{details}} to continue.","1333839457":"Submit identity card (front)","1334326985":"It may take a few minutes to arrive","1335967988":"Notice","1336052175":"Switch accounts","1337846406":"This block gives you the selected candle value from a list of candles within the selected time interval.","1337864666":"Photo of your document","1338496204":"Ref. ID","1339613797":"Regulator/External dispute resolution","1341840346":"View in Journal","1346204508":"Take profit","1346339408":"Managers","1347071802":"{{minutePast}}m ago","1348009461":"Please close your positions in the following Deriv X account(s):","1349133669":"Try changing your search criteria.","1349289354":"Great, that's everything we need","1349295677":"in text {{ input_text }} get substring from {{ position1 }} {{ index1 }} to {{ position2 }} {{ index2 }}","1351906264":"This feature is not available for payment agents.","1353197182":"Please select","1354288636":"Based on your answers, it looks like you have insufficient knowledge and experience in trading CFDs. CFD trading is risky and you could potentially lose all of your capital.<0/><0/>","1355250245":"{{ calculation }} of list {{ input_list }}","1356373528":"Run Deriv EZ on your browser","1356574493":"Returns a specific portion of a given string of text.","1356607862":"Deriv password","1357129681":"{{num_day}} days {{num_hour}} hours {{num_minute}} minutes","1357213116":"Identity card","1358543466":"Not available","1358543748":"enabled","1359424217":"You have sold this contract at <0 />","1360929368":"Add a Deriv account","1362578283":"High","1363060668":"Your trading statistics since:","1363645836":"Derived FX","1363675688":"Duration is a required field.","1364958515":"Stocks","1366244749":"Limits","1367023655":"To ensure your loss does not exceed your stake, your contract will be closed automatically when your loss equals to <0/>.","1367488817":"4. Restart trading conditions","1367990698":"Volatility 10 Index","1369709538":"Our terms of use","1370647009":"Enjoy higher daily limits","1371193412":"Cancel","1371555192":"Choose your preferred payment agent and enter your withdrawal amount. If your payment agent is not listed, <0>search for them using their account number.","1371641641":"Open the link on your mobile","1371911731":"Financial products in the EU are offered by {{legal_entity_name}}, licensed as a Category 3 Investment Services provider by the Malta Financial Services Authority (<0>Licence no. IS/70156).","1374627690":"Max. account balance","1375884086":"Financial, legal, or government document: recent bank statement, affidavit, or government-issued letter.","1376329801":"Last 60 days","1378419333":"Ether","1380349261":"Range","1383017005":"You have switched accounts.","1384127719":"You should enter {{min}}-{{max}} numbers.","1384222389":"Please submit valid identity documents to unlock the cashier.","1385418910":"Please set a currency for your existing real account before creating another account.","1387503299":"Log in","1388770399":"Proof of identity required","1389197139":"Import error","1390792283":"Trade parameters","1391174838":"Potential payout:","1392966771":"Mrs","1392985917":"This is similar to a commonly used password","1393559748":"Invalid date/time: {{ datetime_string }}","1393901361":"There’s an app for that","1393903598":"if true {{ return_value }}","1396179592":"Commission","1396417530":"Bear Market Index","1397628594":"Insufficient funds","1400341216":"We’ll review your documents and notify you of its status within 1 to 3 days.","1400732866":"View from camera","1402208292":"Change text case","1403376207":"Update my details","1405584799":"with interval: {{ candle_interval_type }}","1407191858":"DTrader","1408844944":"Click the plus icon to extend the functionality of this block.","1411373212":"Strong passwords contain at least 8 characters. combine uppercase and lowercase letters, numbers, and symbols.","1412535872":"You can check the result of the last trade with this block. It can only be placed within the \"Restart trading conditions\" root block.","1413047745":"Assigns a given value to a variable","1413359359":"Make a new transfer","1414205271":"prime","1415006332":"get sub-list from first","1415974522":"If you select \"Differs\", you will win the payout if the last digit of the last tick is not the same as your prediction.","1417558007":"Max. total loss over 7 days","1417914636":"Login ID","1418115525":"This block repeats instructions as long as a given condition is true.","1421749665":"Simple Moving Average (SMA)","1422060302":"This block replaces a specific item in a list with another given item. It can also insert the new item in the list at a specific position.","1422129582":"All details must be clear — nothing blurry","1423082412":"Last Digit","1423296980":"Enter your SSNIT number","1424741507":"See more","1424779296":"If you've recently used bots but don't see them in this list, it may be because you:","1428657171":"You can only make deposits. Please contact us via <0>live chat for more information.","1430396558":"5. Restart buy/sell on error","1430632931":"To get trading, please confirm who you are, and where you live.","1433367863":"Sorry, an error occured while processing your request.","1433468641":"We offer our services in all countries, except for the ones mentioned in our terms and conditions.","1434382099":"Displays a dialog window with a message","1434767075":"Get started on Deriv Bot","1434976996":"Announcement","1435363248":"This block converts the number of seconds since the Unix Epoch to a date and time format such as 2019-08-01 00:00:00.","1435380105":"Minimum deposit","1437396005":"Add comment","1438247001":"A professional client receives a lower degree of client protection due to the following.","1438340491":"else","1439168633":"Stop loss:","1441208301":"Total<0 />profit/loss","1442747050":"Loss amount: <0>{{profit}}","1442840749":"Random integer","1443478428":"Selected proposal does not exist","1444843056":"Corporate Affairs Commission","1445592224":"You accidentally gave us another email address (Usually a work or a personal one instead of the one you meant).","1446742608":"Click here if you ever need to repeat this tour.","1449462402":"In review","1452260922":"Too many failed attempts","1452941569":"This block delays execution for a given number of seconds. You can place any blocks within this block. The execution of other blocks in your strategy will be paused until the instructions in this block are carried out.","1453317405":"This block gives you the balance of your account either as a number or a string of text.","1454406889":"Choose <0>until as the repeat option.","1454648764":"deal reference id","1454865058":"Do not enter an address linked to an ICO purchase or crowdsale. If you do, the ICO tokens will not be credited into your account.","1455741083":"Upload the back of your driving licence.","1457341530":"Your proof of identity verification has failed","1457603571":"No notifications","1458160370":"Enter your {{platform}} password to add a {{platform_name}} {{account}} {{jurisdiction_shortcode}} account.","1459761348":"Submit proof of identity","1461323093":"Display messages in the developer’s console.","1464190305":"This block will transfer the control back to the Purchase conditions block, enabling you to purchase another contract without manually stopping and restarting your bot.","1464253511":"You already have an account for each of the cryptocurrencies available on {{deriv}}.","1465084972":"How much experience do you have with other financial instruments?","1465919899":"Pick an end date","1466430429":"Should be between {{min_value}} and {{max_value}}","1466900145":"Doe","1467017903":"This market is not yet available on {{platform_name_trader}}, but it is on {{platform_name_smarttrader}}.","1467421920":"with interval: %1","1467661678":"Cryptocurrency trading","1467880277":"3. General queries","1468308734":"This block repeats instructions as long as a given condition is true","1468419186":"Deriv currently supports withdrawals of Tether USDT to Omni wallet. To ensure a successful transaction, enter a wallet address compatible with the tokens you wish to withdraw. <0>Learn more","1468937050":"Trade on {{platform_name_trader}}","1469150826":"Take Profit","1469764234":"Cashier Error","1469814942":"- Division","1470319695":"Returns either True or False","1471008053":"Deriv Bot isn't quite ready for real accounts","1471070549":"Can contract be sold?","1471741480":"Severe error","1473369747":"Synthetics only","1476301886":"Similar to SMA, this block gives you the entire SMA line containing a list of all values for a given period.","1478030986":"Create or delete API tokens for trading and withdrawals","1480915523":"Skip","1481977420":"Please help us verify your withdrawal request.","1483470662":"Click ‘Open’ to start trading with your account","1484336612":"This block is used to either terminate or continue a loop, and can be placed anywhere within a loop block.","1487086154":"Your documents were submitted successfully","1488548367":"Upload again","1491392301":"<0>Sold for: {{sold_for}}","1492686447":"Your MT5 Financial STP account will be opened through Deriv (FX) Ltd. All trading in this account is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA). None of your other accounts, including your Deriv account, is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA).","1493673429":"Change email","1493866481":"Run Deriv X on your browser","1496810530":"GBP/AUD","1497773819":"Deriv MT5 accounts","1499074768":"Add a real Deriv Multipliers account","1499080621":"Tried to perform an invalid operation.","1501691227":"Add Your Deriv MT5 <0>{{account_type_name}} account under Deriv (V) Ltd, regulated by the Vanuatu Financial Services Commission.","1502039206":"Over {{barrier}}","1502325741":"Your password cannot be the same as your email address.","1503618738":"- Deal reference ID: the reference ID of the contract","1505420815":"No payment agents found for your search","1505898522":"Download stack","1505927599":"Our servers hit a bump. Let’s refresh to move on.","1509570124":"{{buy_value}} (Buy)","1509678193":"Education","1510075920":"Gold/USD","1510357015":"Tax residence is required.","1510735345":"This block gives you a list of the last digits of the last 1000 tick values.","1512469749":"In the above example it is assumed that variable candle_open_price is processed somewhere within other blocks.","1516537408":"You can no longer trade on Deriv or deposit funds into your account.","1516559721":"Please select one file only","1516676261":"Deposit","1516834467":"‘Get’ the accounts you want","1517503814":"Drop file or click here to upload","1519124277":"Derived SVG","1519891032":"Welcome to Trader's Hub","1520332426":"Net annual income","1524636363":"Authentication failed","1526483456":"2. Enter a name for your variable, and hit Create. New blocks containing your new variable will appear below.","1527251898":"Unsuccessful","1527664853":"Your payout is equal to the payout per point multiplied by the difference between the final price and the strike price.","1527906715":"This block adds the given number to the selected variable.","1531017969":"Creates a single text string from combining the text value of each attached item, without spaces in between. The number of items can be added accordingly.","1533177906":"Fall","1534569275":"As part of the changes in our markets, we will be closing our UK clients’ accounts.","1534796105":"Gets variable value","1537711064":"You need to make a quick identity verification before you can access the Cashier. Please go to your account settings to submit your proof of identity.","1540585098":"Decline","1541508606":"Looking for CFDs? Go to Trader's Hub","1541969455":"Both","1542742708":"Synthetics, Forex, Stocks, Stock indices, Commodities, and Cryptocurrencies","1544642951":"If you select \"Only Ups\", you win the payout if consecutive ticks rise successively after the entry spot. No payout if any tick falls or is equal to any of the previous ticks.","1547148381":"That file is too big (only up to 8MB allowed). Please upload another file.","1548765374":"Verification of document number failed","1549098835":"Total withdrawn","1551172020":"AUD Basket","1552162519":"View onboarding","1555345325":"User Guide","1557426040":"Demo Derived SVG","1557682012":"Account Settings","1557904289":"We accept only these types of documents as proof of your address. The document must be recent (issued within last 6 months) and include your name and address:","1558972889":"set {{ variable }} to Simple Moving Average {{ dummy }}","1559220089":"Options and multipliers trading platform.","1560302445":"Copied","1562374116":"Students","1562982636":"Re-add your MT5 account using the same log in credentials.","1564392937":"When you set your limits or self-exclusion, they will be aggregated across all your account types in {{platform_name_trader}} and {{platform_name_dbot}}. For example, the losses made on both platforms will add up and be counted towards the loss limit you set.","1566037033":"Bought: {{longcode}} (ID: {{transaction_id}})","1566717687":"We also provide a guide on the Tutorial tab to show you how you can build and execute a simple strategy.","1567076540":"Only use an address for which you have proof of residence - ","1567586204":"Self-exclusion","1567745852":"Bot name","1569624004":"Dismiss alert","1570484627":"Ticks list","1571303610":"3. Set your trade parameters and hit Create.","1571575776":"Accepted formats: pdf, jpeg, jpg, and png. Max file size: 8MB","1572504270":"Rounding operation","1572982976":"Server","1573429525":"Call/Put","1573533094":"Your document is pending for verification.","1574989243":"- trade again: Use this variable to stop trading when your loss limit is reached. Set the initial value to true.","1575556189":"Tether on the Ethereum blockchain, as an ERC20 token, is a newer transport layer, which now makes Tether available in Ethereum smart contracts. As a standard ERC20 token, it can also be sent to any Ethereum address.","1577480486":"Your mobile link will expire in one hour","1577527507":"Account opening reason is required.","1577612026":"Select a folder","1579839386":"Appstore","1580498808":"Multiple faces found","1584109614":"Ticks String List","1584936297":"XML file contains unsupported elements. Please check or modify file.","1585859194":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts, your Deriv fiat and {{platform_name_derivez}} accounts, and your Deriv fiat and {{platform_name_dxtrade}} accounts.","1587046102":"Documents from that country are not currently supported — try another document type","1589148299":"Start","1589640950":"Resale of this contract is not offered.","1589702653":"Proof of address","1590400723":"Total assets in all your accounts","1591933071":"Resubmit document","1593010588":"Login now","1594147169":"Please come back in","1594322503":"Sell is available","1596378630":"You have added a real Gaming account.<0/>Make a deposit now to start trading.","1597672660":"Deriv MT5 Password","1598009247":"<0>a.You may file a complaint with the Financial Commission up to 45 days after the incident.","1598443642":"Transaction hash","1602894348":"Create a password","1604171868":"Please withdraw all your funds as soon as possible.","1604916224":"Absolute","1605222432":"I have no knowledge and experience in trading at all.","1605292429":"Max. total loss","1612105450":"Get substring","1612638396":"Cancel your trade at any time within a specified timeframe.","1613633732":"Interval should be between 10-60 minutes","1615897837":"Signal EMA Period {{ input_number }}","1618809782":"Maximum withdrawal","1619070150":"You are being redirected to an external website.","1620278321":"Names and surnames by themselves are easy to guess","1620346110":"Set currency","1621024661":"Tether as a TRC20 token (tUSDT) is a version of Tether that is hosted on Tron.","1622662457":"Date from","1622944161":"Now, go to the <0>Restart trading conditions block.","1623706874":"Use this block when you want to use multipliers as your trade type.","1628981793":"Can I trade cryptocurrencies on Deriv Bot?","1630417358":"Please go to your account settings and complete your personal details to enable withdrawals.","1631281562":"GBP Basket","1634903642":"Only your face can be in the selfie","1634969163":"Change currency","1635266650":"It seems that your name in the document is not the same as your Deriv profile. Please update your name in the <0>Personal details page to solve this issue.","1635628424":"An envelope with your name and address.","1636605481":"Platform settings","1636782601":"Multipliers","1638321777":"Your demo account balance is low. Reset your balance to continue trading from your demo account.","1639262461":"Pending withdrawal request:","1639304182":"Please click on the link in the email to reset your password.","1641395634":"Last digits list","1641635657":"New proof of identity document needed","1641980662":"Salutation is required.","1644636153":"Transaction hash: <0>{{value}}","1644703962":"Looking for CFD accounts? Go to Trader's Hub","1644864436":"You’ll need to authenticate your account before requesting to become a professional client. <0>Authenticate my account","1644908559":"Digit code is required.","1647186767":"The bot encountered an error while running.","1648938920":"Netherlands 25","1649239667":"2. Under the Blocks menu, you'll see a list of categories. Blocks are grouped within these categories. Choose the block you want and drag them to the workspace.","1651513020":"Display remaining time for each interval","1651951220":"Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"","1652366857":"get and remove","1652968048":"Define your trade options such as multiplier and stake.","1652976865":"In this example, this block is used with another block to get the open prices from a list of candles. The open prices are then assigned to the variable called \"cl\".","1653136377":"copied!","1653180917":"We cannot verify you without using your camera","1654365787":"Unknown","1654721858":"Upload anyway","1655627840":"UPPER CASE","1656155124":"Resend in <0 /> seconds","1658954996":"Plant and Machine Operators and Assemblers","1659074761":"Reset Put","1659352235":"Add your Deriv MT5 CFDs account under Deriv Investments (Europe) Limited, regulated by the Malta Financial Services Authority (MFSA) (licence no. IS/70156).","1665272539":"Remember: You cannot log in to your account until the selected date.","1665738338":"Balance","1665756261":"Go to live chat","1668138872":"Modify account settings","1670016002":"Multiplier: {{ multiplier }}","1670426231":"End Time","1671232191":"You have set the following limits:","1674163852":"You can determine the expiry of your contract by setting the duration or end time.","1675030608":"To create this account first we need you to resubmit your proof of address.","1675289747":"Switched to real account","1676549796":"Dynamic Leverage","1677027187":"Forex","1677990284":"My apps","1679743486":"1. Go to Quick strategy and select the strategy you want.","1680666439":"Upload your bank statement showing your name, account number, and transaction history.","1682409128":"Untitled Strategy","1682636566":"Resend email in","1683522174":"Top-up","1683963454":"Your contract will be closed automatically at the next available asset price on {{date}} at {{timestamp}}.","1684419981":"What's this?","1686800117":"{{error_msg}}","1687173740":"Get more","1689103988":"Second Since Epoch","1689258195":"We were unable to verify your address with the details you provided. Please check and resubmit or choose a different document type.","1691335819":"To continue trading with us, please confirm who you are.","1691765860":"- Negation","1692912479":"Deriv MT5, Deriv X","1693614409":"Start time","1694331708":"You can switch between CFDs, digital options, and multipliers at any time.","1694517345":"Enter a new email address","1698624570":"2. Hit Ok to confirm.","1700233813":"Transfer from {{selected_value}} is not allowed, Please choose another account from dropdown","1701447705":"Please update your address","1702339739":"Common mistakes","1703091957":"We collect information about your employment as part of our due diligence obligations, as required by anti-money laundering legislation.","1704656659":"How much experience do you have in CFD trading?","1708413635":"For your {{currency_name}} ({{currency}}) account","1709401095":"Trade CFDs on Deriv X with financial markets and our Derived indices.","1709859601":"Exit Spot Time","1710662619":"If you have the app, launch it to start trading.","1711013665":"Anticipated account turnover","1711676335":"square root","1711929663":"Your funds have been transferred","1712357617":"Invalid email address.","1714255392":"To enable withdrawals, please complete your financial assessment.","1715011380":"Jump 25 Index","1715630945":"Returns the total profit in string format","1717023554":"Resubmit documents","1719248689":"EUR/GBP/USD","1720451994":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv fiat and Deriv cryptocurrency accounts.","1720968545":"Upload passport photo page from your computer","1723589564":"Represents the maximum number of outstanding contracts in your portfolio. Each line in your portfolio counts for one open position. Once the maximum is reached, you will not be able to open new positions without closing an existing position first.","1724696797":"You are limited to one fiat account only.","1725958461":"Account number","1726472773":"Function with no return value","1726565314":"Close my account","1728121741":"Transactions.csv","1728183781":"About Tether","1729145421":"Risk warning","1731747596":"The block(s) highlighted in red are missing input values. Please update them and click \"Run bot\".","1732891201":"Sell price","1733711201":"Regulators/external dispute resolution","1734185104":"Balance: %1","1734264460":"Disclaimer","1736292549":"Update postal code","1737352280":"Bot.init is not called","1738094481":"<0>Duration: Ticks 1","1738681493":"Remove your glasses, if necessary","1739086943":"Wall Street 30","1739384082":"Unemployed","1739668049":"Close your account","1740371444":"Underlying market is not selected","1742256256":"Please upload one of the following documents:","1743448290":"Payment agents","1743679873":"If you select <0>\"Call\", you’ll earn a <1>payout if the <1>final price is above the <1>strike price at <1>expiry. Otherwise, you won’t receive a payout.","1743902050":"Complete your financial assessment","1744509610":"Just drag the XML file from your computer onto the workspace, and your bot will be loaded accordingly. Alternatively, you can hit Import in Bot Builder, and choose to import your bot from your computer or from your Google Drive.","1745523557":"- Square root","1746051371":"Download the app","1746273643":"Moving Average Convergence Divergence","1747501260":"Sell conditions","1747523625":"Go back","1747674345":"Please use `.` as a decimal separator for fractional numbers.","1747682136":"Contract was cancelled.","1748754976":"Run","1749675724":"Deriv charges no commission across all account types.","1750065391":"Login time:","1753183432":"We take all complaints seriously and aim to resolve them as quickly and fairly as possible. If you are unhappy with any aspect of our service, please let us know by submitting a complaint using the guidance below:","1753226544":"remove","1753975551":"Upload passport photo page","1756678453":"break out","1758386013":"Do not get lured to fake \"Deriv\" pages!","1761038852":"Let’s continue with providing proofs of address and identity.","1761762171":"Restart last trade on error (bot ignores the unsuccessful trade): {{ checkbox }}","1762707297":"Phone number","1762746301":"MF4581125","1763123662":"Upload your NIMC slip.","1766212789":"Server maintenance starts at 06:00 GMT every Sunday and may last up to 2 hours. You may experience service disruption during this time.","1766993323":"Only letters, numbers, and underscores are allowed.","1767429330":"Add a Derived account","1768293340":"Contract value","1768861315":"Minute","1768918213":"Only letters, space, hyphen, period, and apostrophe are allowed.","1769068935":"Choose any of these exchanges to buy cryptocurrencies:","1771037549":"Add a Deriv real account","1771592738":"Conditional block","1777847421":"This is a very common password","1778893716":"Click here","1779144409":"Account verification required","1779519903":"Should be a valid number.","1780442963":"Scan the QR code to download {{ platform }}.","1780770384":"This block gives you a random fraction between 0.0 to 1.0.","1781393492":"We do not charge a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts, your Deriv fiat and {{platform_name_derivez}} accounts and your Deriv fiat and {{platform_name_dxtrade}} accounts.","1782308283":"Quick strategy","1782395995":"Last Digit Prediction","1782690282":"Blocks menu","1782703044":"Sign up","1783526986":"How do I build a trading bot?","1783740125":"Upload your selfie","1787135187":"Postal/ZIP code is required","1787492950":"Indicators on the chart tab are for indicative purposes only and may vary slightly from the ones on the {{platform_name_dbot}} workspace.","1788515547":"<0/>For more information on submitting a complaint with the Office of the Arbiter for Financial Services, please <1>see their guidance.","1788966083":"01-07-1999","1789273878":"Payout per point","1789497185":"Make sure your passport details are clear to read, with no blur or glare","1790770969":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies","1791017883":"Check out this <0>user guide.","1791432284":"Search for country","1791971912":"Recent","1793913365":"To deposit money, please switch to your {{currency_symbol}} account.","1794815502":"Download your transaction history.","1796787905":"Please upload the following document(s).","1798943788":"You can only make deposits.","1801093206":"Get candle list","1801270786":"Ready to automate your trading strategy without writing any code? You’ve come to the right place.","1801927731":"{{platform_name_dxtrade}} accounts","1803338729":"Choose what type of contract you want to trade. For example, for the Rise/Fall trade type you can choose one of three options: Rise, Fall, or Both. Selected option will determine available options for the Purchase block.","1804620701":"Expiration","1804789128":"{{display_value}} Ticks","1806017862":"Max. ticks","1806355993":"No commission","1808058682":"Blocks are loaded successfully","1808393236":"Login","1808867555":"This block uses the variable “i” to control the iterations. With each iteration, the value of “i” is determined by the items in a given list.","1810217569":"Please refresh this page to continue.","1811109068":"Jurisdiction","1811972349":"Market","1811973475":"Returns a specific character from a given string","1812006199":"Identity verification","1812582011":"Connecting to server","1813700208":"Boom 300 Index","1813958354":"Remove comment","1815034361":"alphabetic","1815905959":"DTrader, DBot, SmartTrader, and Binary Bot","1815995250":"Buying contract","1816126006":"Trade on Deriv MT5 ({{platform_name_dmt5}}), the all-in-one FX and CFD trading platform.","1817154864":"This block gives you a random number from within a set range.","1820242322":"e.g. United States","1820332333":"Top up","1821818748":"Enter Driver License Reference number","1823177196":"Most popular","1824193700":"This block gives you the last digit of the latest tick value.","1824292864":"Call","1827607208":"File not uploaded.","1828370654":"Onboarding","1830520348":"{{platform_name_dxtrade}} Password","1831847842":"I confirm that the name and date of birth above match my chosen identity document (see below)","1833481689":"Unlock","1833499833":"Proof of identity documents upload failed","1836767074":"Search payment agent name","1837762008":"Please submit your proof of identity and proof of address to verify your account in your account settings to access the cashier.","1838639373":"Resources","1839021527":"Please enter a valid account number. Example: CR123456789","1840865068":"set {{ variable }} to Simple Moving Average Array {{ dummy }}","1841381387":"Get more wallets","1841788070":"Palladium/USD","1841996888":"Daily loss limit","1842266423":"back","1842862156":"Welcome to your Deriv X dashboard","1843658716":"If you select \"Only Downs\", you win the payout if consecutive ticks fall successively after the entry spot. No payout if any tick rises or is equal to any of the previous ticks.","1845892898":"(min: {{min_stake}} - max: {{max_payout}})","1846266243":"This feature is not available for demo accounts.","1846587187":"You have not selected your country of residence","1846664364":"{{platform_name_dxtrade}}","1849484058":"Any unsaved changes will be lost.","1850031313":"- Low: the lowest price","1850132581":"Country not found","1850659345":"- Payout: the payout of the contract","1850663784":"Submit proofs","1851052337":"Place of birth is required.","1851776924":"upper","1854480511":"Cashier is locked","1854874899":"Back to list","1855566768":"List item position","1856485118":"Please <0>resubmit your proof of address to transfer funds between MT5 and Deriv accounts.","1856755117":"Pending action required","1856932069":"For Long:","1858251701":"minute","1859308030":"Give feedback","1863053247":"Please upload your identity document.","1863694618":"Trade CFDs on MT5 with forex, stocks, stock indices, commodities, and cryptocurrencies.","1863731653":"To receive your funds, contact the payment agent","1865525612":"No recent transactions.","1866811212":"Deposit in your local currency via an authorised, independent payment agent in your country.","1866836018":"<0/><1/>If your complaint relates to our data processing practices, you can submit a formal complaint to your local supervisory authority.","1867217564":"Index must be a positive integer","1867783237":"High-to-Close","1869315006":"See how we protect your funds to unlock the cashier.","1869787212":"Even","1870933427":"Crypto","1871196637":"True if the result of the last trade matches the selection","1871377550":"Do you offer pre-built trading bots on Deriv Bot?","1871664426":"Note","1873838570":"Please verify your address","1874481756":"Use this block to purchase the specific contract you want. You may add multiple Purchase blocks together with conditional blocks to define your purchase conditions. This block can only be used within the Purchase conditions block.","1874756442":"BVI","1875702561":"Load or build your bot","1876015808":"Social Security and National Insurance Trust","1876325183":"Minutes","1877225775":"Your proof of address is verified","1877410120":"What you need to do now","1877832150":"# from end","1878172674":"No, we don't. However, you'll find quick strategies on Deriv Bot that'll help you build your own trading bot for free.","1879042430":"Appropriateness Test, WARNING:","1879412976":"Profit amount: <0>{{profit}}","1879651964":"<0>Pending verification","1880029566":"Australian Dollar","1880097605":"prompt for {{ string_or_number }} with message {{ input_text }}","1880875522":"Create \"get %1\"","1881018702":"hour","1881587673":"Total stake since you last cleared your stats.","1882825238":"Restart trading conditions","1883531976":"Clerks","1885708031":"#","1889357660":"Enter a value in minutes, up to 60480 minutes (equivalent to 6 weeks).","1890171328":"By clicking Accept below and proceeding with the Account Opening you should note that you may be exposing yourself to risks (which may be significant, including the risk of loss of the entire sum invested) that you may not have the knowledge and experience to properly assess or mitigate.","1890332321":"Returns the number of characters of a given string of text, including numbers, spaces, punctuation marks, and symbols.","1893869876":"(lots)","1894667135":"Please verify your proof of address","1898670234":"{{formatted_opening_time}} (GMT) on {{opening_day}},<0> {{opening_date}}.","1899898605":"Maximum size: 8MB","1902547203":"MetaTrader 5 MacOS app","1903437648":"Blurry photo detected","1905032541":"We're now ready to verify your identity","1905589481":"If you want to change your account currency, please contact us via <0>live chat.","1906213000":"Our system will finish any Deriv Bot trades that are running, and Deriv Bot will not place any new trades.","1906639368":"If this is the first time you try to create a password, or you have forgotten your password, please reset it.","1907884620":"Add a real Deriv Gaming account","1908239019":"Make sure all of the document is in the photo","1908686066":"Appropriateness Test Warning","1909647105":"TRX/USD","1909769048":"median","1913777654":"Switch account","1914014145":"Today","1914270645":"Default Candle Interval: {{ candle_interval_type }}","1914725623":"Upload the page that contains your photo.","1917178459":"Bank Verification Number","1917523456":"This block sends a message to a Telegram channel. You will need to create your own Telegram bot to use this block.","1917804780":"You will lose access to your Options account when it gets closed, so be sure to withdraw all your funds. (If you have a CFDs account, you can also transfer the funds from your Options account to your CFDs account.)","1918796823":"Please enter a stop loss amount.","1918832194":"No experience","1919030163":"Tips to take a good selfie","1919594496":"{{website_name}} is not affiliated with any payment agents. Customers deal with payment agents at their sole risk. Customers are advised to check the credentials of payment agents and the accuracy of any information about payment agents (on {{website_name}} or elsewhere) before using their services.","1919694313":"To start trading, transfer funds from your Deriv account into this account.","1920217537":"Compare","1920468180":"How to use the SMA block","1921634159":"A few personal details","1921914669":"Deposit with Deriv P2P","1922529883":"Boom 1000 Index","1922955556":"Use a longer keyboard pattern with more turns","1923431535":"“Stop loss” is deactivated and will only be available when “Deal cancellation” expires.","1924365090":"Maybe later","1924765698":"Place of birth*","1925090823":"Sorry, trading is unavailable in {{clients_country}}.","1926987784":"- iOS: Swipe left on the account and tap <0>Delete.","1928930389":"GBP/NOK","1929309951":"Employment Status","1929379978":"Switch between your demo and real accounts.","1929694162":"Compare accounts","1930899934":"Tether","1931659123":"Run on every tick","1931884033":"It seems that your date of birth in the document is not the same as your Deriv profile. Please update your date of birth in the <0>Personal details page to solve this issue.","1934450653":"For <0>Contract type, set it to Both.","1939014728":"How do I remove blocks from the workspace?","1939902659":"Signal","1940408545":"Delete this token","1941915555":"Try later","1942091675":"Cryptocurrency trading is not available for clients residing in the United Kingdom.","1943440862":"Calculates Bollinger Bands (BB) list from a list with a period","1944204227":"This block returns current account balance.","1947527527":"1. This link was sent by you","1948092185":"GBP/CAD","1949719666":"Here are the possible reasons:","1950413928":"Submit identity documents","1952580688":"Submit passport photo page","1955219734":"Town/City*","1957759876":"Upload identity document","1958807602":"4. 'Table' takes an array of data, such as a list of candles, and displays it in a table format.","1959678342":"Highs & Lows","1960240336":"first letter","1964097111":"USD","1964165648":"Connection lost","1965916759":"Asian options settle by comparing the last tick with the average spot over the period.","1966023998":"2FA enabled","1966281100":"Console {{ message_type }} value: {{ input_message }}","1968025770":"Bitcoin Cash","1968077724":"Agriculture","1968368585":"Employment status","1970060713":"You’ve successfully deleted a bot.","1971898712":"Add or manage account","1973060793":"- maximum loss: Use this variable to store your maximum loss limit. You can assign any amount you want, but it must be a positive number.","1973536221":"You have no open positions yet.","1973564194":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit or created a real {{dmt5_label}} or {{platform_name_dxtrade}} account.","1973910243":"Manage your accounts","1974273865":"This scope will allow third-party apps to view your account activity, settings, limits, balance sheets, trade purchase history, and more.","1974903951":"If you hit Yes, the info you entered will be lost.","1981940238":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}} and {{legal_entity_name_v}}.","1982912252":"Relative Strength Index (RSI) from a list with a period","1983001416":"Define your trade options such as multiplier and stake. This block can only be used with the multipliers trade type. If you select another trade type, this block will be replaced with the Trade options block.","1983358602":"This policy, which may change from time to time, applies to your account registered with {{legal_entity_name}}.","1983387308":"Preview","1983480826":"Sign in","1983544897":"P.O. Box is not accepted in address","1983676099":"Please check your email for details.","1984700244":"Request an input","1984742793":"Uploading documents","1985366224":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts and up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts.","1985637974":"Any blocks placed within this block will be executed at every tick. If the default candle interval is set to 1 minute in the Trade Parameters root block, the instructions in this block will be executed once every minute. Place this block outside of any root block.","1986498784":"BTC/LTC","1987080350":"Demo","1987447369":"Your cashier is locked","1988153223":"Email address","1988302483":"Take profit:","1988601220":"Duration value","1990331072":"Proof of ownership","1990735316":"Rise Equals","1991055223":"View the market price of your favourite assets.","1991448657":"Don't know your tax identification number? Click <0>here to learn more.","1991524207":"Jump 100 Index","1994023526":"The email address you entered had a mistake or typo (happens to the best of us).","1994558521":"The platforms aren’t user-friendly.","1994600896":"This block requires a list of candles as an input parameter.","1995023783":"First line of address*","1996767628":"Please confirm your tax information.","1997138507":"If the last tick is equal to the average of the ticks, you don't win the payout.","1997313835":"Your stake will continue to grow as long as the current spot price remains within a specified <0>range from the <0>previous spot price. Otherwise, you lose your stake and the trade is terminated.","1998199587":"You can also exclude yourself entirely for a specified duration. If, at any time, you decide to trade again, you must then contact our Customer Support to remove this self-exclusion. There will be a 24-hour-cooling-off period before you can resume trading. ","1999346412":"For faster verification, input the same address here as in your proof of address document (see section below)","2001222130":"Check your spam or junk folder. If it's not there, try resending the email.","2004395123":"New trading tools for MT5","2004792696":"If you are a UK resident, to self-exclude from all online gambling companies licensed in Great Britain, go to <0>www.gamstop.co.uk.","2007028410":"market, trade type, contract type","2007092908":"Trade with leverage and low spreads for better returns on successful trades.","2008809853":"Please proceed to withdraw your funds before 30 November 2021.","2010759971":"Uploads successful","2010866561":"Returns the total profit/loss","2011609940":"Please input number greater than 0","2011808755":"Purchase Time","2014536501":"Card number","2014590669":"Variable '{{variable_name}}' has no value. Please set a value for variable '{{variable_name}}' to notify.","2017672013":"Please select the country of document issuance.","2020545256":"Close your account?","2021037737":"Please update your details to continue.","2021161151":"Watch this video to learn how to build a trading bot on Deriv Bot. Also, check out this blog post on building a trading bot.","2023659183":"Student","2023762268":"I prefer another trading website.","2025339348":"Move away from direct light — no glare","2027625329":"Simple Moving Average Array (SMAA)","2027696535":"Tax information","2028163119":"EOS/USD","2029237955":"Labuan","2029641956":"CFDCompareAccounts","2030018735":"RSI is a technical analysis tool that helps you identify the market trend. It will give you a value from 0 to 100. An RSI value of 70 and above means that the asset is overbought and the current trend may reverse, while a value of 30 and below means that the asset is oversold.","2030045667":"Message","2033648953":"This block gives you the specified candle value for a selected time interval.","2034803607":"You must be 18 years old and above.","2035258293":"Start trading with us","2035925727":"sort {{ sort_type }} {{ sort_direction }} {{ input_list }}","2036578466":"Should be {{value}}","2037607934":"The purchase of <0>{{trade_type_name}} contract has been completed successfully for the amount of <0> {{buy_price}} {{currency}}","2037665157":"Expand All Blocks","2037906477":"get sub-list from #","2042023623":"We’re reviewing your documents. This should take about 5 minutes.","2042050260":"- Purchase price: the purchase price (stake) of the contract","2042115724":"Upload a screenshot of your account and personal details page with your name, account number, phone number, and email address.","2044086432":"The close is the latest tick at or before the end time. If you selected a specific end time, the end time is the selected time.","2046273837":"Last tick","2046577663":"Import or choose your bot","2048110615":"Email address*","2048134463":"File size exceeded.","2049386104":"We need you to submit these in order to get this account:","2050170533":"Tick list","2051558666":"View transaction history","2053617863":"Please proceed to withdraw all your funds from your account.","2054889300":"Create \"%1\"","2055317803":"Copy the link to your mobile browser","2057082550":"Accept our updated <0>terms and conditions","2057419639":"Exit Spot","2059365224":"Yes, you can get started with a pre-built bot using the Quick strategy feature. You’ll find some of the most popular trading strategies here: Martingale, D'Alembert, and Oscar's Grind. Just select the strategy, enter your trade parameters, and your bot will be created for you. You can always tweak the parameters later.","2059753381":"Why did my verification fail?","2060873863":"Your order {{order_id}} is complete","2062912059":"function {{ function_name }} {{ function_params }}","2063655921":"By purchasing the \"Close-to-Low\" contract, you'll win the multiplier times the difference between the close and low over the duration of the contract.","2063812316":"Text Statement","2063890788":"Cancelled","2065278286":"Spread","2067903936":"Driving licence","2070002739":"Don’t accept","2070345146":"When opening a leveraged CFD trade.","2070518923":"Import your bot or tap Quick Strategies to choose from the ready-to-use bot templates.","2070752475":"Regulatory Information","2071043849":"Browse","2073813664":"CFDs, Options or Multipliers","2074235904":"Last name is required.","2074497711":"The Telegram notification could not be sent","2074713563":"4.2. Submission of a complaint","2080553498":"3. Get the chat ID using the Telegram REST API (read more: https://core.telegram.org/bots/api#getupdates)","2080829530":"Sold for: {{sold_for}}","2082533832":"Yes, delete","2084693624":"Converts a string representing a date/time string into seconds since Epoch. Example: 2019-01-01 21:03:45 GMT+0800 will be converted to 1546347825. Time and time zone offset are optional.","2085387371":"Must be numbers, letters, and special characters . , ' -","2085602195":"- Entry value: the value of the first tick of the contract","2086742952":"You have added a real Options account.<0/>Make a deposit now to start trading.","2086792088":"Both barriers should be relative or absolute","2088735355":"Your session and login limits","2089581483":"Expires on","2090650973":"The spot price may change by the time your order reaches our servers. When this happens, your payout may be affected.","2091671594":"Status","2093675079":"- Close: the closing price","2096014107":"Apply","2096456845":"Date of birth*","2096603244":"Derived - Vanuatu","2097170986":"About Tether (Omni)","2097365786":"A copy of your identity document (identity card, passport)","2097381850":"Calculates Simple Moving Average line from a list with a period","2097932389":"Upload 2 separate screenshots from the personal details page and the account page via <0>https://app.astropay.com/profile","2100713124":"account","2101972779":"This is the same as the above example, using a tick list.","2102572780":"Length of digit code must be 6 characters.","2104115663":"Last login","2104364680":"Please switch to your demo account to run your Deriv Bot.","2104397115":"Please go to your account settings and complete your personal details to enable deposits and withdrawals.","2107381257":"Scheduled cashier system maintenance","2109312805":"The spread is the difference between the buy price and sell price. A variable spread means that the spread is constantly changing, depending on market conditions. A fixed spread remains constant but is subject to alteration, at the Broker's absolute discretion.","2110365168":"Maximum number of trades reached","2111015970":"This block helps you check if your contract can be sold. If your contract can be sold, it returns “True”. Otherwise, it returns an empty string.","2111528352":"Creating a variable","2112119013":"Take a selfie showing your face","2112175277":"with delimiter","2113321581":"Add a Deriv Gaming account","2115223095":"Loss","2117073379":"Our cryptocurrency cashier is temporarily down due to system maintenance. You can access the Cashier in a few minutes when the maintenance is complete.","2117165122":"1. Create a Telegram bot and get your Telegram API token. Read more on how to create bots in Telegram here: https://core.telegram.org/bots#6-botfather","2117489390":"Auto update in {{ remaining }} seconds","2118315870":"Where do you live?","2119449126":"Example output of the below example will be:","2119710534":"FAQ","2121227568":"NEO/USD","2122152120":"Assets","2127564856":"Withdrawals are locked","2131963005":"Please withdraw your funds from the following Deriv MT5 account(s):","2133451414":"Duration","2133470627":"This block returns the potential payout for the selected trade type. This block can be used only in the \"Purchase conditions\" root block.","2135563258":"Forex trading frequency","2136246996":"Selfie uploaded","2137901996":"This will clear all data in the summary, transactions, and journal panels. All counters will be reset to zero.","2137993569":"This block compares two values and is used to build a conditional structure.","2138861911":"Scans and photocopies are not accepted","2139171480":"Reset Up/Reset Down","2139362660":"left side","2141055709":"New {{type}} password","2141873796":"Get more info on <0>CFDs, <1>multipliers, and <2>options.","2143803283":"Purchase Error","2144609616":"If you select \"Reset-Down”, you win the payout if the exit spot is strictly lower than either the entry spot or the spot at reset time.","2145690912":"Income Earning","2145995536":"Create new account","2146336100":"in text %1 get %2","2146698770":"Pro tip: You can also click and drag out the desired block","2146892766":"Binary options trading experience","2147244655":"How do I import my own trading bot into Deriv Bot?","-1232613003":"<0>Verification failed. <1>Why?","-2029508615":"<0>Need verification.<1>Verify now","-931052769":"Submit verification","-1004605898":"Tips","-1938142055":"Documents uploaded","-448090287":"The link only works on mobile devices","-1244287721":"Something's gone wrong","-241258681":"You'll need to restart your verification on your computer","-929254273":"Get secure link","-2021867851":"Check back here to finish the submission","-1547069149":"Open the link and complete the tasks","-1767652006":"Here's how to do it:","-277611959":"You can now return to your computer to continue","-724178625":"Make sure full document is visible","-1519380038":"Glare detected","-1895280620":"Make sure your card details are clear to read, with no blur or glare","-1464447919":"Make sure your permit details are clear to read, with no blur or glare","-1436160506":"Make sure details are clear to read, with no blur or glare","-759124288":"Close","-759118956":"Redo","-753375398":"Enlarge image","-1042933881":"Driver's license","-1503134764":"Face photo page","-1335343167":"Sorry, no mobile phone bills","-699045522":"Documents you can use to verify your identity","-543666102":"It must be an official photo ID","-903877217":"These are the documents most likely to show your current home address","-1356835948":"Choose document","-1364375936":"Select a %{country} document","-401586196":"or upload photo – no scans or photocopies","-3110517":"Take a photo with your phone","-2033894027":"Submit identity card (back)","-20684738":"Submit license (back)","-1359585500":"Submit license (front)","-106779602":"Submit residence permit (back)","-1287247476":"Submit residence permit (front)","-1954762444":"Restart the process on the latest version of Safari","-261174676":"Must be under 10MB.","-685885589":"An error occurred while loading the component","-502539866":"Your face is needed in the selfie","-1377968356":"Please try again","-1226547734":"Try using a JPG or PNG file","-849068301":"Loading...","-1730346712":"Loading","-1849371752":"Check that your number is correct","-309848900":"Copy","-1424436001":"Send link","-1093833557":"How to scan a QR code","-1408210605":"Point your phone’s camera at the QR code","-1773802163":"If it doesn’t work, download a QR code scanner from Google Play or the App Store","-109026565":"Scan QR code","-1644436882":"Get link via SMS","-1667839246":"Enter mobile number","-1533172567":"Enter your mobile number:","-1352094380":"Send this one-time link to your phone","-28974899":"Get your secure link","-359315319":"Continue","-1279080293":"2. Your desktop window stays open","-102776692":"Continue with the verification","-89152891":"Take a photo of the back of your card","-1646367396":"Take a photo of the front of your card","-1350855047":"Take a photo of the front of your license","-2119367889":"Take a photo using the basic camera mode instead","-342915396":"Take a photo","-419040068":"Passport photo page","-1354983065":"Refresh","-1925063334":"Recover camera access to continue face verification","-54784207":"Camera access is denied","-1392699864":"Allow camera access","-269477401":"Provide the whole document page for best results","-864639753":"Upload back of card from your computer","-1309771027":"Upload front of license from your computer","-1722060225":"Take photo","-565732905":"Selfie","-1703181240":"Check that it is connected and functional. You can also continue verification on your phone","-2043114239":"Camera not working?","-2029238500":"It may be disconnected. Try using your phone instead.","-468928206":"Make sure your device's camera works","-466246199":"Camera not working","-698978129":"Remember to press stop when you're done. Redo video actions","-538456609":"Looks like you took too long","-781816433":"Photo of your face","-1471336265":"Make sure your selfie clearly shows your face","-1375068556":"Check selfie","-1914530170":"Face forward and make sure your eyes are clearly visible","-776541617":"We'll compare it with your document","-478752991":"Your link will expire in one hour","-1859729380":"Keep this window open while using your mobile","-1283761937":"Resend link","-629011256":"Don't refresh this page","-1005231905":"Once you've finished we'll take you to the next step","-542134805":"Upload photo","-1462975230":"Document example","-1472844935":"The photo should clearly show your document","-189310067":"Account closed","-1823540512":"Personal details","-849320995":"Assessments","-773766766":"Email and passwords","-1466827732":"Self exclusion","-1498206510":"Account limits","-241588481":"Login history","-966136867":"Connected apps","-213009361":"Two-factor authentication","-1214803297":"Dashboard-only path","-526636259":"Error 404","-1227878799":"Speculative","-1196936955":"Upload a screenshot of your name and email address from the personal information section.","-1286823855":"Upload your mobile bill statement showing your name and phone number.","-1309548471":"Upload your bank statement showing your name and account details.","-1410396115":"Upload a photo showing your name and the first six and last four digits of your card number. If the card does not display your name, upload the bank statement showing your name and card number in the transaction history.","-3805155":"Upload a screenshot of either of the following to process the transaction:","-1523487566":"- your account profile section on the website","-613062596":"- the Account Information page on the app","-1718304498":"User ID","-609424336":"Upload a screenshot of your name, account number, and email address from the personal details section of the app or profile section of your account on the website.","-1954436643":"Upload a screenshot of your username on the General Information page at <0>https://onlinenaira.com/members/index.htm","-79853954":"Upload a screenshot of your account number and phone number on the Bank Account/Mobile wallet page at <0>https://onlinenaira.com/members/bank.htm","-1192882870":"Upload a screenshot of your name and account number from the personal details section.","-1120954663":"First name*","-1659980292":"First name","-962979523":"Your {{ field_name }} as in your identity document","-1416797980":"Please enter your {{ field_name }} as in your official identity documents.","-1466268810":"Please remember that it is your responsibility to keep your answers accurate and up to date. You can update your personal details at any time in your <0>account settings.","-32386760":"Name","-766265812":"first name","-1857534296":"John","-1282749116":"last name","-1485480657":"Other details","-1784741577":"date of birth","-1702919018":"Second line of address (optional)","-1315410953":"State/Province","-2040322967":"Citizenship","-344715612":"Employment status*","-1543016582":"I hereby confirm that the tax information I provided is true and complete. I will also inform {{legal_entity_name}} about any changes to this information.","-946282997":"Additional information","-1315571766":"Place of birth","-789291456":"Tax residence*","-1692219415":"Tax residence","-1903720068":"The country in which you meet the criteria for paying taxes. Usually the country in which you physically reside.","-651516152":"Tax Identification Number","-1387062433":"Account opening reason","-222283483":"Account opening reason*","-190838815":"We need this for verification. If the information you provide is fake or inaccurate, you won’t be able to deposit and withdraw.","-1113902570":"Details","-71696502":"Previous","-1541554430":"Next","-987011273":"Your proof of ownership isn't required.","-808299796":"You are not required to submit proof of ownership at this time. We will inform you if proof of ownership is required in the future.","-179726573":"We’ve received your proof of ownership.","-813779897":"Proof of ownership verification passed.","-638756912":"Black out digits 7 to 12 of the card number that’s shown on the front of your debit/credit card.⁤","-2073934245":"The financial trading services offered on this site are only suitable for customers who accept the possibility of losing all the money they invest and who understand and have experience of the risk involved in the purchase of financial contracts. Transactions in financial contracts carry a high degree of risk. If the contracts you purchased expire as worthless, you will lose all your investment, which includes the contract premium.","-1166068675":"Your account will be opened with {{legal_entity_name}}, regulated by the UK Gaming Commission (UKGC), and will be subject to the laws of the Isle of Man.","-975118358":"Your account will be opened with {{legal_entity_name}}, regulated by the Malta Financial Services Authority (MFSA), and will be subject to the laws of Malta.","-680528873":"Your account will be opened with {{legal_entity_name}} and will be subject to the laws of Samoa.","-1125193491":"Add account","-2068229627":"I am not a PEP, and I have not been a PEP in the last 12 months.","-684271315":"OK","-740157281":"Trading Experience Assessment","-1720468017":"In providing our services to you, we are required to obtain information from you in order to assess whether a given product or service is appropriate for you.","-186841084":"Change your login email","-907403572":"To change your email address, you'll first need to unlink your email address from your {{identifier_title}} account.","-1850792730":"Unlink from {{identifier_title}}","-307865807":"Risk Tolerance Warning","-690100729":"Yes, I understand the risk.","-2010628430":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the high risk of losing your money. <0/><0/> To continue, you must confirm that you understand your capital is at risk.","-863770104":"Please note that by clicking ‘OK’, you may be exposing yourself to risks. You may not have the knowledge or experience to properly assess or mitigate these risks, which may be significant, including the risk of losing the entire sum you have invested.","-1292808093":"Trading Experience","-2145244263":"This field is required","-884768257":"You should enter 0-35 characters.","-1784470716":"State is not in a proper format","-1699820408":"Please enter a {{field_name}} under {{max_number}} characters.","-1575567374":"postal/ZIP code","-2113555886":"Only letters, numbers, space, and hyphen are allowed.","-874280157":"This Tax Identification Number (TIN) is invalid. You may continue using it, but to facilitate future payment processes, valid tax information will be required.","-1174064217":"Mr","-855506127":"Ms","-1037916704":"Miss","-634958629":"We use the information you give us only for verification purposes. All information is kept confidential.","-731992635":"Title*","-352888977":"Title","-136976514":"Country of residence*","-945104751":"We’re legally obliged to ask for your tax information.","-1024240099":"Address","-1124948631":"Professional Client","-259515058":"By default, all {{brand_website_name}} clients are retail clients but anyone can request to be treated as a professional client.","-1463348492":"I would like to be treated as a professional client.","-1958764604":"Email preference","-2121071263":"Check this box to receive updates via email.","-2068064150":"Get updates about Deriv products, services and events.","-1558679249":"Please make sure your information is correct or it may affect your trading experience.","-179005984":"Save","-2116332353":"Please close your positions in the following Deriv account(s):","-2048005267":"{{number_of_positions}} position(s)","-1923892687":"Please withdraw your funds from the following Deriv X account(s):","-1629894615":"I have other financial priorities.","-844051272":"I want to stop myself from trading.","-1113965495":"I’m no longer interested in trading.","-1224285232":"Customer service was unsatisfactory.","-9323953":"Remaining characters: {{remaining_characters}}","-839094775":"Back","-2061895474":"Closing your account will automatically log you out. We shall delete your personal information as soon as our legal obligations are met.","-203298452":"Close account","-937707753":"Go Back","-1219849101":"Please select at least one reason","-484540402":"An error occurred","-1911549768":"Inaccessible MT5 account(s)","-1869355019":"Action required","-1030102424":"You can't trade on Deriv.","-448385353":"You can't make transactions.","-1058447223":"Before closing your account:","-912764166":"Withdraw your funds.","-60139953":"We shall delete your personal information as soon as our legal obligations are met, as mentioned in the section on Data Retention in our <0>Security and privacy policy","-1725454783":"Failed","-506510414":"Date and time","-1708927037":"IP address","-80717068":"Apps you have linked to your <0>Deriv password:","-9570380":"Use the {{platform_name_dxtrade}} password to log in to your {{platform_name_dxtrade}} accounts on the web and mobile apps.","-2131200819":"Disable","-200487676":"Enable","-1840392236":"That's not the right code. Please try again.","-2067796458":"Authentication code","-790444493":"Protect your account with 2FA. Each time you log in to your account, you will need to enter your password and an authentication code generated by a 2FA app on your smartphone.","-368010540":"You have enabled 2FA for your Deriv account.","-403552929":"To disable 2FA, please enter the six-digit authentication code generated by your 2FA app below:","-752939584":"How to set up 2FA for your Deriv account","-90649785":"Click here to copy key","-206376148":"Key copied!","-1592318047":"See example","-1376950117":"That file format isn't supported. Please upload .pdf, .png, .jpg, or .jpeg files only.","-1272489896":"Please complete this field.","-397487797":"Enter your full card number","-153346659":"Upload your selfie.","-602131304":"Passport number","-1051213440":"Upload the front and back of your identity card.","-1600807543":"First, enter your identity card number and the expiry date.","-1139923664":"Next, upload the front and back of your identity card.","-783705755":"Upload the front of your identity card.","-566750665":"NIMC slip and proof of age","-1465944279":"NIMC slip number","-429612996":"Next, upload both of the following documents.","-376981174":"Upload your proof of age: birth certificate or age declaration document.","-612174191":"First line of address is required","-242734402":"Only {{max}} characters, please.","-378415317":"State is required","-1497654315":"Our accounts and services are unavailable for the Jersey postal code.","-755626951":"Complete your address details","-584911871":"Select wallet currency","-1461267236":"Please choose your currency","-1352330125":"CURRENCY","-1027595143":"Less than $25,000","-40491332":"$25,000 - $50,000","-1139806939":"$50,001 - $100,000","-626752657":"0-1 year","-532014689":"1-2 years","-1001024004":"Over 3 years","-790513277":"6-10 transactions in the past 12 months","-580085300":"11-39 transactions in the past 12 months","-654781670":"Primary","-1717373258":"Secondary","-996132458":"Construction","-915003867":"Health","-1430012453":"Information & Communications Technology","-987824916":"Science & Engineering","-146630682":"Social & Cultural","-761306973":"Manufacturing","-739367071":"Employed","-1156937070":"$500,001 - $1,000,000","-315534569":"Over $1,000,000","-2068544539":"Salaried Employee","-531314998":"Investments & Dividends","-1235114522":"Pension","-1298056749":"State Benefits","-449943381":"Savings & Inheritance","-1631552645":"Professionals","-474864470":"Personal Care, Sales and Service Workers","-1129355784":"Agricultural, Forestry and Fishery Workers","-1242914994":"Craft, Metal, Electrical and Electronics Workers","-1317824715":"Cleaners and Helpers","-1592729751":"Mining, Construction, Manufacturing and Transport Workers","-2137323480":"Company Ownership","-1590574533":"Divorce Settlement","-1667683002":"Inheritance","-1237843731":"Investment Income","-777506574":"Sale of Property","-1161338910":"First name is required.","-1161818065":"Last name should be between 2 and 50 characters.","-1281693513":"Date of birth is required.","-26599672":"Citizenship is required","-912174487":"Phone is required.","-673765468":"Letters, numbers, spaces, periods, hyphens and forward slashes only.","-212167954":"Tax Identification Number is not properly formatted.","-621555159":"Identity information","-204765990":"Terms of use","-231863107":"No","-870902742":"How much knowledge and experience do you have in relation to online trading?","-1929477717":"I have an academic degree, professional certification, and/or work experience related to financial services.","-1540148863":"I have attended seminars, training, and/or workshops related to trading.","-922751756":"Less than a year","-542986255":"None","-1337206552":"In your understanding, CFD trading allows you to","-456863190":"Place a position on the price movement of an asset where the outcome is a fixed return or nothing at all.","-1314683258":"Make a long-term investment for a guaranteed profit.","-1546090184":"How does leverage affect CFD trading?","-1636427115":"Leverage helps to mitigate risk.","-800221491":"Leverage guarantees profits.","-811839563":"Leverage lets you open large positions for a fraction of trade value, which may result in increased profit or loss.","-1185193552":"Close your trade automatically when the loss is equal to or more than a specified amount, as long as there is adequate market liquidity.","-1046354":"Close your trade automatically when the profit is equal to or more than a specified amount, as long as there is adequate market liquidity.","-1842858448":"Make a guaranteed profit on your trade.","-860053164":"When trading multipliers.","-1250327770":"When buying shares of a company.","-1222388581":"All of the above.","-477761028":"Voter ID","-1466346630":"CPF","-1515286538":"Please enter your document number. ","-1694758788":"Enter your document number","-1458676679":"You should enter 2-50 characters.","-1176889260":"Please select a document type.","-1030759620":"Government Officers","-612752984":"These are default limits that we apply to your accounts.","-1598263601":"To learn more about trading limits and how they apply, please go to the <0>Help Centre.","-1411635770":"Learn more about account limits","-1340125291":"Done","-1101543580":"Limit","-858297154":"Represents the maximum amount of cash that you may hold in your account. If the maximum is reached, you will be asked to withdraw funds.","-976258774":"Not set","-1182362640":"Represents the maximum aggregate payouts on outstanding contracts in your portfolio. If the maximum is attained, you may not purchase additional contracts without first closing out existing positions.","-1781293089":"Maximum aggregate payouts on open positions","-1412690135":"*Any limits in your Self-exclusion settings will override these default limits.","-1598751496":"Represents the maximum volume of contracts that you may purchase in any given trading day.","-173346300":"Maximum daily turnover","-1502578110":"Your account is fully authenticated and your withdrawal limits have been lifted.","-138380129":"Total withdrawal allowed","-854023608":"To increase limit please verify your identity","-1500958859":"Verify","-1662154767":"a recent utility bill (e.g. electricity, water, gas, landline, or internet), bank statement, or government-issued letter with your name and this address.","-223216785":"Second line of address*","-594456225":"Second line of address","-1940457555":"Postal/ZIP Code*","-1964954030":"Postal/ZIP Code","-516397235":"Be careful who you share this token with. Anyone with this token can perform the following actions on your account behalf","-989216986":"Add accounts","-617480265":"Delete token","-316749685":"Are you sure you want to delete this token?","-786372363":"Learn more about API token","-55560916":"To access our mobile apps and other third-party apps, you'll first need to generate an API token.","-198329198":"API Token","-955038366":"Copy this token","-1668692965":"Hide this token","-1661284324":"Show this token","-1076138910":"Trade","-1666909852":"Payments","-488597603":"Trading information","-605778668":"Never","-1628008897":"Token","-1238499897":"Last Used","-1171226355":"Length of token name must be between {{MIN_TOKEN}} and {{MAX_TOKEN}} characters.","-1803339710":"Maximum {{MAX_TOKEN}} characters.","-408613988":"Select scopes based on the access you need.","-5605257":"This scope will allow third-party apps to withdraw to payment agents and make inter-account transfers for you.","-1373485333":"This scope will allow third-party apps to view your trading history.","-758221415":"This scope will allow third-party apps to open accounts for you, manage your settings and token usage, and more. ","-1117963487":"Name your token and click on 'Create' to generate your token.","-2005211699":"Create","-2115275974":"CFDs","-1879666853":"Deriv MT5","-460645791":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit or created a real {{dmt5_label}} account.","-1146960797":"Fiat currencies","-1959484303":"Cryptocurrencies","-561724665":"You are limited to one fiat currency only","-2087317410":"Oops, something went wrong.","-184202848":"Upload file","-1447142373":"Click here to upload.","-863586176":"Drag and drop a file or click to browse your files.","-723198394":"File size should be 8MB or less","-1948369500":"File uploaded is not supported","-1040865880":"Drop files here..","-1100235269":"Industry of employment","-684388823":"Estimated net worth","-509054266":"Anticipated annual turnover","-601903492":"Forex trading experience","-1012699451":"CFD trading experience","-1117345066":"Choose the document type","-651192353":"Sample:","-1044962593":"Upload Document","-164448351":"Show less","-1361653502":"Show more","-337620257":"Switch to real account","-2120454054":"Add a real account","-38915613":"Unsaved changes","-2137450250":"You have unsaved changes. Are you sure you want to discard changes and leave this page?","-1067082004":"Leave Settings","-1982432743":"It appears that the address in your document doesn’t match the address\n in your Deriv profile. Please update your personal details now with the\n correct address.","-1451334536":"Continue trading","-1525879032":"Your documents for proof of address is expired. Please submit again.","-1425489838":"Proof of address verification not required","-1008641170":"Your account does not need address verification at this time. We will inform you if address verification is required in the future.","-60204971":"We could not verify your proof of address","-1944264183":"To continue trading, you must also submit a proof of identity.","-1088324715":"We’ll review your documents and notify you of its status within 1 - 3 working days.","-329713179":"Ok","-1926456107":"The ID you submitted is expired.","-555047589":"It looks like your identity document has expired. Please try again with a valid document.","-841187054":"Try Again","-2097808873":"We were unable to verify your ID with the details you provided. ","-228284848":"We were unable to verify your ID with the details you provided.","-1391934478":"Your ID is verified. You will also need to submit proof of your address.","-118547687":"ID verification passed","-200989771":"Go to personal details","-1358357943":"Please check and update your postal code before submitting proof of identity.","-1401994581":"Your personal details are missing","-2004327866":"Please select a valid country of document issuance.","-1664159494":"Country","-749870311":"Please contact us via <0>live chat.","-1084991359":"Proof of identity verification not required","-1981334109":"Your account does not need identity verification at this time. We will inform you if identity verification is required in the future.","-182918740":"Your proof of identity submission failed because:","-155705811":"A clear colour photo or scanned image","-246893488":"JPEG, JPG, PNG, PDF, or GIF","-1454880310":"Must be valid for at least 6 months","-100534371":"Before uploading, please ensure that you’re facing forward in the selfie, your face is within the frame, and your eyes are clearly visible even if you’re wearing glasses.","-1529523673":"Confirm and upload","-705047643":"Sorry, an error occured. Please select another file.","-1664309884":"Tap here to upload","-856213726":"You must also submit a proof of address.","-1389323399":"You should enter {{min_number}}-{{max_number}} characters.","-1313806160":"Please request a new password and check your email for the new token.","-1598167506":"Success","-1077809489":"You have a new {{platform}} password to log in to your {{platform}} accounts on the web and mobile apps.","-2068479232":"{{platform}} password","-1332137219":"Strong passwords contain at least 8 characters that include uppercase and lowercase letters, numbers, and symbols.","-1597186502":"Reset {{platform}} password","-848721396":"These trading limits are optional, and you can strengthen them at any time. If you don’t wish to set a specific limit, leave the field blank. If you live in the United Kingdom, Customer Support can only remove or weaken your trading limits after 24 hours of receiving the request. If you live in the Isle of Man, Customer Support can only remove or weaken your trading limits after your trading limit period has expired.","-469096390":"These trading limits are optional, and you can strengthen them at any time. If you don’t wish to set a specific limit, leave the field blank. Customer Support can only remove or weaken your trading limits after 24 hours of receiving the request.","-42808954":"You can also exclude yourself entirely for a specified duration. This can only be removed once your self-exclusion has expired. If you wish to continue trading once your self-exclusion period expires, you must contact Customer Support by calling <0>+447723580049 to lift this self-exclusion. Requests by chat or email shall not be entertained. There will be a 24-hour cooling-off period before you can resume trading.","-1088698009":"These self-exclusion limits help you control the amount of money and time you spend trading on {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} and {{platform_name_bbot}} on Deriv. The limits you set here will help you exercise <0>responsible trading.","-1702324712":"These limits are optional, and you can adjust them at any time. You decide how much and how long you’d like to trade. If you don’t wish to set a specific limit, leave the field blank.","-1819875658":"You can also exclude yourself entirely for a specified duration. Once the self-exclusion period has ended, you can either extend it further or resume trading immediately. If you wish to reduce or remove the self-exclusion period, contact our <0>Customer Support.","-1031814119":"About trading limits and self-exclusion","-183468698":"Trading limits and self-exclusion","-933963283":"No, review my limits","-1759860126":"Yes, log me out immediately","-572347855":"{{value}} mins","-313333548":"You’ll be able to adjust these limits at any time. You can reduce your limits from the <0>self-exclusion page. To increase or remove your limits, please contact our <1>Customer Support team.","-1265833982":"Accept","-2123139671":"Your stake and loss limits","-1250802290":"24 hours","-2070080356":"Max. total stake","-1545823544":"7 days","-180147209":"You will be automatically logged out from each session after this time limit.","-374553538":"Your account will be excluded from the website until this date (at least 6 months, up to 5 years).","-2121421686":"To self-exclude from all online gambling companies licensed in Great Britain, go to <0>www.gamstop.co.uk.","-2105708790":"Your maximum account balance and open positions","-1960600163":"Once your account balance reaches this amount, you will not be able to deposit funds into your account.","-1073845224":"No. of open position(s)","-288196326":"Your maximum deposit limit","-568749373":"Max. deposit limit","-1884902844":"Max. deposit limit per day","-545085253":"Max. deposit limit over 7 days","-1031006762":"Max. deposit limit over 30 days","-1116871438":"Max. total loss over 30 days","-2134714205":"Time limit per session","-1884271702":"Time out until","-1265825026":"Timeout time must be greater than current time.","-1332882202":"Timeout time cannot be more than 6 weeks.","-1635977118":"Exclude time cannot be less than 6 months.","-1617352279":"The email is in your spam folder (Sometimes things get lost there).","-547557964":"We can’t deliver the email to this address (Usually because of firewalls or filtering).","-142444667":"Please click on the link in the email to change your Deriv MT5 password.","-742748008":"Check your email and click the link in the email to proceed.","-84068414":"Still didn't get the email? Please contact us via <0>live chat.","-428335668":"You will need to set a password to complete the process.","-818898181":"Name in document doesn’t match your Deriv profile.","-310316375":"Address in document doesn’t match address you entered above.","-485368404":"Document issued more than 6-months ago.","-367016488":"Blurry document. All information must be clear and visible.","-1957076143":"Cropped document. All information must be clear and visible.","-2139303636":"You may have followed a broken link, or the page has moved to a new address.","-1448368765":"Error code: {{error_code}} page not found","-254792921":"You can only make deposits at the moment. To enable withdrawals, please complete your financial assessment.","-1437017790":"Financial information","-70342544":"We’re legally obliged to ask for your financial information.","-39038029":"Trading experience","-1894668798":"Other trading instruments experience","-1026468600":"Other trading instruments frequency","-1743024217":"Select Language","-1822545742":"Ether Classic","-1334641066":"Litecoin","-1214036543":"US Dollar","-1782590355":"No currency has been set for this account","-536187647":"Confirm revoke access?","-1357606534":"Permission","-570222048":"Revoke access","-1526404112":"Utility bill: electricity, water, gas, or landline phone bill.","-537552700":"Home rental agreement: valid and current agreement.","-890084320":"Save and submit","-30772747":"Your personal details have been saved successfully.","-1107320163":"Automate your trading, no coding needed.","-829643221":"Multipliers trading platform.","-1585707873":"Financial Commission","-199154602":"Vanuatu Financial Services Commission","-191165775":"Malta Financial Services Authority","-194969520":"Counterparty company","-1089385344":"Deriv (SVG) LLC","-2019617323":"Deriv (BVI) Ltd","-112814932":"Deriv (FX) Ltd","-1131400885":"Deriv Investments (Europe) Limited","-1471207907":"All assets","-781132577":"Leverage","-1591882610":"Synthetics","-543177967":"Stock indices","-362324454":"Commodities","-1071336803":"Platform","-820028470":"Options & Multipliers","-1018945969":"TradersHub","-1856204727":"Reset","-213142918":"Deposits and withdrawals temporarily unavailable ","-224804428":"Transactions","-1186807402":"Transfer","-1308346982":"Derived","-1145604233":"Trade CFDs on MT5 with Derived indices that simulate real-world market movements.","-328128497":"Financial","-1484404784":"Trade CFDs on MT5 with forex, stock indices, commodities, and cryptocurrencies.","-659955365":"Swap-Free","-674118045":"Trade swap-free CFDs on MT5 with synthetics, forex, stocks, stock indices, cryptocurrencies, and ETFs.","-1210359945":"Transfer funds to your accounts","-81256466":"You need a Deriv account to create a CFD account.","-699372497":"Trade with leverage and tight spreads for better returns on successful trades. <0>Learn more","-1884966862":"Get more Deriv MT5 account with different type and jurisdiction.","-982095728":"Get","-1277942366":"Total assets","-1255879419":"Trader's Hub","-493788773":"Non-EU","-673837884":"EU","-230566990":"The following documents you submitted did not pass our checks:","-846812148":"Proof of address.","-2055865877":"Non-EU regulation","-643108528":"Non-EU and EU regulation","-172898036":"CR5236585","-1665192032":"Multipliers account","-744999940":"Deriv account","-1638358352":"Get the upside of CFDs without risking more than your initial stake with <0>Multipliers.","-749129977":"Get a real Deriv account, start trading and manage your funds.","-1814994113":"CFDs <0>{{compare_accounts_title}}","-318106501":"Trade CFDs on MT5 with synthetics, baskets, and derived FX.","-1328701106":"Trade CFDs on MT5 with forex, stocks, stock indices, synthetics, cryptocurrencies, and commodities.","-1290112064":"Deriv EZ","-1453519913":"Trade CFDs on an easy-to-get-started platform with all your favourite assets.","-2051096382":"Earn a range of payouts by correctly predicting market movements with <0>options, or get the\n upside of CFDs without risking more than your initial stake with <1>multipliers.","-2146691203":"Choice of regulation","-249184528":"You can create real accounts under EU or non-EU regulation. Click the <0><0/> icon to learn more about these accounts.","-1505234170":"Trader's Hub tour","-181080141":"Trading hub tour","-1042025112":"Need help moving around?<0>We have a short tutorial that might help. Hit Repeat tour to begin.","-1536335438":"These are the trading accounts available to you. You can click on an account’s icon or description to find out more","-1034232248":"CFDs or Multipliers","-1320214549":"You can choose between CFD trading accounts and Multipliers accounts","-2069414013":"Click the ‘Get’ button to create an account","-951876657":"Top-up your account","-1945421757":"Once you have an account click on ‘Deposit’ or ‘Transfer’ to add funds to an account","-1965920446":"Start trading","-33612390":"<0>EU statutory disclaimer: CFDs are complex instruments and come with a high risk of losing money rapidly due to leverage. <0>73% of retail investor accounts lose money when trading CFDs with this provider. You should consider whether you understand how CFDs work and whether you can afford to take the high risk of losing your money.","-2021135479":"This field is required.","-1870909526":"Our server cannot retrieve an address.","-582721696":"The current allowed withdraw amount is {{format_min_withdraw_amount}} to {{format_max_withdraw_amount}} {{currency}}","-1975494965":"Cashier","-42592103":"Deposit cryptocurrencies","-60779216":"Withdrawals are temporarily unavailable due to system maintenance. You can make your withdrawals when the maintenance is complete.","-215186732":"You’ve not set your country of residence. To access Cashier, please update your country of residence in the Personal details section in your account settings.","-1392897508":"The identification documents you submitted have expired. Please submit valid identity documents to unlock Cashier. ","-954082208":"Your cashier is currently locked. Please contact us via <0>live chat to find out how to unlock it.","-929148387":"Please set your account currency to enable deposits and withdrawals.","-541392118":"Your account has not been authenticated. Please submit your <0>proof of identity and <1>proof of address to authenticate your account and access your cashier.","-247122507":"Your cashier is locked. Please complete the <0>financial assessment to unlock it.","-1443721737":"Your cashier is locked. See <0>how we protect your funds before you proceed.","-901712457":"Your access to Cashier has been temporarily disabled as you have not set your 30-day turnover limit. Please go to <0>Self-exclusion and set your 30-day turnover limit.","-166472881":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable deposits and withdrawals.","-666905139":"Deposits are locked","-378858101":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable deposits.","-1318742415":"Your account has not been authenticated. Please submit your <0>proof of identity and <1>proof of address to authenticate your account and request for withdrawals.","-1923809087":"Unfortunately, you can only make deposits. Please contact us via <0>live chat to enable withdrawals.","-172277021":"Cashier is locked for withdrawals","-1624999813":"It seems that you've no commissions to withdraw at the moment. You can make withdrawals once you receive your commissions.","-1077304626":"Amount ({{currency}})","-1559994981":"Approximate value","-190084602":"Transaction","-1995606668":"Amount","-2024290965":"Confirmations","-811190405":"Time","-1984478597":"The details of this transaction is available on CoinsPaid.","-1272778997":"We've sent you an email.","-89973258":"Resend email in {{seconds}}s","-1332236294":"Please verify your identity","-1675848843":"Error","-283017497":"Retry","-1838982691":"UNKNOWN","-532693866":"Something went wrong. Please refresh the page and try again.","-1196049878":"First line of home address","-1326406485":"Postal Code/ZIP","-939625805":"Telephone","-442575534":"Email verification failed","-1459042184":"Update your personal details","-1603543465":"We can't validate your personal details because there is some information missing.","-614516651":"Need help? <0>Contact us.","-203002433":"Deposit now","-720315013":"You have no funds in your {{currency}} account","-2052373215":"Please make a deposit to use this feature.","-379487596":"{{selected_percentage}}% of available balance ({{format_amount}} {{currency__display_code}})","-1957498244":"more","-1059419768":"Notes","-285921910":"Learn more about <0>payment methods.","-316545835":"Please ensure <0>all details are <0>correct before making your transfer.","-949073402":"I confirm that I have verified the client’s transfer information.","-1752211105":"Transfer now","-1787304306":"Deriv P2P","-174976899":"P2P verification","-1705887186":"Your deposit is successful.","-142361708":"In process","-1582681840":"We’ve received your request and are waiting for more blockchain confirmations.","-1626218538":"You’ve cancelled your withdrawal request.","-1062841150":"Your withdrawal is unsuccessful due to an error on the blockchain. Please <0>contact us via live chat for more info.","-630780094":"We’re awaiting confirmation from the blockchain.","-1525882769":"Your withdrawal is unsuccessful. We've sent you an email with more information.","-298601922":"Your withdrawal is successful.","-1463156905":"Learn more about payment methods","-1236567184":"This is your <0>{{regulation}}{{currency}} account {{loginid}}.","-1547606079":"We accept the following cryptocurrencies:","-1517325716":"Deposit via the following payment methods:","-639677539":"Buy cryptocurrencies","-1560098002":"Buy cryptocurrencies via fiat onramp","-541870313":"Deposit via payment agents","-197251450":"Don't want to trade in {{currency_code}}? You can open another cryptocurrency account.","-91824739":"Deposit {{currency}}","-523804269":"{{amount}} {{currency}} on {{date}}","-494847428":"Address: <0>{{value}}","-1117977576":"Confirmations: <0>{{value}}","-1935946851":"View more","-1744490898":"Unfortunately, we cannot retrieve the information at this time. ","-515809216":"Send only {{currency_name}} ({{currency_code}}) to this address.","-1589407981":"To avoid loss of funds:","-1042704302":"Make sure to copy your Deriv account address correctly into your crypto wallet.","-80329359":"<0>Note: You’ll receive an email when your deposit start being processed.","-2108344100":"Looking for a way to buy cryptocurrencies? <0>Try Fiat onramp.","-598073640":"About Tether (Ethereum)","-275902914":"Tether on Ethereum (eUSDT)","-1188009792":"Tether on Omni Layer (USDT)","-1239329687":"Tether was originally created to use the bitcoin network as its transport protocol ‒ specifically, the Omni Layer ‒ to allow transactions of tokenised traditional currency.","-314177745":"Unfortunately, we couldn't get the address since our server was down. Please click Refresh to reload the address or try again later.","-1068036170":"We do not charge a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts and between your Deriv fiat and {{platform_name_dxtrade}} accounts.","-2056016338":"You’ll not be charged a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts.","-599632330":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts and between your Deriv fiat and {{platform_name_dxtrade}} accounts.","-1196994774":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency accounts.","-1361372445":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts, your Deriv cryptocurrency and {{platform_name_derivez}} accounts, and your Deriv cryptocurrency and {{platform_name_dxtrade}} accounts.","-993556039":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts and between your Deriv cryptocurrency and {{platform_name_dxtrade}} accounts.","-1382702462":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts.","-1995859618":"You may transfer between your Deriv fiat, cryptocurrency, {{platform_name_mt5}}, {{platform_name_derivez}} and {{platform_name_dxtrade}} accounts.","-545616470":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts, up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts, up to {{ allowed_derivez }} transfers between your Deriv and {{platform_name_derivez}} accounts, and up to {{ allowed_dxtrade }} transfers between your Deriv and {{platform_name_dxtrade}} accounts.","-1151983985":"Transfer limits may vary depending on the exchange rates.","-1747571263":"Please bear in mind that some transfers may not be possible.","-757062699":"Transfers may be unavailable due to high volatility or technical issues and when the exchange markets are closed.","-1344870129":"Deriv accounts","-1156059326":"You have {{number}} transfer remaining for today.","-1109729546":"You will be able to transfer funds between MT5 accounts and other accounts once your address is verified.","-1593609508":"Transfer between your accounts in Deriv","-464965808":"Transfer limits: <0 /> - <1 />","-553249337":"Transfers are locked","-1638172550":"To enable this feature you must complete the following:","-1949883551":"You only have one account","-1149845849":"Back to Trader's Hub","-1232852916":"We’re switching over to your {{currency}} account to view the transaction.","-759000391":"We were unable to verify your information automatically. To enable this function, you must complete the following:","-1632668764":"I accept","-544232635":"Please go to the Deposit page to generate an address. Then come back here to continue with your transaction.","-1161069724":"Please copy the crypto address you see below. You'll need it to deposit your cryptocurrency.","-1388977563":"Copied!","-1962894999":"This address can only be used ONCE. Please copy a new one for your next transaction.","-451858550":"By clicking 'Continue' you will be redirected to {{ service }}, a third-party payment service provider. Please note that {{ website_name }} is not responsible for the content or services provided by {{ service }}. If you encounter any issues related to {{ service }} services, you must contact {{ service }} directly.","-2005265642":"Fiat onramp is a cashier service that allows you to convert fiat currencies to crypto to top up your Deriv crypto accounts. Listed here are third-party crypto exchanges. You’ll need to create an account with them to use their services.","-1593063457":"Select payment channel","-1309258714":"From account number","-1247676678":"To account number","-816476007":"Account holder name","-344403983":"Description","-922432739":"Please enter a valid client login ID.","-1024241603":"Insufficient balance.","-1979554765":"Please enter a valid description.","-1254233806":"You've transferred","-953082600":"Some payment methods may not be listed here but payment agents may still offer them. If you can’t find your favourite method, contact the payment agents directly to check further.","-1491457729":"All payment methods","-142563298":"Contact your preferred payment agent for payment instructions and make your deposit.","-1023961762":"Commission on deposits","-552873274":"Commission on withdrawal","-880645086":"Withdrawal amount","-118683067":"Withdrawal limits: <0 />-<1 />","-1125090734":"Important notice to receive your funds","-1924707324":"View transaction","-1474202916":"Make a new withdrawal","-511423158":"Enter the payment agent account number","-2059278156":"Note: {{website_name}} does not charge any transfer fees.","-1201279468":"To withdraw your funds, please choose the same payment method you used to make your deposits.","-2004264970":"Your wallet address should have 25 to 64 characters.","-1707299138":"Your {{currency_symbol}} wallet address","-38063175":"{{account_text}} wallet","-705272444":"Upload a proof of identity to verify your identity","-2024958619":"This is to protect your account from unauthorised withdrawals.","-130833284":"Please note that your maximum and minimum withdrawal limits aren’t fixed. They change due to the high volatility of cryptocurrency.","-1531269493":"We'll send you an email once your transaction has been processed.","-113940416":"Current stake:","-1999539705":"Deal cancel. fee:","-447037544":"Buy price:","-1342699195":"Total profit/loss:","-1511825574":"Profit/Loss:","-726626679":"Potential profit/loss:","-338379841":"Indicative price:","-2027409966":"Initial stake:","-1525144993":"Payout limit:","-1167474366":"Tick ","-555886064":"Won","-529060972":"Lost","-571642000":"Day","-155989831":"Decrement value","-1192773792":"Don't show this again","-1769852749":"N/A","-1572746946":"Asian Up","-686840306":"Asian Down","-2141198770":"Higher","-816098265":"Lower","-1646655742":"Spread Up","-668987427":"Spread Down","-912577498":"Matches","-1862940531":"Differs","-808904691":"Odd","-556230215":"Ends Outside","-1268220904":"Ends Between","-703542574":"Up","-1127399675":"Down","-768425113":"No Touch","-1163058241":"Stays Between","-1354485738":"Reset Call","-376148198":"Only Ups","-1337379177":"High Tick","-328036042":"Please enter a stop loss amount that's higher than the current potential loss.","-2127699317":"Invalid stop loss. Stop loss cannot be more than stake.","-590765322":"Unfortunately, this trading platform is not available for EU Deriv account. Please switch to a non-EU account to continue trading.","-2110207996":"Deriv Bot is unavailable for this account","-971295844":"Switch to another account","-1194079833":"Deriv Bot is not available for EU clients","-1223145005":"Loss amount: {{profit}}","-1062922595":"Reference ID (buy)","-2068574600":"Reference ID (sell)","-994038153":"Start Time","-1979852400":"Entry Spot","-427802309":"Profit/Loss","-668558002":"Journal.csv","-746652890":"Notifications","-824109891":"System","-749186458":"Account switching is disabled while your bot is running. Please stop your bot before switching accounts.","-662836330":"Would you like to keep your current contract or close it? If you decide to keep it running, you can check and close it later on the <0>Reports page.","-597939268":"Keep my contract","-1322453991":"You need to log in to run the bot.","-236548954":"Contract Update Error","-1428017300":"THE","-1450728048":"OF","-255051108":"YOU","-1845434627":"IS","-931434605":"THIS","-740712821":"A","-187634388":"This block is mandatory. Here is where you can decide if your bot should continue trading. Only one copy of this block is allowed.","-2105473795":"The only input parameter determines how block output is going to be formatted. In case if the input parameter is \"string\" then the account currency will be added.","-1800436138":"2. for \"number\": 1325.68","-530632460":"This block is used to determine if the market price moves in the selected direction or not. It gives you a value of \"True\" or \"False\".","-1875717842":"Examples:","-890079872":"1. If the selected direction is \"Rise\", and the previous tick value is less than the current tick value, the output will be \"True\". Otherwise, the output will be an empty string.","-489739641":"2. If the selected direction is \"Fall\", and the previous tick value is more than the current tick value, the output will be \"True\". Otherwise, the output will be an empty string.","-2116076360":"There are 4 message types:","-1421941045":"2. 'Warn' displays a message in yellow to highlight something that needs attention.","-277850921":"If \"Win\" is selected, it will return \"True\" if your last trade was successful. Otherwise, it will return an empty string.","-1918487001":"Example:","-2139916657":"1. In the below example the loop is terminated in case \"x\" is \"False\" even though only one iteration is complete","-1238900333":"2. In the below example the loop jumps to the next iteration without executing below block in case if \"x\" is \"False\"","-1729479576":"You can use \"i\" inside the loop, for example to access list items","-1474636594":"In this example, the loop will repeat three times, as that is the number of items in the given list. During each iteration, the variable \"i\" will be assigned a value from the list. ","-908772734":"This block evaluates a statement and will perform an action only when the statement is true.","-334040831":"2. In this example, the instructions are repeated as long as the value of x is greater than or equal to 10. Once the value of x drops below 10, the loop is terminated.","-444267958":"\"Seconds Since Epoch\" block returns the number of seconds since January 1st, 1970.","-447522129":"You might need it when you want to repeat an actions after certain amount of time.","-1488259879":"The term \"candle\" refers to each bar on the candlestick chart. Each candle represents four market prices for the selected time interval:","-2020693608":"Each candlestick on the chart represents 4 market prices for the selected time interval:","-62728852":"- Open price: the opening price","-1247744334":"- Low price: the lowest price","-1386365697":"- Close price: the closing price","-1498732382":"A black (or red) candle indicates that the open price is higher than the close price. This represents a downward movement of the market price.","-1871864755":"This block gives you the last digit of the latest tick value of the selected market. If the latest tick value is 1410.90, this block will return 0. It’s useful for digit-based contracts such as Even/Odd, Matches/Differs, or Higher/Lower.","-1029671512":"In case if the \"OR\" operation is selected, the block returns \"True\" in case if one or both given values are \"True\"","-210295176":"Available operations:","-1385862125":"- Addition","-983721613":"- Subtraction","-854750243":"- Multiplication","-1394815185":"In case if the given number is less than the lower boundary of the range, the block returns the lower boundary value. Similarly, if the given number is greater than the higher boundary, the block will return the higher boundary value. In case if the given value is between boundaries, the block will return the given value unchanged.","-1034564248":"In the below example the block returns the value of 10 as the given value (5) is less than the lower boundary (10)","-2009817572":"This block performs the following operations to a given number","-671300479":"Available operations are:","-514610724":"- Absolute","-1923861818":"- Euler’s number (2.71) to the power of a given number","-1556344549":"Here’s how:","-1061127827":"- Visit the following URL, make sure to replace with the Telegram API token you created in Step 1: https://api.telegram.org/bot/getUpdates","-311389920":"In this example, the open prices from a list of candles are assigned to a variable called \"cl\".","-1460794449":"This block gives you a list of candles within a selected time interval.","-1634242212":"Used within a function block, this block returns a value when a specific condition is true.","-2012970860":"This block gives you information about your last contract.","-1504783522":"You can choose to see one of the following:","-10612039":"- Profit: the profit you’ve earned","-555996976":"- Entry time: the starting time of the contract","-1391071125":"- Exit time: the contract expiration time","-1961642424":"- Exit value: the value of the last tick of the contract","-111312913":"- Barrier: the barrier value of the contract (applicable to barrier-based trade types such as stays in/out, touch/no touch, etc.)","-674283099":"- Result: the result of the last contract: \"win\" or \"loss\"","-704543890":"This block gives you the selected candle value such as open price, close price, high price, low price, and open time. It requires a candle as an input parameter.","-482281200":"In the example below, the open price is assigned to the variable \"op\".","-364621012":"This block gives you the specified candle value for a selected time interval. You can choose which value you want:","-232477769":"- Open: the opening price","-610736310":"Use this block to sell your contract at the market price. Selling your contract is optional. You may choose to sell if the market trend is unfavourable.","-1307657508":"This block gives you the potential profit or loss if you decide to sell your contract. It can only be used within the \"Sell conditions\" root block.","-1921072225":"In the example below, the contract will only be sold if the potential profit or loss is more than the stake.","-955397705":"SMA adds the market price in a list of ticks or candles for a number of time periods, and divides the sum by that number of time periods.","-1424923010":"where n is the number of periods.","-1835384051":"What SMA tells you","-749487251":"SMA serves as an indicator of the trend. If the SMA points up then the market price is increasing and vice versa. The larger the period number, the smoother SMA line is.","-1996062088":"In this example, each point of the SMA line is an arithmetic average of close prices for the last 10 days.","-1866751721":"Input list accepts a list of ticks or candles, while period is the specified time period.","-1097076512":"You may compare SMA values calculated on every bot run to identify the market trend direction. Alternatively, you may also use a variation of the SMA block, the Simple Moving Average Array block. ","-1254849504":"If a period of 10 is entered, the Simple Moving Average Array block will return a list of SMA values calculated based on period of 10.","-1190046167":"This block displays a dialog box with a customised message. When the dialog box is displayed, your strategy is paused and will only resume after you click \"OK\".","-859028989":"In this example, the date and time will be displayed in a green notification box.","-1452086215":"In this example, a Rise contract will be purchased at midnight on 1 August 2019.","-1765276625":"Click the multiplier drop-down menu and choose the multiplier value you want to trade with.","-1872233077":"Your potential profit will be multiplied by the multiplier value you’ve chosen.","-614454953":"To learn more about multipliers, please go to the <0>Multipliers page.","-2078588404":"Select your desired market and asset type. For example, Forex > Major pairs > AUD/JPY","-2037446013":"2. Trade Type","-533927844":"Select your desired trade type. For example, Up/Down > Rise/Fall","-1192411640":"4. Default Candle Interval","-485434772":"8. Trade Options","-1827646586":"This block assigns a given value to a variable, creating the variable if it doesn't already exist.","-254421190":"List: ({{message_length}})","-1616649196":"results","-90107030":"No results found","-984140537":"Add","-1373954791":"Should be a valid number","-1278608332":"Please enter a number between 0 and {{api_max_losses}}.","-287597204":"Enter limits to stop your bot from trading when any of these conditions are met.","-1445989611":"Limits your potential losses for the day across all Deriv platforms.","-152878438":"Maximum number of trades your bot will execute for this run.","-1490942825":"Apply and run","-1442034178":"Contract bought","-2020280751":"Bot is stopping","-1436403979":"Contract closed","-1711732508":"Reference IDs","-386141434":"(Buy)","-482272687":"(Sell)","-1983189496":"ticks","-694277729":"(High)","-2028564707":"(Low)","-627895223":"Exit spot","-596238067":"Entry/Exit spot","-558594655":"The bot is not running","-478946875":"The stats are cleared","-1842451303":"Welcome to Deriv Bot!","-1391310674":"Check out these guides and FAQs to learn more about building your bot:","-2066779239":"FAQs","-280324365":"What is Deriv Bot?","-1016171176":"Asset","-621128676":"Trade type","-447853970":"Loss threshold","-507620484":"Unsaved","-764102808":"Google Drive","-1696412885":"Import","-320197558":"Sort blocks","-1566369363":"Zoom out","-1285759343":"Search","-1291088318":"Purchase conditions","-112876186":"Analysis","-1769584466":"Stats","-1133736197":"Utility","-1682372359":"Text","-907562847":"Lists","-1646497683":"Loops","-251326965":"Miscellaneous","-934909826":"Load strategy","-1692205739":"Import a bot from your computer or Google Drive, build it from scratch, or start with a quick strategy.","-1545070554":"Delete bot","-1972599670":"Your bot will be permanently deleted when you hit ","-1692956623":"Yes, delete.","-573479616":"Are you sure you want to delete it?","-786915692":"You are connected to Google Drive","-1256971627":"To import your bot from your Google Drive, you'll need to sign in to your Google account.","-1233084347":"To know how Google Drive handles your data, please review Deriv’s <0>Privacy policy.","-1150107517":"Connect","-1150390589":"Last modified","-1393876942":"Your bots:","-767342552":"Enter your bot name, choose to save on your computer or Google Drive, and hit ","-1372891985":"Save.","-1003476709":"Save as collection","-636521735":"Save strategy","-1953880747":"Stop my bot","-1899230001":"Stopping the current bot will load the Quick Strategy you just created to the workspace.","-2131847097":"Any open contracts can be viewed on the ","-563774117":"Dashboard","-939764287":"Charts","-1793577405":"Build from scratch","-358753028":"Create your bot using our drag-and-drop blocks or click Quick Strategy to choose from the ready-to-use bot templates.","-1212601535":"Monitor the market","-21136101":"See how your bot is doing in real-time.","-631097919":"Click <0>Run when you want to start trading, and click <0>Stop when you want to stop.","-1999747212":"Want to retake the tour?","-129587613":"Got it, thanks!","-782992165":"Step 1 :","-1207872534":"First, set the <0>Trade parameters block.","-1656388044":"First, set <0>Market to Derived > Continuous Indices > Volatility 100 (1s) Index.","-1706298865":"Then, set <0>Trade type to Up/Down > Rise/Fall.","-1834358537":"For <0>Default candle interval, set it to 1 minute","-1940971254":"For <0>Trade options, set it as below:","-512839354":"<0>Stake: USD 10 (min: 0.35 - max: 50000)","-753745278":"Step 2 :","-1056713679":"Then, set the <0>Purchase conditions block.","-245497823":"<0>2. Purchase conditions:","-916770284":"<0>Purchase: Rise","-758077259":"Step 3 :","-677396944":"Step 4 :","-295975118":"Next, go to <0>Utility tab under the Blocks menu. Tap the drop-down arrow and hit <0>Loops.","-698493945":"Step 5 :","-1992994687":"Now, tap the <0>Analysis drop-down arrow and hit <0>Contract.","-1844492873":"Go to the <0>Last trade result block and click + icon to add the <0>Result is Win block to the workspace.","-1547091772":"Then, drag the <0>Result is win into the empty slot next to <0>repeat until block.","-736400802":"Step 6 :","-732067680":"Finally, drag and add the whole <0>Repeat block to the <0>Restart trading conditions block.","-1411787252":"Step 1","-1127164953":"Hi! Hit <0>Start for a quick tour.","-1109191651":"Must be a number higher than 0","-689786738":"Minimum duration: {{ min }}","-184183432":"Maximum duration: {{ max }}","-1494924808":"The value must be equal to or greater than 2.","-1823621139":"Quick Strategy","-1778025545":"You’ve successfully imported a bot.","-563921656":"Bot Builder guide","-1109392787":"Learn how to build your bot from scratch using a simple strategy.","-1263822623":"You can import a bot from your mobile device or from Google drive, see a preview in the bot builder, and start trading by running the bot.","-358288026":"Note: You can also find this tutorial in the <0>Tutorials tab.","-683790172":"Now, <0>run the bot to test out the strategy.","-1519425996":"No results found \"{{ faq_search_value }}\"","-155173714":"Let’s build a bot!","-1919212468":"3. You can also search for the blocks you want using the search bar above the categories.","-1520558271":"For more info, check out this blog post on the basics of building a trading bot.","-980360663":"3. Choose the block you want and drag it to the workspace.","-1493168314":"What is a quick strategy?","-1680391945":"Using a quick strategy","-1177914473":"How do I save my strategy?","-271986909":"In Bot Builder, hit Save on the toolbar at the top to download your bot. Give your bot a name, and choose to download your bot to your device or Google Drive. Your bot will be downloaded as an XML file.","-1149045595":"1. After hitting Import, select Local and click Continue.","-288041546":"2. Select your XML file and hit Open.","-2127548288":"3. Your bot will be loaded accordingly.","-1311297611":"1. After hitting Import, select Google Drive and click Continue.","-1549564044":"How do I reset the workspace?","-1127331928":"In Bot Builder, hit Reset on the toolbar at the top. This will clear the workspace. Please note that any unsaved changes will be lost.","-1720444288":"How do I control my losses with Deriv Bot?","-1142295124":"There are several ways to control your losses with Deriv Bot. Here’s a simple example of how you can implement loss control in your strategy:","-986689483":"1. Create the following variables:","-269910127":"3. Update current profit/loss with the profit from the last contract. If the last contract was lost, the value of current profit/loss will be negative.","-1565344891":"Can I run Deriv Bot on multiple tabs in my web browser?","-90192474":"Yes, you can. However, there are limits on your account, such as maximum number of open positions and maximum aggregate payouts on open positions. So, just keep these limits in mind when opening multiple positions. You can find more info about these limits at Settings > Account limits.","-213872712":"No, we don't offer cryptocurrencies on Deriv Bot.","-2147346223":"In which countries is Deriv Bot available?","-352345777":"What are the most popular strategies for automated trading?","-552392096":"Three of the most commonly used strategies in automated trading are Martingale, D'Alembert, and Oscar's Grind — you can find them all ready-made and waiting for you in Deriv Bot.","-418247251":"Download your journal.","-870004399":"<0>Bought: {{longcode}} (ID: {{transaction_id}})","-1211474415":"Filters","-186972150":"There are no messages to display","-999254545":"All messages are filtered out","-1121028020":"or, if you prefer...","-254025477":"Select an XML file from your device","-1131095838":"Please upload an XML file","-523928088":"Create one or upload one from your local drive or Google Drive.","-1684205190":"Why can't I see my recent bots?","-2050879370":"1. Logged in from a different device","-811857220":"3. Cleared your browser cache","-625024929":"Leaving already?","-584289785":"No, I'll stay","-1435060006":"If you leave, your current contract will be completed, but your bot will stop running immediately.","-783058284":"Total stake","-2077494994":"Total payout","-1073955629":"No. of runs","-1729519074":"Contracts lost","-42436171":"Total profit/loss","-1137823888":"Total payout since you last cleared your stats.","-992662695":"The number of times your bot has run since you last cleared your stats. Each run includes the execution of all the root blocks.","-1382491190":"Your total profit/loss since you last cleared your stats. It is the difference between your total payout and your total stake.","-24780060":"When you’re ready to trade, hit ","-2147110353":". You’ll be able to track your bot’s performance here.","-2140412463":"Buy price","-1299484872":"Account","-2004386410":"Win","-266502731":"Transactions detailed summary","-1717650468":"Online","-1825471709":"A whole new trading experience on a powerful yet easy to use platform.","-981017278":"Automated trading at your fingertips. No coding needed.","-1309011360":"Open positions","-1597214874":"Trade table","-1929724703":"Compare CFD accounts","-883103549":"Account deactivated","-1837059346":"Buy / Sell","-1845037007":"Advertiser's page","-494667560":"Orders","-679691613":"My ads","-821418875":"Trader","-679102561":"Contract Details","-430118939":"Complaints policy","-568280383":"Deriv Gaming","-895331276":"Complete your proof of address","-782679300":"Complete your proof of identity","-579984289":"Derived Demo","-1596515467":"Derived BVI","-222394569":"Derived Vanuatu","-533935232":"Financial BVI","-565431857":"Financial Labuan","-291535132":"Swap-Free Demo","-1472945832":"Swap-Free SVG","-144803045":"Only numbers and these special characters are allowed: {{permitted_characters}}","-1450516268":"Only letters, numbers, space, hyphen, period, and apostrophe are allowed.","-1966032552":"The length of token should be 8.","-2128137611":"Should start with letter or number, and may contain hyphen and underscore.","-1590869353":"Up to {{decimal_count}} decimal places are allowed.","-2061307421":"Should be more than {{min_value}}","-1099941162":"Should be less than {{max_value}}","-1528188268":"Straight rows of keys are easy to guess","-1339903234":"Short keyboard patterns are easy to guess","-23980798":"Repeats like \"aaa\" are easy to guess","-235760680":"Avoid repeated words and characters","-1568933154":"Sequences like abc or 6543 are easy to guess","-725663701":"Avoid sequences","-1450768475":"Recent years are easy to guess","-1804838610":"Avoid years that are associated with you","-64849469":"Dates are often easy to guess","-2006915194":"Avoid dates and years that are associated with you","-2124205211":"A word by itself is easy to guess","-1095202689":"All-uppercase is almost as easy to guess as all-lowercase","-2137856661":"Reversed words aren't much harder to guess","-1885413063":"Predictable substitutions like '@' instead of 'a' don't help very much","-369258265":"This password is on the blacklist","-681468758":"Your web browser is out of date and may affect your trading experience. Please <0>update your browser.","-577777971":"You have reached the rate limit of requests per second. Please try later.","-206321775":"Fiat","-522767852":"DEMO","-433761292":"Switching to default account.","-405439829":"Sorry, you can't view this contract because it doesn't belong to this account.","-1590712279":"Gaming","-16448469":"Virtual","-540474806":"Your Options account is scheduled to be closed","-618539786":"Your account is scheduled to be closed","-945275490":"Withdraw all funds from your Options account.","-2093768906":"{{name}} has released your funds.
Would you like to give your feedback?","-705744796":"Your demo account balance has reached the maximum limit, and you will not be able to place new trades. Reset your balance to continue trading from your demo account.","-2063700253":"disabled","-800774345":"Power up your Financial trades with intuitive tools from Acuity.","-279582236":"Learn More","-1211460378":"Power up your trades with Acuity","-703292251":"Download intuitive trading tools to keep track of market events. The Acuity suite is only available for Windows, and is most recommended for financial assets.","-1585069798":"Please click the following link to complete your Appropriateness Test.","-1287141934":"Find out more","-367759751":"Your account has not been verified","-596690079":"Enjoy using Deriv?","-265932467":"We’d love to hear your thoughts","-1815573792":"Drop your review on Trustpilot.","-823349637":"Go to Trustpilot","-1204063440":"Set my account currency","-1601813176":"Would you like to increase your daily limits to {{max_daily_buy}} {{currency}} (buy) and {{max_daily_sell}} {{currency}} (sell)?","-1751632759":"Get a faster mobile trading experience with the <0>{{platform_name_go}} app!","-1164554246":"You submitted expired identification documents","-219846634":"Let’s verify your ID","-529038107":"Install","-1738575826":"Please switch to your real account or create one to access the cashier.","-1329329028":"You’ve not set your 30-day turnover limit","-132893998":"Your access to the cashier has been temporarily disabled as you have not set your 30-day turnover limit. Please go to Self-exclusion and set the limit.","-1852207910":"MT5 withdrawal disabled","-764323310":"MT5 withdrawals have been disabled on your account. Please check your email for more details.","-1902997828":"Refresh now","-753791937":"A new version of Deriv is available","-1775108444":"This page will automatically refresh in 5 minutes to load the latest version.","-1175685940":"Please contact us via live chat to enable withdrawals.","-493564794":"Please complete your financial assessment.","-1125797291":"Password updated.","-157145612":"Please log in with your updated password.","-1728185398":"Resubmit proof of address","-612396514":"Please resubmit your proof of address.","-1519764694":"Your proof of address is verified.","-1961967032":"Resubmit proof of identity","-117048458":"Please submit your proof of identity.","-1196422502":"Your proof of identity is verified.","-136292383":"Your proof of address verification is pending","-386909054":"Your proof of address verification has failed","-430041639":"Your proof of address did not pass our verification checks, and we’ve placed some restrictions on your account. Please resubmit your proof of address.","-87177461":"Please go to your account settings and complete your personal details to enable deposits.","-904632610":"Reset your balance","-470018967":"Reset balance","-156611181":"Please complete the financial assessment in your account settings to unlock it.","-1925176811":"Unable to process withdrawals in the moment","-980696193":"Withdrawals are temporarily unavailable due to system maintenance. You can make withdrawals when the maintenance is complete.","-1647226944":"Unable to process deposit in the moment","-488032975":"Deposits are temporarily unavailable due to system maintenance. You can make deposits when the maintenance is complete.","-2136953532":"Scheduled cashier maintenance","-849587074":"You have not provided your tax identification number","-47462430":"This information is necessary for legal and regulatory requirements. Please go to your account settings, and fill in your latest tax identification number.","-2067423661":"Stronger security for your Deriv account","-1719731099":"With two-factor authentication, you’ll protect your account with both your password and your phone - so only you can access your account, even if someone knows your password.","-949074612":"Please contact us via live chat.","-2087822170":"You are offline","-1669693571":"Check your connection.","-1706642239":"<0>Proof of ownership <1>required","-553262593":"<0><1>Your account is currently locked <2><3>Please upload your proof of <4>ownership to unlock your account. <5>","-1834929362":"Upload my document","-1043638404":"<0>Proof of ownership <1>verification failed","-1766760306":"<0><1>Please upload your document <2>with the correct details. <3>","-8892474":"Start assessment","-1330929685":"Please submit your proof of identity and proof of address to verify your account and continue trading.","-99461057":"Please submit your proof of address to verify your account and continue trading.","-577279362":"Please submit your proof of identity to verify your account and continue trading.","-197134911":"Your proof of identity is expired","-152823394":"Your proof of identity has expired. Please submit a new proof of identity to verify your account and continue trading.","-420930276":"Follow these simple instructions to fix it.","-2142540205":"It appears that the address in your document doesn’t match the address in your Deriv profile. Please update your personal details now with the correct address.","-482715448":"Go to Personal details","-2072411961":"Your proof of address has been verified","-384887227":"Update the address in your profile.","-448961363":"non-EU","-1998049070":"If you agree to our use of cookies, click on Accept. For more information, <0>see our policy.","-2061807537":"Something’s not right","-402093392":"Add Deriv Account","-277547429":"A Deriv account will allow you to fund (and withdraw from) your MT5 account(s).","-1721181859":"You’ll need a {{deriv_account}} account","-1989074395":"Please add a {{deriv_account}} account first before adding a {{dmt5_account}} account. Deposits and withdrawals for your {{dmt5_label}} account are done by transferring funds to and from your {{deriv_label}} account.","-689237734":"Proceed","-1642457320":"Help centre","-1966944392":"Network status: {{status}}","-594209315":"Synthetic indices in the EU are offered by {{legal_entity_name}}, W Business Centre, Level 3, Triq Dun Karm, Birkirkara BKR 9033, Malta, licensed and regulated by the Malta Gaming Authority (<0>licence no. MGA/B2C/102/2000) and by the Revenue Commissioners for clients in Ireland (<2>licence no. 1010285).","-181484419":"Responsible trading","-650505513":"Full screen","-1823504435":"View notifications","-1954045170":"No currency assigned","-583559763":"Menu","-1591792668":"Account Limits","-34495732":"Regulatory information","-1496158755":"Go to Deriv.com","-1323441180":"I hereby confirm that my request for opening an account with Deriv to trade OTC products issued and offered exclusively outside Brazil was initiated by me. I fully understand that Deriv is not regulated by CVM and by approaching Deriv I intend to set up a relation with a foreign company.","-1396326507":"Unfortunately, {{website_name}} is not available in your country.","-1019903756":"Synthetic","-288996254":"Unavailable","-735306327":"Manage accounts","-1310654342":"As part of the changes in our product line-up, we will be closing Gaming accounts belonging to our UK clients.","-626152766":"As part of the changes in our product line-up, we are closing Options accounts belonging to our clients in Europe.","-490100162":"As part of the changes in our product line-up, we will be closing accounts belonging to our Isle of Man clients.","-1208958060":"You can no longer trade digital options on any of our platforms. You also can’t deposit funds into your account.<0/><1/>Any open positions on digital options have been closed with full payout.","-2050417883":"You’ll lose access to your Gaming account when it gets closed, so make sure to withdraw your funds as soon as possible.","-1950045402":"Withdraw all your funds","-168971942":"What this means for you","-905560792":"OK, I understand","-1308593541":"You will lose access to your account when it gets closed, so be sure to withdraw all your funds.","-2024365882":"Explore","-1197864059":"Create free demo account","-1813972756":"Account creation paused for 24 hours","-366030582":"Sorry, you're unable to create an account at this time. As you declined our previous risk warnings, we need you to wait for 24 hours after your first account creation attempt before you can proceed.<0/><0/>","-534047566":"Thank you for your understanding. You can create your account on {{real_account_unblock_date}} or later.","-399816343":"Trading Experience Assessment<0/>","-1822498621":"As per our regulatory obligations, we are required to assess your trading knowledge and experience.<0/><0/>Please click ‘OK’ to continue","-71049153":"Keep your account secure with a password","-1861974537":"Strong passwords contain at least 8 characters, combine uppercase and lowercase letters, numbers, and symbols.","-1485242688":"Step {{step}}: {{step_title}} ({{step}} of {{steps}})","-1829842622":"You can open an account for each cryptocurrency.","-987221110":"Choose a currency you would like to trade with.","-1066574182":"Choose a currency","-1914534236":"Choose your currency","-200560194":"Please switch to your {{fiat_currency}} account to change currencies.","-1829493739":"Choose the currency you would like to trade with.","-1814647553":"Add a new","-1269362917":"Add new","-650480777":"crypto account","-175638343":"Choose an account or add a new one","-1768223277":"Your account is ready","-1215717784":"<0>You have successfully changed your currency to {{currency}}.<0>Make a deposit now to start trading.","-786091297":"Trade on demo","-228099749":"Please verify your identity and address","-1041852744":"We're processing your personal information","-1775006840":"Make a deposit now to start trading.","-983734304":"We need proof of your identity and address before you can start trading.","-917733293":"To get trading, please confirm where you live.","-1282628163":"You'll be able to get trading as soon as verification is complete.","-952649119":"Log In","-3815578":"Sign Up","-1456176427":"Set a currency for your real account","-1557011219":"Add a real Deriv Options account","-241733171":"Add a Deriv Financial account","-1329687645":"Create a cryptocurrency account","-1429178373":"Create a new account","-1740162250":"Manage account","-1016775979":"Choose an account","-1362081438":"Adding more real accounts has been restricted for your country.","-1602122812":"24-hour Cool Down Warning","-1519791480":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the risk of losing your money. <0/><0/>\n As you have declined our previous warning, you would need to wait 24 hours before you can proceed further.","-1010875436":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the high risk of losing your money. <0/><0/> To continue, kindly note that you would need to wait 24 hours before you can proceed further.","-1725418054":"By clicking ‘Accept’ and proceeding with the account opening, you should note that you may be exposing yourself to risks. These risks, which may be significant, include the risk of losing the entire sum invested, and you may not have the knowledge and experience to properly assess or mitigate them.","-1369294608":"Already signed up?","-730377053":"You can’t add another real account","-2100785339":"Invalid inputs","-617844567":"An account with your details already exists.","-292363402":"Trading statistics report","-1656860130":"Options trading can become a real addiction, as can any other activity pushed to its limits. To avoid the danger of such an addiction, we provide a reality-check that gives you a summary of your trades and accounts on a regular basis.","-28080461":"Would like to check your statement first? <0>Check Statement","-611059051":"Please specify your preferred interval reality check in minutes:","-1876891031":"Currency","-11615110":"Turnover","-1370419052":"Profit / Loss","-437320982":"Session duration:","-3959715":"Current time:","-1534648620":"Your password has been changed","-596199727":"We will now redirect you to the login page.","-310434518":"The email input should not be empty.","-437918412":"No currency assigned to your account","-1193651304":"Country of residence","-707550055":"We need this to make sure our service complies with laws and regulations in your country.","-280139767":"Set residence","-601615681":"Select theme","-1152511291":"Dark","-1428458509":"Light","-1976089791":"Your Deriv account has been unlinked from your {{social_identity_provider}} account. You can now log in to Deriv using your new email address and password.","-505449293":"Enter a new password for your Deriv account.","-1728963310":"Stop creating an account?","-703818088":"Only log in to your account at this secure link, never elsewhere.","-1235799308":"Fake links often contain the word that looks like \"Deriv\" but look out for these differences.","-2102997229":"Examples","-82488190":"I've read the above carefully.","-97775019":"Do not trust and give away your credentials on fake websites, ads or emails.","-2142491494":"OK, got it","-611136817":"Beware of fake links.","-1787820992":"Platforms","-1793883644":"Trade FX and CFDs on a customisable, easy-to-use trading platform.","-184713104":"Earn fixed payouts with options, or trade multipliers to amplify your gains with limited risk.","-1571775875":"Our flagship options and multipliers trading platform.","-895091803":"If you're looking for CFDs","-1447215751":"Not sure? Try this","-2338797":"<0>Maximise returns by <0>risking more than you put in.","-1682067341":"Earn <0>fixed returns by <0>risking only what you put in.","-1744351732":"Not sure where to start?","-943710774":"This complaints policy, which may change from time to time, applies to your account registered with {{legal_entity_name}}, having its registered office address at First Floor, Millennium House, Victoria Road, Douglas, Isle of Man, IM2 4RW, licensed and regulated respectively by (1) the Gambling Supervision Commission in the Isle of Man (current <0>licence issued on 31 August 2017) and (2) the Gambling Commission in the UK (<1>licence no. 39172).","-255056078":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name}}, having its registered office address at W Business Centre, Level 3, Triq Dun Karm, Birkirkara, BKR 9033, Malta, licensed and regulated by the Malta Gaming Authority in Malta for gambling products only, <0>licence no. MGA/B2C/102/2000, and for clients residing in the UK by the UK Gambling Commission (account number 39495).","-1941013000":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}}, {{legal_entity_name_fx}}, and {{legal_entity_name_v}}.","-594812204":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}}.","-813256361":"We are committed to treating our clients fairly and providing them with excellent service.<0/><1/>We would love to hear from you on how we can improve our services to you. Any information you provide will be treated in the strictest confidence. Rest assured that you will be heard, valued, and always treated fairly.","-1622847732":"If you have an inquiry regarding your trading account with {{legal_entity_name}}, you can contact us through our <0>Help centre or by chatting with a representative via <1>Live Chat.<2/><3/>We are committed to resolving your query in the quickest time possible and appreciate your patience in allowing us time to resolve the matter.<4/><5/>We strive to provide the best possible service and support to our customers. However, in the event that we are unable to resolve your query or if you feel that our response is unsatisfactory, we want to hear from you. We welcome and encourage you to submit an official complaint to us so that we can review your concerns and work towards a resolution.","-1639808836":"If you are not satisfied with the outcome, you can escalate your complaint to the <0>Independent Betting Adjudication Service (IBAS) by filling the IBAS adjudication form. Please note that IBAS only deals with disputes that result from transactions.","-1505742956":"<0/><1/>You can also refer your dispute to the Malta Gaming Authority via the <2>Player Support Unit.","-1406192787":"If you are not satisfied with the outcome, you can escalate your complaint to the <0>Financial Commission.","-1776547326":"<0/><1/>If you reside in the UK and you are unhappy with our response you may escalate your complaint to the <2>Financial Ombudsman Service.","-2115348800":"1. Introduction","-744009523":"2. Fair treatment","-866831420":"3.1. Submission of a complaint","-1102904026":"3.2. Handling your complaint","-603378979":"3.3. Resolving your complaint","-697569974":"3.4. Your decision","-1280998762":"4. Complaints","-1886635232":"A complaint is any expression of dissatisfaction by a client regarding our products or services that requires a formal response.<0/><1/>If what you submit does not fall within the scope of a complaint, we may reclassify it as a query and forward it to the relevant department for handling. However, if you believe that your query should be classified as a complaint due to its relevance to the investment services provided by {{legal_entity_name}}, you may request that we reclassify it accordingly.","-1771496016":"To submit a complaint, please send an email to <0>complaints@deriv.com, providing as much detail as possible. To help us investigate and resolve your complaint more efficiently, please include the following information:","-1197243525":"<0>•A clear and detailed description of your complaint, including any relevant dates, times, and transactions","-1795134892":"<0>•Any relevant screenshots or supporting documentation that will assist us in understanding the issue","-2053887036":"4.4. Handling your complaint","-717170429":"Once we have received the details of your complaint, we shall review it carefully and keep you updated on the handling process. We might request further information or clarifications to facilitate the resolution of the complaint.","-1841922393":"4.5. Resolving your complaint","-1327119795":"4.6. Your decision","-2019654103":"If we are unable to resolve your complaint or you are not satisfied with the outcome, you can escalate your complaint to the Office of the Arbiter for Financial Services.<0/><1/><2>Filing complaints with the Office of the Arbiter for Financial Services","-687172857":"<0>•You may file a complaint with the Arbiter for Financial Services only if you are not satisfied with our decision or the decision wasn’t made within 15 business days.","-262934706":"<0>•If the complaint is accepted by the Arbiter, you will receive another email with further details relating to the payment of the €25 complaint fee and the processes that follow.","-993572476":"<0>b.The Financial Commission has 5 days to acknowledge that your complaint was received and 14 days to answer the complaint through our Internal Dispute Resolution (IDR) procedure.","-1769159081":"<0>c.You will be able to file a complaint with the Financial Commission only if you are not satisfied with our decision or the decision wasn’t made within 14 days.","-58307244":"3. Determination phase","-356618087":"<0>b.The DRC may request additional information from you or us, who must then provide the requested information within 7 days.","-945718602":"<0>b.If you agree with a DRC decision, you will need to accept it within 14 days. If you do not respond to the DRC decision within 14 days, the complaint is considered closed.","-1500907666":"<0>d.If the decision is made in our favour, you must provide a release for us within 7 days of when the decision is made, and the complaint will be considered closed.","-429248139":"5. Disclaimer","-818926350":"The Financial Commission accepts appeals for 45 days following the date of the incident and only after the trader has tried to resolve the issue with the company directly.","-358055541":"Power up your trades with cool new tools","-29496115":"We've partnered with Acuity to give you a suite of intuitive trading tools for MT5 so you can keep track of market events and trends, free of charge!<0/><0/>","-648669944":"Download the Acuity suite and take advantage of the <1>Macroeconomic Calendar, Market Alerts, Research Terminal, and <1>Signal Centre Trade Ideas without leaving your MT5 terminal.<0/><0/>","-794294380":"This suite is only available for Windows, and is most recommended for financial assets.","-922510206":"Need help using Acuity?","-815070480":"Disclaimer: The trading services and information provided by Acuity should not be construed as a solicitation to invest and/or trade. Deriv does not offer investment advice. The past is not a guide to future performance, and strategies that have worked in the past may not work in the future.","-2111521813":"Download Acuity","-778309978":"The link you clicked has expired. Ensure to click the link in the latest email in your inbox. Alternatively, enter your email below and click <0>Resend email for a new link.","-336222114":"Follow these simple steps to fix it:","-1064116456":"Search for the broker <0>Deriv Holdings (Guernsey) Limited and select it.","-941870889":"The cashier is for real accounts only","-352838513":"It looks like you don’t have a real {{regulation}} account. To use the cashier, switch to your {{active_real_regulation}} real account, or get an {{regulation}} real account.","-1858915164":"Ready to deposit and trade for real?","-162753510":"Add real account","-1208519001":"You need a real Deriv account to access the cashier.","-175369516":"Welcome to Deriv X","-939154994":"Welcome to Deriv MT5 dashboard","-1667427537":"Run Deriv X on your browser or download the mobile app","-305915794":"Run MT5 from your browser or download the MT5 app for your devices","-404375367":"Trade forex, basket indices, commodities, and cryptocurrencies with high leverage.","-243985555":"Trade CFDs on forex, stocks, stock indices, synthetic indices, cryptocurrencies, and commodities with leverage.","-2030107144":"Trade CFDs on forex, stocks & stock indices, commodities, and crypto.","-705682181":"Malta","-409563066":"Regulator","-1302404116":"Maximum leverage","-2098459063":"British Virgin Islands","-1510474851":"British Virgin Islands Financial Services Commission (licence no. SIBA/L/18/1114)","-761250329":"Labuan Financial Services Authority (Licence no. MB/18/0024)","-1264604378":"Up to 1:1000","-1686150678":"Up to 1:100","-637908996":"100%","-1420548257":"20+","-1344709651":"40+","-1373949478":"50+","-1382029900":"70+","-1493055298":"90+","-523602297":"Forex majors","-1303090739":"Up to 1:1500","-19213603":"Metals","-1728334460":"Up to 1:300","-646902589":"(US_30, US_100, US_500)","-1835174654":"1:30","-1647612934":"Spreads from","-1587894214":"about verifications needed.","-466784048":"Regulator/EDR","-1920034143":"Synthetics, Baskets and Derived FX","-1326848138":"British Virgin Islands Financial Services Commission (License no. SIBA/L/18/1114)","-777580328":"Forex, Stocks, Stock indices, Commodities, and Cryptocurrencies","-1372141447":"Straight-through processing","-1969608084":"Forex and Cryptocurrencies","-800771713":"Labuan Financial Services Authority (licence no. MB/18/0024)","-1497128311":"80+","-1501230046":"0.6 pips","-1689815930":"You will need to submit proof of identity and address once you reach certain thresholds.","-1175785439":"Deriv (SVG) LLC (company no. 273 LLC 2020)","-235833244":"Synthetics, Forex, Stocks, Stock Indices, Cryptocurrencies, and ETFs","-139026353":"A selfie of yourself.","-70314394":"A recent utility bill (electricity, water or gas) or recent bank statement or government-issued letter with your name and address.","-435524000":"Verification failed. Resubmit during account creation.","-1385099152":"Your document is verified.","-931599668":"ETF","-651501076":"Derived - SVG","-865172869":"Financial - BVI","-1851765767":"Financial - Vanuatu","-558597854":"Financial - Labuan","-2052425142":"Swap-Free - SVG","-1192904361":"Deriv X Demo","-1269597956":"MT5 Platform","-239789243":"(License no. SIBA/L/18/1114)","-1434036215":"Demo Financial","-1416247163":"Financial STP","-1637969571":"Demo Swap-Free","-1882063886":"Demo CFDs","-1347908717":"Demo Financial SVG","-1780324582":"SVG","-785625598":"Use these credentials to log in to your {{platform}} account on the website and mobile apps.","-997127433":"Change Password","-1300381594":"Get Acuity trading tools","-860609405":"Password","-742647506":"Fund transfer","-1972393174":"Trade CFDs on our synthetics, baskets, and derived FX.","-1357917360":"Web terminal","-1454896285":"The MT5 desktop app is not supported by Windows XP, Windows 2003, and Windows Vista.","-810388996":"Download the Deriv X mobile app","-1727991510":"Scan the QR code to download the Deriv X Mobile App","-511301450":"Indicates the availability of cryptocurrency trading on a particular account.","-1647569139":"Synthetics, Baskets, Derived FX, Forex: standard/micro, Stocks, Stock indices, Commodities, Cryptocurrencies","-2102641225":"At bank rollover, liquidity in the forex markets is reduced and may increase the spread and processing time for client orders. This happens around 21:00 GMT during daylight saving time, and 22:00 GMT non-daylight saving time.","-495364248":"Margin call and stop out level will change from time to time based on market condition.","-536189739":"To protect your portfolio from adverse market movements due to the market opening gap, we reserve the right to decrease leverage on all offered symbols for financial accounts before market close and increase it again after market open. Please make sure that you have enough funds available in your {{platform}} account to support your positions at all times.","-712681566":"Peer-to-peer exchange","-1267880283":"{{field_name}} is required","-2084509650":"{{field_name}} is not properly formatted.","-1580554423":"Trade CFDs on our synthetic indices that simulate real-world market movements.","-1385484963":"Confirm to change your {{platform}} password","-1990902270":"This will change the password to all of your {{platform}} accounts.","-1922462747":"Trader's hub","-700260448":"demo","-1769158315":"real","-2015785957":"Compare CFDs {{demo_title}} accounts","-673424733":"Demo account","-1986258847":"Server maintenance starts at 01:00 GMT every Sunday, and this process may take up to 2 hours to complete. Service may be disrupted during this time.","-1199152768":"Please explore our other platforms.","-205020823":"Explore {{platform_name_trader}}","-1982499699":"Explore {{platform_name_dbot}}","-1567989247":"Submit your proof of identity and address","-184453418":"Enter your {{platform}} password","-393388362":"We’re reviewing your documents. This should take about 1 to 3 days.","-790488576":"Forgot password?","-535365199":"Enter your {{platform}} password to add a {{platform_name}} {{account}} account.","-2057918502":"Hint: You may have entered your Deriv password, which is different from your {{platform}} password.","-1936102840":"Congratulations, you have successfully created your {{category}} <0>{{platform}} <1>{{type}} {{jurisdiction_selected_shortcode}} account. ","-1928229820":"Reset Deriv X investor password","-1087845020":"main","-1950683866":"investor","-1874242353":"Fund top up","-89838213":"You can top up your demo account with an additional <0> if your balance is <1> or less.","-1211122723":"{{ platform }} {{ account_title }} account","-78895143":"Current balance","-149993085":"New current balance","-490244964":"Forex, stocks, stock indices, cryptocurrencies","-1368041210":", synthetic indices","-877064208":"EUR","-1318070255":"EUR/GBP","-1284221303":"You’ll get a warning, known as margin call, if your account balance drops down close to the stop out level.","-1848799829":"To understand stop out, first you need to learn about margin level, which is the ratio of your equity (the total balance you would have if you close all your positions at that point) to the margin you're using at the moment. If your margin level drops below our stop out level, your positions may be closed automatically to protect you from further losses.","-224051432":"24/7","-70716111":"FX-majors (standard/micro lots), FX-minors, basket indices, commodities, cryptocurrencies, and stocks and stock indices","-1041629137":"FX-majors, FX-minors, FX-exotics, and cryptocurrencies","-287097947":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies (except UK)","-2016975615":"Deriv MT5 CFDs real account","-1207265427":"Compare CFDs real accounts","-1225160479":"Compare available accounts","-266701451":"derivX wordmark","-2145356061":"Download Deriv X on your phone to trade with the Deriv X account","-251202291":"Broker","-81650212":"MetaTrader 5 web","-2123571162":"Download","-941636117":"MetaTrader 5 Linux app","-637537305":"Download {{ platform }} on your phone to trade with the {{ platform }} {{ account }} account","-678964540":"to","-206829624":"(1:x)","-616293830":"Enjoy dynamic leverage of <0>up to 1:1500 when trading selected instruments in the forex, commodities, cryptocurrencies, and stock indices markets. Our dynamic leverage adjusts automatically to your trading position, based on asset type and trading volume.","-2042845290":"Your investor password has been changed.","-1882295407":"Your password has been changed.","-254497873":"Use this password to grant viewing access to another user. While they may view your trading account, they will not be able to trade or take any other actions.","-161656683":"Current investor password","-374736923":"New investor password","-1793894323":"Create or reset investor password","-2026018074":"Add your Deriv MT5 <0>{{account_type_name}} account under Deriv (SVG) LLC (company no. 273 LLC 2020).","-162320753":"Add your Deriv MT5 <0>{{account_type_name}} account under Deriv (BVI) Ltd, regulated by the British Virgin Islands Financial Services Commission (License no. SIBA/L/18/1114).","-271828350":"Get more out of Deriv MT5 Financial","-2125860351":"Choose a jurisdiction for your Deriv MT5 CFDs account","-479119833":"Choose a jurisdiction for your Deriv MT5 {{account_type}} account","-450424792":"You need a real account (fiat currency or cryptocurrency) in Deriv to create a real Deriv MT5 account.","-1760596315":"Create a Deriv account","-235472388":"Deriv {{platform}} {{is_demo}}","-525896186":"Download Deriv GO on your phone to trade with the Deriv EZ account","-346502452":"Download Deriv cTrader on your phone to trade with the Deriv cTrader account","-1396757256":"Run Deriv cTrader on your browser","-648956272":"Use this password to log in to your Deriv X accounts on the web and mobile apps.","-1814308691":"Please click on the link in the email to change your {{platform}} password.","-601303096":"Scan the QR code to download Deriv {{ platform }}.","-1282933308":"Not {{barrier}}","-968190634":"Equals {{barrier}}","-1747377543":"Under {{barrier}}","-1455298001":"Now","-256210543":"Trading is unavailable at this time.","-1150099396":"We’re working to have this available for you soon. If you have another account, switch to that account to continue trading. You may add a Deriv MT5 Financial.","-28115241":"{{platform_name_trader}} is not available for this account","-453920758":"Go to {{platform_name_mt5}} dashboard","-402175529":"History","-902712434":"Deal cancellation","-988484646":"Deal cancellation (executed)","-444882676":"Deal cancellation (active)","-13423018":"Reference ID","-2035315547":"Low barrier","-1551639437":"No history","-1214703885":"You have yet to update either take profit or stop loss","-504849554":"It will reopen at","-59803288":"In the meantime, try our synthetic indices. They simulate real-market volatility and are open 24/7.","-1278109940":"See open markets","-694105443":"This market is closed","-439389714":"We’re working on it","-770929448":"Go to {{platform_name_smarttrader}}","-590131162":"Stay on {{website_domain}}","-1444663817":"Go to Binary.com","-1526466612":"You’ve selected a trade type that is currently unsupported, but we’re working on it.","-1043795232":"Recent positions","-1572796316":"Purchase price:","-1694314813":"Contract value:","-153220091":"{{display_value}} Tick","-802374032":"Hour","-2039780875":"Purchase confirmation","-1672470173":"Require confirmation before purchasing a contract","-1342661765":"Lock contract purchase buttons","-351875097":"Number of ticks","-729830082":"View less","-149836494":"Your transaction reference number is {{transaction_id}}","-1382749084":"Go back to trading","-1231210510":"Tick","-1239477911":"second","-1585766960":"min","-1652791614":"mins","-1977959027":"hours","-442488432":"day","-337314714":"days","-8998663":"Digit: {{last_digit}} ","-1435392215":"About deal cancellation","-2017825013":"Got it","-1280319153":"Cancel your trade anytime within a chosen time-frame. Triggered automatically if your trade reaches the stop out level within the chosen time-frame.","-471757681":"Risk management","-843831637":"Stop loss","-771725194":"Deal Cancellation","-338707425":"Minimum duration is 1 day","-1003473648":"Duration: {{duration}} day","-740702998":"<0>{{title}} {{message}}","-1669741470":"The payout at expiry is equal to the payout per point multiplied by the difference between the final price and the strike price.","-1527492178":"Purchase Locked","-725375562":"You can lock/unlock the purchase button from the Settings menu","-2131851017":"Growth rate","-1358367903":"Stake","-542594338":"Max. payout","-690963898":"Your contract will be automatically closed when your payout reaches this amount.","-511541916":"Your contract will be automatically closed upon reaching this number of ticks.","-434270664":"Current Price","-1956787775":"Barrier Price:","-1513281069":"Barrier 2","-390994177":"Should be between {{min}} and {{max}}","-1804019534":"Expiry: {{date}}","-2055106024":"Toggle between advanced and simple duration settings","-1012793015":"End time","-2037881712":"Your contract will be closed automatically at the next available asset price on <0>.","-629549519":"Commission <0/>","-2131859340":"Stop out <0/>","-1686280757":"<0>{{commission_percentage}}% of (<1/> * {{multiplier}})","-1043117679":"When your current loss equals or exceeds {{stop_out_percentage}}% of your stake, your contract will be closed at the nearest available asset price.","-339236213":"Multiplier","-1763848396":"Put","-194424366":"above","-857660728":"Strike Prices","-243332856":"Last digit stats for latest 1000 ticks for {{ underlying_name }}","-1386326276":"Barrier is a required field.","-1418742026":"Higher barrier must be higher than lower barrier.","-92007689":"Lower barrier must be lower than higher barrier.","-1095538960":"Please enter the start time in the format \"HH:MM\".","-1975910372":"Minute must be between 0 and 59.","-866277689":"Expiry time cannot be in the past.","-347156282":"Submit Proof","-138538812":"Log in or create a free account to place a trade.","-2036388794":"Create free account","-1813736037":"No further trading is allowed on this contract type for the current trading session. For more info, refer to our <0>terms and conditions.","-1738427539":"Purchase","-1937372493":"You can close your trade anytime. However, be aware of <0>slippage risk<0/>.","-1392065699":"If you select \"Rise\", you win the payout if the exit spot is strictly higher than the entry spot.","-1762566006":"If you select \"Fall\", you win the payout if the exit spot is strictly lower than the entry spot.","-1435306976":"If you select \"Allow equals\", you win the payout if exit spot is higher than or equal to entry spot for \"Rise\". Similarly, you win the payout if exit spot is lower than or equal to entry spot for \"Fall\".","-1959473569":"If you select \"Lower\", you win the payout if the exit spot is strictly lower than the barrier.","-1350745673":"If the exit spot is equal to the barrier, you don't win the payout.","-2089488446":"If you select \"Ends Between\", you win the payout if the exit spot is strictly higher than the Low barrier AND strictly lower than the High barrier.","-1876950330":"If you select \"Ends Outside\", you win the payout if the exit spot is EITHER strictly higher than the High barrier, OR strictly lower than the Low barrier.","-546460677":"If the exit spot is equal to either the Low barrier or the High barrier, you don't win the payout.","-1812957362":"If you select \"Stays Between\", you win the payout if the market stays between (does not touch) either the High barrier or the Low barrier at any time during the contract period","-220379757":"If you select \"Goes Outside\", you win the payout if the market touches either the High barrier or the Low barrier at any time during the contract period.","-1281286610":"If you select \"Matches\", you will win the payout if the last digit of the last tick is the same as your prediction.","-1929209278":"If you select \"Even\", you will win the payout if the last digit of the last tick is an even number (i.e., 2, 4, 6, 8, or 0).","-2038865615":"If you select \"Odd\", you will win the payout if the last digit of the last tick is an odd number (i.e., 1, 3, 5, 7, or 9).","-1416078023":"If you select \"Touch\", you win the payout if the market touches the barrier at any time during the contract period.","-1272255095":"If the exit spot is equal to the barrier or the new barrier (if a reset occurs), you don't win the payout.","-231957809":"Win maximum payout if the exit spot is higher than or equal to the upper barrier.","-464144986":"Win maximum payout if the exit spot is lower than or equal to the lower barrier.","-1031456093":"Win up to maximum payout if exit spot is between lower and upper barrier, in proportion to the difference between upper barrier and exit spot.","-968162707":"No payout if exit spot is above or equal to the upper barrier.","-299450697":"If you select \"High Tick\", you win the payout if the selected tick is the highest among the next five ticks.","-705681870":"By purchasing the \"High-to-Low\" contract, you'll win the multiplier times the difference between the high and low over the duration of the contract.","-420387848":"The high is the highest point ever reached by the market during the contract period.","-1666375348":"By purchasing the \"High-to-Close\" contract, you'll win the multiplier times the difference between the high and close over the duration of the contract.","-2024955268":"If you select “Up”, you will earn a profit by closing your position when the market price is higher than the entry spot.","-1598433845":"If you select “Down”, you will earn a profit by closing your position when the market price is lower than the entry spot.","-885323297":"These are optional parameters for each position that you open:","-584696680":"If you select “Take profit” and specify an amount that you’d like to earn, your position will be closed automatically when your profit is more than or equals to this amount. Your profit may be more than the amount you entered depending on the market price at closing.","-1192494358":"If you select “Deal cancellation”, you’ll be able to cancel your trade within a chosen time frame should the market move against your favour. We’ll charge a small fee for this, but we’ll return your stake amount without profit or loss. If the stop-out amount is reached before the deal cancellation expires, your position will be cancelled automatically and we’ll return your stake amount without profit or loss.","-178096090":"“Take profit” cannot be updated. You may update it only when “Deal cancellation” expires.","-206909651":"The entry spot is the market price when your contract is processed by our servers.","-1576967286":"This product allows you to express a strong bullish or bearish view on an underlying asset.","-610471235":"If you think the market price will rise continuously for a specific period, choose <0>Long. You will get a payout at the expiry time if the market price doesn’t touch or cross below the barrier. Your payout will grow proportionally to the distance between the market price and the barrier if the barrier is not breached. You will start making a profit when the payout is higher than your stake. If the market price ever crosses the barrier, there won’t be a payout.","-454245976":"If you think the market price will drop continuously for a specific period, choose <0>Short. You will get a payout at the expiry time if the market price doesn’t touch or cross above the barrier. Your payout will grow proportionally to the distance between the market price and the barrier if the barrier is not breached. You will start making a profit when the payout is higher than your stake. If the market price ever crosses the barrier, there won’t be a payout.","-1790089996":"NEW!","-993480898":"Accumulators","-45873457":"NEW","-1422269966":"You can choose a growth rate with values of 1%, 2%, 3%, 4%, and 5%.","-1186791513":"Payout is the sum of your initial stake and profit.","-1682624802":"It is a percentage of the previous spot price. The percentage rate is based on your choice of the index and the growth rate.","-1221049974":"Final price","-1247327943":"This is the spot price of the last tick at expiry.","-878534036":"If you select \"Call\", you’ll earn a payout if the final price is above the strike price at expiry. Otherwise, you won’t receive a payout.","-1587076792":"If you select \"Put\", you’ll earn a payout if the final price is below the strike price at expiry. Otherwise, you won’t receive a payout.","-1482134885":"We calculate this based on the strike price and duration you’ve selected.","-1890561510":"Cut-off time","-565990678":"Your contract will expire on this date (in GMT), based on the End time you’ve selected.","-127118348":"Choose {{contract_type}}","-543478618":"Try checking your spelling or use a different term","-700280380":"Deal cancel. fee","-1683683754":"Long","-1046859144":"<0>{{title}} You will get a payout if the market price stays {{price_position}} and doesn't touch or cross the barrier. Otherwise, your payout will be zero.","-1815023694":"above the barrier","-1572548510":"Ups & Downs","-71301554":"Ins & Outs","-952298801":"Look Backs","-763273340":"Digits","-461955353":"purchase price","-172348735":"profit","-1624674721":"contract type","-1644154369":"entry spot time","-510792478":"entry spot price","-1974651308":"exit spot time","-1600267387":"exit spot price","-514917720":"barrier","-1072292603":"No Change","-1631669591":"string","-1768939692":"number","-795152863":"green","-1640576332":"blue","-804983649":"yellow","-94281841":"red","-1242470654":"Earned money","-841561409":"Put Spread","-1429914047":"Low","-1893628957":"Open Time","-1896106455":"10 minutes","-999492762":"15 minutes","-1978767852":"30 minutes","-293628675":"1 hour","-385604445":"2 hours","-1965813351":"4 hours","-525321833":"1 day","-1691868913":"Touch/No Touch","-151151292":"Asians","-1048378719":"Reset Call/Reset Put","-1282312809":"High/Low Ticks","-1237186896":"Only Ups/Only Downs","-529846150":"Seconds","-1635771697":"middle","-1529389221":"Histogram","-1819860668":"MACD","-1750896349":"D'Alembert","-102980621":"The Oscar's Grind Strategy is a low-risk positive progression strategy that first appeared in 1965. By using this strategy, the size of your contract will increase after successful trades, but remains unchanged after unsuccessful trades.","-462715374":"Untitled Bot","-2002533437":"Custom function","-215053350":"with:","-1257232389":"Specify a parameter name:","-1885742588":"with: ","-188442606":"function {{ function_name }} {{ function_params }} {{ dummy }}","-313112159":"This block is similar to the one above, except that this returns a value. The returned value can be assigned to a variable of your choice.","-1783320173":"Prematurely returns a value within a function","-1485521724":"Conditional return","-1482801393":"return","-46453136":"get","-1838027177":"first","-1182568049":"Get list item","-1675454867":"This block gives you the value of a specific item in a list, given the position of the item. It can also remove the item from the list.","-381501912":"This block creates a list of items from an existing list, using specific item positions.","-426766796":"Get sub-list","-1679267387":"in list {{ input_list }} find {{ first_or_last }} occurence of item {{ input_value }}","-2087996855":"This block gives you the position of an item in a given list.","-422008824":"Checks if a given list is empty","-1343887675":"This block checks if a given list is empty. It returns “True” if the list is empty, “False” if otherwise.","-1548407578":"length of {{ input_list }}","-1786976254":"This block gives you the total number of items in a given list.","-2113424060":"create list with item {{ input_item }} repeated {{ number }} times","-1955149944":"Repeat an item","-434887204":"set","-197957473":"as","-851591741":"Set list item","-1874774866":"ascending","-1457178757":"Sorts the items in a given list","-350986785":"Sort list","-324118987":"make text from list","-155065324":"This block creates a list from a given string of text, splitting it with the given delimiter. It can also join items in a list into a string of text.","-459051222":"Create list from text","-977241741":"List Statement","-451425933":"{{ break_or_continue }} of loop","-323735484":"continue with next iteration","-1592513697":"Break out/continue","-713658317":"for each item {{ variable }} in list {{ input_list }}","-1825658540":"Iterates through a given list","-952264826":"repeat {{ number }} times","-887757135":"Repeat (2)","-1608672233":"This block is similar to the block above, except that the number of times it repeats is determined by a given variable.","-533154446":"Repeat (1)","-1059826179":"while","-1893063293":"until","-279445533":"Repeat While/Until","-1003706492":"User-defined variable","-359097473":"set {{ variable }} to {{ value }}","-1588521055":"Sets variable value","-980448436":"Set variable","-1538570345":"Get the last trade information and result, then trade again.","-222725327":"Here is where you can decide if your bot should continue trading.","-1638446329":"Result is {{ win_or_loss }}","-1968029988":"Last trade result","-1588406981":"You can check the result of the last trade with this block.","-1459154781":"Contract Details: {{ contract_detail }}","-1652241017":"Reads a selected property from contract details list","-985351204":"Trade again","-2082345383":"These blocks transfer control to the Purchase conditions block.","-172574065":"This block will transfer the control back to the Purchase conditions block, enabling you to purchase another contract.","-403103225":"restart","-837044282":"Ask Price {{ contract_type }}","-1033917049":"This block returns the purchase price for the selected trade type.","-1863737684":"2. Purchase conditions","-228133740":"Specify contract type and purchase conditions.","-1098726473":"This block is mandatory. Only one copy of this block is allowed. You can place the Purchase block (see below) here as well as conditional blocks to define your purchase conditions.","-1777988407":"Payout {{ contract_type }}","-511116341":"This block returns the potential payout for the selected trade type","-1943211857":"Potential payout","-813464969":"buy","-53668380":"True if active contract can be sold before expiration at current market price","-43337012":"Sell profit/loss","-2112866691":"Returns the profit/loss from selling at market price","-2132417588":"This block gives you the potential profit or loss if you decide to sell your contract.","-1360483055":"set {{ variable }} to Bollinger Bands {{ band_type }} {{ dummy }}","-20542296":"Calculates Bollinger Bands (BB) from a list with a period","-1951109427":"Bollinger Bands (BB)","-857226052":"BB is a technical analysis indicator that’s commonly used by traders. The idea behind BB is that the market price stays within the upper and lower bands for 95% of the time. The bands are the standard deviations of the market price, while the line in the middle is a simple moving average line. If the price reaches either the upper or lower band, there’s a possibility of a trend reversal.","-325196350":"set {{ variable }} to Bollinger Bands Array {{ band_type }} {{ dummy }}","-199689794":"Similar to BB. This block gives you a choice of returning the values of either the lower band, higher band, or the SMA line in the middle.","-920690791":"Calculates Exponential Moving Average (EMA) from a list with a period","-960641587":"EMA is a type of moving average that places more significance on the most recent data points. It’s also known as the exponentially weighted moving average. EMA is different from SMA in that it reacts more significantly to recent price changes.","-1557584784":"set {{ variable }} to Exponential Moving Average Array {{ dummy }}","-32333344":"Calculates Moving Average Convergence Divergence (MACD) from a list","-628573413":"MACD is calculated by subtracting the long-term EMA (26 periods) from the short-term EMA (12 periods). If the short-term EMA is greater or lower than the long-term EMA than there’s a possibility of a trend reversal.","-1133676960":"Fast EMA Period {{ input_number }}","-883166598":"Period {{ input_period }}","-450311772":"set {{ variable }} to Relative Strength Index {{ dummy }}","-1861493523":"Calculates Relative Strength Index (RSI) list from a list of values with a period","-880048629":"Calculates Simple Moving Average (SMA) from a list with a period","-1150972084":"Market direction","-276935417":"This block is used to determine if the market price moves in the selected direction or not. It gives you a value of “True” or “False”.","-764931948":"in candle list get # from end {{ input_number }}","-924607337":"Returns the last digit of the latest tick","-560033550":"Returns the list of last digits of 1000 recent tick values","-74062476":"Make a List of {{ candle_property }} values in candles list with interval: {{ candle_interval_type }}","-1556495906":"Returns a list of specific values from a candle list according to selected time interval","-166816850":"Create a list of candle values (1)","-1261436901":"Candles List","-1174859923":"Read the selected candle value","-1972165119":"Read candle value (1)","-1956100732":"You can use this block to analyze the ticks, regardless of your trades","-443243232":"The content of this block is called on every tick. Place this block outside of any root block.","-641399277":"Last Tick","-1628954567":"Returns the value of the last tick","-1332756793":"This block gives you the value of the last tick.","-2134440920":"Last Tick String","-1466340125":"Tick value","-467913286":"Tick value Description","-785831237":"This block gives you a list of the last 1000 tick values.","-1546430304":"Tick List String Description","-1788626968":"Returns \"True\" if the given candle is black","-436010611":"Make a list of {{ candle_property }} values from candles list {{ candle_list }}","-1384340453":"Returns a list of specific values from a given candle list","-584859539":"Create a list of candle values (2)","-2010558323":"Read {{ candle_property }} value in candle {{ input_candle }}","-2846417":"This block gives you the selected candle value.","-1587644990":"Read candle value (2)","-1202212732":"This block returns account balance","-1737837036":"Account balance","-1963883840":"Put your blocks in here to prevent them from being removed","-1284013334":"Use this block if you want some instructions to be ignored when your bot runs. Instructions within this block won’t be executed.","-1217253851":"Log","-1987568069":"Warn","-104925654":"Console","-1956819233":"This block displays messages in the developer's console with an input that can be either a string of text, a number, boolean, or an array of data.","-1450461842":"Load block from URL: {{ input_url }}","-1088614441":"Loads blocks from URL","-1747943728":"Loads from URL","-2105753391":"Notify Telegram {{ dummy }} Access Token: {{ input_access_token }} Chat ID: {{ input_chat_id }} Message: {{ input_message }}","-1008209188":"Sends a message to Telegram","-1218671372":"Displays a notification and optionally play selected sound","-2099284639":"This block gives you the total profit/loss of your trading strategy since your bot started running. You can reset this by clicking “Clear stats” on the Transaction Stats window, or by refreshing this page in your browser.","-683825404":"Total Profit String","-718220730":"Total Profit String Description","-1861858493":"Number of runs","-264195345":"Returns the number of runs","-303451917":"This block gives you the total number of times your bot has run. You can reset this by clicking “Clear stats” on the Transaction Stats window, or by refreshing this page in your browser.","-2132861129":"Conversion Helper Block","-74095551":"Seconds Since Epoch","-15528039":"Returns the number of seconds since January 1st, 1970","-729807788":"This block returns the number of seconds since January 1st, 1970.","-1370107306":"{{ dummy }} {{ stack_input }} Run after {{ number }} second(s)","-558838192":"Delayed run","-1975250999":"This block converts the number of seconds since the Unix Epoch (1 January 1970) into a string of text representing the date and time.","-702370957":"Convert to date/time","-982729677":"Convert to timestamp","-311268215":"This block converts a string of text that represents the date and time into seconds since the Unix Epoch (1 January 1970). The time and time zone offset are optional. Example: 2019-01-01 21:03:45 GMT+0800 will be converted to 1546347825.","-1797602591":"Stop Loss: {{ currency }} {{ stop_loss }}","-1374685318":"Your contract is closed automatically when your loss is more than or equals to this amount. This block can only be used with the multipliers trade type.","-1214929127":"Stop loss must be a positive number.","-780745489":"If the contract type is “Both”, then the Purchase Conditions should include both Rise and Fall using the “Conditional Block\"","-2142851225":"Multiplier trade options","-625636913":"Amount must be a positive number.","-1466383897":"Duration: {{ duration_unit }} {{ duration_value }}","-440702280":"Trade options","-1193894978":"Define your trade options such as duration and stake. Some options are only applicable for certain trade types.","-46523443":"Duration value is not allowed. To run the bot, please enter a value between {{min}} to {{max}}.","-1483427522":"Trade Type: {{ trade_type_category }} > {{ trade_type }}","-323348124":"1. Trade parameters","-1671903503":"Run once at start:","-783173909":"Trade options:","-376956832":"Here is where you define the parameters of your contract.","-1244007240":"if {{ condition }} then","-1577206704":"else if","-33796979":"true","-1434883449":"This is a single block that returns a boolean value, either true or false.","-1946404450":"Compares two values","-979918560":"This block converts the boolean value (true or false) to its opposite.","-2047257743":"Null","-1274387519":"Performs selected logic operation","-766386234":"This block performs the \"AND\" or the \"OR\" logic operation.","-790995537":"test {{ condition }}","-1860211657":"if false {{ return_value }}","-1643760249":"This block tests if a given value is true or false and returns “True” or “False” accordingly.","-1551875333":"Test value","-52486882":"Arithmetical operations","-1010436425":"This block adds the given number to the selected variable","-999773703":"Change variable","-1272091683":"Mathematical constants","-1396629894":"constrain {{ number }} low {{ low_number }} high {{ high_number }}","-425224412":"This block constrains a given number so that it is within a set range.","-2072551067":"Constrain within a range","-43523220":"remainder of {{ number1 }} ÷ {{ number2 }}","-1291857083":"Returns the remainder after a division","-592154850":"Remainder after division","-736665095":"Returns the remainder after the division of the given numbers.","-1266992960":"Math Number Description","-77191651":"{{ number }} is {{ type }}","-817881230":"even","-142319891":"odd","-1000789681":"whole","-1735674752":"Test a number","-1017805068":"This block tests a given number according to the selection and it returns a value of “True” or “False”. Available options: Even, Odd, Prime, Whole, Positive, Negative, Divisible","-1858332062":"Number","-1053492479":"Enter an integer or fractional number into this block. Please use `.` as a decimal separator for fractional numbers.","-927097011":"sum","-1653202295":"max","-1555878023":"average","-1748351061":"mode","-992067330":"Aggregate operations","-1691561447":"This block gives you a random fraction between 0.0 to 1.0","-523625686":"Random fraction number","-933024508":"Rounds a given number to an integer","-1656927862":"This block rounds a given number according to the selection: round, round up, round down.","-1495304618":"absolute","-61210477":"Operations on a given number","-181644914":"This block performs the selected operations to a given number.","-840732999":"to {{ variable }} append text {{ input_text }}","-1469497908":"Appends a given text to a variable","-1851366276":"Text Append","-1666316828":"Appends a given text to a variable.","-1902332770":"Transform {{ input_text }} to {{ transform_type }}","-1489004405":"Title Case","-904432685":"Changes text case accordingly","-882381096":"letter #","-1027605069":"letter # from end","-2066990284":"random letter","-337089610":"in text {{ input_text1 }} find {{ first_or_last }} occurence of text {{ input_text2 }}","-1966694141":"Searches through a string of text for a specific occurrence of a given character or word, and returns the position.","-697543841":"Text join","-141160667":"length of {{ input_text }}","-1133072029":"Text String Length","-1109723338":"print {{ input_text }}","-736668830":"Print","-1821552998":"trim spaces from {{ side }} of {{ input_text }}","-801766026":"right side","-474779821":"Trims spaces","-1687036846":"Download block","-1266781295":"Expand","-894560707":"function","-1867119688":"Duplicate","-610728049":"Rearrange Vertically","-2033146714":"Collapse All Blocks","-958601558":"Delete Block","-1193267384":"Detach Block","-1750478127":"New variable name","-1061878051":"Y","-2047029150":"Unable to load the block file.","-1410769167":"Target must be an XML file","-609157479":"This URL is already loaded","-241945454":"Proposals are not ready","-1087890592":"Maximum loss amount reached","-1030545878":"You are rate limited for: {{ message_type }}, retrying in {{ delay }}s (ID: {{ request }})","-490766438":"You are disconnected, retrying in {{ delay }}s","-1389975609":"unknown","-1900515692":"Duration must be a positive integer","-245297595":"Please login","-1445046468":"Given candle is not valid","-1891622945":"{{hourPast}}h ago","-1919680487":"workspace","-1703118772":"The {{block_type}} block is misplaced from {{missing_space}}.","-1785726890":"purchase conditions","-538215347":"Net deposits","-280147477":"All transactions","-137444201":"Buy","-130601012":"Please select duration","-232254547":"Custom","-1577570698":"Start date","-1251526905":"Last 7 days","-1904030160":"Transaction performed by (App ID: {{app_id}})","-513103225":"Transaction time","-2066666313":"Credit/Debit","-1981004241":"Sell time","-600828210":"Indicative profit/loss","-706219815":"Indicative price","-3423966":"Take profit<0 />Stop loss","-2082644096":"Current stake","-1131753095":"The {{trade_type_name}} contract details aren't currently available. We're working on making them available soon.","-360975483":"You've made no transactions of this type during this period.","-1226595254":"Turbos","-922253974":"Rise/Fall","-1361254291":"Higher/Lower","-335816381":"Ends In/Ends Out","-1789807039":"Asian Up/Asian Down","-330437517":"Matches/Differs","-657360193":"Over/Under","-558031309":"High Tick/Low Tick","-123659792":"Vanillas","-1669418686":"AUD/CAD","-1548588249":"AUD/CHF","-1552890620":"AUD/JPY","-681231560":"AUD/PLN","-64938413":"AUD/USD","-1430522808":"EUR/AUD","-2020477069":"EUR/CAD","-1201853162":"EUR/CHF","-1197505739":"EUR/JPY","-405907358":"EUR/USD","-1536293064":"NZD/JPY","-79700881":"NZD/USD","-642323838":"USD/CAD","-428199705":"USD/CHF","-424108348":"USD/JPY","-548255282":"USD/NOK","-1834131208":"USD/PLN","-524302516":"Silver/USD","-764731776":"Platinum/USD","-853582174":"France 40","-1096386695":"UK 100","-617646862":"Germany 40","-2077690248":"Japan 225","-512194910":"US Tech 100","-381746202":"US 500","-1935463381":"Swiss 20","-1941767726":"Euro 50","-1925264914":"Volatility 25 Index","-708579504":"Volatility 50 Index","-975255670":"Volatility 75 Index","-1736314513":"Crash 300 Index","-342128411":"Crash 500 Index","-9704319":"Crash 1000 Index","-465860988":"Bull Market Index","-390528194":"Step Index","-280323742":"EUR Basket","-563812039":"Volatility 10 (1s) Index","-764111252":"Volatility 100 (1s) Index","-816110209":"Volatility 150 (1s) Index","-1374309449":"Volatility 200 (1s) Index","-1288044380":"Volatility 250 (1s) Index","-1164978320":"Jump 10 Index","-575272887":"BCH/USD","-295406873":"BTC/ETH","-1713556301":"ZMR/USD","-2046638412":"XRP/USD","-1263203461":"BTC/USD","-1112522776":"DSH/USD","-460689370":"LTC/USD","-1715390759":"I want to do this later","-2092611555":"Sorry, this app is unavailable in your current location.","-1488537825":"If you have an account, log in to continue.","-555592125":"Unfortunately, trading options isn't possible in your country","-1571816573":"Sorry, trading is unavailable in your current location.","-1603581277":"minutes","-1714959941":"This chart display is not ideal for tick contracts","-1254554534":"Please change the chart duration to tick for a better trading experience.","-1658230823":"Contract was sold for <0 />.","-1905867404":"Contract cancelled"} \ No newline at end of file +{"0":"","1014140":"You may also call <0>+447723580049 to place your complaint.","1485191":"1:1000","2091451":"Deriv Bot - your automated trading partner","3125515":"Your Deriv MT5 password is for logging in to your Deriv MT5 accounts on the desktop, web, and mobile apps.","3215342":"Last 30 days","3420069":"To avoid delays, enter your <0>name and <0>date of birth exactly as they appear on your identity document.","7100308":"Hour must be between 0 and 23.","9488203":"Deriv Bot is a web-based strategy builder for trading digital options. It’s a platform where you can build your own automated trading bot using drag-and-drop 'blocks'.","11539750":"set {{ variable }} to Relative Strength Index Array {{ dummy }}","11872052":"Yes, I'll come back later","14365404":"Request failed for: {{ message_type }}, retrying in {{ delay }}s","15377251":"Profit amount: {{profit}}","17843034":"Check proof of identity document verification status","19424289":"Username","19552684":"USD Basket","21035405":"Please tell us why you’re leaving. (Select up to {{ allowed_reasons }} reasons.)","24900606":"Gold Basket","25854018":"This block displays messages in the developer’s console with an input that can be either a string of text, a number, boolean, or an array of data.","26566655":"Summary","26596220":"Finance","27582767":"{{amount}} {{currency}}","27731356":"Your account is temporarily disabled. Please contact us via <0>live chat to enable deposits and withdrawals again.","27830635":"Deriv (V) Ltd","28581045":"Add a real MT5 account","30801950":"Your account will be opened with {{legal_entity_name}}, regulated by the Malta Gaming Authority, and will be subject to the laws of Malta.","33433576":"Please use an e-wallet to withdraw your funds.","35089987":"Upload the front and back of your driving licence.","41737927":"Thank you","44877997":"Residence permit","45453595":"Binary Coin","45941470":"Where would you like to start?","46523711":"Your proof of identity is verified","49404821":"If you buy a \"<0>{{trade_type}}\" option, you receive a payout at expiry if the final price is {{payout_status}} the strike price. Otherwise, your “<0>{{trade_type}}” option will expire worthless.","50200731":"FX majors (standard/micro lots), FX minors, basket indices, commodities, and cryptocurrencies","53801223":"Hong Kong 50","53964766":"5. Hit Save to download your bot. You can choose to download your bot to your device or your Google Drive.","54185751":"Less than $100,000","55340304":"Keep your current contract?","55916349":"All","56764670":"Deriv Bot will not proceed with any new trades. Any ongoing trades will be completed by our system. Any unsaved changes will be lost.<0>Note: Please check your statement to view completed transactions.","58254854":"Scopes","59169515":"If you select \"Asian Rise\", you will win the payout if the last tick is higher than the average of the ticks.","59341501":"Unrecognized file format","59662816":"Stated limits are subject to change without prior notice.","62748351":"List Length","63869411":"This block tests a given number according to the selection","64402604":"Check transfer information","65185694":"Fiat onramp","65982042":"Total","66519591":"Investor password","67923436":"No, Deriv Bot will stop running when your web browser is closed.","68885999":"Repeats the previous trade when an error is encountered.","69005593":"The example below restarts trading after 30 or more seconds after 1 minute candle was started.","71016232":"OMG/USD","71445658":"Open","71563326":"A fast and secure fiat-to-crypto payment service. Deposit cryptocurrencies from anywhere in the world using your credit/debit cards and bank transfers.","71853457":"$100,001 - $500,000","72500774":"Please fill in Tax residence.","73086872":"You have self-excluded from trading","73326375":"The low is the lowest point ever reached by the market during the contract period.","74963864":"Under","76916358":"You have reached the withdrawal limit.<0/>Please upload your proof of identity and address to lift the limit to continue your withdrawal.","76925355":"Check your bot’s performance","77945356":"Trade on the go with our mobile app.","77982950":"Vanilla options allow you to predict an upward (bullish) or downward (bearish) direction of the underlying asset by purchasing a \"Call\" or a \"Put\".","81450871":"We couldn’t find that page","82839270":"Upload the page of your passport that contains your photo.","83202647":"Collapse Block","84402478":"Where do I find the blocks I need?","85343079":"Financial assessment","85359122":"40 or more","85389154":"Steps required to continue verification on your mobile","89062902":"Trade on MT5","90266322":"2. Start a chat with your newly created Telegram bot and make sure to send it some messages before proceeding to the next step. (e.g. Hello Bot!)","91993812":"The Martingale Strategy is a classic trading technique that has been used for more than a hundred years, popularised by the French mathematician Paul Pierre Levy in the 18th century.","93154671":"1. Hit Reset at the bottom of stats panel.","96381225":"ID verification failed","98473502":"We’re not obliged to conduct an appropriateness test, nor provide you with any risk warnings.","98972777":"random item","100239694":"Upload front of card from your computer","102226908":"Field cannot be empty","108916570":"Duration: {{duration}} days","109073671":"Please use an e-wallet that you have used for deposits previously. Ensure the e-wallet supports withdrawal. See the list of e-wallets that support withdrawals <0>here.","111215238":"Move away from direct light","111718006":"End date","111931529":"Max. total stake over 7 days","113378532":"ETH/USD","115032488":"Buy price and P/L","116005488":"Indicators","117056711":"We’re updating our site","117318539":"Password should have lower and uppercase English letters with numbers.","118158064":"2. Use a logic block to check if current profit/loss exceeds maximum loss. If it does, set trade again to false to prevent the bot from running another cycle.","118586231":"Document number (identity card, passport)","119261701":"Prediction:","119446122":"Contract type is not selected","120340777":"Complete your personal details","123454801":"{{withdraw_amount}} {{currency_symbol}}","124723298":"Upload a proof of address to verify your address","125443840":"6. Restart last trade on error","127307725":"A politically exposed person (PEP) is someone appointed with a prominent public position. Close associates and family members of a PEP are also considered to be PEPs.","129729742":"Tax Identification Number*","130567238":"THEN","132596476":"In providing our services to you, we are required to ask you for some information to assess if a given product or service is appropriate for you and whether you have the experience and knowledge to understand the risks involved.<0/><0/>","132689841":"Trade on web terminal","133284316":"Supported formats: JPEG, JPG, PNG, PDF and GIF only","133523018":"Please go to the Deposit page to get an address.","133536621":"and","133655768":"Note: If you wish to learn more about the Bot Builder, you can proceed to the <0>Tutorials tab.","139454343":"Confirm my limits","141265840":"Funds transfer information","141626595":"Make sure your device has a working camera","142050447":"set {{ variable }} to create text with","142390699":"Connected to your mobile","143970826":"Payment problems?","145146541":"Our accounts and services are unavailable for the Jersey postal code","145736466":"Take a selfie","150486954":"Token name","151344063":"The exit spot is the market price when the contract is closed.","151646545":"Unable to read file {{name}}","152415091":"Math","152524253":"Trade the world’s markets with our popular user-friendly platform.","154545319":"Country of residence is where you currently live.","157593038":"random integer from {{ start_number }} to {{ end_number }}","157871994":"Link expired","158355408":"Some services may be temporarily unavailable.","160746023":"Tether as an Omni token (USDT) is a version of Tether that is hosted on the Omni layer on the Bitcoin blockchain.","160863687":"Camera not detected","164112826":"This block allows you to load blocks from a URL if you have them stored on a remote server, and they will be loaded only when your bot runs.","164564432":"Deposits are temporarily unavailable due to system maintenance. You can make your deposits when the maintenance is complete.","165294347":"Please set your country of residence in your account settings to access the cashier.","165312615":"Continue on phone","165682516":"If you don’t mind sharing, which other trading platforms do you use?","170185684":"Ignore","170244199":"I’m closing my account for other reasons.","171307423":"Recovery","171579918":"Go to Self-exclusion","171638706":"Variables","173991459":"We’re sending your request to the blockchain.","174793462":"Strike","176078831":"Added","176319758":"Max. total stake over 30 days","176327749":"- Android: Tap the account, open <0>Options, and tap <0>Delete.","176654019":"$100,000 - $250,000","177099483":"Your address verification is pending, and we’ve placed some restrictions on your account. The restrictions will be lifted once your address is verified.","178413314":"First name should be between 2 and 50 characters.","179083332":"Date","179737767":"Our legacy options trading platform.","181346014":"Notes ","181881956":"Contract Type: {{ contract_type }}","184024288":"lower case","189705706":"This block uses the variable \"i\" to control the iterations. With each iteration, the value of \"i\" is determined by the items in a given list.","189759358":"Creates a list by repeating a given item","190834737":"Guide","191372501":"Accumulation of Income/Savings","192436105":"No need for symbols, digits, or uppercase letters","192573933":"Verification complete","195972178":"Get character","196810983":"If the duration is more than 24 hours, the Cut-off time and Expiry date will apply instead.","196998347":"We hold customer funds in bank accounts separate from our operational accounts which would not, in the event of insolvency, form part of the company's assets. This meets the <0>Gambling Commission's requirements for the segregation of customer funds at the level: <1>medium protection.","197190401":"Expiry date","201091938":"30 days","203108063":"Congratulations, you have successfully created your {{category}} <0>{{platform}} <1>{{type}} account. ","203179929":"<0>You can open this account once your submitted documents have been verified.","203271702":"Try again","203297887":"The Quick Strategy you just created will be loaded to the workspace.","203924654":"Hit the <0>Start button to begin and follow the tutorial.","204797764":"Transfer to client","204863103":"Exit time","206010672":"Delete {{ delete_count }} Blocks","207824122":"Please withdraw your funds from the following Deriv account(s):","209533725":"You’ve transferred {{amount}} {{currency}}","210385770":"If you have an active account, please log in to continue. Otherwise, please sign up.","211224838":"Investment","211461880":"Common names and surnames are easy to guess","211847965":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable withdrawals.","216650710":"You are using a demo account","217403651":"St. Vincent & Grenadines","217504255":"Financial assessment submitted successfully","218441288":"Identity card number","220014242":"Upload a selfie from your computer","220019594":"Need more help? Contact us through live chat for assistance.","220186645":"Text Is empty","220232017":"demo CFDs","223120514":"In this example, each point of the SMA line is an arithmetic average of close prices for the last 50 days.","223607908":"Last digit stats for latest 1000 ticks for {{underlying_name}}","224650827":"IOT/USD","224929714":"Virtual events based bets in the UK and the Isle of Man are offered by {{legal_entity_name}}, Millennium House, Level 1, Victoria Road, Douglas IM2 4RW, Isle of Man, licensed and regulated in Great Britain by the Gambling Commission under <0>account no. 39172 and by the Gambling Supervision Commission in the Isle of Man (<1>view licence).","225887649":"This block is mandatory. It's added to your strategy by default when you create new strategy. You can not add more than one copy of this block to the canvas.","227591929":"To timestamp {{ input_datetime }} {{ dummy }}","227903202":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts.","228521812":"Tests whether a string of text is empty. Returns a boolean value (true or false).","229355215":"Trade on {{platform_name_dbot}}","233500222":"- High: the highest price","235583807":"SMA is a frequently used indicator in technical analysis. It calculates the average market price over a specified period, and is usually used to identify market trend direction: up or down. For example, if the SMA is moving upwards, it means the market trend is up. ","236642001":"Journal","238496287":"Leverage trading is high-risk, so it's a good idea to use risk management features such as stop loss. Stop loss allows you to","243537306":"1. Under the Blocks menu, go to Utility > Variables.","243614144":"This is only available for existing clients.","245005091":"lower","245187862":"The DRC will make a <0>decision on the complaint (please note that the DRC mentions no timeframe for announcing its decision).","245812353":"if {{ condition }} return {{ value }}","246428134":"Step-by-step guides","247418415":"Gaming trading can become a real addiction, as can any other activity pushed to its limits. To avoid the danger of such an addiction, we provide a reality-check that gives you a summary of your trades and accounts on a regular basis.","248153700":"Reset your password","248565468":"Check your {{ identifier_title }} account email and click the link in the email to proceed.","248909149":"Send a secure link to your phone","251134918":"Account Information","251322536":"Deriv EZ accounts","251445658":"Dark theme","251882697":"Thank you! Your response has been recorded into our system.<0/><0/>Please click ‘OK’ to continue.","254912581":"This block is similar to EMA, except that it gives you the entire EMA line based on the input list and the given period.","256031314":"Cash Business","256602726":"If you close your account:","258448370":"MT5","258912192":"Trading assessment","260069181":"An error occured while trying to load the URL","260086036":"Place blocks here to perform tasks once when your bot starts running.","260361841":"Tax Identification Number can't be longer than 25 characters.","261074187":"4. Once the blocks are loaded onto the workspace, tweak the parameters if you want, or hit Run to start trading.","261250441":"Drag the <0>Trade again block and add it into the <0>do part of the <0>Repeat until block.","262095250":"If you select <0>\"Put\", you’ll earn a payout if the final price is below the strike price at expiry. Otherwise, you won’t receive a payout.","264976398":"3. 'Error' displays a message in red to highlight something that needs to be resolved immediately.","265644304":"Trade types","267992618":"The platforms lack key features or functionality.","268940240":"Your balance ({{format_balance}} {{currency}}) is less than the current minimum withdrawal allowed ({{format_min_withdraw_amount}} {{currency}}). Please top up your account to continue with your withdrawal.","269322978":"Deposit with your local currency via peer-to-peer exchange with fellow traders in your country.","269607721":"Upload","270339490":"If you select \"Over\", you will win the payout if the last digit of the last tick is greater than your prediction.","270610771":"In this example, the open price of a candle is assigned to the variable \"candle_open_price\".","270712176":"descending","270780527":"You've reached the limit for uploading your documents.","272042258":"When you set your limits, they will be aggregated across all your account types in {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} and {{platform_name_bbot}} on Deriv. For example, the losses made on all four platforms will add up and be counted towards the loss limit you set.","272179372":"This block is commonly used to adjust the parameters of your next trade and to implement stop loss/take profit logic.","273350342":"Copy and paste the token into the app.","273728315":"Should not be 0 or empty","274268819":"Volatility 100 Index","275116637":"Deriv X","277469417":"Exclude time cannot be for more than five years.","278684544":"get sub-list from # from end","280021988":"Use these shortcuts","282319001":"Check your image","282564053":"Next, we'll need your proof of address.","283830551":"Your address doesn’t match your profile","283986166":"Self-exclusion on the website only applies to your {{brand_website_name}} account and does not include other companies or websites.","284527272":"antimode","284772879":"Contract","284809500":"Financial Demo","287934290":"Are you sure you want to cancel this transaction?","289898640":"TERMS OF USE","291744889":"<0>1. Trade parameters:<0>","291817757":"Go to our Deriv community and learn about APIs, API tokens, ways to use Deriv APIs, and more.","292491635":"If you select “Stop loss” and specify an amount to limit your loss, your position will be closed automatically when your loss is more than or equals to this amount. Your loss may be more than the amount you entered depending on the market price at closing.","292526130":"Tick and candle analysis","292589175":"This will display the SMA for the specified period, using a candle list.","292887559":"Transfer to {{selected_value}} is not allowed, Please choose another account from dropdown","294305803":"Manage account settings","294335229":"Sell at market price","295173783":"Long/Short","301441673":"Select your citizenship/nationality as it appears on your passport or other government-issued ID.","303959005":"Sell Price:","304309961":"We're reviewing your withdrawal request. You may still cancel this transaction if you wish. Once we start processing, you won't be able to cancel.","310234308":"Close all your positions.","312142140":"Save new limits?","312300092":"Trims the spaces within a given string or text.","313298169":"Our cashier is temporarily down due to system maintenance. You can access the Cashier in a few minutes when the maintenance is complete.","313741895":"This block returns “True” if the last candle is black. It can be placed anywhere on the canvas except within the Trade parameters root block.","315306603":"You have an account that do not have currency assigned. Please choose a currency to trade with this account.","316694303":"Is candle black?","318865860":"close","318984807":"This block repeats the instructions contained within for a specific number of times.","321457615":"Oops, something went wrong!","323179846":"The time interval for each candle can be set from one minute to one day.","323209316":"Select a Deriv Bot Strategy","323360883":"Baskets","325662004":"Expand Block","325763347":"result","326770937":"Withdraw {{currency}} ({{currency_symbol}}) to your wallet","327534692":"Duration value is not allowed. To run the bot, please enter {{min}}.","328539132":"Repeats inside instructions specified number of times","329353047":"Malta Financial Services Authority (MFSA) (licence no. IS/70156)","329404045":"<0>Switch to your real account<1> to create a {{platform}} {{account_title}} account.","333121115":"Select Deriv MT5's account type","333456603":"Withdrawal limits","333807745":"Click on the block you want to remove and press Delete on your keyboard.","334680754":"Switch to your real account to create a Deriv MT5 account","334942497":"Buy time","335040248":"About us","337023006":"Start time cannot be in the past.","339449279":"Remaining time","339610914":"Spread Up/Spread Down","339879944":"GBP/USD","340807218":"Description not found.","342181776":"Cancel transaction","343873723":"This block displays a message. You can specify the color of the message and choose from 6 different sound options.","344418897":"These trading limits and self-exclusion help you control the amount of money and time you spend on {{brand_website_name}} and exercise <0>responsible trading.","345320063":"Invalid timestamp","345818851":"Sorry, an internal error occurred. Hit the above checkbox to try again.","347029309":"Forex: standard/micro","347039138":"Iterate (2)","347217485":"Trouble accessing Deriv MT5 on your mobile?","348951052":"Your cashier is currently locked","349047911":"Over","349110642":"<0>{{payment_agent}}<1>'s contact details","350602311":"Stats show the history of consecutive tick counts, i.e. the number of ticks the price remained within range continuously.","351744408":"Tests if a given text string is empty","352363702":"You may see links to websites with a fake Deriv login page where you’ll get scammed for your money.","353731490":"Job done","354945172":"Submit document","357477280":"No face found","359053005":"Please enter a token name.","359649435":"Given candle list is not valid","359809970":"This block gives you the selected candle value from a list of candles within the selected time interval. You can choose from open price, close price, high price, low price, and open time.","360224937":"Logic","360773403":"Bot Builder","362946954":"Our legacy automated trading platform.","363576009":"- High price: the highest price","363738790":"Browser","363990763":"Sell price:","367801124":"Total assets in your Deriv accounts.","368160866":"in list","369035361":"<0>•Your account number","371151609":"Last used","371710104":"This scope will allow third-party apps to buy and sell contracts for you, renew your expired purchases, and top up your demo accounts.","372291654":"Exclude time must be after today.","372645383":"True if the market direction matches the selection","373021397":"random","373306660":"{{label}} is required.","373495360":"This block returns the entire SMA line, containing a list of all values for a given period.","374537470":"No results for \"{{text}}\"","375714803":"Deal Cancellation Error","377231893":"Deriv Bot is unavailable in the EU","379523479":"To avoid loss of funds, do not share tokens with the Admin scope with unauthorised parties.","380606668":"tick","380694312":"Maximum consecutive trades","384303768":"This block returns \"True\" if the last candle is black. It can be placed anywhere on the canvas except within the Trade parameters root block.","386191140":"You can choose between CFD trading accounts or Options and Multipliers accounts","386278304":"Install the {{platform_name_trader}} web app","386502387":"Bot is not running","389923099":"Zoom in","390647540":"Real account","390890891":"Last quarter","391915203":"Hedging","392582370":"Fall Equals","393789743":"Letters, spaces, periods, hyphens, apostrophes only.","396418990":"Offline","396801529":"To start trading, top-up funds from your Deriv account into this account.","398816980":"Launch {{platform_name_trader}} in seconds the next time you want to trade.","401339495":"Verify address","401345454":"Head to the Tutorials tab to do so.","402343402":"Due to an issue on our server, some of your {{platform}} accounts are unavailable at the moment. Please bear with us and thank you for your patience.","403456289":"The formula for SMA is:","404743411":"Total deposits","406359555":"Contract details","406497323":"Sell your active contract if needed (optional)","411482865":"Add {{deriv_account}} account","412433839":"I agree to the <0>terms and conditions.","413594348":"Only letters, numbers, space, hyphen, period, and forward slash are allowed.","417714706":"If your margin level drops below our stop out level, your positions may be closed automatically to protect you from further losses.","417864079":"You’ll not be able to change currency once you have made a deposit.","418265501":"Demo Derived","419485005":"Spot","419496000":"Your contract is closed automatically when your profit is more than or equals to this amount. This block can only be used with the multipliers trade type.","419736603":"If yes, go to <0>Tutorials.","420072489":"CFD trading frequency","422055502":"From","424272085":"We take your financial well-being seriously and want to ensure you are fully aware of the risks before trading.<0/><0/>","424897068":"Do you understand that you could potentially lose 100% of the money you use to trade?","426031496":"Stop","427134581":"Try using another file type.","427617266":"Bitcoin","428709688":"Your preferred time interval between each report:","431267979":"Here’s a quick guide on how to use Deriv Bot on the go.","432273174":"1:100","432508385":"Take Profit: {{ currency }} {{ take_profit }}","432519573":"Document uploaded","433348384":"Real accounts are not available to politically exposed persons (PEPs).","433616983":"2. Investigation phase","434548438":"Highlight function definition","434896834":"Custom functions","436364528":"Your account will be opened with {{legal_entity_name}}, and will be subject to the laws of Saint Vincent and the Grenadines.","436534334":"<0>We've sent you an email.","437138731":"Create a new {{platform}} password","437453244":"Choose your preferred cryptocurrency","437485293":"File type not supported","437904704":"Maximum open positions","438067535":"Over $500,000","439398769":"This strategy is currently not compatible with Deriv Bot.","442520703":"$250,001 - $500,000","443203714":"Your contract will be closed automatically if your loss reaches this amount.","443559872":"Financial SVG","444484637":"Logic negation","445419365":"1 - 2 years","450983288":"Your deposit is unsuccessful due to an error on the blockchain. Please contact your crypto wallet service provider for more info.","451852761":"Continue on your phone","452054360":"Similar to RSI, this block gives you a list of values for each entry in the input list.","453175851":"Your MT5 Financial STP account will be opened through {{legal_entity_name}}. All trading in this account is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA). None of your other accounts, including your Deriv account, is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA).","453409608":"Your profit is the percentage change in market price times your stake and the multiplier of your choice.","454196938":"Regulation:","456746157":"Grant access to your camera from your browser settings","457020083":"It’ll take longer to verify you if we can’t read it","457494524":"1. From the block library, enter a name for the new variable and click Create.","459612953":"Select account","459817765":"Pending","460070238":"Congratulations","460975214":"Complete your Appropriateness Test","461795838":"Please contact us via live chat to unlock it.","462079779":"Resale not offered","463361726":"Select an item","465993338":"Oscar's Grind","466369320":"Your gross profit is the percentage change in market price times your stake and the multiplier chosen here.","466837068":"Yes, increase my limits","467839232":"I trade forex CFDs and other complex financial instruments regularly on other platforms.","473154195":"Settings","474306498":"We’re sorry to see you leave. Your account is now closed.","475492878":"Try Synthetic Indices","476023405":"Didn't receive the email?","477557241":"Remote blocks to load must be a collection.","478280278":"This block displays a dialog box that uses a customised message to prompt for an input. The input can be either a string of text or a number and can be assigned to a variable. When the dialog box is displayed, your strategy is paused and will only resume after you enter a response and click \"OK\".","479420576":"Tertiary","480356486":"*Boom 300 and Crash 300 Index","481276888":"Goes Outside","483279638":"Assessment Completed<0/><0/>","483551811":"Your <0>payout is the sum of your inital stake and profit.","483591040":"Delete all {{ delete_count }} blocks?","485379166":"View transactions","487239607":"Converts a given True or False to the opposite value","488150742":"Resend email","489768502":"Change investor password","491603904":"Unsupported browser","492198410":"Make sure everything is clear","492566838":"Taxpayer identification number","497518317":"Function that returns a value","498562439":"or","499522484":"1. for \"string\": 1325.68 USD","500215405":"Server maintenance starts at 01:00 GMT every Sunday and may last up to 2 hours. You may experience service disruption during this time.","500855527":"Chief Executives, Senior Officials and Legislators","500920471":"This block performs arithmetic operations between two numbers.","501401157":"You are only allowed to make deposits","501537611":"*Maximum number of open positions","502007051":"Demo Swap-Free SVG","502041595":"This block gives you a specific candle from within the selected time interval.","503137339":"Payout limit","505793554":"last letter","508390614":"Demo Financial STP","510815408":"Letters, numbers, spaces, hyphens only","511679687":"Accumulators allow you to express a view on the range of movement of an index and grow your stake exponentially at a fixed <0>growth rate.","514031715":"list {{ input_list }} is empty","514776243":"Your {{account_type}} password has been changed.","514948272":"Copy link","518955798":"7. Run Once at Start","520136698":"Boom 500 Index","521872670":"item","522283618":"Digital options trading experience","522703281":"divisible by","523123321":"- 10 to the power of a given number","524459540":"How do I create variables?","527329988":"This is a top-100 common password","529056539":"Options","529597350":"If you had any open positions, we have closed them and refunded you.","530953413":"Authorised applications","531114081":"3. Contract Type","531675669":"Euro","535041346":"Max. total stake per day","537788407":"Other CFDs Platform","538017420":"0.5 pips","541650045":"Manage {{platform}} password","541700024":"First, enter your driving licence number and the expiry date.","542038694":"Only letters, numbers, space, underscore, and hyphen are allowed for {{label}}.","542305026":"You must also submit a proof of identity.","543413346":"You have no open positions for this asset. To view other open positions, click Go to Reports","543915570":"Forex, stocks, stock indices, cryptocurrencies, synthetic indices","545476424":"Total withdrawals","549479175":"Deriv Multipliers","550589723":"Your stake will grow at {{growth_rate}}% per tick as long as the current spot price remains within ±{{tick_size_barrier}} from the previous spot price.","551569133":"Learn more about trading limits","554135844":"Edit","554410233":"This is a top-10 common password","555351771":"After defining trade parameters and trade options, you may want to instruct your bot to purchase contracts when specific conditions are met. To do that you can use conditional blocks and indicators blocks to help your bot to make decisions.","555881991":"National Identity Number Slip","556264438":"Time interval","558262475":"On your MT5 mobile app, delete your existing Deriv account:","558866810":"Run your bot","559224320":"Our classic “drag-and-drop” tool for creating trading bots, featuring pop-up trading charts, for advanced users.","561982839":"Change your currency","562599414":"This block returns the purchase price for the selected trade type. This block can be used only in the \"Purchase conditions\" root block.","563034502":"We shall try to resolve your complaint within 15 business days. We will inform you of the outcome together with an explanation of our position and propose any remedial measures we intend to take.","563166122":"We shall acknowledge receiving your complaint, review it carefully, and keep you updated on the handling process. We might request further information or clarifications to facilitate the resolution of the complaint.","563652273":"Go to block","565410797":"The below image illustrates how Simple Moving Average Array block works:","566274201":"1. Market","567019968":"A variable is among the most important and powerful components in creating a bot. It is a way to store information, either as text or numbers. The information stored as a variable can be used and changed according to the given instructions. Variables can be given any name, but usually they are given useful, symbolic names so that it is easier to call them during the execution of instructions.","567163880":"Create a {{platform}} password","567755787":"Tax Identification Number is required.","569057236":"In which country was your document issued?","571921777":"Funds protection level","572576218":"Languages","573173477":"Is candle {{ input_candle }} black?","575702000":"Remember, selfies, pictures of houses, or non-related images will be rejected.","576355707":"Select your country and citizenship:","577215477":"count with {{ variable }} from {{ start_number }} to {{ end_number }} by {{ step_size }}","577779861":"Withdrawal","577883523":"4. Awards and orders","578640761":"Call Spread","579529868":"Show all details — including the bottom 2 lines","580431127":"Restart buy/sell on error (disable for better performance): {{ checkbox }}","580665362":"Stays In/Goes Out","580774080":"insert at","581168980":"Legal","582945649":"2 minutes","584028307":"Allow equals","587577425":"Secure my account","587856857":"Want to know more about APIs?","588609216":"Repeat tour","592087722":"Employment status is required.","593459109":"Try a different currency","594937260":"Derived - BVI","595080994":"Example: CR123456789","595136687":"Save Strategy","597089493":"Here is where you can decide to sell your contract before it expires. Only one copy of this block is allowed.","597481571":"DISCLAIMER","597707115":"Tell us about your trading experience.","599469202":"{{secondPast}}s ago","602278674":"Verify identity","603849445":"Strike price","603849863":"Look for the <0>Repeat While/Until, and click the + icon to add the block to the workspace area.","603899222":"Distance to current spot","606240547":"- Natural log","606877840":"Back to today","607807243":"Get candle","609519227":"This is the email address associated with your Deriv account.","609650241":"Infinite loop detected","610537973":"Any information you provide is confidential and will be used for verification purposes only.","611020126":"View address on Blockchain","611786123":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies, Stocks, and Stock Indices","617345387":"If you select \"Reset-Up”, you win the payout if the exit spot is strictly higher than either the entry spot or the spot at reset time.","617910072":"Use your Deriv account email and password to login into the {{ platform }} platform.","618520466":"Example of a cut-off document","619268911":"<0>a.The Financial Commission will investigate the validity of the complaint within 5 business days.","619407328":"Are you sure you want to unlink from {{identifier_title}}?","623192233":"Please complete the <0>Appropriateness Test to access your cashier.","623542160":"Exponential Moving Average Array (EMAA)","624668261":"You’ve just stopped the bot. Any open contracts can be viewed on the <0>Reports page.","625571750":"Entry spot:","626175020":"Standard Deviation Up Multiplier {{ input_number }}","626809456":"Resubmit","627292452":"<0>Your Proof of Identity or Proof of Address did not meet our requirements. Please check your email for further instructions.","627814558":"This block returns a value when a condition is true. Use this block within either of the function blocks above.","628193133":"Account ID","629145209":"In case if the \"AND\" operation is selected, the block returns \"True\" only if both given values are \"True\"","629395043":"All growth rates","632398049":"This block assigns a null value to an item or statement.","634219491":"You have not provided your tax identification number. This information is necessary for legal and regulatory requirements. Please go to <0>Personal details in your account settings, and fill in your latest tax identification number.","636219628":"<0>c.If no settlement opportunity can be found, the complaint will proceed to the determination phase to be handled by the DRC.","639382772":"Please upload supported file type.","640596349":"You have yet to receive any notifications","640730141":"Refresh this page to restart the identity verification process","641420532":"We've sent you an email","642210189":"Please check your email for the verification link to complete the process.","642393128":"Enter amount","642546661":"Upload back of license from your computer","642995056":"Email","644150241":"The number of contracts you have won since you last cleared your stats.","645016681":"Trading frequency in other financial instruments","645902266":"EUR/NZD","647039329":"Proof of address required","647192851":"Contract will be sold at the prevailing market price when the request is received by our servers. This price may differ from the indicated price.","647745382":"Input List {{ input_list }}","648035589":"Other CFD Platforms","649317411":"On the basis of the information provided in relation to your knowledge and experience, we consider that the investments available via this website are not appropriate for you.<0/><1/>","649923867":"Adds a sign to a number to create a barrier offset. (deprecated)","651284052":"Low Tick","651684094":"Notify","652041791":"To create a Deriv X real account, create a Deriv real account first.","652298946":"Date of birth","654264404":"Up to 1:30","654507872":"True-False","654924603":"Martingale","655937299":"We’ll update your limits. Click <0>Accept to acknowledge that you are fully responsible for your actions, and we are not liable for any addiction or loss.","656296740":"While “Deal cancellation” is active:","656893085":"Timestamp","657325150":"This block is used to define trade options within the Trade parameters root block. Some options are only applicable for certain trade types. Parameters such as duration and stake are common among most trade types. Prediction is used for trade types such as Digits, while barrier offsets are for trade types that involve barriers such as Touch/No Touch, Ends In/Out, etc.","659482342":"Please remember that it is your responsibility to keep your answers accurate and up to date. You can update your personal details at any time in your account settings.","660481941":"To access your mobile apps and other third-party apps, you'll first need to generate an API token.","660991534":"Finish","661759508":"On the basis of the information provided in relation to your knowledge and experience, we consider that the investments available via this website are not appropriate for you.<0/><0/>","662548260":"Forex, Stock indices, Commodities and Cryptocurrencies","662578726":"Available","662609119":"Download the MT5 app","665089217":"Please submit your <0>proof of identity to authenticate your account and access your Cashier.","665777772":"XLM/USD","665872465":"In the example below, the opening price is selected, which is then assigned to a variable called \"op\".","666724936":"Please enter a valid ID number.","672008428":"ZEC/USD","673915530":"Jurisdiction and choice of law","674973192":"Use this password to log in to your Deriv MT5 accounts on the desktop, web, and mobile apps.","676159329":"Could not switch to default account.","677918431":"Market: {{ input_market }} > {{ input_submarket }} > {{ input_symbol }}","680334348":"This block was required to correctly convert your old strategy.","680478881":"Total withdrawal limit","681808253":"Previous spot price","681926004":"Example of a blurry document","682056402":"Standard Deviation Down Multiplier {{ input_number }}","684282133":"Trading instruments","685391401":"If you're having trouble signing in, let us know via <0>chat","686312916":"Trading accounts","686387939":"How do I clear my transaction log?","687193018":"Slippage risk","687212287":"Amount is a required field.","688510664":"You've {{two_fa_status}} 2FA on this device. You'll be logged out of your account on other devices (if any). Use your password and a 2FA code to log back in.","689137215":"Purchase price","691956534":"<0>You have added a {{currency}} account.<0> Make a deposit now to start trading.","693396140":"Deal cancellation (expired)","694035561":"Trade options multipliers","696870196":"- Open time: the opening time stamp","697630556":"This market is presently closed.","698037001":"National Identity Number","699159918":"1. Filing complaints","699646180":"A minimum deposit value of <0>{{minimum_deposit}} {{currency}} is required. Otherwise, the funds will be lost and cannot be recovered.","700259824":"Account currency","701034660":"We are still processing your withdrawal request.<0 />Please wait for the transaction to be completed before deactivating your account.","701462190":"Entry spot","701647434":"Search for string","702451070":"National ID (No Photo)","702561961":"Change theme","705299518":"Next, upload the page of your passport that contains your photo.","706413212":"To access the cashier, you are now in your {{regulation}} {{currency}} ({{loginid}}) account.","706727320":"Binary options trading frequency","706755289":"This block performs trigonometric functions.","706960383":"We’ll offer to buy your contract at this price should you choose to sell it before its expiry. This is based on several factors, such as the current spot price, duration, etc. However, we won’t offer a contract value if the remaining duration is below 60 seconds.","707662672":"{{unblock_date}} at {{unblock_time}}","708055868":"Driving licence number","710123510":"repeat {{ while_or_until }} {{ boolean }}","711999057":"Successful","712101776":"Take a photo of your passport photo page","712635681":"This block gives you the selected candle value from a list of candles. You can choose from open price, close price, high price, low price, and open time.","713054648":"Sending","714080194":"Submit proof","714746816":"MetaTrader 5 Windows app","715841616":"Please enter a valid phone number (e.g. +15417541234).","716428965":"(Closed)","718504300":"Postal/ZIP code","720293140":"Log out","720519019":"Reset my password","721011817":"- Raise the first number to the power of the second number","723045653":"You'll log in to your Deriv account with this email address.","723961296":"Manage password","724203548":"You can send your complaint to the <0>European Commission's Online Dispute Resolution (ODR) platform. This is not applicable to UK clients.","724526379":"Learn more with our tutorials","728042840":"To continue trading with us, please confirm where you live.","728824018":"Spanish Index","729651741":"Choose a photo","730473724":"This block performs the \"AND\" or the \"OR\" logic operation with the given values.","731382582":"BNB/USD","734390964":"Insufficient balance","734881840":"false","742469109":"Reset Balance","742676532":"Trade CFDs on forex, derived indices, cryptocurrencies, and commodities with high leverage.","743623600":"Reference","744110277":"Bollinger Bands Array (BBA)","745656178":"Use this block to sell your contract at the market price.","745674059":"Returns the specific character from a given string of text according to the selected option. ","746112978":"Your computer may take a few seconds to update","750886728":"Switch to your real account to submit your documents","751468800":"Start now","751692023":"We <0>do not guarantee a refund if you make a wrong transfer.","752024971":"Reached maximum number of digits","752992217":"This block gives you the selected constant values.","753088835":"Default","753184969":"In providing our services to you, we are required to obtain information from you in order to assess whether a given product or service is appropriate for you (that is, whether you possess the experience and knowledge to understand the risks involved).<0/><1/>","753727511":"Type","755867072":"{{platform_name_mt5}} is not available in {{country}}","756152377":"SMA places equal weight to the entire distribution of values.","758003269":"make list from text","759783233":"For more information and assistance to counselling and support services, please visit <0>begambleaware.org.","760528514":"Please note that changing the value of \"i\" won't change the value of the original item in the list","761576760":"Fund your account to start trading.","762185380":"<0>Multiply returns by <0>risking only what you put in.","762871622":"{{remaining_time}}s","762926186":"A quick strategy is a ready-made strategy that you can use in Deriv Bot. There are 3 quick strategies you can choose from: Martingale, D'Alembert, and Oscar's Grind.","763019867":"Your Gaming account is scheduled to be closed","764366329":"Trading limits","766317539":"Language","770171141":"Go to {{hostname}}","773091074":"Stake:","773309981":"Oil/USD","773336410":"Tether is a blockchain-enabled platform designed to facilitate the use of fiat currencies in a digital manner.","775679302":"{{pending_withdrawals}} pending withdrawal(s)","775706054":"Do you sell trading bots?","776085955":"Strategies","781924436":"Call Spread/Put Spread","783974693":"Avoid recent years","784311461":"Exponential Moving Average (EMA)","784583814":"Linked to your computer","785969488":"Jump 75 Index","787727156":"Barrier","788005234":"NA","792164271":"This is when your contract will expire based on the Duration or End time you’ve selected.","792622364":"Negative balance protection","793526589":"To file a complaint about our service, send an email to <0>complaints@deriv.com and state your complaint in detail. Please submit any relevant screenshots of your trading or system for our better understanding.","793531921":"Our company is one of the oldest and most reputable online trading companies in the world. We are committed to treat our clients fairly and provide them with excellent service.<0/><1/>Please provide us with feedback on how we can improve our services to you. Rest assured that you will be heard, valued, and treated fairly at all times.","793826881":"This is your personal start page for Deriv","794682658":"Copy the link to your phone","795859446":"Password saved","797007873":"Follow these steps to recover camera access:","797500286":"negative","800228448":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}} and {{legal_entity_name_fx}}.","800521289":"Your personal details are incomplete","801430087":"A link can contain the word \"Deriv\" and still be fake.","802436811":"View transaction details","802438383":"New proof of address is needed","802556390":"seconds","802989607":"Drag your XML file here","803500173":"Initial stake","806165583":"Australia 200","807499069":"Financial commission complaints procedure","808323704":"You can also use \"Compare\" and \"Logic operation\" blocks to make test variables.","811876954":"You may transfer between your Deriv fiat, cryptocurrency, {{platform_name_mt5}}, and {{platform_name_dxtrade}} accounts.","812430133":"Spot price on the previous tick.","812775047":"below the barrier","814827314":"The stop-out level on the chart indicates the price at which your potential loss equals your entire stake. When the market price reaches this level, your position will be closed automatically. This ensures that your loss does not exceed the amount you paid to purchase the contract.","815925952":"This block is mandatory. Only one copy of this block is allowed. It is added to the canvas by default when you open Deriv Bot.","816580787":"Welcome back! Your messages have been restored.","816738009":"<0/><1/>You may also raise your unresolved dispute to the <2>Office of the Arbiter for Financial Services.","818447476":"Switch account?","820877027":"Please verify your proof of identity","823186089":"A block that can contain text.","824797920":"Is list empty?","825042307":"Let’s try again","826511719":"USD/SEK","827688195":"Disable Block","828219890":"then","828602451":"Returns the list of tick values in string format","830164967":"Last name","830703311":"My profile","830993327":"No current transactions available","832053636":"Document submission","832217983":"40 transactions or more in the past 12 months","832398317":"Sell Error","832588873":"Order execution","832721563":"If you select \"Low Tick\", you win the payout if the selected tick is the lowest among the next five ticks.","834966953":"1551661986 seconds since Jan 01 1970 (UTC) translates to 03/04/2019 @ 1:13am (UTC).","835058671":"Total buy price","835336137":"View Detail","835350845":"Add another word or two. Uncommon words are better.","836097457":"I am interested in trading but have very little experience.","837063385":"Do not send other currencies to this address.","837066896":"Your document is being reviewed, please check back in 1-3 days.","839618971":"ADDRESS","839805709":"To smoothly verify you, we need a better photo","840672750":"If this doesn’t work, uninstall and re-install the MT5 app. Then redo steps <0>2 and <0>3.","841434703":"Disable stack","841543189":"View transaction on Blockchain","843333337":"You can only make deposits. Please complete the <0>financial assessment to unlock withdrawals.","845213721":"Logout","845304111":"Slow EMA Period {{ input_number }}","847888634":"Please withdraw all your funds.","848083350":"Your payout is equal to the <0>payout per point multiplied by the difference between the final price and the strike price. You will only earn a profit if your payout is higher than your initial stake.","850582774":"Please update your personal info","851054273":"If you select \"Higher\", you win the payout if the exit spot is strictly higher than the barrier.","851264055":"Creates a list with a given item repeated for a specific number of times.","851508288":"This block constrains a given number within a set range.","852527030":"Step 2","852583045":"Tick List String","854399751":"Digit code must only contain numbers.","854630522":"Choose a cryptocurrency account","857363137":"Volatility 300 (1s) Index","857445204":"Deriv currently supports withdrawals of Tether eUSDT to Ethereum wallet. To ensure a successful transaction, enter a wallet address compatible with the tokens you wish to withdraw. <0>Learn more","857986403":"do something","860319618":"Tourism","862283602":"Phone number*","863328851":"Proof of identity","864610268":"First, enter your {{label}} and the expiry date.","864957760":"Math Number Positive","865424952":"High-to-Low","865642450":"2. Logged in from a different browser","866496238":"Make sure your license details are clear to read, with no blur or glare","868826608":"Excluded from {{brand_website_name}} until","869068127":"The cashier is temporarily down due to maintenance. It will be available as soon as the maintenance is complete.","869823595":"Function","869993298":"Minimum withdrawal","872549975":"You have {{number}} transfers remaining for today.","872661442":"Are you sure you want to update email <0>{{prev_email}} to <1>{{changed_email}}?","872721776":"2. Select your XML file and hit Select.","872817404":"Entry Spot Time","873166343":"1. 'Log' displays a regular message.","874461655":"Scan the QR code with your phone","874484887":"Take profit must be a positive number.","875101277":"If I close my web browser, will Deriv Bot continue to run?","875532284":"Restart process on a different device","876086855":"Complete the financial assessment form","876292912":"Exit","879014472":"Reached maximum number of decimals","879647892":"You may sell the contract up until 60 seconds before expiry. If you do, we’ll pay you the <0>contract value.","881963105":"(XAUUSD, XAGUSD)","885065431":"Get a Deriv account","888274063":"Town/City","888924866":"We don’t accept the following inputs for:","890299833":"Go to Reports","891337947":"Select country","892341141":"Your trading statistics since: {{date_time}}","893117915":"Variable","893963781":"Close-to-Low","893975500":"You do not have any recent bots","894191608":"<0>c.We must award the settlement within 28 days of when the decision is reached.","898457777":"You have added a Deriv Financial account.","898904393":"Barrier:","900646972":"page.","902045490":"3 minutes","903429103":"In candles list read {{ candle_property }} # from end {{ input_number }}","904696726":"API token","905134118":"Payout:","905227556":"Strong passwords contain at least 8 characters, combine uppercase and lowercase letters and numbers.","905564365":"MT5 CFDs","906049814":"We’ll review your documents and notify you of its status within 5 minutes.","907680782":"Proof of ownership verification failed","909272635":"Financial - SVG","910888293":"Too many attempts","911048905":"(BTCUSD, ETHUSD)","912406629":"Follow these steps:","912967164":"Import from your computer","915735109":"Back to {{platform_name}}","918447723":"Real","920125517":"Add demo account","921901739":"- your account details of the bank linked to your account","924046954":"Upload a document showing your name and bank account number or account details.","926813068":"Fixed/Variable","929608744":"You are unable to make withdrawals","930346117":"Capitalization doesn't help very much","930546422":"Touch","933126306":"Enter some text here","933193610":"Only letters, periods, hyphens, apostrophes, and spaces, please.","934835052":"Potential profit","934932936":"PERSONAL","936766426":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit.","937237342":"Strategy name cannot be empty","937682366":"Upload both of these documents to prove your identity.","937831119":"Last name*","937992258":"Table","938500877":"{{ text }}. <0>You can view the summary of this transaction in your email.","938947787":"Withdrawal {{currency}}","938988777":"High barrier","943535887":"Please close your positions in the following Deriv MT5 account(s):","944499219":"Max. open positions","945532698":"Contract sold","946204249":"Read","946841802":"A white (or green) candle indicates that the open price is lower than the close price. This represents an upward movement of the market price.","946944859":"Hit the button below and we'll send you an email with a link. Click that link to verify your withdrawal request.","947046137":"Your withdrawal will be processed within 24 hours","947363256":"Create list","947758334":"City is required","947914894":"Top up  <0>","948156236":"Create {{type}} password","948176566":"New!","948545552":"150+","949859957":"Submit","952927527":"Regulated by the Malta Financial Services Authority (MFSA) (licence no. IS/70156)","955352264":"Trade on {{platform_name_dxtrade}}","956448295":"Cut-off image detected","957182756":"Trigonometric functions","958430760":"In/Out","959031082":"set {{ variable }} to MACD Array {{ dropdown }} {{ dummy }}","960201789":"3. Sell conditions","961178214":"You can only purchase one contract at a time","961266215":"140+","961327418":"My computer","961692401":"Bot","966457287":"set {{ variable }} to Exponential Moving Average {{ dummy }}","968576099":"Up/Down","969987233":"Win up to maximum payout if exit spot is between lower and upper barrier, in proportion to the difference between exit spot and lower barrier.","970915884":"AN","975668699":"I confirm and accept {{company}} 's <0>Terms and Conditions","975950139":"Country of Residence","977929335":"Go to my account settings","981138557":"Redirect","981568830":"You have chosen to exclude yourself from trading on our website until {{exclude_until}}. If you are unable to place a trade or deposit after your self-exclusion period, please contact us via <0>live chat.","981965437":"Scan the QR code below with your 2FA app. We recommend <0>Authy or <1>Google Authenticator.","982146443":"WhatsApp","982402892":"First line of address","982829181":"Barriers","983451828":"2. Select the asset and trade type.","987224688":"How many trades have you placed with other financial instruments in the past 12 months?","988064913":"4. Come back to Deriv Bot and add the Notify Telegram block to the workspace. Paste the Telegram API token and chat ID into the block fields accordingly.","988361781":"You have no trading activity yet.","988934465":"When prompted, you must enable camera access to continue","990739582":"170+","992294492":"Your postal code is invalid","992677950":"Logging out on other devices","993827052":"Choosing this jurisdiction will give you a Financial STP account. Your trades will go directly to the market and have tighter spreads.","995563717":"not {{ boolean }}","999008199":"text","1001160515":"Sell","1001749987":"You’ll get a warning, named margin call, if your account balance drops down close to the stop out level.","1003876411":"Should start with letter or number and may contain a hyphen, period and slash.","1004127734":"Send email","1006458411":"Errors","1006664890":"Silent","1009032439":"All time","1010198306":"This block creates a list with strings and numbers.","1010337648":"We were unable to verify your proof of ownership.","1011424042":"{{text}}. stake<0/>","1012102263":"You will not be able to log in to your account until this date (up to 6 weeks from today).","1015201500":"Define your trade options such as duration and stake.","1016220824":"You need to switch to a real money account to use this feature.<0/>You can do this by selecting a real account from the <1>Account Switcher.","1018803177":"standard deviation","1019265663":"You have no transactions yet.","1019508841":"Barrier 1","1021679446":"Multipliers only","1022934784":"1 minute","1023237947":"1. In the example below, the instructions are repeated as long as the value of x is less than or equal to 10. Once the value of x exceeds 10, the loop is terminated.","1023643811":"This block purchases contract of a specified type.","1023795011":"Even/Odd","1024205076":"Logic operation","1025887996":"Negative Balance Protection","1026046972":"Please enter a payout amount that's lower than {{max_payout}}.","1026289179":"Trade on the go","1027098103":"Leverage gives you the ability to trade a larger position using your existing capital. Leverage varies across different symbols.","1028211549":"All fields are required","1028758659":"Citizenship*","1029164365":"We presume that you possess the experience, knowledge, and expertise to make your own investment decisions and properly assess the risk involved.","1030021206":"change {{ variable }} by {{ number }}","1031602624":"We've sent a secure link to %{number}","1031731167":"Pound Sterling","1032173180":"Deriv","1032907147":"AUD/NZD","1033076894":"- current profit/loss: Use this variable to store the cumulative profit or loss while your bot is running. Set the initial value to 0.","1035893169":"Delete","1036116144":"Speculate on the price movement of an asset without actually owning it.","1036867749":"The desired duration, stake, prediction, and/or barrier(s) for the contract is defined here.","1038575777":"Change password","1039428638":"EU regulation","1039755542":"Use a few words, avoid common phrases","1040472990":"1. Go to Bot Builder.","1040677897":"To continue trading, you must also submit a proof of address.","1041001318":"This block performs the following operations on a given list: sum, minimum, maximum, average, median, mode, antimode, standard deviation, random item.","1041620447":"If you are unable to scan the QR code, you can manually enter this code instead:","1042659819":"You have an account that needs action","1043790274":"There was an error","1044540155":"100+","1044599642":"<0> has been credited into your {{platform}} {{title}} account.","1045704971":"Jump 150 Index","1045782294":"Click the <0>Change password button to change your Deriv password.","1047389068":"Food Services","1047881477":"Unfortunately, your browser does not support the video.","1048687543":"Labuan Financial Services Authority","1048947317":"Sorry, this app is unavailable in {{clients_country}}.","1049384824":"Rise","1050063303":"Videos on Deriv Bot","1050128247":"I confirm that I have verified the payment agent’s transfer information.","1050844889":"Reports","1052779010":"You are on your demo account","1053153674":"Jump 50 Index","1053159279":"Level of education","1053556481":"Once you submit your complaint, we will send you an acknowledgement email to confirm that we have received it.","1055313820":"No document detected","1056381071":"Return to trade","1056821534":"Are you sure?","1057216772":"text {{ input_text }} is empty","1057749183":"Two-factor authentication (2FA)","1057765448":"Stop out level","1057904606":"The concept of the D’Alembert Strategy is said to be similar to the Martingale Strategy where you will increase your contract size after a loss. With the D’Alembert Strategy, you will also decrease your contract size after a successful trade.","1058804653":"Expiry","1060231263":"When are you required to pay an initial margin?","1061308507":"Purchase {{ contract_type }}","1062423382":"Explore the video guides and FAQs to build your bot in the tutorials tab.","1062536855":"Equals","1065353420":"110+","1065498209":"Iterate (1)","1066235879":"Transferring funds will require you to create a second account.","1066459293":"4.3. Acknowledging your complaint","1069347258":"The verification link you used is invalid or expired. Please request for a new one.","1069576070":"Purchase lock","1070624871":"Check proof of address document verification status","1073261747":"Verifications","1076006913":"Profit/loss on the last {{item_count}} contracts","1077515534":"Date to","1078221772":"Leverage prevents you from opening large positions.","1080068516":"Action","1080990424":"Confirm","1082158368":"*Maximum account cash balance","1082406746":"Please enter a stake amount that's at least {{min_stake}}.","1083781009":"Tax identification number*","1083826534":"Enable Block","1086118495":"Traders Hub","1087112394":"You must select the strike price before entering the contract.","1088031284":"Strike:","1088138125":"Tick {{current_tick}} - ","1089085289":"Mobile number","1089436811":"Tutorials","1089687322":"Stop your current bot?","1090041864":"The {{block_type}} block is mandatory and cannot be deleted/disabled.","1095295626":"<0>•The Arbiter for Financial Services will determine whether the complaint can be accepted and is in accordance with the law.","1096078516":"We’ll review your documents and notify you of its status within 3 days.","1096175323":"You’ll need a Deriv account","1098147569":"Purchase commodities or shares of a company.","1098622295":"\"i\" starts with the value of 1, and it will be increased by 2 at every iteration. The loop will repeat until \"i\" reaches the value of 12, and then the loop is terminated.","1100133959":"National ID","1100870148":"To learn more about account limits and how they apply, please go to the <0>Help Centre.","1101560682":"stack","1101712085":"Buy Price","1102420931":"Next, upload the front and back of your driving licence.","1102995654":"Calculates Exponential Moving Average (EMA) list from a list of values with a period","1103309514":"Target","1103452171":"Cookies help us to give you a better experience and personalised content on our site.","1104912023":"Pending verification","1107474660":"Submit proof of address","1107555942":"To","1109217274":"Success!","1110102997":"Statement","1112582372":"Interval duration","1113119682":"This block gives you the selected candle value from a list of candles.","1113292761":"Less than 8MB","1114679006":"You have successfully created your bot using a simple strategy.","1117281935":"Sell conditions (optional)","1117863275":"Security and safety","1118294625":"You have chosen to exclude yourself from trading on our website until {{exclusion_end}}. If you are unable to place a trade or deposit after your self-exclusion period, please contact us via live chat.","1119887091":"Verification","1119986999":"Your proof of address was submitted successfully","1120985361":"Terms & conditions updated","1122910860":"Please complete your <0>financial assessment.","1123927492":"You have not selected your account currency","1125090693":"Must be a number","1126075317":"Add your Deriv MT5 <0>{{account_type_name}} STP account under Deriv (FX) Ltd regulated by Labuan Financial Services Authority (Licence no. MB/18/0024).","1126934455":"Length of token name must be between 2 and 32 characters.","1127149819":"Make sure§","1127224297":"Sorry for the interruption","1128139358":"How many CFD trades have you placed in the past 12 months?","1128321947":"Clear All","1128404172":"Undo","1129124569":"If you select \"Under\", you will win the payout if the last digit of the last tick is less than your prediction.","1129842439":"Please enter a take profit amount.","1130744117":"We shall try to resolve your complaint within 10 business days. We will inform you of the outcome together with an explanation of our position and propose any remedial measures we intend to take.","1130791706":"N","1133651559":"Live chat","1134879544":"Example of a document with glare","1138126442":"Forex: standard","1139483178":"Enable stack","1143730031":"Direction is {{ direction_type }}","1144028300":"Relative Strength Index Array (RSIA)","1145927365":"Run the blocks inside after a given number of seconds","1146064568":"Go to Deposit page","1147269948":"Barrier cannot be zero.","1147625645":"Please proceed to withdraw all your funds from your account before <0>30 November 2021.","1150637063":"*Volatility 150 Index and Volatility 250 Index","1151964318":"both sides","1152294962":"Upload the front of your driving licence.","1154021400":"list","1154239195":"Title and name","1155011317":"This block converts the date and time to the number of seconds since the Unix Epoch (1970-01-01 00:00:00).","1155626418":"below","1158678321":"<0>b.The Head of the Dispute Resolution Committee (DRC) will contact both you and us within 5 business days to obtain all necessary information and see if there is a chance to settle the complaint during the investigation phase.","1160761178":"No payout if exit spot is below or equal to the lower barrier.","1161924555":"Please select an option","1163771266":"The third block is <0>optional. You may use this block if you want to sell your contract before it expires. For now, leave the block as it is. ","1163836811":"Real Estate","1164773983":"Take profit and/or stop loss are not available while deal cancellation is active.","1166128807":"Choose one of your accounts or add a new cryptocurrency account","1166377304":"Increment value","1168029733":"Win payout if exit spot is also equal to entry spot.","1169201692":"Create {{platform}} password","1170228717":"Stay on {{platform_name_trader}}","1171765024":"Step 3","1171961126":"trade parameters","1172524677":"CFDs Demo","1174542625":"- Find the chat ID property in the response, and copy the value of the id property","1174748431":"Payment channel","1175183064":"Vanuatu","1176926166":"Experience with trading other financial instruments","1177396776":"If you select \"Asian Fall\", you will win the payout if the last tick is lower than the average of the ticks.","1177723589":"There are no transactions to display","1178582280":"The number of contracts you have lost since you last cleared your stats.","1178800778":"Take a photo of the back of your license","1178942276":"Please try again in a minute.","1179704370":"Please enter a take profit amount that's higher than the current potential profit.","1180619731":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts, up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts, and up to {{ allowed_dxtrade }} transfers between your Deriv and {{platform_name_dxtrade}} accounts.","1181396316":"This block gives you a random number from within a set range","1181770592":"Profit/loss from selling","1183007646":"- Contract type: the name of the contract type such as Rise, Fall, Touch, No Touch, etс.","1184968647":"Close your contract now or keep it running. If you decide to keep it running, you can check and close it later on the ","1188316409":"To receive your funds, contact the payment agent with the details below","1188980408":"5 minutes","1189249001":"4.1. What is considered a complaint?","1189368976":"Please complete your personal details before you verify your identity.","1191429031":"Please click on the link in the email to change your <0>{{platform_name_dxtrade}} password.","1191644656":"Predict the market direction and select either “Up” or “Down” to open a position. We will charge a commission when you open a position.","1192708099":"Duration unit","1195393249":"Notify {{ notification_type }} with sound: {{ notification_sound }} {{ input_message }}","1196006480":"Profit threshold","1196683606":"Deriv MT5 CFDs demo account","1197326289":"You are no longer able to trade digital options on any of our platforms. Also, you can’t make deposits into your Options account.","1198368641":"Relative Strength Index (RSI)","1199281499":"Last Digits List","1201533528":"Contracts won","1201773643":"numeric","1203297580":"This block sends a message to a Telegram channel.","1204223111":"In this example, the open prices from a list of candles are assigned to a variable called \"candle_list\".","1206227936":"How to mask your card?","1206821331":"Armed Forces","1207152000":"Choose a template and set your trade parameters.","1208714859":"For Short:","1208729868":"Ticks","1208903663":"Invalid token","1211912982":"Bot is starting","1214893428":"Account creation is currently unavailable for mobile. Please log in with your computer to create a new account.","1216408337":"Self-Employed","1217159705":"Bank account number","1217481729":"Tether as an ERC20 token (eUSDT) is a version of Tether that is hosted on Ethereum.","1218546232":"What is Fiat onramp?","1219844088":"do %1","1221250438":"To enable withdrawals, please submit your <0>Proof of Identity (POI) and <1>Proof of Address (POA) and also complete the <2>financial assessment in your account settings.","1222096166":"Deposit via bank wire, credit card, and e-wallet","1222521778":"Making deposits and withdrawals is difficult.","1222544232":"We’ve sent you an email","1225150022":"Number of assets","1227074958":"random fraction","1227240509":"Trim spaces","1228534821":"Some currencies may not be supported by payment agents in your country.","1229883366":"Tax identification number","1230884443":"State/Province (optional)","1231282282":"Use only the following special characters: {{permitted_characters}}","1232291311":"Maximum withdrawal remaining","1232353969":"0-5 transactions in the past 12 months","1233300532":"Payout","1234292259":"Source of wealth","1234764730":"Upload a screenshot of your name and email address from the personal details section.","1235426525":"50%","1237330017":"Pensioner","1238311538":"Admin","1239752061":"In your cryptocurrency wallet, make sure to select the <0>{{network_name}} network when you transfer funds to Deriv.","1239760289":"Complete your trading assessment","1239940690":"Restarts the bot when an error is encountered.","1240027773":"Please Log in","1240688917":"Glossary","1241238585":"You may transfer between your Deriv fiat, cryptocurrency, and {{platform_name_mt5}} accounts.","1242288838":"Hit the checkbox above to choose your document.","1242994921":"Click here to start building your Deriv Bot.","1243064300":"Local","1243287470":"Transaction status","1246207976":"Enter the authentication code generated by your 2FA app:","1246880072":"Select issuing country","1247280835":"Our cryptocurrency cashier is temporarily down due to system maintenance. You can make cryptocurrency deposits and withdrawals in a few minutes when the maintenance is complete.","1248018350":"Source of income","1248940117":"<0>a.The decisions made by the DRC are binding on us. DRC decisions are binding on you only if you accept them.","1250495155":"Token copied!","1252669321":"Import from your Google Drive","1253531007":"Confirmed","1254565203":"set {{ variable }} to create list with","1255827200":"You can also import or build your bot using any of these shortcuts.","1255909792":"last","1255963623":"To date/time {{ input_timestamp }} {{ dummy }}","1258097139":"What could we do to improve?","1258198117":"positive","1259598687":"GBP/JPY","1260259925":"Phone is not in a proper format.","1263387702":"All {{count}} account types use market execution. This means you agree with the broker's price in advance and will place orders at the broker's price.","1264096613":"Search for a given string","1264842111":"You can switch between real and demo accounts.","1265704976":"","1269296089":"Let's build a Bot!","1270581106":"If you select \"No Touch\", you win the payout if the market never touches the barrier at any time during the contract period.","1271461759":"Your contract will be closed automatically if your profit reaches this amount.","1272012156":"GBP/CHF","1272337240":"Days","1272681097":"Hours","1274819385":"3. Complaints and Disputes","1281045211":"Sorts the items in a given list, by their numeric or alphabetical value, in either ascending or descending order.","1281290230":"Select","1282951921":"Only Downs","1284522768":"If \"Loss\" is selected, it will return \"True\" if your last trade was unsuccessful. Otherwise, it will return an empty string.","1286094280":"Withdraw","1286507651":"Close identity verification screen","1288965214":"Passport","1289146554":"British Virgin Islands Financial Services Commission","1289646209":"Margin call","1290525720":"Example: ","1291887623":"Digital options trading frequency","1291997417":"Contracts will expire at exactly 23:59:59 GMT on your selected expiry date.","1292188546":"Reset Deriv MT5 investor password","1292891860":"Notify Telegram","1293660048":"Max. total loss per day","1294756261":"This block creates a function, which is a group of instructions that can be executed at any time. Place other blocks in here to perform any kind of action that you need in your strategy. When all the instructions in a function have been carried out, your bot will continue with the remaining blocks in your strategy. Click the “do something” field to give it a name of your choice. Click the plus icon to send a value (as a named variable) to your function.","1295284664":"Please accept our <0>updated Terms and Conditions to proceed.","1296380713":"Close my contract","1299479533":"8 hours","1300576911":"Please resubmit your proof of address or we may restrict your account.","1302691457":"Occupation","1303016265":"Yes","1303530014":"We’re processing your withdrawal.","1304083330":"copy","1304272843":"Please submit your proof of address.","1304620236":"Enable camera","1304788377":"<0/><1/>If your complaint relates to our data processing practices, you can submit a formal complaint to the <2>Information and Data Protection Commissioner (Malta) on their website or make a complaint to any supervisory authority within the European Union.","1304807342":"Compare CFDs demo accounts","1305217290":"Upload the back of your identity card.","1308625834":"Sets the default time interval for blocks that read list of candles.","1309017029":"Enabling this allows you to save your blocks as one collection which can be easily integrated into other bots.","1309044871":"Returns the value of the latest tick in string format","1309133590":"Earn a range of payouts by correctly predicting market movements with <0>options, or get the upside of CFDs without risking more than your initial stake with <1>multipliers.","1309186223":"- current stake: Use this variable to store the stake amount used in the last contract. You can assign any amount you want, but it must be a positive number.","1310483610":"Results for \"{{ search_term }}\"","1311680770":"payout","1313167179":"Please log in","1316216284":"You can use this password for all your {{platform}} accounts.","1319217849":"Check your mobile","1320750775":"Front and back","1322804930":"Restart the process on the latest version of Google Chrome","1323327633":"Our complaints process comprises the following 4 steps:","1323476617":"Changes the capitalisation of a string of text to Upper case, Lower case, Title case.","1323941798":"Short","1323996051":"Profile","1324922837":"2. The new variable will appear as a block under Set variable.","1325514262":"(licence no. MB/18/0024)","1327181172":"Financial Vanuatu","1327494533":"{{sell_value}} (Sell)","1329136554":"Jump 200 Index","1329325646":"The content of this block is called on every tick","1331199417":"Please enter the correct format. ","1331367811":"Client account number","1332168410":"Learn more","1332168769":"Disconnect","1333576137":"Please update your {{details}} to continue.","1333839457":"Submit identity card (front)","1334326985":"It may take a few minutes to arrive","1335967988":"Notice","1336052175":"Switch accounts","1337846406":"This block gives you the selected candle value from a list of candles within the selected time interval.","1337864666":"Photo of your document","1338496204":"Ref. ID","1339613797":"Regulator/External dispute resolution","1341840346":"View in Journal","1346204508":"Take profit","1346339408":"Managers","1347071802":"{{minutePast}}m ago","1348009461":"Please close your positions in the following Deriv X account(s):","1349133669":"Try changing your search criteria.","1349289354":"Great, that's everything we need","1349295677":"in text {{ input_text }} get substring from {{ position1 }} {{ index1 }} to {{ position2 }} {{ index2 }}","1351906264":"This feature is not available for payment agents.","1353197182":"Please select","1354288636":"Based on your answers, it looks like you have insufficient knowledge and experience in trading CFDs. CFD trading is risky and you could potentially lose all of your capital.<0/><0/>","1355250245":"{{ calculation }} of list {{ input_list }}","1356373528":"Run Deriv EZ on your browser","1356574493":"Returns a specific portion of a given string of text.","1356607862":"Deriv password","1357129681":"{{num_day}} days {{num_hour}} hours {{num_minute}} minutes","1357213116":"Identity card","1358543466":"Not available","1358543748":"enabled","1359424217":"You have sold this contract at <0 />","1360929368":"Add a Deriv account","1362578283":"High","1363060668":"Your trading statistics since:","1363645836":"Derived FX","1363675688":"Duration is a required field.","1364958515":"Stocks","1366244749":"Limits","1367023655":"To ensure your loss does not exceed your stake, your contract will be closed automatically when your loss equals to <0/>.","1367488817":"4. Restart trading conditions","1367990698":"Volatility 10 Index","1369709538":"Our terms of use","1370647009":"Enjoy higher daily limits","1371193412":"Cancel","1371555192":"Choose your preferred payment agent and enter your withdrawal amount. If your payment agent is not listed, <0>search for them using their account number.","1371641641":"Open the link on your mobile","1371911731":"Financial products in the EU are offered by {{legal_entity_name}}, licensed as a Category 3 Investment Services provider by the Malta Financial Services Authority (<0>Licence no. IS/70156).","1374627690":"Max. account balance","1375884086":"Financial, legal, or government document: recent bank statement, affidavit, or government-issued letter.","1376329801":"Last 60 days","1378419333":"Ether","1380349261":"Range","1383017005":"You have switched accounts.","1384127719":"You should enter {{min}}-{{max}} numbers.","1384222389":"Please submit valid identity documents to unlock the cashier.","1385418910":"Please set a currency for your existing real account before creating another account.","1387503299":"Log in","1388770399":"Proof of identity required","1389197139":"Import error","1390792283":"Trade parameters","1391174838":"Potential payout:","1392966771":"Mrs","1392985917":"This is similar to a commonly used password","1393559748":"Invalid date/time: {{ datetime_string }}","1393901361":"There’s an app for that","1393903598":"if true {{ return_value }}","1396179592":"Commission","1396417530":"Bear Market Index","1397628594":"Insufficient funds","1400341216":"We’ll review your documents and notify you of its status within 1 to 3 days.","1400732866":"View from camera","1402208292":"Change text case","1403376207":"Update my details","1405584799":"with interval: {{ candle_interval_type }}","1407191858":"DTrader","1408844944":"Click the plus icon to extend the functionality of this block.","1411373212":"Strong passwords contain at least 8 characters. combine uppercase and lowercase letters, numbers, and symbols.","1412535872":"You can check the result of the last trade with this block. It can only be placed within the \"Restart trading conditions\" root block.","1413047745":"Assigns a given value to a variable","1413359359":"Make a new transfer","1414205271":"prime","1415006332":"get sub-list from first","1415974522":"If you select \"Differs\", you will win the payout if the last digit of the last tick is not the same as your prediction.","1417558007":"Max. total loss over 7 days","1417914636":"Login ID","1418115525":"This block repeats instructions as long as a given condition is true.","1421749665":"Simple Moving Average (SMA)","1422060302":"This block replaces a specific item in a list with another given item. It can also insert the new item in the list at a specific position.","1422129582":"All details must be clear — nothing blurry","1423082412":"Last Digit","1423296980":"Enter your SSNIT number","1424741507":"See more","1424779296":"If you've recently used bots but don't see them in this list, it may be because you:","1428657171":"You can only make deposits. Please contact us via <0>live chat for more information.","1430396558":"5. Restart buy/sell on error","1430632931":"To get trading, please confirm who you are, and where you live.","1433367863":"Sorry, an error occured while processing your request.","1433468641":"We offer our services in all countries, except for the ones mentioned in our terms and conditions.","1434382099":"Displays a dialog window with a message","1434767075":"Get started on Deriv Bot","1434976996":"Announcement","1435363248":"This block converts the number of seconds since the Unix Epoch to a date and time format such as 2019-08-01 00:00:00.","1435380105":"Minimum deposit","1437396005":"Add comment","1438247001":"A professional client receives a lower degree of client protection due to the following.","1438340491":"else","1439168633":"Stop loss:","1441208301":"Total<0 />profit/loss","1442747050":"Loss amount: <0>{{profit}}","1442840749":"Random integer","1443478428":"Selected proposal does not exist","1444843056":"Corporate Affairs Commission","1445592224":"You accidentally gave us another email address (Usually a work or a personal one instead of the one you meant).","1446742608":"Click here if you ever need to repeat this tour.","1449462402":"In review","1452260922":"Too many failed attempts","1452941569":"This block delays execution for a given number of seconds. You can place any blocks within this block. The execution of other blocks in your strategy will be paused until the instructions in this block are carried out.","1453317405":"This block gives you the balance of your account either as a number or a string of text.","1454406889":"Choose <0>until as the repeat option.","1454648764":"deal reference id","1454865058":"Do not enter an address linked to an ICO purchase or crowdsale. If you do, the ICO tokens will not be credited into your account.","1455741083":"Upload the back of your driving licence.","1457341530":"Your proof of identity verification has failed","1457603571":"No notifications","1458160370":"Enter your {{platform}} password to add a {{platform_name}} {{account}} {{jurisdiction_shortcode}} account.","1459761348":"Submit proof of identity","1461323093":"Display messages in the developer’s console.","1464190305":"This block will transfer the control back to the Purchase conditions block, enabling you to purchase another contract without manually stopping and restarting your bot.","1464253511":"You already have an account for each of the cryptocurrencies available on {{deriv}}.","1465084972":"How much experience do you have with other financial instruments?","1465919899":"Pick an end date","1466430429":"Should be between {{min_value}} and {{max_value}}","1466900145":"Doe","1467017903":"This market is not yet available on {{platform_name_trader}}, but it is on {{platform_name_smarttrader}}.","1467421920":"with interval: %1","1467661678":"Cryptocurrency trading","1467880277":"3. General queries","1468308734":"This block repeats instructions as long as a given condition is true","1468419186":"Deriv currently supports withdrawals of Tether USDT to Omni wallet. To ensure a successful transaction, enter a wallet address compatible with the tokens you wish to withdraw. <0>Learn more","1468937050":"Trade on {{platform_name_trader}}","1469150826":"Take Profit","1469764234":"Cashier Error","1469814942":"- Division","1470319695":"Returns either True or False","1471008053":"Deriv Bot isn't quite ready for real accounts","1471070549":"Can contract be sold?","1471741480":"Severe error","1473369747":"Synthetics only","1476301886":"Similar to SMA, this block gives you the entire SMA line containing a list of all values for a given period.","1478030986":"Create or delete API tokens for trading and withdrawals","1480915523":"Skip","1481977420":"Please help us verify your withdrawal request.","1483470662":"Click ‘Open’ to start trading with your account","1484336612":"This block is used to either terminate or continue a loop, and can be placed anywhere within a loop block.","1487086154":"Your documents were submitted successfully","1488548367":"Upload again","1491392301":"<0>Sold for: {{sold_for}}","1492686447":"Your MT5 Financial STP account will be opened through Deriv (FX) Ltd. All trading in this account is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA). None of your other accounts, including your Deriv account, is subject to the regulations and guidelines of the Labuan Financial Service Authority (LFSA).","1493673429":"Change email","1493866481":"Run Deriv X on your browser","1496810530":"GBP/AUD","1497773819":"Deriv MT5 accounts","1499074768":"Add a real Deriv Multipliers account","1499080621":"Tried to perform an invalid operation.","1501691227":"Add Your Deriv MT5 <0>{{account_type_name}} account under Deriv (V) Ltd, regulated by the Vanuatu Financial Services Commission.","1502039206":"Over {{barrier}}","1502325741":"Your password cannot be the same as your email address.","1503618738":"- Deal reference ID: the reference ID of the contract","1505420815":"No payment agents found for your search","1505898522":"Download stack","1505927599":"Our servers hit a bump. Let’s refresh to move on.","1509570124":"{{buy_value}} (Buy)","1509678193":"Education","1510075920":"Gold/USD","1510357015":"Tax residence is required.","1510735345":"This block gives you a list of the last digits of the last 1000 tick values.","1512469749":"In the above example it is assumed that variable candle_open_price is processed somewhere within other blocks.","1516537408":"You can no longer trade on Deriv or deposit funds into your account.","1516559721":"Please select one file only","1516676261":"Deposit","1516834467":"‘Get’ the accounts you want","1517503814":"Drop file or click here to upload","1519124277":"Derived SVG","1519891032":"Welcome to Trader's Hub","1520332426":"Net annual income","1524636363":"Authentication failed","1526483456":"2. Enter a name for your variable, and hit Create. New blocks containing your new variable will appear below.","1527251898":"Unsuccessful","1527664853":"Your payout is equal to the payout per point multiplied by the difference between the final price and the strike price.","1527906715":"This block adds the given number to the selected variable.","1531017969":"Creates a single text string from combining the text value of each attached item, without spaces in between. The number of items can be added accordingly.","1533177906":"Fall","1534569275":"As part of the changes in our markets, we will be closing our UK clients’ accounts.","1534796105":"Gets variable value","1537711064":"You need to make a quick identity verification before you can access the Cashier. Please go to your account settings to submit your proof of identity.","1540585098":"Decline","1541508606":"Looking for CFDs? Go to Trader's Hub","1541969455":"Both","1542742708":"Synthetics, Forex, Stocks, Stock indices, Commodities, and Cryptocurrencies","1544642951":"If you select \"Only Ups\", you win the payout if consecutive ticks rise successively after the entry spot. No payout if any tick falls or is equal to any of the previous ticks.","1547148381":"That file is too big (only up to 8MB allowed). Please upload another file.","1548765374":"Verification of document number failed","1549098835":"Total withdrawn","1551172020":"AUD Basket","1552162519":"View onboarding","1555345325":"User Guide","1557426040":"Demo Derived SVG","1557682012":"Account Settings","1557904289":"We accept only these types of documents as proof of your address. The document must be recent (issued within last 6 months) and include your name and address:","1558972889":"set {{ variable }} to Simple Moving Average {{ dummy }}","1559220089":"Options and multipliers trading platform.","1560302445":"Copied","1562374116":"Students","1562982636":"Re-add your MT5 account using the same log in credentials.","1564392937":"When you set your limits or self-exclusion, they will be aggregated across all your account types in {{platform_name_trader}} and {{platform_name_dbot}}. For example, the losses made on both platforms will add up and be counted towards the loss limit you set.","1566037033":"Bought: {{longcode}} (ID: {{transaction_id}})","1566717687":"We also provide a guide on the Tutorial tab to show you how you can build and execute a simple strategy.","1567076540":"Only use an address for which you have proof of residence - ","1567586204":"Self-exclusion","1567745852":"Bot name","1569624004":"Dismiss alert","1570484627":"Ticks list","1571303610":"3. Set your trade parameters and hit Create.","1571575776":"Accepted formats: pdf, jpeg, jpg, and png. Max file size: 8MB","1572504270":"Rounding operation","1572982976":"Server","1573429525":"Call/Put","1573533094":"Your document is pending for verification.","1574989243":"- trade again: Use this variable to stop trading when your loss limit is reached. Set the initial value to true.","1575556189":"Tether on the Ethereum blockchain, as an ERC20 token, is a newer transport layer, which now makes Tether available in Ethereum smart contracts. As a standard ERC20 token, it can also be sent to any Ethereum address.","1577480486":"Your mobile link will expire in one hour","1577527507":"Account opening reason is required.","1577612026":"Select a folder","1579839386":"Appstore","1580498808":"Multiple faces found","1584109614":"Ticks String List","1584936297":"XML file contains unsupported elements. Please check or modify file.","1585859194":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts, your Deriv fiat and {{platform_name_derivez}} accounts, and your Deriv fiat and {{platform_name_dxtrade}} accounts.","1587046102":"Documents from that country are not currently supported — try another document type","1589148299":"Start","1589640950":"Resale of this contract is not offered.","1589702653":"Proof of address","1590400723":"Total assets in all your accounts","1591933071":"Resubmit document","1593010588":"Login now","1594147169":"Please come back in","1594322503":"Sell is available","1596378630":"You have added a real Gaming account.<0/>Make a deposit now to start trading.","1597672660":"Deriv MT5 Password","1598009247":"<0>a.You may file a complaint with the Financial Commission up to 45 days after the incident.","1598443642":"Transaction hash","1602894348":"Create a password","1604171868":"Please withdraw all your funds as soon as possible.","1604916224":"Absolute","1605222432":"I have no knowledge and experience in trading at all.","1605292429":"Max. total loss","1612105450":"Get substring","1612638396":"Cancel your trade at any time within a specified timeframe.","1613633732":"Interval should be between 10-60 minutes","1615897837":"Signal EMA Period {{ input_number }}","1618809782":"Maximum withdrawal","1619070150":"You are being redirected to an external website.","1620278321":"Names and surnames by themselves are easy to guess","1620346110":"Set currency","1621024661":"Tether as a TRC20 token (tUSDT) is a version of Tether that is hosted on Tron.","1622662457":"Date from","1622944161":"Now, go to the <0>Restart trading conditions block.","1623706874":"Use this block when you want to use multipliers as your trade type.","1628981793":"Can I trade cryptocurrencies on Deriv Bot?","1630417358":"Please go to your account settings and complete your personal details to enable withdrawals.","1631281562":"GBP Basket","1634903642":"Only your face can be in the selfie","1634969163":"Change currency","1635266650":"It seems that your name in the document is not the same as your Deriv profile. Please update your name in the <0>Personal details page to solve this issue.","1635628424":"An envelope with your name and address.","1636605481":"Platform settings","1636782601":"Multipliers","1638321777":"Your demo account balance is low. Reset your balance to continue trading from your demo account.","1639262461":"Pending withdrawal request:","1639304182":"Please click on the link in the email to reset your password.","1641395634":"Last digits list","1641635657":"New proof of identity document needed","1641980662":"Salutation is required.","1644636153":"Transaction hash: <0>{{value}}","1644703962":"Looking for CFD accounts? Go to Trader's Hub","1644864436":"You’ll need to authenticate your account before requesting to become a professional client. <0>Authenticate my account","1644908559":"Digit code is required.","1647186767":"The bot encountered an error while running.","1648938920":"Netherlands 25","1649239667":"2. Under the Blocks menu, you'll see a list of categories. Blocks are grouped within these categories. Choose the block you want and drag them to the workspace.","1651513020":"Display remaining time for each interval","1651951220":"Repeats like \"abcabcabc\" are only slightly harder to guess than \"abc\"","1652366857":"get and remove","1652968048":"Define your trade options such as multiplier and stake.","1652976865":"In this example, this block is used with another block to get the open prices from a list of candles. The open prices are then assigned to the variable called \"cl\".","1653136377":"copied!","1653180917":"We cannot verify you without using your camera","1654365787":"Unknown","1654721858":"Upload anyway","1655627840":"UPPER CASE","1656155124":"Resend in <0 /> seconds","1658954996":"Plant and Machine Operators and Assemblers","1659074761":"Reset Put","1659352235":"Add your Deriv MT5 CFDs account under Deriv Investments (Europe) Limited, regulated by the Malta Financial Services Authority (MFSA) (licence no. IS/70156).","1665272539":"Remember: You cannot log in to your account until the selected date.","1665738338":"Balance","1665756261":"Go to live chat","1668138872":"Modify account settings","1670016002":"Multiplier: {{ multiplier }}","1670426231":"End Time","1671232191":"You have set the following limits:","1674163852":"You can determine the expiry of your contract by setting the duration or end time.","1675030608":"To create this account first we need you to resubmit your proof of address.","1675289747":"Switched to real account","1676549796":"Dynamic Leverage","1677027187":"Forex","1677990284":"My apps","1679743486":"1. Go to Quick strategy and select the strategy you want.","1680666439":"Upload your bank statement showing your name, account number, and transaction history.","1682409128":"Untitled Strategy","1682636566":"Resend email in","1683522174":"Top-up","1683963454":"Your contract will be closed automatically at the next available asset price on {{date}} at {{timestamp}}.","1684419981":"What's this?","1686800117":"{{error_msg}}","1687173740":"Get more","1689103988":"Second Since Epoch","1689258195":"We were unable to verify your address with the details you provided. Please check and resubmit or choose a different document type.","1691335819":"To continue trading with us, please confirm who you are.","1691765860":"- Negation","1692912479":"Deriv MT5, Deriv X","1693614409":"Start time","1694331708":"You can switch between CFDs, digital options, and multipliers at any time.","1694517345":"Enter a new email address","1698624570":"2. Hit Ok to confirm.","1700233813":"Transfer from {{selected_value}} is not allowed, Please choose another account from dropdown","1701447705":"Please update your address","1702339739":"Common mistakes","1703091957":"We collect information about your employment as part of our due diligence obligations, as required by anti-money laundering legislation.","1704656659":"How much experience do you have in CFD trading?","1708413635":"For your {{currency_name}} ({{currency}}) account","1709401095":"Trade CFDs on Deriv X with financial markets and our Derived indices.","1709859601":"Exit Spot Time","1710662619":"If you have the app, launch it to start trading.","1711013665":"Anticipated account turnover","1711676335":"square root","1711929663":"Your funds have been transferred","1712357617":"Invalid email address.","1714255392":"To enable withdrawals, please complete your financial assessment.","1715011380":"Jump 25 Index","1715630945":"Returns the total profit in string format","1717023554":"Resubmit documents","1719248689":"EUR/GBP/USD","1720451994":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv fiat and Deriv cryptocurrency accounts.","1720968545":"Upload passport photo page from your computer","1723589564":"Represents the maximum number of outstanding contracts in your portfolio. Each line in your portfolio counts for one open position. Once the maximum is reached, you will not be able to open new positions without closing an existing position first.","1724696797":"You are limited to one fiat account only.","1725958461":"Account number","1726472773":"Function with no return value","1726565314":"Close my account","1728121741":"Transactions.csv","1728183781":"About Tether","1729145421":"Risk warning","1731747596":"The block(s) highlighted in red are missing input values. Please update them and click \"Run bot\".","1732891201":"Sell price","1733711201":"Regulators/external dispute resolution","1734185104":"Balance: %1","1734264460":"Disclaimer","1736292549":"Update postal code","1737352280":"Bot.init is not called","1738094481":"<0>Duration: Ticks 1","1738681493":"Remove your glasses, if necessary","1739086943":"Wall Street 30","1739384082":"Unemployed","1739668049":"Close your account","1740371444":"Underlying market is not selected","1742256256":"Please upload one of the following documents:","1743448290":"Payment agents","1743679873":"If you select <0>\"Call\", you’ll earn a <1>payout if the <1>final price is above the <1>strike price at <1>expiry. Otherwise, you won’t receive a payout.","1743902050":"Complete your financial assessment","1744509610":"Just drag the XML file from your computer onto the workspace, and your bot will be loaded accordingly. Alternatively, you can hit Import in Bot Builder, and choose to import your bot from your computer or from your Google Drive.","1745523557":"- Square root","1746051371":"Download the app","1746273643":"Moving Average Convergence Divergence","1747501260":"Sell conditions","1747523625":"Go back","1747674345":"Please use `.` as a decimal separator for fractional numbers.","1747682136":"Contract was cancelled.","1748754976":"Run","1749675724":"Deriv charges no commission across all account types.","1750065391":"Login time:","1753183432":"We take all complaints seriously and aim to resolve them as quickly and fairly as possible. If you are unhappy with any aspect of our service, please let us know by submitting a complaint using the guidance below:","1753226544":"remove","1753975551":"Upload passport photo page","1756678453":"break out","1758386013":"Do not get lured to fake \"Deriv\" pages!","1761038852":"Let’s continue with providing proofs of address and identity.","1761762171":"Restart last trade on error (bot ignores the unsuccessful trade): {{ checkbox }}","1762707297":"Phone number","1762746301":"MF4581125","1763123662":"Upload your NIMC slip.","1766212789":"Server maintenance starts at 06:00 GMT every Sunday and may last up to 2 hours. You may experience service disruption during this time.","1766993323":"Only letters, numbers, and underscores are allowed.","1767429330":"Add a Derived account","1768293340":"Contract value","1768861315":"Minute","1768918213":"Only letters, space, hyphen, period, and apostrophe are allowed.","1769068935":"Choose any of these exchanges to buy cryptocurrencies:","1771037549":"Add a Deriv real account","1771592738":"Conditional block","1777847421":"This is a very common password","1778893716":"Click here","1779144409":"Account verification required","1779519903":"Should be a valid number.","1780442963":"Scan the QR code to download {{ platform }}.","1780770384":"This block gives you a random fraction between 0.0 to 1.0.","1781393492":"We do not charge a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts, your Deriv fiat and {{platform_name_derivez}} accounts and your Deriv fiat and {{platform_name_dxtrade}} accounts.","1782308283":"Quick strategy","1782395995":"Last Digit Prediction","1782690282":"Blocks menu","1782703044":"Sign up","1783526986":"How do I build a trading bot?","1783740125":"Upload your selfie","1787135187":"Postal/ZIP code is required","1787492950":"Indicators on the chart tab are for indicative purposes only and may vary slightly from the ones on the {{platform_name_dbot}} workspace.","1788515547":"<0/>For more information on submitting a complaint with the Office of the Arbiter for Financial Services, please <1>see their guidance.","1788966083":"01-07-1999","1789273878":"Payout per point","1789497185":"Make sure your passport details are clear to read, with no blur or glare","1790770969":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies","1791017883":"Check out this <0>user guide.","1791432284":"Search for country","1791971912":"Recent","1793913365":"To deposit money, please switch to your {{currency_symbol}} account.","1794815502":"Download your transaction history.","1796787905":"Please upload the following document(s).","1798943788":"You can only make deposits.","1801093206":"Get candle list","1801270786":"Ready to automate your trading strategy without writing any code? You’ve come to the right place.","1801927731":"{{platform_name_dxtrade}} accounts","1803338729":"Choose what type of contract you want to trade. For example, for the Rise/Fall trade type you can choose one of three options: Rise, Fall, or Both. Selected option will determine available options for the Purchase block.","1804620701":"Expiration","1804789128":"{{display_value}} Ticks","1806017862":"Max. ticks","1806355993":"No commission","1808058682":"Blocks are loaded successfully","1808393236":"Login","1808867555":"This block uses the variable “i” to control the iterations. With each iteration, the value of “i” is determined by the items in a given list.","1810217569":"Please refresh this page to continue.","1811109068":"Jurisdiction","1811972349":"Market","1811973475":"Returns a specific character from a given string","1812006199":"Identity verification","1812582011":"Connecting to server","1813700208":"Boom 300 Index","1813958354":"Remove comment","1815034361":"alphabetic","1815905959":"DTrader, DBot, SmartTrader, and Binary Bot","1815995250":"Buying contract","1816126006":"Trade on Deriv MT5 ({{platform_name_dmt5}}), the all-in-one FX and CFD trading platform.","1817154864":"This block gives you a random number from within a set range.","1820242322":"e.g. United States","1820332333":"Top up","1821818748":"Enter Driver License Reference number","1823177196":"Most popular","1824193700":"This block gives you the last digit of the latest tick value.","1824292864":"Call","1827607208":"File not uploaded.","1828370654":"Onboarding","1830520348":"{{platform_name_dxtrade}} Password","1831847842":"I confirm that the name and date of birth above match my chosen identity document (see below)","1833481689":"Unlock","1833499833":"Proof of identity documents upload failed","1836767074":"Search payment agent name","1837762008":"Please submit your proof of identity and proof of address to verify your account in your account settings to access the cashier.","1838639373":"Resources","1839021527":"Please enter a valid account number. Example: CR123456789","1840865068":"set {{ variable }} to Simple Moving Average Array {{ dummy }}","1841381387":"Get more wallets","1841788070":"Palladium/USD","1841996888":"Daily loss limit","1842266423":"back","1842862156":"Welcome to your Deriv X dashboard","1843658716":"If you select \"Only Downs\", you win the payout if consecutive ticks fall successively after the entry spot. No payout if any tick rises or is equal to any of the previous ticks.","1845892898":"(min: {{min_stake}} - max: {{max_payout}})","1846266243":"This feature is not available for demo accounts.","1846587187":"You have not selected your country of residence","1846664364":"{{platform_name_dxtrade}}","1849484058":"Any unsaved changes will be lost.","1850031313":"- Low: the lowest price","1850132581":"Country not found","1850659345":"- Payout: the payout of the contract","1850663784":"Submit proofs","1851052337":"Place of birth is required.","1851776924":"upper","1854480511":"Cashier is locked","1854874899":"Back to list","1855566768":"List item position","1856485118":"Please <0>resubmit your proof of address to transfer funds between MT5 and Deriv accounts.","1856755117":"Pending action required","1856932069":"For Long:","1858251701":"minute","1859308030":"Give feedback","1863053247":"Please upload your identity document.","1863694618":"Trade CFDs on MT5 with forex, stocks, stock indices, commodities, and cryptocurrencies.","1863731653":"To receive your funds, contact the payment agent","1865525612":"No recent transactions.","1866811212":"Deposit in your local currency via an authorised, independent payment agent in your country.","1866836018":"<0/><1/>If your complaint relates to our data processing practices, you can submit a formal complaint to your local supervisory authority.","1867217564":"Index must be a positive integer","1867783237":"High-to-Close","1869315006":"See how we protect your funds to unlock the cashier.","1869787212":"Even","1870933427":"Crypto","1871196637":"True if the result of the last trade matches the selection","1871377550":"Do you offer pre-built trading bots on Deriv Bot?","1871664426":"Note","1873838570":"Please verify your address","1874481756":"Use this block to purchase the specific contract you want. You may add multiple Purchase blocks together with conditional blocks to define your purchase conditions. This block can only be used within the Purchase conditions block.","1874756442":"BVI","1875702561":"Load or build your bot","1876015808":"Social Security and National Insurance Trust","1876325183":"Minutes","1877225775":"Your proof of address is verified","1877410120":"What you need to do now","1877832150":"# from end","1878172674":"No, we don't. However, you'll find quick strategies on Deriv Bot that'll help you build your own trading bot for free.","1879042430":"Appropriateness Test, WARNING:","1879412976":"Profit amount: <0>{{profit}}","1879651964":"<0>Pending verification","1880029566":"Australian Dollar","1880097605":"prompt for {{ string_or_number }} with message {{ input_text }}","1880875522":"Create \"get %1\"","1881018702":"hour","1881587673":"Total stake since you last cleared your stats.","1882825238":"Restart trading conditions","1883531976":"Clerks","1885708031":"#","1889357660":"Enter a value in minutes, up to 60480 minutes (equivalent to 6 weeks).","1890171328":"By clicking Accept below and proceeding with the Account Opening you should note that you may be exposing yourself to risks (which may be significant, including the risk of loss of the entire sum invested) that you may not have the knowledge and experience to properly assess or mitigate.","1890332321":"Returns the number of characters of a given string of text, including numbers, spaces, punctuation marks, and symbols.","1893869876":"(lots)","1894667135":"Please verify your proof of address","1898670234":"{{formatted_opening_time}} (GMT) on {{opening_day}},<0> {{opening_date}}.","1899898605":"Maximum size: 8MB","1902547203":"MetaTrader 5 MacOS app","1903437648":"Blurry photo detected","1905032541":"We're now ready to verify your identity","1905589481":"If you want to change your account currency, please contact us via <0>live chat.","1906213000":"Our system will finish any Deriv Bot trades that are running, and Deriv Bot will not place any new trades.","1906639368":"If this is the first time you try to create a password, or you have forgotten your password, please reset it.","1907884620":"Add a real Deriv Gaming account","1908239019":"Make sure all of the document is in the photo","1908686066":"Appropriateness Test Warning","1909647105":"TRX/USD","1909769048":"median","1913777654":"Switch account","1914014145":"Today","1914270645":"Default Candle Interval: {{ candle_interval_type }}","1914725623":"Upload the page that contains your photo.","1917178459":"Bank Verification Number","1917523456":"This block sends a message to a Telegram channel. You will need to create your own Telegram bot to use this block.","1917804780":"You will lose access to your Options account when it gets closed, so be sure to withdraw all your funds. (If you have a CFDs account, you can also transfer the funds from your Options account to your CFDs account.)","1918796823":"Please enter a stop loss amount.","1918832194":"No experience","1919030163":"Tips to take a good selfie","1919594496":"{{website_name}} is not affiliated with any payment agents. Customers deal with payment agents at their sole risk. Customers are advised to check the credentials of payment agents and the accuracy of any information about payment agents (on {{website_name}} or elsewhere) before using their services.","1919694313":"To start trading, transfer funds from your Deriv account into this account.","1920217537":"Compare","1920468180":"How to use the SMA block","1921634159":"A few personal details","1921914669":"Deposit with Deriv P2P","1922529883":"Boom 1000 Index","1922955556":"Use a longer keyboard pattern with more turns","1923431535":"“Stop loss” is deactivated and will only be available when “Deal cancellation” expires.","1924365090":"Maybe later","1924765698":"Place of birth*","1925090823":"Sorry, trading is unavailable in {{clients_country}}.","1926987784":"- iOS: Swipe left on the account and tap <0>Delete.","1928930389":"GBP/NOK","1929309951":"Employment Status","1929379978":"Switch between your demo and real accounts.","1929694162":"Compare accounts","1930899934":"Tether","1931659123":"Run on every tick","1931884033":"It seems that your date of birth in the document is not the same as your Deriv profile. Please update your date of birth in the <0>Personal details page to solve this issue.","1934450653":"For <0>Contract type, set it to Both.","1939014728":"How do I remove blocks from the workspace?","1939902659":"Signal","1940408545":"Delete this token","1941915555":"Try later","1942091675":"Cryptocurrency trading is not available for clients residing in the United Kingdom.","1943440862":"Calculates Bollinger Bands (BB) list from a list with a period","1944204227":"This block returns current account balance.","1947527527":"1. This link was sent by you","1948092185":"GBP/CAD","1949719666":"Here are the possible reasons:","1950413928":"Submit identity documents","1952580688":"Submit passport photo page","1955219734":"Town/City*","1957759876":"Upload identity document","1958807602":"4. 'Table' takes an array of data, such as a list of candles, and displays it in a table format.","1959678342":"Highs & Lows","1960240336":"first letter","1964097111":"USD","1964165648":"Connection lost","1965916759":"Asian options settle by comparing the last tick with the average spot over the period.","1966023998":"2FA enabled","1966281100":"Console {{ message_type }} value: {{ input_message }}","1968025770":"Bitcoin Cash","1968077724":"Agriculture","1968368585":"Employment status","1970060713":"You’ve successfully deleted a bot.","1971898712":"Add or manage account","1973060793":"- maximum loss: Use this variable to store your maximum loss limit. You can assign any amount you want, but it must be a positive number.","1973536221":"You have no open positions yet.","1973564194":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit or created a real {{dmt5_label}} or {{platform_name_dxtrade}} account.","1973910243":"Manage your accounts","1974273865":"This scope will allow third-party apps to view your account activity, settings, limits, balance sheets, trade purchase history, and more.","1974903951":"If you hit Yes, the info you entered will be lost.","1981940238":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}} and {{legal_entity_name_v}}.","1982912252":"Relative Strength Index (RSI) from a list with a period","1983001416":"Define your trade options such as multiplier and stake. This block can only be used with the multipliers trade type. If you select another trade type, this block will be replaced with the Trade options block.","1983358602":"This policy, which may change from time to time, applies to your account registered with {{legal_entity_name}}.","1983387308":"Preview","1983480826":"Sign in","1983544897":"P.O. Box is not accepted in address","1983676099":"Please check your email for details.","1984700244":"Request an input","1984742793":"Uploading documents","1985366224":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts and up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts.","1985637974":"Any blocks placed within this block will be executed at every tick. If the default candle interval is set to 1 minute in the Trade Parameters root block, the instructions in this block will be executed once every minute. Place this block outside of any root block.","1986498784":"BTC/LTC","1987080350":"Demo","1987447369":"Your cashier is locked","1988153223":"Email address","1988302483":"Take profit:","1988601220":"Duration value","1990331072":"Proof of ownership","1990735316":"Rise Equals","1991055223":"View the market price of your favourite assets.","1991448657":"Don't know your tax identification number? Click <0>here to learn more.","1991524207":"Jump 100 Index","1994023526":"The email address you entered had a mistake or typo (happens to the best of us).","1994558521":"The platforms aren’t user-friendly.","1994600896":"This block requires a list of candles as an input parameter.","1995023783":"First line of address*","1996767628":"Please confirm your tax information.","1997138507":"If the last tick is equal to the average of the ticks, you don't win the payout.","1997313835":"Your stake will continue to grow as long as the current spot price remains within a specified <0>range from the <0>previous spot price. Otherwise, you lose your stake and the trade is terminated.","1998199587":"You can also exclude yourself entirely for a specified duration. If, at any time, you decide to trade again, you must then contact our Customer Support to remove this self-exclusion. There will be a 24-hour-cooling-off period before you can resume trading. ","1999346412":"For faster verification, input the same address here as in your proof of address document (see section below)","2001222130":"Check your spam or junk folder. If it's not there, try resending the email.","2004395123":"New trading tools for MT5","2004792696":"If you are a UK resident, to self-exclude from all online gambling companies licensed in Great Britain, go to <0>www.gamstop.co.uk.","2007028410":"market, trade type, contract type","2007092908":"Trade with leverage and low spreads for better returns on successful trades.","2008809853":"Please proceed to withdraw your funds before 30 November 2021.","2010759971":"Uploads successful","2010866561":"Returns the total profit/loss","2011609940":"Please input number greater than 0","2011808755":"Purchase Time","2014536501":"Card number","2014590669":"Variable '{{variable_name}}' has no value. Please set a value for variable '{{variable_name}}' to notify.","2017672013":"Please select the country of document issuance.","2020545256":"Close your account?","2021037737":"Please update your details to continue.","2021161151":"Watch this video to learn how to build a trading bot on Deriv Bot. Also, check out this blog post on building a trading bot.","2023659183":"Student","2023762268":"I prefer another trading website.","2025339348":"Move away from direct light — no glare","2027625329":"Simple Moving Average Array (SMAA)","2027696535":"Tax information","2028163119":"EOS/USD","2029237955":"Labuan","2029641956":"CFDCompareAccounts","2030018735":"RSI is a technical analysis tool that helps you identify the market trend. It will give you a value from 0 to 100. An RSI value of 70 and above means that the asset is overbought and the current trend may reverse, while a value of 30 and below means that the asset is oversold.","2030045667":"Message","2033648953":"This block gives you the specified candle value for a selected time interval.","2034803607":"You must be 18 years old and above.","2035258293":"Start trading with us","2035925727":"sort {{ sort_type }} {{ sort_direction }} {{ input_list }}","2036578466":"Should be {{value}}","2037607934":"The purchase of <0>{{trade_type_name}} contract has been completed successfully for the amount of <0> {{buy_price}} {{currency}}","2037665157":"Expand All Blocks","2037906477":"get sub-list from #","2042023623":"We’re reviewing your documents. This should take about 5 minutes.","2042050260":"- Purchase price: the purchase price (stake) of the contract","2042115724":"Upload a screenshot of your account and personal details page with your name, account number, phone number, and email address.","2044086432":"The close is the latest tick at or before the end time. If you selected a specific end time, the end time is the selected time.","2046273837":"Last tick","2046577663":"Import or choose your bot","2048110615":"Email address*","2048134463":"File size exceeded.","2049386104":"We need you to submit these in order to get this account:","2050170533":"Tick list","2051558666":"View transaction history","2053617863":"Please proceed to withdraw all your funds from your account.","2054889300":"Create \"%1\"","2055317803":"Copy the link to your mobile browser","2057082550":"Accept our updated <0>terms and conditions","2057419639":"Exit Spot","2059365224":"Yes, you can get started with a pre-built bot using the Quick strategy feature. You’ll find some of the most popular trading strategies here: Martingale, D'Alembert, and Oscar's Grind. Just select the strategy, enter your trade parameters, and your bot will be created for you. You can always tweak the parameters later.","2059753381":"Why did my verification fail?","2060873863":"Your order {{order_id}} is complete","2062912059":"function {{ function_name }} {{ function_params }}","2063655921":"By purchasing the \"Close-to-Low\" contract, you'll win the multiplier times the difference between the close and low over the duration of the contract.","2063812316":"Text Statement","2063890788":"Cancelled","2065278286":"Spread","2067903936":"Driving licence","2070002739":"Don’t accept","2070345146":"When opening a leveraged CFD trade.","2070518923":"Import your bot or tap Quick Strategies to choose from the ready-to-use bot templates.","2070752475":"Regulatory Information","2071043849":"Browse","2073813664":"CFDs, Options or Multipliers","2074235904":"Last name is required.","2074497711":"The Telegram notification could not be sent","2074713563":"4.2. Submission of a complaint","2080553498":"3. Get the chat ID using the Telegram REST API (read more: https://core.telegram.org/bots/api#getupdates)","2080829530":"Sold for: {{sold_for}}","2082533832":"Yes, delete","2084693624":"Converts a string representing a date/time string into seconds since Epoch. Example: 2019-01-01 21:03:45 GMT+0800 will be converted to 1546347825. Time and time zone offset are optional.","2085387371":"Must be numbers, letters, and special characters . , ' -","2085602195":"- Entry value: the value of the first tick of the contract","2086742952":"You have added a real Options account.<0/>Make a deposit now to start trading.","2086792088":"Both barriers should be relative or absolute","2088735355":"Your session and login limits","2089581483":"Expires on","2090650973":"The spot price may change by the time your order reaches our servers. When this happens, your payout may be affected.","2091671594":"Status","2093675079":"- Close: the closing price","2096014107":"Apply","2096456845":"Date of birth*","2096603244":"Derived - Vanuatu","2097170986":"About Tether (Omni)","2097365786":"A copy of your identity document (identity card, passport)","2097381850":"Calculates Simple Moving Average line from a list with a period","2097932389":"Upload 2 separate screenshots from the personal details page and the account page via <0>https://app.astropay.com/profile","2100713124":"account","2101972779":"This is the same as the above example, using a tick list.","2102572780":"Length of digit code must be 6 characters.","2104115663":"Last login","2104364680":"Please switch to your demo account to run your Deriv Bot.","2104397115":"Please go to your account settings and complete your personal details to enable deposits and withdrawals.","2107381257":"Scheduled cashier system maintenance","2109312805":"The spread is the difference between the buy price and sell price. A variable spread means that the spread is constantly changing, depending on market conditions. A fixed spread remains constant but is subject to alteration, at the Broker's absolute discretion.","2110365168":"Maximum number of trades reached","2111015970":"This block helps you check if your contract can be sold. If your contract can be sold, it returns “True”. Otherwise, it returns an empty string.","2111528352":"Creating a variable","2112119013":"Take a selfie showing your face","2112175277":"with delimiter","2113321581":"Add a Deriv Gaming account","2115223095":"Loss","2117073379":"Our cryptocurrency cashier is temporarily down due to system maintenance. You can access the Cashier in a few minutes when the maintenance is complete.","2117165122":"1. Create a Telegram bot and get your Telegram API token. Read more on how to create bots in Telegram here: https://core.telegram.org/bots#6-botfather","2117489390":"Auto update in {{ remaining }} seconds","2118315870":"Where do you live?","2119449126":"Example output of the below example will be:","2119710534":"FAQ","2121227568":"NEO/USD","2122152120":"Assets","2127564856":"Withdrawals are locked","2131963005":"Please withdraw your funds from the following Deriv MT5 account(s):","2133451414":"Duration","2133470627":"This block returns the potential payout for the selected trade type. This block can be used only in the \"Purchase conditions\" root block.","2135563258":"Forex trading frequency","2136246996":"Selfie uploaded","2137901996":"This will clear all data in the summary, transactions, and journal panels. All counters will be reset to zero.","2137993569":"This block compares two values and is used to build a conditional structure.","2138861911":"Scans and photocopies are not accepted","2139171480":"Reset Up/Reset Down","2139362660":"left side","2141055709":"New {{type}} password","2141873796":"Get more info on <0>CFDs, <1>multipliers, and <2>options.","2143803283":"Purchase Error","2144609616":"If you select \"Reset-Down”, you win the payout if the exit spot is strictly lower than either the entry spot or the spot at reset time.","2145690912":"Income Earning","2145995536":"Create new account","2146336100":"in text %1 get %2","2146698770":"Pro tip: You can also click and drag out the desired block","2146892766":"Binary options trading experience","2147244655":"How do I import my own trading bot into Deriv Bot?","-1232613003":"<0>Verification failed. <1>Why?","-2029508615":"<0>Need verification.<1>Verify now","-931052769":"Submit verification","-1004605898":"Tips","-1938142055":"Documents uploaded","-448090287":"The link only works on mobile devices","-1244287721":"Something's gone wrong","-241258681":"You'll need to restart your verification on your computer","-929254273":"Get secure link","-2021867851":"Check back here to finish the submission","-1547069149":"Open the link and complete the tasks","-1767652006":"Here's how to do it:","-277611959":"You can now return to your computer to continue","-724178625":"Make sure full document is visible","-1519380038":"Glare detected","-1895280620":"Make sure your card details are clear to read, with no blur or glare","-1464447919":"Make sure your permit details are clear to read, with no blur or glare","-1436160506":"Make sure details are clear to read, with no blur or glare","-759124288":"Close","-759118956":"Redo","-753375398":"Enlarge image","-1042933881":"Driver's license","-1503134764":"Face photo page","-1335343167":"Sorry, no mobile phone bills","-699045522":"Documents you can use to verify your identity","-543666102":"It must be an official photo ID","-903877217":"These are the documents most likely to show your current home address","-1356835948":"Choose document","-1364375936":"Select a %{country} document","-401586196":"or upload photo – no scans or photocopies","-3110517":"Take a photo with your phone","-2033894027":"Submit identity card (back)","-20684738":"Submit license (back)","-1359585500":"Submit license (front)","-106779602":"Submit residence permit (back)","-1287247476":"Submit residence permit (front)","-1954762444":"Restart the process on the latest version of Safari","-261174676":"Must be under 10MB.","-685885589":"An error occurred while loading the component","-502539866":"Your face is needed in the selfie","-1377968356":"Please try again","-1226547734":"Try using a JPG or PNG file","-849068301":"Loading...","-1730346712":"Loading","-1849371752":"Check that your number is correct","-309848900":"Copy","-1424436001":"Send link","-1093833557":"How to scan a QR code","-1408210605":"Point your phone’s camera at the QR code","-1773802163":"If it doesn’t work, download a QR code scanner from Google Play or the App Store","-109026565":"Scan QR code","-1644436882":"Get link via SMS","-1667839246":"Enter mobile number","-1533172567":"Enter your mobile number:","-1352094380":"Send this one-time link to your phone","-28974899":"Get your secure link","-359315319":"Continue","-1279080293":"2. Your desktop window stays open","-102776692":"Continue with the verification","-89152891":"Take a photo of the back of your card","-1646367396":"Take a photo of the front of your card","-1350855047":"Take a photo of the front of your license","-2119367889":"Take a photo using the basic camera mode instead","-342915396":"Take a photo","-419040068":"Passport photo page","-1354983065":"Refresh","-1925063334":"Recover camera access to continue face verification","-54784207":"Camera access is denied","-1392699864":"Allow camera access","-269477401":"Provide the whole document page for best results","-864639753":"Upload back of card from your computer","-1309771027":"Upload front of license from your computer","-1722060225":"Take photo","-565732905":"Selfie","-1703181240":"Check that it is connected and functional. You can also continue verification on your phone","-2043114239":"Camera not working?","-2029238500":"It may be disconnected. Try using your phone instead.","-468928206":"Make sure your device's camera works","-466246199":"Camera not working","-698978129":"Remember to press stop when you're done. Redo video actions","-538456609":"Looks like you took too long","-781816433":"Photo of your face","-1471336265":"Make sure your selfie clearly shows your face","-1375068556":"Check selfie","-1914530170":"Face forward and make sure your eyes are clearly visible","-776541617":"We'll compare it with your document","-478752991":"Your link will expire in one hour","-1859729380":"Keep this window open while using your mobile","-1283761937":"Resend link","-629011256":"Don't refresh this page","-1005231905":"Once you've finished we'll take you to the next step","-542134805":"Upload photo","-1462975230":"Document example","-1472844935":"The photo should clearly show your document","-189310067":"Account closed","-1823540512":"Personal details","-849320995":"Assessments","-773766766":"Email and passwords","-1466827732":"Self exclusion","-1498206510":"Account limits","-241588481":"Login history","-966136867":"Connected apps","-213009361":"Two-factor authentication","-1214803297":"Dashboard-only path","-526636259":"Error 404","-1227878799":"Speculative","-1196936955":"Upload a screenshot of your name and email address from the personal information section.","-1286823855":"Upload your mobile bill statement showing your name and phone number.","-1309548471":"Upload your bank statement showing your name and account details.","-1410396115":"Upload a photo showing your name and the first six and last four digits of your card number. If the card does not display your name, upload the bank statement showing your name and card number in the transaction history.","-3805155":"Upload a screenshot of either of the following to process the transaction:","-1523487566":"- your account profile section on the website","-613062596":"- the Account Information page on the app","-1718304498":"User ID","-609424336":"Upload a screenshot of your name, account number, and email address from the personal details section of the app or profile section of your account on the website.","-1954436643":"Upload a screenshot of your username on the General Information page at <0>https://onlinenaira.com/members/index.htm","-79853954":"Upload a screenshot of your account number and phone number on the Bank Account/Mobile wallet page at <0>https://onlinenaira.com/members/bank.htm","-1192882870":"Upload a screenshot of your name and account number from the personal details section.","-1120954663":"First name*","-1659980292":"First name","-962979523":"Your {{ field_name }} as in your identity document","-1416797980":"Please enter your {{ field_name }} as in your official identity documents.","-1466268810":"Please remember that it is your responsibility to keep your answers accurate and up to date. You can update your personal details at any time in your <0>account settings.","-32386760":"Name","-766265812":"first name","-1857534296":"John","-1282749116":"last name","-1485480657":"Other details","-1784741577":"date of birth","-1702919018":"Second line of address (optional)","-1315410953":"State/Province","-2040322967":"Citizenship","-344715612":"Employment status*","-1543016582":"I hereby confirm that the tax information I provided is true and complete. I will also inform {{legal_entity_name}} about any changes to this information.","-946282997":"Additional information","-1315571766":"Place of birth","-789291456":"Tax residence*","-1692219415":"Tax residence","-1903720068":"The country in which you meet the criteria for paying taxes. Usually the country in which you physically reside.","-651516152":"Tax Identification Number","-1387062433":"Account opening reason","-222283483":"Account opening reason*","-1113902570":"Details","-71696502":"Previous","-1541554430":"Next","-987011273":"Your proof of ownership isn't required.","-808299796":"You are not required to submit proof of ownership at this time. We will inform you if proof of ownership is required in the future.","-179726573":"We’ve received your proof of ownership.","-813779897":"Proof of ownership verification passed.","-638756912":"Black out digits 7 to 12 of the card number that’s shown on the front of your debit/credit card.⁤","-2073934245":"The financial trading services offered on this site are only suitable for customers who accept the possibility of losing all the money they invest and who understand and have experience of the risk involved in the purchase of financial contracts. Transactions in financial contracts carry a high degree of risk. If the contracts you purchased expire as worthless, you will lose all your investment, which includes the contract premium.","-1166068675":"Your account will be opened with {{legal_entity_name}}, regulated by the UK Gaming Commission (UKGC), and will be subject to the laws of the Isle of Man.","-975118358":"Your account will be opened with {{legal_entity_name}}, regulated by the Malta Financial Services Authority (MFSA), and will be subject to the laws of Malta.","-680528873":"Your account will be opened with {{legal_entity_name}} and will be subject to the laws of Samoa.","-1125193491":"Add account","-2068229627":"I am not a PEP, and I have not been a PEP in the last 12 months.","-684271315":"OK","-740157281":"Trading Experience Assessment","-1720468017":"In providing our services to you, we are required to obtain information from you in order to assess whether a given product or service is appropriate for you.","-186841084":"Change your login email","-907403572":"To change your email address, you'll first need to unlink your email address from your {{identifier_title}} account.","-1850792730":"Unlink from {{identifier_title}}","-307865807":"Risk Tolerance Warning","-690100729":"Yes, I understand the risk.","-2010628430":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the high risk of losing your money. <0/><0/> To continue, you must confirm that you understand your capital is at risk.","-863770104":"Please note that by clicking ‘OK’, you may be exposing yourself to risks. You may not have the knowledge or experience to properly assess or mitigate these risks, which may be significant, including the risk of losing the entire sum you have invested.","-1292808093":"Trading Experience","-2145244263":"This field is required","-884768257":"You should enter 0-35 characters.","-1784470716":"State is not in a proper format","-1699820408":"Please enter a {{field_name}} under {{max_number}} characters.","-1575567374":"postal/ZIP code","-2113555886":"Only letters, numbers, space, and hyphen are allowed.","-874280157":"This Tax Identification Number (TIN) is invalid. You may continue using it, but to facilitate future payment processes, valid tax information will be required.","-1174064217":"Mr","-855506127":"Ms","-1037916704":"Miss","-634958629":"We use the information you give us only for verification purposes. All information is kept confidential.","-731992635":"Title*","-352888977":"Title","-136976514":"Country of residence*","-945104751":"We’re legally obliged to ask for your tax information.","-1024240099":"Address","-1124948631":"Professional Client","-259515058":"By default, all {{brand_website_name}} clients are retail clients but anyone can request to be treated as a professional client.","-1463348492":"I would like to be treated as a professional client.","-1958764604":"Email preference","-2121071263":"Check this box to receive updates via email.","-2068064150":"Get updates about Deriv products, services and events.","-1558679249":"Please make sure your information is correct or it may affect your trading experience.","-179005984":"Save","-2116332353":"Please close your positions in the following Deriv account(s):","-2048005267":"{{number_of_positions}} position(s)","-1923892687":"Please withdraw your funds from the following Deriv X account(s):","-1629894615":"I have other financial priorities.","-844051272":"I want to stop myself from trading.","-1113965495":"I’m no longer interested in trading.","-1224285232":"Customer service was unsatisfactory.","-9323953":"Remaining characters: {{remaining_characters}}","-839094775":"Back","-2061895474":"Closing your account will automatically log you out. We shall delete your personal information as soon as our legal obligations are met.","-203298452":"Close account","-937707753":"Go Back","-1219849101":"Please select at least one reason","-484540402":"An error occurred","-1911549768":"Inaccessible MT5 account(s)","-1869355019":"Action required","-1030102424":"You can't trade on Deriv.","-448385353":"You can't make transactions.","-1058447223":"Before closing your account:","-912764166":"Withdraw your funds.","-60139953":"We shall delete your personal information as soon as our legal obligations are met, as mentioned in the section on Data Retention in our <0>Security and privacy policy","-1725454783":"Failed","-506510414":"Date and time","-1708927037":"IP address","-80717068":"Apps you have linked to your <0>Deriv password:","-9570380":"Use the {{platform_name_dxtrade}} password to log in to your {{platform_name_dxtrade}} accounts on the web and mobile apps.","-2131200819":"Disable","-200487676":"Enable","-1840392236":"That's not the right code. Please try again.","-2067796458":"Authentication code","-790444493":"Protect your account with 2FA. Each time you log in to your account, you will need to enter your password and an authentication code generated by a 2FA app on your smartphone.","-368010540":"You have enabled 2FA for your Deriv account.","-403552929":"To disable 2FA, please enter the six-digit authentication code generated by your 2FA app below:","-752939584":"How to set up 2FA for your Deriv account","-90649785":"Click here to copy key","-206376148":"Key copied!","-1592318047":"See example","-1376950117":"That file format isn't supported. Please upload .pdf, .png, .jpg, or .jpeg files only.","-1272489896":"Please complete this field.","-397487797":"Enter your full card number","-153346659":"Upload your selfie.","-602131304":"Passport number","-1051213440":"Upload the front and back of your identity card.","-1600807543":"First, enter your identity card number and the expiry date.","-1139923664":"Next, upload the front and back of your identity card.","-783705755":"Upload the front of your identity card.","-566750665":"NIMC slip and proof of age","-1465944279":"NIMC slip number","-429612996":"Next, upload both of the following documents.","-376981174":"Upload your proof of age: birth certificate or age declaration document.","-612174191":"First line of address is required","-242734402":"Only {{max}} characters, please.","-378415317":"State is required","-1497654315":"Our accounts and services are unavailable for the Jersey postal code.","-755626951":"Complete your address details","-584911871":"Select wallet currency","-1461267236":"Please choose your currency","-1352330125":"CURRENCY","-1027595143":"Less than $25,000","-40491332":"$25,000 - $50,000","-1139806939":"$50,001 - $100,000","-626752657":"0-1 year","-532014689":"1-2 years","-1001024004":"Over 3 years","-790513277":"6-10 transactions in the past 12 months","-580085300":"11-39 transactions in the past 12 months","-654781670":"Primary","-1717373258":"Secondary","-996132458":"Construction","-915003867":"Health","-1430012453":"Information & Communications Technology","-987824916":"Science & Engineering","-146630682":"Social & Cultural","-761306973":"Manufacturing","-739367071":"Employed","-1156937070":"$500,001 - $1,000,000","-315534569":"Over $1,000,000","-2068544539":"Salaried Employee","-531314998":"Investments & Dividends","-1235114522":"Pension","-1298056749":"State Benefits","-449943381":"Savings & Inheritance","-1631552645":"Professionals","-474864470":"Personal Care, Sales and Service Workers","-1129355784":"Agricultural, Forestry and Fishery Workers","-1242914994":"Craft, Metal, Electrical and Electronics Workers","-1317824715":"Cleaners and Helpers","-1592729751":"Mining, Construction, Manufacturing and Transport Workers","-2137323480":"Company Ownership","-1590574533":"Divorce Settlement","-1667683002":"Inheritance","-1237843731":"Investment Income","-777506574":"Sale of Property","-1161338910":"First name is required.","-1161818065":"Last name should be between 2 and 50 characters.","-1281693513":"Date of birth is required.","-26599672":"Citizenship is required","-912174487":"Phone is required.","-673765468":"Letters, numbers, spaces, periods, hyphens and forward slashes only.","-212167954":"Tax Identification Number is not properly formatted.","-621555159":"Identity information","-204765990":"Terms of use","-231863107":"No","-870902742":"How much knowledge and experience do you have in relation to online trading?","-1929477717":"I have an academic degree, professional certification, and/or work experience related to financial services.","-1540148863":"I have attended seminars, training, and/or workshops related to trading.","-922751756":"Less than a year","-542986255":"None","-1337206552":"In your understanding, CFD trading allows you to","-456863190":"Place a position on the price movement of an asset where the outcome is a fixed return or nothing at all.","-1314683258":"Make a long-term investment for a guaranteed profit.","-1546090184":"How does leverage affect CFD trading?","-1636427115":"Leverage helps to mitigate risk.","-800221491":"Leverage guarantees profits.","-811839563":"Leverage lets you open large positions for a fraction of trade value, which may result in increased profit or loss.","-1185193552":"Close your trade automatically when the loss is equal to or more than a specified amount, as long as there is adequate market liquidity.","-1046354":"Close your trade automatically when the profit is equal to or more than a specified amount, as long as there is adequate market liquidity.","-1842858448":"Make a guaranteed profit on your trade.","-860053164":"When trading multipliers.","-1250327770":"When buying shares of a company.","-1222388581":"All of the above.","-477761028":"Voter ID","-1466346630":"CPF","-1515286538":"Please enter your document number. ","-1694758788":"Enter your document number","-1458676679":"You should enter 2-50 characters.","-1176889260":"Please select a document type.","-1030759620":"Government Officers","-612752984":"These are default limits that we apply to your accounts.","-1598263601":"To learn more about trading limits and how they apply, please go to the <0>Help Centre.","-1411635770":"Learn more about account limits","-1340125291":"Done","-1101543580":"Limit","-858297154":"Represents the maximum amount of cash that you may hold in your account. If the maximum is reached, you will be asked to withdraw funds.","-976258774":"Not set","-1182362640":"Represents the maximum aggregate payouts on outstanding contracts in your portfolio. If the maximum is attained, you may not purchase additional contracts without first closing out existing positions.","-1781293089":"Maximum aggregate payouts on open positions","-1412690135":"*Any limits in your Self-exclusion settings will override these default limits.","-1598751496":"Represents the maximum volume of contracts that you may purchase in any given trading day.","-173346300":"Maximum daily turnover","-1502578110":"Your account is fully authenticated and your withdrawal limits have been lifted.","-138380129":"Total withdrawal allowed","-854023608":"To increase limit please verify your identity","-1500958859":"Verify","-1662154767":"a recent utility bill (e.g. electricity, water, gas, landline, or internet), bank statement, or government-issued letter with your name and this address.","-190838815":"We need this for verification. If the information you provide is fake or inaccurate, you won’t be able to deposit and withdraw.","-223216785":"Second line of address*","-594456225":"Second line of address","-1940457555":"Postal/ZIP Code*","-1964954030":"Postal/ZIP Code","-516397235":"Be careful who you share this token with. Anyone with this token can perform the following actions on your account behalf","-989216986":"Add accounts","-617480265":"Delete token","-316749685":"Are you sure you want to delete this token?","-786372363":"Learn more about API token","-55560916":"To access our mobile apps and other third-party apps, you'll first need to generate an API token.","-198329198":"API Token","-955038366":"Copy this token","-1668692965":"Hide this token","-1661284324":"Show this token","-1076138910":"Trade","-1666909852":"Payments","-488597603":"Trading information","-605778668":"Never","-1628008897":"Token","-1238499897":"Last Used","-1171226355":"Length of token name must be between {{MIN_TOKEN}} and {{MAX_TOKEN}} characters.","-1803339710":"Maximum {{MAX_TOKEN}} characters.","-408613988":"Select scopes based on the access you need.","-5605257":"This scope will allow third-party apps to withdraw to payment agents and make inter-account transfers for you.","-1373485333":"This scope will allow third-party apps to view your trading history.","-758221415":"This scope will allow third-party apps to open accounts for you, manage your settings and token usage, and more. ","-1117963487":"Name your token and click on 'Create' to generate your token.","-2005211699":"Create","-2115275974":"CFDs","-1879666853":"Deriv MT5","-460645791":"You are limited to one fiat account. You won’t be able to change your account currency if you have already made your first deposit or created a real {{dmt5_label}} account.","-1146960797":"Fiat currencies","-1959484303":"Cryptocurrencies","-561724665":"You are limited to one fiat currency only","-2087317410":"Oops, something went wrong.","-184202848":"Upload file","-1447142373":"Click here to upload.","-863586176":"Drag and drop a file or click to browse your files.","-723198394":"File size should be 8MB or less","-1948369500":"File uploaded is not supported","-1040865880":"Drop files here..","-1100235269":"Industry of employment","-684388823":"Estimated net worth","-509054266":"Anticipated annual turnover","-601903492":"Forex trading experience","-1012699451":"CFD trading experience","-1117345066":"Choose the document type","-651192353":"Sample:","-1044962593":"Upload Document","-164448351":"Show less","-1361653502":"Show more","-337620257":"Switch to real account","-2120454054":"Add a real account","-38915613":"Unsaved changes","-2137450250":"You have unsaved changes. Are you sure you want to discard changes and leave this page?","-1067082004":"Leave Settings","-1982432743":"It appears that the address in your document doesn’t match the address\n in your Deriv profile. Please update your personal details now with the\n correct address.","-1451334536":"Continue trading","-1525879032":"Your documents for proof of address is expired. Please submit again.","-1425489838":"Proof of address verification not required","-1008641170":"Your account does not need address verification at this time. We will inform you if address verification is required in the future.","-60204971":"We could not verify your proof of address","-1944264183":"To continue trading, you must also submit a proof of identity.","-1088324715":"We’ll review your documents and notify you of its status within 1 - 3 working days.","-329713179":"Ok","-1926456107":"The ID you submitted is expired.","-555047589":"It looks like your identity document has expired. Please try again with a valid document.","-841187054":"Try Again","-2097808873":"We were unable to verify your ID with the details you provided. ","-228284848":"We were unable to verify your ID with the details you provided.","-1391934478":"Your ID is verified. You will also need to submit proof of your address.","-118547687":"ID verification passed","-200989771":"Go to personal details","-1358357943":"Please check and update your postal code before submitting proof of identity.","-1401994581":"Your personal details are missing","-2004327866":"Please select a valid country of document issuance.","-1664159494":"Country","-749870311":"Please contact us via <0>live chat.","-1084991359":"Proof of identity verification not required","-1981334109":"Your account does not need identity verification at this time. We will inform you if identity verification is required in the future.","-182918740":"Your proof of identity submission failed because:","-155705811":"A clear colour photo or scanned image","-246893488":"JPEG, JPG, PNG, PDF, or GIF","-1454880310":"Must be valid for at least 6 months","-100534371":"Before uploading, please ensure that you’re facing forward in the selfie, your face is within the frame, and your eyes are clearly visible even if you’re wearing glasses.","-1529523673":"Confirm and upload","-705047643":"Sorry, an error occured. Please select another file.","-1664309884":"Tap here to upload","-856213726":"You must also submit a proof of address.","-1389323399":"You should enter {{min_number}}-{{max_number}} characters.","-1313806160":"Please request a new password and check your email for the new token.","-1598167506":"Success","-1077809489":"You have a new {{platform}} password to log in to your {{platform}} accounts on the web and mobile apps.","-2068479232":"{{platform}} password","-1332137219":"Strong passwords contain at least 8 characters that include uppercase and lowercase letters, numbers, and symbols.","-1597186502":"Reset {{platform}} password","-848721396":"These trading limits are optional, and you can strengthen them at any time. If you don’t wish to set a specific limit, leave the field blank. If you live in the United Kingdom, Customer Support can only remove or weaken your trading limits after 24 hours of receiving the request. If you live in the Isle of Man, Customer Support can only remove or weaken your trading limits after your trading limit period has expired.","-469096390":"These trading limits are optional, and you can strengthen them at any time. If you don’t wish to set a specific limit, leave the field blank. Customer Support can only remove or weaken your trading limits after 24 hours of receiving the request.","-42808954":"You can also exclude yourself entirely for a specified duration. This can only be removed once your self-exclusion has expired. If you wish to continue trading once your self-exclusion period expires, you must contact Customer Support by calling <0>+447723580049 to lift this self-exclusion. Requests by chat or email shall not be entertained. There will be a 24-hour cooling-off period before you can resume trading.","-1088698009":"These self-exclusion limits help you control the amount of money and time you spend trading on {{platform_name_trader}}, {{platform_name_dbot}}, {{platform_name_smarttrader}} and {{platform_name_bbot}} on Deriv. The limits you set here will help you exercise <0>responsible trading.","-1702324712":"These limits are optional, and you can adjust them at any time. You decide how much and how long you’d like to trade. If you don’t wish to set a specific limit, leave the field blank.","-1819875658":"You can also exclude yourself entirely for a specified duration. Once the self-exclusion period has ended, you can either extend it further or resume trading immediately. If you wish to reduce or remove the self-exclusion period, contact our <0>Customer Support.","-1031814119":"About trading limits and self-exclusion","-183468698":"Trading limits and self-exclusion","-933963283":"No, review my limits","-1759860126":"Yes, log me out immediately","-572347855":"{{value}} mins","-313333548":"You’ll be able to adjust these limits at any time. You can reduce your limits from the <0>self-exclusion page. To increase or remove your limits, please contact our <1>Customer Support team.","-1265833982":"Accept","-2123139671":"Your stake and loss limits","-1250802290":"24 hours","-2070080356":"Max. total stake","-1545823544":"7 days","-180147209":"You will be automatically logged out from each session after this time limit.","-374553538":"Your account will be excluded from the website until this date (at least 6 months, up to 5 years).","-2121421686":"To self-exclude from all online gambling companies licensed in Great Britain, go to <0>www.gamstop.co.uk.","-2105708790":"Your maximum account balance and open positions","-1960600163":"Once your account balance reaches this amount, you will not be able to deposit funds into your account.","-1073845224":"No. of open position(s)","-288196326":"Your maximum deposit limit","-568749373":"Max. deposit limit","-1884902844":"Max. deposit limit per day","-545085253":"Max. deposit limit over 7 days","-1031006762":"Max. deposit limit over 30 days","-1116871438":"Max. total loss over 30 days","-2134714205":"Time limit per session","-1884271702":"Time out until","-1265825026":"Timeout time must be greater than current time.","-1332882202":"Timeout time cannot be more than 6 weeks.","-1635977118":"Exclude time cannot be less than 6 months.","-1617352279":"The email is in your spam folder (Sometimes things get lost there).","-547557964":"We can’t deliver the email to this address (Usually because of firewalls or filtering).","-142444667":"Please click on the link in the email to change your Deriv MT5 password.","-742748008":"Check your email and click the link in the email to proceed.","-84068414":"Still didn't get the email? Please contact us via <0>live chat.","-428335668":"You will need to set a password to complete the process.","-818898181":"Name in document doesn’t match your Deriv profile.","-310316375":"Address in document doesn’t match address you entered above.","-485368404":"Document issued more than 6-months ago.","-367016488":"Blurry document. All information must be clear and visible.","-1957076143":"Cropped document. All information must be clear and visible.","-2139303636":"You may have followed a broken link, or the page has moved to a new address.","-1448368765":"Error code: {{error_code}} page not found","-254792921":"You can only make deposits at the moment. To enable withdrawals, please complete your financial assessment.","-1437017790":"Financial information","-70342544":"We’re legally obliged to ask for your financial information.","-39038029":"Trading experience","-1894668798":"Other trading instruments experience","-1026468600":"Other trading instruments frequency","-1743024217":"Select Language","-1822545742":"Ether Classic","-1334641066":"Litecoin","-1214036543":"US Dollar","-1782590355":"No currency has been set for this account","-536187647":"Confirm revoke access?","-1357606534":"Permission","-570222048":"Revoke access","-1526404112":"Utility bill: electricity, water, gas, or landline phone bill.","-537552700":"Home rental agreement: valid and current agreement.","-890084320":"Save and submit","-30772747":"Your personal details have been saved successfully.","-1107320163":"Automate your trading, no coding needed.","-829643221":"Multipliers trading platform.","-1585707873":"Financial Commission","-199154602":"Vanuatu Financial Services Commission","-191165775":"Malta Financial Services Authority","-194969520":"Counterparty company","-1089385344":"Deriv (SVG) LLC","-2019617323":"Deriv (BVI) Ltd","-112814932":"Deriv (FX) Ltd","-1131400885":"Deriv Investments (Europe) Limited","-1471207907":"All assets","-781132577":"Leverage","-1591882610":"Synthetics","-543177967":"Stock indices","-362324454":"Commodities","-1071336803":"Platform","-820028470":"Options & Multipliers","-1018945969":"TradersHub","-1856204727":"Reset","-213142918":"Deposits and withdrawals temporarily unavailable ","-224804428":"Transactions","-1186807402":"Transfer","-1308346982":"Derived","-1145604233":"Trade CFDs on MT5 with Derived indices that simulate real-world market movements.","-328128497":"Financial","-1484404784":"Trade CFDs on MT5 with forex, stock indices, commodities, and cryptocurrencies.","-659955365":"Swap-Free","-674118045":"Trade swap-free CFDs on MT5 with synthetics, forex, stocks, stock indices, cryptocurrencies, and ETFs.","-1210359945":"Transfer funds to your accounts","-81256466":"You need a Deriv account to create a CFD account.","-699372497":"Trade with leverage and tight spreads for better returns on successful trades. <0>Learn more","-1884966862":"Get more Deriv MT5 account with different type and jurisdiction.","-982095728":"Get","-1277942366":"Total assets","-1255879419":"Trader's Hub","-493788773":"Non-EU","-673837884":"EU","-230566990":"The following documents you submitted did not pass our checks:","-846812148":"Proof of address.","-2055865877":"Non-EU regulation","-643108528":"Non-EU and EU regulation","-172898036":"CR5236585","-1665192032":"Multipliers account","-744999940":"Deriv account","-1638358352":"Get the upside of CFDs without risking more than your initial stake with <0>Multipliers.","-749129977":"Get a real Deriv account, start trading and manage your funds.","-1814994113":"CFDs <0>{{compare_accounts_title}}","-318106501":"Trade CFDs on MT5 with synthetics, baskets, and derived FX.","-1328701106":"Trade CFDs on MT5 with forex, stocks, stock indices, synthetics, cryptocurrencies, and commodities.","-1290112064":"Deriv EZ","-1453519913":"Trade CFDs on an easy-to-get-started platform with all your favourite assets.","-2051096382":"Earn a range of payouts by correctly predicting market movements with <0>options, or get the\n upside of CFDs without risking more than your initial stake with <1>multipliers.","-2146691203":"Choice of regulation","-249184528":"You can create real accounts under EU or non-EU regulation. Click the <0><0/> icon to learn more about these accounts.","-1505234170":"Trader's Hub tour","-181080141":"Trading hub tour","-1042025112":"Need help moving around?<0>We have a short tutorial that might help. Hit Repeat tour to begin.","-1536335438":"These are the trading accounts available to you. You can click on an account’s icon or description to find out more","-1034232248":"CFDs or Multipliers","-1320214549":"You can choose between CFD trading accounts and Multipliers accounts","-2069414013":"Click the ‘Get’ button to create an account","-951876657":"Top-up your account","-1945421757":"Once you have an account click on ‘Deposit’ or ‘Transfer’ to add funds to an account","-1965920446":"Start trading","-33612390":"<0>EU statutory disclaimer: CFDs are complex instruments and come with a high risk of losing money rapidly due to leverage. <0>73% of retail investor accounts lose money when trading CFDs with this provider. You should consider whether you understand how CFDs work and whether you can afford to take the high risk of losing your money.","-2021135479":"This field is required.","-1870909526":"Our server cannot retrieve an address.","-582721696":"The current allowed withdraw amount is {{format_min_withdraw_amount}} to {{format_max_withdraw_amount}} {{currency}}","-1975494965":"Cashier","-42592103":"Deposit cryptocurrencies","-60779216":"Withdrawals are temporarily unavailable due to system maintenance. You can make your withdrawals when the maintenance is complete.","-215186732":"You’ve not set your country of residence. To access Cashier, please update your country of residence in the Personal details section in your account settings.","-1392897508":"The identification documents you submitted have expired. Please submit valid identity documents to unlock Cashier. ","-954082208":"Your cashier is currently locked. Please contact us via <0>live chat to find out how to unlock it.","-929148387":"Please set your account currency to enable deposits and withdrawals.","-541392118":"Your account has not been authenticated. Please submit your <0>proof of identity and <1>proof of address to authenticate your account and access your cashier.","-247122507":"Your cashier is locked. Please complete the <0>financial assessment to unlock it.","-1443721737":"Your cashier is locked. See <0>how we protect your funds before you proceed.","-901712457":"Your access to Cashier has been temporarily disabled as you have not set your 30-day turnover limit. Please go to <0>Self-exclusion and set your 30-day turnover limit.","-166472881":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable deposits and withdrawals.","-666905139":"Deposits are locked","-378858101":"Your <0>personal details are incomplete. Please go to your account settings and complete your personal details to enable deposits.","-1318742415":"Your account has not been authenticated. Please submit your <0>proof of identity and <1>proof of address to authenticate your account and request for withdrawals.","-1923809087":"Unfortunately, you can only make deposits. Please contact us via <0>live chat to enable withdrawals.","-172277021":"Cashier is locked for withdrawals","-1624999813":"It seems that you've no commissions to withdraw at the moment. You can make withdrawals once you receive your commissions.","-1077304626":"Amount ({{currency}})","-1559994981":"Approximate value","-190084602":"Transaction","-1995606668":"Amount","-2024290965":"Confirmations","-811190405":"Time","-1984478597":"The details of this transaction is available on CoinsPaid.","-1272778997":"We've sent you an email.","-89973258":"Resend email in {{seconds}}s","-1332236294":"Please verify your identity","-1675848843":"Error","-283017497":"Retry","-1838982691":"UNKNOWN","-532693866":"Something went wrong. Please refresh the page and try again.","-1196049878":"First line of home address","-1326406485":"Postal Code/ZIP","-939625805":"Telephone","-442575534":"Email verification failed","-1459042184":"Update your personal details","-1603543465":"We can't validate your personal details because there is some information missing.","-614516651":"Need help? <0>Contact us.","-203002433":"Deposit now","-720315013":"You have no funds in your {{currency}} account","-2052373215":"Please make a deposit to use this feature.","-379487596":"{{selected_percentage}}% of available balance ({{format_amount}} {{currency__display_code}})","-1957498244":"more","-1059419768":"Notes","-285921910":"Learn more about <0>payment methods.","-316545835":"Please ensure <0>all details are <0>correct before making your transfer.","-949073402":"I confirm that I have verified the client’s transfer information.","-1752211105":"Transfer now","-1787304306":"Deriv P2P","-174976899":"P2P verification","-1705887186":"Your deposit is successful.","-142361708":"In process","-1582681840":"We’ve received your request and are waiting for more blockchain confirmations.","-1626218538":"You’ve cancelled your withdrawal request.","-1062841150":"Your withdrawal is unsuccessful due to an error on the blockchain. Please <0>contact us via live chat for more info.","-630780094":"We’re awaiting confirmation from the blockchain.","-1525882769":"Your withdrawal is unsuccessful. We've sent you an email with more information.","-298601922":"Your withdrawal is successful.","-1463156905":"Learn more about payment methods","-1236567184":"This is your <0>{{regulation}}{{currency}} account {{loginid}}.","-1547606079":"We accept the following cryptocurrencies:","-1517325716":"Deposit via the following payment methods:","-639677539":"Buy cryptocurrencies","-1560098002":"Buy cryptocurrencies via fiat onramp","-541870313":"Deposit via payment agents","-197251450":"Don't want to trade in {{currency_code}}? You can open another cryptocurrency account.","-91824739":"Deposit {{currency}}","-523804269":"{{amount}} {{currency}} on {{date}}","-494847428":"Address: <0>{{value}}","-1117977576":"Confirmations: <0>{{value}}","-1935946851":"View more","-1744490898":"Unfortunately, we cannot retrieve the information at this time. ","-515809216":"Send only {{currency_name}} ({{currency_code}}) to this address.","-1589407981":"To avoid loss of funds:","-1042704302":"Make sure to copy your Deriv account address correctly into your crypto wallet.","-80329359":"<0>Note: You’ll receive an email when your deposit start being processed.","-2108344100":"Looking for a way to buy cryptocurrencies? <0>Try Fiat onramp.","-598073640":"About Tether (Ethereum)","-275902914":"Tether on Ethereum (eUSDT)","-1188009792":"Tether on Omni Layer (USDT)","-1239329687":"Tether was originally created to use the bitcoin network as its transport protocol ‒ specifically, the Omni Layer ‒ to allow transactions of tokenised traditional currency.","-314177745":"Unfortunately, we couldn't get the address since our server was down. Please click Refresh to reload the address or try again later.","-1068036170":"We do not charge a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts and between your Deriv fiat and {{platform_name_dxtrade}} accounts.","-2056016338":"You’ll not be charged a transfer fee for transfers in the same currency between your Deriv fiat and {{platform_name_mt5}} accounts.","-599632330":"We’ll charge a 1% transfer fee for transfers in different currencies between your Deriv fiat and {{platform_name_mt5}} accounts and between your Deriv fiat and {{platform_name_dxtrade}} accounts.","-1196994774":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency accounts.","-1361372445":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts, your Deriv cryptocurrency and {{platform_name_derivez}} accounts, and your Deriv cryptocurrency and {{platform_name_dxtrade}} accounts.","-993556039":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts and between your Deriv cryptocurrency and {{platform_name_dxtrade}} accounts.","-1382702462":"We’ll charge a 2% transfer fee or {{minimum_fee}} {{currency}}, whichever is higher, for transfers between your Deriv cryptocurrency and Deriv MT5 accounts.","-1995859618":"You may transfer between your Deriv fiat, cryptocurrency, {{platform_name_mt5}}, {{platform_name_derivez}} and {{platform_name_dxtrade}} accounts.","-545616470":"Each day, you can make up to {{ allowed_internal }} transfers between your Deriv accounts, up to {{ allowed_mt5 }} transfers between your Deriv and {{platform_name_mt5}} accounts, up to {{ allowed_derivez }} transfers between your Deriv and {{platform_name_derivez}} accounts, and up to {{ allowed_dxtrade }} transfers between your Deriv and {{platform_name_dxtrade}} accounts.","-1151983985":"Transfer limits may vary depending on the exchange rates.","-1747571263":"Please bear in mind that some transfers may not be possible.","-757062699":"Transfers may be unavailable due to high volatility or technical issues and when the exchange markets are closed.","-1344870129":"Deriv accounts","-1156059326":"You have {{number}} transfer remaining for today.","-1109729546":"You will be able to transfer funds between MT5 accounts and other accounts once your address is verified.","-1593609508":"Transfer between your accounts in Deriv","-464965808":"Transfer limits: <0 /> - <1 />","-553249337":"Transfers are locked","-1638172550":"To enable this feature you must complete the following:","-1949883551":"You only have one account","-1149845849":"Back to Trader's Hub","-1232852916":"We’re switching over to your {{currency}} account to view the transaction.","-759000391":"We were unable to verify your information automatically. To enable this function, you must complete the following:","-1632668764":"I accept","-544232635":"Please go to the Deposit page to generate an address. Then come back here to continue with your transaction.","-1161069724":"Please copy the crypto address you see below. You'll need it to deposit your cryptocurrency.","-1388977563":"Copied!","-1962894999":"This address can only be used ONCE. Please copy a new one for your next transaction.","-451858550":"By clicking 'Continue' you will be redirected to {{ service }}, a third-party payment service provider. Please note that {{ website_name }} is not responsible for the content or services provided by {{ service }}. If you encounter any issues related to {{ service }} services, you must contact {{ service }} directly.","-2005265642":"Fiat onramp is a cashier service that allows you to convert fiat currencies to crypto to top up your Deriv crypto accounts. Listed here are third-party crypto exchanges. You’ll need to create an account with them to use their services.","-1593063457":"Select payment channel","-1309258714":"From account number","-1247676678":"To account number","-816476007":"Account holder name","-344403983":"Description","-922432739":"Please enter a valid client login ID.","-1024241603":"Insufficient balance.","-1979554765":"Please enter a valid description.","-1254233806":"You've transferred","-953082600":"Some payment methods may not be listed here but payment agents may still offer them. If you can’t find your favourite method, contact the payment agents directly to check further.","-1491457729":"All payment methods","-142563298":"Contact your preferred payment agent for payment instructions and make your deposit.","-1023961762":"Commission on deposits","-552873274":"Commission on withdrawal","-880645086":"Withdrawal amount","-118683067":"Withdrawal limits: <0 />-<1 />","-1125090734":"Important notice to receive your funds","-1924707324":"View transaction","-1474202916":"Make a new withdrawal","-511423158":"Enter the payment agent account number","-2059278156":"Note: {{website_name}} does not charge any transfer fees.","-1201279468":"To withdraw your funds, please choose the same payment method you used to make your deposits.","-2004264970":"Your wallet address should have 25 to 64 characters.","-1707299138":"Your {{currency_symbol}} wallet address","-38063175":"{{account_text}} wallet","-705272444":"Upload a proof of identity to verify your identity","-2024958619":"This is to protect your account from unauthorised withdrawals.","-130833284":"Please note that your maximum and minimum withdrawal limits aren’t fixed. They change due to the high volatility of cryptocurrency.","-1531269493":"We'll send you an email once your transaction has been processed.","-113940416":"Current stake:","-1999539705":"Deal cancel. fee:","-447037544":"Buy price:","-1342699195":"Total profit/loss:","-1511825574":"Profit/Loss:","-726626679":"Potential profit/loss:","-338379841":"Indicative price:","-2027409966":"Initial stake:","-1525144993":"Payout limit:","-1167474366":"Tick ","-555886064":"Won","-529060972":"Lost","-571642000":"Day","-155989831":"Decrement value","-1192773792":"Don't show this again","-1769852749":"N/A","-1572746946":"Asian Up","-686840306":"Asian Down","-2141198770":"Higher","-816098265":"Lower","-1646655742":"Spread Up","-668987427":"Spread Down","-912577498":"Matches","-1862940531":"Differs","-808904691":"Odd","-556230215":"Ends Outside","-1268220904":"Ends Between","-703542574":"Up","-1127399675":"Down","-768425113":"No Touch","-1163058241":"Stays Between","-1354485738":"Reset Call","-376148198":"Only Ups","-1337379177":"High Tick","-328036042":"Please enter a stop loss amount that's higher than the current potential loss.","-2127699317":"Invalid stop loss. Stop loss cannot be more than stake.","-590765322":"Unfortunately, this trading platform is not available for EU Deriv account. Please switch to a non-EU account to continue trading.","-2110207996":"Deriv Bot is unavailable for this account","-971295844":"Switch to another account","-1194079833":"Deriv Bot is not available for EU clients","-1223145005":"Loss amount: {{profit}}","-1062922595":"Reference ID (buy)","-2068574600":"Reference ID (sell)","-994038153":"Start Time","-1979852400":"Entry Spot","-427802309":"Profit/Loss","-668558002":"Journal.csv","-746652890":"Notifications","-824109891":"System","-749186458":"Account switching is disabled while your bot is running. Please stop your bot before switching accounts.","-662836330":"Would you like to keep your current contract or close it? If you decide to keep it running, you can check and close it later on the <0>Reports page.","-597939268":"Keep my contract","-1322453991":"You need to log in to run the bot.","-236548954":"Contract Update Error","-1428017300":"THE","-1450728048":"OF","-255051108":"YOU","-1845434627":"IS","-931434605":"THIS","-740712821":"A","-187634388":"This block is mandatory. Here is where you can decide if your bot should continue trading. Only one copy of this block is allowed.","-2105473795":"The only input parameter determines how block output is going to be formatted. In case if the input parameter is \"string\" then the account currency will be added.","-1800436138":"2. for \"number\": 1325.68","-530632460":"This block is used to determine if the market price moves in the selected direction or not. It gives you a value of \"True\" or \"False\".","-1875717842":"Examples:","-890079872":"1. If the selected direction is \"Rise\", and the previous tick value is less than the current tick value, the output will be \"True\". Otherwise, the output will be an empty string.","-489739641":"2. If the selected direction is \"Fall\", and the previous tick value is more than the current tick value, the output will be \"True\". Otherwise, the output will be an empty string.","-2116076360":"There are 4 message types:","-1421941045":"2. 'Warn' displays a message in yellow to highlight something that needs attention.","-277850921":"If \"Win\" is selected, it will return \"True\" if your last trade was successful. Otherwise, it will return an empty string.","-1918487001":"Example:","-2139916657":"1. In the below example the loop is terminated in case \"x\" is \"False\" even though only one iteration is complete","-1238900333":"2. In the below example the loop jumps to the next iteration without executing below block in case if \"x\" is \"False\"","-1729479576":"You can use \"i\" inside the loop, for example to access list items","-1474636594":"In this example, the loop will repeat three times, as that is the number of items in the given list. During each iteration, the variable \"i\" will be assigned a value from the list. ","-908772734":"This block evaluates a statement and will perform an action only when the statement is true.","-334040831":"2. In this example, the instructions are repeated as long as the value of x is greater than or equal to 10. Once the value of x drops below 10, the loop is terminated.","-444267958":"\"Seconds Since Epoch\" block returns the number of seconds since January 1st, 1970.","-447522129":"You might need it when you want to repeat an actions after certain amount of time.","-1488259879":"The term \"candle\" refers to each bar on the candlestick chart. Each candle represents four market prices for the selected time interval:","-2020693608":"Each candlestick on the chart represents 4 market prices for the selected time interval:","-62728852":"- Open price: the opening price","-1247744334":"- Low price: the lowest price","-1386365697":"- Close price: the closing price","-1498732382":"A black (or red) candle indicates that the open price is higher than the close price. This represents a downward movement of the market price.","-1871864755":"This block gives you the last digit of the latest tick value of the selected market. If the latest tick value is 1410.90, this block will return 0. It’s useful for digit-based contracts such as Even/Odd, Matches/Differs, or Higher/Lower.","-1029671512":"In case if the \"OR\" operation is selected, the block returns \"True\" in case if one or both given values are \"True\"","-210295176":"Available operations:","-1385862125":"- Addition","-983721613":"- Subtraction","-854750243":"- Multiplication","-1394815185":"In case if the given number is less than the lower boundary of the range, the block returns the lower boundary value. Similarly, if the given number is greater than the higher boundary, the block will return the higher boundary value. In case if the given value is between boundaries, the block will return the given value unchanged.","-1034564248":"In the below example the block returns the value of 10 as the given value (5) is less than the lower boundary (10)","-2009817572":"This block performs the following operations to a given number","-671300479":"Available operations are:","-514610724":"- Absolute","-1923861818":"- Euler’s number (2.71) to the power of a given number","-1556344549":"Here’s how:","-1061127827":"- Visit the following URL, make sure to replace with the Telegram API token you created in Step 1: https://api.telegram.org/bot/getUpdates","-311389920":"In this example, the open prices from a list of candles are assigned to a variable called \"cl\".","-1460794449":"This block gives you a list of candles within a selected time interval.","-1634242212":"Used within a function block, this block returns a value when a specific condition is true.","-2012970860":"This block gives you information about your last contract.","-1504783522":"You can choose to see one of the following:","-10612039":"- Profit: the profit you’ve earned","-555996976":"- Entry time: the starting time of the contract","-1391071125":"- Exit time: the contract expiration time","-1961642424":"- Exit value: the value of the last tick of the contract","-111312913":"- Barrier: the barrier value of the contract (applicable to barrier-based trade types such as stays in/out, touch/no touch, etc.)","-674283099":"- Result: the result of the last contract: \"win\" or \"loss\"","-704543890":"This block gives you the selected candle value such as open price, close price, high price, low price, and open time. It requires a candle as an input parameter.","-482281200":"In the example below, the open price is assigned to the variable \"op\".","-364621012":"This block gives you the specified candle value for a selected time interval. You can choose which value you want:","-232477769":"- Open: the opening price","-610736310":"Use this block to sell your contract at the market price. Selling your contract is optional. You may choose to sell if the market trend is unfavourable.","-1307657508":"This block gives you the potential profit or loss if you decide to sell your contract. It can only be used within the \"Sell conditions\" root block.","-1921072225":"In the example below, the contract will only be sold if the potential profit or loss is more than the stake.","-955397705":"SMA adds the market price in a list of ticks or candles for a number of time periods, and divides the sum by that number of time periods.","-1424923010":"where n is the number of periods.","-1835384051":"What SMA tells you","-749487251":"SMA serves as an indicator of the trend. If the SMA points up then the market price is increasing and vice versa. The larger the period number, the smoother SMA line is.","-1996062088":"In this example, each point of the SMA line is an arithmetic average of close prices for the last 10 days.","-1866751721":"Input list accepts a list of ticks or candles, while period is the specified time period.","-1097076512":"You may compare SMA values calculated on every bot run to identify the market trend direction. Alternatively, you may also use a variation of the SMA block, the Simple Moving Average Array block. ","-1254849504":"If a period of 10 is entered, the Simple Moving Average Array block will return a list of SMA values calculated based on period of 10.","-1190046167":"This block displays a dialog box with a customised message. When the dialog box is displayed, your strategy is paused and will only resume after you click \"OK\".","-859028989":"In this example, the date and time will be displayed in a green notification box.","-1452086215":"In this example, a Rise contract will be purchased at midnight on 1 August 2019.","-1765276625":"Click the multiplier drop-down menu and choose the multiplier value you want to trade with.","-1872233077":"Your potential profit will be multiplied by the multiplier value you’ve chosen.","-614454953":"To learn more about multipliers, please go to the <0>Multipliers page.","-2078588404":"Select your desired market and asset type. For example, Forex > Major pairs > AUD/JPY","-2037446013":"2. Trade Type","-533927844":"Select your desired trade type. For example, Up/Down > Rise/Fall","-1192411640":"4. Default Candle Interval","-485434772":"8. Trade Options","-1827646586":"This block assigns a given value to a variable, creating the variable if it doesn't already exist.","-254421190":"List: ({{message_length}})","-1616649196":"results","-90107030":"No results found","-984140537":"Add","-1373954791":"Should be a valid number","-1278608332":"Please enter a number between 0 and {{api_max_losses}}.","-287597204":"Enter limits to stop your bot from trading when any of these conditions are met.","-1445989611":"Limits your potential losses for the day across all Deriv platforms.","-152878438":"Maximum number of trades your bot will execute for this run.","-1490942825":"Apply and run","-1442034178":"Contract bought","-2020280751":"Bot is stopping","-1436403979":"Contract closed","-1711732508":"Reference IDs","-386141434":"(Buy)","-482272687":"(Sell)","-1983189496":"ticks","-694277729":"(High)","-2028564707":"(Low)","-627895223":"Exit spot","-596238067":"Entry/Exit spot","-558594655":"The bot is not running","-478946875":"The stats are cleared","-1842451303":"Welcome to Deriv Bot!","-1391310674":"Check out these guides and FAQs to learn more about building your bot:","-2066779239":"FAQs","-280324365":"What is Deriv Bot?","-1016171176":"Asset","-621128676":"Trade type","-447853970":"Loss threshold","-507620484":"Unsaved","-764102808":"Google Drive","-1696412885":"Import","-320197558":"Sort blocks","-1566369363":"Zoom out","-1285759343":"Search","-1291088318":"Purchase conditions","-112876186":"Analysis","-1769584466":"Stats","-1133736197":"Utility","-1682372359":"Text","-907562847":"Lists","-1646497683":"Loops","-251326965":"Miscellaneous","-934909826":"Load strategy","-1692205739":"Import a bot from your computer or Google Drive, build it from scratch, or start with a quick strategy.","-1545070554":"Delete bot","-1972599670":"Your bot will be permanently deleted when you hit ","-1692956623":"Yes, delete.","-573479616":"Are you sure you want to delete it?","-786915692":"You are connected to Google Drive","-1256971627":"To import your bot from your Google Drive, you'll need to sign in to your Google account.","-1233084347":"To know how Google Drive handles your data, please review Deriv’s <0>Privacy policy.","-1150107517":"Connect","-1150390589":"Last modified","-1393876942":"Your bots:","-767342552":"Enter your bot name, choose to save on your computer or Google Drive, and hit ","-1372891985":"Save.","-1003476709":"Save as collection","-636521735":"Save strategy","-1953880747":"Stop my bot","-1899230001":"Stopping the current bot will load the Quick Strategy you just created to the workspace.","-2131847097":"Any open contracts can be viewed on the ","-563774117":"Dashboard","-939764287":"Charts","-1793577405":"Build from scratch","-358753028":"Create your bot using our drag-and-drop blocks or click Quick Strategy to choose from the ready-to-use bot templates.","-1212601535":"Monitor the market","-21136101":"See how your bot is doing in real-time.","-631097919":"Click <0>Run when you want to start trading, and click <0>Stop when you want to stop.","-1999747212":"Want to retake the tour?","-129587613":"Got it, thanks!","-782992165":"Step 1 :","-1207872534":"First, set the <0>Trade parameters block.","-1656388044":"First, set <0>Market to Derived > Continuous Indices > Volatility 100 (1s) Index.","-1706298865":"Then, set <0>Trade type to Up/Down > Rise/Fall.","-1834358537":"For <0>Default candle interval, set it to 1 minute","-1940971254":"For <0>Trade options, set it as below:","-512839354":"<0>Stake: USD 10 (min: 0.35 - max: 50000)","-753745278":"Step 2 :","-1056713679":"Then, set the <0>Purchase conditions block.","-245497823":"<0>2. Purchase conditions:","-916770284":"<0>Purchase: Rise","-758077259":"Step 3 :","-677396944":"Step 4 :","-295975118":"Next, go to <0>Utility tab under the Blocks menu. Tap the drop-down arrow and hit <0>Loops.","-698493945":"Step 5 :","-1992994687":"Now, tap the <0>Analysis drop-down arrow and hit <0>Contract.","-1844492873":"Go to the <0>Last trade result block and click + icon to add the <0>Result is Win block to the workspace.","-1547091772":"Then, drag the <0>Result is win into the empty slot next to <0>repeat until block.","-736400802":"Step 6 :","-732067680":"Finally, drag and add the whole <0>Repeat block to the <0>Restart trading conditions block.","-1411787252":"Step 1","-1127164953":"Hi! Hit <0>Start for a quick tour.","-1109191651":"Must be a number higher than 0","-689786738":"Minimum duration: {{ min }}","-184183432":"Maximum duration: {{ max }}","-1494924808":"The value must be equal to or greater than 2.","-1823621139":"Quick Strategy","-1778025545":"You’ve successfully imported a bot.","-563921656":"Bot Builder guide","-1109392787":"Learn how to build your bot from scratch using a simple strategy.","-1263822623":"You can import a bot from your mobile device or from Google drive, see a preview in the bot builder, and start trading by running the bot.","-358288026":"Note: You can also find this tutorial in the <0>Tutorials tab.","-683790172":"Now, <0>run the bot to test out the strategy.","-1519425996":"No results found \"{{ faq_search_value }}\"","-155173714":"Let’s build a bot!","-1919212468":"3. You can also search for the blocks you want using the search bar above the categories.","-1520558271":"For more info, check out this blog post on the basics of building a trading bot.","-980360663":"3. Choose the block you want and drag it to the workspace.","-1493168314":"What is a quick strategy?","-1680391945":"Using a quick strategy","-1177914473":"How do I save my strategy?","-271986909":"In Bot Builder, hit Save on the toolbar at the top to download your bot. Give your bot a name, and choose to download your bot to your device or Google Drive. Your bot will be downloaded as an XML file.","-1149045595":"1. After hitting Import, select Local and click Continue.","-288041546":"2. Select your XML file and hit Open.","-2127548288":"3. Your bot will be loaded accordingly.","-1311297611":"1. After hitting Import, select Google Drive and click Continue.","-1549564044":"How do I reset the workspace?","-1127331928":"In Bot Builder, hit Reset on the toolbar at the top. This will clear the workspace. Please note that any unsaved changes will be lost.","-1720444288":"How do I control my losses with Deriv Bot?","-1142295124":"There are several ways to control your losses with Deriv Bot. Here’s a simple example of how you can implement loss control in your strategy:","-986689483":"1. Create the following variables:","-269910127":"3. Update current profit/loss with the profit from the last contract. If the last contract was lost, the value of current profit/loss will be negative.","-1565344891":"Can I run Deriv Bot on multiple tabs in my web browser?","-90192474":"Yes, you can. However, there are limits on your account, such as maximum number of open positions and maximum aggregate payouts on open positions. So, just keep these limits in mind when opening multiple positions. You can find more info about these limits at Settings > Account limits.","-213872712":"No, we don't offer cryptocurrencies on Deriv Bot.","-2147346223":"In which countries is Deriv Bot available?","-352345777":"What are the most popular strategies for automated trading?","-552392096":"Three of the most commonly used strategies in automated trading are Martingale, D'Alembert, and Oscar's Grind — you can find them all ready-made and waiting for you in Deriv Bot.","-418247251":"Download your journal.","-870004399":"<0>Bought: {{longcode}} (ID: {{transaction_id}})","-1211474415":"Filters","-186972150":"There are no messages to display","-999254545":"All messages are filtered out","-1121028020":"or, if you prefer...","-254025477":"Select an XML file from your device","-1131095838":"Please upload an XML file","-523928088":"Create one or upload one from your local drive or Google Drive.","-1684205190":"Why can't I see my recent bots?","-2050879370":"1. Logged in from a different device","-811857220":"3. Cleared your browser cache","-625024929":"Leaving already?","-584289785":"No, I'll stay","-1435060006":"If you leave, your current contract will be completed, but your bot will stop running immediately.","-783058284":"Total stake","-2077494994":"Total payout","-1073955629":"No. of runs","-1729519074":"Contracts lost","-42436171":"Total profit/loss","-1137823888":"Total payout since you last cleared your stats.","-992662695":"The number of times your bot has run since you last cleared your stats. Each run includes the execution of all the root blocks.","-1382491190":"Your total profit/loss since you last cleared your stats. It is the difference between your total payout and your total stake.","-24780060":"When you’re ready to trade, hit ","-2147110353":". You’ll be able to track your bot’s performance here.","-2140412463":"Buy price","-1299484872":"Account","-2004386410":"Win","-266502731":"Transactions detailed summary","-1717650468":"Online","-1825471709":"A whole new trading experience on a powerful yet easy to use platform.","-981017278":"Automated trading at your fingertips. No coding needed.","-1309011360":"Open positions","-1597214874":"Trade table","-1929724703":"Compare CFD accounts","-883103549":"Account deactivated","-1837059346":"Buy / Sell","-1845037007":"Advertiser's page","-494667560":"Orders","-679691613":"My ads","-821418875":"Trader","-679102561":"Contract Details","-430118939":"Complaints policy","-568280383":"Deriv Gaming","-895331276":"Complete your proof of address","-782679300":"Complete your proof of identity","-579984289":"Derived Demo","-1596515467":"Derived BVI","-222394569":"Derived Vanuatu","-533935232":"Financial BVI","-565431857":"Financial Labuan","-291535132":"Swap-Free Demo","-1472945832":"Swap-Free SVG","-144803045":"Only numbers and these special characters are allowed: {{permitted_characters}}","-1450516268":"Only letters, numbers, space, hyphen, period, and apostrophe are allowed.","-1966032552":"The length of token should be 8.","-2128137611":"Should start with letter or number, and may contain hyphen and underscore.","-1590869353":"Up to {{decimal_count}} decimal places are allowed.","-2061307421":"Should be more than {{min_value}}","-1099941162":"Should be less than {{max_value}}","-1528188268":"Straight rows of keys are easy to guess","-1339903234":"Short keyboard patterns are easy to guess","-23980798":"Repeats like \"aaa\" are easy to guess","-235760680":"Avoid repeated words and characters","-1568933154":"Sequences like abc or 6543 are easy to guess","-725663701":"Avoid sequences","-1450768475":"Recent years are easy to guess","-1804838610":"Avoid years that are associated with you","-64849469":"Dates are often easy to guess","-2006915194":"Avoid dates and years that are associated with you","-2124205211":"A word by itself is easy to guess","-1095202689":"All-uppercase is almost as easy to guess as all-lowercase","-2137856661":"Reversed words aren't much harder to guess","-1885413063":"Predictable substitutions like '@' instead of 'a' don't help very much","-369258265":"This password is on the blacklist","-681468758":"Your web browser is out of date and may affect your trading experience. Please <0>update your browser.","-577777971":"You have reached the rate limit of requests per second. Please try later.","-206321775":"Fiat","-522767852":"DEMO","-433761292":"Switching to default account.","-405439829":"Sorry, you can't view this contract because it doesn't belong to this account.","-1590712279":"Gaming","-16448469":"Virtual","-540474806":"Your Options account is scheduled to be closed","-618539786":"Your account is scheduled to be closed","-945275490":"Withdraw all funds from your Options account.","-2093768906":"{{name}} has released your funds.
Would you like to give your feedback?","-705744796":"Your demo account balance has reached the maximum limit, and you will not be able to place new trades. Reset your balance to continue trading from your demo account.","-2063700253":"disabled","-800774345":"Power up your Financial trades with intuitive tools from Acuity.","-279582236":"Learn More","-1211460378":"Power up your trades with Acuity","-703292251":"Download intuitive trading tools to keep track of market events. The Acuity suite is only available for Windows, and is most recommended for financial assets.","-1585069798":"Please click the following link to complete your Appropriateness Test.","-1287141934":"Find out more","-367759751":"Your account has not been verified","-596690079":"Enjoy using Deriv?","-265932467":"We’d love to hear your thoughts","-1815573792":"Drop your review on Trustpilot.","-823349637":"Go to Trustpilot","-1204063440":"Set my account currency","-1601813176":"Would you like to increase your daily limits to {{max_daily_buy}} {{currency}} (buy) and {{max_daily_sell}} {{currency}} (sell)?","-1751632759":"Get a faster mobile trading experience with the <0>{{platform_name_go}} app!","-1164554246":"You submitted expired identification documents","-219846634":"Let’s verify your ID","-529038107":"Install","-1738575826":"Please switch to your real account or create one to access the cashier.","-1329329028":"You’ve not set your 30-day turnover limit","-132893998":"Your access to the cashier has been temporarily disabled as you have not set your 30-day turnover limit. Please go to Self-exclusion and set the limit.","-1852207910":"MT5 withdrawal disabled","-764323310":"MT5 withdrawals have been disabled on your account. Please check your email for more details.","-1902997828":"Refresh now","-753791937":"A new version of Deriv is available","-1775108444":"This page will automatically refresh in 5 minutes to load the latest version.","-1175685940":"Please contact us via live chat to enable withdrawals.","-493564794":"Please complete your financial assessment.","-1125797291":"Password updated.","-157145612":"Please log in with your updated password.","-1728185398":"Resubmit proof of address","-612396514":"Please resubmit your proof of address.","-1519764694":"Your proof of address is verified.","-1961967032":"Resubmit proof of identity","-117048458":"Please submit your proof of identity.","-1196422502":"Your proof of identity is verified.","-136292383":"Your proof of address verification is pending","-386909054":"Your proof of address verification has failed","-430041639":"Your proof of address did not pass our verification checks, and we’ve placed some restrictions on your account. Please resubmit your proof of address.","-87177461":"Please go to your account settings and complete your personal details to enable deposits.","-904632610":"Reset your balance","-470018967":"Reset balance","-156611181":"Please complete the financial assessment in your account settings to unlock it.","-1925176811":"Unable to process withdrawals in the moment","-980696193":"Withdrawals are temporarily unavailable due to system maintenance. You can make withdrawals when the maintenance is complete.","-1647226944":"Unable to process deposit in the moment","-488032975":"Deposits are temporarily unavailable due to system maintenance. You can make deposits when the maintenance is complete.","-2136953532":"Scheduled cashier maintenance","-849587074":"You have not provided your tax identification number","-47462430":"This information is necessary for legal and regulatory requirements. Please go to your account settings, and fill in your latest tax identification number.","-2067423661":"Stronger security for your Deriv account","-1719731099":"With two-factor authentication, you’ll protect your account with both your password and your phone - so only you can access your account, even if someone knows your password.","-949074612":"Please contact us via live chat.","-2087822170":"You are offline","-1669693571":"Check your connection.","-1706642239":"<0>Proof of ownership <1>required","-553262593":"<0><1>Your account is currently locked <2><3>Please upload your proof of <4>ownership to unlock your account. <5>","-1834929362":"Upload my document","-1043638404":"<0>Proof of ownership <1>verification failed","-1766760306":"<0><1>Please upload your document <2>with the correct details. <3>","-8892474":"Start assessment","-1330929685":"Please submit your proof of identity and proof of address to verify your account and continue trading.","-99461057":"Please submit your proof of address to verify your account and continue trading.","-577279362":"Please submit your proof of identity to verify your account and continue trading.","-197134911":"Your proof of identity is expired","-152823394":"Your proof of identity has expired. Please submit a new proof of identity to verify your account and continue trading.","-420930276":"Follow these simple instructions to fix it.","-2142540205":"It appears that the address in your document doesn’t match the address in your Deriv profile. Please update your personal details now with the correct address.","-482715448":"Go to Personal details","-2072411961":"Your proof of address has been verified","-384887227":"Update the address in your profile.","-448961363":"non-EU","-1998049070":"If you agree to our use of cookies, click on Accept. For more information, <0>see our policy.","-2061807537":"Something’s not right","-402093392":"Add Deriv Account","-277547429":"A Deriv account will allow you to fund (and withdraw from) your MT5 account(s).","-1721181859":"You’ll need a {{deriv_account}} account","-1989074395":"Please add a {{deriv_account}} account first before adding a {{dmt5_account}} account. Deposits and withdrawals for your {{dmt5_label}} account are done by transferring funds to and from your {{deriv_label}} account.","-689237734":"Proceed","-1642457320":"Help centre","-1966944392":"Network status: {{status}}","-594209315":"Synthetic indices in the EU are offered by {{legal_entity_name}}, W Business Centre, Level 3, Triq Dun Karm, Birkirkara BKR 9033, Malta, licensed and regulated by the Malta Gaming Authority (<0>licence no. MGA/B2C/102/2000) and by the Revenue Commissioners for clients in Ireland (<2>licence no. 1010285).","-181484419":"Responsible trading","-650505513":"Full screen","-1823504435":"View notifications","-1954045170":"No currency assigned","-583559763":"Menu","-1591792668":"Account Limits","-34495732":"Regulatory information","-1496158755":"Go to Deriv.com","-1323441180":"I hereby confirm that my request for opening an account with Deriv to trade OTC products issued and offered exclusively outside Brazil was initiated by me. I fully understand that Deriv is not regulated by CVM and by approaching Deriv I intend to set up a relation with a foreign company.","-1396326507":"Unfortunately, {{website_name}} is not available in your country.","-1019903756":"Synthetic","-288996254":"Unavailable","-735306327":"Manage accounts","-1310654342":"As part of the changes in our product line-up, we will be closing Gaming accounts belonging to our UK clients.","-626152766":"As part of the changes in our product line-up, we are closing Options accounts belonging to our clients in Europe.","-490100162":"As part of the changes in our product line-up, we will be closing accounts belonging to our Isle of Man clients.","-1208958060":"You can no longer trade digital options on any of our platforms. You also can’t deposit funds into your account.<0/><1/>Any open positions on digital options have been closed with full payout.","-2050417883":"You’ll lose access to your Gaming account when it gets closed, so make sure to withdraw your funds as soon as possible.","-1950045402":"Withdraw all your funds","-168971942":"What this means for you","-905560792":"OK, I understand","-1308593541":"You will lose access to your account when it gets closed, so be sure to withdraw all your funds.","-2024365882":"Explore","-1197864059":"Create free demo account","-1813972756":"Account creation paused for 24 hours","-366030582":"Sorry, you're unable to create an account at this time. As you declined our previous risk warnings, we need you to wait for 24 hours after your first account creation attempt before you can proceed.<0/><0/>","-534047566":"Thank you for your understanding. You can create your account on {{real_account_unblock_date}} or later.","-399816343":"Trading Experience Assessment<0/>","-1822498621":"As per our regulatory obligations, we are required to assess your trading knowledge and experience.<0/><0/>Please click ‘OK’ to continue","-71049153":"Keep your account secure with a password","-1861974537":"Strong passwords contain at least 8 characters, combine uppercase and lowercase letters, numbers, and symbols.","-1485242688":"Step {{step}}: {{step_title}} ({{step}} of {{steps}})","-1829842622":"You can open an account for each cryptocurrency.","-987221110":"Choose a currency you would like to trade with.","-1066574182":"Choose a currency","-1914534236":"Choose your currency","-200560194":"Please switch to your {{fiat_currency}} account to change currencies.","-1829493739":"Choose the currency you would like to trade with.","-1814647553":"Add a new","-1269362917":"Add new","-650480777":"crypto account","-175638343":"Choose an account or add a new one","-1768223277":"Your account is ready","-1215717784":"<0>You have successfully changed your currency to {{currency}}.<0>Make a deposit now to start trading.","-786091297":"Trade on demo","-228099749":"Please verify your identity and address","-1041852744":"We're processing your personal information","-1775006840":"Make a deposit now to start trading.","-983734304":"We need proof of your identity and address before you can start trading.","-917733293":"To get trading, please confirm where you live.","-1282628163":"You'll be able to get trading as soon as verification is complete.","-952649119":"Log In","-3815578":"Sign Up","-1456176427":"Set a currency for your real account","-1557011219":"Add a real Deriv Options account","-241733171":"Add a Deriv Financial account","-1329687645":"Create a cryptocurrency account","-1429178373":"Create a new account","-1740162250":"Manage account","-1016775979":"Choose an account","-1362081438":"Adding more real accounts has been restricted for your country.","-1602122812":"24-hour Cool Down Warning","-1519791480":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the risk of losing your money. <0/><0/>\n As you have declined our previous warning, you would need to wait 24 hours before you can proceed further.","-1010875436":"CFDs and other financial instruments come with a high risk of losing money rapidly due to leverage. You should consider whether you understand how CFDs and other financial instruments work and whether you can afford to take the high risk of losing your money. <0/><0/> To continue, kindly note that you would need to wait 24 hours before you can proceed further.","-1725418054":"By clicking ‘Accept’ and proceeding with the account opening, you should note that you may be exposing yourself to risks. These risks, which may be significant, include the risk of losing the entire sum invested, and you may not have the knowledge and experience to properly assess or mitigate them.","-1369294608":"Already signed up?","-730377053":"You can’t add another real account","-2100785339":"Invalid inputs","-617844567":"An account with your details already exists.","-292363402":"Trading statistics report","-1656860130":"Options trading can become a real addiction, as can any other activity pushed to its limits. To avoid the danger of such an addiction, we provide a reality-check that gives you a summary of your trades and accounts on a regular basis.","-28080461":"Would like to check your statement first? <0>Check Statement","-611059051":"Please specify your preferred interval reality check in minutes:","-1876891031":"Currency","-11615110":"Turnover","-1370419052":"Profit / Loss","-437320982":"Session duration:","-3959715":"Current time:","-1534648620":"Your password has been changed","-596199727":"We will now redirect you to the login page.","-310434518":"The email input should not be empty.","-437918412":"No currency assigned to your account","-1193651304":"Country of residence","-707550055":"We need this to make sure our service complies with laws and regulations in your country.","-280139767":"Set residence","-601615681":"Select theme","-1152511291":"Dark","-1428458509":"Light","-1976089791":"Your Deriv account has been unlinked from your {{social_identity_provider}} account. You can now log in to Deriv using your new email address and password.","-505449293":"Enter a new password for your Deriv account.","-1728963310":"Stop creating an account?","-703818088":"Only log in to your account at this secure link, never elsewhere.","-1235799308":"Fake links often contain the word that looks like \"Deriv\" but look out for these differences.","-2102997229":"Examples","-82488190":"I've read the above carefully.","-97775019":"Do not trust and give away your credentials on fake websites, ads or emails.","-2142491494":"OK, got it","-611136817":"Beware of fake links.","-1787820992":"Platforms","-1793883644":"Trade FX and CFDs on a customisable, easy-to-use trading platform.","-184713104":"Earn fixed payouts with options, or trade multipliers to amplify your gains with limited risk.","-1571775875":"Our flagship options and multipliers trading platform.","-895091803":"If you're looking for CFDs","-1447215751":"Not sure? Try this","-2338797":"<0>Maximise returns by <0>risking more than you put in.","-1682067341":"Earn <0>fixed returns by <0>risking only what you put in.","-1744351732":"Not sure where to start?","-943710774":"This complaints policy, which may change from time to time, applies to your account registered with {{legal_entity_name}}, having its registered office address at First Floor, Millennium House, Victoria Road, Douglas, Isle of Man, IM2 4RW, licensed and regulated respectively by (1) the Gambling Supervision Commission in the Isle of Man (current <0>licence issued on 31 August 2017) and (2) the Gambling Commission in the UK (<1>licence no. 39172).","-255056078":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name}}, having its registered office address at W Business Centre, Level 3, Triq Dun Karm, Birkirkara, BKR 9033, Malta, licensed and regulated by the Malta Gaming Authority in Malta for gambling products only, <0>licence no. MGA/B2C/102/2000, and for clients residing in the UK by the UK Gambling Commission (account number 39495).","-1941013000":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}}, {{legal_entity_name_fx}}, and {{legal_entity_name_v}}.","-594812204":"This complaints policy, which may change from time to time, applies to your account(s) registered with {{legal_entity_name_svg}}.","-813256361":"We are committed to treating our clients fairly and providing them with excellent service.<0/><1/>We would love to hear from you on how we can improve our services to you. Any information you provide will be treated in the strictest confidence. Rest assured that you will be heard, valued, and always treated fairly.","-1622847732":"If you have an inquiry regarding your trading account with {{legal_entity_name}}, you can contact us through our <0>Help centre or by chatting with a representative via <1>Live Chat.<2/><3/>We are committed to resolving your query in the quickest time possible and appreciate your patience in allowing us time to resolve the matter.<4/><5/>We strive to provide the best possible service and support to our customers. However, in the event that we are unable to resolve your query or if you feel that our response is unsatisfactory, we want to hear from you. We welcome and encourage you to submit an official complaint to us so that we can review your concerns and work towards a resolution.","-1639808836":"If you are not satisfied with the outcome, you can escalate your complaint to the <0>Independent Betting Adjudication Service (IBAS) by filling the IBAS adjudication form. Please note that IBAS only deals with disputes that result from transactions.","-1505742956":"<0/><1/>You can also refer your dispute to the Malta Gaming Authority via the <2>Player Support Unit.","-1406192787":"If you are not satisfied with the outcome, you can escalate your complaint to the <0>Financial Commission.","-1776547326":"<0/><1/>If you reside in the UK and you are unhappy with our response you may escalate your complaint to the <2>Financial Ombudsman Service.","-2115348800":"1. Introduction","-744009523":"2. Fair treatment","-866831420":"3.1. Submission of a complaint","-1102904026":"3.2. Handling your complaint","-603378979":"3.3. Resolving your complaint","-697569974":"3.4. Your decision","-1280998762":"4. Complaints","-1886635232":"A complaint is any expression of dissatisfaction by a client regarding our products or services that requires a formal response.<0/><1/>If what you submit does not fall within the scope of a complaint, we may reclassify it as a query and forward it to the relevant department for handling. However, if you believe that your query should be classified as a complaint due to its relevance to the investment services provided by {{legal_entity_name}}, you may request that we reclassify it accordingly.","-1771496016":"To submit a complaint, please send an email to <0>complaints@deriv.com, providing as much detail as possible. To help us investigate and resolve your complaint more efficiently, please include the following information:","-1197243525":"<0>•A clear and detailed description of your complaint, including any relevant dates, times, and transactions","-1795134892":"<0>•Any relevant screenshots or supporting documentation that will assist us in understanding the issue","-2053887036":"4.4. Handling your complaint","-717170429":"Once we have received the details of your complaint, we shall review it carefully and keep you updated on the handling process. We might request further information or clarifications to facilitate the resolution of the complaint.","-1841922393":"4.5. Resolving your complaint","-1327119795":"4.6. Your decision","-2019654103":"If we are unable to resolve your complaint or you are not satisfied with the outcome, you can escalate your complaint to the Office of the Arbiter for Financial Services.<0/><1/><2>Filing complaints with the Office of the Arbiter for Financial Services","-687172857":"<0>•You may file a complaint with the Arbiter for Financial Services only if you are not satisfied with our decision or the decision wasn’t made within 15 business days.","-262934706":"<0>•If the complaint is accepted by the Arbiter, you will receive another email with further details relating to the payment of the €25 complaint fee and the processes that follow.","-993572476":"<0>b.The Financial Commission has 5 days to acknowledge that your complaint was received and 14 days to answer the complaint through our Internal Dispute Resolution (IDR) procedure.","-1769159081":"<0>c.You will be able to file a complaint with the Financial Commission only if you are not satisfied with our decision or the decision wasn’t made within 14 days.","-58307244":"3. Determination phase","-356618087":"<0>b.The DRC may request additional information from you or us, who must then provide the requested information within 7 days.","-945718602":"<0>b.If you agree with a DRC decision, you will need to accept it within 14 days. If you do not respond to the DRC decision within 14 days, the complaint is considered closed.","-1500907666":"<0>d.If the decision is made in our favour, you must provide a release for us within 7 days of when the decision is made, and the complaint will be considered closed.","-429248139":"5. Disclaimer","-818926350":"The Financial Commission accepts appeals for 45 days following the date of the incident and only after the trader has tried to resolve the issue with the company directly.","-358055541":"Power up your trades with cool new tools","-29496115":"We've partnered with Acuity to give you a suite of intuitive trading tools for MT5 so you can keep track of market events and trends, free of charge!<0/><0/>","-648669944":"Download the Acuity suite and take advantage of the <1>Macroeconomic Calendar, Market Alerts, Research Terminal, and <1>Signal Centre Trade Ideas without leaving your MT5 terminal.<0/><0/>","-794294380":"This suite is only available for Windows, and is most recommended for financial assets.","-922510206":"Need help using Acuity?","-815070480":"Disclaimer: The trading services and information provided by Acuity should not be construed as a solicitation to invest and/or trade. Deriv does not offer investment advice. The past is not a guide to future performance, and strategies that have worked in the past may not work in the future.","-2111521813":"Download Acuity","-778309978":"The link you clicked has expired. Ensure to click the link in the latest email in your inbox. Alternatively, enter your email below and click <0>Resend email for a new link.","-336222114":"Follow these simple steps to fix it:","-1064116456":"Search for the broker <0>Deriv Holdings (Guernsey) Limited and select it.","-941870889":"The cashier is for real accounts only","-352838513":"It looks like you don’t have a real {{regulation}} account. To use the cashier, switch to your {{active_real_regulation}} real account, or get an {{regulation}} real account.","-1858915164":"Ready to deposit and trade for real?","-162753510":"Add real account","-1208519001":"You need a real Deriv account to access the cashier.","-175369516":"Welcome to Deriv X","-939154994":"Welcome to Deriv MT5 dashboard","-1667427537":"Run Deriv X on your browser or download the mobile app","-305915794":"Run MT5 from your browser or download the MT5 app for your devices","-404375367":"Trade forex, basket indices, commodities, and cryptocurrencies with high leverage.","-243985555":"Trade CFDs on forex, stocks, stock indices, synthetic indices, cryptocurrencies, and commodities with leverage.","-2030107144":"Trade CFDs on forex, stocks & stock indices, commodities, and crypto.","-705682181":"Malta","-409563066":"Regulator","-1302404116":"Maximum leverage","-2098459063":"British Virgin Islands","-1510474851":"British Virgin Islands Financial Services Commission (licence no. SIBA/L/18/1114)","-761250329":"Labuan Financial Services Authority (Licence no. MB/18/0024)","-1264604378":"Up to 1:1000","-1686150678":"Up to 1:100","-637908996":"100%","-1420548257":"20+","-1344709651":"40+","-1373949478":"50+","-1382029900":"70+","-1493055298":"90+","-523602297":"Forex majors","-1303090739":"Up to 1:1500","-19213603":"Metals","-1728334460":"Up to 1:300","-646902589":"(US_30, US_100, US_500)","-1835174654":"1:30","-1647612934":"Spreads from","-1587894214":"about verifications needed.","-466784048":"Regulator/EDR","-1920034143":"Synthetics, Baskets and Derived FX","-1326848138":"British Virgin Islands Financial Services Commission (License no. SIBA/L/18/1114)","-777580328":"Forex, Stocks, Stock indices, Commodities, and Cryptocurrencies","-1372141447":"Straight-through processing","-1969608084":"Forex and Cryptocurrencies","-800771713":"Labuan Financial Services Authority (licence no. MB/18/0024)","-1497128311":"80+","-1501230046":"0.6 pips","-1689815930":"You will need to submit proof of identity and address once you reach certain thresholds.","-1175785439":"Deriv (SVG) LLC (company no. 273 LLC 2020)","-235833244":"Synthetics, Forex, Stocks, Stock Indices, Cryptocurrencies, and ETFs","-139026353":"A selfie of yourself.","-70314394":"A recent utility bill (electricity, water or gas) or recent bank statement or government-issued letter with your name and address.","-435524000":"Verification failed. Resubmit during account creation.","-1385099152":"Your document is verified.","-931599668":"ETF","-651501076":"Derived - SVG","-865172869":"Financial - BVI","-1851765767":"Financial - Vanuatu","-558597854":"Financial - Labuan","-2052425142":"Swap-Free - SVG","-1192904361":"Deriv X Demo","-1269597956":"MT5 Platform","-239789243":"(License no. SIBA/L/18/1114)","-1434036215":"Demo Financial","-1416247163":"Financial STP","-1637969571":"Demo Swap-Free","-1882063886":"Demo CFDs","-1347908717":"Demo Financial SVG","-1780324582":"SVG","-785625598":"Use these credentials to log in to your {{platform}} account on the website and mobile apps.","-997127433":"Change Password","-1300381594":"Get Acuity trading tools","-860609405":"Password","-742647506":"Fund transfer","-1972393174":"Trade CFDs on our synthetics, baskets, and derived FX.","-1357917360":"Web terminal","-1454896285":"The MT5 desktop app is not supported by Windows XP, Windows 2003, and Windows Vista.","-810388996":"Download the Deriv X mobile app","-1727991510":"Scan the QR code to download the Deriv X Mobile App","-511301450":"Indicates the availability of cryptocurrency trading on a particular account.","-1647569139":"Synthetics, Baskets, Derived FX, Forex: standard/micro, Stocks, Stock indices, Commodities, Cryptocurrencies","-2102641225":"At bank rollover, liquidity in the forex markets is reduced and may increase the spread and processing time for client orders. This happens around 21:00 GMT during daylight saving time, and 22:00 GMT non-daylight saving time.","-495364248":"Margin call and stop out level will change from time to time based on market condition.","-536189739":"To protect your portfolio from adverse market movements due to the market opening gap, we reserve the right to decrease leverage on all offered symbols for financial accounts before market close and increase it again after market open. Please make sure that you have enough funds available in your {{platform}} account to support your positions at all times.","-712681566":"Peer-to-peer exchange","-1267880283":"{{field_name}} is required","-2084509650":"{{field_name}} is not properly formatted.","-1580554423":"Trade CFDs on our synthetic indices that simulate real-world market movements.","-1385484963":"Confirm to change your {{platform}} password","-1990902270":"This will change the password to all of your {{platform}} accounts.","-1922462747":"Trader's hub","-700260448":"demo","-1769158315":"real","-2015785957":"Compare CFDs {{demo_title}} accounts","-673424733":"Demo account","-1986258847":"Server maintenance starts at 01:00 GMT every Sunday, and this process may take up to 2 hours to complete. Service may be disrupted during this time.","-1199152768":"Please explore our other platforms.","-205020823":"Explore {{platform_name_trader}}","-1982499699":"Explore {{platform_name_dbot}}","-1567989247":"Submit your proof of identity and address","-184453418":"Enter your {{platform}} password","-393388362":"We’re reviewing your documents. This should take about 1 to 3 days.","-790488576":"Forgot password?","-535365199":"Enter your {{platform}} password to add a {{platform_name}} {{account}} account.","-2057918502":"Hint: You may have entered your Deriv password, which is different from your {{platform}} password.","-1936102840":"Congratulations, you have successfully created your {{category}} <0>{{platform}} <1>{{type}} {{jurisdiction_selected_shortcode}} account. ","-1928229820":"Reset Deriv X investor password","-1087845020":"main","-1950683866":"investor","-1874242353":"Fund top up","-89838213":"You can top up your demo account with an additional <0> if your balance is <1> or less.","-1211122723":"{{ platform }} {{ account_title }} account","-78895143":"Current balance","-149993085":"New current balance","-490244964":"Forex, stocks, stock indices, cryptocurrencies","-1368041210":", synthetic indices","-877064208":"EUR","-1318070255":"EUR/GBP","-1284221303":"You’ll get a warning, known as margin call, if your account balance drops down close to the stop out level.","-1848799829":"To understand stop out, first you need to learn about margin level, which is the ratio of your equity (the total balance you would have if you close all your positions at that point) to the margin you're using at the moment. If your margin level drops below our stop out level, your positions may be closed automatically to protect you from further losses.","-224051432":"24/7","-70716111":"FX-majors (standard/micro lots), FX-minors, basket indices, commodities, cryptocurrencies, and stocks and stock indices","-1041629137":"FX-majors, FX-minors, FX-exotics, and cryptocurrencies","-287097947":"FX-majors (standard/micro lots), FX-minors, Commodities, Cryptocurrencies (except UK)","-2016975615":"Deriv MT5 CFDs real account","-1207265427":"Compare CFDs real accounts","-1225160479":"Compare available accounts","-266701451":"derivX wordmark","-2145356061":"Download Deriv X on your phone to trade with the Deriv X account","-251202291":"Broker","-81650212":"MetaTrader 5 web","-2123571162":"Download","-941636117":"MetaTrader 5 Linux app","-637537305":"Download {{ platform }} on your phone to trade with the {{ platform }} {{ account }} account","-678964540":"to","-206829624":"(1:x)","-616293830":"Enjoy dynamic leverage of <0>up to 1:1500 when trading selected instruments in the forex, commodities, cryptocurrencies, and stock indices markets. Our dynamic leverage adjusts automatically to your trading position, based on asset type and trading volume.","-2042845290":"Your investor password has been changed.","-1882295407":"Your password has been changed.","-254497873":"Use this password to grant viewing access to another user. While they may view your trading account, they will not be able to trade or take any other actions.","-161656683":"Current investor password","-374736923":"New investor password","-1793894323":"Create or reset investor password","-2026018074":"Add your Deriv MT5 <0>{{account_type_name}} account under Deriv (SVG) LLC (company no. 273 LLC 2020).","-162320753":"Add your Deriv MT5 <0>{{account_type_name}} account under Deriv (BVI) Ltd, regulated by the British Virgin Islands Financial Services Commission (License no. SIBA/L/18/1114).","-271828350":"Get more out of Deriv MT5 Financial","-2125860351":"Choose a jurisdiction for your Deriv MT5 CFDs account","-479119833":"Choose a jurisdiction for your Deriv MT5 {{account_type}} account","-450424792":"You need a real account (fiat currency or cryptocurrency) in Deriv to create a real Deriv MT5 account.","-1760596315":"Create a Deriv account","-235472388":"Deriv {{platform}} {{is_demo}}","-525896186":"Download Deriv GO on your phone to trade with the Deriv EZ account","-346502452":"Download Deriv cTrader on your phone to trade with the Deriv cTrader account","-1396757256":"Run Deriv cTrader on your browser","-648956272":"Use this password to log in to your Deriv X accounts on the web and mobile apps.","-1814308691":"Please click on the link in the email to change your {{platform}} password.","-601303096":"Scan the QR code to download Deriv {{ platform }}.","-1282933308":"Not {{barrier}}","-968190634":"Equals {{barrier}}","-1747377543":"Under {{barrier}}","-1455298001":"Now","-256210543":"Trading is unavailable at this time.","-1150099396":"We’re working to have this available for you soon. If you have another account, switch to that account to continue trading. You may add a Deriv MT5 Financial.","-28115241":"{{platform_name_trader}} is not available for this account","-453920758":"Go to {{platform_name_mt5}} dashboard","-402175529":"History","-902712434":"Deal cancellation","-988484646":"Deal cancellation (executed)","-444882676":"Deal cancellation (active)","-13423018":"Reference ID","-2035315547":"Low barrier","-1551639437":"No history","-1214703885":"You have yet to update either take profit or stop loss","-504849554":"It will reopen at","-59803288":"In the meantime, try our synthetic indices. They simulate real-market volatility and are open 24/7.","-1278109940":"See open markets","-694105443":"This market is closed","-439389714":"We’re working on it","-770929448":"Go to {{platform_name_smarttrader}}","-590131162":"Stay on {{website_domain}}","-1444663817":"Go to Binary.com","-1526466612":"You’ve selected a trade type that is currently unsupported, but we’re working on it.","-1043795232":"Recent positions","-1572796316":"Purchase price:","-1694314813":"Contract value:","-153220091":"{{display_value}} Tick","-802374032":"Hour","-2039780875":"Purchase confirmation","-1672470173":"Require confirmation before purchasing a contract","-1342661765":"Lock contract purchase buttons","-351875097":"Number of ticks","-729830082":"View less","-149836494":"Your transaction reference number is {{transaction_id}}","-1382749084":"Go back to trading","-1231210510":"Tick","-1239477911":"second","-1585766960":"min","-1652791614":"mins","-1977959027":"hours","-442488432":"day","-337314714":"days","-8998663":"Digit: {{last_digit}} ","-1435392215":"About deal cancellation","-2017825013":"Got it","-1280319153":"Cancel your trade anytime within a chosen time-frame. Triggered automatically if your trade reaches the stop out level within the chosen time-frame.","-471757681":"Risk management","-843831637":"Stop loss","-771725194":"Deal Cancellation","-338707425":"Minimum duration is 1 day","-1003473648":"Duration: {{duration}} day","-740702998":"<0>{{title}} {{message}}","-1669741470":"The payout at expiry is equal to the payout per point multiplied by the difference between the final price and the strike price.","-1527492178":"Purchase Locked","-725375562":"You can lock/unlock the purchase button from the Settings menu","-2131851017":"Growth rate","-1358367903":"Stake","-542594338":"Max. payout","-690963898":"Your contract will be automatically closed when your payout reaches this amount.","-511541916":"Your contract will be automatically closed upon reaching this number of ticks.","-434270664":"Current Price","-1956787775":"Barrier Price:","-1513281069":"Barrier 2","-390994177":"Should be between {{min}} and {{max}}","-1804019534":"Expiry: {{date}}","-2055106024":"Toggle between advanced and simple duration settings","-1012793015":"End time","-2037881712":"Your contract will be closed automatically at the next available asset price on <0>.","-629549519":"Commission <0/>","-2131859340":"Stop out <0/>","-1686280757":"<0>{{commission_percentage}}% of (<1/> * {{multiplier}})","-1043117679":"When your current loss equals or exceeds {{stop_out_percentage}}% of your stake, your contract will be closed at the nearest available asset price.","-339236213":"Multiplier","-1763848396":"Put","-194424366":"above","-857660728":"Strike Prices","-243332856":"Last digit stats for latest 1000 ticks for {{ underlying_name }}","-1386326276":"Barrier is a required field.","-1418742026":"Higher barrier must be higher than lower barrier.","-92007689":"Lower barrier must be lower than higher barrier.","-1095538960":"Please enter the start time in the format \"HH:MM\".","-1975910372":"Minute must be between 0 and 59.","-866277689":"Expiry time cannot be in the past.","-347156282":"Submit Proof","-138538812":"Log in or create a free account to place a trade.","-2036388794":"Create free account","-1813736037":"No further trading is allowed on this contract type for the current trading session. For more info, refer to our <0>terms and conditions.","-1738427539":"Purchase","-1937372493":"You can close your trade anytime. However, be aware of <0>slippage risk<0/>.","-1392065699":"If you select \"Rise\", you win the payout if the exit spot is strictly higher than the entry spot.","-1762566006":"If you select \"Fall\", you win the payout if the exit spot is strictly lower than the entry spot.","-1435306976":"If you select \"Allow equals\", you win the payout if exit spot is higher than or equal to entry spot for \"Rise\". Similarly, you win the payout if exit spot is lower than or equal to entry spot for \"Fall\".","-1959473569":"If you select \"Lower\", you win the payout if the exit spot is strictly lower than the barrier.","-1350745673":"If the exit spot is equal to the barrier, you don't win the payout.","-2089488446":"If you select \"Ends Between\", you win the payout if the exit spot is strictly higher than the Low barrier AND strictly lower than the High barrier.","-1876950330":"If you select \"Ends Outside\", you win the payout if the exit spot is EITHER strictly higher than the High barrier, OR strictly lower than the Low barrier.","-546460677":"If the exit spot is equal to either the Low barrier or the High barrier, you don't win the payout.","-1812957362":"If you select \"Stays Between\", you win the payout if the market stays between (does not touch) either the High barrier or the Low barrier at any time during the contract period","-220379757":"If you select \"Goes Outside\", you win the payout if the market touches either the High barrier or the Low barrier at any time during the contract period.","-1281286610":"If you select \"Matches\", you will win the payout if the last digit of the last tick is the same as your prediction.","-1929209278":"If you select \"Even\", you will win the payout if the last digit of the last tick is an even number (i.e., 2, 4, 6, 8, or 0).","-2038865615":"If you select \"Odd\", you will win the payout if the last digit of the last tick is an odd number (i.e., 1, 3, 5, 7, or 9).","-1416078023":"If you select \"Touch\", you win the payout if the market touches the barrier at any time during the contract period.","-1272255095":"If the exit spot is equal to the barrier or the new barrier (if a reset occurs), you don't win the payout.","-231957809":"Win maximum payout if the exit spot is higher than or equal to the upper barrier.","-464144986":"Win maximum payout if the exit spot is lower than or equal to the lower barrier.","-1031456093":"Win up to maximum payout if exit spot is between lower and upper barrier, in proportion to the difference between upper barrier and exit spot.","-968162707":"No payout if exit spot is above or equal to the upper barrier.","-299450697":"If you select \"High Tick\", you win the payout if the selected tick is the highest among the next five ticks.","-705681870":"By purchasing the \"High-to-Low\" contract, you'll win the multiplier times the difference between the high and low over the duration of the contract.","-420387848":"The high is the highest point ever reached by the market during the contract period.","-1666375348":"By purchasing the \"High-to-Close\" contract, you'll win the multiplier times the difference between the high and close over the duration of the contract.","-2024955268":"If you select “Up”, you will earn a profit by closing your position when the market price is higher than the entry spot.","-1598433845":"If you select “Down”, you will earn a profit by closing your position when the market price is lower than the entry spot.","-885323297":"These are optional parameters for each position that you open:","-584696680":"If you select “Take profit” and specify an amount that you’d like to earn, your position will be closed automatically when your profit is more than or equals to this amount. Your profit may be more than the amount you entered depending on the market price at closing.","-1192494358":"If you select “Deal cancellation”, you’ll be able to cancel your trade within a chosen time frame should the market move against your favour. We’ll charge a small fee for this, but we’ll return your stake amount without profit or loss. If the stop-out amount is reached before the deal cancellation expires, your position will be cancelled automatically and we’ll return your stake amount without profit or loss.","-178096090":"“Take profit” cannot be updated. You may update it only when “Deal cancellation” expires.","-206909651":"The entry spot is the market price when your contract is processed by our servers.","-1576967286":"This product allows you to express a strong bullish or bearish view on an underlying asset.","-610471235":"If you think the market price will rise continuously for a specific period, choose <0>Long. You will get a payout at the expiry time if the market price doesn’t touch or cross below the barrier. Your payout will grow proportionally to the distance between the market price and the barrier if the barrier is not breached. You will start making a profit when the payout is higher than your stake. If the market price ever crosses the barrier, there won’t be a payout.","-454245976":"If you think the market price will drop continuously for a specific period, choose <0>Short. You will get a payout at the expiry time if the market price doesn’t touch or cross above the barrier. Your payout will grow proportionally to the distance between the market price and the barrier if the barrier is not breached. You will start making a profit when the payout is higher than your stake. If the market price ever crosses the barrier, there won’t be a payout.","-1790089996":"NEW!","-993480898":"Accumulators","-45873457":"NEW","-1422269966":"You can choose a growth rate with values of 1%, 2%, 3%, 4%, and 5%.","-1186791513":"Payout is the sum of your initial stake and profit.","-1682624802":"It is a percentage of the previous spot price. The percentage rate is based on your choice of the index and the growth rate.","-1221049974":"Final price","-1247327943":"This is the spot price of the last tick at expiry.","-878534036":"If you select \"Call\", you’ll earn a payout if the final price is above the strike price at expiry. Otherwise, you won’t receive a payout.","-1587076792":"If you select \"Put\", you’ll earn a payout if the final price is below the strike price at expiry. Otherwise, you won’t receive a payout.","-1482134885":"We calculate this based on the strike price and duration you’ve selected.","-1890561510":"Cut-off time","-565990678":"Your contract will expire on this date (in GMT), based on the End time you’ve selected.","-127118348":"Choose {{contract_type}}","-543478618":"Try checking your spelling or use a different term","-700280380":"Deal cancel. fee","-1683683754":"Long","-1046859144":"<0>{{title}} You will get a payout if the market price stays {{price_position}} and doesn't touch or cross the barrier. Otherwise, your payout will be zero.","-1815023694":"above the barrier","-1572548510":"Ups & Downs","-71301554":"Ins & Outs","-952298801":"Look Backs","-763273340":"Digits","-461955353":"purchase price","-172348735":"profit","-1624674721":"contract type","-1644154369":"entry spot time","-510792478":"entry spot price","-1974651308":"exit spot time","-1600267387":"exit spot price","-514917720":"barrier","-1072292603":"No Change","-1631669591":"string","-1768939692":"number","-795152863":"green","-1640576332":"blue","-804983649":"yellow","-94281841":"red","-1242470654":"Earned money","-841561409":"Put Spread","-1429914047":"Low","-1893628957":"Open Time","-1896106455":"10 minutes","-999492762":"15 minutes","-1978767852":"30 minutes","-293628675":"1 hour","-385604445":"2 hours","-1965813351":"4 hours","-525321833":"1 day","-1691868913":"Touch/No Touch","-151151292":"Asians","-1048378719":"Reset Call/Reset Put","-1282312809":"High/Low Ticks","-1237186896":"Only Ups/Only Downs","-529846150":"Seconds","-1635771697":"middle","-1529389221":"Histogram","-1819860668":"MACD","-1750896349":"D'Alembert","-102980621":"The Oscar's Grind Strategy is a low-risk positive progression strategy that first appeared in 1965. By using this strategy, the size of your contract will increase after successful trades, but remains unchanged after unsuccessful trades.","-462715374":"Untitled Bot","-2002533437":"Custom function","-215053350":"with:","-1257232389":"Specify a parameter name:","-1885742588":"with: ","-188442606":"function {{ function_name }} {{ function_params }} {{ dummy }}","-313112159":"This block is similar to the one above, except that this returns a value. The returned value can be assigned to a variable of your choice.","-1783320173":"Prematurely returns a value within a function","-1485521724":"Conditional return","-1482801393":"return","-46453136":"get","-1838027177":"first","-1182568049":"Get list item","-1675454867":"This block gives you the value of a specific item in a list, given the position of the item. It can also remove the item from the list.","-381501912":"This block creates a list of items from an existing list, using specific item positions.","-426766796":"Get sub-list","-1679267387":"in list {{ input_list }} find {{ first_or_last }} occurence of item {{ input_value }}","-2087996855":"This block gives you the position of an item in a given list.","-422008824":"Checks if a given list is empty","-1343887675":"This block checks if a given list is empty. It returns “True” if the list is empty, “False” if otherwise.","-1548407578":"length of {{ input_list }}","-1786976254":"This block gives you the total number of items in a given list.","-2113424060":"create list with item {{ input_item }} repeated {{ number }} times","-1955149944":"Repeat an item","-434887204":"set","-197957473":"as","-851591741":"Set list item","-1874774866":"ascending","-1457178757":"Sorts the items in a given list","-350986785":"Sort list","-324118987":"make text from list","-155065324":"This block creates a list from a given string of text, splitting it with the given delimiter. It can also join items in a list into a string of text.","-459051222":"Create list from text","-977241741":"List Statement","-451425933":"{{ break_or_continue }} of loop","-323735484":"continue with next iteration","-1592513697":"Break out/continue","-713658317":"for each item {{ variable }} in list {{ input_list }}","-1825658540":"Iterates through a given list","-952264826":"repeat {{ number }} times","-887757135":"Repeat (2)","-1608672233":"This block is similar to the block above, except that the number of times it repeats is determined by a given variable.","-533154446":"Repeat (1)","-1059826179":"while","-1893063293":"until","-279445533":"Repeat While/Until","-1003706492":"User-defined variable","-359097473":"set {{ variable }} to {{ value }}","-1588521055":"Sets variable value","-980448436":"Set variable","-1538570345":"Get the last trade information and result, then trade again.","-222725327":"Here is where you can decide if your bot should continue trading.","-1638446329":"Result is {{ win_or_loss }}","-1968029988":"Last trade result","-1588406981":"You can check the result of the last trade with this block.","-1459154781":"Contract Details: {{ contract_detail }}","-1652241017":"Reads a selected property from contract details list","-985351204":"Trade again","-2082345383":"These blocks transfer control to the Purchase conditions block.","-172574065":"This block will transfer the control back to the Purchase conditions block, enabling you to purchase another contract.","-403103225":"restart","-837044282":"Ask Price {{ contract_type }}","-1033917049":"This block returns the purchase price for the selected trade type.","-1863737684":"2. Purchase conditions","-228133740":"Specify contract type and purchase conditions.","-1098726473":"This block is mandatory. Only one copy of this block is allowed. You can place the Purchase block (see below) here as well as conditional blocks to define your purchase conditions.","-1777988407":"Payout {{ contract_type }}","-511116341":"This block returns the potential payout for the selected trade type","-1943211857":"Potential payout","-813464969":"buy","-53668380":"True if active contract can be sold before expiration at current market price","-43337012":"Sell profit/loss","-2112866691":"Returns the profit/loss from selling at market price","-2132417588":"This block gives you the potential profit or loss if you decide to sell your contract.","-1360483055":"set {{ variable }} to Bollinger Bands {{ band_type }} {{ dummy }}","-20542296":"Calculates Bollinger Bands (BB) from a list with a period","-1951109427":"Bollinger Bands (BB)","-857226052":"BB is a technical analysis indicator that’s commonly used by traders. The idea behind BB is that the market price stays within the upper and lower bands for 95% of the time. The bands are the standard deviations of the market price, while the line in the middle is a simple moving average line. If the price reaches either the upper or lower band, there’s a possibility of a trend reversal.","-325196350":"set {{ variable }} to Bollinger Bands Array {{ band_type }} {{ dummy }}","-199689794":"Similar to BB. This block gives you a choice of returning the values of either the lower band, higher band, or the SMA line in the middle.","-920690791":"Calculates Exponential Moving Average (EMA) from a list with a period","-960641587":"EMA is a type of moving average that places more significance on the most recent data points. It’s also known as the exponentially weighted moving average. EMA is different from SMA in that it reacts more significantly to recent price changes.","-1557584784":"set {{ variable }} to Exponential Moving Average Array {{ dummy }}","-32333344":"Calculates Moving Average Convergence Divergence (MACD) from a list","-628573413":"MACD is calculated by subtracting the long-term EMA (26 periods) from the short-term EMA (12 periods). If the short-term EMA is greater or lower than the long-term EMA than there’s a possibility of a trend reversal.","-1133676960":"Fast EMA Period {{ input_number }}","-883166598":"Period {{ input_period }}","-450311772":"set {{ variable }} to Relative Strength Index {{ dummy }}","-1861493523":"Calculates Relative Strength Index (RSI) list from a list of values with a period","-880048629":"Calculates Simple Moving Average (SMA) from a list with a period","-1150972084":"Market direction","-276935417":"This block is used to determine if the market price moves in the selected direction or not. It gives you a value of “True” or “False”.","-764931948":"in candle list get # from end {{ input_number }}","-924607337":"Returns the last digit of the latest tick","-560033550":"Returns the list of last digits of 1000 recent tick values","-74062476":"Make a List of {{ candle_property }} values in candles list with interval: {{ candle_interval_type }}","-1556495906":"Returns a list of specific values from a candle list according to selected time interval","-166816850":"Create a list of candle values (1)","-1261436901":"Candles List","-1174859923":"Read the selected candle value","-1972165119":"Read candle value (1)","-1956100732":"You can use this block to analyze the ticks, regardless of your trades","-443243232":"The content of this block is called on every tick. Place this block outside of any root block.","-641399277":"Last Tick","-1628954567":"Returns the value of the last tick","-1332756793":"This block gives you the value of the last tick.","-2134440920":"Last Tick String","-1466340125":"Tick value","-467913286":"Tick value Description","-785831237":"This block gives you a list of the last 1000 tick values.","-1546430304":"Tick List String Description","-1788626968":"Returns \"True\" if the given candle is black","-436010611":"Make a list of {{ candle_property }} values from candles list {{ candle_list }}","-1384340453":"Returns a list of specific values from a given candle list","-584859539":"Create a list of candle values (2)","-2010558323":"Read {{ candle_property }} value in candle {{ input_candle }}","-2846417":"This block gives you the selected candle value.","-1587644990":"Read candle value (2)","-1202212732":"This block returns account balance","-1737837036":"Account balance","-1963883840":"Put your blocks in here to prevent them from being removed","-1284013334":"Use this block if you want some instructions to be ignored when your bot runs. Instructions within this block won’t be executed.","-1217253851":"Log","-1987568069":"Warn","-104925654":"Console","-1956819233":"This block displays messages in the developer's console with an input that can be either a string of text, a number, boolean, or an array of data.","-1450461842":"Load block from URL: {{ input_url }}","-1088614441":"Loads blocks from URL","-1747943728":"Loads from URL","-2105753391":"Notify Telegram {{ dummy }} Access Token: {{ input_access_token }} Chat ID: {{ input_chat_id }} Message: {{ input_message }}","-1008209188":"Sends a message to Telegram","-1218671372":"Displays a notification and optionally play selected sound","-2099284639":"This block gives you the total profit/loss of your trading strategy since your bot started running. You can reset this by clicking “Clear stats” on the Transaction Stats window, or by refreshing this page in your browser.","-683825404":"Total Profit String","-718220730":"Total Profit String Description","-1861858493":"Number of runs","-264195345":"Returns the number of runs","-303451917":"This block gives you the total number of times your bot has run. You can reset this by clicking “Clear stats” on the Transaction Stats window, or by refreshing this page in your browser.","-2132861129":"Conversion Helper Block","-74095551":"Seconds Since Epoch","-15528039":"Returns the number of seconds since January 1st, 1970","-729807788":"This block returns the number of seconds since January 1st, 1970.","-1370107306":"{{ dummy }} {{ stack_input }} Run after {{ number }} second(s)","-558838192":"Delayed run","-1975250999":"This block converts the number of seconds since the Unix Epoch (1 January 1970) into a string of text representing the date and time.","-702370957":"Convert to date/time","-982729677":"Convert to timestamp","-311268215":"This block converts a string of text that represents the date and time into seconds since the Unix Epoch (1 January 1970). The time and time zone offset are optional. Example: 2019-01-01 21:03:45 GMT+0800 will be converted to 1546347825.","-1797602591":"Stop Loss: {{ currency }} {{ stop_loss }}","-1374685318":"Your contract is closed automatically when your loss is more than or equals to this amount. This block can only be used with the multipliers trade type.","-1214929127":"Stop loss must be a positive number.","-780745489":"If the contract type is “Both”, then the Purchase Conditions should include both Rise and Fall using the “Conditional Block\"","-2142851225":"Multiplier trade options","-625636913":"Amount must be a positive number.","-1466383897":"Duration: {{ duration_unit }} {{ duration_value }}","-440702280":"Trade options","-1193894978":"Define your trade options such as duration and stake. Some options are only applicable for certain trade types.","-46523443":"Duration value is not allowed. To run the bot, please enter a value between {{min}} to {{max}}.","-1483427522":"Trade Type: {{ trade_type_category }} > {{ trade_type }}","-323348124":"1. Trade parameters","-1671903503":"Run once at start:","-783173909":"Trade options:","-376956832":"Here is where you define the parameters of your contract.","-1244007240":"if {{ condition }} then","-1577206704":"else if","-33796979":"true","-1434883449":"This is a single block that returns a boolean value, either true or false.","-1946404450":"Compares two values","-979918560":"This block converts the boolean value (true or false) to its opposite.","-2047257743":"Null","-1274387519":"Performs selected logic operation","-766386234":"This block performs the \"AND\" or the \"OR\" logic operation.","-790995537":"test {{ condition }}","-1860211657":"if false {{ return_value }}","-1643760249":"This block tests if a given value is true or false and returns “True” or “False” accordingly.","-1551875333":"Test value","-52486882":"Arithmetical operations","-1010436425":"This block adds the given number to the selected variable","-999773703":"Change variable","-1272091683":"Mathematical constants","-1396629894":"constrain {{ number }} low {{ low_number }} high {{ high_number }}","-425224412":"This block constrains a given number so that it is within a set range.","-2072551067":"Constrain within a range","-43523220":"remainder of {{ number1 }} ÷ {{ number2 }}","-1291857083":"Returns the remainder after a division","-592154850":"Remainder after division","-736665095":"Returns the remainder after the division of the given numbers.","-1266992960":"Math Number Description","-77191651":"{{ number }} is {{ type }}","-817881230":"even","-142319891":"odd","-1000789681":"whole","-1735674752":"Test a number","-1017805068":"This block tests a given number according to the selection and it returns a value of “True” or “False”. Available options: Even, Odd, Prime, Whole, Positive, Negative, Divisible","-1858332062":"Number","-1053492479":"Enter an integer or fractional number into this block. Please use `.` as a decimal separator for fractional numbers.","-927097011":"sum","-1653202295":"max","-1555878023":"average","-1748351061":"mode","-992067330":"Aggregate operations","-1691561447":"This block gives you a random fraction between 0.0 to 1.0","-523625686":"Random fraction number","-933024508":"Rounds a given number to an integer","-1656927862":"This block rounds a given number according to the selection: round, round up, round down.","-1495304618":"absolute","-61210477":"Operations on a given number","-181644914":"This block performs the selected operations to a given number.","-840732999":"to {{ variable }} append text {{ input_text }}","-1469497908":"Appends a given text to a variable","-1851366276":"Text Append","-1666316828":"Appends a given text to a variable.","-1902332770":"Transform {{ input_text }} to {{ transform_type }}","-1489004405":"Title Case","-904432685":"Changes text case accordingly","-882381096":"letter #","-1027605069":"letter # from end","-2066990284":"random letter","-337089610":"in text {{ input_text1 }} find {{ first_or_last }} occurence of text {{ input_text2 }}","-1966694141":"Searches through a string of text for a specific occurrence of a given character or word, and returns the position.","-697543841":"Text join","-141160667":"length of {{ input_text }}","-1133072029":"Text String Length","-1109723338":"print {{ input_text }}","-736668830":"Print","-1821552998":"trim spaces from {{ side }} of {{ input_text }}","-801766026":"right side","-474779821":"Trims spaces","-1687036846":"Download block","-1266781295":"Expand","-894560707":"function","-1867119688":"Duplicate","-610728049":"Rearrange Vertically","-2033146714":"Collapse All Blocks","-958601558":"Delete Block","-1193267384":"Detach Block","-1750478127":"New variable name","-1061878051":"Y","-2047029150":"Unable to load the block file.","-1410769167":"Target must be an XML file","-609157479":"This URL is already loaded","-241945454":"Proposals are not ready","-1087890592":"Maximum loss amount reached","-1030545878":"You are rate limited for: {{ message_type }}, retrying in {{ delay }}s (ID: {{ request }})","-490766438":"You are disconnected, retrying in {{ delay }}s","-1389975609":"unknown","-1900515692":"Duration must be a positive integer","-245297595":"Please login","-1445046468":"Given candle is not valid","-1891622945":"{{hourPast}}h ago","-1919680487":"workspace","-1703118772":"The {{block_type}} block is misplaced from {{missing_space}}.","-1785726890":"purchase conditions","-538215347":"Net deposits","-280147477":"All transactions","-137444201":"Buy","-130601012":"Please select duration","-232254547":"Custom","-1577570698":"Start date","-1251526905":"Last 7 days","-1904030160":"Transaction performed by (App ID: {{app_id}})","-513103225":"Transaction time","-2066666313":"Credit/Debit","-1981004241":"Sell time","-600828210":"Indicative profit/loss","-706219815":"Indicative price","-3423966":"Take profit<0 />Stop loss","-2082644096":"Current stake","-1131753095":"The {{trade_type_name}} contract details aren't currently available. We're working on making them available soon.","-360975483":"You've made no transactions of this type during this period.","-1226595254":"Turbos","-922253974":"Rise/Fall","-1361254291":"Higher/Lower","-335816381":"Ends In/Ends Out","-1789807039":"Asian Up/Asian Down","-330437517":"Matches/Differs","-657360193":"Over/Under","-558031309":"High Tick/Low Tick","-123659792":"Vanillas","-1669418686":"AUD/CAD","-1548588249":"AUD/CHF","-1552890620":"AUD/JPY","-681231560":"AUD/PLN","-64938413":"AUD/USD","-1430522808":"EUR/AUD","-2020477069":"EUR/CAD","-1201853162":"EUR/CHF","-1197505739":"EUR/JPY","-405907358":"EUR/USD","-1536293064":"NZD/JPY","-79700881":"NZD/USD","-642323838":"USD/CAD","-428199705":"USD/CHF","-424108348":"USD/JPY","-548255282":"USD/NOK","-1834131208":"USD/PLN","-524302516":"Silver/USD","-764731776":"Platinum/USD","-853582174":"France 40","-1096386695":"UK 100","-617646862":"Germany 40","-2077690248":"Japan 225","-512194910":"US Tech 100","-381746202":"US 500","-1935463381":"Swiss 20","-1941767726":"Euro 50","-1925264914":"Volatility 25 Index","-708579504":"Volatility 50 Index","-975255670":"Volatility 75 Index","-1736314513":"Crash 300 Index","-342128411":"Crash 500 Index","-9704319":"Crash 1000 Index","-465860988":"Bull Market Index","-390528194":"Step Index","-280323742":"EUR Basket","-563812039":"Volatility 10 (1s) Index","-764111252":"Volatility 100 (1s) Index","-816110209":"Volatility 150 (1s) Index","-1374309449":"Volatility 200 (1s) Index","-1288044380":"Volatility 250 (1s) Index","-1164978320":"Jump 10 Index","-575272887":"BCH/USD","-295406873":"BTC/ETH","-1713556301":"ZMR/USD","-2046638412":"XRP/USD","-1263203461":"BTC/USD","-1112522776":"DSH/USD","-460689370":"LTC/USD","-1715390759":"I want to do this later","-2092611555":"Sorry, this app is unavailable in your current location.","-1488537825":"If you have an account, log in to continue.","-555592125":"Unfortunately, trading options isn't possible in your country","-1571816573":"Sorry, trading is unavailable in your current location.","-1603581277":"minutes","-1714959941":"This chart display is not ideal for tick contracts","-1254554534":"Please change the chart duration to tick for a better trading experience.","-1658230823":"Contract was sold for <0 />.","-1905867404":"Contract cancelled"} \ No newline at end of file diff --git a/packages/translations/src/translations/ach.json b/packages/translations/src/translations/ach.json index 6d53a81a5cd0..86c9e4498757 100644 --- a/packages/translations/src/translations/ach.json +++ b/packages/translations/src/translations/ach.json @@ -2143,7 +2143,6 @@ "-651516152": "crwdns124042:0crwdne124042:0", "-1387062433": "crwdns81215:0crwdne81215:0", "-222283483": "crwdns1503669:0crwdne1503669:0", - "-190838815": "crwdns159394:0crwdne159394:0", "-1113902570": "crwdns81207:0crwdne81207:0", "-71696502": "crwdns70352:0crwdne70352:0", "-1541554430": "crwdns70354:0crwdne70354:0", @@ -2338,6 +2337,7 @@ "-854023608": "crwdns160968:0crwdne160968:0", "-1500958859": "crwdns160970:0crwdne160970:0", "-1662154767": "crwdns124010:0crwdne124010:0", + "-190838815": "crwdns159394:0crwdne159394:0", "-223216785": "crwdns159396:0crwdne159396:0", "-594456225": "crwdns81619:0crwdne81619:0", "-1940457555": "crwdns159398:0crwdne159398:0", diff --git a/packages/translations/src/translations/ar.json b/packages/translations/src/translations/ar.json index e372b08f54e4..8f203fa37f45 100644 --- a/packages/translations/src/translations/ar.json +++ b/packages/translations/src/translations/ar.json @@ -2143,7 +2143,6 @@ "-651516152": "رقم التعريف الضريبي", "-1387062433": "سبب فتح الحساب", "-222283483": "سبب فتح الحساب*", - "-190838815": "نحن بحاجة إلى هذا للتحقق. إذا كانت المعلومات التي تقدمها مزيفة أو غير دقيقة، فلن تتمكن من الإيداع والسحب.", "-1113902570": "التفاصيل", "-71696502": "السابق", "-1541554430": "التالي", @@ -2338,6 +2337,7 @@ "-854023608": "لزيادة الحد، يرجى التحقق من هويتك", "-1500958859": "تحقق", "-1662154767": "فاتورة مرافق حديثة (مثل الكهرباء أو الماء أو الغاز أو الهاتف الأرضي أو الإنترنت) أو كشف حساب مصرفي أو خطاب صادر عن جهة حكومية باسمك وهذا العنوان.", + "-190838815": "نحن بحاجة إلى هذا للتحقق. إذا كانت المعلومات التي تقدمها مزيفة أو غير دقيقة، فلن تتمكن من الإيداع والسحب.", "-223216785": "السطر الثاني من العنوان*", "-594456225": "السطر الثاني من العنوان", "-1940457555": "الرمز البريدي*", diff --git a/packages/translations/src/translations/bn.json b/packages/translations/src/translations/bn.json index ed65fd17e56b..20539d26c3c6 100644 --- a/packages/translations/src/translations/bn.json +++ b/packages/translations/src/translations/bn.json @@ -2143,7 +2143,6 @@ "-651516152": "কর সনাক্তকরণ নম্বর", "-1387062433": "অ্যাকাউন্ট খোলার কারণ", "-222283483": "অ্যাকাউন্ট খোলার কারণ*", - "-190838815": "যাচাইয়ের জন্য আমাদের এই প্রয়োজন। আপনার প্রদত্ত তথ্য যদি নকল বা ভুল হয়, তাহলে আপনি জমা ও উত্তোলন করতে পারবেন না।", "-1113902570": "বিস্তারিত", "-71696502": "পূর্ববর্তী", "-1541554430": "পরবর্তী", @@ -2338,6 +2337,7 @@ "-854023608": "সীমা বাড়ানোর জন্য অনুগ্রহ করে আপনার পরিচয় যাচাই করুন", "-1500958859": "যাচাই", "-1662154767": "একটি সাম্প্রতিক ইউটিলিটি বিল (যেমন বিদ্যুৎ, পানি, গ্যাস, ল্যান্ডলাইন, বা ইন্টারনেট), ব্যাংক স্টেটমেন্ট, বা আপনার নাম এবং এই ঠিকানা সহ সরকার কর্তৃক প্রদত্ত চিঠি।", + "-190838815": "যাচাইয়ের জন্য আমাদের এই প্রয়োজন। আপনার প্রদত্ত তথ্য যদি নকল বা ভুল হয়, তাহলে আপনি জমা ও উত্তোলন করতে পারবেন না।", "-223216785": "ঠিকানার দ্বিতীয় লাইন*", "-594456225": "ঠিকানার দ্বিতীয় লাইন", "-1940457555": "ডাক/জিপ কোড*", diff --git a/packages/translations/src/translations/de.json b/packages/translations/src/translations/de.json index 317378e8b493..9474701e4d2b 100644 --- a/packages/translations/src/translations/de.json +++ b/packages/translations/src/translations/de.json @@ -2143,7 +2143,6 @@ "-651516152": "Steuer-Identifikationsnummer", "-1387062433": "Grund der Kontoeröffnung", "-222283483": "Grund der Kontoeröffnung*", - "-190838815": "Wir benötigen das zur Überprüfung. Wenn die von Ihnen angegebenen Informationen falsch oder ungenau sind, können Sie keine Ein- und Auszahlungen vornehmen.", "-1113902570": "Einzelheiten", "-71696502": "Voriges", "-1541554430": "Weiter", @@ -2338,6 +2337,7 @@ "-854023608": "Um das Limit zu erhöhen, überprüfen Sie bitte Ihre Identität", "-1500958859": "verifizieren", "-1662154767": "eine aktuelle Stromrechnung (z. B. Strom, Wasser, Gas, Festnetz oder Internet), ein Kontoauszug oder ein von der Regierung ausgestelltes Schreiben mit Ihrem Namen und dieser Adresse.", + "-190838815": "Wir benötigen das zur Überprüfung. Wenn die von Ihnen angegebenen Informationen falsch oder ungenau sind, können Sie keine Ein- und Auszahlungen vornehmen.", "-223216785": "Zweite Adresszeile*", "-594456225": "Zweite Adresszeile", "-1940457555": "Post-/PLZ*", diff --git a/packages/translations/src/translations/es.json b/packages/translations/src/translations/es.json index 37ec156e4b8a..70ecd40ea49d 100644 --- a/packages/translations/src/translations/es.json +++ b/packages/translations/src/translations/es.json @@ -2143,7 +2143,6 @@ "-651516152": "Número de identificación fiscal", "-1387062433": "Motivo para abrir la cuenta", "-222283483": "Motivo para abrir la cuenta*", - "-190838815": "Necesitamos esto para la verificación. Si la información que proporciona es falsa o inexacta, no podrá depositar ni retirar.", "-1113902570": "Detalles", "-71696502": "Anterior", "-1541554430": "Siguiente", @@ -2338,6 +2337,7 @@ "-854023608": "Para aumentar el límite, verifique su identidad", "-1500958859": "Verificar", "-1662154767": "una factura reciente de servicios públicos (por ejemplo, electricidad, agua, gas, teléfono fijo o internet), extracto bancario o carta emitida por el gobierno con su nombre y esta dirección.", + "-190838815": "Necesitamos esto para la verificación. Si la información que proporciona es falsa o inexacta, no podrá depositar ni retirar.", "-223216785": "Segunda línea de dirección*", "-594456225": "Segunda línea de dirección", "-1940457555": "Código postal*", diff --git a/packages/translations/src/translations/fr.json b/packages/translations/src/translations/fr.json index 32cec7e21c4a..3117da7fe54a 100644 --- a/packages/translations/src/translations/fr.json +++ b/packages/translations/src/translations/fr.json @@ -2143,7 +2143,6 @@ "-651516152": "Numéro d’Identification fiscale", "-1387062433": "Motif d’ouverture de compte", "-222283483": "Motif d’ouverture de compte*", - "-190838815": "Nous en avons besoin pour vérification. Si les informations que vous fournissez sont fausses ou inexactes, vous ne pourrez pas effectuer de dépôt ni de retrait.", "-1113902570": "Détails", "-71696502": "Précédent", "-1541554430": "Suivant", @@ -2338,6 +2337,7 @@ "-854023608": "Pour augmenter la limite, veuillez vérifier votre identité", "-1500958859": "Vérifier", "-1662154767": "une facture de services publics récente (par exemple, électricité, eau, gaz, ligne fixe ou Internet), relevé bancaire ou lettre du gouvernement avec votre nom et cette adresse.", + "-190838815": "Nous en avons besoin pour vérification. Si les informations que vous fournissez sont fausses ou inexactes, vous ne pourrez pas effectuer de dépôt ni de retrait.", "-223216785": "Deuxième ligne d'adresse*", "-594456225": "Deuxième ligne d'adresse", "-1940457555": "Code postal*", diff --git a/packages/translations/src/translations/id.json b/packages/translations/src/translations/id.json index 5751e8e6a2fc..4c501cd9287a 100644 --- a/packages/translations/src/translations/id.json +++ b/packages/translations/src/translations/id.json @@ -2143,7 +2143,6 @@ "-651516152": "Nomor Pokok Wajib Pajak", "-1387062433": "Alasan pedaftaran akun", "-222283483": "Alasan pedaftaran akun*", - "-190838815": "Kami membutuhkan ini untuk verifikasi. Jika informasi yang Anda berikan palsu atau tidak akurat, Anda tidak akan dapat melakukan deposit atau menarik dana.", "-1113902570": "Rincian", "-71696502": "Kembali", "-1541554430": "Lanjut", @@ -2338,6 +2337,7 @@ "-854023608": "Untuk meningkatkan batas mohon verifikasi identitas Anda", "-1500958859": "Verifikasi", "-1662154767": "tagihan utilitas terbaru (misalnya listrik, air, gas, telepon rumah, atau internet), laporan mutasi bank, atau surat yang dikeluarkan pemerintah yang mencantumkan nama dan alamat ini.", + "-190838815": "Kami membutuhkan ini untuk verifikasi. Jika informasi yang Anda berikan palsu atau tidak akurat, Anda tidak akan dapat melakukan deposit atau menarik dana.", "-223216785": "Baris kedua alamat*", "-594456225": "Baris kedua alamat", "-1940457555": "Kode Pos*", diff --git a/packages/translations/src/translations/it.json b/packages/translations/src/translations/it.json index 6d6951807af8..eae9f030bed0 100644 --- a/packages/translations/src/translations/it.json +++ b/packages/translations/src/translations/it.json @@ -2143,7 +2143,6 @@ "-651516152": "Numero di identificazione fiscale", "-1387062433": "Ragione dell'apertura del conto", "-222283483": "Motivo dell'apertura del conto*", - "-190838815": "Ne abbiamo bisogno ai fini della verifica: se le informazioni sono false o imprecise, non ti sarà possibile prelevare o depositare fondi.", "-1113902570": "Dettagli", "-71696502": "Precedente", "-1541554430": "Successivo", @@ -2338,6 +2337,7 @@ "-854023608": "Per aumentare il limite, verifica la tua identità", "-1500958859": "Verifica", "-1662154767": "una bolletta di utenza (per esempio di elettricità, acqua, gas, internet o telefonica), estratto conto bancario o documento emesso dal governo con il tuo nome e il tuo indirizzo.", + "-190838815": "Ne abbiamo bisogno ai fini della verifica: se le informazioni sono false o imprecise, non ti sarà possibile prelevare o depositare fondi.", "-223216785": "Seconda riga dell'indirizzo*", "-594456225": "Seconda riga dell'indirizzo", "-1940457555": "Codice postale/CAP*", diff --git a/packages/translations/src/translations/ko.json b/packages/translations/src/translations/ko.json index 1cb77c60ede5..bcf0a1e2a0d3 100644 --- a/packages/translations/src/translations/ko.json +++ b/packages/translations/src/translations/ko.json @@ -2143,7 +2143,6 @@ "-651516152": "납세 식별번호", "-1387062433": "계좌 개설 이유", "-222283483": "계좌 개설 이유*", - "-190838815": "검증을 위해 우리는 이것을 필요로 합니다. 만약 귀하께서 제공하시는 정보가 가짜이거나 부정확한 경우, 귀하께서는 입금 및 인출을 하실 수 없게 됩니다.", "-1113902570": "세부정보", "-71696502": "이전", "-1541554430": "다음", @@ -2338,6 +2337,7 @@ "-854023608": "한도를 늘리기 위해 귀하의 신분을 인증해주시기 바랍니다", "-1500958859": "인증", "-1662154767": "최근의 공과금 (예 전기세, 수도세, 가스세, 통신비, 또는 인터넷 요금), 은행 잔고증명서, 또는 귀하의 이름과 해당 주소가 표시되어 있는 정부에서 발급된 레터.", + "-190838815": "검증을 위해 우리는 이것을 필요로 합니다. 만약 귀하께서 제공하시는 정보가 가짜이거나 부정확한 경우, 귀하께서는 입금 및 인출을 하실 수 없게 됩니다.", "-223216785": "주소의 둘째 줄*", "-594456225": "주소의 둘째 줄", "-1940457555": "우편번호*", diff --git a/packages/translations/src/translations/pl.json b/packages/translations/src/translations/pl.json index 4868eab14c47..9a2d8fd145a1 100644 --- a/packages/translations/src/translations/pl.json +++ b/packages/translations/src/translations/pl.json @@ -2143,7 +2143,6 @@ "-651516152": "Numer identyfikacji podatkowej", "-1387062433": "Powód otwarcia konta", "-222283483": "Powód otwarcia konta*", - "-190838815": "Te dane potrzebne są w celu weryfikacji. Jeśli podane przez Ciebie informacji są nieprawdziwe lub niedokładne, nie będziesz mieć możliwości dokonywania wpłat i wypłat.", "-1113902570": "Szczegóły", "-71696502": "Poprzedni", "-1541554430": "Następny", @@ -2338,6 +2337,7 @@ "-854023608": "Aby zwiększyć limit, zweryfikuj swoją tożsamość", "-1500958859": "Zweryfikuj", "-1662154767": "niedawny rachunek za media (np. prąd, wodę, gaz, linię telefoniczną lub internet), wyciąg z rachunku bankowego lub dokument wydany przez władze rządowe z Twoim imieniem i nazwiskiem i tym adresem.", + "-190838815": "Te dane potrzebne są w celu weryfikacji. Jeśli podane przez Ciebie informacji są nieprawdziwe lub niedokładne, nie będziesz mieć możliwości dokonywania wpłat i wypłat.", "-223216785": "Druga część adresu*", "-594456225": "Druga część adresu", "-1940457555": "Kod pocztowy*", diff --git a/packages/translations/src/translations/pt.json b/packages/translations/src/translations/pt.json index 9defa070583c..cf43d979ccf4 100644 --- a/packages/translations/src/translations/pt.json +++ b/packages/translations/src/translations/pt.json @@ -2143,7 +2143,6 @@ "-651516152": "Número de identificação fiscal", "-1387062433": "Motivo da abertura da conta", "-222283483": "Motivo da abertura da conta*", - "-190838815": "Precisamos disso para verificação. Se as informações fornecidas forem falsas ou imprecisas, você não poderá depositar e sacar.", "-1113902570": "Dados", "-71696502": "Anterior", "-1541554430": "Próximo", @@ -2338,6 +2337,7 @@ "-854023608": "Para aumentar o limite, verifique sua identidade", "-1500958859": "Verificar", "-1662154767": "uma fatura recente (por exemplo, eletricidade, água, gás, telefone fixo ou Internet), um extrato bancário ou uma carta emitida pelo governo com o seu nome e esta morada.", + "-190838815": "Precisamos disso para verificação. Se as informações fornecidas forem falsas ou imprecisas, você não poderá depositar e sacar.", "-223216785": "Segunda linha de endereço*", "-594456225": "Segunda linha de endereço", "-1940457555": "Código postal/CEP*", diff --git a/packages/translations/src/translations/ru.json b/packages/translations/src/translations/ru.json index 7d3517feaaef..b378ffe26216 100644 --- a/packages/translations/src/translations/ru.json +++ b/packages/translations/src/translations/ru.json @@ -2143,7 +2143,6 @@ "-651516152": "Идентификационный номер налогоплательщика", "-1387062433": "Причина открытия счёта", "-222283483": "Причина открытия счета*", - "-190838815": "Это нужно нам для проверки. Если предоставленная вами информация окажется поддельной или неточной, вы не сможете вносить и снимать средства.", "-1113902570": "Детали", "-71696502": "Назад", "-1541554430": "Далее", @@ -2338,6 +2337,7 @@ "-854023608": "Подтвердите свою личность, чтобы увеличить лимит.", "-1500958859": "Подтвердить", "-1662154767": "недавний счет за коммунальные услуги (электричество, вода, газ, стационарный телефон или интернет), банковская выписка или государственное/муниципальное письмо с вашим именем и этим адресом.", + "-190838815": "Это нужно нам для проверки. Если предоставленная вами информация окажется поддельной или неточной, вы не сможете вносить и снимать средства.", "-223216785": "Вторая строка адреса*", "-594456225": "Вторая строка адреса", "-1940457555": "Почтовый код/индекс*", diff --git a/packages/translations/src/translations/si.json b/packages/translations/src/translations/si.json index e8aa9bfbe55b..4fda27e1fadc 100644 --- a/packages/translations/src/translations/si.json +++ b/packages/translations/src/translations/si.json @@ -2143,7 +2143,6 @@ "-651516152": "බදු හඳුනාගැනීමේ අංකය", "-1387062433": "ගිණුම් විවෘත කිරීමේ හේතුව", "-222283483": "ගිණුම් විවෘත කිරීමේ හේතුව*", - "-190838815": "සත්යාපනය සඳහා අපට මෙය අවශ්යයි. ඔබ සපයන තොරතුරු ව්යාජ හෝ සාවද්ය නම්, ඔබට තැන්පත් කර ආපසු ගැනීමට නොහැකි වනු ඇත.", "-1113902570": "විස්තර", "-71696502": "පෙර", "-1541554430": "ඊළඟ", @@ -2338,6 +2337,7 @@ "-854023608": "සීමාව වැඩි කිරීමට කරුණාකර ඔබේ අනන්‍යතාවය තහවුරු කරන්න", "-1500958859": "සත්‍යාපනය කරන්න", "-1662154767": "මෑත කාලීන උපයෝගිතා බිල්පතක් (උදා: විදුලිය, ජලය, ගෑස්, ලෑන්ඩ්ලයින් හෝ අන්තර්ජාලය), බැංකු ප්‍රකාශය හෝ ඔබේ නම සහ මෙම ලිපිනය සහිත රජය විසින් නිකුත් කරන ලද ලිපියක්.", + "-190838815": "සත්යාපනය සඳහා අපට මෙය අවශ්යයි. ඔබ සපයන තොරතුරු ව්යාජ හෝ සාවද්ය නම්, ඔබට තැන්පත් කර ආපසු ගැනීමට නොහැකි වනු ඇත.", "-223216785": "ලිපිනයේ දෙවන පේළිය*", "-594456225": "ලිපිනයේ දෙවන පේළිය", "-1940457555": "තැපැල්/ZIP කේතය*", diff --git a/packages/translations/src/translations/th.json b/packages/translations/src/translations/th.json index 79d1821387d8..7d48cfe2f79f 100644 --- a/packages/translations/src/translations/th.json +++ b/packages/translations/src/translations/th.json @@ -2143,7 +2143,6 @@ "-651516152": "เลขประจำตัวผู้เสียภาษี", "-1387062433": "เหตุผลในการเปิดบัญชี", "-222283483": "เหตุผลในการเปิดบัญชี*", - "-190838815": "เราต้องการสิ่งนี้สำหรับการตรวจสอบยืนยัน หากข้อมูลที่คุณให้นั้นเป็นข้อมูลปลอมหรือไม่ถูกต้อง คุณจะไม่สามารถทำการฝากและถอนได้", "-1113902570": "รายละเอียด", "-71696502": "ก่อนหน้า", "-1541554430": "ถัดไป", @@ -2338,6 +2337,7 @@ "-854023608": "หากต้องการเพิ่มขีดจำกัด โปรดยืนยันตัวตนของคุณ", "-1500958859": "ยืนยัน", "-1662154767": "ใบแจ้งหนี้ค่าสาธารณูปโภคล่าสุด (เช่น ไฟฟ้า น้ำ แก๊ส โทรศัพท์หรืออินเทอร์เน็ต) ใบแจ้งยอดบัญชีธนาคาร หรือจดหมายที่ออกโดยรัฐบาลที่แสดงชื่อของคุณและที่อยู่นี้", + "-190838815": "เราต้องการสิ่งนี้สำหรับการตรวจสอบยืนยัน หากข้อมูลที่คุณให้นั้นเป็นข้อมูลปลอมหรือไม่ถูกต้อง คุณจะไม่สามารถทำการฝากและถอนได้", "-223216785": "บรรทัดที่สองของที่อยู่*", "-594456225": "บรรทัดที่สองของที่อยู่", "-1940457555": "รหัสไปรษณีย์*", diff --git a/packages/translations/src/translations/tr.json b/packages/translations/src/translations/tr.json index a81eacf425fa..daf6febbe183 100644 --- a/packages/translations/src/translations/tr.json +++ b/packages/translations/src/translations/tr.json @@ -2143,7 +2143,6 @@ "-651516152": "Vergi Kimlik Numarası", "-1387062433": "Hesap açma nedeni", "-222283483": "Hesap açma nedeni*", - "-190838815": "Doğrulama için buna ihtiyacımız var. Sağladığınız bilgiler sahte veya yanlışsa para yatırıp çekemeyeceksiniz.", "-1113902570": "Detaylar", "-71696502": "Önceki", "-1541554430": "Sonraki", @@ -2338,6 +2337,7 @@ "-854023608": "Sınırı artırmak için lütfen kimliğinizi doğrulayın", "-1500958859": "Doğrula", "-1662154767": "yakın tarihli bir hizmet faturası (örn. elektrik, su, gaz, sabit hat veya internet), banka hesap özeti veya adınızı ve bu adresinizi içeren resmi bir mektup.", + "-190838815": "Doğrulama için buna ihtiyacımız var. Sağladığınız bilgiler sahte veya yanlışsa para yatırıp çekemeyeceksiniz.", "-223216785": "İkinci adres satırı*", "-594456225": "İkinci adres satırı", "-1940457555": "Posta Kodu*", diff --git a/packages/translations/src/translations/vi.json b/packages/translations/src/translations/vi.json index 912d6b569c62..2fd82e213078 100644 --- a/packages/translations/src/translations/vi.json +++ b/packages/translations/src/translations/vi.json @@ -2143,7 +2143,6 @@ "-651516152": "Mã số thuế", "-1387062433": "Lý do mở tài khoản", "-222283483": "Lý do mở tài khoản*", - "-190838815": "Chúng tôi cần thông tin này để xác minh. Nếu thông tin bạn cung cấp là giả hoặc không chính xác, bạn sẽ không thể gửi và rút tiền.", "-1113902570": "Thông tin chi tiết", "-71696502": "Trước", "-1541554430": "Tiếp theo", @@ -2338,6 +2337,7 @@ "-854023608": "Để tăng giới hạn, xin hãy xác minh danh tính của bạn", "-1500958859": "Xác thực", "-1662154767": "một hóa đơn tiện ích mới đây (ví dụ: điện, nước, ga, điện thoại cố định, hoặc internet), sao kê ngân hàng, hoặc thư do chính phủ cấp với tên của bạn và địa chỉ này.", + "-190838815": "Chúng tôi cần thông tin này để xác minh. Nếu thông tin bạn cung cấp là giả hoặc không chính xác, bạn sẽ không thể gửi và rút tiền.", "-223216785": "Dòng thứ hai của địa chỉ nhà*", "-594456225": "Dòng thứ hai của địa chỉ nhà", "-1940457555": "Mã bưu chính/Mã ZIP*", diff --git a/packages/translations/src/translations/zh_cn.json b/packages/translations/src/translations/zh_cn.json index 030375d9f522..512c55a499c9 100644 --- a/packages/translations/src/translations/zh_cn.json +++ b/packages/translations/src/translations/zh_cn.json @@ -2143,7 +2143,6 @@ "-651516152": "税务识别编号", "-1387062433": "开立账户的原因", "-222283483": "开立账户的原因*", - "-190838815": "我们需要它进行验证。如果您提供的信息是虚假的或不正确的,您将无法存款和提款。", "-1113902570": "详情", "-71696502": "之前", "-1541554430": "下一页", @@ -2338,6 +2337,7 @@ "-854023608": "要添加禁止限额,请验证身份", "-1500958859": "验证", "-1662154767": "近期的水电费账单(例如电费、水费、煤气费、固定电话费或互联网费),银行对账单或政府签发的带有您的姓名和地址的信件。", + "-190838815": "我们需要它进行验证。如果您提供的信息是虚假的或不正确的,您将无法存款和提款。", "-223216785": "地址第二行*", "-594456225": "地址第二行", "-1940457555": "邮政编码*", diff --git a/packages/translations/src/translations/zh_tw.json b/packages/translations/src/translations/zh_tw.json index 8c01fe409e53..5ae579c938e6 100644 --- a/packages/translations/src/translations/zh_tw.json +++ b/packages/translations/src/translations/zh_tw.json @@ -2143,7 +2143,6 @@ "-651516152": "稅務識別號碼", "-1387062433": "開立帳戶的原因", "-222283483": "開立帳戶的原因*", - "-190838815": "需要它進行驗證。如果提供的資訊是虛假的或不正確的,將無法存款和提款。", "-1113902570": "詳細資料", "-71696502": "之前", "-1541554430": "下一頁", @@ -2338,6 +2337,7 @@ "-854023608": "要增加禁止限額請驗證身份", "-1500958859": "驗證", "-1662154767": "近期的水電費帳單(例如電費、水費、煤氣費、固定電話費或互聯網費),銀行對帳單或政府簽發的帶有姓名和地址的信件。", + "-190838815": "需要它進行驗證。如果提供的資訊是虛假的或不正確的,將無法存款和提款。", "-223216785": "地址第二行*", "-594456225": "地址第二行", "-1940457555": "郵遞區號*", From 8bd4510c7d3ab5da4ad7ec483591f62d3801eada Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 13 Sep 2023 16:08:41 +0800 Subject: [PATCH 10/12] =?UTF-8?q?translations:=20=F0=9F=93=9A=20sync=20tra?= =?UTF-8?q?nslations=20with=20crowdin=20(#10059)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: DerivFE <80095553+DerivFE@users.noreply.github.com> --- packages/p2p/src/translations/th.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/p2p/src/translations/th.json b/packages/p2p/src/translations/th.json index 52c54448cd33..309067fa0b09 100644 --- a/packages/p2p/src/translations/th.json +++ b/packages/p2p/src/translations/th.json @@ -150,7 +150,7 @@ "1583335572": "ถ้าโฆษณาไม่ได้รับคําสั่งซื้อเลยในช่วง {{adverts_archive_period}} วัน โฆษณานั้นจะถูกปิดใช้งาน", "1587250288": "หมายเลขโฆษณา {{advert_id}} ", "1607051458": "ค้นหาตามชื่อเล่น", - "1612595358": "ไม่สามารถอัปโหลดไฟล์ขนาดเกิน 5MB", + "1612595358": "ไม่สามารถอัปโหลดไฟล์ขนาดเกิน 2MB", "1615530713": "มีบางอย่างไม่ถูกต้อง", "1620858613": "คุณกำลังแก้ไขโฆษณาเพื่อขาย <0>{{ target_amount }} {{ target_currency }} ในราคา <0>{{ local_amount }} {{ local_currency }} <1>({{ price_rate }} {{local_currency}}/{{ target_currency }})", "1623916605": "ฉันไม่สามารถชำระเงินเต็มจำนวนได้", From 6596ccab5424176a2b88deeab968807dbc56b917 Mon Sep 17 00:00:00 2001 From: Niloofar Sadeghi <93518187+niloofar-deriv@users.noreply.github.com> Date: Wed, 13 Sep 2023 13:24:25 +0330 Subject: [PATCH 11/12] Niloofar | Mark | @deriv/integration and playwright implementations [POC] (#9761) --- .circleci/config.yml | 1 + .gitignore | 4 +- end-to-end-test/.env.example | 16 - .../.github/workflows/playwright.yml | 27 - end-to-end-test/.gitignore | 4 - end-to-end-test/README.md | 63 - end-to-end-test/global-setup.ts | 18 - end-to-end-test/package.json | 21 - end-to-end-test/playwright.config.ts | 118 - .../tests/change-endpoint/change-endpoint.tsx | 72 - .../tests/onboarding/onboarding.ts | 118 - .../tests/sample-test/buy.spec.tsx | 9 - .../tests/traders-hub/dashboard-demo.spec.tsx | 13 - .../tests/traders-hub/dashboard-real.spec.tsx | 43 - end-to-end-test/utils/constants.ts | 1 - end-to-end-test/utils/helpers.ts | 10 - end-to-end-test/utils/index.ts | 5 - jest.config.base.js | 1 + package-lock.json | 2396 ++---- package.json | 11 +- .../personal-details.spec.tsx | 21 + packages/account/package.json | 2 + packages/integration/README.md | 168 + packages/integration/package.json | 26 + packages/integration/src/exampleMock.ts | 12 + packages/integration/src/index.ts | 24 + .../integration/src/mocks/auth/authorize.ts | 70 + .../integration/src/mocks/auth/balance_all.ts | 69 + .../integration/src/mocks/auth/balance_one.ts | 25 + .../src/mocks/auth/get_account_status.ts | 74 + .../mocks/auth/get_financial_assessment.ts | 15 + .../integration/src/mocks/auth/get_limits.ts | 137 + .../src/mocks/auth/get_self_exclusion.ts | 15 + .../src/mocks/auth/get_settings.ts | 50 + packages/integration/src/mocks/auth/index.ts | 36 + .../src/mocks/auth/landing_company.ts | 1841 +++++ .../src/mocks/auth/mt5_login_list.ts | 15 + .../src/mocks/auth/paymentagent_list.ts | 156 + .../src/mocks/auth/platform_dxtrade.ts | 27 + .../src/mocks/auth/platform_mt5.ts | 32 + .../mocks/auth/trading_platform_accounts.ts | 16 + .../trading_platform_available_accounts.ts | 150 + .../src/mocks/general/exchange_rates.ts | 160 + .../integration/src/mocks/general/index.ts | 14 + .../src/mocks/general/payout_currencies.ts | 15 + .../integration/src/mocks/general/time.ts | 15 + .../src/mocks/general/website_status.ts | 1864 +++++ .../src/mocks/location/residents_list.ts | 6972 +++++++++++++++++ .../src/mocks/location/states_list.ts | 326 + packages/integration/src/utils/mocks/mocks.ts | 576 ++ .../integration/src}/utils/suspend/suspend.ts | 0 packages/integration/tsconfig.json | 11 + playwright.config.ts | 54 + 53 files changed, 13708 insertions(+), 2231 deletions(-) delete mode 100644 end-to-end-test/.env.example delete mode 100644 end-to-end-test/.github/workflows/playwright.yml delete mode 100644 end-to-end-test/.gitignore delete mode 100644 end-to-end-test/README.md delete mode 100644 end-to-end-test/global-setup.ts delete mode 100644 end-to-end-test/package.json delete mode 100644 end-to-end-test/playwright.config.ts delete mode 100644 end-to-end-test/tests/change-endpoint/change-endpoint.tsx delete mode 100644 end-to-end-test/tests/onboarding/onboarding.ts delete mode 100644 end-to-end-test/tests/sample-test/buy.spec.tsx delete mode 100644 end-to-end-test/tests/traders-hub/dashboard-demo.spec.tsx delete mode 100644 end-to-end-test/tests/traders-hub/dashboard-real.spec.tsx delete mode 100644 end-to-end-test/utils/constants.ts delete mode 100644 end-to-end-test/utils/helpers.ts delete mode 100644 end-to-end-test/utils/index.ts create mode 100644 packages/account/integration-tests/personal-details/personal-details.spec.tsx create mode 100644 packages/integration/README.md create mode 100644 packages/integration/package.json create mode 100644 packages/integration/src/exampleMock.ts create mode 100644 packages/integration/src/index.ts create mode 100644 packages/integration/src/mocks/auth/authorize.ts create mode 100644 packages/integration/src/mocks/auth/balance_all.ts create mode 100644 packages/integration/src/mocks/auth/balance_one.ts create mode 100644 packages/integration/src/mocks/auth/get_account_status.ts create mode 100644 packages/integration/src/mocks/auth/get_financial_assessment.ts create mode 100644 packages/integration/src/mocks/auth/get_limits.ts create mode 100644 packages/integration/src/mocks/auth/get_self_exclusion.ts create mode 100644 packages/integration/src/mocks/auth/get_settings.ts create mode 100644 packages/integration/src/mocks/auth/index.ts create mode 100644 packages/integration/src/mocks/auth/landing_company.ts create mode 100644 packages/integration/src/mocks/auth/mt5_login_list.ts create mode 100644 packages/integration/src/mocks/auth/paymentagent_list.ts create mode 100644 packages/integration/src/mocks/auth/platform_dxtrade.ts create mode 100644 packages/integration/src/mocks/auth/platform_mt5.ts create mode 100644 packages/integration/src/mocks/auth/trading_platform_accounts.ts create mode 100644 packages/integration/src/mocks/auth/trading_platform_available_accounts.ts create mode 100644 packages/integration/src/mocks/general/exchange_rates.ts create mode 100644 packages/integration/src/mocks/general/index.ts create mode 100644 packages/integration/src/mocks/general/payout_currencies.ts create mode 100644 packages/integration/src/mocks/general/time.ts create mode 100644 packages/integration/src/mocks/general/website_status.ts create mode 100644 packages/integration/src/mocks/location/residents_list.ts create mode 100644 packages/integration/src/mocks/location/states_list.ts create mode 100644 packages/integration/src/utils/mocks/mocks.ts rename {end-to-end-test => packages/integration/src}/utils/suspend/suspend.ts (100%) create mode 100644 packages/integration/tsconfig.json create mode 100644 playwright.config.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index 696df67c9af4..8347ff534c47 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -70,6 +70,7 @@ commands: - "packages/hooks/node_modules" - "packages/cfd/node_modules" - "packages/indicators/node_modules" + - "packages/integration/node_modules" - "packages/p2p/node_modules" - "packages/reports/node_modules" - "packages/shared/node_modules" diff --git a/.gitignore b/.gitignore index 53be93a5a629..d2d2ebaf413c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,4 +23,6 @@ packages/appstore/lib/ packages/appstore/.out .env nx-cloud.env - +test-results/ +playwright-report/ +playwright/.cache/ diff --git a/end-to-end-test/.env.example b/end-to-end-test/.env.example deleted file mode 100644 index 063f3a2b06a2..000000000000 --- a/end-to-end-test/.env.example +++ /dev/null @@ -1,16 +0,0 @@ -# To have needed env variables you need to make a copy out of this file and rename it to `.env` -# you can change any of values listed here to your desired ones -# also you can pass any environment variable to this file and have access to them using `process.env.[ENVIRONMENT_VARIABLE_NAME] (eg. process.env.APPID) -ENDPOINT_PAGE_APP_STORE=false -ENDPOINT_PAGE_DBOT_DASHBOARD=false -ENDPOINT_PAGE_DEBUG_SERVICE_WORKER=false -APPID= -ENDPOINT= -APP_URL= -QA_EMAIL_INBOX_USER_NAME= -QA_EMAIL_INBOX_PASSWORD = -ACCOUNT_RESIDENCE_HIGH_RISK= -ACCOUNT_CITIZENSHIP_HIGH_RISK= -ACCOUNT_RESIDENCE_LOW_RISK= -ACCOUNT_CITIZENSHIP_LOW_RISK= -RISK_LEVEL=low_risk # This stores the risk level that can be either high_risk or low_risk diff --git a/end-to-end-test/.github/workflows/playwright.yml b/end-to-end-test/.github/workflows/playwright.yml deleted file mode 100644 index f5138e1f1c5d..000000000000 --- a/end-to-end-test/.github/workflows/playwright.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Playwright Tests -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] -jobs: - test: - timeout-minutes: 60 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: 18 - - name: Install dependencies - run: npm ci - - name: Install Playwright Browsers - run: npx playwright install --with-deps - - name: Run Playwright tests - run: npx playwright test - - uses: actions/upload-artifact@v3 - if: always() - with: - name: playwright-report - path: playwright-report/ - retention-days: 30 diff --git a/end-to-end-test/.gitignore b/end-to-end-test/.gitignore deleted file mode 100644 index 75e854d8dcf7..000000000000 --- a/end-to-end-test/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules/ -/test-results/ -/playwright-report/ -/playwright/.cache/ diff --git a/end-to-end-test/README.md b/end-to-end-test/README.md deleted file mode 100644 index 8bd0390d5226..000000000000 --- a/end-to-end-test/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# Deriv App End to End test - -This directory is just to implement and run the E2E tests over the app. - -This uses [playwright](https://playwright.dev/) as its main framework and you can simply write test with it. -We strongly suggest you to read the [documentation](https://playwright.dev/docs/intro) of playwright once before you get started. - -## Run the test cases - -To run the End to End test you need to first install playwright on your machine using: - -`npx install playwright` to install the dependencies on your machine. - -then - -`npx playwright test` to start the tests to run. (You also can pass `--debug` option to this command to it to run them in headless browser and check them visually separated by different browsers eg. Chromium, Firefox or Edge) - -`npm run test:e2e` to run the tests from within the root `directory`. - -`npm run test:e2e-dev` to run the tests from within the root `directory` with trace enabled and show the test report. - -## Project structure - -### `.env` file - -It's mandatory to create this file to pass the needed environment variables to the framework to run the tests. The defined variables are these - -| # | Env Variable Name | Functionality | Type | Required | -| --- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | -| 1 | `ENDPOINT_PAGE_APP_STORE` | This variable enables the AppStore in the `AppURL/endpoint` page | Boolean | | -| 2 | `ENDPOINT_PAGE_DBOT_DASHBOARD` | enables the DBot dashboard in the `AppURL/endpoint` page | Boolean | | -| 3 | `ENDPOINT_PAGE_DEBUG_SERVICE_WORKER` | enables the Debug service worker in the `AppURL/endpoint` page | Boolean | | -| 4 | `APPID` | App ID of the qabox that we want to test with, On local machine it should be `9999` to redirect to localhost.binary.sx after sign up(Company convention) | Number | \* | -| 5 | `ENDPOINT` | Endpoint of qabox server | String | \* | -| 6 | `APP_URL` | App URL which tests should run on. Local machine URL is `localhost.binary.sx` | String | \* | -| 7 | `QA_EMAIL_INBOX_USER_NAME` | Username of qabox events page to retrive the signup email and enable the created account (You can find it in the LP under shared-fe folder with the `QA emails login creds` entry name) | String | \* | -| 8 | `QA_EMAIL_INBOX_PASSWORD` | Password of qabox events page to retrive the signup email and enable the created account (You can find it in the LP under shared-fe folder with the `QA emails login creds` entry name) | String | \* | -| 9 | `ACCOUNT_RESIDENCE_HIGH_RISK` | Account residence to use when creating high risk accounts it | String | \* | -| 10 | `ACCOUNT_RESIDENCE_LOW_RISK` | Account residence to use when creating low risk accounts | String | \* | -| 11 | `ACCOUNT_CITIZENSHIP_HIGH_RISK` | Account citizenship to use when creating high risk accounts | String | \* | -| 12 | `ACCOUNT_CITIZENSHIP_LOW_RISK` | Account citizenship to use when creating low risk accounts | String | \* | -| 13 | `RISK_LEVEL` | Risk level for the particular account i.e. high risk or low risk | String | \* | - -### `onboarding.ts` file - -This is the main components which runs before any test suit runs, the main goal of this is to create one account for all of the test cases, save it to a context and use the created context in all of the browsers and before all of the test cases start to run. -`global-setup.ts` runs the mentioned onboarding flow and save the state. Refer to `globalSetup` option in `plauwright.config.ts` to see how its bound to the app. - -So in each test suit that you want to write you need to worry that if you are logged in or not. You just need to get the page from `describe` method like below: - -``` -import { test, expect } from '@playwright/test'; - -test.describe('Change endpoint, Signup and login', () => { - test('Should change the endpoint and sign up', async ({ page }) => { - await page.goto(process.env.APP_URL!); - // now we are logged in to the app and ready to test. YAY! - await expect(page).toHaveTitle('Trader | Deriv'); - // created a new user account and logged in - // Also you can get access to created email account name using `process.env.email` - }); -}); -``` diff --git a/end-to-end-test/global-setup.ts b/end-to-end-test/global-setup.ts deleted file mode 100644 index 8ffa6efe69e2..000000000000 --- a/end-to-end-test/global-setup.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { chromium, FullConfig } from '@playwright/test'; -import OnboardingFlow from './tests/onboarding/onboarding'; - -async function globalSetup(config: FullConfig) { - const browser = await chromium.launch(); - const page = await browser.newPage({ - ignoreHTTPSErrors: true, - httpCredentials: { - username: `${process.env.QA_EMAIL_INBOX_USER_NAME}`, - password: `${process.env.QA_EMAIL_INBOX_PASSWORD}`, - }, - }); - const onboarding = new OnboardingFlow(page); - await onboarding.signUp(); - await page.context().storageState({ path: '/tmp/storage-state.json' }); - await browser.close(); -} -export default globalSetup; diff --git a/end-to-end-test/package.json b/end-to-end-test/package.json deleted file mode 100644 index ca933001abb8..000000000000 --- a/end-to-end-test/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "end-to-end-test", - "version": "1.0.0", - "description": "", - "scripts": { - "test": "npx playwright test" - }, - "keywords": [], - "author": "", - "license": "ISC", - "eslintConfig": { - "rules": { - "testing-library/no-await-sync-query": "off", - "testing-library/prefer-screen-queries": "off" - } - }, - "dependencies": { - "dotenv": "^16.0.3", - "@playwright/test": "^1.33.0" - } -} diff --git a/end-to-end-test/playwright.config.ts b/end-to-end-test/playwright.config.ts deleted file mode 100644 index 01f7c939eb17..000000000000 --- a/end-to-end-test/playwright.config.ts +++ /dev/null @@ -1,118 +0,0 @@ -import type { PlaywrightTestConfig } from '@playwright/test'; -import { devices } from '@playwright/test'; -import { config as dotenvConf } from 'dotenv'; - -/** - * Read environment variables from file. - * https://github.com/motdotla/dotenv - */ -dotenvConf(); -// globalSetup: process.env.CI ? undefined : require.resolve('./global-setup'), - -/** - * See https://playwright.dev/docs/test-configuration. - */ -const config: PlaywrightTestConfig = { - globalSetup: process.env.CI ? undefined : require.resolve('./global-setup'), - testDir: './tests', - /* Maximum time one test can run for. */ - timeout: 100 * 1000, - expect: { - /** - * Maximum time expect() should wait for the condition to be met. - * For example in `await expect(locator).toHaveText();` - */ - timeout: 5000, - }, - /* Run tests in files in parallel */ - fullyParallel: true, - /* Fail the build on CI if you accidentally left test.only in the source code. */ - forbidOnly: !!process.env.CI, - /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, - /* Opt out of parallel tests on CI. */ - workers: process.env.CI ? 1 : undefined, - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ - use: { - storageState: '/tmp/storage-state.json', - ignoreHTTPSErrors: true, - - /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ - actionTimeout: 0, - /* Base URL to use in actions like `await page.goto('/')`. */ - baseURL: process.env.CI ? process.env.test_link : 'https://localhost.binary.sx', - - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', - }, - - /* Configure projects for major browsers */ - projects: [ - { - name: 'chromium', - use: { - ignoreHTTPSErrors: true, - ...devices['Desktop Chrome'], - }, - }, - - // { - // name: 'firefox', - // use: { - // ignoreHTTPSErrors: true, - // ...devices['Desktop Firefox'], - // }, - // }, - - // { - // name: 'webkit', - // use: { - // ignoreHTTPSErrors: true, - // ...devices['Desktop Safari'], - // }, - // }, - - // /* Test against mobile viewports. */ - // // { - // // name: 'Mobile Chrome', - // // use: { - // // ...devices['Pixel 5'], - // // }, - // // }, - // // { - // // name: 'Mobile Safari', - // // use: { - // // ...devices['iPhone 12'], - // // }, - // // }, - - // /* Test against branded browsers. */ - // // { - // // name: 'Microsoft Edge', - // // use: { - // // channel: 'msedge', - // // }, - // // }, - // // { - // // name: 'Google Chrome', - // // use: { - // // channel: 'chrome', - // // }, - // // }, - ], - - /* Folder for test artifacts such as screenshots, videos, traces, etc. */ - // outputDir: 'test-results/', - - /* Run your local dev server before starting the tests */ - webServer: { - command: 'cd .. && npm run serve core', - url: 'https://localhost.binary.sx/', - ignoreHTTPSErrors: true, - reuseExistingServer: true, - }, -}; - -export default config; diff --git a/end-to-end-test/tests/change-endpoint/change-endpoint.tsx b/end-to-end-test/tests/change-endpoint/change-endpoint.tsx deleted file mode 100644 index 2ffea42a3803..000000000000 --- a/end-to-end-test/tests/change-endpoint/change-endpoint.tsx +++ /dev/null @@ -1,72 +0,0 @@ -import { expect, Page } from '@playwright/test'; - -export default class ChangeEndpoint { - readonly page: Page; - - constructor(page: Page) { - this.page = page; - } - async cookieDialogHandler() { - const elem = this.page.locator('.cookie-banner'); - if (await elem.isVisible()) - await this.page.locator('.cookie-banner > button[type=submit]', { hasText: /Accept/ }).click(); - } - - async changeEndpoint() { - await this.page.goto(process.env.APP_URL!); - await expect(this.page).toHaveTitle('Trader | Deriv'); - await this.cookieDialogHandler(); - await this.page.goto(`${process.env.APP_URL!}/endpoint`); - await this.page.waitForSelector( - '#app_contents > .dc-themed-scrollbars > form > .dc-input:nth-child(2) > .dc-input__container > .dc-input__field' - ); - await this.page.click( - '#app_contents > .dc-themed-scrollbars > form > .dc-input:nth-child(2) > .dc-input__container > .dc-input__field' - ); - - await this.page.waitForSelector( - '#app_contents > .dc-themed-scrollbars > form > .dc-input:nth-child(2) > .dc-input__container > .dc-input__field' - ); - await this.page.click( - '#app_contents > .dc-themed-scrollbars > form > .dc-input:nth-child(2) > .dc-input__container > .dc-input__field' - ); - - await this.page.waitForSelector( - '#app_contents > .dc-themed-scrollbars > form > .dc-input:nth-child(2) > .dc-input__container > .dc-input__field' - ); - const first_input_selector = - '#app_contents > .dc-themed-scrollbars > form > .dc-input:nth-child(2) > .dc-input__container > .dc-input__field'; - await this.page.click(first_input_selector, { clickCount: 3 }); - await this.page.keyboard.press('Backspace'); - - await this.page.click(first_input_selector); - - await this.page.type(first_input_selector, process.env.ENDPOINT!); - const second_input_selector = - '#app_contents > .dc-themed-scrollbars > form > .dc-input:nth-child(3) > .dc-input__container > .dc-input__field'; - await this.page.click(second_input_selector, { clickCount: 3 }); - await this.page.keyboard.press('Backspace'); - await this.page.type(second_input_selector, process.env.APPID!); - if ( - !(await this.page.locator("input[name='is_appstore_enabled']").isChecked()) && - process.env.ENDPOINT_PAGE_APP_STORE === 'true' - ) { - await this.page.click('.dc-themed-scrollbars > form > div:nth-child(4) > .dc-checkbox > .dc-checkbox__box'); - } - if ( - !(await this.page.locator("input[name='show_dbot_dashboard']").isChecked()) && - process.env.ENDPOINT_PAGE_DBOT_DASHBOARD === 'true' - ) { - await this.page.click('.dc-themed-scrollbars > form > div:nth-child(5) > .dc-checkbox > .dc-checkbox__box'); - } - if ( - !(await this.page.locator("input[name='is_debug_service_worker_enabled']").isChecked()) && - process.env.ENDPOINT_PAGE_DEBUG_SERVICE_WORKER === 'true' - ) { - await this.page.click('.dc-themed-scrollbars > form > div:nth-child(6) > .dc-checkbox > .dc-checkbox__box'); - } - - await this.page.waitForSelector('#deriv_app > #app_contents > .dc-themed-scrollbars > form > .dc-btn--primary'); - await this.page.click('#deriv_app > #app_contents > .dc-themed-scrollbars > form > .dc-btn--primary'); - } -} diff --git a/end-to-end-test/tests/onboarding/onboarding.ts b/end-to-end-test/tests/onboarding/onboarding.ts deleted file mode 100644 index 0fa449f06e47..000000000000 --- a/end-to-end-test/tests/onboarding/onboarding.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { Page, expect, chromium } from '@playwright/test'; -import { suspend } from '../../utils'; -import ChangeEndpoint from '../change-endpoint/change-endpoint'; - -export default class OnboardingFlow { - readonly page: Page; - readonly ChangeEndpoint: ChangeEndpoint; - readonly email: string; - private signupPage: Page | null; - - constructor(page: Page) { - const randomString = new Date().getTime(); - this.page = page; - this.email = `deriv-fe-e2e-${randomString}@deriv.com`; - this.signupPage = null; - this.ChangeEndpoint = new ChangeEndpoint(page); - } - - async updateServerURLAndAppIDInLocalStorage() { - const server = process.env.ENDPOINT; - const app_id = process.env.APPID; - await this?.signupPage?.evaluate(`localStorage.setItem('config.server_url', '${server}');`); - await this?.signupPage?.evaluate(`localStorage.setItem('config.app_id', '${app_id}');`); - await this?.signupPage?.evaluate(`window.location.reload();`); - const server_url = await this?.signupPage?.evaluate(() => { - const result = localStorage.getItem('config.server_url'); - return Promise.resolve(result); - }); - expect(server_url).toBe(process.env.ENDPOINT); - await suspend(1000); - } - async demoWizardHandler() { - await this.page.locator('.static-dashboard-wrapper__header > h2', { hasText: 'CFDs' }); - await this.page.locator('.static-dashboard-wrapper__header > h2', { hasText: 'Multipliers' }); - await this.page.locator('button[type="submit"]', { hasText: 'Next' }).click(); - await this.page.locator('button[type="submit"]', { hasText: 'Next' }).click(); - await this.page.locator('button[type="submit"]', { hasText: 'Next' }).click(); - await this.page.locator('button[type="submit"]', { hasText: 'Next' }).click(); - } - async signUp() { - await this.ChangeEndpoint.changeEndpoint(); - await this.page.goto(process.env.APP_URL!); - await this.page.waitForSelector('#dt_signup_button'); - const [newPage] = await Promise.all([ - this.page.context().waitForEvent('page'), // get `context` by destructuring with `page` in the test params; 'page' is a built-in event, and **you must wait for this like this,**, or `newPage` will just be the response object, rather than an actual Playwright page object. - await this.page.click('#dt_signup_button'), - ]); - this.signupPage = newPage; - await suspend(10000); - await this.updateServerURLAndAppIDInLocalStorage(); - await this.signupPage.waitForLoadState(); - await this.signupPage.locator('input[name=email]#dm-email-input').isVisible(); - await this.signupPage.locator('input[name=email]#dm-email-input').type(this.email); - process.env.email = this.email; - await this.signupPage.locator('//*[@id="gatsby-focus-wrapper"]/main/section/form/div/label/div'); - await this.signupPage.locator('//*[@id="gatsby-focus-wrapper"]/main/section/form/div/label/div').click(); - await this.signupPage.waitForSelector('#dm-new-signup'); - await this.signupPage.click('#dm-new-signup'); - const browser = await chromium.launch(); - const mailPage = await browser.newPage({ - ignoreHTTPSErrors: true, - httpCredentials: { - username: `${process.env.QA_EMAIL_INBOX_USER_NAME}`, - password: `${process.env.QA_EMAIL_INBOX_PASSWORD}`, - }, - }); - await mailPage.goto(`https://${process.env.ENDPOINT!}/events`); - let hrefs = await mailPage.evaluate(() => { - return Array.from(document.links) - .filter(item => item.href.endsWith('_account_opening_new.html')) - .map(item => item.href); - }); - hrefs = hrefs.slice().reverse(); - // TODO need to find a better approach instead of this - // eslint-disable-next-line no-restricted-syntax - for await (const item of hrefs) { - await mailPage.goto(item); - if (await mailPage.getByText(this.email).isVisible()) { - const element = await mailPage.locator('a', { hasText: 'redirect?action=signup' }); - const val = await element.getAttribute('href'); - if (val) await this.page.goto(val); - await mailPage.close(); - await this.signupPage.close(); - break; - } - } - - this.page.waitForSelector('#dt_core_set-residence-form_signup-residence-select').then(async () => { - await this.page.click('#dt_core_set-residence-form_signup-residence-select'); - }); - - const RISK_LEVEL = process.env.RISK_LEVEL; - - const ACCOUNT_CITIZENSHIP = - (RISK_LEVEL === 'low_risk' - ? process.env.ACCOUNT_CITIZENSHIP_LOW_RISK - : process.env.ACCOUNT_CITIZENSHIP_HIGH_RISK) || ''; - - const ACCOUNT_RESIDENCE = - (RISK_LEVEL === 'low_risk' - ? process.env.ACCOUNT_RESIDENCE_LOW_RISK - : process.env.ACCOUNT_RESIDENCE_HIGH_RISK) || ''; - - await expect(this.page.getByText(ACCOUNT_RESIDENCE)).toBeVisible(); - await this.page.getByText(ACCOUNT_RESIDENCE).click(); - await this.page.click('#dt_core_set-citizenship-form_signup-citizenship-select'); - await expect(this.page.getByText(ACCOUNT_CITIZENSHIP)).toBeVisible(); - await this.page.getByText(ACCOUNT_CITIZENSHIP).click(); - await this.page.getByRole('dialog').getByRole('button', { name: 'Next' }).click(); - await expect(this.page.getByText(/Keep your account secure/)).toBeVisible(); - await this.page.locator('#dt_core_account-signup-modal_account-signup-password-field'); - await expect(this.page.getByText(/Start trading/)).toBeDisabled(); - await this.page.locator('#dt_core_account-signup-modal_account-signup-password-field').type('Abcd2134'); - await expect(this.page.getByText(/Start trading/)).toBeEnabled(); - await this.page.getByText(/Start trading/).click(); - if (this.page.url().includes('onboarding')) await this.demoWizardHandler(); - } -} diff --git a/end-to-end-test/tests/sample-test/buy.spec.tsx b/end-to-end-test/tests/sample-test/buy.spec.tsx deleted file mode 100644 index 99d20438e45b..000000000000 --- a/end-to-end-test/tests/sample-test/buy.spec.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { test, expect } from '@playwright/test'; - -test.describe('Should signup and logged in, in the app', () => { - test('Title should be "Trader | Deriv"', async ({ page }) => { - await page.goto(process.env.APP_URL!); - // now we are logged in to the app and ready to write tests - await expect(page).toHaveTitle('Trader | Deriv'); - }); -}); diff --git a/end-to-end-test/tests/traders-hub/dashboard-demo.spec.tsx b/end-to-end-test/tests/traders-hub/dashboard-demo.spec.tsx deleted file mode 100644 index 101b39872100..000000000000 --- a/end-to-end-test/tests/traders-hub/dashboard-demo.spec.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import { test, expect } from '@playwright/test'; -import { TRADERS_HUB_URL, switchAccountType } from '../../utils'; - -test.describe("Trader's Hub Dashboard", () => { - test.beforeEach(async ({ page }) => { - await page.goto(TRADERS_HUB_URL); - }); - test('It should switch from Demo to Real', async ({ page }) => { - await switchAccountType(page, 'Demo', 'Real'); - const get_deriv_account_button = await page.getByText('Get a Deriv account').first(); - expect(get_deriv_account_button).toBeDefined(); - }); -}); diff --git a/end-to-end-test/tests/traders-hub/dashboard-real.spec.tsx b/end-to-end-test/tests/traders-hub/dashboard-real.spec.tsx deleted file mode 100644 index 46e30c3ce60c..000000000000 --- a/end-to-end-test/tests/traders-hub/dashboard-real.spec.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { test, expect } from '@playwright/test'; -import { TRADERS_HUB_URL, switchAccountType } from '../../utils'; - -test.describe("Trader's Hub Dashboard", () => { - const HIGH_RISK_MULTIPLIER_TEXT = 'text=Multipliers trading platform.'; - const LOW_RISK_MULTIPLIER_TEXT = 'text=Options and multipliers trading platform.'; - test.beforeEach(async ({ page }) => { - await page.goto(TRADERS_HUB_URL); - await switchAccountType(page, 'Demo', 'Real'); - }); - - test('It should switch from Real to Demo', async ({ page }) => { - await switchAccountType(page, 'Real', 'Demo'); - const demo_count = await page.getByText(/Demo/).count(); - expect(demo_count).toBeGreaterThanOrEqual(1); - }); - - test('It should have the regulator switcher for low risk and no regulator switcher for high risk', async ({ - page, - }) => { - const regulator_switcher = await page.getByText('Regulation:').count(); - if (process.env.RISK_LEVEL === 'low_risk') { - expect(regulator_switcher).toEqual(1); - } else { - expect(regulator_switcher).toEqual(0); - } - }); - - test('It should switch to EU for low risk', async ({ page }) => { - if (process.env.RISK_LEVEL === 'low_risk') { - await page.getByText('EU', { exact: true }).first().click(); - expect(await page.locator(HIGH_RISK_MULTIPLIER_TEXT)).toBeDefined(); - } - }); - - test('It should show Non-EU content for low risk and EU content for high risk on load', async ({ page }) => { - if (process.env.RISK_LEVEL === 'low_risk') { - expect(await page.locator(LOW_RISK_MULTIPLIER_TEXT)).toBeDefined(); - } else { - expect(await page.locator(HIGH_RISK_MULTIPLIER_TEXT)).toBeDefined(); - } - }); -}); diff --git a/end-to-end-test/utils/constants.ts b/end-to-end-test/utils/constants.ts deleted file mode 100644 index 18c6a8333b43..000000000000 --- a/end-to-end-test/utils/constants.ts +++ /dev/null @@ -1 +0,0 @@ -export const TRADERS_HUB_URL = `${process.env.APP_URL}/appstore/traders-hub`; diff --git a/end-to-end-test/utils/helpers.ts b/end-to-end-test/utils/helpers.ts deleted file mode 100644 index dd264f3d51fe..000000000000 --- a/end-to-end-test/utils/helpers.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Page } from '@playwright/test'; - -export const switchAccountType = async (page: Page, from_type: string, to_type: string) => { - await page.waitForLoadState('domcontentloaded'); - await page.waitForSelector('.account-type-dropdown--parent', { timeout: 0 }); - await page.waitForSelector(`.account-type-dropdown--${from_type.toLowerCase()}`, { timeout: 0 }); - await page.getByTestId('dti_dropdown_display').getByText(from_type).click({ timeout: 0 }); - await page.locator(`#${to_type.toLocaleLowerCase()}`).click(); - await page.waitForLoadState('domcontentloaded'); -}; diff --git a/end-to-end-test/utils/index.ts b/end-to-end-test/utils/index.ts deleted file mode 100644 index 0d04acd1c841..000000000000 --- a/end-to-end-test/utils/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { TRADERS_HUB_URL } from './constants'; -import { switchAccountType } from './helpers'; -import suspend from './suspend/suspend'; - -export { TRADERS_HUB_URL, switchAccountType, suspend }; diff --git a/jest.config.base.js b/jest.config.base.js index 51deb607f5e2..b9820f8cd0c0 100644 --- a/jest.config.base.js +++ b/jest.config.base.js @@ -12,4 +12,5 @@ module.exports = { transformIgnorePatterns: ['/node_modules/(?!@enykeev/react-virtualized).+\\.js$'], setupFiles: ['/../../jest.setup.js'], setupFilesAfterEnv: ['/../../setupTests.js'], + testPathIgnorePatterns: ['/integration-tests/'], }; diff --git a/package-lock.json b/package-lock.json index 50e9a9f242f9..d50e58fdee0b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,6 +43,7 @@ "@types/qrcode.react": "^1.0.2", "@types/react-loadable": "^5.5.6", "@types/react-transition-group": "^4.4.4", + "@types/ws": "^8.5.5", "@xmldom/xmldom": "^0.8.4", "acorn": "^6.1.1", "babel-core": "^6.26.3", @@ -153,6 +154,7 @@ "sass-loader": "^12.6.0", "sass-resources-loader": "^2.1.1", "scratch-blocks": "0.1.0-prerelease.20200917235131", + "selfsigned": "^2.1.1", "shx": "^0.3.2", "source-map-loader": "^1.1.2", "style-loader": "^1.2.1", @@ -171,6 +173,7 @@ "webpack-manifest-plugin": "^4.0.2", "webpack-node-externals": "^2.5.2", "workbox-webpack-plugin": "^6.0.2", + "ws": "^8.13.0", "yup": "^0.32.11" }, "devDependencies": { @@ -193,6 +196,7 @@ "@deriv/eslint-config-deriv": "^1.0.0-beta.3", "@jest/globals": "^26.5.3", "@nrwl/nx-cloud": "latest", + "@playwright/test": "^1.37.1", "@testing-library/jest-dom": "^5.12.0", "@testing-library/react": "^12.0.0", "@testing-library/react-hooks": "^7.0.2", @@ -1963,9 +1967,9 @@ } }, "node_modules/@babel/standalone": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.22.10.tgz", - "integrity": "sha512-VmK2sWxUTfDDh9mPfCtFJPIehZToteqK+Zpwq8oJUjJ+WeeKIFTTQIrDzH7jEdom+cAaaguU7FI/FBsBWFkIeQ==", + "version": "7.22.14", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.22.14.tgz", + "integrity": "sha512-i61lDNe0nRm44nZj05g+1HNb0EVfDGaTI6PkoeUMUSel3GTG6T1OM3BdjZIXghnnFB8bSWbmfS1lkBQgNUdu5w==", "engines": { "node": ">=6.9.0" } @@ -2811,19 +2815,19 @@ } }, "node_modules/@datadog/browser-core": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-core/-/browser-core-4.47.0.tgz", - "integrity": "sha512-C3qm4kiT8OoK09UnAed2HTY9ecDaz0n7Qm0m4WwC+lpwOR97oduWdggbvgJgLGdJLleQjqEFHyuB8BEvEQ66BQ==" + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-core/-/browser-core-4.48.0.tgz", + "integrity": "sha512-Cs/mGnE+FV3cvJ4Zl9FMuZOltp2Gy4Ji4v1zgodp4XDxU/PLFKppzRLqsfE6NMBgUpQKK9mh9zk1tBZtpUVEjw==" }, "node_modules/@datadog/browser-logs": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-logs/-/browser-logs-4.47.0.tgz", - "integrity": "sha512-leDi/qsQVLzWuVu1N1lSNs4mTb9CZ7/p8IMAO2WEg9yIHqTVUZG/+uxWyzbFdexpRo8KuKIBL1hvHQP4BAdwWQ==", + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-logs/-/browser-logs-4.48.0.tgz", + "integrity": "sha512-Kha0lNj9rbooG1mX/gsktLrTRYzz/8WC0F0UqfO43MKvOREDgSkqWYAhR2A+91+y+Mvrm2UqwwD3Kv0ZRAGBzw==", "dependencies": { - "@datadog/browser-core": "4.47.0" + "@datadog/browser-core": "4.48.0" }, "peerDependencies": { - "@datadog/browser-rum": "4.47.0" + "@datadog/browser-rum": "4.48.0" }, "peerDependenciesMeta": { "@datadog/browser-rum": { @@ -2832,16 +2836,15 @@ } }, "node_modules/@datadog/browser-rum": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-rum/-/browser-rum-4.47.0.tgz", - "integrity": "sha512-+CK8Z7w0fZnCN1oK7S3TQq9LfDmpXDnYxzmHw+11INHHdFhWqmUojpKKi+7+XLMaTOvU83yYBfOBFz2DSWvwew==", + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-rum/-/browser-rum-4.48.0.tgz", + "integrity": "sha512-drN+r8JV2EUG5PFUPKJYIpKP7t/hjJmt8IrxfEZyzDErD0Z7imKpKaprjGeottR2XqHngm1+JDXgZTvHPqSNQg==", "dependencies": { - "@datadog/browser-core": "4.47.0", - "@datadog/browser-rum-core": "4.47.0", - "@datadog/browser-worker": "4.47.0" + "@datadog/browser-core": "4.48.0", + "@datadog/browser-rum-core": "4.48.0" }, "peerDependencies": { - "@datadog/browser-logs": "4.47.0" + "@datadog/browser-logs": "4.48.0" }, "peerDependenciesMeta": { "@datadog/browser-logs": { @@ -2850,25 +2853,17 @@ } }, "node_modules/@datadog/browser-rum-core": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-rum-core/-/browser-rum-core-4.47.0.tgz", - "integrity": "sha512-6nOnFPZJ0cYkWV4w7lbtCxVGLiquxw68D1qvwXbMtxZ1q+zroLhPY+lpk7Hd6XN7OT7xmTP2wbTnr0DL5VGwig==", - "dependencies": { - "@datadog/browser-core": "4.47.0" - } - }, - "node_modules/@datadog/browser-worker": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-worker/-/browser-worker-4.47.0.tgz", - "integrity": "sha512-7/jiPXiGYStd40zsQl0U6DBkkoKhFPuWgl5R/k4sKaMdZ3YXwhL3M+js7S7MIGsrNvpoZygEQml+McVYZ2Vmyg==", + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-rum-core/-/browser-rum-core-4.48.0.tgz", + "integrity": "sha512-qrK55AcBQDzHcq/jHLlz58UeX7qEl/UZU4BVGt226KAhJrn+WQrtk0yzwnSTp9YjamxY0QP62Zu7mP7fAf7Nog==", "dependencies": { - "@datadog/browser-core": "4.47.0" + "@datadog/browser-core": "4.48.0" } }, "node_modules/@deriv/api-types": { - "version": "1.0.118", - "resolved": "https://registry.npmjs.org/@deriv/api-types/-/api-types-1.0.118.tgz", - "integrity": "sha512-+q/PEH/O3wRrJlDQWl8x03JCBhQQBZt343maDqDRAM//H2K7h4YT5ucnYHJiS+6xu5jGGeq7JR8lT4R14mfd3Q==" + "version": "1.0.121", + "resolved": "https://registry.npmjs.org/@deriv/api-types/-/api-types-1.0.121.tgz", + "integrity": "sha512-Sj42zIOj8Dbxe3nMN+Qf+tohlsKGRD6dw2lgzd835MDi9G/TZzVTsXJvzlJqvKSPSA94hIBWFc0PBOF6d0V+0g==" }, "node_modules/@deriv/deriv-api": { "version": "1.0.13", @@ -3086,9 +3081,9 @@ } }, "node_modules/@devtools-ds/themes/node_modules/@design-systems/utils/node_modules/@babel/runtime": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", - "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz", + "integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -3374,11 +3369,11 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.1.tgz", - "integrity": "sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", "dependencies": { - "@floating-ui/dom": "^1.3.0" + "@floating-ui/dom": "^1.5.1" }, "peerDependencies": { "react": ">=16.8.0", @@ -7243,6 +7238,25 @@ "typescript": "^3 || ^4" } }, + "node_modules/@playwright/test": { + "version": "1.37.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.37.1.tgz", + "integrity": "sha512-bq9zTli3vWJo8S3LwB91U0qDNQDpEXnw7knhxLM0nwDvexQAwx9tO8iKDZSqqneVq+URd/WIoz+BALMqUTgdSg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "playwright-core": "1.37.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -8112,13 +8126,13 @@ } }, "node_modules/@sentry-internal/tracing": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.64.0.tgz", - "integrity": "sha512-1XE8W6ki7hHyBvX9hfirnGkKDBKNq3bDJyXS86E0bYVDl94nvbRM9BD9DHsCFetqYkVm1yDGEK+6aUVs4CztoQ==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.66.0.tgz", + "integrity": "sha512-3vCgC2hC3T45pn53yTDVcRpHoJTBxelDPPZVsipAbZnoOVPkj7n6dNfDhj3I3kwWCBPahPkXmE+R4xViR8VqJg==", "dependencies": { - "@sentry/core": "7.64.0", - "@sentry/types": "7.64.0", - "@sentry/utils": "7.64.0", + "@sentry/core": "7.66.0", + "@sentry/types": "7.66.0", + "@sentry/utils": "7.66.0", "tslib": "^2.4.1 || ^1.9.3" }, "engines": { @@ -8126,15 +8140,15 @@ } }, "node_modules/@sentry/browser": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.64.0.tgz", - "integrity": "sha512-lB2IWUkZavEDclxfLBp554dY10ZNIEvlDZUWWathW+Ws2wRb6PNLtuPUNu12R7Q7z0xpkOLrM1kRNN0OdldgKA==", - "dependencies": { - "@sentry-internal/tracing": "7.64.0", - "@sentry/core": "7.64.0", - "@sentry/replay": "7.64.0", - "@sentry/types": "7.64.0", - "@sentry/utils": "7.64.0", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.66.0.tgz", + "integrity": "sha512-rW037rf8jkhyykG38+HUdwkRCKHJEMM5NkCqPIO5zuuxfLKukKdI2rbvgJ93s3/9UfsTuDFcKFL1u43mCn6sDw==", + "dependencies": { + "@sentry-internal/tracing": "7.66.0", + "@sentry/core": "7.66.0", + "@sentry/replay": "7.66.0", + "@sentry/types": "7.66.0", + "@sentry/utils": "7.66.0", "tslib": "^2.4.1 || ^1.9.3" }, "engines": { @@ -8142,12 +8156,12 @@ } }, "node_modules/@sentry/core": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.64.0.tgz", - "integrity": "sha512-IzmEyl5sNG7NyEFiyFHEHC+sizsZp9MEw1+RJRLX6U5RITvcsEgcajSkHQFafaBPzRrcxZMdm47Cwhl212LXcw==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.66.0.tgz", + "integrity": "sha512-WMAEPN86NeCJ1IT48Lqiz4MS5gdDjBwP4M63XP4msZn9aujSf2Qb6My5uT87AJr9zBtgk8MyJsuHr35F0P3q1w==", "dependencies": { - "@sentry/types": "7.64.0", - "@sentry/utils": "7.64.0", + "@sentry/types": "7.66.0", + "@sentry/utils": "7.66.0", "tslib": "^2.4.1 || ^1.9.3" }, "engines": { @@ -8155,32 +8169,32 @@ } }, "node_modules/@sentry/replay": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.64.0.tgz", - "integrity": "sha512-alaMCZDZhaAVmEyiUnszZnvfdbiZx5MmtMTGrlDd7tYq3K5OA9prdLqqlmfIJYBfYtXF3lD0iZFphOZQD+4CIw==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.66.0.tgz", + "integrity": "sha512-5Y2SlVTOFTo3uIycv0mRneBakQtLgWkOnsJaC5LB0Ip0TqVKiMCbQ578vvXp+yvRj4LcS1gNd98xTTNojBoQNg==", "dependencies": { - "@sentry/core": "7.64.0", - "@sentry/types": "7.64.0", - "@sentry/utils": "7.64.0" + "@sentry/core": "7.66.0", + "@sentry/types": "7.66.0", + "@sentry/utils": "7.66.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.64.0.tgz", - "integrity": "sha512-LqjQprWXjUFRmzIlUjyA+KL+38elgIYmAeoDrdyNVh8MK5IC1W2Lh1Q87b4yOiZeMiIhIVNBd7Ecoh2rodGrGA==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.66.0.tgz", + "integrity": "sha512-uUMSoSiar6JhuD8p7ON/Ddp4JYvrVd2RpwXJRPH1A4H4Bd4DVt1mKJy1OLG6HdeQv39XyhB1lPZckKJg4tATPw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.64.0.tgz", - "integrity": "sha512-HRlM1INzK66Gt+F4vCItiwGKAng4gqzCR4C5marsL3qv6SrKH98dQnCGYgXluSWaaa56h97FRQu7TxCk6jkSvQ==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.66.0.tgz", + "integrity": "sha512-9GYUVgXjK66uXXcLXVMXVzlptqMtq1eJENCuDeezQiEFrNA71KkLDg00wESp+LL+bl3wpVTBApArpbF6UEG5hQ==", "dependencies": { - "@sentry/types": "7.64.0", + "@sentry/types": "7.66.0", "tslib": "^2.4.1 || ^1.9.3" }, "engines": { @@ -9596,9 +9610,9 @@ "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" }, "node_modules/@storybook/builder-webpack4/node_modules/@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/ast": { "version": "1.9.0", @@ -10891,9 +10905,9 @@ } }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "node_modules/@storybook/builder-webpack5/node_modules/colorette": { "version": "1.4.0", @@ -11318,9 +11332,9 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "node_modules/@storybook/core-common/node_modules/@webassemblyjs/ast": { "version": "1.9.0", @@ -12142,9 +12156,9 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "node_modules/@storybook/core-server/node_modules/@webassemblyjs/ast": { "version": "1.9.0", @@ -13065,9 +13079,9 @@ "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" }, "node_modules/@storybook/manager-webpack4/node_modules/@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/ast": { "version": "1.9.0", @@ -14345,9 +14359,9 @@ } }, "node_modules/@storybook/manager-webpack5/node_modules/@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "node_modules/@storybook/manager-webpack5/node_modules/ansi-styles": { "version": "4.3.0", @@ -14859,9 +14873,9 @@ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "node_modules/@storybook/react/node_modules/acorn": { "version": "7.4.1", @@ -15932,9 +15946,9 @@ "license": "MIT" }, "node_modules/@types/loadjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/loadjs/-/loadjs-4.0.1.tgz", - "integrity": "sha512-UEMOleWwITwDvj+kI6T4etC9yMjmejH6UdJRAa1MWZwzDIW+Iz7T6z6Zc96N/5FeFsxAEBA/zP1ki+HluXPcHQ==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/loadjs/-/loadjs-4.0.2.tgz", + "integrity": "sha512-tsPs2Pv+T+MYU6wh+a5IZS9ryHrQza27j+yJ84yiPCLQgDjjM7aBfjAKPgDi9ks1x5vY0tESvux/SwHRAlMqLQ==" }, "node_modules/@types/lodash": { "version": "4.14.197", @@ -15975,7 +15989,7 @@ }, "node_modules/@types/minimist": { "version": "1.2.2", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@types/node": { @@ -16034,22 +16048,22 @@ "license": "MIT" }, "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.6.tgz", + "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==" }, "node_modules/@types/qrcode.react": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/qrcode.react/-/qrcode.react-1.0.2.tgz", - "integrity": "sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/qrcode.react/-/qrcode.react-1.0.3.tgz", + "integrity": "sha512-gl7Ozf3BRQwfDUAU2xx7sWRBe/s7TqO0HAJukSQHbEVfQrFo5WKgZl0BHlN8u9W1DHXb4elgKRolHLZkgETXyA==", "dependencies": { "@types/react": "*" } }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" }, "node_modules/@types/reach__router": { "version": "1.3.11", @@ -16217,9 +16231,9 @@ "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" }, "node_modules/@types/uglify-js": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", - "integrity": "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==", + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.2.tgz", + "integrity": "sha512-9SjrHO54LINgC/6Ehr81NjAxAYvwEZqjUHLjJYvC4Nmr9jbLQCIZbWSvl4vXQkkmR1UAuaKDycau3O1kWGFyXQ==", "dependencies": { "source-map": "^0.6.1" } @@ -16274,6 +16288,14 @@ "node": ">= 8" } }, + "node_modules/@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { "version": "15.0.14", "license": "MIT", @@ -17030,7 +17052,7 @@ }, "node_modules/abbrev": { "version": "1.1.1", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/accepts": { @@ -17148,7 +17170,7 @@ }, "node_modules/agentkeepalive": { "version": "4.2.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "debug": "^4.1.0", @@ -17359,7 +17381,7 @@ }, "node_modules/are-we-there-yet": { "version": "3.0.1", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "delegates": "^1.0.0", @@ -17563,13 +17585,13 @@ } }, "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", + "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-array-method-boxes-properly": "^1.0.0", "is-string": "^1.0.7" }, @@ -17591,9 +17613,28 @@ "get-intrinsic": "^1.1.3" } }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -17706,16 +17747,6 @@ } ] }, - "node_modules/async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -19791,7 +19822,7 @@ }, "node_modules/camelcase-keys": { "version": "6.2.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "camelcase": "^5.3.1", @@ -19878,9 +19909,9 @@ } }, "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", "peer": true, "dependencies": { "assertion-error": "^1.1.0", @@ -22563,7 +22594,7 @@ }, "node_modules/decamelize-keys": { "version": "1.1.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "decamelize": "^1.1.0", @@ -22578,7 +22609,7 @@ }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -23903,7 +23934,7 @@ }, "node_modules/env-paths": { "version": "2.2.1", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -23921,7 +23952,7 @@ }, "node_modules/err-code": { "version": "2.0.3", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/errno": { @@ -23951,17 +23982,18 @@ } }, "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", "dependencies": { "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -23981,14 +24013,18 @@ "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", "safe-regex-test": "^1.0.0", "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -26933,15 +26969,15 @@ } }, "node_modules/fraction.js": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.1.tgz", - "integrity": "sha512-/KxoyCnPM0GwYI4NN0Iag38Tqt+od3/mLuguepLgCAKPn0ZhC544nssAW0tG2/00zXEYl9W+7hwAIpLHo6Oc7Q==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.4.tgz", + "integrity": "sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==", "engines": { "node": "*" }, "funding": { "type": "patreon", - "url": "https://www.patreon.com/infusion" + "url": "https://github.com/sponsors/rawify" } }, "node_modules/fragment-cache": { @@ -27157,7 +27193,7 @@ }, "node_modules/gauge": { "version": "4.0.4", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", @@ -27173,19 +27209,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "optional": true, - "peer": true, - "dependencies": { - "globule": "^1.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "license": "MIT", @@ -27210,12 +27233,13 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" }, "funding": { @@ -27720,55 +27744,6 @@ "dev": true, "license": "MIT" }, - "node_modules/globule": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", - "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", - "optional": true, - "peer": true, - "dependencies": { - "glob": "~7.1.1", - "lodash": "^4.17.21", - "minimatch": "~3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/globule/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "optional": true, - "peer": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globule/node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "optional": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/gonzales-pe": { "version": "4.3.0", "dev": true, @@ -27955,7 +27930,7 @@ }, "node_modules/hard-rejection": { "version": "2.1.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -28318,7 +28293,7 @@ }, "node_modules/hosted-git-info": { "version": "4.1.0", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -28329,7 +28304,7 @@ }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "6.0.0", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -28717,7 +28692,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "devOptional": true + "dev": true }, "node_modules/http-deceiver": { "version": "1.2.7", @@ -28957,7 +28932,7 @@ }, "node_modules/humanize-ms": { "version": "1.2.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.0.0" @@ -29807,7 +29782,7 @@ }, "node_modules/is-lambda": { "version": "1.0.1", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/is-lite": { @@ -33928,12 +33903,27 @@ "version": "4.0.8", "license": "MIT" }, + "node_modules/lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "peer": true }, + "node_modules/lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==" + }, "node_modules/lodash.isfunction": { "version": "3.0.9", "dev": true, @@ -33967,6 +33957,11 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==" + }, "node_modules/lodash.snakecase": { "version": "4.1.1", "dev": true, @@ -33995,6 +33990,11 @@ "version": "4.5.0", "license": "MIT" }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + }, "node_modules/lodash.upperfirst": { "version": "4.3.1", "dev": true, @@ -34326,7 +34326,7 @@ }, "node_modules/map-obj": { "version": "4.3.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -34839,7 +34839,7 @@ }, "node_modules/minimist-options": { "version": "4.1.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "arrify": "^1.0.1", @@ -34917,7 +34917,7 @@ }, "node_modules/minipass-sized": { "version": "1.0.3", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -35068,9 +35068,9 @@ } }, "node_modules/mobx": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.10.0.tgz", - "integrity": "sha512-WMbVpCMFtolbB8swQ5E2YRrU+Yu8iLozCVx3CdGjbBKlP7dFiCSuiG06uea3JCFN5DnvtAX7+G5Bp82e2xu0ww==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.10.2.tgz", + "integrity": "sha512-B1UGC3ieK3boCjnMEcZSwxqRDMdzX65H/8zOHbuTY8ZhvrIjTUoLRR2TP2bPqIgYRfb3+dUigu8yMZufNjn0LQ==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" @@ -35476,11 +35476,11 @@ } }, "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "engines": { - "node": ">= 6.0.0" + "node": ">= 6.13.0" } }, "node_modules/node-gyp": { @@ -35692,469 +35692,9 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, - "node_modules/node-sass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.3.tgz", - "integrity": "sha512-8MIlsY/4dXUkJDYht9pIWBhMil3uHmE8b/AdJPjmFn1nBx9X9BASzfzmsCy0uCCb8eqI3SYYzVPDswWqSx7gjw==", - "hasInstallScript": true, - "optional": true, - "peer": true, - "dependencies": { - "async-foreach": "^0.1.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "lodash": "^4.17.15", - "meow": "^9.0.0", - "nan": "^2.13.2", - "node-gyp": "^8.4.1", - "npmlog": "^5.0.0", - "request": "^2.88.0", - "sass-graph": "^4.0.1", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "bin": { - "node-sass": "bin/node-sass" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/node-sass/node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "optional": true, - "peer": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/node-sass/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "optional": true, - "peer": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-sass/node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "optional": true, - "peer": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/node-sass/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/node-sass/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "optional": true, - "peer": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/node-sass/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "optional": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/node-sass/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/node-sass/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true, - "peer": true - }, - "node_modules/node-sass/node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-sass/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-sass/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "optional": true, - "peer": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/node-sass/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "peer": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-sass/node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "optional": true, - "peer": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/node-sass/node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "optional": true, - "peer": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/node-sass/node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "optional": true, - "peer": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "node_modules/node-sass/node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "optional": true, - "peer": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/node-sass/node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "optional": true, - "peer": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-sass/node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "optional": true, - "peer": true, - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, - "node_modules/node-sass/node_modules/npmlog/node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "optional": true, - "peer": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-sass/node_modules/npmlog/node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "optional": true, - "peer": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-sass/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "optional": true, - "peer": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-sass/node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "optional": true, - "peer": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/node-sass/node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "optional": true, - "peer": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-sass/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "optional": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-sass/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "optional": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/node-sass/node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "optional": true, - "peer": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/node-sass/node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "optional": true, - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/node-sass/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "optional": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/nopt": { "version": "5.0.0", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "abbrev": "1" @@ -36168,7 +35708,7 @@ }, "node_modules/normalize-package-data": { "version": "3.0.3", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", @@ -36182,7 +35722,7 @@ }, "node_modules/normalize-package-data/node_modules/lru-cache": { "version": "6.0.0", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "yallist": "^4.0.0" @@ -36193,7 +35733,7 @@ }, "node_modules/normalize-package-data/node_modules/semver": { "version": "7.3.8", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" @@ -38288,6 +37828,18 @@ "node": ">=8" } }, + "node_modules/playwright-core": { + "version": "1.37.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.37.1.tgz", + "integrity": "sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/please-upgrade-node": { "version": "3.2.0", "dev": true, @@ -39987,7 +39539,7 @@ }, "node_modules/promise-retry": { "version": "2.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "err-code": "^2.0.2", @@ -40017,13 +39569,13 @@ } }, "node_modules/promise.prototype.finally": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.4.tgz", - "integrity": "sha512-nNc3YbgMfLzqtqvO/q5DP6RR0SiHI9pUPGzyDf1q+usTwCN2kjvAnJkBb7bHe3o+fFSBPpsGMoYtaSi+LTNqng==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.5.tgz", + "integrity": "sha512-4TQ3Dk8yyUZGyU+UXInKdkQ2b6xtiBXAIScGAtGnXVmJtG1uOrxRgbF1ggIu72uzoWFzUfT3nUKa1SuMm9NBdg==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -40419,7 +39971,7 @@ }, "node_modules/quick-lru": { "version": "4.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -41755,7 +41307,7 @@ }, "node_modules/redent": { "version": "3.0.0", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "indent-string": "^4.0.0", @@ -41873,12 +41425,13 @@ "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "license": "MIT", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -42716,9 +42269,9 @@ } }, "node_modules/rudder-sdk-js": { - "version": "2.40.4", - "resolved": "https://registry.npmjs.org/rudder-sdk-js/-/rudder-sdk-js-2.40.4.tgz", - "integrity": "sha512-IK/XDL4x3LbRDFLb9zgTS+uYyX+ATdhvLjzsWeM6TBPdv9+FkUHzPvgzymDFHEt3x6OKm858LdE6AzBUQeO2yg==" + "version": "2.40.5", + "resolved": "https://registry.npmjs.org/rudder-sdk-js/-/rudder-sdk-js-2.40.5.tgz", + "integrity": "sha512-MGfRz/kocGlTzYYf/HNEfYEDHtKDT9jW4K6I8rcU/SsTeqEhoGXjnlvfeKkwUs9LqbuX+s4AC+AvSfUdBbSGYQ==" }, "node_modules/run-async": { "version": "2.4.1", @@ -43097,25 +42650,6 @@ "node": ">=14.0.0" } }, - "node_modules/sass-graph": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", - "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", - "optional": true, - "peer": true, - "dependencies": { - "glob": "^7.0.0", - "lodash": "^4.17.11", - "scss-tokenizer": "^0.4.3", - "yargs": "^17.2.1" - }, - "bin": { - "sassgraph": "bin/sassgraph" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/sass-loader": { "version": "12.6.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", @@ -43331,27 +42865,6 @@ "resolved": "https://registry.npmjs.org/scrollparent/-/scrollparent-2.1.0.tgz", "integrity": "sha512-bnnvJL28/Rtz/kz2+4wpBjHzWoEzXhVg/TE8BeVGJHUqE8THNIRnDxDWMktwM+qahvlRdvlLdsQfYe+cuqfZeA==" }, - "node_modules/scss-tokenizer": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", - "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", - "optional": true, - "peer": true, - "dependencies": { - "js-base64": "^2.4.9", - "source-map": "^0.7.3" - } - }, - "node_modules/scss-tokenizer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "optional": true, - "peer": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/seedrandom": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", @@ -43369,11 +42882,14 @@ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" }, "node_modules/selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "dependencies": { - "node-forge": "^0.10.0" + "node-forge": "^1" + }, + "engines": { + "node": ">=10" } }, "node_modules/semver": { @@ -43792,13 +43308,13 @@ } }, "node_modules/sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", "dependencies": { "@polka/url": "^1.0.0-next.20", "mrmime": "^1.0.0", - "totalist": "^1.0.0" + "totalist": "^3.0.0" }, "engines": { "node": ">= 10" @@ -43860,7 +43376,7 @@ }, "node_modules/smart-buffer": { "version": "4.2.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">= 6.0.0", @@ -44102,7 +43618,7 @@ }, "node_modules/socks": { "version": "2.7.1", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "ip": "^2.0.0", @@ -44521,56 +44037,6 @@ "node": ">= 0.8" } }, - "node_modules/stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "optional": true, - "peer": true, - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/stdout-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "optional": true, - "peer": true - }, - "node_modules/stdout-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "optional": true, - "peer": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/stdout-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true, - "peer": true - }, - "node_modules/stdout-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -44764,13 +44230,13 @@ } }, "node_modules/string.prototype.padstart": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.4.tgz", - "integrity": "sha512-XqOHj8horGsF+zwxraBvMTkBFM28sS/jHBJajh17JtJKA92qazidiQbLosV4UA18azvLOVKYo/E3g3T9Y5826w==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.5.tgz", + "integrity": "sha512-R57IsE3JIfModQWrVXYZ8ZHWMBNDpIoniDwhYCR1nx+iHwDkjjk26a8xM9BYgf7SAXJO7sdNPng5J+0ccr5LFQ==", "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -46369,9 +45835,9 @@ "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" }, "node_modules/totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", "engines": { "node": ">=6" } @@ -46453,7 +45919,7 @@ }, "node_modules/trim-newlines": { "version": "3.0.1", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -46495,16 +45961,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "optional": true, - "peer": true, - "dependencies": { - "glob": "^7.1.2" - } - }, "node_modules/ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", @@ -46780,6 +46236,54 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", @@ -47293,11 +46797,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/url-resolve-browser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/url-resolve-browser/-/url-resolve-browser-1.1.0.tgz", - "integrity": "sha512-vxgLZj8ysAZHOiZw6PUG7WGi28OvNqsaQdbZLq54lfZyUEdBGdkfOzc2p3RVhRgdojbsE6lA4Te02fwRyhPXfw==" - }, "node_modules/url-search-params-polyfill": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/url-search-params-polyfill/-/url-search-params-polyfill-7.0.1.tgz", @@ -47974,14 +47473,13 @@ } }, "node_modules/web-push-notifications": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/web-push-notifications/-/web-push-notifications-3.33.0.tgz", - "integrity": "sha512-9b86KArBi2INVVZQF50ed/ZkW4nUxijJBFmOPy26IEJENXytHUkesvKXGUulGqzbbkLEQRpE8NT0WS5l4RocNQ==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/web-push-notifications/-/web-push-notifications-3.34.0.tgz", + "integrity": "sha512-AFwTc19amF57nn3KJ0QDlAVptAP+a1eoc7BwQG5aN//3mvqyexCNKV1Ui3s+e97FdM+qWdNHtoJSdZ1AZyBqSg==", "dependencies": { "@pushwoosh/logger": "1.0.6", "@pushwoosh/web-push-inbox-widget": "1.0.7", - "@pushwoosh/web-push-subscribe-popup": "1.0.11", - "url-resolve-browser": "1.1.0" + "@pushwoosh/web-push-subscribe-popup": "1.0.11" } }, "node_modules/webidl-conversions": { @@ -48039,19 +47537,26 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz", - "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", - "lodash": "^4.17.20", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", "opener": "^1.5.2", - "sirv": "^1.0.7", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", "ws": "^7.3.1" }, "bin": { @@ -48080,51 +47585,6 @@ "node": ">=0.4.0" } }, - "node_modules/webpack-bundle-analyzer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/webpack-bundle-analyzer/node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -48133,23 +47593,15 @@ "node": ">= 10" } }, - "node_modules/webpack-bundle-analyzer/node_modules/has-flag": { + "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { - "node": ">=8" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" + "node": ">=10" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/webpack-bundle-analyzer/node_modules/ws": { @@ -48714,6 +48166,14 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/webpack-dev-server/node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/webpack-dev-server/node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -48822,6 +48282,14 @@ "node": ">= 4" } }, + "node_modules/webpack-dev-server/node_modules/selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "dependencies": { + "node-forge": "^0.10.0" + } + }, "node_modules/webpack-dev-server/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -49223,9 +48691,9 @@ } }, "node_modules/whatwg-fetch": { - "version": "3.6.17", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz", - "integrity": "sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ==" + "version": "3.6.18", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz", + "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==" }, "node_modules/whatwg-mimetype": { "version": "3.0.0", @@ -49292,15 +48760,15 @@ "license": "ISC" }, "node_modules/which-typed-array": { - "version": "1.1.9", - "license": "MIT", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -49894,7 +49362,7 @@ }, "node_modules/yargs": { "version": "17.6.2", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -49911,7 +49379,7 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "devOptional": true, + "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -49919,7 +49387,7 @@ }, "node_modules/yargs/node_modules/cliui": { "version": "8.0.1", - "devOptional": true, + "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -50979,9 +50447,9 @@ } }, "@babel/standalone": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.22.10.tgz", - "integrity": "sha512-VmK2sWxUTfDDh9mPfCtFJPIehZToteqK+Zpwq8oJUjJ+WeeKIFTTQIrDzH7jEdom+cAaaguU7FI/FBsBWFkIeQ==" + "version": "7.22.14", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.22.14.tgz", + "integrity": "sha512-i61lDNe0nRm44nZj05g+1HNb0EVfDGaTI6PkoeUMUSel3GTG6T1OM3BdjZIXghnnFB8bSWbmfS1lkBQgNUdu5w==" }, "@babel/template": { "version": "7.18.10", @@ -51487,48 +50955,39 @@ "requires": {} }, "@datadog/browser-core": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-core/-/browser-core-4.47.0.tgz", - "integrity": "sha512-C3qm4kiT8OoK09UnAed2HTY9ecDaz0n7Qm0m4WwC+lpwOR97oduWdggbvgJgLGdJLleQjqEFHyuB8BEvEQ66BQ==" + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-core/-/browser-core-4.48.0.tgz", + "integrity": "sha512-Cs/mGnE+FV3cvJ4Zl9FMuZOltp2Gy4Ji4v1zgodp4XDxU/PLFKppzRLqsfE6NMBgUpQKK9mh9zk1tBZtpUVEjw==" }, "@datadog/browser-logs": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-logs/-/browser-logs-4.47.0.tgz", - "integrity": "sha512-leDi/qsQVLzWuVu1N1lSNs4mTb9CZ7/p8IMAO2WEg9yIHqTVUZG/+uxWyzbFdexpRo8KuKIBL1hvHQP4BAdwWQ==", + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-logs/-/browser-logs-4.48.0.tgz", + "integrity": "sha512-Kha0lNj9rbooG1mX/gsktLrTRYzz/8WC0F0UqfO43MKvOREDgSkqWYAhR2A+91+y+Mvrm2UqwwD3Kv0ZRAGBzw==", "requires": { - "@datadog/browser-core": "4.47.0" + "@datadog/browser-core": "4.48.0" } }, "@datadog/browser-rum": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-rum/-/browser-rum-4.47.0.tgz", - "integrity": "sha512-+CK8Z7w0fZnCN1oK7S3TQq9LfDmpXDnYxzmHw+11INHHdFhWqmUojpKKi+7+XLMaTOvU83yYBfOBFz2DSWvwew==", + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-rum/-/browser-rum-4.48.0.tgz", + "integrity": "sha512-drN+r8JV2EUG5PFUPKJYIpKP7t/hjJmt8IrxfEZyzDErD0Z7imKpKaprjGeottR2XqHngm1+JDXgZTvHPqSNQg==", "requires": { - "@datadog/browser-core": "4.47.0", - "@datadog/browser-rum-core": "4.47.0", - "@datadog/browser-worker": "4.47.0" + "@datadog/browser-core": "4.48.0", + "@datadog/browser-rum-core": "4.48.0" } }, "@datadog/browser-rum-core": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-rum-core/-/browser-rum-core-4.47.0.tgz", - "integrity": "sha512-6nOnFPZJ0cYkWV4w7lbtCxVGLiquxw68D1qvwXbMtxZ1q+zroLhPY+lpk7Hd6XN7OT7xmTP2wbTnr0DL5VGwig==", + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@datadog/browser-rum-core/-/browser-rum-core-4.48.0.tgz", + "integrity": "sha512-qrK55AcBQDzHcq/jHLlz58UeX7qEl/UZU4BVGt226KAhJrn+WQrtk0yzwnSTp9YjamxY0QP62Zu7mP7fAf7Nog==", "requires": { - "@datadog/browser-core": "4.47.0" - } - }, - "@datadog/browser-worker": { - "version": "4.47.0", - "resolved": "https://registry.npmjs.org/@datadog/browser-worker/-/browser-worker-4.47.0.tgz", - "integrity": "sha512-7/jiPXiGYStd40zsQl0U6DBkkoKhFPuWgl5R/k4sKaMdZ3YXwhL3M+js7S7MIGsrNvpoZygEQml+McVYZ2Vmyg==", - "requires": { - "@datadog/browser-core": "4.47.0" + "@datadog/browser-core": "4.48.0" } }, "@deriv/api-types": { - "version": "1.0.118", - "resolved": "https://registry.npmjs.org/@deriv/api-types/-/api-types-1.0.118.tgz", - "integrity": "sha512-+q/PEH/O3wRrJlDQWl8x03JCBhQQBZt343maDqDRAM//H2K7h4YT5ucnYHJiS+6xu5jGGeq7JR8lT4R14mfd3Q==" + "version": "1.0.121", + "resolved": "https://registry.npmjs.org/@deriv/api-types/-/api-types-1.0.121.tgz", + "integrity": "sha512-Sj42zIOj8Dbxe3nMN+Qf+tohlsKGRD6dw2lgzd835MDi9G/TZzVTsXJvzlJqvKSPSA94hIBWFc0PBOF6d0V+0g==" }, "@deriv/deriv-api": { "version": "1.0.13", @@ -51701,9 +51160,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", - "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz", + "integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==", "requires": { "regenerator-runtime": "^0.14.0" } @@ -51941,11 +51400,11 @@ } }, "@floating-ui/react-dom": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.1.tgz", - "integrity": "sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", + "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", "requires": { - "@floating-ui/dom": "^1.3.0" + "@floating-ui/dom": "^1.5.1" } }, "@floating-ui/utils": { @@ -54740,6 +54199,17 @@ "esquery": "^1.0.1" } }, + "@playwright/test": { + "version": "1.37.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.37.1.tgz", + "integrity": "sha512-bq9zTli3vWJo8S3LwB91U0qDNQDpEXnw7knhxLM0nwDvexQAwx9tO8iKDZSqqneVq+URd/WIoz+BALMqUTgdSg==", + "dev": true, + "requires": { + "@types/node": "*", + "fsevents": "2.3.2", + "playwright-core": "1.37.1" + } + }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -55198,60 +54668,60 @@ "requires": {} }, "@sentry-internal/tracing": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.64.0.tgz", - "integrity": "sha512-1XE8W6ki7hHyBvX9hfirnGkKDBKNq3bDJyXS86E0bYVDl94nvbRM9BD9DHsCFetqYkVm1yDGEK+6aUVs4CztoQ==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.66.0.tgz", + "integrity": "sha512-3vCgC2hC3T45pn53yTDVcRpHoJTBxelDPPZVsipAbZnoOVPkj7n6dNfDhj3I3kwWCBPahPkXmE+R4xViR8VqJg==", "requires": { - "@sentry/core": "7.64.0", - "@sentry/types": "7.64.0", - "@sentry/utils": "7.64.0", + "@sentry/core": "7.66.0", + "@sentry/types": "7.66.0", + "@sentry/utils": "7.66.0", "tslib": "^2.4.1 || ^1.9.3" } }, "@sentry/browser": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.64.0.tgz", - "integrity": "sha512-lB2IWUkZavEDclxfLBp554dY10ZNIEvlDZUWWathW+Ws2wRb6PNLtuPUNu12R7Q7z0xpkOLrM1kRNN0OdldgKA==", - "requires": { - "@sentry-internal/tracing": "7.64.0", - "@sentry/core": "7.64.0", - "@sentry/replay": "7.64.0", - "@sentry/types": "7.64.0", - "@sentry/utils": "7.64.0", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.66.0.tgz", + "integrity": "sha512-rW037rf8jkhyykG38+HUdwkRCKHJEMM5NkCqPIO5zuuxfLKukKdI2rbvgJ93s3/9UfsTuDFcKFL1u43mCn6sDw==", + "requires": { + "@sentry-internal/tracing": "7.66.0", + "@sentry/core": "7.66.0", + "@sentry/replay": "7.66.0", + "@sentry/types": "7.66.0", + "@sentry/utils": "7.66.0", "tslib": "^2.4.1 || ^1.9.3" } }, "@sentry/core": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.64.0.tgz", - "integrity": "sha512-IzmEyl5sNG7NyEFiyFHEHC+sizsZp9MEw1+RJRLX6U5RITvcsEgcajSkHQFafaBPzRrcxZMdm47Cwhl212LXcw==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.66.0.tgz", + "integrity": "sha512-WMAEPN86NeCJ1IT48Lqiz4MS5gdDjBwP4M63XP4msZn9aujSf2Qb6My5uT87AJr9zBtgk8MyJsuHr35F0P3q1w==", "requires": { - "@sentry/types": "7.64.0", - "@sentry/utils": "7.64.0", + "@sentry/types": "7.66.0", + "@sentry/utils": "7.66.0", "tslib": "^2.4.1 || ^1.9.3" } }, "@sentry/replay": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.64.0.tgz", - "integrity": "sha512-alaMCZDZhaAVmEyiUnszZnvfdbiZx5MmtMTGrlDd7tYq3K5OA9prdLqqlmfIJYBfYtXF3lD0iZFphOZQD+4CIw==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.66.0.tgz", + "integrity": "sha512-5Y2SlVTOFTo3uIycv0mRneBakQtLgWkOnsJaC5LB0Ip0TqVKiMCbQ578vvXp+yvRj4LcS1gNd98xTTNojBoQNg==", "requires": { - "@sentry/core": "7.64.0", - "@sentry/types": "7.64.0", - "@sentry/utils": "7.64.0" + "@sentry/core": "7.66.0", + "@sentry/types": "7.66.0", + "@sentry/utils": "7.66.0" } }, "@sentry/types": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.64.0.tgz", - "integrity": "sha512-LqjQprWXjUFRmzIlUjyA+KL+38elgIYmAeoDrdyNVh8MK5IC1W2Lh1Q87b4yOiZeMiIhIVNBd7Ecoh2rodGrGA==" + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.66.0.tgz", + "integrity": "sha512-uUMSoSiar6JhuD8p7ON/Ddp4JYvrVd2RpwXJRPH1A4H4Bd4DVt1mKJy1OLG6HdeQv39XyhB1lPZckKJg4tATPw==" }, "@sentry/utils": { - "version": "7.64.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.64.0.tgz", - "integrity": "sha512-HRlM1INzK66Gt+F4vCItiwGKAng4gqzCR4C5marsL3qv6SrKH98dQnCGYgXluSWaaa56h97FRQu7TxCk6jkSvQ==", + "version": "7.66.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.66.0.tgz", + "integrity": "sha512-9GYUVgXjK66uXXcLXVMXVzlptqMtq1eJENCuDeezQiEFrNA71KkLDg00wESp+LL+bl3wpVTBApArpbF6UEG5hQ==", "requires": { - "@sentry/types": "7.64.0", + "@sentry/types": "7.66.0", "tslib": "^2.4.1 || ^1.9.3" } }, @@ -56224,9 +55694,9 @@ "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" }, "@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "@webassemblyjs/ast": { "version": "1.9.0", @@ -57247,9 +56717,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "colorette": { "version": "1.4.0", @@ -57545,9 +57015,9 @@ } }, "@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "@webassemblyjs/ast": { "version": "1.9.0", @@ -58220,9 +57690,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "@webassemblyjs/ast": { "version": "1.9.0", @@ -58977,9 +58447,9 @@ "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" }, "@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "@webassemblyjs/ast": { "version": "1.9.0", @@ -59989,9 +59459,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "ansi-styles": { "version": "4.3.0", @@ -60322,9 +59792,9 @@ "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, "@types/node": { - "version": "16.18.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.44.tgz", - "integrity": "sha512-PZXtT+wqSMHnLPVExTh+tMt1VK+GvjRLsGZMbcQ4Mb/cG63xJig/TUmgrDa9aborl2i22UnpIzHYNu7s97NbBQ==" + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==" }, "acorn": { "version": "7.4.1", @@ -61104,9 +60574,9 @@ "version": "0.0.29" }, "@types/loadjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/loadjs/-/loadjs-4.0.1.tgz", - "integrity": "sha512-UEMOleWwITwDvj+kI6T4etC9yMjmejH6UdJRAa1MWZwzDIW+Iz7T6z6Zc96N/5FeFsxAEBA/zP1ki+HluXPcHQ==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/loadjs/-/loadjs-4.0.2.tgz", + "integrity": "sha512-tsPs2Pv+T+MYU6wh+a5IZS9ryHrQza27j+yJ84yiPCLQgDjjM7aBfjAKPgDi9ks1x5vY0tESvux/SwHRAlMqLQ==" }, "@types/lodash": { "version": "4.14.197", @@ -61145,7 +60615,7 @@ }, "@types/minimist": { "version": "1.2.2", - "devOptional": true + "dev": true }, "@types/node": { "version": "17.0.45" @@ -61198,22 +60668,22 @@ "version": "15.7.5" }, "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.6.tgz", + "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==" }, "@types/qrcode.react": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/qrcode.react/-/qrcode.react-1.0.2.tgz", - "integrity": "sha512-I9Oq5Cjlkgy3Tw7krCnCXLw2/zMhizkTere49OOcta23tkvH0xBTP0yInimTh0gstLRtb8Ki9NZVujE5UI6ffQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/qrcode.react/-/qrcode.react-1.0.3.tgz", + "integrity": "sha512-gl7Ozf3BRQwfDUAU2xx7sWRBe/s7TqO0HAJukSQHbEVfQrFo5WKgZl0BHlN8u9W1DHXb4elgKRolHLZkgETXyA==", "requires": { "@types/react": "*" } }, "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==" }, "@types/reach__router": { "version": "1.3.11", @@ -61372,9 +60842,9 @@ "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" }, "@types/uglify-js": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.1.tgz", - "integrity": "sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==", + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.2.tgz", + "integrity": "sha512-9SjrHO54LINgC/6Ehr81NjAxAYvwEZqjUHLjJYvC4Nmr9jbLQCIZbWSvl4vXQkkmR1UAuaKDycau3O1kWGFyXQ==", "requires": { "source-map": "^0.6.1" } @@ -61427,6 +60897,14 @@ } } }, + "@types/ws": { + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz", + "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==", + "requires": { + "@types/node": "*" + } + }, "@types/yargs": { "version": "15.0.14", "requires": { @@ -61976,7 +61454,7 @@ }, "abbrev": { "version": "1.1.1", - "devOptional": true + "dev": true }, "accepts": { "version": "1.3.8", @@ -62058,7 +61536,7 @@ }, "agentkeepalive": { "version": "4.2.1", - "devOptional": true, + "dev": true, "requires": { "debug": "^4.1.0", "depd": "^1.1.2", @@ -62200,7 +61678,7 @@ }, "are-we-there-yet": { "version": "3.0.1", - "devOptional": true, + "dev": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -62332,13 +61810,13 @@ } }, "array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz", + "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-array-method-boxes-properly": "^1.0.0", "is-string": "^1.0.7" } @@ -62353,9 +61831,22 @@ "get-intrinsic": "^1.1.3" } }, + "arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + } + }, "arrify": { "version": "1.0.1", - "devOptional": true + "dev": true }, "asap": { "version": "2.0.6" @@ -62443,13 +61934,6 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==" }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", - "optional": true, - "peer": true - }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -64034,7 +63518,7 @@ }, "camelcase-keys": { "version": "6.2.2", - "devOptional": true, + "dev": true, "requires": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -64089,9 +63573,9 @@ "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" }, "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", + "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", "peer": true, "requires": { "assertion-error": "^1.1.0", @@ -66017,7 +65501,7 @@ }, "decamelize-keys": { "version": "1.1.1", - "devOptional": true, + "dev": true, "requires": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -66025,7 +65509,7 @@ "dependencies": { "map-obj": { "version": "1.0.1", - "devOptional": true + "dev": true } } }, @@ -67049,14 +66533,14 @@ }, "env-paths": { "version": "2.2.1", - "devOptional": true + "dev": true }, "envinfo": { "version": "7.8.1" }, "err-code": { "version": "2.0.3", - "devOptional": true + "dev": true }, "errno": { "version": "0.1.8", @@ -67081,17 +66565,18 @@ } }, "es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", "requires": { "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", + "get-intrinsic": "^1.2.1", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", @@ -67111,14 +66596,18 @@ "object-inspect": "^1.12.3", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", "safe-regex-test": "^1.0.0", "string.prototype.trim": "^1.2.7", "string.prototype.trimend": "^1.0.6", "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.10" } }, "es-array-method-boxes-properly": { @@ -69156,9 +68645,9 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fraction.js": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.1.tgz", - "integrity": "sha512-/KxoyCnPM0GwYI4NN0Iag38Tqt+od3/mLuguepLgCAKPn0ZhC544nssAW0tG2/00zXEYl9W+7hwAIpLHo6Oc7Q==" + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.4.tgz", + "integrity": "sha512-pwiTgt0Q7t+GHZA4yaLjObx4vXmmdcS0iSJ19o8d/goUGgItX9UZWKWNnLHehxviD8wU2IWRsnR8cD5+yOJP2Q==" }, "fragment-cache": { "version": "0.2.1", @@ -69334,7 +68823,7 @@ }, "gauge": { "version": "4.0.4", - "devOptional": true, + "dev": true, "requires": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -69346,16 +68835,6 @@ "wide-align": "^1.1.5" } }, - "gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "optional": true, - "peer": true, - "requires": { - "globule": "^1.0.0" - } - }, "gensync": { "version": "1.0.0-beta.2" }, @@ -69369,12 +68848,13 @@ "peer": true }, "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3" } }, @@ -69720,45 +69200,6 @@ "version": "0.1.4", "dev": true }, - "globule": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", - "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", - "optional": true, - "peer": true, - "requires": { - "glob": "~7.1.1", - "lodash": "^4.17.21", - "minimatch": "~3.0.2" - }, - "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "optional": true, - "peer": true, - "requires": { - "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" - } - }, - "minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "optional": true, - "peer": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, "gonzales-pe": { "version": "4.3.0", "dev": true, @@ -69907,7 +69348,7 @@ }, "hard-rejection": { "version": "2.1.0", - "devOptional": true + "dev": true }, "has": { "version": "1.0.3", @@ -70168,14 +69609,14 @@ }, "hosted-git-info": { "version": "4.1.0", - "devOptional": true, + "dev": true, "requires": { "lru-cache": "^6.0.0" }, "dependencies": { "lru-cache": { "version": "6.0.0", - "devOptional": true, + "dev": true, "requires": { "yallist": "^4.0.0" } @@ -70460,7 +69901,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "devOptional": true + "dev": true }, "http-deceiver": { "version": "1.2.7", @@ -70656,7 +70097,7 @@ }, "humanize-ms": { "version": "1.2.1", - "devOptional": true, + "dev": true, "requires": { "ms": "^2.0.0" } @@ -71175,7 +70616,7 @@ }, "is-lambda": { "version": "1.0.1", - "devOptional": true + "dev": true }, "is-lite": { "version": "0.9.3", @@ -73960,12 +73401,27 @@ "lodash.debounce": { "version": "4.0.8" }, + "lodash.escape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", + "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "peer": true }, + "lodash.invokemap": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", + "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==" + }, "lodash.isfunction": { "version": "3.0.9", "dev": true @@ -73993,6 +73449,11 @@ "version": "4.6.2", "dev": true }, + "lodash.pullall": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", + "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==" + }, "lodash.snakecase": { "version": "4.1.1", "dev": true @@ -74017,6 +73478,11 @@ "lodash.uniq": { "version": "4.5.0" }, + "lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" + }, "lodash.upperfirst": { "version": "4.3.1", "dev": true @@ -74238,7 +73704,7 @@ }, "map-obj": { "version": "4.3.0", - "devOptional": true + "dev": true }, "map-or-similar": { "version": "1.5.0", @@ -74596,7 +74062,7 @@ }, "minimist-options": { "version": "4.1.0", - "devOptional": true, + "dev": true, "requires": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -74647,7 +74113,7 @@ }, "minipass-sized": { "version": "1.0.3", - "devOptional": true, + "dev": true, "requires": { "minipass": "^3.0.0" } @@ -74771,9 +74237,9 @@ } }, "mobx": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.10.0.tgz", - "integrity": "sha512-WMbVpCMFtolbB8swQ5E2YRrU+Yu8iLozCVx3CdGjbBKlP7dFiCSuiG06uea3JCFN5DnvtAX7+G5Bp82e2xu0ww==" + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.10.2.tgz", + "integrity": "sha512-B1UGC3ieK3boCjnMEcZSwxqRDMdzX65H/8zOHbuTY8ZhvrIjTUoLRR2TP2bPqIgYRfb3+dUigu8yMZufNjn0LQ==" }, "mobx-persist-store": { "version": "1.1.2", @@ -75073,9 +74539,9 @@ } }, "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" }, "node-gyp": { "version": "9.3.0", @@ -75247,385 +74713,16 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, - "node-sass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-7.0.3.tgz", - "integrity": "sha512-8MIlsY/4dXUkJDYht9pIWBhMil3uHmE8b/AdJPjmFn1nBx9X9BASzfzmsCy0uCCb8eqI3SYYzVPDswWqSx7gjw==", - "optional": true, - "peer": true, - "requires": { - "async-foreach": "^0.1.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "lodash": "^4.17.15", - "meow": "^9.0.0", - "nan": "^2.13.2", - "node-gyp": "^8.4.1", - "npmlog": "^5.0.0", - "request": "^2.88.0", - "sass-graph": "^4.0.1", - "stdout-stream": "^1.4.0", - "true-case-path": "^1.0.2" - }, - "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "optional": true, - "peer": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "optional": true, - "peer": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "optional": true, - "peer": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "optional": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "optional": true, - "peer": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "optional": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true, - "peer": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", - "optional": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "optional": true, - "peer": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "optional": true, - "peer": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "peer": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "optional": true, - "peer": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - } - }, - "meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "optional": true, - "peer": true, - "requires": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - } - }, - "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "optional": true, - "peer": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "optional": true, - "peer": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "optional": true, - "peer": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - } - } - }, - "npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "optional": true, - "peer": true, - "requires": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - }, - "dependencies": { - "are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "optional": true, - "peer": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "optional": true, - "peer": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - } - } - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "optional": true, - "peer": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "optional": true, - "peer": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "optional": true, - "peer": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "optional": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "optional": true, - "peer": true - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "optional": true, - "peer": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "optional": true, - "peer": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "optional": true, - "peer": true - } - } - }, "nopt": { "version": "5.0.0", - "devOptional": true, + "dev": true, "requires": { "abbrev": "1" } }, "normalize-package-data": { "version": "3.0.3", - "devOptional": true, + "dev": true, "requires": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -75635,14 +74732,14 @@ "dependencies": { "lru-cache": { "version": "6.0.0", - "devOptional": true, + "dev": true, "requires": { "yallist": "^4.0.0" } }, "semver": { "version": "7.3.8", - "devOptional": true, + "dev": true, "requires": { "lru-cache": "^6.0.0" } @@ -77063,6 +76160,12 @@ } } }, + "playwright-core": { + "version": "1.37.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.37.1.tgz", + "integrity": "sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA==", + "dev": true + }, "please-upgrade-node": { "version": "3.2.0", "dev": true, @@ -78090,7 +77193,7 @@ }, "promise-retry": { "version": "2.0.1", - "devOptional": true, + "dev": true, "requires": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -78110,13 +77213,13 @@ } }, "promise.prototype.finally": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.4.tgz", - "integrity": "sha512-nNc3YbgMfLzqtqvO/q5DP6RR0SiHI9pUPGzyDf1q+usTwCN2kjvAnJkBb7bHe3o+fFSBPpsGMoYtaSi+LTNqng==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.5.tgz", + "integrity": "sha512-4TQ3Dk8yyUZGyU+UXInKdkQ2b6xtiBXAIScGAtGnXVmJtG1uOrxRgbF1ggIu72uzoWFzUfT3nUKa1SuMm9NBdg==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "prompts": { @@ -78416,7 +77519,7 @@ }, "quick-lru": { "version": "4.0.1", - "devOptional": true + "dev": true }, "ramda": { "version": "0.28.0", @@ -79398,7 +78501,7 @@ }, "redent": { "version": "3.0.0", - "devOptional": true, + "dev": true, "requires": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -79493,11 +78596,13 @@ "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" }, "regexp.prototype.flags": { - "version": "1.4.3", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" } }, "regexpp": { @@ -80094,9 +79199,9 @@ "version": "4.8.5" }, "rudder-sdk-js": { - "version": "2.40.4", - "resolved": "https://registry.npmjs.org/rudder-sdk-js/-/rudder-sdk-js-2.40.4.tgz", - "integrity": "sha512-IK/XDL4x3LbRDFLb9zgTS+uYyX+ATdhvLjzsWeM6TBPdv9+FkUHzPvgzymDFHEt3x6OKm858LdE6AzBUQeO2yg==" + "version": "2.40.5", + "resolved": "https://registry.npmjs.org/rudder-sdk-js/-/rudder-sdk-js-2.40.5.tgz", + "integrity": "sha512-MGfRz/kocGlTzYYf/HNEfYEDHtKDT9jW4K6I8rcU/SsTeqEhoGXjnlvfeKkwUs9LqbuX+s4AC+AvSfUdBbSGYQ==" }, "run-async": { "version": "2.4.1", @@ -80350,19 +79455,6 @@ } } }, - "sass-graph": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", - "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", - "optional": true, - "peer": true, - "requires": { - "glob": "^7.0.0", - "lodash": "^4.17.11", - "scss-tokenizer": "^0.4.3", - "yargs": "^17.2.1" - } - }, "sass-loader": { "version": "12.6.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", @@ -80505,26 +79597,6 @@ "resolved": "https://registry.npmjs.org/scrollparent/-/scrollparent-2.1.0.tgz", "integrity": "sha512-bnnvJL28/Rtz/kz2+4wpBjHzWoEzXhVg/TE8BeVGJHUqE8THNIRnDxDWMktwM+qahvlRdvlLdsQfYe+cuqfZeA==" }, - "scss-tokenizer": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", - "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", - "optional": true, - "peer": true, - "requires": { - "js-base64": "^2.4.9", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "optional": true, - "peer": true - } - } - }, "seedrandom": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", @@ -80542,11 +79614,11 @@ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" }, "selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", "requires": { - "node-forge": "^0.10.0" + "node-forge": "^1" } }, "semver": { @@ -80885,13 +79957,13 @@ "requires": {} }, "sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", + "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", "requires": { "@polka/url": "^1.0.0-next.20", "mrmime": "^1.0.0", - "totalist": "^1.0.0" + "totalist": "^3.0.0" } }, "sisteransi": { @@ -80931,7 +80003,7 @@ }, "smart-buffer": { "version": "4.2.0", - "devOptional": true + "dev": true }, "snapdragon": { "version": "0.8.2", @@ -81104,7 +80176,7 @@ }, "socks": { "version": "2.7.1", - "devOptional": true, + "dev": true, "requires": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -81401,58 +80473,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, - "stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "optional": true, - "peer": true, - "requires": { - "readable-stream": "^2.0.1" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "optional": true, - "peer": true - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "optional": true, - "peer": true, - "requires": { - "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" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true, - "peer": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -81621,13 +80641,13 @@ } }, "string.prototype.padstart": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.4.tgz", - "integrity": "sha512-XqOHj8horGsF+zwxraBvMTkBFM28sS/jHBJajh17JtJKA92qazidiQbLosV4UA18azvLOVKYo/E3g3T9Y5826w==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.1.5.tgz", + "integrity": "sha512-R57IsE3JIfModQWrVXYZ8ZHWMBNDpIoniDwhYCR1nx+iHwDkjjk26a8xM9BYgf7SAXJO7sdNPng5J+0ccr5LFQ==", "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trim": { @@ -82726,9 +81746,9 @@ "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" }, "totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" }, "tough-cookie": { "version": "4.1.2", @@ -82789,7 +81809,7 @@ }, "trim-newlines": { "version": "3.0.1", - "devOptional": true + "dev": true }, "trim-repeated": { "version": "1.0.0", @@ -82812,16 +81832,6 @@ "trough": { "version": "1.0.5" }, - "true-case-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", - "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", - "optional": true, - "peer": true, - "requires": { - "glob": "^7.1.2" - } - }, "ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", @@ -82993,6 +82003,39 @@ "mime-types": "~2.1.24" } }, + "typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, "typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", @@ -83317,11 +82360,6 @@ "requires-port": "^1.0.0" } }, - "url-resolve-browser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/url-resolve-browser/-/url-resolve-browser-1.1.0.tgz", - "integrity": "sha512-vxgLZj8ysAZHOiZw6PUG7WGi28OvNqsaQdbZLq54lfZyUEdBGdkfOzc2p3RVhRgdojbsE6lA4Te02fwRyhPXfw==" - }, "url-search-params-polyfill": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/url-search-params-polyfill/-/url-search-params-polyfill-7.0.1.tgz", @@ -83854,14 +82892,13 @@ "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==" }, "web-push-notifications": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/web-push-notifications/-/web-push-notifications-3.33.0.tgz", - "integrity": "sha512-9b86KArBi2INVVZQF50ed/ZkW4nUxijJBFmOPy26IEJENXytHUkesvKXGUulGqzbbkLEQRpE8NT0WS5l4RocNQ==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/web-push-notifications/-/web-push-notifications-3.34.0.tgz", + "integrity": "sha512-AFwTc19amF57nn3KJ0QDlAVptAP+a1eoc7BwQG5aN//3mvqyexCNKV1Ui3s+e97FdM+qWdNHtoJSdZ1AZyBqSg==", "requires": { "@pushwoosh/logger": "1.0.6", "@pushwoosh/web-push-inbox-widget": "1.0.7", - "@pushwoosh/web-push-subscribe-popup": "1.0.11", - "url-resolve-browser": "1.1.0" + "@pushwoosh/web-push-subscribe-popup": "1.0.11" } }, "webidl-conversions": { @@ -83956,19 +82993,26 @@ } }, "webpack-bundle-analyzer": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz", - "integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", + "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", "requires": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", "commander": "^7.2.0", + "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", - "lodash": "^4.17.20", + "is-plain-object": "^5.0.0", + "lodash.debounce": "^4.0.8", + "lodash.escape": "^4.0.1", + "lodash.flatten": "^4.4.0", + "lodash.invokemap": "^4.6.0", + "lodash.pullall": "^4.2.0", + "lodash.uniqby": "^4.7.0", "opener": "^1.5.2", - "sirv": "^1.0.7", + "picocolors": "^1.0.0", + "sirv": "^2.0.3", "ws": "^7.3.1" }, "dependencies": { @@ -83982,53 +83026,15 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" }, - "has-flag": { + "escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, "ws": { "version": "7.5.9", @@ -84443,6 +83449,11 @@ "minimist": "^1.2.6" } }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -84524,6 +83535,14 @@ "ajv-keywords": "^3.1.0" } }, + "selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "requires": { + "node-forge": "^0.10.0" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -84777,9 +83796,9 @@ } }, "whatwg-fetch": { - "version": "3.6.17", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz", - "integrity": "sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ==" + "version": "3.6.18", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz", + "integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==" }, "whatwg-mimetype": { "version": "3.0.0", @@ -84824,14 +83843,15 @@ "version": "2.0.0" }, "which-typed-array": { - "version": "1.1.9", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" } }, "wide-align": { @@ -85292,7 +84312,7 @@ }, "yargs": { "version": "17.6.2", - "devOptional": true, + "dev": true, "requires": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -85305,7 +84325,7 @@ "dependencies": { "cliui": { "version": "8.0.1", - "devOptional": true, + "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -85316,7 +84336,7 @@ }, "yargs-parser": { "version": "21.1.1", - "devOptional": true + "dev": true }, "yn": { "version": "3.1.1", diff --git a/package.json b/package.json index ebf619fe94cf..c20126a83750 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@deriv/eslint-config-deriv": "^1.0.0-beta.3", "@jest/globals": "^26.5.3", "@nrwl/nx-cloud": "latest", + "@playwright/test": "^1.37.1", "@testing-library/jest-dom": "^5.12.0", "@testing-library/react": "^12.0.0", "@testing-library/react-hooks": "^7.0.2", @@ -80,9 +81,9 @@ "test": "f () { bash ./scripts/circleci-config.test.sh && npm run test:stylelint && npm run test:eslint-all && JEST_MAX_WORKERS=6 npm run test:jest ;}; f", "test:stylelint": "stylelint \"./packages/*/src/**/*.s(a|c)ss\"", "test:jest": "jest --all --maxWorkers=${JEST_MAX_WORKERS:-'45%'}", - "test:e2e": "cd end-to-end-test && npx playwright test", - "test:e2e-dev": "cd end-to-end-test && npx playwright test --trace on && npx playwright show-report", - "test:performance": "cd e2e_tests && jest -c ./jest.config.js --maxWorkers=2 --detectOpenHandles performance", + "test:e2e": "npx playwright test", + "test:e2e-dev": "npx playwright test --trace on && npx playwright show-report", + "test:performance": "cd e2e-tests && jest -c ./jest.config.js --maxWorkers=2 --detectOpenHandles performance", "stylelint:fix": "stylelint \"./packages/*/src/**/*.s(a|c)ss\" --fix", "translate": "f () { lerna exec --scope @deriv/translations -- npm run translate ;}; f", "stylelint-check": "stylelint-config-prettier-check", @@ -96,7 +97,9 @@ "dotenv": "^8.2.0", "react": "^17.0.2", "react-dom": "^17.0.2", - "typescript": "^4.6.3" + "selfsigned": "^2.1.1", + "typescript": "^4.6.3", + "ws": "^8.13.0" }, "optionalDependencies": { "fsevents": "^2.3.2" diff --git a/packages/account/integration-tests/personal-details/personal-details.spec.tsx b/packages/account/integration-tests/personal-details/personal-details.spec.tsx new file mode 100644 index 000000000000..cdcfb63ed6b0 --- /dev/null +++ b/packages/account/integration-tests/personal-details/personal-details.spec.tsx @@ -0,0 +1,21 @@ +import { test, expect } from '@playwright/test'; +import { mock_residents_list, mock_states_list, mock_general, mock_loggedIn, setupMocks } from '@deriv/integration'; + +test.describe('Personal Details', () => { + test('it shows the current name', async ({ page, baseURL }) => { + await setupMocks({ + baseURL, + page, + mocks: [mock_general, mock_loggedIn, mock_residents_list, mock_states_list], + }); + await page.goto(`${baseURL}/account/personal-details`); + const firstName = await page.getByLabel('First name*').first(); + expect(await firstName.inputValue()).toBe('Jane'); + const lastName = await page.getByLabel('Last name*').first(); + expect(await lastName.inputValue()).toBe('Smith'); + const dateOfBirth = await page.getByLabel('Date of birth*').first(); + expect(await dateOfBirth.inputValue()).toBe('01-01-1980'); + const citizenship = await page.getByLabel('Citizenship').first(); + expect(await citizenship.inputValue()).toBe('Thailand'); + }); +}); diff --git a/packages/account/package.json b/packages/account/package.json index a5b025dc040c..62711f003835 100644 --- a/packages/account/package.json +++ b/packages/account/package.json @@ -31,6 +31,7 @@ "@deriv/api-types": "^1.0.118", "@deriv/components": "^1.0.0", "@deriv/hooks": "^1.0.0", + "@deriv/integration": "1.0.0", "@deriv/shared": "^1.0.0", "@deriv/stores": "^1.0.0", "@deriv/translations": "^1.0.0", @@ -54,6 +55,7 @@ "@babel/eslint-parser": "^7.17.0", "@babel/preset-react": "^7.16.7", "@jest/globals": "^26.5.3", + "@playwright/test": "^1.37.1", "@testing-library/react": "^12.0.0", "@testing-library/user-event": "^13.5.0", "@types/react": "^18.0.7", diff --git a/packages/integration/README.md b/packages/integration/README.md new file mode 100644 index 000000000000..ebc6ea15e86f --- /dev/null +++ b/packages/integration/README.md @@ -0,0 +1,168 @@ +# @deriv/integration + +This package contains the global files and mocked data for writing your integration tests in the deriv projects, you can easily install this package and use these data inside your tests. + +It uses [playwright](https://playwright.dev/) as its main framework and you can simply write test with it. +We strongly suggest you to read the [documentation](https://playwright.dev/docs/intro) of playwright once before you get started. + +## Run tests + +- You can run your tests with UI Mode for a better developer experience with time travel debugging, watch mode and more. + +``` +npx playwright test --ui +``` + +- Running all tests + +``` +npx playwright test +``` + +- Running a single test file + +``` +npx playwright test landing-page.spec.ts +``` + +- Run a set of test files + +``` +npx playwright test tests/todo-page/ tests/landing-page/ +``` + +- Run files that have landing or login in the file name + +``` +npx playwright test landing login +``` + +- Run the test with the title + +``` +npx playwright test -g "add a todo item" +``` + +- Running tests in headed mode + +``` +npx playwright test landing-page.spec.ts --headed +``` + +- Running tests on a specific project + +``` +npx playwright test landing-page.ts --project=chromium +``` + +## Debugging Tests + +- Debugging all tests: + +``` +npx playwright test --debug +``` + +- Debugging one test file: + +``` +npx playwright test example.spec.ts --debug +``` + +- Debugging a test from the line number where the test(.. is defined: + +``` +npx playwright test example.spec.ts:10 --debug +``` + +## Local Mock + +I've created an example `exampleMock.ts` file, that can be run with `ts-node ./exampleMock.ts` to start a web socket server on `localhost:10443` + +## Using mocks in tests + +Each test should setup the mocks they need from the pool of mocks provided. + +```js +import { test, expect } from '@playwright/test'; +import setupMocks from '../../utils/mocks/mocks'; +import mockGeneral from '../../mocks/general'; +import mockLoggedIn from '../../mocks/auth'; + +test('it shows the first name when logged in', async ({ page, baseURL }) => { + await setupMocks({ + baseURL, + page, + mocks: [mockGeneral, mockLoggedIn], + }); + await page.goto(`${baseURL}/app-store/traders-hub`); + + const firstName = await page.getByRole('button', { name: 'User Menu' }).first(); + expect(await firstName.inputValue()).toBeVisible(); +}); +``` + +## Writing your own mocks + +A mock is simply a function that is given a context object that contains the following keys: + +- req_id +- request +- response + +```js +export default function customTimeMock(context) { + if (context.request.time === 1) { + context.response = { + echo_req: context.request, + req_id: context.req_id, + msg_type: 'time', + time: (Date.now() / 1000).toFixed(0), + }; + } +} + +// Then add it to your mocks: +await setupMocks({ + baseURL, + page, + mocks: [mockGeneral, mockLoggedIn, customTimeMock], +}); +``` + +## Extending Mocks + +If you want to change how a base mock works, or "extend" a mock, you can use the middleware like approach. + +For example, let's say you want to add a `day` to the `time` endpoint. You can use the `mockTime` base mock, but add another mock to add the `day` key. + +```js +export default function mockTimeMonday(context) { + if (context.request.time === 1) { + context.response.day = 'Monday'; + } +} + +await setupMocks({ + baseURL, + page, + mocks: [mockTime, mockTimeMonday], +}); +``` + +**| Note:** The response will, by default, be undefined. Above, mockTime creates the first response, then mockTimeMonday get's the mutated response and adds a new key. For that reason, the order of mocks is important. + +## Dynamically changing + +If you have a test that needs to change a mock, in the middle of the run, you can use the `add` and `remove` functions returned from `createMockServer` + +```js +const mocks = await setupMocks({ + baseURL, + page, + mocks: [mockGeneral, mockLoggedIn], +}); + +mocks.remove(mockLoggedIn); +mocks.add(mockHelloWorld); +``` diff --git a/packages/integration/package.json b/packages/integration/package.json new file mode 100644 index 000000000000..4fa795bf6848 --- /dev/null +++ b/packages/integration/package.json @@ -0,0 +1,26 @@ +{ + "name": "@deriv/integration", + "version": "1.0.0", + "private": true, + "description": "This repo contains global files for our integration tests", + "author": "Niloofar Sadeghi ", + "main": "src/index.ts", + "eslintConfig": { + "rules": { + "testing-library/no-await-sync-query": "off", + "testing-library/prefer-screen-queries": "off" + } + }, + "devDependencies": { + "@playwright/test": "^1.37.1", + "@types/ws": "^8.5.5", + "selfsigned": "^2.1.1", + "typescript": "^4.6.3" + }, + "dependencies": { + "ws": "^8.13.0" + }, + "scripts": { + "test": "npx playwright test" + } +} diff --git a/packages/integration/src/exampleMock.ts b/packages/integration/src/exampleMock.ts new file mode 100644 index 000000000000..92f3a455c451 --- /dev/null +++ b/packages/integration/src/exampleMock.ts @@ -0,0 +1,12 @@ +import { createMockServer } from './utils/mocks/mocks'; +import general from './mocks/general'; +import auth from './mocks/auth'; +import residents_list from './mocks/location/residents_list'; +import states_list from './mocks/location/states_list'; + +async function main() { + await createMockServer([general, auth, residents_list, states_list], { port: 10443 }); + process.stdout.write('Listening on localhost:10443'); +} + +main(); diff --git a/packages/integration/src/index.ts b/packages/integration/src/index.ts new file mode 100644 index 000000000000..4bc7a773522d --- /dev/null +++ b/packages/integration/src/index.ts @@ -0,0 +1,24 @@ +export { default as mock_authorize } from './mocks/auth/authorize'; +export { default as mock_balance_all } from './mocks/auth/balance_all'; +export { default as mock_blalance_one } from './mocks/auth/balance_one'; +export { default as mock_get_account_status } from './mocks/auth/get_account_status'; +export { default as mock_get_financial_assessment } from './mocks/auth/get_financial_assessment'; +export { default as mock_get_limits } from './mocks/auth/get_limits'; +export { default as mock_get_self_exclusion } from './mocks/auth/get_self_exclusion'; +export { default as mock_get_settings } from './mocks/auth/get_settings'; +export { default as mock_landing_company } from './mocks/auth/landing_company'; +export { default as mock_mt5_login_list } from './mocks/auth/mt5_login_list'; +export { default as mock_paymentagent_list } from './mocks/auth/paymentagent_list'; +export { default as mock_platform_dxtrade } from './mocks/auth/platform_dxtrade'; +export { default as mock_platform_mt5 } from './mocks/auth/platform_mt5'; +export { default as mock_trading_platform_accounts } from './mocks/auth/trading_platform_accounts'; +export { default as mock_trading_platform_available_accounts } from './mocks/auth/trading_platform_available_accounts'; +export { default as mock_exchange_rates } from './mocks/general/exchange_rates'; +export { default as mock_payout_currencies } from './mocks/general/payout_currencies'; +export { default as mock_time } from './mocks/general/time'; +export { default as mock_website_status } from './mocks/general/website_status'; +export { default as mock_residents_list } from './mocks/location/residents_list'; +export { default as mock_states_list } from './mocks/location/states_list'; +export { default as mock_general } from './mocks/general'; +export { default as mock_loggedIn } from './mocks/auth'; +export { default as setupMocks } from './utils/mocks/mocks'; diff --git a/packages/integration/src/mocks/auth/authorize.ts b/packages/integration/src/mocks/auth/authorize.ts new file mode 100644 index 000000000000..d1cd9b441e6c --- /dev/null +++ b/packages/integration/src/mocks/auth/authorize.ts @@ -0,0 +1,70 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_authorize(context: Context) { + if ('authorize' in context.request) { + context.response = { + authorize: { + account_list: [ + { + account_category: 'trading', + account_type: 'binary', + created_at: 1688638657, + currency: 'USD', + is_disabled: 0, + is_virtual: 0, + landing_company_name: 'svg', + linked_to: [], + loginid: 'CR5712715', + }, + { + account_category: 'trading', + account_type: 'binary', + created_at: 1688638635, + currency: 'BTC', + is_disabled: 0, + is_virtual: 0, + landing_company_name: 'svg', + linked_to: [], + loginid: 'CR5712710', + }, + { + account_category: 'trading', + account_type: 'binary', + created_at: 1688638579, + currency: 'USD', + is_disabled: 0, + is_virtual: 1, + landing_company_name: 'virtual', + linked_to: [], + loginid: 'VRTC8420051', + }, + ], + balance: 0, + country: 'th', + currency: 'USD', + email: 'jane.smith@example.com', + fullname: ' Jane Smith', + is_virtual: 0, + landing_company_fullname: 'Deriv (SVG) LLC', + landing_company_name: 'svg', + linked_to: [], + local_currencies: { + THB: { + fractional_digits: 2, + }, + }, + loginid: 'CR5712715', + preferred_language: 'EN', + scopes: ['read', 'trade', 'trading_information', 'payments', 'admin'], + upgradeable_landing_companies: ['svg'], + user_id: 10000001, + }, + echo_req: { + authorize: '', + req_id: context.req_id, + }, + req_id: context.req_id, + msg_type: 'authorize', + }; + } +} diff --git a/packages/integration/src/mocks/auth/balance_all.ts b/packages/integration/src/mocks/auth/balance_all.ts new file mode 100644 index 000000000000..7ba99714fbb8 --- /dev/null +++ b/packages/integration/src/mocks/auth/balance_all.ts @@ -0,0 +1,69 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_balance_all(context: Context) { + if ('balance' in context.request && context.request.balance === 1 && context.request.account === 'all') { + context.response = { + balance: { + accounts: { + CR5712710: { + balance: 0, + converted_amount: 0, + currency: 'BTC', + demo_account: 0, + status: 1, + type: 'deriv', + }, + CR5712715: { + balance: 0, + converted_amount: 0, + currency: 'USD', + demo_account: 0, + status: 1, + type: 'deriv', + }, + VRTC8420051: { + balance: 10008.46, + converted_amount: 10008.46, + currency: 'USD', + demo_account: 1, + status: 1, + type: 'deriv', + }, + }, + balance: 0, + currency: 'USD', + id: 'd55abfb0-1f66-e9fc-b09d-9fc722186dee', + loginid: 'CR5712715', + total: { + deriv: { + amount: 0, + currency: 'USD', + }, + deriv_demo: { + amount: 10008.46, + currency: 'USD', + }, + mt5: { + amount: 0, + currency: 'USD', + }, + mt5_demo: { + amount: 0, + currency: 'USD', + }, + }, + }, + echo_req: { + account: 'all', + balance: 1, + req_id: context.req_id, + subscribe: 1, + }, + msg_type: 'balance', + req_id: context.req_id, + subscription: { + id: 'd55abfb0-1f66-e9fc-b09d-9fc722186dee', + }, + }; + } +} diff --git a/packages/integration/src/mocks/auth/balance_one.ts b/packages/integration/src/mocks/auth/balance_one.ts new file mode 100644 index 000000000000..0fec1007827d --- /dev/null +++ b/packages/integration/src/mocks/auth/balance_one.ts @@ -0,0 +1,25 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_blalance_one(context: Context) { + if ('balance' in context.request && context.request.balance === 1 && context.request.account === 'CR5712715') { + context.response = { + balance: { + balance: 0, + currency: 'USD', + id: 'e5247f39-666e-9938-87d6-76415da2ffb4', + loginid: 'CR5712715', + }, + echo_req: { + account: 'CR5712715', + balance: 1, + req_id: context.req_id, + subscribe: 1, + }, + msg_type: 'balance', + req_id: context.req_id, + subscription: { + id: 'e5247f39-666e-9938-87d6-76415da2ffb4', + }, + }; + } +} diff --git a/packages/integration/src/mocks/auth/get_account_status.ts b/packages/integration/src/mocks/auth/get_account_status.ts new file mode 100644 index 000000000000..39dca9ad2f60 --- /dev/null +++ b/packages/integration/src/mocks/auth/get_account_status.ts @@ -0,0 +1,74 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_get_account_status(context: Context) { + if ('get_account_status' in context.request && context.request.get_account_status === 1) { + context.response = { + echo_req: { + get_account_status: 1, + req_id: context.req_id, + }, + get_account_status: { + authentication: { + attempts: { + count: 0, + history: [], + latest: null, + }, + document: { + status: 'none', + }, + identity: { + services: { + idv: { + last_rejected: [], + reported_properties: {}, + status: 'none', + submissions_left: 3, + }, + manual: { + status: 'none', + }, + onfido: { + country_code: 'THA', + documents_supported: ['Driving Licence', 'National Identity Card', 'Passport'], + is_country_supported: 1, + last_rejected: [], + reported_properties: {}, + status: 'none', + submissions_left: 2, + }, + }, + status: 'none', + }, + income: { + status: 'none', + }, + needs_verification: [], + ownership: { + requests: [], + status: 'none', + }, + }, + currency_config: { + USD: { + is_deposit_suspended: 0, + is_withdrawal_suspended: 0, + }, + }, + p2p_status: 'active', + prompt_client_to_authenticate: 0, + risk_classification: 'low', + status: [ + 'allow_document_upload', + 'deposit_attempt', + 'dxtrade_password_not_set', + 'financial_information_not_complete', + 'mt5_password_not_set', + 'trading_experience_not_complete', + ], + }, + msg_type: 'get_account_status', + req_id: context.req_id, + }; + } +} diff --git a/packages/integration/src/mocks/auth/get_financial_assessment.ts b/packages/integration/src/mocks/auth/get_financial_assessment.ts new file mode 100644 index 000000000000..fd00989d8569 --- /dev/null +++ b/packages/integration/src/mocks/auth/get_financial_assessment.ts @@ -0,0 +1,15 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_get_financial_assessment(context: Context) { + if ('get_financial_assessment' in context.request && context.request.get_financial_assessment === 1) { + context.response = { + echo_req: { + get_financial_assessment: 1, + req_id: context.req_id, + }, + get_financial_assessment: {}, + msg_type: 'get_financial_assessment', + req_id: context.req_id, + }; + } +} diff --git a/packages/integration/src/mocks/auth/get_limits.ts b/packages/integration/src/mocks/auth/get_limits.ts new file mode 100644 index 000000000000..9c7d42c676cc --- /dev/null +++ b/packages/integration/src/mocks/auth/get_limits.ts @@ -0,0 +1,137 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_get_limits(context: Context) { + if ('get_limits' in context.request && context.request.get_limits === 1) { + context.response = { + echo_req: { + get_limits: 1, + req_id: context.req_id, + }, + get_limits: { + account_balance: null, + daily_cumulative_amount_transfers: { + dxtrade: { + allowed: 50000, + available: 50000, + }, + enabled: 0, + internal: { + allowed: 100000, + available: 100000, + }, + mt5: { + allowed: 200000, + available: 200000, + }, + }, + daily_transfers: { + ctrader: { + allowed: 10, + available: 10, + }, + derivez: { + allowed: 10, + available: 10, + }, + dxtrade: { + allowed: 10, + available: 10, + }, + internal: { + allowed: 10, + available: 10, + }, + mt5: { + allowed: 10, + available: 10, + }, + }, + lifetime_limit: 10000, + market_specific: { + commodities: [ + { + level: 'market', + name: 'Commodities', + payout_limit: 5000, + profile_name: 'moderate_risk', + turnover_limit: 50000, + }, + ], + cryptocurrency: [ + { + level: 'market', + name: 'Cryptocurrencies', + payout_limit: 100.0, + profile_name: 'extreme_risk', + turnover_limit: 1000.0, + }, + ], + forex: [ + { + level: 'submarket', + name: 'Minor Pairs', + payout_limit: 5000, + profile_name: 'moderate_risk', + turnover_limit: 50000, + }, + { + level: 'submarket', + name: 'Major Pairs', + payout_limit: 20000, + profile_name: 'medium_risk', + turnover_limit: 100000, + }, + { + level: 'market', + name: 'Forex', + payout_limit: 20000, + profile_name: 'medium_risk', + turnover_limit: 100000, + }, + ], + indices: [ + { + level: 'market', + name: 'Stock Indices', + payout_limit: 20000, + profile_name: 'medium_risk', + turnover_limit: 100000, + }, + ], + synthetic_index: [ + { + level: 'submarket', + name: 'Forex Basket', + payout_limit: 5000, + profile_name: 'moderate_risk', + turnover_limit: 50000, + }, + { + level: 'submarket', + name: 'Commodities Basket', + payout_limit: 5000, + profile_name: 'moderate_risk', + turnover_limit: 50000, + }, + { + level: 'market', + name: 'Derived', + payout_limit: 50000, + profile_name: 'low_risk', + turnover_limit: 500000, + }, + ], + }, + num_of_days: 30, + num_of_days_limit: 10000, + open_positions: 100, + payout: 50000, + remainder: 10000, + withdrawal_for_x_days_monetary: 0, + withdrawal_since_inception_monetary: 0, + }, + msg_type: 'get_limits', + req_id: context.req_id, + }; + } +} diff --git a/packages/integration/src/mocks/auth/get_self_exclusion.ts b/packages/integration/src/mocks/auth/get_self_exclusion.ts new file mode 100644 index 000000000000..98a736815a68 --- /dev/null +++ b/packages/integration/src/mocks/auth/get_self_exclusion.ts @@ -0,0 +1,15 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_get_self_exclusion(context: Context) { + if ('get_self_exclusion' in context.request && context.request.get_self_exclusion === 1) { + context.response = { + echo_req: { + get_self_exclusion: 1, + req_id: context.req_id, + }, + get_self_exclusion: {}, + msg_type: 'get_self_exclusion', + req_id: context.req_id, + }; + } +} diff --git a/packages/integration/src/mocks/auth/get_settings.ts b/packages/integration/src/mocks/auth/get_settings.ts new file mode 100644 index 000000000000..73b21e7ef00f --- /dev/null +++ b/packages/integration/src/mocks/auth/get_settings.ts @@ -0,0 +1,50 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_get_settings(context: Context) { + if ('get_settings' in context.request && context.request.get_settings === 1) { + context.response = { + echo_req: { + get_settings: 1, + req_id: context.req_id, + }, + get_settings: { + account_opening_reason: '', + address_city: 'test', + address_line_1: 'test', + address_line_2: '', + address_postcode: '', + address_state: '', + allow_copiers: 0, + citizen: 'th', + client_tnc_status: 'Version 4.2.0 2020-08-07', + country: 'Thailand', + country_code: 'th', + date_of_birth: 315532859, + dxtrade_user_exception: 0, + email: 'jane.smith@example.com', + email_consent: 1, + feature_flag: { + wallet: 0, + }, + first_name: 'Jane', + has_secret_answer: 1, + immutable_fields: ['residence'], + is_authenticated_payment_agent: 0, + last_name: 'Smith', + non_pep_declaration: 1, + phone: '+66111111111', + place_of_birth: null, + preferred_language: 'EN', + request_professional_status: 0, + residence: 'Thailand', + salutation: '', + tax_identification_number: null, + tax_residence: null, + trading_hub: 0, + user_hash: 'kYk8h4q605qCEBgOdiarruohRrFZemZwhgkHedMQEQ6EDhEgScm25lFIK42dSMK5', + }, + msg_type: 'get_settings', + req_id: context.req_id, + }; + } +} diff --git a/packages/integration/src/mocks/auth/index.ts b/packages/integration/src/mocks/auth/index.ts new file mode 100644 index 000000000000..7af6d438ce98 --- /dev/null +++ b/packages/integration/src/mocks/auth/index.ts @@ -0,0 +1,36 @@ +import mock_authorize from './authorize'; +import mock_balance_all from './balance_all'; +import mock_balance_one from './balance_one'; +import mock_get_account_status from './get_account_status'; +import mock_get_self_exclusion from './get_self_exclusion'; +import mock_get_settings from './get_settings'; +import mock_get_financial_assessment from './get_financial_assessment'; +import mock_mt5_login_list from './mt5_login_list'; +import mock_landing_company from './landing_company'; +import mock_get_limits from './get_limits'; +import mock_paymentagent_list from './paymentagent_list'; +import mock_trading_platform_available_accounts from './trading_platform_available_accounts'; +import mock_platform_mt5 from './platform_mt5'; +import mock_platform_dxtrade from './platform_dxtrade'; +import mock_trading_platform_accounts from './trading_platform_accounts'; +import { Context } from 'Utils/mocks/mocks'; + +const loggedIn = async (context: Context) => { + mock_authorize(context); + mock_balance_all(context); + mock_balance_one(context); + mock_get_account_status(context); + mock_get_self_exclusion(context); + mock_get_settings(context); + mock_get_financial_assessment(context); + mock_mt5_login_list(context); + mock_landing_company(context); + mock_get_limits(context); + mock_paymentagent_list(context); + mock_trading_platform_available_accounts(context); + mock_platform_mt5(context); + mock_platform_dxtrade(context); + mock_trading_platform_accounts(context); +}; + +export default loggedIn; diff --git a/packages/integration/src/mocks/auth/landing_company.ts b/packages/integration/src/mocks/auth/landing_company.ts new file mode 100644 index 000000000000..3469174d6da7 --- /dev/null +++ b/packages/integration/src/mocks/auth/landing_company.ts @@ -0,0 +1,1841 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_landing_company(context: Context) { + if ('landing_company' in context.request) { + context.response = { + echo_req: { + landing_company: 'svg', + req_id: context.req_id, + }, + landing_company: { + all_company: 'svg', + config: {}, + ctrader: { + all: { + standard: 'svg', + }, + }, + derivez: { + all: { + standard: 'svg', + }, + }, + dxtrade_all_company: { + standard: { + address: null, + changeable_fields: { + only_before_auth: [ + 'salutation', + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'account_opening_reason', + 'tax_residence', + 'tax_identification_number', + ], + personal_details_not_locked: [ + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'place_of_birth', + ], + }, + country: 'Saint Vincent and the Grenadines', + currency_config: { + commodities: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + cryptocurrency: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + forex: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + indices: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + synthetic_index: { + AUD: { + max_payout: 70000, + min_stake: 0.5, + }, + BTC: { + max_payout: 2, + min_stake: 0.000013, + }, + ETH: { + max_payout: 30, + min_stake: 0.0002, + }, + EUR: { + max_payout: 50000, + min_stake: 0.3, + }, + GBP: { + max_payout: 40000, + min_stake: 0.3, + }, + LTC: { + max_payout: 600, + min_stake: 0.004, + }, + USD: { + max_payout: 50000, + min_stake: 0.35, + }, + USDC: { + max_payout: 5000, + min_stake: 0.3, + }, + UST: { + max_payout: 5000, + min_stake: 0.3, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + }, + }, + has_reality_check: 0, + legal_allowed_contract_categories: [ + 'asian', + 'callput', + 'callputequal', + 'callputspread', + 'digits', + 'endsinout', + 'highlowticks', + 'lookback', + 'multiplier', + 'reset', + 'runs', + 'staysinout', + 'touchnotouch', + ], + legal_allowed_currencies: [ + 'AUD', + 'BTC', + 'ETH', + 'EUR', + 'GBP', + 'LTC', + 'USD', + 'USDC', + 'UST', + 'eUSDT', + 'tUSDT', + ], + legal_allowed_markets: ['commodities', 'cryptocurrency', 'forex', 'indices', 'synthetic_index'], + legal_default_currency: 'USD', + name: 'Deriv (SVG) LLC', + requirements: { + signup: ['first_name', 'last_name', 'residence', 'date_of_birth'], + withdrawal: ['address_city', 'address_line_1'], + }, + shortcode: 'svg', + support_professional_client: 0, + tin_not_mandatory: 0, + }, + }, + financial_company: { + address: null, + changeable_fields: { + only_before_auth: [ + 'salutation', + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'account_opening_reason', + 'tax_residence', + 'tax_identification_number', + ], + personal_details_not_locked: [ + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'place_of_birth', + ], + }, + country: 'Saint Vincent and the Grenadines', + currency_config: { + commodities: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + cryptocurrency: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + forex: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + indices: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + synthetic_index: { + AUD: { + max_payout: 70000, + min_stake: 0.5, + }, + BTC: { + max_payout: 2, + min_stake: 0.000013, + }, + ETH: { + max_payout: 30, + min_stake: 0.0002, + }, + EUR: { + max_payout: 50000, + min_stake: 0.3, + }, + GBP: { + max_payout: 40000, + min_stake: 0.3, + }, + LTC: { + max_payout: 600, + min_stake: 0.004, + }, + USD: { + max_payout: 50000, + min_stake: 0.35, + }, + USDC: { + max_payout: 5000, + min_stake: 0.3, + }, + UST: { + max_payout: 5000, + min_stake: 0.3, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + }, + }, + has_reality_check: 0, + legal_allowed_contract_categories: [ + 'asian', + 'callput', + 'callputequal', + 'callputspread', + 'digits', + 'endsinout', + 'highlowticks', + 'lookback', + 'multiplier', + 'reset', + 'runs', + 'staysinout', + 'touchnotouch', + ], + legal_allowed_currencies: [ + 'AUD', + 'BTC', + 'ETH', + 'EUR', + 'GBP', + 'LTC', + 'USD', + 'USDC', + 'UST', + 'eUSDT', + 'tUSDT', + ], + legal_allowed_markets: ['commodities', 'cryptocurrency', 'forex', 'indices', 'synthetic_index'], + legal_default_currency: 'USD', + name: 'Deriv (SVG) LLC', + requirements: { + signup: ['first_name', 'last_name', 'residence', 'date_of_birth'], + withdrawal: ['address_city', 'address_line_1'], + }, + shortcode: 'svg', + support_professional_client: 0, + tin_not_mandatory: 0, + }, + gaming_company: { + address: null, + changeable_fields: { + only_before_auth: [ + 'salutation', + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'account_opening_reason', + 'tax_residence', + 'tax_identification_number', + ], + personal_details_not_locked: [ + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'place_of_birth', + ], + }, + country: 'Saint Vincent and the Grenadines', + currency_config: { + commodities: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + cryptocurrency: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + forex: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + indices: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + synthetic_index: { + AUD: { + max_payout: 70000, + min_stake: 0.5, + }, + BTC: { + max_payout: 2, + min_stake: 0.000013, + }, + ETH: { + max_payout: 30, + min_stake: 0.0002, + }, + EUR: { + max_payout: 50000, + min_stake: 0.3, + }, + GBP: { + max_payout: 40000, + min_stake: 0.3, + }, + LTC: { + max_payout: 600, + min_stake: 0.004, + }, + USD: { + max_payout: 50000, + min_stake: 0.35, + }, + USDC: { + max_payout: 5000, + min_stake: 0.3, + }, + UST: { + max_payout: 5000, + min_stake: 0.3, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + }, + }, + has_reality_check: 0, + legal_allowed_contract_categories: [ + 'asian', + 'callput', + 'callputequal', + 'callputspread', + 'digits', + 'endsinout', + 'highlowticks', + 'lookback', + 'multiplier', + 'reset', + 'runs', + 'staysinout', + 'touchnotouch', + ], + legal_allowed_currencies: [ + 'AUD', + 'BTC', + 'ETH', + 'EUR', + 'GBP', + 'LTC', + 'USD', + 'USDC', + 'UST', + 'eUSDT', + 'tUSDT', + ], + legal_allowed_markets: ['commodities', 'cryptocurrency', 'forex', 'indices', 'synthetic_index'], + legal_default_currency: 'USD', + name: 'Deriv (SVG) LLC', + requirements: { + signup: ['first_name', 'last_name', 'residence', 'date_of_birth'], + withdrawal: ['address_city', 'address_line_1'], + }, + shortcode: 'svg', + support_professional_client: 0, + tin_not_mandatory: 0, + }, + id: 'th', + minimum_age: 18, + mt_all_company: { + swap_free: { + address: null, + changeable_fields: { + only_before_auth: [ + 'salutation', + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'account_opening_reason', + 'tax_residence', + 'tax_identification_number', + ], + personal_details_not_locked: [ + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'place_of_birth', + ], + }, + country: 'Saint Vincent and the Grenadines', + currency_config: { + commodities: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + cryptocurrency: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + forex: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + indices: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + synthetic_index: { + AUD: { + max_payout: 70000, + min_stake: 0.5, + }, + BTC: { + max_payout: 2, + min_stake: 0.000013, + }, + ETH: { + max_payout: 30, + min_stake: 0.0002, + }, + EUR: { + max_payout: 50000, + min_stake: 0.3, + }, + GBP: { + max_payout: 40000, + min_stake: 0.3, + }, + LTC: { + max_payout: 600, + min_stake: 0.004, + }, + USD: { + max_payout: 50000, + min_stake: 0.35, + }, + USDC: { + max_payout: 5000, + min_stake: 0.3, + }, + UST: { + max_payout: 5000, + min_stake: 0.3, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + }, + }, + has_reality_check: 0, + legal_allowed_contract_categories: [ + 'asian', + 'callput', + 'callputequal', + 'callputspread', + 'digits', + 'endsinout', + 'highlowticks', + 'lookback', + 'multiplier', + 'reset', + 'runs', + 'staysinout', + 'touchnotouch', + ], + legal_allowed_currencies: [ + 'AUD', + 'BTC', + 'ETH', + 'EUR', + 'GBP', + 'LTC', + 'USD', + 'USDC', + 'UST', + 'eUSDT', + 'tUSDT', + ], + legal_allowed_markets: ['commodities', 'cryptocurrency', 'forex', 'indices', 'synthetic_index'], + legal_default_currency: 'USD', + name: 'Deriv (SVG) LLC', + requirements: { + signup: ['first_name', 'last_name', 'residence', 'date_of_birth'], + withdrawal: ['address_city', 'address_line_1'], + }, + shortcode: 'svg', + support_professional_client: 0, + tin_not_mandatory: 0, + }, + }, + mt_financial_company: { + financial: { + address: null, + changeable_fields: { + only_before_auth: [ + 'salutation', + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'account_opening_reason', + 'tax_residence', + 'tax_identification_number', + ], + personal_details_not_locked: [ + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'place_of_birth', + ], + }, + country: 'Saint Vincent and the Grenadines', + currency_config: { + commodities: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + cryptocurrency: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + forex: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + indices: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + synthetic_index: { + AUD: { + max_payout: 70000, + min_stake: 0.5, + }, + BTC: { + max_payout: 2, + min_stake: 0.000013, + }, + ETH: { + max_payout: 30, + min_stake: 0.0002, + }, + EUR: { + max_payout: 50000, + min_stake: 0.3, + }, + GBP: { + max_payout: 40000, + min_stake: 0.3, + }, + LTC: { + max_payout: 600, + min_stake: 0.004, + }, + USD: { + max_payout: 50000, + min_stake: 0.35, + }, + USDC: { + max_payout: 5000, + min_stake: 0.3, + }, + UST: { + max_payout: 5000, + min_stake: 0.3, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + }, + }, + has_reality_check: 0, + legal_allowed_contract_categories: [ + 'asian', + 'callput', + 'callputequal', + 'callputspread', + 'digits', + 'endsinout', + 'highlowticks', + 'lookback', + 'multiplier', + 'reset', + 'runs', + 'staysinout', + 'touchnotouch', + ], + legal_allowed_currencies: [ + 'AUD', + 'BTC', + 'ETH', + 'EUR', + 'GBP', + 'LTC', + 'USD', + 'USDC', + 'UST', + 'eUSDT', + 'tUSDT', + ], + legal_allowed_markets: ['commodities', 'cryptocurrency', 'forex', 'indices', 'synthetic_index'], + legal_default_currency: 'USD', + name: 'Deriv (SVG) LLC', + requirements: { + signup: ['first_name', 'last_name', 'residence', 'date_of_birth'], + withdrawal: ['address_city', 'address_line_1'], + }, + shortcode: 'svg', + support_professional_client: 0, + tin_not_mandatory: 0, + }, + financial_stp: { + address: [ + 'Labuan Times Square', + 'Jalan Merdeka', + '87000 Federal Territory of Labuan', + 'Malaysia', + ], + changeable_fields: {}, + country: 'Malaysia', + currency_config: { + forex: { + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + }, + }, + has_reality_check: 0, + legal_allowed_contract_categories: ['callput'], + legal_allowed_currencies: ['USD'], + legal_allowed_markets: [], + legal_default_currency: 'USD', + name: 'Deriv (FX) Ltd', + requirements: { + after_first_deposit: { + financial_assessment: ['financial_information', 'trading_experience'], + }, + compliance: { + mt5: ['fully_authenticated', 'expiration_check'], + tax_information: ['tax_residence', 'tax_identification_number'], + }, + signup: ['phone', 'citizen', 'account_opening_reason'], + }, + shortcode: 'labuan', + support_professional_client: 0, + tin_not_mandatory: 0, + }, + }, + mt_gaming_company: { + financial: { + address: null, + changeable_fields: { + only_before_auth: [ + 'salutation', + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'account_opening_reason', + 'tax_residence', + 'tax_identification_number', + ], + personal_details_not_locked: [ + 'first_name', + 'last_name', + 'date_of_birth', + 'citizen', + 'place_of_birth', + ], + }, + country: 'Saint Vincent and the Grenadines', + currency_config: { + commodities: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + cryptocurrency: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + forex: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + indices: { + AUD: { + max_payout: 70000, + min_stake: 0.7, + }, + BTC: { + max_payout: 2, + min_stake: 0.00002, + }, + ETH: { + max_payout: 30, + min_stake: 0.0003, + }, + EUR: { + max_payout: 50000, + min_stake: 0.5, + }, + GBP: { + max_payout: 40000, + min_stake: 0.4, + }, + LTC: { + max_payout: 600, + min_stake: 0.006, + }, + USD: { + max_payout: 50000, + min_stake: 0.5, + }, + USDC: { + max_payout: 5000, + min_stake: 0.5, + }, + UST: { + max_payout: 5000, + min_stake: 0.5, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.5, + }, + }, + synthetic_index: { + AUD: { + max_payout: 70000, + min_stake: 0.5, + }, + BTC: { + max_payout: 2, + min_stake: 0.000013, + }, + ETH: { + max_payout: 30, + min_stake: 0.0002, + }, + EUR: { + max_payout: 50000, + min_stake: 0.3, + }, + GBP: { + max_payout: 40000, + min_stake: 0.3, + }, + LTC: { + max_payout: 600, + min_stake: 0.004, + }, + USD: { + max_payout: 50000, + min_stake: 0.35, + }, + USDC: { + max_payout: 5000, + min_stake: 0.3, + }, + UST: { + max_payout: 5000, + min_stake: 0.3, + }, + eUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + tUSDT: { + max_payout: 5000, + min_stake: 0.3, + }, + }, + }, + has_reality_check: 0, + legal_allowed_contract_categories: [ + 'asian', + 'callput', + 'callputequal', + 'callputspread', + 'digits', + 'endsinout', + 'highlowticks', + 'lookback', + 'multiplier', + 'reset', + 'runs', + 'staysinout', + 'touchnotouch', + ], + legal_allowed_currencies: [ + 'AUD', + 'BTC', + 'ETH', + 'EUR', + 'GBP', + 'LTC', + 'USD', + 'USDC', + 'UST', + 'eUSDT', + 'tUSDT', + ], + legal_allowed_markets: ['commodities', 'cryptocurrency', 'forex', 'indices', 'synthetic_index'], + legal_default_currency: 'USD', + name: 'Deriv (SVG) LLC', + requirements: { + signup: ['first_name', 'last_name', 'residence', 'date_of_birth'], + withdrawal: ['address_city', 'address_line_1'], + }, + shortcode: 'svg', + support_professional_client: 0, + tin_not_mandatory: 0, + }, + }, + name: 'Thailand', + virtual_company: 'virtual', + }, + msg_type: 'landing_company', + req_id: context.req_id, + }; + } +} diff --git a/packages/integration/src/mocks/auth/mt5_login_list.ts b/packages/integration/src/mocks/auth/mt5_login_list.ts new file mode 100644 index 000000000000..39fa2731bf78 --- /dev/null +++ b/packages/integration/src/mocks/auth/mt5_login_list.ts @@ -0,0 +1,15 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_mt5_login_list(context: Context) { + if ('mt5_login_list' in context.request && context.request.mt5_login_list === 1) { + context.response = { + echo_req: { + mt5_login_list: 1, + req_id: context.req_id, + }, + msg_type: 'mt5_login_list', + mt5_login_list: [], + req_id: context.req_id, + }; + } +} diff --git a/packages/integration/src/mocks/auth/paymentagent_list.ts b/packages/integration/src/mocks/auth/paymentagent_list.ts new file mode 100644 index 000000000000..bf0de3455682 --- /dev/null +++ b/packages/integration/src/mocks/auth/paymentagent_list.ts @@ -0,0 +1,156 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_paymentagent_list(context: Context) { + if ( + 'paymentagent_list' in context.request && + context.request.paymentagent_list === 'th' && + context.request.currency === 'USD' + ) { + context.response = { + echo_req: { + currency: 'USD', + paymentagent_list: 'th', + req_id: context.req_id, + }, + msg_type: 'paymentagent_list', + paymentagent_list: { + available_countries: [ + ['af', 'Afghanistan'], + ['ao', 'Angola'], + ['ar', 'Argentina'], + ['au', 'Australia'], + ['bd', 'Bangladesh'], + ['bf', 'Burkina Faso'], + ['bi', 'Burundi'], + ['bj', 'Benin'], + ['bo', 'Bolivia'], + ['br', 'Brazil'], + ['bw', 'Botswana'], + ['cd', 'Congo - Kinshasa'], + ['cg', 'Congo - Brazzaville'], + ['ci', "Cote d'Ivoire"], + ['cl', 'Chile'], + ['cm', 'Cameroon'], + ['cn', 'China'], + ['co', 'Colombia'], + ['cu', 'Cuba'], + ['dj', 'Djibouti'], + ['do', 'Dominican Republic'], + ['dz', 'Algeria'], + ['ec', 'Ecuador'], + ['eg', 'Egypt'], + ['et', 'Ethiopia'], + ['ga', 'Gabon'], + ['ge', 'Georgia'], + ['gh', 'Ghana'], + ['gn', 'Guinea'], + ['gw', 'Guinea-Bissau'], + ['id', 'Indonesia'], + ['in', 'India'], + ['jp', 'Japan'], + ['ke', 'Kenya'], + ['kh', 'Cambodia'], + ['kr', 'South Korea'], + ['kw', 'Kuwait'], + ['la', 'Laos'], + ['lb', 'Lebanon'], + ['lk', 'Sri Lanka'], + ['ls', 'Lesotho'], + ['ly', 'Libya'], + ['ma', 'Morocco'], + ['mg', 'Madagascar'], + ['ml', 'Mali'], + ['mn', 'Mongolia'], + ['mv', 'Maldives'], + ['mw', 'Malawi'], + ['mz', 'Mozambique'], + ['na', 'Namibia'], + ['ne', 'Niger'], + ['ng', 'Nigeria'], + ['om', 'Oman'], + ['pe', 'Peru'], + ['ph', 'Philippines'], + ['pk', 'Pakistan'], + ['qa', 'Qatar'], + ['ru', 'Russia'], + ['sa', 'Saudi Arabia'], + ['sd', 'Sudan'], + ['sl', 'Sierra Leone'], + ['sn', 'Senegal'], + ['so', 'Somalia'], + ['ss', 'South Sudan'], + ['sz', 'Swaziland'], + ['tg', 'Togo'], + ['th', 'Thailand'], + ['tr', 'Turkey'], + ['tz', 'Tanzania'], + ['ug', 'Uganda'], + ['uy', 'Uruguay'], + ['vn', 'Vietnam'], + ['ws', 'Samoa'], + ['za', 'South Africa'], + ['zm', 'Zambia'], + ['zw', 'Zimbabwe'], + ], + list: [ + { + currencies: 'USD', + deposit_commission: '0', + email: 'teclasarojani@gmail.com', + further_information: + 'ආයුබෝවන් ඔබට අවශ්‍ය Binary / Deriv $ මිලට ගැනීමට අප සමග සමිබන්ධ වෙන්න. Bank Transfer( cash ), USDT Exchange , E-wallet Exchange සමග ඉතා කඩිනම් සුහදශීලී හා ලාබදායි ලෙස ඔබට අපගෙන් ලබාගත හැක. Binary/ Deriv Dollars,USDT, Crypto மாற்றம் அல்லது வாங்குதல் மற்றும் விற்பனை நோக்கங்களுக்காக என்னை தொடர்பு கொள்ளவும். குறைந்த விகிதங்கள் மற்றும் வேகமான சேவைகள் எங்களிடம் பெற்றுக்கொள்ளலாம். You are warmly welcome to my premium payment agent group. Whatsapp following Number for more details.', + max_withdrawal: '2000', + min_withdrawal: '10', + name: 'Chamara Madusanka Dharmasena', + paymentagent_loginid: 'CR2154875', + phone_numbers: [ + { + phone_number: '+94761540855', + }, + ], + summary: '', + supported_payment_methods: [ + { + payment_method: 'Bank transfer', + }, + { + payment_method: 'Boc Peoples Bank', + }, + { + payment_method: 'BTC', + }, + { + payment_method: 'Crypto Payment', + }, + { + payment_method: 'E-wallets', + }, + { + payment_method: 'HNB', + }, + { + payment_method: 'LOLC', + }, + { + payment_method: 'Sampath Bank', + }, + { + payment_method: 'USDT', + }, + ], + urls: [ + { + url: 'https://t.me/+b8-HyBzP09U3NDhl', + }, + { + url: 'https://www.facebook.com/m8az2z?mibextid=LQQJ4d', + }, + ], + withdrawal_commission: '0', + }, + ], + }, + req_id: context.req_id, + }; + } +} diff --git a/packages/integration/src/mocks/auth/platform_dxtrade.ts b/packages/integration/src/mocks/auth/platform_dxtrade.ts new file mode 100644 index 000000000000..c9602fb6d244 --- /dev/null +++ b/packages/integration/src/mocks/auth/platform_dxtrade.ts @@ -0,0 +1,27 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_platform_dxtrade(context: Context) { + if ('platform' in context.request && context.request.platform === 'dxtrade') { + context.response = { + echo_req: { + platform: 'dxtrade', + req_id: context.req_id, + trading_servers: 1, + }, + msg_type: 'trading_servers', + req_id: context.req_id, + trading_servers: [ + { + account_type: 'real', + disabled: 0, + supported_accounts: ['all'], + }, + { + account_type: 'demo', + disabled: 0, + supported_accounts: ['all'], + }, + ], + }; + } +} diff --git a/packages/integration/src/mocks/auth/platform_mt5.ts b/packages/integration/src/mocks/auth/platform_mt5.ts new file mode 100644 index 000000000000..f0b3dc418df9 --- /dev/null +++ b/packages/integration/src/mocks/auth/platform_mt5.ts @@ -0,0 +1,32 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_platform_mt5(context: Context) { + if ('platform' in context.request && context.request.platform === 'mt5') { + context.response = { + echo_req: { + platform: 'mt5', + req_id: context.req_id, + trading_servers: 1, + }, + msg_type: 'trading_servers', + req_id: context.req_id, + trading_servers: [ + { + account_type: 'real', + disabled: 0, + environment: 'Deriv-Server', + geolocation: { + group: 'asia_synthetic', + location: 'Singapore', + region: 'Asia', + sequence: 1, + }, + id: 'p01_ts03', + market_type: 'synthetic', + recommended: 1, + supported_accounts: ['gaming'], + }, + ], + }; + } +} diff --git a/packages/integration/src/mocks/auth/trading_platform_accounts.ts b/packages/integration/src/mocks/auth/trading_platform_accounts.ts new file mode 100644 index 000000000000..f01b0d93f2b2 --- /dev/null +++ b/packages/integration/src/mocks/auth/trading_platform_accounts.ts @@ -0,0 +1,16 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_trading_platform_accounts(context: Context) { + if ('trading_platform_accounts' in context.request && context.request.trading_platform_accounts === 1) { + context.response = { + echo_req: { + platform: 'derivez', + req_id: context.req_id, + trading_platform_accounts: 1, + }, + msg_type: 'transfer_between_accounts', + req_id: context.req_id, + trading_platform_accounts: [], + }; + } +} diff --git a/packages/integration/src/mocks/auth/trading_platform_available_accounts.ts b/packages/integration/src/mocks/auth/trading_platform_available_accounts.ts new file mode 100644 index 000000000000..6719784d6d84 --- /dev/null +++ b/packages/integration/src/mocks/auth/trading_platform_available_accounts.ts @@ -0,0 +1,150 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_trading_platform_available_accounts(context: Context) { + if ( + 'trading_platform_available_accounts' in context.request && + context.request.trading_platform_available_accounts === 1 + ) { + context.response = { + echo_req: { + platform: 'mt5', + req_id: context.req_id, + trading_platform_available_accounts: 1, + }, + msg_type: 'transfer_between_accounts', + req_id: context.req_id, + trading_platform_available_accounts: [ + { + linkable_landing_companies: ['svg'], + market_type: 'all', + name: 'Deriv (SVG) LLC', + requirements: { + signup: ['first_name', 'last_name', 'residence', 'date_of_birth'], + withdrawal: ['address_city', 'address_line_1'], + }, + shortcode: 'svg', + sub_account_type: 'swap_free', + }, + { + linkable_landing_companies: ['svg'], + market_type: 'financial', + name: 'Deriv (SVG) LLC', + requirements: { + signup: ['first_name', 'last_name', 'residence', 'date_of_birth'], + withdrawal: ['address_city', 'address_line_1'], + }, + shortcode: 'svg', + sub_account_type: 'standard', + }, + { + linkable_landing_companies: ['svg'], + market_type: 'financial', + name: 'Deriv (BVI) Ltd', + requirements: { + after_first_deposit: { + financial_assessment: ['financial_information', 'trading_experience'], + }, + compliance: { + mt5: ['fully_authenticated', 'expiration_check'], + tax_information: ['tax_residence', 'tax_identification_number'], + }, + signup: ['phone', 'citizen', 'account_opening_reason'], + }, + shortcode: 'bvi', + sub_account_type: 'standard', + }, + { + linkable_landing_companies: ['svg'], + market_type: 'financial', + name: 'Deriv (V) Ltd', + requirements: { + after_first_deposit: { + financial_assessment: ['financial_information'], + }, + compliance: { + mt5: ['fully_authenticated', 'expiration_check'], + tax_information: ['tax_residence', 'tax_identification_number'], + }, + signup: [ + 'citizen', + 'place_of_birth', + 'tax_residence', + 'tax_identification_number', + 'account_opening_reason', + ], + }, + shortcode: 'vanuatu', + sub_account_type: 'standard', + }, + { + linkable_landing_companies: ['svg'], + market_type: 'financial', + name: 'Deriv (FX) Ltd', + requirements: { + after_first_deposit: { + financial_assessment: ['financial_information', 'trading_experience'], + }, + compliance: { + mt5: ['fully_authenticated', 'expiration_check'], + tax_information: ['tax_residence', 'tax_identification_number'], + }, + signup: ['phone', 'citizen', 'account_opening_reason'], + }, + shortcode: 'labuan', + sub_account_type: 'stp', + }, + { + linkable_landing_companies: ['svg'], + market_type: 'gaming', + name: 'Deriv (SVG) LLC', + requirements: { + signup: ['first_name', 'last_name', 'residence', 'date_of_birth'], + withdrawal: ['address_city', 'address_line_1'], + }, + shortcode: 'svg', + sub_account_type: 'standard', + }, + { + linkable_landing_companies: ['svg'], + market_type: 'gaming', + name: 'Deriv (BVI) Ltd', + requirements: { + after_first_deposit: { + financial_assessment: ['financial_information', 'trading_experience'], + }, + compliance: { + mt5: ['fully_authenticated', 'expiration_check'], + tax_information: ['tax_residence', 'tax_identification_number'], + }, + signup: ['phone', 'citizen', 'account_opening_reason'], + }, + shortcode: 'bvi', + sub_account_type: 'standard', + }, + { + linkable_landing_companies: ['svg'], + market_type: 'gaming', + name: 'Deriv (V) Ltd', + requirements: { + after_first_deposit: { + financial_assessment: ['financial_information'], + }, + compliance: { + mt5: ['fully_authenticated', 'expiration_check'], + tax_information: ['tax_residence', 'tax_identification_number'], + }, + signup: [ + 'citizen', + 'place_of_birth', + 'tax_residence', + 'tax_identification_number', + 'account_opening_reason', + ], + }, + shortcode: 'vanuatu', + sub_account_type: 'standard', + }, + ], + }; + } +} diff --git a/packages/integration/src/mocks/general/exchange_rates.ts b/packages/integration/src/mocks/general/exchange_rates.ts new file mode 100644 index 000000000000..bc2b8ec6c314 --- /dev/null +++ b/packages/integration/src/mocks/general/exchange_rates.ts @@ -0,0 +1,160 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_exchange_rates(context: Context) { + if ('exchange_rates' in context.request && context.request.exchange_rates === 1) { + context.response = { + echo_req: { + req_id: context.req_id, + exchange_rates: 1, + }, + exchange_rates: { + base_currency: 'USD', + date: parseInt((Date.now() / 1000).toFixed(0)), + rates: { + AED: 3.6735, + AFN: 89.0052, + ALL: 93.575, + AMD: 386.25, + AOA: 509.3611, + ARS: 113.9705, + AUD: 1.48029724368653, + AWG: 1.79, + BAM: 1.7659, + BBD: 2, + BDT: 108.4525, + BHD: 0.377, + BMD: 1, + BND: 1.3266, + BRL: 4.6221, + BSD: 1, + BTC: 3.41233456575483e-5, + BTN: 81.9938, + BUSD: 1.000100010001, + BWP: 13.587, + BZD: 2, + CAD: 1.32249, + CHF: 0.86227, + CLP: 814.6, + CNY: 7.142, + COP: 3759.31, + CRC: 541.275, + CUP: 24, + CVE: 100.0963, + DAI: 1, + DJF: 178.0389, + DKK: 6.7279, + DOP: 55.916, + DZD: 134.6946, + ECS: 25000, + EGP: 30.8974, + ERN: 15, + ETB: 54.8732, + ETH: 0.000537650306863913, + EUR: 0.902869318694812, + EURS: 0.85247858147564, + FJD: 2.2183, + FKP: 0.773275595422208, + GBP: 0.773305494335537, + GEL: 2.568, + GHC: 113284.5, + GIP: 0.773275595422208, + GMD: 62.4125, + GNF: 8593.675, + GTQ: 7.8508, + HKD: 7.8015, + HNL: 24.6193, + HTG: 138.119, + IDK: 15.0325, + IDR: 15032.5, + ILS: 3.6939, + INR: 81.991, + IQD: 1460, + ISK: 131.375, + JMD: 153.8087, + JOD: 0.7091, + JPY: 140.39, + KES: 135.43, + KMF: 444.1867, + KRW: 1274.35, + KWD: 0.3078, + KYD: 0.82, + KZT: 444.365, + LAK: 18882.385, + LKR: 328.89, + LRD: 154.7192, + LSL: 17.6615, + LTC: 0.0111569786901707, + LYD: 4.8042, + MAD: 9.6871, + MDL: 17.763, + MGA: 4328.755, + MKD: 55.5267, + MMK: 2010.105, + MNT: 3442.345, + MOP: 8.0356, + MUR: 45.9622, + MXN: 16.8675, + MZM: 63920.4551, + NAD: 17.6615, + NGN: 775.755, + NIO: 36.5748, + NOK: 10.11731, + NPR: 131.1751, + NZD: 1.61064312980173, + OMR: 0.3854, + PAB: 1, + PAX: 1.0005623160216, + PEN: 3.7128, + PHP: 54.621, + PKR: 285.3395, + PLN: 3.9981, + QAR: 3.6466, + RUB: 81.2679, + RWF: 1077.2937, + SAR: 3.7506, + SBD: 8.16, + SCR: 13.7114, + SDG: 574.1082, + SEK: 10.4358, + SGD: 1.3266, + SHP: 0.773275595422208, + SLL: 19385.959, + SOS: 569.1501, + SVC: 8.75, + SZL: 17.6615, + THB: 34.2605, + TND: 3.0573, + TOP: 2.3249, + TRY: 26.9502, + TTD: 6.7814, + TUSD: 1.00091683982528, + TWD: 31.191, + TZS: 2404.7, + UAH: 36.8309, + UGX: 3640.025, + USB: 1, + USDC: 0.985940488632106, + USDK: 1, + UST: 0.998552099455789, + UYU: 40.675, + VND: 23651.7, + WST: 2.6921, + XAF: 592.2489, + XCD: 2.7, + XOF: 592.2489, + XPF: 107.6633, + YER: 250.2405, + ZAR: 17.6615, + ZMK: 18825, + eUSDT: 0.998552099455789, + tUSDT: 0.998552099455789, + }, + }, + msg_type: 'exchange_rates', + req_id: context.req_id, + subscription: { + id: '69eddd7e-9cf2-48d2-e951-a7008e724c2f', + }, + }; + } +} diff --git a/packages/integration/src/mocks/general/index.ts b/packages/integration/src/mocks/general/index.ts new file mode 100644 index 000000000000..416527e54d65 --- /dev/null +++ b/packages/integration/src/mocks/general/index.ts @@ -0,0 +1,14 @@ +import mock_exchange_rates from './exchange_rates'; +import mock_payout_currencies from './payout_currencies'; +import mock_time from './time'; +import mock_website_status from './website_status'; +import { Context } from 'Utils/mocks/mocks'; + +const general = (context: Context) => { + mock_exchange_rates(context); + mock_payout_currencies(context); + mock_time(context); + mock_website_status(context); +}; + +export default general; diff --git a/packages/integration/src/mocks/general/payout_currencies.ts b/packages/integration/src/mocks/general/payout_currencies.ts new file mode 100644 index 000000000000..4535eddfdba5 --- /dev/null +++ b/packages/integration/src/mocks/general/payout_currencies.ts @@ -0,0 +1,15 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_payout_currencies(context: Context) { + if ('payout_currencies' in context.request && context.request.payout_currencies === 1) { + context.response = { + echo_req: { + req_id: context.req_id, + payout_currencies: 1, + }, + req_id: context.req_id, + msg_type: 'payout_currencies', + payout_currencies: ['USD'], + }; + } +} diff --git a/packages/integration/src/mocks/general/time.ts b/packages/integration/src/mocks/general/time.ts new file mode 100644 index 000000000000..47c31e5500e9 --- /dev/null +++ b/packages/integration/src/mocks/general/time.ts @@ -0,0 +1,15 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_time(context: Context) { + if ('time' in context.request && context.request.time === 1) { + context.response = { + echo_req: { + req_id: context.req_id, + time: 1, + }, + req_id: context.req_id, + msg_type: 'time', + time: parseInt((Date.now() / 1000).toFixed(0)), + }; + } +} diff --git a/packages/integration/src/mocks/general/website_status.ts b/packages/integration/src/mocks/general/website_status.ts new file mode 100644 index 000000000000..436c9d8017fa --- /dev/null +++ b/packages/integration/src/mocks/general/website_status.ts @@ -0,0 +1,1864 @@ +import { Context } from 'Utils/mocks/mocks'; + +export default function mock_website_status(context: Context) { + if ('website_status' in context.request && context.request.website_status === 1) { + context.response = { + echo_req: { + req_id: context.req_id, + website_status: 1, + }, + msg_type: 'website_status', + req_id: context.req_id, + website_status: { + api_call_limits: { + max_proposal_subscription: { + applies_to: 'subscribing to proposal concurrently', + max: 5, + }, + max_requestes_general: { + applies_to: 'rest of calls', + hourly: 14400, + minutely: 180, + }, + max_requests_outcome: { + applies_to: 'portfolio, statement and proposal', + hourly: 1500, + minutely: 25, + }, + max_requests_pricing: { + applies_to: 'proposal and proposal_open_contract', + hourly: 3600, + minutely: 80, + }, + }, + broker_codes: ['CRW', 'MX', 'VRW', 'CH', 'MFW', 'VRTC', 'VRCH', 'MLT', 'MF', 'CRA', 'CR'], + clients_country: 'my', + currencies_config: { + AUD: { + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Australian Dollar', + stake_default: 15, + transfer_between_accounts: { + fees: { + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 0, + EURS: 2, + GBP: 0, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 0, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 7402.03, + min: 1.48, + }, + limits_ctrader: { + max: 22206.1, + min: 0.01, + }, + limits_derivez: { + max: 22206.1, + min: 0.01, + }, + limits_dxtrade: { + max: 3701.02, + min: 0.01, + }, + limits_mt5: { + max: 22206.1, + min: 0.01, + }, + }, + type: 'fiat', + }, + BTC: { + fractional_digits: 8, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Bitcoin', + stake_default: 0.0004, + transfer_between_accounts: { + fees: { + AUD: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 0.17060625, + min: 3.412e-5, + }, + limits_ctrader: { + max: 0.51181875, + min: 3.4e-7, + }, + limits_derivez: { + max: 0.51181875, + min: 3.4e-7, + }, + limits_dxtrade: { + max: 0.08530312, + min: 3.4e-7, + }, + limits_mt5: { + max: 0.51181875, + min: 3.4e-7, + }, + }, + type: 'crypto', + }, + BUSD: { + fractional_digits: 2, + is_deposit_suspended: 1, + is_suspended: 1, + is_withdrawal_suspended: 1, + name: 'Binance USD', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 5000.5, + min: 1, + }, + limits_ctrader: { + max: 15001.5, + min: 0.01, + }, + limits_derivez: { + max: 15001.5, + min: 0.01, + }, + limits_dxtrade: { + max: 2500.25, + min: 0.01, + }, + limits_mt5: { + max: 15001.5, + min: 0.01, + }, + }, + type: 'crypto', + }, + DAI: { + fractional_digits: 2, + is_deposit_suspended: 1, + is_suspended: 1, + is_withdrawal_suspended: 1, + name: 'Multi-Collateral DAI', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 5000, + min: 1, + }, + limits_ctrader: { + max: 15000, + min: 0.01, + }, + limits_derivez: { + max: 15000, + min: 0.01, + }, + limits_dxtrade: { + max: 2500, + min: 0.01, + }, + limits_mt5: { + max: 15000, + min: 0.01, + }, + }, + type: 'crypto', + }, + ETH: { + fractional_digits: 8, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Ethereum', + stake_default: 0.005, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 2.68833826, + min: 0.00053767, + }, + limits_ctrader: { + max: 8.06501477, + min: 5.38e-6, + }, + limits_derivez: { + max: 8.06501477, + min: 5.38e-6, + }, + limits_dxtrade: { + max: 1.34416913, + min: 5.38e-6, + }, + limits_mt5: { + max: 8.06501477, + min: 5.38e-6, + }, + }, + type: 'crypto', + }, + EUR: { + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Euro', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 0, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EURS: 2, + GBP: 0, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 0, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 4513.78, + min: 0.9, + }, + limits_ctrader: { + max: 13541.33, + min: 0.01, + }, + limits_derivez: { + max: 13541.33, + min: 0.01, + }, + limits_dxtrade: { + max: 2256.89, + min: 0.01, + }, + limits_mt5: { + max: 13541.33, + min: 0.01, + }, + }, + type: 'fiat', + }, + EURS: { + fractional_digits: 2, + is_deposit_suspended: 1, + is_suspended: 1, + is_withdrawal_suspended: 1, + name: 'STATIS Euro', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 4262.39, + min: 0.85, + }, + limits_ctrader: { + max: 12787.18, + min: 0.01, + }, + limits_derivez: { + max: 12787.18, + min: 0.01, + }, + limits_dxtrade: { + max: 2131.2, + min: 0.01, + }, + limits_mt5: { + max: 12787.18, + min: 0.01, + }, + }, + type: 'crypto', + }, + GBP: { + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Pound Sterling', + stake_default: 8, + transfer_between_accounts: { + fees: { + AUD: 0, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 0, + EURS: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 0, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 3867.16, + min: 0.77, + }, + limits_ctrader: { + max: 11601.47, + min: 0.01, + }, + limits_derivez: { + max: 11601.47, + min: 0.01, + }, + limits_dxtrade: { + max: 1933.58, + min: 0.01, + }, + limits_mt5: { + max: 11601.47, + min: 0.01, + }, + }, + type: 'fiat', + }, + IDK: { + fractional_digits: 0, + is_deposit_suspended: 1, + is_suspended: 1, + is_withdrawal_suspended: 1, + name: 'IDK', + stake_default: 150, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 75163, + min: 15, + }, + limits_ctrader: { + max: 225488, + min: 0, + }, + limits_derivez: { + max: 225488, + min: 0, + }, + limits_dxtrade: { + max: 37581, + min: 0, + }, + limits_mt5: { + max: 225488, + min: 0, + }, + }, + type: 'crypto', + }, + LTC: { + fractional_digits: 8, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Litecoin', + stake_default: 0.13, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 55.79111805, + min: 0.01115822, + }, + limits_ctrader: { + max: 167.37335416, + min: 0.00011158, + }, + limits_derivez: { + max: 167.37335416, + min: 0.00011158, + }, + limits_dxtrade: { + max: 27.89555903, + min: 0.00011158, + }, + limits_mt5: { + max: 167.37335416, + min: 0.00011158, + }, + }, + type: 'crypto', + }, + PAX: { + fractional_digits: 2, + is_deposit_suspended: 1, + is_suspended: 1, + is_withdrawal_suspended: 1, + name: 'Paxos Standard', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 5002.81, + min: 1, + }, + limits_ctrader: { + max: 15008.43, + min: 0.01, + }, + limits_derivez: { + max: 15008.43, + min: 0.01, + }, + limits_dxtrade: { + max: 2501.41, + min: 0.01, + }, + limits_mt5: { + max: 15008.43, + min: 0.01, + }, + }, + type: 'crypto', + }, + TUSD: { + fractional_digits: 2, + is_deposit_suspended: 1, + is_suspended: 1, + is_withdrawal_suspended: 1, + name: 'True USD', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 5004.58, + min: 1, + }, + limits_ctrader: { + max: 15013.75, + min: 0.01, + }, + limits_derivez: { + max: 15013.75, + min: 0.01, + }, + limits_dxtrade: { + max: 2502.29, + min: 0.01, + }, + limits_mt5: { + max: 15013.75, + min: 0.01, + }, + }, + type: 'crypto', + }, + USB: { + fractional_digits: 2, + is_deposit_suspended: 1, + is_suspended: 1, + is_withdrawal_suspended: 1, + name: 'Binary Coin', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 5000, + min: 1, + }, + limits_ctrader: { + max: 15000, + min: 0.01, + }, + limits_derivez: { + max: 15000, + min: 0.01, + }, + limits_dxtrade: { + max: 2500, + min: 0.01, + }, + limits_mt5: { + max: 15000, + min: 0.01, + }, + }, + type: 'crypto', + }, + USD: { + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'US Dollar', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 0, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 0, + EURS: 2, + GBP: 0, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 5000, + min: 1, + }, + limits_ctrader: { + max: 15000, + min: 0.01, + }, + limits_derivez: { + max: 15000, + min: 0.01, + }, + limits_dxtrade: { + max: 2500, + min: 0.01, + }, + limits_mt5: { + max: 15000, + min: 0.01, + }, + }, + type: 'fiat', + }, + USDC: { + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'USD Coin', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 4940, + min: 0.99, + }, + limits_ctrader: { + max: 14820.01, + min: 0.01, + }, + limits_derivez: { + max: 14820.01, + min: 0.01, + }, + limits_dxtrade: { + max: 2470, + min: 0.01, + }, + limits_mt5: { + max: 14820.01, + min: 0.01, + }, + }, + type: 'crypto', + }, + USDK: { + fractional_digits: 2, + is_deposit_suspended: 1, + is_suspended: 1, + is_withdrawal_suspended: 1, + name: 'USDK', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + UST: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 5000, + min: 1, + }, + limits_ctrader: { + max: 15000, + min: 0.01, + }, + limits_derivez: { + max: 15000, + min: 0.01, + }, + limits_dxtrade: { + max: 2500, + min: 0.01, + }, + limits_mt5: { + max: 15000, + min: 0.01, + }, + }, + type: 'crypto', + }, + UST: { + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Tether Omni', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + eUSDT: 2, + tUSDT: 2, + }, + limits: { + max: 4992.76, + min: 1, + }, + limits_ctrader: { + max: 14978.28, + min: 0.01, + }, + limits_derivez: { + max: 14978.28, + min: 0.01, + }, + limits_dxtrade: { + max: 2496.38, + min: 0.01, + }, + limits_mt5: { + max: 14978.28, + min: 0.01, + }, + }, + type: 'crypto', + }, + eUSDT: { + fractional_digits: 2, + is_deposit_suspended: 0, + is_suspended: 0, + is_withdrawal_suspended: 0, + name: 'Tether ERC20', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + tUSDT: 2, + }, + limits: { + max: 4992.76, + min: 1, + }, + limits_ctrader: { + max: 14978.28, + min: 0.01, + }, + limits_derivez: { + max: 14978.28, + min: 0.01, + }, + limits_dxtrade: { + max: 2496.38, + min: 0.01, + }, + limits_mt5: { + max: 14978.28, + min: 0.01, + }, + }, + type: 'crypto', + }, + tUSDT: { + fractional_digits: 2, + is_deposit_suspended: 1, + is_suspended: 1, + is_withdrawal_suspended: 1, + name: 'Tether TRC20', + stake_default: 10, + transfer_between_accounts: { + fees: { + AUD: 2, + BTC: 2, + BUSD: 2, + DAI: 2, + ETH: 2, + EUR: 2, + EURS: 2, + GBP: 2, + IDK: 2, + LTC: 2, + PAX: 2, + TUSD: 2, + USB: 2, + USD: 2, + USDC: 2, + USDK: 2, + UST: 2, + eUSDT: 2, + }, + limits: { + max: 4992.76, + min: 1, + }, + limits_ctrader: { + max: 14978.28, + min: 0.01, + }, + limits_derivez: { + max: 14978.28, + min: 0.01, + }, + limits_dxtrade: { + max: 2496.38, + min: 0.01, + }, + limits_mt5: { + max: 14978.28, + min: 0.01, + }, + }, + type: 'crypto', + }, + }, + dxtrade_status: { + all: 0, + demo: 0, + real: 0, + }, + mt5_status: { + demo: [ + { + all: 0, + platform: 1, + server_number: 1, + }, + { + all: 0, + platform: 1, + server_number: 2, + }, + { + all: 0, + platform: 1, + server_number: 3, + }, + { + all: 0, + platform: 1, + server_number: 4, + }, + ], + real: [ + { + all: 0, + deposits: 0, + platform: 1, + server_number: 1, + withdrawals: 0, + }, + { + all: 0, + deposits: 0, + platform: 1, + server_number: 2, + withdrawals: 0, + }, + { + all: 0, + deposits: 0, + platform: 1, + server_number: 3, + withdrawals: 0, + }, + { + all: 0, + deposits: 0, + platform: 1, + server_number: 4, + withdrawals: 0, + }, + { + all: 0, + deposits: 0, + platform: 2, + server_number: 1, + withdrawals: 0, + }, + { + all: 0, + deposits: 0, + platform: 2, + server_number: 2, + withdrawals: 0, + }, + ], + }, + p2p_config: { + adverts_active_limit: 3, + adverts_archive_period: 3, + block_trade: { + disabled: 1, + maximum_advert_amount: 20000, + }, + cancellation_block_duration: 24, + cancellation_count_period: 24, + cancellation_grace_period: 0, + cancellation_limit: 3, + cross_border_ads_enabled: 1, + disabled: 0, + feature_level: 2, + fixed_rate_adverts: 'disabled', + fixed_rate_adverts_end_date: '2022-08-31', + float_rate_adverts: 'enabled', + float_rate_offset_limit: 10, + local_currencies: [ + { + display_name: 'Antarctic Dollar', + has_adverts: 0, + symbol: 'AAD', + }, + { + display_name: 'Afghan Afghani', + has_adverts: 1, + symbol: 'AFN', + }, + { + display_name: 'Albanian Lek', + has_adverts: 0, + symbol: 'ALL', + }, + { + display_name: 'Armenian Dram', + has_adverts: 0, + symbol: 'AMD', + }, + { + display_name: 'Netherlands Antillean Guilder', + has_adverts: 0, + symbol: 'ANG', + }, + { + display_name: 'Angolan Kwanza', + has_adverts: 0, + symbol: 'AOA', + }, + { + display_name: 'Argentine Peso', + has_adverts: 1, + symbol: 'ARS', + }, + { + display_name: 'Australian Dollar', + has_adverts: 0, + symbol: 'AUD', + }, + { + display_name: 'Aruban Florin', + has_adverts: 0, + symbol: 'AWG', + }, + { + display_name: 'Azerbaijan Manat', + has_adverts: 0, + symbol: 'AZN', + }, + { + display_name: 'Convertible Mark', + has_adverts: 0, + symbol: 'BAM', + }, + { + display_name: 'Barbados Dollar', + has_adverts: 1, + symbol: 'BBD', + }, + { + display_name: 'Bangladeshi Taka', + has_adverts: 1, + symbol: 'BDT', + }, + { + display_name: 'Bahraini Dinar', + has_adverts: 0, + symbol: 'BHD', + }, + { + display_name: 'Burundi Franc', + has_adverts: 1, + symbol: 'BIF', + }, + { + display_name: 'Bermudian Dollar', + has_adverts: 0, + symbol: 'BMD', + }, + { + display_name: 'Brunei Dollar', + has_adverts: 0, + symbol: 'BND', + }, + { + display_name: 'Boliviano', + has_adverts: 1, + symbol: 'BOB', + }, + { + display_name: 'Brazilian Real', + has_adverts: 1, + symbol: 'BRL', + }, + { + display_name: 'Bahamian Dollar', + has_adverts: 0, + symbol: 'BSD', + }, + { + display_name: 'Bhutanese Ngultrum', + has_adverts: 0, + symbol: 'BTN', + }, + { + display_name: 'Botswana Pula', + has_adverts: 1, + symbol: 'BWP', + }, + { + display_name: 'Belarusian Ruble', + has_adverts: 0, + symbol: 'BYN', + }, + { + display_name: 'Belize Dollar', + has_adverts: 0, + symbol: 'BZD', + }, + { + display_name: 'Congolese Franc', + has_adverts: 1, + symbol: 'CDF', + }, + { + display_name: 'Swiss Franc', + has_adverts: 0, + symbol: 'CHF', + }, + { + display_name: 'Chilean Peso', + has_adverts: 1, + symbol: 'CLP', + }, + { + display_name: 'Yuan Renminbi', + has_adverts: 1, + symbol: 'CNY', + }, + { + display_name: 'Colombian Peso', + has_adverts: 1, + symbol: 'COP', + }, + { + display_name: 'Costa Rican Colon', + has_adverts: 1, + symbol: 'CRC', + }, + { + display_name: 'Cabo Verde Escudo', + has_adverts: 0, + symbol: 'CVE', + }, + { + display_name: 'Djibouti Franc', + has_adverts: 0, + symbol: 'DJF', + }, + { + display_name: 'Danish Krone', + has_adverts: 0, + symbol: 'DKK', + }, + { + display_name: 'Dominican Peso', + has_adverts: 1, + symbol: 'DOP', + }, + { + display_name: 'Algerian Dinar', + has_adverts: 0, + symbol: 'DZD', + }, + { + display_name: 'Ecuadorian Sucre', + has_adverts: 0, + symbol: 'ECS', + }, + { + display_name: 'Egyptian Pound', + has_adverts: 0, + symbol: 'EGP', + }, + { + display_name: 'Eritrean Nakfa', + has_adverts: 0, + symbol: 'ERN', + }, + { + display_name: 'Ethiopian Birr', + has_adverts: 0, + symbol: 'ETB', + }, + { + display_name: 'Euro', + has_adverts: 0, + symbol: 'EUR', + }, + { + display_name: 'Fiji Dollar', + has_adverts: 0, + symbol: 'FJD', + }, + { + display_name: 'Falkland Islands Pound', + has_adverts: 0, + symbol: 'FKP', + }, + { + display_name: 'Pound Sterling', + has_adverts: 0, + symbol: 'GBP', + }, + { + display_name: 'Georgian Lari', + has_adverts: 0, + symbol: 'GEL', + }, + { + display_name: 'Ghanaian Cedi (old)', + has_adverts: 0, + symbol: 'GHC', + }, + { + display_name: 'Ghana Cedi', + has_adverts: 1, + symbol: 'GHS', + }, + { + display_name: 'Gibraltar Pound', + has_adverts: 0, + symbol: 'GIP', + }, + { + display_name: 'Gambian Dalasi', + has_adverts: 0, + symbol: 'GMD', + }, + { + display_name: 'Guinean Franc', + has_adverts: 1, + symbol: 'GNF', + }, + { + display_name: 'Guatemalan Quetzal', + has_adverts: 0, + symbol: 'GTQ', + }, + { + display_name: 'Guyana Dollar', + has_adverts: 0, + symbol: 'GYD', + }, + { + display_name: 'Honduran Lempira', + has_adverts: 0, + symbol: 'HNL', + }, + { + display_name: 'Haitian Gourde', + has_adverts: 1, + symbol: 'HTG', + }, + { + display_name: 'Indonesian Rupiah', + has_adverts: 1, + symbol: 'IDR', + }, + { + display_name: 'New Israeli Sheqel', + has_adverts: 0, + symbol: 'ILS', + }, + { + display_name: 'Indian Rupee', + has_adverts: 1, + symbol: 'INR', + }, + { + display_name: 'Iraqi Dinar', + has_adverts: 0, + symbol: 'IQD', + }, + { + display_name: 'Iceland Krona', + has_adverts: 0, + symbol: 'ISK', + }, + { + display_name: 'Jamaican Dollar', + has_adverts: 1, + symbol: 'JMD', + }, + { + display_name: 'Jordanian Dinar', + has_adverts: 0, + symbol: 'JOD', + }, + { + display_name: 'Japanese Yen', + has_adverts: 0, + symbol: 'JPY', + }, + { + display_name: 'Kenyan Shilling', + has_adverts: 1, + symbol: 'KES', + }, + { + display_name: 'Kyrgyzstani Som', + has_adverts: 0, + symbol: 'KGS', + }, + { + display_name: 'Cambodian Riel', + has_adverts: 0, + symbol: 'KHR', + }, + { + display_name: 'Comorian Franc', + has_adverts: 0, + symbol: 'KMF', + }, + { + display_name: 'South Korean Won', + has_adverts: 0, + symbol: 'KRW', + }, + { + display_name: 'Kuwaiti Dinar', + has_adverts: 0, + symbol: 'KWD', + }, + { + display_name: 'Kazakhstani Tenge', + has_adverts: 0, + symbol: 'KZT', + }, + { + display_name: 'Lao Kip', + has_adverts: 0, + symbol: 'LAK', + }, + { + display_name: 'Lebanese Pound', + has_adverts: 0, + symbol: 'LBP', + }, + { + display_name: 'Sri Lanka Rupee', + has_adverts: 1, + symbol: 'LKR', + }, + { + display_name: 'Liberian Dollar', + has_adverts: 1, + symbol: 'LRD', + }, + { + display_name: 'Lesotho Loti', + has_adverts: 0, + symbol: 'LSL', + }, + { + display_name: 'Libyan Dinar', + has_adverts: 0, + symbol: 'LYD', + }, + { + display_name: 'Moroccan Dirham', + has_adverts: 0, + symbol: 'MAD', + }, + { + display_name: 'Moldovan Leu', + has_adverts: 0, + symbol: 'MDL', + }, + { + display_name: 'Malagasy Ariary', + has_adverts: 0, + symbol: 'MGA', + }, + { + display_name: 'Macedonian Denar', + has_adverts: 0, + symbol: 'MKD', + }, + { + display_name: 'Mongolian Tögrög', + has_adverts: 0, + symbol: 'MNT', + }, + { + display_name: 'Macanese Pataca', + has_adverts: 0, + symbol: 'MOP', + }, + { + display_name: 'Mauritanian Ouguiya', + has_adverts: 0, + symbol: 'MRU', + }, + { + display_name: 'Mauritius Rupee', + has_adverts: 1, + symbol: 'MUR', + }, + { + display_name: 'Maldivian Rufiyaa', + has_adverts: 0, + symbol: 'MVR', + }, + { + display_name: 'Malawi Kwacha', + has_adverts: 1, + symbol: 'MWK', + }, + { + display_name: 'Mexican Peso', + has_adverts: 1, + symbol: 'MXN', + }, + { + display_name: 'Mozambique Metical (old)', + has_adverts: 0, + symbol: 'MZM', + }, + { + display_name: 'Mozambique Metical', + has_adverts: 1, + symbol: 'MZN', + }, + { + display_name: 'Namibia Dollar', + has_adverts: 1, + symbol: 'NAD', + }, + { + display_name: 'Cordoba Oro', + has_adverts: 1, + symbol: 'NIO', + }, + { + display_name: 'Norwegian Krone', + has_adverts: 0, + symbol: 'NOK', + }, + { + display_name: 'Nepalese Rupee', + has_adverts: 0, + symbol: 'NPR', + }, + { + display_name: 'New Zealand Dollar', + has_adverts: 1, + symbol: 'NZD', + }, + { + display_name: 'Omani Rial', + has_adverts: 1, + symbol: 'OMR', + }, + { + display_name: 'Panamanian Balboa', + has_adverts: 1, + symbol: 'PAB', + }, + { + display_name: 'Peruvian Sol', + has_adverts: 1, + symbol: 'PEN', + }, + { + display_name: 'Papua New Guinean Kina', + has_adverts: 0, + symbol: 'PGK', + }, + { + display_name: 'Philippine Peso', + has_adverts: 1, + symbol: 'PHP', + }, + { + display_name: 'Pakistan Rupee', + has_adverts: 1, + symbol: 'PKR', + }, + { + display_name: 'Qatari Riyal', + has_adverts: 1, + symbol: 'QAR', + }, + { + display_name: 'Serbian Dinar', + has_adverts: 0, + symbol: 'RSD', + }, + { + display_name: 'Russian Ruble', + has_adverts: 1, + symbol: 'RUB', + }, + { + display_name: 'Saudi Riyal', + has_adverts: 0, + symbol: 'SAR', + }, + { + display_name: 'Solomon Islands Dollar', + has_adverts: 0, + symbol: 'SBD', + }, + { + display_name: 'Seychelles Rupee', + has_adverts: 0, + symbol: 'SCR', + }, + { + display_name: 'Sudanese Pound', + has_adverts: 0, + symbol: 'SDG', + }, + { + display_name: 'Singapore Dollar', + has_adverts: 0, + symbol: 'SGD', + }, + { + display_name: 'Saint Helena Pound', + has_adverts: 0, + symbol: 'SHP', + }, + { + display_name: 'Sierra Leonean Leone', + has_adverts: 0, + symbol: 'SLL', + }, + { + display_name: 'Somali Shilling', + has_adverts: 1, + symbol: 'SOS', + }, + { + display_name: 'Surinam Dollar', + has_adverts: 0, + symbol: 'SRD', + }, + { + display_name: 'South Sudanese Pound', + has_adverts: 0, + symbol: 'SSP', + }, + { + display_name: 'São Tomé and Príncipe Dobra', + has_adverts: 0, + symbol: 'STN', + }, + { + display_name: 'El Salvador Colon', + has_adverts: 0, + symbol: 'SVC', + }, + { + display_name: 'Swazi Lilangeni', + has_adverts: 1, + symbol: 'SZL', + }, + { + display_name: 'Thai Baht', + has_adverts: 0, + is_default: 1, + symbol: 'THB', + }, + { + display_name: 'Tajikistani Somoni', + has_adverts: 0, + symbol: 'TJS', + }, + { + display_name: 'Turkmenistan New Manat', + has_adverts: 0, + symbol: 'TMT', + }, + { + display_name: 'Tunisian Dinar', + has_adverts: 0, + symbol: 'TND', + }, + { + display_name: 'Tongan Paʻanga', + has_adverts: 0, + symbol: 'TOP', + }, + { + display_name: 'Turkish Lira', + has_adverts: 1, + symbol: 'TRY', + }, + { + display_name: 'Trinidad and Tobago Dollar', + has_adverts: 0, + symbol: 'TTD', + }, + { + display_name: 'New Taiwan Dollar', + has_adverts: 0, + symbol: 'TWD', + }, + { + display_name: 'Tanzanian Shilling', + has_adverts: 1, + symbol: 'TZS', + }, + { + display_name: 'Ukrainian Hryvnia', + has_adverts: 0, + symbol: 'UAH', + }, + { + display_name: 'Uganda Shilling', + has_adverts: 1, + symbol: 'UGX', + }, + { + display_name: 'US Dollar', + has_adverts: 1, + symbol: 'USD', + }, + { + display_name: 'Uruguayan Peso', + has_adverts: 1, + symbol: 'UYU', + }, + { + display_name: 'Uzbekistan Sum', + has_adverts: 0, + symbol: 'UZS', + }, + { + display_name: 'Venezuelan Bolívar', + has_adverts: 0, + symbol: 'VEB', + }, + { + display_name: 'Venezuelan Bolívar Fuente', + has_adverts: 0, + symbol: 'VEF', + }, + { + display_name: 'Venezuelan Bolívar Soberano', + has_adverts: 1, + symbol: 'VES', + }, + { + display_name: 'Vietnamese Đồng', + has_adverts: 0, + symbol: 'VND', + }, + { + display_name: 'Samoan Tala', + has_adverts: 0, + symbol: 'WST', + }, + { + display_name: 'CFA Franc BEAC', + has_adverts: 1, + symbol: 'XAF', + }, + { + display_name: 'East Caribbean Dollar', + has_adverts: 0, + symbol: 'XCD', + }, + { + display_name: 'CFA Franc BCEAO', + has_adverts: 1, + symbol: 'XOF', + }, + { + display_name: 'CFP Franc', + has_adverts: 0, + symbol: 'XPF', + }, + { + display_name: 'Yemeni Rial', + has_adverts: 0, + symbol: 'YER', + }, + { + display_name: 'South African Rand', + has_adverts: 1, + symbol: 'ZAR', + }, + { + display_name: 'Zambian Kwacha (old)', + has_adverts: 0, + symbol: 'ZMK', + }, + { + display_name: 'Zambian Kwacha', + has_adverts: 1, + symbol: 'ZMW', + }, + { + display_name: 'Zimbabwe Dollar', + has_adverts: 0, + symbol: 'ZWD', + }, + { + display_name: 'Zimbabwe Dollar', + has_adverts: 1, + symbol: 'ZWL', + }, + ], + maximum_advert_amount: 5001, + maximum_order_amount: 1000, + order_daily_limit: 200, + order_payment_period: 60, + payment_methods_enabled: 1, + review_period: 24, + supported_currencies: ['usd'], + }, + payment_agents: { + initial_deposit_per_country: { + BR: 3000, + BW: 2000, + ID: 3000, + IN: 3000, + KE: 3000, + LK: 3000, + NG: 3000, + TZ: 3000, + ZA: 3000, + ZW: 2000, + default: 500, + }, + }, + site_status: 'up', + supported_languages: [ + 'EN', + 'ID', + 'RU', + 'ES', + 'FR', + 'IT', + 'PT', + 'PL', + 'DE', + 'ZH_CN', + 'VI', + 'ZH_TW', + 'TH', + 'TR', + 'KO', + 'AR', + 'BN', + 'SI', + ], + terms_conditions_version: 'Version 4.2.0 2020-08-07', + }, + }; + } +} diff --git a/packages/integration/src/mocks/location/residents_list.ts b/packages/integration/src/mocks/location/residents_list.ts new file mode 100644 index 000000000000..ffcaa59e6b9e --- /dev/null +++ b/packages/integration/src/mocks/location/residents_list.ts @@ -0,0 +1,6972 @@ +import { Context } from 'Utils/mocks/mocks'; + +function mock_residents_list(context: Context) { + if ('residence_list' in context.request) { + context.response = { + echo_req: { + req_id: context.req_id, + residence_list: 1, + }, + msg_type: 'residence_list', + req_id: context.req_id, + residence_list: [ + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '93', + text: 'Afghanistan', + value: 'af', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '35818', + text: 'Aland Islands', + value: 'ax', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '355', + text: 'Albania', + tin_format: ['^[A-Ta-t0-9]\\d{8}[A-Wa-w]$'], + value: 'al', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '213', + text: 'Algeria', + value: 'dz', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '684', + text: 'American Samoa', + value: 'as', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '376', + text: 'Andorra', + tin_format: ['^[FfEeAaLlCcDdGgOoPpUu]\\d{6}[a-zA-Z]$'], + value: 'ad', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '244', + text: 'Angola', + value: 'ao', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1264', + text: 'Anguilla', + value: 'ai', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '672', + selected: 'selected', + text: 'Antarctica', + value: 'aq', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1268', + text: 'Antigua and Barbuda', + tin_format: ['^\\d{6}$'], + value: 'ag', + }, + { + identity: { + services: { + idv: { + documents_supported: { + dni: { + display_name: 'Documento Nacional de Identidad', + format: '^\\d{7,8}$', + }, + }, + has_visual_sample: 0, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '54', + text: 'Argentina', + tin_format: ['^(20|23|24|25|26|27|30|33)\\d{9}$'], + value: 'ar', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '374', + text: 'Armenia', + value: 'am', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '297', + text: 'Aruba', + tin_format: ['^\\d{8}$'], + value: 'aw', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + immigration_status_document: { + display_name: 'Immigration Status Document', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '61', + text: 'Australia', + value: 'au', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + asylum_registration_card: { + display_name: 'Asylum Registration Card', + }, + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '43', + text: 'Austria', + tin_format: ['^\\d{9}$'], + value: 'at', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '994', + text: 'Azerbaijan', + tin_format: ['^\\d{10}$'], + value: 'az', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1242', + text: 'Bahamas', + value: 'bs', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '973', + text: 'Bahrain', + value: 'bh', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '880', + text: 'Bangladesh', + value: 'bd', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1246', + text: 'Barbados', + value: 'bb', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '375', + text: 'Belarus', + value: 'by', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '32', + text: 'Belgium', + value: 'be', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '501', + text: 'Belize', + tin_format: ['^\\d{6}(10|13|66)$'], + value: 'bz', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '229', + text: 'Benin', + value: 'bj', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1441', + text: 'Bermuda', + value: 'bm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '975', + text: 'Bhutan', + value: 'bt', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '591', + text: 'Bolivia', + value: 'bo', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '387', + text: 'Bosnia and Herzegovina', + value: 'ba', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '267', + text: 'Botswana', + value: 'bw', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + text: 'Bouvet Island', + value: 'bv', + }, + { + identity: { + services: { + idv: { + documents_supported: { + cpf: { + display_name: 'CPF', + format: '^[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}-[0-9]{2}$', + }, + }, + has_visual_sample: 0, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '55', + text: 'Brazil', + tin_format: ['^(\\d{11}|\\d{14})$'], + value: 'br', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '246', + text: 'British Indian Ocean Territory', + value: 'io', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1284', + text: 'British Virgin Islands', + value: 'vg', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '673', + text: 'Brunei', + value: 'bn', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '359', + text: 'Bulgaria', + tin_format: ['^\\d{10}$'], + value: 'bg', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '226', + text: 'Burkina Faso', + value: 'bf', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '257', + text: 'Burundi', + value: 'bi', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '855', + text: 'Cambodia', + value: 'kh', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '237', + text: 'Cameroon', + value: 'cm', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1', + text: 'Canada', + value: 'ca', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '238', + text: 'Cape Verde', + value: 'cv', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '599', + text: 'Caribbean Netherlands', + value: 'bq', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1345', + text: 'Cayman Islands', + value: 'ky', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '236', + text: 'Central African Republic', + value: 'cf', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '235', + text: 'Chad', + value: 'td', + }, + { + identity: { + services: { + idv: { + documents_supported: { + national_id: { + display_name: 'National ID Number', + format: '^\\d{8}[A-Za-z0-9]$', + }, + }, + has_visual_sample: 0, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '56', + text: 'Chile', + tin_format: ['^\\d{7,8}[0-9Kk]$'], + value: 'cl', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + immigration_status_document: { + display_name: 'Immigration Status Document', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '86', + text: 'China', + tin_format: [ + '^\\d{17}[Xx\\d]$', + '^[CcWwHhMmTt]\\d{16}[xX\\d]$', + '^[Jj]\\d{14}$', + '^(\\d{15}|\\d{18})$', + '^\\d{8}\\w{10}$', + ], + value: 'cn', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '618', + text: 'Christmas Island', + value: 'cx', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '6189162', + text: 'Cocos (Keeling) Islands', + value: 'cc', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '57', + text: 'Colombia', + tin_format: ['^\\d{8,10}$'], + value: 'co', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '269', + text: 'Comoros', + value: 'km', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '242', + text: 'Congo - Brazzaville', + value: 'cg', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '243', + text: 'Congo - Kinshasa', + value: 'cd', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '682', + text: 'Cook Islands', + tin_format: ['^\\d{5}$'], + value: 'ck', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '506', + text: 'Costa Rica', + tin_format: ['^\\d{9,12}$'], + value: 'cr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '225', + text: "Cote d'Ivoire", + value: 'ci', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '385', + text: 'Croatia', + tin_format: ['^\\d{11}$'], + value: 'hr', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '53', + text: 'Cuba', + value: 'cu', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '5999', + text: 'Curacao', + value: 'cw', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '357', + text: 'Cyprus', + tin_format: ['^\\d{8}[A-Za-z]$'], + value: 'cy', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '420', + text: 'Czech Republic', + tin_format: ['^\\d{9,10}$'], + value: 'cz', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '45', + text: 'Denmark', + tin_format: ['^\\d{10}$'], + value: 'dk', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '253', + text: 'Djibouti', + value: 'dj', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1767', + text: 'Dominica', + tin_format: ['^[1-9]\\d{5}$'], + value: 'dm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1809', + text: 'Dominican Republic', + value: 'do', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '593', + text: 'Ecuador', + tin_format: ['^\\d{10}001$', '^\\d{2}6\\d{6}0001$'], + value: 'ec', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '20', + text: 'Egypt', + value: 'eg', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '503', + text: 'El Salvador', + value: 'sv', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '240', + text: 'Equatorial Guinea', + value: 'gq', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '291', + text: 'Eritrea', + value: 'er', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '372', + text: 'Estonia', + tin_format: ['^\\d{11}$'], + value: 'ee', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '251', + text: 'Ethiopia', + value: 'et', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '500', + text: 'Falkland Islands', + value: 'fk', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '298', + text: 'Faroe Islands', + tin_format: ['^\\d{9}$'], + value: 'fo', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '679', + text: 'Fiji', + value: 'fj', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '358', + text: 'Finland', + tin_format: ['^\\d{6}[-+A]\\d{3}\\w$'], + value: 'fi', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + asylum_registration_card: { + display_name: 'Asylum Registration Card', + }, + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '33', + text: 'France', + tin_format: ['^\\d{13}$'], + value: 'fr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '594', + text: 'French Guiana', + value: 'gf', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '689', + text: 'French Polynesia', + value: 'pf', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + text: 'French Southern Territories', + value: 'tf', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '241', + text: 'Gabon', + value: 'ga', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '220', + text: 'Gambia', + value: 'gm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '995', + text: 'Georgia', + value: 'ge', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '49', + text: 'Germany', + tin_format: ['^\\d{11}$'], + value: 'de', + }, + { + identity: { + services: { + idv: { + documents_supported: { + drivers_license: { + display_name: 'Drivers License', + format: '^((\\d{8}[a-zA-Z]{1}\\d{1})|([a-zA-Z]{1}\\d{7})|([a-zA-Z]{3}\\-\\d{8}\\-\\d{5}))$', + }, + passport: { + display_name: 'Passport', + format: '^(?i)G[a-zA-Z0-9]{7,9}$', + }, + ssnit: { + display_name: 'Social Security and National Insurance Trust (SSNIT)', + format: '^[a-zA-Z]{1}[0-9]{12,14}$', + }, + }, + has_visual_sample: 0, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '233', + text: 'Ghana', + tin_format: ['^(GHA)-[0-9]{8,9}-[0-9]{1}$', '^(GRA|P00|C00|G00|Q00|V00)[A-Za-z0-9]{8}$'], + value: 'gh', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '350', + text: 'Gibraltar', + tin_format: ['^\\d{6}$'], + value: 'gi', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '30', + text: 'Greece', + tin_format: ['^\\d{9}$'], + value: 'gr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '299', + text: 'Greenland', + tin_format: ['^\\d{10}$'], + value: 'gl', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1473', + text: 'Grenada', + tin_format: ['^\\d{8}$'], + value: 'gd', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '590', + text: 'Guadeloupe', + value: 'gp', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '671', + text: 'Guam', + value: 'gu', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '502', + text: 'Guatemala', + value: 'gt', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '441481', + text: 'Guernsey', + value: 'gg', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '224', + text: 'Guinea', + value: 'gn', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '245', + text: 'Guinea-Bissau', + value: 'gw', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '592', + text: 'Guyana', + value: 'gy', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '509', + text: 'Haiti', + value: 'ht', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + text: 'Heard & McDonald Islands', + value: 'hm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '504', + text: 'Honduras', + value: 'hn', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '852', + text: 'Hong Kong SAR China', + value: 'hk', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '36', + text: 'Hungary', + tin_format: ['^\\d{10}$'], + value: 'hu', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '354', + text: 'Iceland', + tin_format: ['^\\d{10}$'], + value: 'is', + }, + { + identity: { + services: { + idv: { + documents_supported: { + aadhaar: { + additional: { + display_name: 'PAN Card', + format: '^[a-zA-Z]{5}\\d{4}[a-zA-Z]{1}$', + }, + display_name: 'Aadhaar Card', + format: '^[0-9]{12}$', + }, + drivers_license: { + display_name: 'Drivers License', + format: '^[a-zA-Z0-9]{10,17}$', + }, + epic: { + display_name: 'Voter ID', + format: '^[a-zA-Z]{3}[0-9]{7}$', + }, + pan: { + display_name: 'PAN Card', + format: '^[a-zA-Z]{5}\\d{4}[a-zA-Z]{1}$', + }, + passport: { + additional: { + display_name: 'File Number', + format: '^.{15}$', + }, + display_name: 'Passport', + format: '^.{8}$', + }, + }, + has_visual_sample: 0, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + visa: { + display_name: 'Visa', + }, + voter_id: { + display_name: 'Voter Id', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '91', + text: 'India', + tin_format: ['^[a-zA-Z]{5}\\d{4}[a-zA-Z]$'], + value: 'in', + }, + { + identity: { + services: { + idv: { + documents_supported: { + nik: { + display_name: 'Nomor Induk Kependudukan', + format: '^\\d{16}$', + }, + }, + has_visual_sample: 0, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '62', + text: 'Indonesia', + tin_format: ['^\\d{15}$'], + value: 'id', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '98', + text: 'Iran', + value: 'ir', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '964', + text: 'Iraq', + value: 'iq', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '353', + text: 'Ireland', + tin_format: ['^\\d{7}[A-Za-z]{1,2}$'], + value: 'ie', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '44', + text: 'Isle of Man', + value: 'im', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '972', + text: 'Israel', + value: 'il', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '39', + text: 'Italy', + tin_format: [ + '^[A-Za-z]{6}\\d{2}[A-Za-z]\\d{2}[A-Za-z]\\d{3}[A-Za-z]$', + '^[A-Za-z]{6}\\d{2}[A-Za-z]\\d{2}[A-Za-z0-9]{4}[A-Za-z]$', + ], + value: 'it', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + voter_id: { + display_name: 'Voter Id', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1876', + text: 'Jamaica', + value: 'jm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '81', + text: 'Japan', + value: 'jp', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '441534', + text: 'Jersey', + value: 'je', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '962', + text: 'Jordan', + value: 'jo', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '7', + text: 'Kazakhstan', + tin_format: ['^\\d{12}$'], + value: 'kz', + }, + { + identity: { + services: { + idv: { + documents_supported: { + alien_card: { + display_name: 'Alien Card', + format: '^[0-9]{6,9}$', + }, + national_id: { + display_name: 'National ID Number', + format: '^[0-9]{1,9}$', + }, + passport: { + display_name: 'Passport', + format: '^[A-Z0-9]{7,9}$', + }, + }, + has_visual_sample: 1, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '254', + text: 'Kenya', + value: 'ke', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '686', + text: 'Kiribati', + value: 'ki', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '965', + text: 'Kuwait', + tin_format: ['^\\d{12}$'], + value: 'kw', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '996', + text: 'Kyrgyzstan', + value: 'kg', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '856', + text: 'Laos', + value: 'la', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '371', + text: 'Latvia', + tin_format: ['^\\d{11}$', '^32\\d{9}$'], + value: 'lv', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '961', + text: 'Lebanon', + tin_format: ['^\\d+$'], + value: 'lb', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '266', + text: 'Lesotho', + value: 'ls', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '231', + text: 'Liberia', + value: 'lr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '218', + text: 'Libya', + value: 'ly', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '417', + text: 'Liechtenstein', + tin_format: ['^\\d{1,12}$'], + value: 'li', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '370', + text: 'Lithuania', + tin_format: ['^\\d{11}$'], + value: 'lt', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '352', + text: 'Luxembourg', + tin_format: ['^\\d{13}$'], + value: 'lu', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '853', + text: 'Macau SAR China', + tin_format: ['^\\d+$'], + value: 'mo', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '389', + text: 'Macedonia', + value: 'mk', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '261', + text: 'Madagascar', + value: 'mg', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '265', + text: 'Malawi', + value: 'mw', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '60', + text: 'Malaysia', + value: 'my', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '960', + text: 'Maldives', + value: 'mv', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '223', + text: 'Mali', + value: 'ml', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '356', + text: 'Malta', + value: 'mt', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '692', + text: 'Marshall Islands', + tin_format: ['^\\d{7,8}$'], + value: 'mh', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '596', + text: 'Martinique', + value: 'mq', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '222', + text: 'Mauritania', + value: 'mr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '230', + text: 'Mauritius', + tin_format: ['^[17823]\\d{7}$'], + value: 'mu', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '262269', + text: 'Mayotte', + value: 'yt', + }, + { + identity: { + services: { + idv: { + documents_supported: { + curp: { + display_name: 'Clave Única de Registro de Población', + format: '^[a-zA-Z]{4}[0-9]{6}[MmHh]{1}[a-zA-Z]{5}[a-zA-Z0-9]{2}$', + }, + }, + has_visual_sample: 0, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + voter_id: { + display_name: 'Voter Id', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '52', + text: 'Mexico', + tin_format: ['^[a-zA-Z]{3,4}\\d{6}\\w{3}$'], + value: 'mx', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '691', + text: 'Micronesia', + value: 'fm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '373', + text: 'Moldova', + value: 'md', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '377', + text: 'Monaco', + value: 'mc', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '976', + text: 'Mongolia', + value: 'mn', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '382', + text: 'Montenegro', + value: 'me', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1664', + text: 'Montserrat', + value: 'ms', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '212', + text: 'Morocco', + value: 'ma', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '258', + text: 'Mozambique', + value: 'mz', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '95', + text: 'Myanmar (Burma)', + value: 'mm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '264', + text: 'Namibia', + value: 'na', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '674', + text: 'Nauru', + tin_format: ['^\\d{9}$'], + value: 'nr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '977', + text: 'Nepal', + value: 'np', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + asylum_registration_card: { + display_name: 'Asylum Registration Card', + }, + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '31', + text: 'Netherlands', + tin_format: ['^\\d{9}$'], + value: 'nl', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '687', + text: 'New Caledonia', + value: 'nc', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '64', + text: 'New Zealand', + tin_format: ['^\\d{8,9}$'], + value: 'nz', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '505', + text: 'Nicaragua', + value: 'ni', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '227', + text: 'Niger', + value: 'ne', + }, + { + identity: { + services: { + idv: { + documents_supported: { + drivers_license: { + display_name: 'Drivers License', + format: '^[a-zA-Z]{3}([ -]{1})?[A-Z0-9]{6,12}$', + }, + nin_slip: { + display_name: 'National ID Number Slip', + format: '^[0-9]{11}$', + }, + }, + has_visual_sample: 1, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + voter_id: { + display_name: 'Voter Id', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '234', + text: 'Nigeria', + tin_format: ['^\\d{10}$', '^\\d{8}$', '^[A-Za-z]\\d{4,8}$', '^\\d{11}$', '^\\d{12}$'], + value: 'ng', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '683', + text: 'Niue', + value: 'nu', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '6723', + text: 'Norfolk Island', + value: 'nf', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '850', + text: 'North Korea', + value: 'kp', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1670', + text: 'Northern Mariana Islands', + value: 'mp', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + asylum_registration_card: { + display_name: 'Asylum Registration Card', + }, + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '47', + text: 'Norway', + value: 'no', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '968', + text: 'Oman', + value: 'om', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '92', + text: 'Pakistan', + tin_format: ['^\\d{13}$', '^\\d{7}$'], + value: 'pk', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '680', + text: 'Palau', + value: 'pw', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '970', + text: 'Palestinian Territories', + value: 'ps', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '507', + text: 'Panama', + tin_format: ['^[a-zA-Z0-9]\\d{7}$'], + value: 'pa', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '675', + text: 'Papua New Guinea', + value: 'pg', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '595', + text: 'Paraguay', + value: 'py', + }, + { + identity: { + services: { + idv: { + documents_supported: { + national_id: { + display_name: 'National ID Number', + format: '^\\d{8}$', + }, + }, + has_visual_sample: 0, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '51', + text: 'Peru', + value: 'pe', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + visa: { + display_name: 'Visa', + }, + voter_id: { + display_name: 'Voter Id', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '63', + text: 'Philippines', + value: 'ph', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '649', + text: 'Pitcairn Islands', + value: 'pn', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '48', + text: 'Poland', + tin_format: ['^\\d{10,11}$'], + value: 'pl', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '351', + text: 'Portugal', + tin_format: ['^\\d{9}$'], + value: 'pt', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1787', + text: 'Puerto Rico', + value: 'pr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '974', + text: 'Qatar', + value: 'qa', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '262', + text: 'Reunion', + value: 're', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '40', + text: 'Romania', + tin_format: ['^\\d{13}$'], + value: 'ro', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '7', + text: 'Russia', + tin_format: ['^\\d{12}$'], + value: 'ru', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '250', + text: 'Rwanda', + value: 'rw', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '590', + text: 'Saint Barthelemy', + value: 'bl', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '290', + text: 'Saint Helena', + value: 'sh', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1869', + text: 'Saint Kitts and Nevis', + value: 'kn', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1758', + text: 'Saint Lucia', + tin_format: ['^\\d{1,6}$'], + value: 'lc', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '590', + text: 'Saint Martin', + value: 'mf', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '508', + text: 'Saint Pierre and Miquelon', + value: 'pm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '685', + text: 'Samoa', + value: 'ws', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '378', + text: 'San Marino', + tin_format: ['^\\d{8,9}$', '^[SsMm]\\d{5}$'], + value: 'sm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '239', + text: 'Sao Tome and Principe', + value: 'st', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '966', + text: 'Saudi Arabia', + tin_format: ['^\\d{10}$'], + value: 'sa', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '221', + text: 'Senegal', + value: 'sn', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '381', + text: 'Serbia', + value: 'rs', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '248', + text: 'Seychelles', + tin_format: ['^\\d{2}[1-7]\\d{6}$'], + value: 'sc', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '232', + text: 'Sierra Leone', + value: 'sl', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '65', + text: 'Singapore', + tin_format: [ + '^[SsTtFfGg]\\d{7}[A-Za-z]$', + '^[A-Za-z]{9,10}$', + '^[Ff]0000\\d{6}$', + '^[Ff]\\d{9}$', + '^([Ss]|[Tt][4])\\d{9}$', + '^[Aa]\\d{9}$', + ], + value: 'sg', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '1721', + text: 'Sint Maarten', + value: 'sx', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '421', + text: 'Slovakia', + tin_format: ['^\\d{9,10}$'], + value: 'sk', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '386', + text: 'Slovenia', + tin_format: ['^\\d{8}$'], + value: 'si', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '677', + text: 'Solomon Islands', + value: 'sb', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '252', + text: 'Somalia', + value: 'so', + }, + { + identity: { + services: { + idv: { + documents_supported: { + national_id: { + display_name: 'National ID Number', + format: '^[0-9]{13}$', + }, + }, + has_visual_sample: 1, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '27', + text: 'South Africa', + tin_format: ['^[01239]\\d{3}\\/?\\d{3}\\/?\\d{3}$'], + value: 'za', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '500', + text: 'South Georgia & South Sandwich Islands', + value: 'gs', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '82', + text: 'South Korea', + tin_format: ['^\\d{13}$'], + value: 'kr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '211', + text: 'South Sudan', + value: 'ss', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '34', + text: 'Spain', + tin_format: ['^[KkLlMmXxYyZz]\\d{7}[A-Za-z]$', '^\\d{8}[A-Za-z]$'], + value: 'es', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '94', + text: 'Sri Lanka', + value: 'lk', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1784', + text: 'St. Vincent & Grenadines', + tin_format: ['^\\d+$'], + value: 'vc', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '249', + text: 'Sudan', + value: 'sd', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '597', + text: 'Suriname', + value: 'sr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '4779', + text: 'Svalbard and Jan Mayen', + value: 'sj', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '268', + text: 'Swaziland', + value: 'sz', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '46', + text: 'Sweden', + tin_format: ['^\\d{10}$', '^\\d{12}$'], + value: 'se', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '41', + text: 'Switzerland', + tin_format: [ + '^756\\.[0-9]{4}\\.[0-9]{4}\\.[0-9]{2}$', + '^(CHE|che)-[0-9]{3}\\.[0-9]{3}\\.[0-9]{3}$', + ], + value: 'ch', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '963', + text: 'Syria', + value: 'sy', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '886', + text: 'Taiwan', + value: 'tw', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '992', + text: 'Tajikistan', + value: 'tj', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + voter_id: { + display_name: 'Voter Id', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '255', + text: 'Tanzania', + value: 'tz', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '66', + text: 'Thailand', + value: 'th', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 0, + }, + }, + }, + phone_idd: '670', + text: 'Timor-Leste', + value: 'tl', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '228', + text: 'Togo', + value: 'tg', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '690', + text: 'Tokelau', + value: 'tk', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '676', + text: 'Tonga', + value: 'to', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1868', + text: 'Trinidad and Tobago', + value: 'tt', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '216', + text: 'Tunisia', + value: 'tn', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '90', + text: 'Turkey', + tin_format: ['^\\d{10}$'], + value: 'tr', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '993', + text: 'Turkmenistan', + value: 'tm', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1649', + text: 'Turks and Caicos Islands', + value: 'tc', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '688', + text: 'Tuvalu', + value: 'tv', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + text: 'U.S. Outlying Islands', + value: 'um', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1340', + text: 'U.S. Virgin Islands', + value: 'vi', + }, + { + identity: { + services: { + idv: { + documents_supported: { + national_id_no_photo: { + additional: { + display_name: 'Card Number', + format: '^[a-zA-Z0-9]+$', + }, + display_name: 'National ID Number', + format: '^[a-zA-Z0-9]{14}$', + }, + }, + has_visual_sample: 1, + is_country_supported: 1, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '256', + text: 'Uganda', + value: 'ug', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '380', + text: 'Ukraine', + value: 'ua', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '971', + text: 'United Arab Emirates', + value: 'ae', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + asylum_registration_card: { + display_name: 'Asylum Registration Card', + }, + driving_licence: { + display_name: 'Driving Licence', + }, + immigration_status_document: { + display_name: 'Immigration Status Document', + }, + national_health_insurance_card: { + display_name: 'National Health Insurance Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '44', + text: 'United Kingdom', + tin_format: ['^\\d{10}$', '^[A-Za-z]{2}\\d{6}[A-Za-z]$'], + value: 'gb', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + visa: { + display_name: 'Visa', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '1', + text: 'United States', + value: 'us', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '598', + text: 'Uruguay', + tin_format: ['^\\d{8,9}$', '^\\d{8}001\\d$'], + value: 'uy', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '998', + text: 'Uzbekistan', + value: 'uz', + }, + { + disabled: 'DISABLED', + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '678', + text: 'Vanuatu', + value: 'vu', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '379', + text: 'Vatican City', + value: 'va', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '58', + text: 'Venezuela', + value: 've', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + residence_permit: { + display_name: 'Residence Permit', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '84', + text: 'Vietnam', + value: 'vn', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '681', + text: 'Wallis and Futuna', + value: 'wf', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: {}, + is_country_supported: 0, + }, + }, + }, + phone_idd: '21', + text: 'Western Sahara', + value: 'eh', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '967', + text: 'Yemen', + value: 'ye', + }, + { + identity: { + services: { + idv: { + documents_supported: {}, + has_visual_sample: 0, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + driving_licence: { + display_name: 'Driving Licence', + }, + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '260', + text: 'Zambia', + value: 'zm', + }, + { + identity: { + services: { + idv: { + documents_supported: { + national_id: { + display_name: 'National ID Number', + format: '^[0-9]{8,9}[a-zA-Z]{1}[0-9]{2}$', + }, + }, + has_visual_sample: 1, + is_country_supported: 0, + }, + onfido: { + documents_supported: { + national_identity_card: { + display_name: 'National Identity Card', + }, + passport: { + display_name: 'Passport', + }, + }, + is_country_supported: 1, + }, + }, + }, + phone_idd: '263', + text: 'Zimbabwe', + value: 'zw', + }, + ], + }; + } +} + +export default mock_residents_list; diff --git a/packages/integration/src/mocks/location/states_list.ts b/packages/integration/src/mocks/location/states_list.ts new file mode 100644 index 000000000000..5c63d417790f --- /dev/null +++ b/packages/integration/src/mocks/location/states_list.ts @@ -0,0 +1,326 @@ +import { Context } from 'Utils/mocks/mocks'; + +function mock_states_list(context: Context) { + if ('states_list' in context.request) { + context.response = { + echo_req: { + req_id: context.req_id, + states_list: 'th', + }, + msg_type: 'states_list', + req_id: context.req_id, + states_list: [ + { + text: 'Amnat Charoen', + value: '37', + }, + { + text: 'Ang Thong', + value: '15', + }, + { + text: 'Buri Ram', + value: '31', + }, + { + text: 'Chachoengsao', + value: '24', + }, + { + text: 'Chai Nat', + value: '18', + }, + { + text: 'Chaiyaphum', + value: '36', + }, + { + text: 'Chanthaburi', + value: '22', + }, + { + text: 'Chiang Mai', + value: '50', + }, + { + text: 'Chiang Rai', + value: '57', + }, + { + text: 'Chon Buri', + value: '20', + }, + { + text: 'Chumphon', + value: '86', + }, + { + text: 'Kalasin', + value: '46', + }, + { + text: 'Kamphaeng Phet', + value: '62', + }, + { + text: 'Kanchanaburi', + value: '71', + }, + { + text: 'Khon Kaen', + value: '40', + }, + { + text: 'Krabi', + value: '81', + }, + { + text: 'Krung Thep Maha Nakhon Bangkok', + value: '10', + }, + { + text: 'Lampang', + value: '52', + }, + { + text: 'Lamphun', + value: '51', + }, + { + text: 'Loei', + value: '42', + }, + { + text: 'Lop Buri', + value: '16', + }, + { + text: 'Mae Hong Son', + value: '58', + }, + { + text: 'Maha Sarakham', + value: '44', + }, + { + text: 'Mukdahan', + value: '49', + }, + { + text: 'Nakhon Nayok', + value: '26', + }, + { + text: 'Nakhon Pathom', + value: '73', + }, + { + text: 'Nakhon Phanom', + value: '48', + }, + { + text: 'Nakhon Ratchasima', + value: '30', + }, + { + text: 'Nakhon Sawan', + value: '60', + }, + { + text: 'Nakhon Si Thammarat', + value: '80', + }, + { + text: 'Nan', + value: '55', + }, + { + text: 'Narathiwat', + value: '96', + }, + { + text: 'Nong Bua Lam Phu', + value: '39', + }, + { + text: 'Nong Khai', + value: '43', + }, + { + text: 'Nonthaburi', + value: '12', + }, + { + text: 'Pathum Thani', + value: '13', + }, + { + text: 'Pattani', + value: '94', + }, + { + text: 'Phangnga', + value: '82', + }, + { + text: 'Phatthalung', + value: '93', + }, + { + text: 'Phatthaya', + value: 'S', + }, + { + text: 'Phayao', + value: '56', + }, + { + text: 'Phetchabun', + value: '67', + }, + { + text: 'Phetchaburi', + value: '76', + }, + { + text: 'Phichit', + value: '66', + }, + { + text: 'Phitsanulok', + value: '65', + }, + { + text: 'Phra Nakhon Si Ayutthaya', + value: '14', + }, + { + text: 'Phrae', + value: '54', + }, + { + text: 'Phuket', + value: '83', + }, + { + text: 'Prachin Buri', + value: '25', + }, + { + text: 'Prachuap Khiri Khan', + value: '77', + }, + { + text: 'Ranong', + value: '85', + }, + { + text: 'Ratchaburi', + value: '70', + }, + { + text: 'Rayong', + value: '21', + }, + { + text: 'Roi Et', + value: '45', + }, + { + text: 'Sa Kaeo', + value: '27', + }, + { + text: 'Sakon Nakhon', + value: '47', + }, + { + text: 'Samut Prakan', + value: '11', + }, + { + text: 'Samut Sakhon', + value: '74', + }, + { + text: 'Samut Songkhram', + value: '75', + }, + { + text: 'Saraburi', + value: '19', + }, + { + text: 'Satun', + value: '91', + }, + { + text: 'Si Sa Ket', + value: '33', + }, + { + text: 'Sing Buri', + value: '17', + }, + { + text: 'Songkhla', + value: '90', + }, + { + text: 'Sukhothai', + value: '64', + }, + { + text: 'Suphan Buri', + value: '72', + }, + { + text: 'Surat Thani', + value: '84', + }, + { + text: 'Surin', + value: '32', + }, + { + text: 'Tak', + value: '63', + }, + { + text: 'Trang', + value: '92', + }, + { + text: 'Trat', + value: '23', + }, + { + text: 'Ubon Ratchathani', + value: '34', + }, + { + text: 'Udon Thani', + value: '41', + }, + { + text: 'Uthai Thani', + value: '61', + }, + { + text: 'Uttaradit', + value: '53', + }, + { + text: 'Yala', + value: '95', + }, + { + text: 'Yasothon', + value: '35', + }, + ], + }; + } +} + +export default mock_states_list; diff --git a/packages/integration/src/utils/mocks/mocks.ts b/packages/integration/src/utils/mocks/mocks.ts new file mode 100644 index 000000000000..8757facaa27b --- /dev/null +++ b/packages/integration/src/utils/mocks/mocks.ts @@ -0,0 +1,576 @@ +import * as https from 'https'; +import { EventEmitter } from 'events'; +import { Server as WsServer } from 'ws'; +import { generate } from 'selfsigned'; +import { Page, expect } from '@playwright/test'; + +import type { + APITokenRequest, + APITokenResponse, + AccountLimitsRequest, + AccountLimitsResponse, + AccountStatusRequest, + AccountStatusResponse, + ActiveSymbolsRequest, + ActiveSymbolsResponse, + ApplicationDeleteRequest, + ApplicationDeleteResponse, + ApplicationGetDetailsRequest, + ApplicationGetDetailsResponse, + ApplicationListRequest, + ApplicationListResponse, + ApplicationMarkupDetailsRequest, + ApplicationMarkupDetailsResponse, + ApplicationMarkupStatisticsRequest, + ApplicationMarkupStatisticsResponse, + ApplicationRegisterRequest, + ApplicationRegisterResponse, + ApplicationUpdateRequest, + ApplicationUpdateResponse, + AssetIndexRequest, + AssetIndexResponse, + AuthorizeRequest, + AuthorizeResponse, + BalanceRequest, + BalanceResponse, + BuyContractForMultipleAccountsRequest, + BuyContractForMultipleAccountsResponse, + BuyContractRequest, + BuyContractResponse, + CancelAContractRequest, + CancelAContractResponse, + CashierInformationRequest, + CashierInformationResponse, + ContractsForSymbolRequest, + ContractsForSymbolResponse, + CopyTradingListRequest, + CopyTradingListResponse, + CopyTradingStartRequest, + CopyTradingStartResponse, + CopyTradingStatisticsRequest, + CopyTradingStatisticsResponse, + CopyTradingStopRequest, + CopyTradingStopResponse, + CountriesListRequest, + CountriesListResponse, + CryptocurrencyConfigurationsRequest, + CryptocurrencyConfigurationsResponse, + DocumentUploadRequest, + DocumentUploadResponse, + EconomicCalendarRequest, + EconomicCalendarResponse, + ExchangeRatesRequest, + ExchangeRatesResponse, + ForgetAllRequest, + ForgetAllResponse, + ForgetRequest, + ForgetResponse, + GetAccountSettingsRequest, + GetAccountSettingsResponse, + GetFinancialAssessmentRequest, + GetFinancialAssessmentResponse, + GetSelfExclusionRequest, + GetSelfExclusionResponse, + IdentityVerificationAddDocumentRequest, + IdentityVerificationAddDocumentResponse, + LandingCompanyDetailsRequest, + LandingCompanyDetailsResponse, + LandingCompanyRequest, + LandingCompanyResponse, + LogOutRequest, + LogOutResponse, + LoginHistoryRequest, + LoginHistoryResponse, + MT5AccountsListRequest, + MT5AccountsListResponse, + MT5DepositRequest, + MT5DepositResponse, + MT5GetSettingRequest, + MT5GetSettingResponse, + MT5NewAccountRequest, + MT5NewAccountResponse, + MT5PasswordChangeRequest, + MT5PasswordChangeResponse, + MT5PasswordCheckRequest, + MT5PasswordCheckResponse, + MT5PasswordResetRequest, + MT5PasswordResetResponse, + MT5WithdrawalRequest, + MT5WithdrawalResponse, + NewRealMoneyAccountDefaultLandingCompanyRequest, + NewRealMoneyAccountDefaultLandingCompanyResponse, + NewRealMoneyAccountDerivInvestmentEuropeLtdRequest, + NewRealMoneyAccountDerivInvestmentEuropeLtdResponse, + NewVirtualMoneyAccountRequest, + NewVirtualMoneyAccountResponse, + OAuthApplicationsRequest, + OAuthApplicationsResponse, + P2PAdvertCreateRequest, + P2PAdvertCreateResponse, + P2PAdvertInformationRequest, + P2PAdvertInformationResponse, + P2PAdvertListRequest, + P2PAdvertListResponse, + P2PAdvertUpdateRequest, + P2PAdvertUpdateResponse, + P2PAdvertiserAdvertsRequest, + P2PAdvertiserAdvertsResponse, + P2PAdvertiserCreateRequest, + P2PAdvertiserCreateResponse, + P2PAdvertiserInformationRequest, + P2PAdvertiserInformationResponse, + P2PAdvertiserListRequest, + P2PAdvertiserListResponse, + P2PAdvertiserPaymentMethodsRequest, + P2PAdvertiserPaymentMethodsResponse, + P2PAdvertiserRelationsRequest, + P2PAdvertiserRelationsResponse, + P2PAdvertiserUpdateRequest, + P2PAdvertiserUpdateResponse, + P2PChatCreateRequest, + P2PChatCreateResponse, + P2POrderCancelRequest, + P2POrderCancelResponse, + P2POrderConfirmRequest, + P2POrderConfirmResponse, + P2POrderCreateRequest, + P2POrderCreateResponse, + P2POrderDisputeRequest, + P2POrderDisputeResponse, + P2POrderInformationRequest, + P2POrderInformationResponse, + P2POrderListRequest, + P2POrderListResponse, + P2POrderReviewRequest, + P2POrderReviewResponse, + P2PPaymentMethodsRequest, + P2PPaymentMethodsResponse, + P2PPingRequest, + P2PPingResponse, + PaymentAgentCreateRequest, + PaymentAgentCreateResponse, + PaymentAgentDetailsRequest, + PaymentAgentDetailsResponse, + PaymentAgentListRequest, + PaymentAgentListResponse, + PaymentAgentTransferRequest, + PaymentAgentTransferResponse, + PaymentAgentWithdrawJustificationRequest, + PaymentAgentWithdrawJustificationResponse, + PaymentAgentWithdrawRequest, + PaymentAgentWithdrawResponse, + PaymentMethodsRequest, + PaymentMethodsResponse, + PayoutCurrenciesRequest, + PayoutCurrenciesResponse, + PingRequest, + PingResponse, + PortfolioRequest, + PortfolioResponse, + PriceProposalOpenContractsRequest, + PriceProposalOpenContractsResponse, + PriceProposalRequest, + PriceProposalResponse, + ProfitTableRequest, + ProfitTableResponse, + RealityCheckRequest, + RealityCheckResponse, + RevokeOauthApplicationRequest, + RevokeOauthApplicationResponse, + SellContractRequest, + SellContractResponse, + SellContractsMultipleAccountsRequest, + SellContractsMultipleAccountsResponse, + SellExpiredContractsRequest, + SellExpiredContractsResponse, + ServerListRequest, + ServerListResponse, + ServerStatusRequest, + ServerStatusResponse, + ServerTimeRequest, + ServerTimeResponse, + SetAccountCurrencyRequest, + SetAccountCurrencyResponse, + SetAccountSettingsRequest, + SetAccountSettingsResponse, + SetFinancialAssessmentRequest, + SetFinancialAssessmentResponse, + SetSelfExclusionRequest, + SetSelfExclusionResponse, + StatementRequest, + StatementResponse, + StatesListRequest, + StatesListResponse, + TermsAndConditionsApprovalRequest, + TermsAndConditionsApprovalResponse, + TicksHistoryRequest, + TicksHistoryResponse, + TicksStreamRequest, + TicksStreamResponse, + TopUpVirtualMoneyAccountRequest, + TopUpVirtualMoneyAccountResponse, + TradingDurationsRequest, + TradingDurationsResponse, + TradingPlatformInvestorPasswordResetRequest, + TradingPlatformInvestorPasswordResetResponse, + TradingPlatformPasswordResetRequest, + TradingPlatformPasswordResetResponse, + TradingTimesRequest, + TradingTimesResponse, + TransactionsStreamRequest, + TransactionsStreamResponse, + TransferBetweenAccountsRequest, + TransferBetweenAccountsResponse, + UnsubscribeEmailRequest, + UnsubscribeEmailResponse, + UpdateContractHistoryRequest, + UpdateContractHistoryResponse, + UpdateContractRequest, + UpdateContractResponse, + VerifyEmailCellxpertRequest, + VerifyEmailCellxpertResponse, + VerifyEmailRequest, + VerifyEmailResponse, +} from '@deriv/api-types'; + +type Request = + | APITokenRequest + | AccountLimitsRequest + | AccountStatusRequest + | ActiveSymbolsRequest + | ApplicationDeleteRequest + | ApplicationGetDetailsRequest + | ApplicationListRequest + | ApplicationMarkupDetailsRequest + | ApplicationMarkupStatisticsRequest + | ApplicationRegisterRequest + | ApplicationUpdateRequest + | AssetIndexRequest + | AuthorizeRequest + | BalanceRequest + | BuyContractForMultipleAccountsRequest + | BuyContractRequest + | CancelAContractRequest + | CashierInformationRequest + | ContractsForSymbolRequest + | CopyTradingListRequest + | CopyTradingStartRequest + | CopyTradingStatisticsRequest + | CopyTradingStopRequest + | CountriesListRequest + | CryptocurrencyConfigurationsRequest + | DocumentUploadRequest + | EconomicCalendarRequest + | ExchangeRatesRequest + | ForgetAllRequest + | ForgetRequest + | GetAccountSettingsRequest + | GetFinancialAssessmentRequest + | GetSelfExclusionRequest + | IdentityVerificationAddDocumentRequest + | LandingCompanyDetailsRequest + | LandingCompanyRequest + | LogOutRequest + | LoginHistoryRequest + | MT5AccountsListRequest + | MT5DepositRequest + | MT5GetSettingRequest + | MT5NewAccountRequest + | MT5PasswordChangeRequest + | MT5PasswordCheckRequest + | MT5PasswordResetRequest + | MT5WithdrawalRequest + | NewRealMoneyAccountDefaultLandingCompanyRequest + | NewRealMoneyAccountDerivInvestmentEuropeLtdRequest + | NewVirtualMoneyAccountRequest + | OAuthApplicationsRequest + | P2PAdvertCreateRequest + | P2PAdvertInformationRequest + | P2PAdvertListRequest + | P2PAdvertUpdateRequest + | P2PAdvertiserAdvertsRequest + | P2PAdvertiserCreateRequest + | P2PAdvertiserInformationRequest + | P2PAdvertiserListRequest + | P2PAdvertiserPaymentMethodsRequest + | P2PAdvertiserRelationsRequest + | P2PAdvertiserUpdateRequest + | P2PChatCreateRequest + | P2POrderCancelRequest + | P2POrderConfirmRequest + | P2POrderCreateRequest + | P2POrderDisputeRequest + | P2POrderInformationRequest + | P2POrderListRequest + | P2POrderReviewRequest + | P2PPaymentMethodsRequest + | P2PPingRequest + | PaymentAgentCreateRequest + | PaymentAgentDetailsRequest + | PaymentAgentListRequest + | PaymentAgentTransferRequest + | PaymentAgentWithdrawJustificationRequest + | PaymentAgentWithdrawRequest + | PaymentMethodsRequest + | PayoutCurrenciesRequest + | PingRequest + | PortfolioRequest + | PriceProposalOpenContractsRequest + | PriceProposalRequest + | ProfitTableRequest + | RealityCheckRequest + | RevokeOauthApplicationRequest + | SellContractRequest + | SellContractsMultipleAccountsRequest + | SellExpiredContractsRequest + | ServerListRequest + | ServerStatusRequest + | ServerTimeRequest + | SetAccountCurrencyRequest + | SetAccountSettingsRequest + | SetFinancialAssessmentRequest + | SetSelfExclusionRequest + | StatementRequest + | StatesListRequest + | TermsAndConditionsApprovalRequest + | TicksHistoryRequest + | TicksStreamRequest + | TopUpVirtualMoneyAccountRequest + | TradingDurationsRequest + | TradingPlatformInvestorPasswordResetRequest + | TradingPlatformPasswordResetRequest + | TradingTimesRequest + | TransactionsStreamRequest + | TransferBetweenAccountsRequest + | UnsubscribeEmailRequest + | UpdateContractHistoryRequest + | UpdateContractRequest + | VerifyEmailCellxpertRequest + | VerifyEmailRequest; + +type Response = + | APITokenResponse + | AccountLimitsResponse + | AccountStatusResponse + | ActiveSymbolsResponse + | ApplicationDeleteResponse + | ApplicationGetDetailsResponse + | ApplicationListResponse + | ApplicationMarkupDetailsResponse + | ApplicationMarkupStatisticsResponse + | ApplicationRegisterResponse + | ApplicationUpdateResponse + | AssetIndexResponse + | AuthorizeResponse + | BalanceResponse + | BuyContractForMultipleAccountsResponse + | BuyContractResponse + | CancelAContractResponse + | CashierInformationResponse + | ContractsForSymbolResponse + | CopyTradingListResponse + | CopyTradingStartResponse + | CopyTradingStatisticsResponse + | CopyTradingStopResponse + | CountriesListResponse + | CryptocurrencyConfigurationsResponse + | DocumentUploadResponse + | EconomicCalendarResponse + | ExchangeRatesResponse + | ForgetAllResponse + | ForgetResponse + | GetAccountSettingsResponse + | GetFinancialAssessmentResponse + | GetSelfExclusionResponse + | IdentityVerificationAddDocumentResponse + | LandingCompanyDetailsResponse + | LandingCompanyResponse + | LogOutResponse + | LoginHistoryResponse + | MT5AccountsListResponse + | MT5DepositResponse + | MT5GetSettingResponse + | MT5NewAccountResponse + | MT5PasswordChangeResponse + | MT5PasswordCheckResponse + | MT5PasswordResetResponse + | MT5WithdrawalResponse + | NewRealMoneyAccountDefaultLandingCompanyResponse + | NewRealMoneyAccountDerivInvestmentEuropeLtdResponse + | NewVirtualMoneyAccountResponse + | OAuthApplicationsResponse + | P2PAdvertCreateResponse + | P2PAdvertInformationResponse + | P2PAdvertListResponse + | P2PAdvertUpdateResponse + | P2PAdvertiserAdvertsResponse + | P2PAdvertiserCreateResponse + | P2PAdvertiserInformationResponse + | P2PAdvertiserListResponse + | P2PAdvertiserPaymentMethodsResponse + | P2PAdvertiserRelationsResponse + | P2PAdvertiserUpdateResponse + | P2PChatCreateResponse + | P2POrderCancelResponse + | P2POrderConfirmResponse + | P2POrderCreateResponse + | P2POrderDisputeResponse + | P2POrderInformationResponse + | P2POrderListResponse + | P2POrderReviewResponse + | P2PPaymentMethodsResponse + | P2PPingResponse + | PaymentAgentCreateResponse + | PaymentAgentDetailsResponse + | PaymentAgentListResponse + | PaymentAgentTransferResponse + | PaymentAgentWithdrawJustificationResponse + | PaymentAgentWithdrawResponse + | PaymentMethodsResponse + | PayoutCurrenciesResponse + | PingResponse + | PortfolioResponse + | PriceProposalOpenContractsResponse + | PriceProposalResponse + | ProfitTableResponse + | RealityCheckResponse + | RevokeOauthApplicationResponse + | SellContractResponse + | SellContractsMultipleAccountsResponse + | SellExpiredContractsResponse + | ServerListResponse + | ServerStatusResponse + | ServerTimeResponse + | SetAccountCurrencyResponse + | SetAccountSettingsResponse + | SetFinancialAssessmentResponse + | SetSelfExclusionResponse + | StatementResponse + | StatesListResponse + | TermsAndConditionsApprovalResponse + | TicksHistoryResponse + | TicksStreamResponse + | TopUpVirtualMoneyAccountResponse + | TradingDurationsResponse + | TradingPlatformInvestorPasswordResetResponse + | TradingPlatformPasswordResetResponse + | TradingTimesResponse + | TransactionsStreamResponse + | TransferBetweenAccountsResponse + | UnsubscribeEmailResponse + | UpdateContractHistoryResponse + | UpdateContractResponse + | VerifyEmailCellxpertResponse + | VerifyEmailResponse; + +export interface Context { + request: Request; + response?: Response; + req_id: number; + socket: any; +} + +export interface MockServer extends EventEmitter { + close: () => void; + url: string; + add: (mock: (context: Context) => void) => void; + remove: (mock: (context: Context) => void) => void; +} + +type Options = { + port?: number; +}; + +const pems = generate(); + +export async function createMockServer( + mocks: Array<(context: Context) => void>, + options?: Options +): Promise { + const eventEmitter = new EventEmitter() as MockServer; + + const server = https.createServer({ key: pems.private, cert: pems.cert }); + await new Promise(resolve => server.listen(options?.port ?? 0, resolve)); + const wss = new WsServer({ server }); + + wss.on('connection', ws => { + ws.on('message', async message => { + const parsedMessage = JSON.parse(message.toString()); + const context: Context = { + request: parsedMessage, + req_id: parsedMessage.req_id, + socket: ws, + }; + + mocks.flat().forEach(mock => mock(context)); + + if (context.response) { + ws.send(JSON.stringify(context.response)); + } + + if (!context.response) { + /* eslint no-console: 0 */ + console.warn('mock websocket request was not handled for', context.request); + } + }); + }); + + eventEmitter.close = () => { + wss.close(); + server.close(); + }; + + const address = server.address() as { port: number }; + eventEmitter.url = `localhost:${address.port}`; + + eventEmitter.add = mock => { + mocks.push(mock); + }; + + eventEmitter.remove = mockToRemove => { + const index = mocks.findIndex(mock => mock === mockToRemove); + if (index !== -1) { + mocks.splice(index, 1); + } + }; + + return eventEmitter; +} + +type SetupMocksOptions = { + baseURL?: string; + page: Page; + mocks: Array<(context: Context) => void>; +}; + +async function setupMocks({ baseURL, page, mocks }: SetupMocksOptions) { + if (!baseURL) { + throw new Error('baseURL is required'); + } + + const mockServer = await createMockServer(mocks); + page.addListener('close', () => { + mockServer.close(); + }); + await page.goto(baseURL, { waitUntil: 'commit' }); + + await page.evaluate(server_url => { + window.localStorage.setItem('config.server_url', server_url); + }, mockServer.url); + + await page.goto( + `${baseURL}/?acct1=CR5712715&token1=a1-x0000000000000000000000000001&cur1=USD&acct2=CR5712710&token2=a1-x0000000000000000000000000002&cur2=BTC&acct3=VRTC8420051&token3=a1-x0000000000000000000000000003&cur3=USD&state=` + ); + + await expect + .poll(async () => { + return page.evaluate(() => { + return window.localStorage.getItem('active_loginid'); + }); + }) + .toBe('CR5712715'); + + return mockServer; +} + +export default setupMocks; diff --git a/end-to-end-test/utils/suspend/suspend.ts b/packages/integration/src/utils/suspend/suspend.ts similarity index 100% rename from end-to-end-test/utils/suspend/suspend.ts rename to packages/integration/src/utils/suspend/suspend.ts diff --git a/packages/integration/tsconfig.json b/packages/integration/tsconfig.json new file mode 100644 index 000000000000..f0475c06529d --- /dev/null +++ b/packages/integration/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "paths": { + "Mocks/*": ["src/mocks/*"], + "Utils/*": ["src/utils/*"] + }, + "baseUrl": "./" + }, + "include": ["src"] +} diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 000000000000..fb49cc494a29 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,54 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './integration-tests', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: 'https://localhost.binary.sx', + ignoreHTTPSErrors: true, + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + /* Run tests for each of our packages from root of the project */ + { + name: 'account', + testDir: './packages/account/integration-tests', + }, + { + name: 'integration', + testDir: './packages/integration/integration-tests', + }, + ], +}); From ba3d3bd245e3a5020c671024de2f069542d57cde Mon Sep 17 00:00:00 2001 From: nada-deriv <122768621+nada-deriv@users.noreply.github.com> Date: Wed, 13 Sep 2023 15:58:05 +0400 Subject: [PATCH 12/12] fix: issue with page breaking in edit ad form payment methods (#10062) --- .../src/components/my-ads/create-ad-form-payment-methods.jsx | 2 +- .../p2p/src/components/my-ads/edit-ad-form-payment-methods.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/p2p/src/components/my-ads/create-ad-form-payment-methods.jsx b/packages/p2p/src/components/my-ads/create-ad-form-payment-methods.jsx index b52b93edf409..35f536de75b4 100644 --- a/packages/p2p/src/components/my-ads/create-ad-form-payment-methods.jsx +++ b/packages/p2p/src/components/my-ads/create-ad-form-payment-methods.jsx @@ -49,7 +49,7 @@ const CreateAdFormPaymentMethods = ({ is_sell_advert, onSelectPaymentMethods }) }, [is_sell_advert, selected_buy_methods, selected_sell_methods]); if (is_sell_advert) { - if (p2p_advertiser_payment_methods.length) { + if (p2p_advertiser_payment_methods?.length) { return (