@matchain/matchid-sdk-react 0.1.30 → 0.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -547,6 +547,19 @@ function LinkedinIcon({
547
547
 
548
548
  // src/assets/icon/YoutubeIcon.tsx
549
549
  var import_jsx_runtime26 = require("react/jsx-runtime");
550
+ function YoutubeIcon({ size = 40, ...props }) {
551
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("svg", { width: size, height: size, ...{ props }, viewBox: "0 0 40 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
552
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("rect", { width: "40", height: "40", rx: "8", fill: "#FF0000" }),
553
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
554
+ "path",
555
+ {
556
+ d: "M33.9855 13.1304C33.656 11.9065 32.691 10.9415 31.4671 10.612C29.231 10 20.287 10 20.287 10C20.287 10 11.3429 10 9.10689 10.5884C7.9065 10.9179 6.91794 11.9065 6.58843 13.1304C6 15.3664 6 20.0032 6 20.0032C6 20.0032 6 24.6636 6.58843 26.876C6.91794 28.1 7.88296 29.065 9.10689 29.3945C11.3664 30.0065 20.287 30.0065 20.287 30.0065C20.287 30.0065 29.231 30.0065 31.4671 29.418C32.691 29.0885 33.656 28.1235 33.9855 26.8996C34.5739 24.6636 34.5739 20.0268 34.5739 20.0268C34.5739 20.0268 34.5975 15.3664 33.9855 13.1304Z",
557
+ fill: "white"
558
+ }
559
+ ),
560
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { d: "M17.439 24.2867L24.8767 20.003L17.439 15.7192V24.2867Z", fill: "#FF0000" })
561
+ ] });
562
+ }
550
563
 
551
564
  // src/assets/icon/BTCDarkIcon.tsx
552
565
  var import_jsx_runtime27 = require("react/jsx-runtime");
@@ -665,7 +678,7 @@ function ArrowDownIcon({ width = 20, height = 21, color = "black", ...props }) {
665
678
  {
666
679
  d: "M5 7.5L9.29289 11.7929C9.68342 12.1834 10.3166 12.1834 10.7071 11.7929L15 7.5",
667
680
  stroke: color,
668
- "stroke-width": "1.5",
681
+ strokeWidth: "1.5",
669
682
  strokeLinecap: "round",
670
683
  strokeLinejoin: "round"
671
684
  }
@@ -841,7 +854,9 @@ var persistedState = (0, import_middleware.persist)(
841
854
  setTheme: (theme) => set({ theme }),
842
855
  setEndpoints: (endpoints) => set({ endpoints }),
843
856
  address: "",
844
- setAddress: (address) => set({ address })
857
+ setAddress: (address) => set({ address }),
858
+ locale: "en",
859
+ setLocale: (locale) => set({ locale })
845
860
  }),
846
861
  { name: "match-local" }
847
862
  );
@@ -890,6 +905,19 @@ var getAppid = () => {
890
905
  return "";
891
906
  }
892
907
  };
908
+ var getLocale = () => {
909
+ try {
910
+ const store = localStore.getState();
911
+ const locale = store?.locale;
912
+ if (locale) {
913
+ return locale;
914
+ } else {
915
+ return "en";
916
+ }
917
+ } catch (e) {
918
+ return "en";
919
+ }
920
+ };
893
921
  var getToken = () => {
894
922
  try {
895
923
  const store = localStore.getState();
@@ -938,6 +966,7 @@ var request = async (config) => {
938
966
  if (token) {
939
967
  instance.defaults.headers.common["Authorization"] = token;
940
968
  }
969
+ instance.defaults.headers.common["Accept-Language"] = getLocale();
941
970
  const { data } = await instance.request(config);
942
971
  matchlog_default.log("api", data);
943
972
  if (data.code == 401001) {
@@ -1158,8 +1187,8 @@ function truncateAddress(address) {
1158
1187
  const end = address.slice(-2);
1159
1188
  return `${start}...${end}`;
1160
1189
  }
1161
- function firstUpperCase(str) {
1162
- return str.toString()[0].toUpperCase() + str.toString().slice(1);
1190
+ function getAppClientId() {
1191
+ return "react-sdk-" + getVersion();
1163
1192
  }
1164
1193
 
1165
1194
  // src/store/useModalStore.ts
@@ -1198,7 +1227,7 @@ function useUserInfo() {
1198
1227
  eventManager_default.emit("onLogout");
1199
1228
  };
1200
1229
  const loginByMethod = async (method) => {
1201
- const link = `${endpoints.back}api/v1/auth/${method}?appid=${appid}&provider=${method}&redirect=${encodeURIComponent(endpoints.auth + "login/" + method)}&authorization=${(/* @__PURE__ */ new Date()).getTime()}`;
1230
+ const link = `${endpoints.back}api/v1/auth/${method == "youtube" ? "google" : method}?appid=${appid}&provider=${method == "youtube" ? "google" : method}&redirect=${encodeURIComponent(endpoints.auth + "login/" + method)}&authorization=${(/* @__PURE__ */ new Date()).getTime()}${method == "youtube" ? "&auth_type=youtube" : ""}`;
1202
1231
  matchlog_default.log("link", link);
1203
1232
  return window.open(
1204
1233
  link,
@@ -1232,6 +1261,7 @@ function useUserInfo() {
1232
1261
  return SOLOpen("login");
1233
1262
  case "telegram":
1234
1263
  return await loginByTelegram();
1264
+ case "youtube":
1235
1265
  case "twitter":
1236
1266
  case "google":
1237
1267
  case "discord":
@@ -1324,7 +1354,8 @@ function useUserInfo() {
1324
1354
  case "github":
1325
1355
  case "linkedin":
1326
1356
  case "facebook":
1327
- const link = `${endpoints.back}api/v1/auth/${method}?appid=${appid}&provider=${method}&redirect=${encodeURIComponent(endpoints.auth + "bind/" + method)}&authorization=${token.includes("Bearer ") ? token.split(" ")[1] : token}`;
1357
+ case "youtube":
1358
+ const link = `${endpoints.back}api/v1/auth/${method == "youtube" ? "google" : method}?appid=${appid}&provider=${method == "youtube" ? "google" : method}&redirect=${encodeURIComponent(endpoints.auth + "bind/" + method)}&authorization=${token.includes("Bearer ") ? token.split(" ")[1] : token}${method == "youtube" ? "&auth_type=youtube" : ""}`;
1328
1359
  matchlog_default.log("link", link);
1329
1360
  return window.open(
1330
1361
  link,
@@ -1549,6 +1580,7 @@ function useCopyClipboard(timeout = 500) {
1549
1580
  }
1550
1581
 
1551
1582
  // src/components/PasswordModal/index.tsx
1583
+ var import_react_intl = require("react-intl");
1552
1584
  var import_jsx_runtime40 = require("react/jsx-runtime");
1553
1585
  function PasswordModal({
1554
1586
  title,
@@ -1556,28 +1588,40 @@ function PasswordModal({
1556
1588
  onSuccess,
1557
1589
  ...props
1558
1590
  }) {
1559
- const { refreshOverview } = useUserInfo();
1591
+ const { refreshOverview, overview } = useUserInfo();
1560
1592
  const { isLogin, did } = useUserInfo();
1561
1593
  const [password, setPassword] = (0, import_react5.useState)("");
1562
1594
  const [rePassword, setRePassword] = (0, import_react5.useState)("");
1563
1595
  const [error, setError] = (0, import_react5.useState)("");
1564
- const { generateWallet } = useWallet();
1596
+ const { generateWallet, initWallet } = useWallet();
1597
+ const intl = (0, import_react_intl.useIntl)();
1565
1598
  const passwordError = (0, import_react5.useMemo)(() => {
1566
- if (password.length < 6) return "Password must be at least 6 characters";
1599
+ if (password.length < 6) return intl.formatMessage({
1600
+ id: "passwordMinError"
1601
+ }, {
1602
+ length: 6
1603
+ });
1567
1604
  return "";
1568
1605
  }, [password]);
1569
1606
  const rePasswordError = (0, import_react5.useMemo)(() => {
1570
1607
  if (rePassword != password) {
1571
- return "The password you entered twice do not match";
1608
+ return intl.formatMessage({
1609
+ id: "passwordMatchError"
1610
+ });
1572
1611
  }
1573
1612
  return "";
1574
1613
  }, [rePassword, password]);
1575
1614
  (0, import_react5.useEffect)(() => {
1576
- if (isOpen) {
1615
+ if (isOpen && overview) {
1577
1616
  setPassword("");
1578
1617
  setRePassword("");
1618
+ const did2 = overview.did.split(":")[2];
1619
+ initWallet({
1620
+ did: did2,
1621
+ address: ""
1622
+ });
1579
1623
  }
1580
- }, [isOpen]);
1624
+ }, [isOpen, overview]);
1581
1625
  const [isSubmitting, setIsSubmitting] = (0, import_react5.useState)(false);
1582
1626
  const onContinue = async () => {
1583
1627
  if (isSubmitting) return;
@@ -1595,26 +1639,32 @@ function PasswordModal({
1595
1639
  setIsSubmitting(false);
1596
1640
  }
1597
1641
  };
1598
- return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || "Set Password", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "matchid-password-box", children: [
1642
+ return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
1643
+ id: "passwordTitle"
1644
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "matchid-password-box", children: [
1599
1645
  /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "matchid-password-header", children: [
1600
1646
  /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "matchid-password-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(PasswordRoundIcon, {}) }),
1601
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "matchid-password-header-content", children: "Please set the wallet password that will be used to recover the wallet" })
1647
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("div", { className: "matchid-password-header-content", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_react_intl.FormattedMessage, { id: "passwordTips" }) })
1602
1648
  ] }),
1603
1649
  /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "matchid-password-content", children: [
1604
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Field, { label: "Password", error: password.length > 0 && passwordError, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
1650
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Field, { label: intl.formatMessage({ id: "password" }), error: password.length > 0 && passwordError, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
1605
1651
  Input,
1606
1652
  {
1607
- placeholder: "Enter the Password",
1653
+ placeholder: intl.formatMessage({ id: "passwordPlaceholder" }),
1608
1654
  maxLength: 32,
1609
1655
  type: "password",
1610
1656
  onChange: (e) => setPassword(e.target.value),
1611
1657
  value: password
1612
1658
  }
1613
1659
  ) }),
1614
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Field, { label: "Re Password", error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
1660
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Field, { label: intl.formatMessage({
1661
+ id: "rePassword"
1662
+ }), error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
1615
1663
  Input,
1616
1664
  {
1617
- placeholder: "Re Enter the Password",
1665
+ placeholder: intl.formatMessage({
1666
+ id: "rePasswordPlaceholder"
1667
+ }),
1618
1668
  maxLength: 32,
1619
1669
  onChange: (e) => setRePassword(e.target.value),
1620
1670
  value: rePassword,
@@ -1631,7 +1681,7 @@ function PasswordModal({
1631
1681
  size: "lg",
1632
1682
  onClick: onContinue,
1633
1683
  loading: isSubmitting,
1634
- children: "Continue"
1684
+ children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_react_intl.FormattedMessage, { id: "continue" })
1635
1685
  }
1636
1686
  )
1637
1687
  ] }) });
@@ -1639,6 +1689,7 @@ function PasswordModal({
1639
1689
 
1640
1690
  // src/components/RecoveryModal/index.tsx
1641
1691
  var import_react6 = require("react");
1692
+ var import_react_intl2 = require("react-intl");
1642
1693
  var import_jsx_runtime41 = require("react/jsx-runtime");
1643
1694
  function RecoveryModal({
1644
1695
  title,
@@ -1647,19 +1698,29 @@ function RecoveryModal({
1647
1698
  ...props
1648
1699
  }) {
1649
1700
  const { refreshOverview } = useUserInfo();
1650
- const { isLogin } = useUserInfo();
1701
+ const { isLogin, overview } = useUserInfo();
1651
1702
  const [password, setPassword] = (0, import_react6.useState)("");
1652
- const { recoveryWallet } = useWallet();
1703
+ const { recoveryWallet, initWallet } = useWallet();
1653
1704
  const [error, setError] = (0, import_react6.useState)("");
1705
+ const intl = (0, import_react_intl2.useIntl)();
1654
1706
  const passwordError = (0, import_react6.useMemo)(() => {
1655
- if (password.length < 6) return "Password must be at least 6 characters";
1707
+ if (password.length < 6) return intl.formatMessage({
1708
+ id: "passwordMinError"
1709
+ }, {
1710
+ length: 6
1711
+ });
1656
1712
  return "";
1657
1713
  }, [password]);
1658
1714
  (0, import_react6.useEffect)(() => {
1659
- if (isOpen) {
1715
+ if (isOpen && overview) {
1660
1716
  setPassword("");
1717
+ const did = overview.did.split(":")[2];
1718
+ initWallet({
1719
+ did,
1720
+ address: overview.address
1721
+ });
1661
1722
  }
1662
- }, [isOpen]);
1723
+ }, [isOpen, overview]);
1663
1724
  const [isSubmitting, setIsSubmitting] = (0, import_react6.useState)(false);
1664
1725
  const onContinue = async () => {
1665
1726
  if (isSubmitting) return;
@@ -1675,15 +1736,17 @@ function RecoveryModal({
1675
1736
  setIsSubmitting(false);
1676
1737
  }
1677
1738
  };
1678
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || "Recover Wallet", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "matchid-password-box", children: [
1739
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
1740
+ id: "recoverTitle"
1741
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "matchid-password-box", children: [
1679
1742
  /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "matchid-password-header", children: [
1680
1743
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "matchid-password-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(PasswordRoundIcon, {}) }),
1681
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "matchid-password-header-content", children: "Please enter your password to recover your wallet" })
1744
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "matchid-password-header-content", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_react_intl2.FormattedMessage, { id: "recoverTips" }) })
1682
1745
  ] }),
1683
- /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "matchid-password-content", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Field, { label: "Password", error: password.length > 0 ? passwordError || error : error, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
1746
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("div", { className: "matchid-password-content", children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Field, { label: intl.formatMessage({ id: "password" }), error: password.length > 0 ? passwordError || error : error, children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
1684
1747
  Input,
1685
1748
  {
1686
- placeholder: "Enter the Password",
1749
+ placeholder: intl.formatMessage({ id: "passwordPlaceholder" }),
1687
1750
  maxLength: 32,
1688
1751
  type: "password",
1689
1752
  onChange: (e) => setPassword(e.target.value),
@@ -1699,7 +1762,7 @@ function RecoveryModal({
1699
1762
  size: "lg",
1700
1763
  onClick: onContinue,
1701
1764
  loading: isSubmitting,
1702
- children: "Continue"
1765
+ children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(import_react_intl2.FormattedMessage, { id: "continue" })
1703
1766
  }
1704
1767
  )
1705
1768
  ] }) });
@@ -1732,8 +1795,10 @@ var import_react9 = require("react");
1732
1795
 
1733
1796
  // src/components/EmailModal/StepEmail.tsx
1734
1797
  var import_react7 = require("react");
1798
+ var import_react_intl3 = require("react-intl");
1735
1799
  var import_jsx_runtime42 = require("react/jsx-runtime");
1736
1800
  function StepEmail(props) {
1801
+ const intl = (0, import_react_intl3.useIntl)();
1737
1802
  const [emailVal, setEmailVal] = (0, import_react7.useState)("");
1738
1803
  (0, import_react7.useEffect)(() => {
1739
1804
  if (props.email) {
@@ -1747,17 +1812,21 @@ function StepEmail(props) {
1747
1812
  props.onContinue(emailVal);
1748
1813
  };
1749
1814
  return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: "matchid-email-email-box", children: [
1750
- /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Field, { label: "Email Address", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
1815
+ /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Field, { label: intl.formatMessage({
1816
+ id: "emailAddress"
1817
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
1751
1818
  Input,
1752
1819
  {
1753
- placeholder: "Enter Your Email Address",
1820
+ placeholder: intl.formatMessage({
1821
+ id: "emailAddressPlaceholder"
1822
+ }),
1754
1823
  onChange: (e) => setEmailVal(e.target.value),
1755
1824
  value: emailVal
1756
1825
  }
1757
1826
  ) }),
1758
1827
  /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Button, { disabled: !canContinue, style: {
1759
1828
  marginTop: "64px"
1760
- }, onClick: onContinue, size: "lg", block: true, highlight: true, children: "Continue" })
1829
+ }, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_react_intl3.FormattedMessage, { id: "continue" }) })
1761
1830
  ] });
1762
1831
  }
1763
1832
 
@@ -1769,15 +1838,19 @@ var EMAIL_INTERVAL = 60;
1769
1838
  var EMAIL_CODE_LENGTH = 6;
1770
1839
 
1771
1840
  // src/components/EmailModal/StepVerify.tsx
1841
+ var import_react_intl4 = require("react-intl");
1772
1842
  var import_jsx_runtime43 = require("react/jsx-runtime");
1773
1843
  function StepVerify(props) {
1844
+ const intl = (0, import_react_intl4.useIntl)();
1774
1845
  const { getLoginEmailCode, loginByEmail } = useUserInfo();
1775
1846
  const [error, setError] = (0, import_react8.useState)("");
1776
1847
  const [code, setCode] = (0, import_react8.useState)("");
1777
1848
  const [sending, setSending] = (0, import_react8.useState)(false);
1778
1849
  const [submitting, setSubmitting] = (0, import_react8.useState)(false);
1779
1850
  const sendTimeRef = (0, import_react8.useRef)(0);
1780
- const [sendBtnText, setSendBtnText] = (0, import_react8.useState)("Send");
1851
+ const [sendBtnText, setSendBtnText] = (0, import_react8.useState)(intl.formatMessage({
1852
+ id: "send"
1853
+ }));
1781
1854
  const intervalTime = EMAIL_INTERVAL;
1782
1855
  const codeLength = EMAIL_CODE_LENGTH;
1783
1856
  const intervalRef = (0, import_react8.useRef)(null);
@@ -1795,14 +1868,18 @@ function StepVerify(props) {
1795
1868
  sendTimeRef.current--;
1796
1869
  setSendBtnText(`${sendTimeRef.current}s`);
1797
1870
  if (sendTimeRef.current <= 0) {
1798
- setSendBtnText("Resend");
1871
+ setSendBtnText(intl.formatMessage({
1872
+ id: "Resend"
1873
+ }));
1799
1874
  clearInterval(intervalRef.current);
1800
1875
  setSending(false);
1801
1876
  }
1802
1877
  }, 1e3);
1803
1878
  } catch (err) {
1804
1879
  console.error("Send email error", err);
1805
- setError("Failed to send code:" + err.message);
1880
+ setError(intl.formatMessage({
1881
+ id: "sendCodeErrorTip"
1882
+ }, { error: err.message }));
1806
1883
  setSending(false);
1807
1884
  }
1808
1885
  };
@@ -1843,13 +1920,17 @@ function StepVerify(props) {
1843
1920
  /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(EmailLineIcon, {}) }),
1844
1921
  /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: "matchid-email-verify-header-content", children: [
1845
1922
  /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "matchid-email-verify-header-value", children: props.email }),
1846
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "matchid-email-verify-header-tips", children: "We have sent a verification code to your email" })
1923
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_intl4.FormattedMessage, { id: "sendEmailTips" }) })
1847
1924
  ] })
1848
1925
  ] }),
1849
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Field, { label: "Verification Code", error, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
1926
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Field, { label: intl.formatMessage({
1927
+ id: "verificationCode"
1928
+ }), error, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
1850
1929
  Input,
1851
1930
  {
1852
- placeholder: "Enter the code",
1931
+ placeholder: intl.formatMessage({
1932
+ id: "codePlaceholder"
1933
+ }),
1853
1934
  maxLength: codeLength,
1854
1935
  onChange: (e) => setCode(e.target.value),
1855
1936
  value: code,
@@ -1872,11 +1953,12 @@ function StepVerify(props) {
1872
1953
  )
1873
1954
  }
1874
1955
  ) }),
1875
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: "Continue" })
1956
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_react_intl4.FormattedMessage, { id: "continue" }) })
1876
1957
  ] });
1877
1958
  }
1878
1959
 
1879
1960
  // src/components/EmailModal/index.tsx
1961
+ var import_react_intl5 = require("react-intl");
1880
1962
  var import_jsx_runtime44 = require("react/jsx-runtime");
1881
1963
  function EmailModal({
1882
1964
  isOpen = false,
@@ -1887,6 +1969,7 @@ function EmailModal({
1887
1969
  }) {
1888
1970
  const [step, setStep] = (0, import_react9.useState)("input");
1889
1971
  const [emailVal, setEmailVal] = (0, import_react9.useState)("");
1972
+ const intl = (0, import_react_intl5.useIntl)();
1890
1973
  (0, import_react9.useEffect)(() => {
1891
1974
  if (!isOpen) {
1892
1975
  setStep("input");
@@ -1899,7 +1982,9 @@ function EmailModal({
1899
1982
  isOpen,
1900
1983
  width,
1901
1984
  onClose,
1902
- title: "Email",
1985
+ title: intl.formatMessage({
1986
+ id: "email"
1987
+ }),
1903
1988
  onBack: step == "verify" ? () => setStep("input") : onBack,
1904
1989
  children: step === "input" ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(StepEmail, { email: emailVal, onContinue: (email) => {
1905
1990
  setEmailVal(email);
@@ -1942,6 +2027,7 @@ function Popover({
1942
2027
 
1943
2028
  // src/components/LoginBox/index.tsx
1944
2029
  var import_react11 = require("react");
2030
+ var import_react_intl6 = require("react-intl");
1945
2031
  var import_jsx_runtime46 = require("react/jsx-runtime");
1946
2032
  var RecommendItem = ({
1947
2033
  icon,
@@ -1996,16 +2082,17 @@ function LoginBox({
1996
2082
  const [emailOpen, setEmailOpen] = (0, import_react11.useState)(false);
1997
2083
  const { login } = useUserInfo();
1998
2084
  const [showWallet, setShowWallet] = (0, import_react11.useState)(false);
2085
+ const intl = (0, import_react_intl6.useIntl)();
1999
2086
  const methodMap = {
2000
2087
  wallet: {
2001
2088
  icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(WalletIcon, {}),
2002
- name: "Wallet",
2089
+ name: intl.formatMessage({ id: "wallet" }),
2003
2090
  onClick: () => setShowWallet(!showWallet),
2004
2091
  type: "wallet"
2005
2092
  },
2006
2093
  email: {
2007
2094
  icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(EmailIcon, {}),
2008
- name: "Email",
2095
+ name: intl.formatMessage({ id: "email" }),
2009
2096
  onClick: () => {
2010
2097
  setEmailOpen(true);
2011
2098
  }
@@ -2044,6 +2131,11 @@ function LoginBox({
2044
2131
  icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(FacebookIcon, {}),
2045
2132
  name: "Facebook",
2046
2133
  onClick: () => login("facebook")
2134
+ },
2135
+ youtube: {
2136
+ icon: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(YoutubeIcon, {}),
2137
+ name: "Youtube",
2138
+ onClick: () => login("youtube")
2047
2139
  }
2048
2140
  };
2049
2141
  const walletMethods = [
@@ -2115,7 +2207,7 @@ function LoginBox({
2115
2207
  );
2116
2208
  }) }),
2117
2209
  methods.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "matchid-login-other", children: [
2118
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "matchid-login-other-text", children: "Other login methods" }),
2210
+ /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_react_intl6.FormattedMessage, { id: "otherLoginMethods" }) }),
2119
2211
  /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "matchid-login-method-box", children: methods.map((m) => {
2120
2212
  return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
2121
2213
  "div",
@@ -2149,6 +2241,7 @@ function LoginBox({
2149
2241
  var import_react13 = require("react");
2150
2242
 
2151
2243
  // src/components/LoginPanel/index.tsx
2244
+ var import_react_intl7 = require("react-intl");
2152
2245
  var import_jsx_runtime47 = require("react/jsx-runtime");
2153
2246
  function LoginPanel({
2154
2247
  header,
@@ -2158,8 +2251,8 @@ function LoginPanel({
2158
2251
  return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "matchid-login-panel", children: [
2159
2252
  header ? header : /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "matchid-login-panel-header", children: [
2160
2253
  /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: "matchid-login-panel-header-content", children: [
2161
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-login-panel-header-title", children: "Log in / Sign up" }),
2162
- /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-login-panel-header-subtilte", children: "You can use the following methods" })
2254
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react_intl7.FormattedMessage, { id: "loginTitle" }) }),
2255
+ /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(import_react_intl7.FormattedMessage, { id: "loginTips" }) })
2163
2256
  ] }),
2164
2257
  onClose && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CloseRoundIcon, {}) })
2165
2258
  ] }),
@@ -2215,6 +2308,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
2215
2308
  }
2216
2309
 
2217
2310
  // src/components/UserPopover/index.tsx
2311
+ var import_react_intl8 = require("react-intl");
2218
2312
  var import_jsx_runtime50 = require("react/jsx-runtime");
2219
2313
  function UserContent() {
2220
2314
  const { logout, address, username } = useUserInfo();
@@ -2249,6 +2343,7 @@ function UserContent() {
2249
2343
  };
2250
2344
  const [usernameOpen, setUsernameOpen] = (0, import_react12.useState)(false);
2251
2345
  const [copied, setCopied] = useCopyClipboard();
2346
+ const intl = (0, import_react_intl8.useIntl)();
2252
2347
  return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-user-popover-content", children: [
2253
2348
  /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-user-popover-list", children: [
2254
2349
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(UserItem, { onClick: () => {
@@ -2257,9 +2352,11 @@ function UserContent() {
2257
2352
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(UserDivider, {}),
2258
2353
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(UserItem, { onClick: () => {
2259
2354
  setUsernameOpen(true);
2260
- }, icon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || "Set a username" })
2355
+ }, icon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
2356
+ id: "setUsername"
2357
+ }) })
2261
2358
  ] }),
2262
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { onClick: onLogout, loading: logouting, children: "Disconnect" }),
2359
+ /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_intl8.FormattedMessage, { id: "disconnect" }) }),
2263
2360
  /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(UsernameModal, { isOpen: usernameOpen, onClose: () => {
2264
2361
  setUsernameOpen(false);
2265
2362
  }, onSuccess: () => {
@@ -2275,6 +2372,7 @@ function UserPopover({
2275
2372
  }
2276
2373
 
2277
2374
  // src/components/LoginButton/index.tsx
2375
+ var import_react_intl9 = require("react-intl");
2278
2376
  var import_jsx_runtime51 = require("react/jsx-runtime");
2279
2377
  function LoginButton({
2280
2378
  loginRender,
@@ -2286,6 +2384,7 @@ function LoginButton({
2286
2384
  popoverGap = 20,
2287
2385
  ...props
2288
2386
  }) {
2387
+ const intl = (0, import_react_intl9.useIntl)();
2289
2388
  const { isLogin, username } = useUserInfo();
2290
2389
  const [loginOpen, setLoginOpen] = (0, import_react13.useState)(false);
2291
2390
  if (!isLogin) {
@@ -2293,13 +2392,15 @@ function LoginButton({
2293
2392
  /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(LoginModal, { methods, recommendMethods, isOpen: loginOpen, onClose: () => setLoginOpen(false) }),
2294
2393
  /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
2295
2394
  /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(UnLoginIcon_default, {}),
2296
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: "Login" })
2395
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_intl9.FormattedMessage, { id: "login" }) })
2297
2396
  ] })
2298
2397
  ] });
2299
2398
  }
2300
2399
  return loginRender ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_jsx_runtime51.Fragment, { children: loginRender }) : /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
2301
2400
  /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(LoginIcon_default, {}),
2302
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: username ? truncateAddress(username) : "MatchID User" })
2401
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
2402
+ id: "user"
2403
+ }) })
2303
2404
  ] }) });
2304
2405
  }
2305
2406
 
@@ -2328,6 +2429,7 @@ function InfoRoundIcon({
2328
2429
  }
2329
2430
 
2330
2431
  // src/components/UsernameModal/index.tsx
2432
+ var import_react_intl10 = require("react-intl");
2331
2433
  var import_jsx_runtime53 = require("react/jsx-runtime");
2332
2434
  var ValidItem = ({
2333
2435
  success = false,
@@ -2381,11 +2483,18 @@ function UsernameModal({
2381
2483
  setIsSubmitting(false);
2382
2484
  }
2383
2485
  };
2384
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || (username ? "Edit User Name" : "Set User Name"), children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "matchid-username-box", children: [
2385
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Field, { label: "User Name", error, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
2486
+ const intl = (0, import_react_intl10.useIntl)();
2487
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
2488
+ id: username ? "editUsernameTitle" : "setUsernameTitle"
2489
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "matchid-username-box", children: [
2490
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Field, { label: intl.formatMessage({
2491
+ id: "username"
2492
+ }), error, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
2386
2493
  Input,
2387
2494
  {
2388
- placeholder: "Enter Your User Name",
2495
+ placeholder: intl.formatMessage({
2496
+ id: "usernamePlaceholder"
2497
+ }),
2389
2498
  onChange: (e) => {
2390
2499
  setVal(e.target.value);
2391
2500
  setError("");
@@ -2398,17 +2507,21 @@ function UsernameModal({
2398
2507
  ValidItem,
2399
2508
  {
2400
2509
  success: isValid,
2401
- text: "Name can be composed of numbers and letters as well as characters"
2510
+ text: intl.formatMessage({
2511
+ id: "usernameValidError"
2512
+ })
2402
2513
  }
2403
2514
  ),
2404
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ValidItem, { success: isLength, text: "No less than 2 characters" })
2515
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ValidItem, { success: isLength, text: intl.formatMessage({
2516
+ id: "usernameLengthError"
2517
+ }) })
2405
2518
  ] }),
2406
2519
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, { disabled: !isSafe, loading: isSubmitting, style: {
2407
2520
  marginTop: "64px"
2408
- }, onClick: onSubmit, size: "lg", block: true, highlight: true, children: "Confirm" }),
2521
+ }, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_intl10.FormattedMessage, { id: "confirm" }) }),
2409
2522
  /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Button, { style: {
2410
2523
  marginTop: "24px"
2411
- }, onClick: props.onClose, size: "lg", block: true, children: "Next Time" })
2524
+ }, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_intl10.FormattedMessage, { id: "nextTime" }) })
2412
2525
  ] }) });
2413
2526
  }
2414
2527
 
@@ -2437,6 +2550,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
2437
2550
  var walletSigningImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAABAsUlEQVR4Xu19CXQUx7X2vCUveS/vJdgx+yaJHQwI8G4wzWIbG2LLNrbxPgnY7CC0SyNpJBAIECAZAbLB8gAyKGGxiFnkGJwmz47xsU0mvyEWoGW0D0jgSeK88L84/7l/fS2V3GrNaDRCEiPpfud8p3qqu6tnpvt+favqVpXJxGAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYbYvCwkKlpKREvXDhglpQUKCKz+qlS5e0z8j3N5aXl6tXrlwJMf4OBoPRDD777LPg7Ozs0MOHD1NiYiLNnTuX7rzrDho5ejj179+f+vbt69ccNGgQBQQE0LBhw2jUqFE0ZswYun3sGBo3cQxNmDiexk+8XaTBIh1LwYLfbY/vcvsnTpyofUbqjXfeeSdNnjyZHnnkEXrxxRcpKSmJfvnLX9KuXbtCz5w5ozgcjmDjs8LoQlBVNcBqtZrFjbfjIYAR/fCHP6Qf/OAH9C//8i/0z//8zw2p3P6nf/qnhtRfKH4K00B534z5kvr/71//9V/p3/7t36hHjx6aeM6cOZPWr19Pubm56tmzZ81CCHqYGF0LH3/8sW3lypXqtGnTqHfv3tpDAOLBkakkHiQ8KJ4EwOTmAfMHGoWiO1HeO2O+O+r/M5wDMfiv//ovuuuuuyg6OloTAhOj68But6cvWLBAc51xs40PhHwojHmeiGP9jcbv2N3Y0v/A+L/p/z94gqhiwSPYsWNHuonRuSFc/h5Qc9xQvNXxpseN/t73vtcgBCbDQyDdf32e/hh/pvFh7040/hetIcrBs4H7P2LECEpNTaWTJ08miRcIVwk6G/Lz8wOys7Nts2fPph/96EcNN9hI5Mt9uPF4AOAW6vPkMc1RHmcsl+l/bMk9wjMwdOhQraHw008/zTAxOheE8eehoQ91O1mnd2f4ktLY5bEyT79tPEdPvWi0N+HJQKi+//3v03/8x39o3gw+y7eXPAapvlFT5hn3ucvrDMfrabwfbUWIQHJyMrYZnQUOhyMdXXvS+EWWx4dFNgLp98OQjMcZzzWWhxQPJozylltu0bwOtDKD+B4y78c//vEN77/11lu1/J/85CdainzwP//zP7XfAqI+ixTfR6b6bX3aWY9vDfUNhfr7647yWYAIcJtAJwFc/xUrVtjRvac3UiPxIOBBQl3vwQcfJPQQWFcnqVu3blW3bNmiWiwWdc6cOWpwcLADDwCMW76JcD4eJqMIoMwJEybQnj17KC8vT33vvffUo0ePqkeOHNFSfJbbN7L/3XffVQ8ePKju3btXfeutt9SsrCx127ZtGtPT09XMzEwtxW+Rv0fmdbX9mzZtajHXrVunrlq1ShXPh+uJJ57QYiggoNJ701N/b/GciGeBcnJy8sTLJUD/vDH8DMIIdk+ZMqXhLe6O4jCttffhhx8mq9WqijqezViOxIcffmjeuHGjberUqdSzZ88GATCWb6p/cFDuzp07STwoiqEohp9A3JvQL7/80iZEwfbMM884ho8Y1qzXB/FH13FoaCjZ7XZz49IYfoOTJ08qP/vZzxxwjY1GrzdUuJfiOPv27dvNBQUFAcZy3OFXv/pVRkREBPXp06dJmfoHB28LRVEIobrGMhj+h9zcXGVn9puOsWPHau0pRhEAkQeP74477iB4XuwF+ClWr15txk0yvp0l4eqhPv3CCy+QMH6fwj7RFSREIEm4j5rb6O4apvoHBvXxQ4cOsQB0EiA0fPXqdSSqew1VO5MbEYAHuHbtWnQNKo0KYNx8nDt3ThH1Qs34jIYpjR+NZC+98gqlpaUpxvNbijNnziQtXbrU1ZwAYPupp56y48Eyns/wT6iqGrxhwwY72oQ8tQkg/7777iPxnIU2Pptx0wGjxgAPfVeYnlB2xH2/8dZbqv3SpRsyzHfeeSc0MDCwyTVMuodlxowZlJ+fbzOey/Bf5OTkKM8++6wDPS0mNwKA5wptAeL+I4/hTzh+/HgeRnrpu3kk0YgDz0DU+0m8wc3Gc1uDV4QnoTd8vQCAw4cPx5uCBaCTYdOmTbtRjTS5EQA8R2gnCAsLYwHwN6SkpIQOGTLErQDg7T948GAM/T3dViO93n77bQoKCvIoAGgsfOmll1gAOhnsdvtus9ncRABA3GM8Xz/96U9ZAPwNBw8epF69ejW6WZKoFowfP55sAsbzWot58+Yp9957b0N8gF4AsI3AHfGg5LW0l4HhPxBVSdVdOwCIe/vAAw+wAPgbsrKytBZ+k0EAZCgp+vFVVW0zAYiIiFBmzZrVcA2T7iGRvQ3oNz5//ry58ZkMfwcChvSNySaDCED4Oc7Dz7BlyxatfmYyCADcfwgAxgVcvHixzQQgPj5eCQkJaQglNukeEHzGd1myZAkJD8Dc+EyGvwMRlQi39iQAmF2I4zz8DBkZGc0KwOOPPw7V7hABkB7AE0880WZtDoyOAwtAJ4QnD0DWzxH73VECACJYaMHChXRSVZPy8/OV9iQCU0BRxem2tNvtjXnunHKuoEApqCdcdqSY+BXbzXHnzp12xIywAHQiePIAZCNdRwsArouBQYgcjIyMbHPGxMSQxWLRJjXFcFWMW09JSdEo6rDdjrj/r7/+OmVmZtZx2zba8eablJ2djcZfre8eg7RycnI07t27l3bv3k3ozcF+EMciLyEhQZsr0p3xgywAfojmBOBmeAAgrov97UHZzoA3FSiHCoNyGHF3JFx3SYwJQXdsv379tAlg0RWMAC6kAwYM0HqNbrvtNi3EV27LFM+N8X5KsgD4ITZv3uxWAGAsN0sAmP5DOZRbP6TbeIx8Zjy5/pIsAH4ITx6ADA1uawFITU1F2KhWtj8IgBQ7fJfuRCnwoNHI9cYu9+vT5ozcE3EOC4AfwlMjYHt5AOnp6cpzzz2nXQvXQMrseMr73JwAIh9G725KMWN53oiyJk2axALgb+hoATh69KiC+QEwt4DJzYPC7FrUi8VDDz1ERUVFvCSbP8FTFUDeuLYWAFVVe8ydOzcJjUnNNRgxuw7xLKF3YNmyZfjM8Cds2rSpQQD0xt9eAgB88sknIUlJSY5x48ZpLfH//u//rrU5QBA6gsa6bnekNzcex8iZk2WPCT7LvOaov5f4jKHA6NbNzMxUvnsKGH4BbwLw2GOPtbkAAJgjbs+ePa6ly5cThgg/+eST2gSSiDxsTz766KPa+AYQcyB2R959991ad59RBORnGC4m+MCYDYSC475gnQi48NjGfwhiW79f5uE8yaeeegqxFw7h+dkcvIio/0EKgNH421sAAFGucvb8efN///d/m/Pz8815eXnm48ePtytxjezsbI1ZWVnmrVu3djvu2LFjNyZ2xZvapBMAGD7uO0ZkIlgqNzc3ad++fea9e/eabTab9p/hsy987733zIgwbHznGX4DbwIARW8vAWDcHMAo582b16QhFu46XH8E9KBtiA23G8CbALSnB8C4OYAnhAVgMBOziQWge8ObALAH0PUAAUAwFnsADBaAbggpAOwBMLwKAFrOWQC6FiAATz/9NAsAw7sAsAfQ9QAB4EZAhgZvAsCNgF0P7AEwGsAC0P3QnADgviNIiAWgm0COBTAaP1cBui6a6wXAfWcPoBtBjgY0Gr8UACzmUFBQ4JMA5OXl9Th16pSKqaQwDVdUVJTPxCoyGDW4atWqNiPKRYTb+vXrCZ4Pfntubi4dOHAgD3MEOm5gIlI6kxXwzckYxZHzolKQOUs5lxmiFGbOUxyZcwXnKIXpsxRHukhTZymFabO0z9h2ZNal2mfkp32X5+54yXOCBWkhSs2BjT6H10IAEKILgzcZBAApIgExTRgLQDfA1q1bPQoAiPhuXwRAGH8AlvZCqCkGgaBOaRyM0xLKCUmQthXxgOOthymw8JDD1e3fv782LgDz4YkHPsP4e1qC62pWgOu91WpNjpkcWY9Q4ZbJdHHLNCrdMoOK02ZSyeYp5Fh3H5VsuI+K19xDJevupWLBErHtqM9zpIp0rchLEUy9V8sr1R3vECxKvoeKVwsm3UcF1sl0IfFBqt4b7qg9mKoYv1NzgABg7AX+E5NOAPC/I8WUYPX/h9LoREbXgzcBwCAPXwRg7969edOnT9eMV3zUypCjxPCAod4pU2mY+jwpAPL89iLKl/MEQhRuv/12wn9h8hGu3+0LrnlvvXpx7RwqjA6mysShVJU4XGO5dQhVxg+lSstQKo8KosqoQKqKGkhlUYNFOpiqowZQaVSASAdprNseqO2rO2aAOCdAcBBVYH9EgChnIJWHB1Fp+FAqXjaSioQIlO5c4qjNb7kIYDwEuneNAiC9Pk0AduwgzBDc6ERG14M3AfC1ChAXF6eN/TYZHiz5cMlUDknV72tvowfl9SAyss4L4cGQZCxdJaoB6SYfUHs0XanIDqWC6DuoLHYMOeMCyRkdRM6YIKrStgVjYMz9qDpSMLyvRmd4P0G5Xceq+jy5LffJc2ReZThEQIjJKiEEEePp0rrZ9Cc1006XPmhRdQBjAYxVAP190ARg+3YWgO4AowCYDMaC4Z6+CMDzL9UtNW5yY3w3m3rB0f9W+RlVlt///veqyQcU7opRLqSZqXj5aKpeFUhXwvtQjTDSWkFsOyMGkDNyoDDkQfVG36f1jB1MTosowyLKjO5D5ZGDqTxiFP0x+X669sE6+vbcQcX4/dwBHgDmeWhWALKyWAC6A7wJAHoBuooAeKL87WgT8FUAnDnxStHmF+nCijFUFjZEGLww0Mj+goPqjF+48M4oCACIN7obw24JIwXjRHnx/eiydQDVWPuINIAc8SOpdPMM+tPHm1SqYQ+A4SO8CYCvbQDuBMBd2f7I1giAKy+9hyNz0e4LsVOpOHocVccMo7K4ocL9H07lsUFUZhlGFTGiHh8p6vfhom4vPIHWsAqCEicYP4iqE0W1InEQVVqH0cXUO6nk7afp6vFIs/G7eQILAKMB3gTA1yoAZvw1CgDq9rJ+L3sF5PX0n3GezHf3fVpDX8rCuoS+CgBQc3ijuSw7lC4mKeSwjKcSwVJBh2Wctu2wjCVH7GgqTRwhPgsiTdBtI43XbbvZXyr2l8YJWoJEeSKNGUGX4iZSyRvP0+WjyaddedYWd2G2qArAjYDdA94EwNdGQMSYy+4kSTm9tJwa+uc//7lXLliwAFNQ2e+99171Rvnggw/aQ0JCHFOmTHGhsU//3fTEvHeffPKJ2vBjfMCfP8xNuvrORvWybaG9Yt8KKtu3khxvL7aX7npVrXjjJbVo29P1fEot2fa44E+17eptT4g0RPAJkTdHdWybq1Zqx9TtR55+f9HWp9XC9Lka/5D5onrt4DafGi0Bd3EATQQA3YAsAF0f3gTA1zgARJgZy5HE8lsvv/yyA5GF3lhZWWmrqalpUZ3WG+RCl7t27VIRA2By893AGxEACXLkB/z94vu2v/7xlO2vLWyV72iwB8BogDcB8LUNoDkBQB1beAg3ZGA3gv3796swcpOb7wa2hQB0BrAAMBrgTQB8rQJ4EgDkQQBeeOGFm2ZgEABj/Lue3UUAuBGQ0QBvAtAWjYCgvwgAewDuPQCwkQBwHED3gDcB8DUOoDkBQISgPwsA2ii6gwC48wBA9gC6IfQCYHJjtL62ATz/4gseBQD0ZwFAJODp06dv2vfrKHgSgEaDgVgAuge8CUBbVgH8XQAwDv6jjz66ad+vo+CpCiA/cyNgN4I3AfC1EZA9APdA9+A3n2cpjpwFiiNrgVKYPldxYs6AtLmKQ7Ci/jO2keIztr/7PEfbrhXbko4ss+L6IN3nrkZ3cQBgIwHgOIDuAW8C4GscwHPPd14PoGfPnu3iAVw/kx5w/cw2tfa4hS6+/jgVbvgpFabMpLI106kwaQY51ggmT6PytdOpOGm6lq8xaRqVJk8V2/dRRfIUcdw0urJuKjnXKeRMnU6laSFUfTjJ4TqZrhiv2RzYA2A0wJsA+NoG8Nzzz3daAWiPKsDf7R8E/+nERrVi60/pj5Z76Fz4CLqwagQVrxpGJauGUEmoSMOGUsnKQCpePlykg7X84hVDqXRlEJWtHCj2D6bS0CCqDBtIZdGBVB4RRNXhgVQqyvpq3SNU+osoh+tMmmK8tiewADAa4E0AulMVoE+fPqQK6M+5UbiOZipVtlByxAdTWcwoKhIGXBwWRCVRgpGBVBIu0nCkAcLwsR2gGXxJKIRggGBf8bmfxqrovlRlGUDVMYPrRhau6EMOyyT6atNsKj/8qtl4bU/w1AjYSAC4EbB7wJsA+NwI2ImrAO3hARTusioX0udTqWUkOS2B5EwYIdKhgkOoXHyusgRQhUgrRIrtstgAqowIEG/3fuRY1YfKV/al6uX9qWJlb+EF9BHGL0Qgsh9dEZ+vLO9FTrHvgvVuqj2RQN9+vksxXt8dWuQBcBxA94A3AfA1DqAzewC9evVq80bAioOpSskbi6nMOoac1iC6kjKMnIlBdYwfJIRAvMktIo3tVzfeXxi4MxqTiPSiytDe5Fx5G1Wu6klVK3tp25ct/akyIUAcJ46PEIIgvATHusn0p/etKl060KIGQfYAGA3wJgC+tgF0ZgFoj16A65/nKVd+lUzFaXdT5cYJVLVhnCYCV9ZACPrXze5jwWw/mPBDMKY+FQLgjLyVnGG30OVQka66RduuSehPV9YOo8vWgdo5pTHDqXxHCF3Nu7H5AEAWgG4IbwLgcxWA4wAagex5Pf780eakv7z7Gl3a9ACVbb6HKtYHU1nKSCpLGCaqBoKxgXWMGkylcUOoNFqksYJRA0VVYCCVhdWlGiNFNSFxKJXFiPMiBVdPpWvH4ugfjvfMxmt7QouqANwI2D3gTQC6eiOg/F5ge3gAElSwK+mb38So1Yfmq19smaX+PmWK+qV1hkgnC+KzZN3nApF+mTJD/cPqyepXSVPVr6yK+oc194vPM9Wv4u9Vz8eLfWseVv9+eF2bzAcAchxAN4Q3AejqcQB6AcBgpbb2APwRnjyARqHA7AF0D3gTAF/bAJqLA4Dx+YsA6A1f7wH85je/uWnfr6PgTgDkf4BtFoBuBG8C0JZVAH8aDmw0fhBtAN1BAIyNgPr/AJ+5EbAbwZsA+NwI2EwVwJ8FAHMW4sHvDgJg9ADcCgDHAXQPeBOAtowD8GcBQP2XPQD2ALodvAmAr20AnVkAuosHwALAaIA3AfC5CtBMHIA/CADm/jcaP4gpy7uLALSoCsCNgN0D3gSgrRoBQUwJ9sorr9D27dvzhLutgH369HFLm82mHjlyhMTD6pEt2X/s2DF666238kaOHKksW7bMrl+URE985+5SBTDGAbgVAI4D6B7wJgBtFQcA4oHDSrx4C4OYox9egZ633HKLlo+HsG/fvlp8PkbpgdhGHrrrwJbsxxh/+flHP/qRtgqw0fhB9gDYA+iW8CYAvrYBeIoDAGFk+odNrhZkpPG89qAnAeiOgUBuBQAegN2u6M9zOBzWs2fPhurzGJ0c3gSgtVUAd+WBRsNrjsZzb4TGco3Xkr0A3XFWYON/YxQAIYrK0aNHVavV6nruuedcoaGhKoRSCEKLRh8y/BjeBMDXRsAX573o8S1uNLqW0FhGa2gs0x3hjaC68Hu7XTV1cbTIA3jjDTpXUKD89re/paVLl9Lw4cO1SE5U4XDe2LFjKTU1FROosAh0ZngTAF/jAKKiorQHxeTGEPU0GqCRxuPbmnLFYnk9eACjRo2icxcuqKYujpZ4AHgu3n///Qzcz379+mmGD+J/klW3oUOH0ttvv+3Iz89XDJdgdBZ4EwBf2wD27dtHgwcPblKWvxHVFNkmIdseHnvsMSoqKgoxdXF4EwA0xIaFhdGKFSs040ceiP8MS6tBCLANTpkyhTIyMhwnT55UGl2E0TngTQB8rQKIByE0MjJSa9E3uTG8m028vfAWw8MPyof69ttvp+zsbBzT5WGsAoB6EcDzgLc7elHkcyH34f+CAMgl33HsXXfdRTt27LB/9tlnXB3obPAmAL42AgJ2uz1E1A/VZ5991oVuxIceekjjzJkzbzqnT59OkydP1nj33XfT1KlTEZvgOnTokCq+d7d4gI1xAJJ6ETB6BcY8fT6enzFjxtCWLVu4TaCzwZsA+BoHoMdXX30V+sUXX9jOnDnjN/z4449tH374YQNFlQX5ZuN378pw5wHo6cnQjZT5siqFhsG9e/c6xP+pfHc1hl/DmwD42gbA8H/4KgCSxihK43nYD69KeALcJtBZ4E0AWlMFYPg3jI2ARhoNXxq/NwEA0Z7ywAMP0M6dO7lNoDPAmwD42gjI8H+01AOQ20jR4IexHD/+8Y+0RkBPIoDjEG49ceJESktLIxYBP4c3AfA1DoDh/5CNgDBkkxsBAI1dpBif8fjjj9OC1xbQyJEjG3pS3J0HLwBCINsEOE7Aj+FNALgNoOsBHsDcuXM1oza5MX5QBkmh2w+DqNCDcvjwYfrkky8yNm3aRKNHj9YM3d1zIwmRQJyAeMa4YdBfIQXAZDB8Sa4CdD1s377d/PDDD2uGbTIYrbzvMuIP7jzq9MnJyRkwYrvd3uPXv/510tq1a7XYCTnuw5MQoNowY8YM2rNnj727dLN2KuzYsUPU637s9iEA0X8vbpzPAkD2/IDrH9mU63mpSu3BNco3B2OUb46GKtfz4xVXvtjOjxCMF5R5ESKNqd8Xqu1zNezrXMfjOOxD/rdnMhWy7/ObB3/rtq2hC15doN1zo9Hq3X4YP4554oknXJs3b24yAtDhcCTl5uaqgwYP0kK/5ZTi7ojy7rnnHjp69Cg+M/wJCN3Vh3vqjR+fFUWhDz74wCcBIHtuwJ/yt6k1B61Um72cqna+SleyX6bad56nr/f/jK7sf5muCdaK7dr9z4tt5L0o9r0iUjNdFdtXtbwXOuXx2EaeS/Cvx2Lpb/nr1OtqVoDxf+povPXWWyELF79GAUGDtPq7UQBkrD88QlQP4P0J47caimmEhYsXqePGjXPbHqAnvI1169axAPgbWiIAx48fb7EA/FXdF3z1SJpauvFpuhg3mYotk6gkfqxIx4h0DDkSRndxjqEy61jB0VSRPJqq19xPFRufpMrsJWbjf9WRyM7ONi9evNjRp29vzVhlHd9kMFTkw1hnzZpFcXFxSY0KcYPU1FTl5Zdf1lx9kxvDl0RVITo6mgXA39DWAlCRE6EUZ5qpMPIOqloRSBURg7T17KoiBlBVeH/Bfl2a1Sv7kjNMpKv6UrX43dUrB1FR6ASqWP+KvWan9aZUBXbt2qWEhq1wDR8xXDNwk+4+Y1t+hpFipqZ7770Xxp+Rnp7ew1BUEwijtgcFBXkcAi4Jj2Ljxo0sAP4GCMCAAQMa3Sz9w3Hffff5JAB/+3QnFW2YRo7oIHJG9iOnMIrKsAFUEd6XyoUYVEciHSgEoZ+2zn1ZfR5S5FVGimOFWFRHiLzIQVpaHll/vKDM044X51eKYysi64+/SeVXRvQRxt+HrqzsSc5VP6HLWNY7HCv89iNHZCAVh42lwuRHqTBtrmL8v9obb775ZuiyZcuof//+Ho1U3m80+Am3322d3wibzRYgXHo7Rn56qv8jH2XC40BA2alTp+yNCmHcfOzfv58GDhzo9oHAtu8CkEVF66ZQZWIAXbOKt2FUX6qKEsYS25+cMQOpOq4vVYjUGSPSuAHkjMY+sC6vPG6QSIXhxQhvIU4cHy2Ow75YnCeOjxPHxoAiT5RVHi2OF+dXivKRdzPK15b2jhKM6Fm3rHdE/WexvyphMBWGj6KilCfJkW5WjP9XeyIvLy9k0aJFmofnyUhB3Gs05KG1Pisry6ovwx1g/BaLRcVAKk/Tv0niuiNGjKD169erH3zwwU3xgBjNoK0F4JtPMzMcrz9OjsRRdDlRGL1FGIulX9169gnCYCwg8pFiHzjIkMptHGfMc5fe7OPFb4mBAMDwezYIQLkQmKqkYXTBOoHKdqyk2pw0xfh/tRcOHz5sXrJkicPbsGzcZ9Tf8YZuSZ1/586dwfHx8SqGALvrRjQSDYSLFy8+LYQloKEQhv8AAgD30GR4KForANc/ylGuHU6hi/H3UUlkkHCXhRcQ2afuTRmFbT37eUjd5SF1l+cPx/fVjP7Kil6a618Z1odKBR2i+lMSPZwK1s6m2vey6PqZPMX4f7UHcnJylNjYWBem8TIZDFJG6snPsp8/NTU1Q7zZvdb5k5OT7ePHj28IBza5MXoQ+1E9QDUhPT09QFcEw5/Q1h4A8I9P3gxx/iJSLc+e7yrf+hiVb5hN5RtnUXHaI1Qm6BAsESytT/EZ2512//qHqXTDw1S87kFtf1E9L2x9nK7uX0pfv5/h+vbzjgmH3bFjR6h482tTpMsGPyMhAjBQdPc9/PDDrm3btrW4zh8YGOj2OZGUwUPwEKxWK9f5/R0QgLZsBNSDCk+E/u+ZLJvr9Hqb69Rmwa3dix9n2ajgkI0uHTcb/5v2gLiXIWjwg6B7Mn4QAgAjvfPOO7328wNw36Ojo1X0DsjnQs6sZBQBVCfGCQ8h1hKr7tvnPwFQDA9oTwFgdBxQ53/11VcdWADFXZCPJPLR1YfRgKGhoUn6MtwBdf6YmBh1woQJWkOhfDbkdGryM/iDf/0BTVWmUERk5GlxToCxLIYfAgIwaNCgJg8JC0DnAfr5wyPDXAGBAY0M0qS7p/o5/BDbcejQoSYLf7hDbGys/Y477tCMH16DfPPL8uRgIWwPGzGELPFJdlQXjOUw/BRtHQfA6Figzv/z+T/T4vZRr5cRfkYBkG/+xx57zHX69GnV6XQqjUtqDBgxjB9Lrsn4Afnm15eP68HtR51/zZo1XOfvbGiPRkBGx+DECTUE03cPChigvZXloh24d1IMTPX3E2/wadOmUXx8vNVYjhH6Oj/K0AuAUVxwPUwIiuO3b9/Odf7OBhaAzgnU+VesCHUMGTJEewNLQ9ULAPLR5QfvAP38UVFRScZyjECdPzIyUkVXn7d+flwH1YOIiIjTubm5Ad+Vwug0aOs4AEb74+DBo0psfJwrMChQq9PLOrnRRcdbH/vxJhfueYv6+dHVh94B1PfdtfJLQmCwdgDcfg7y6cRoTw8A4+Cvf5SpuPJTlW8EkbY7j6ZqcxBgW6bI++Zo47xv8q11Y/ZPpgmK/Pw1ddsiH6n2fU+mK3TpgF+5tdnZ2aFYsUeO54fhS0M11d87eAMgBGD27Nktiu3HGxz99rI9SD4D7maLwjXvvf9uCl21kuv8nR3t0Q1IBXkBNflx5q+PJduvHY6kmtxldGXfUqret5yq31kiuKyOOYvrt5G35Mb35yyiK3sXUa1tETn3LKxL9y6kGttCurJHbO9+jWqzxTl7FlNtzny6kmOma79YSl/nLqznEvp6/3wt78q+RVSdG0Z//k26w/leqhkTnBh/Z0cD/fyLFy/WVuwxGe6V9ADkNgQCdf61a9dajeUYgUg9dPVhSm99I6IsSx9TIOv8CAfmfv4ugLYWANfv9gVfPZmhlr39M6rYPIWKUyZRSfIEKrYGU1nSRJGOJ4d1IpVo28FUap1UnxdMxSKvRGyXiv3YLkOe2O8QeSX1+0vFdrHY79CODRacVJ8XTOWJo6k47nbBMVQSN5pKYkdqn0vikIo8yyiRjqIisa84fox2vCN5FFWljKHKtWPE9miqWnc7Va4eTWVrx2rXu7jlKSrKXkLO46lm42/tSKDOj/H8xth+owBI48eCLi2J7d+4cWOwKFeFOy/X+5MeBVK5FqDs/oNIJCYmcp2/q6Ct4wAq8qxKkXjzXlh9N1UlBpIjJpCqYgdQFYbURjZO3eUhdZfXsuMx30D9vAPY1ob4DqhLkd+Qh9F+4nhLf6qJ70fO+P5Um9BfS68liu1kcVxCAFXFD6GLCRPpXPJMqv1lnP3v6s6b8sY7evSoEp8Y5woaEthwXyT1b2sYr34Ov5bW+THBp5wkBJTtCHLcAAjjh+eRkpJiZ+PvQmjrOIDLJ9+g/5M4VbxdR5IzoR99vaY31VgxGAjDY+uHyWL4LIg8pBhJd6P7Lb6xNqmP9r1cKb0b8euUPnQtRXzvlL5UkTCISiKH0aW4u6lw+3xy5EQoxt/b3hACHRoeHq411LprlJPReDBW1Pnnzp3rU2w/xF8OFUaqd/dBuSw45vkXb36u83c1tHUjoOtEplpgnU5lUUOoOqYv1cb3rDNaGGm7E8N1+xKGH9dRbiMFG++vsfalq6v7CoMXb/7VvenqmgGa4V9NGaSxKn4QlYYPocLISVSevphqd1kV4+9tT2A8P/r5MZ7fGHZr0t0rGC7cfix42tLx/PFWi3rf/fc1lCerEMbx/fAG4CEIEeJ+/q6IthYAzHpzcfUjVBR+u+aKX175E3Kuuq1uhpx2Znn0YG3IcWXUQKoSxHZF1Hd51VH9NVZEDdIm+dDG88f3pcvC0C/Hic/C/b8sBKI6cTBdESyLC6CK8JF0IfJOKtk6nypsMYrx97YXPvzwQ/OKFSscPXv2bHQ/jCmM/7bbbtPWb2hpbD8a8CZODBau/Xcr/Bgb+yQR4RcZGcnj+bsq2joOoDY/UyndH0cXEu6n0tiRVB42iCrDwf5UJlLnyl4irw9VCDpX9KJqYbiVob01Ylqt8lBMrdWrYT+Oxfj66pW9yRlWtx9lIK8srO5YbIOYogtCUB3eV6PcRqrN11efr+VhjgJtPL9II4QIrKr7TpfFdaojhXjEBlKVJZCKku+i4s1PUcW+6AxHXqjXOnVbAAtrirq2CyvwmAwGKe+NfFujfo7Y/o0bN7ZoDj9h/HYM7JGz+OrLk/dccsiwQK3Oz7H9XRht7QEAmA+g5kiSoypnAZW+PptKNs+i0g0PUfmGmVQiiBQsrk8dgqX122X1n/X75Xk4Rr+/SXnrH6Sy9TOoJHWGtl0kWCq2C0XqECwW2yX12471OEack/ogFaaIY5JnCortJGzPoCJxbNnrc4ThL3M53gn1WqduKyC2f9HiRYQ3v7s3Mu4LjBdEg9+zzz5Lx44dczkcDqVRQQagqy8iIsKOhjx9W4L+XsttXBcigbgAh6M63VgWowuhrbsBJTAG/h9nd9swD8C145YO4dW81bZrx+JEGiOYZLt6LMFWcyjadu09q+3qEcHDMWK/OO5IUt0x78XZHIdXi2Msgjg2STBO238tf7Xtf/57m40KDluNv629oKpqyNJlS6l3315NDF8S9wXuOsJ07598Px04cMAmjN+sK6YJ4L4vW7ZMxUo+xn5+dwIAcVkVFkaYWchYFqOLob0EgOEb0M+/dOlSh/FegLJ7Dtu4LxjVh0U7Fi1ZlKQvwx1kbD8a8tCaLxv7TG7utfz8Y1E+lowrKCxUGhXG6Hpo6zgAhu84ePCgEhUV5cIcevqRd0jltiSMH639wj1vUZ1/48aN9kmTJjX085sM4qK/10hxzK233EIZGRl07tw5RV8WowuireMAGL5h7969Wmz/LcLoTAZj14sAhAGj++bMmdOi2H403MH4vc3hp6cUAPQqbNqyhXhF324Ad42AIAtA+wOx/StXriRMuuGpbi7vA+r8WNG3pXP4xcbGauP5TR7uqzvK6/W49VbKyMxs0YxBjE4OFoCbA+F5mZcvX+5Aq7zsgzcavgzBxZsfsf1hYWFJxnKMQLBORESEGhwc3GTZd2+U18V4g0wWgO4Bd3EAIAtA+wGt6xaLxTVq1Ci3hi8pg3ywYk9L5+1HuC668GTkoMmNoXuivC6qI6+//joLQHdAe3oA2nwAJzO1MfjXD1pFukak8fWpVbcd37r9KFcSY/dV7wZysyGMWKvzu3P7ZQs98mH8eIO3NLY/Kz0rIDk5ye7pXurFQJZvFAh5HHsA3QjuugHBGxUA564FytdHku3XcsLo2ptL6OqbC6h250LBnwu+Vs/5VLsLedjn2/5rgl/vWkrX3l5C1/asoNqccPrm0NoM4/fwJyC2PzomShtPL1fW0RN50vDl7L0tje2PCI1QJ0+5r2Fgj576bkRcAx6fDAgyHgtiJV/0ArAAdAO0tQBgPgDn8U220s1POsqtU6jMEkxFceOpKHo8lYq02DKeSupZVJ8iDyytT1uyv1iUWyJYahlLjoRgKg6fQBXJc+jyLqvXt+XNAPr5Q0NDHT173aYZocmN4YEwVDT4YTIPX2L7sQaffskvT0SXYFxcnCYu6FI07gdZALoR3MUBgK0VgNqja5TK3UuoKOFOqooMpGpBbSx/9ACqjhKME8R2jMiT25gvINa3/RjPr80BEDFAG2dQsbw/VS0fSlXpL7qun9yeZPxeNxOI7U9ISHAFBQU1+Z/1RL0dRonW+5iYmAyr1eq1SoPYfkzg6eltrieEfsuWLfZ9+/YlhYSEeJz0kwWgG8FdHADYWgEoTAtRCpOnUUVMEF2J7kdXlvWiy8sFQ3vXjdrDIJ82YkVoH2H0vahyRW8q1wYTDaSSzTPJuS+sxd+3vYE5/DCeX9b5TW4MDsT/LWP7jxw54vX7I7YfE3JCVHCesT4Pok0BwoAgIHgI69ev18bzi/tpfuqpp7T5A4zngCwA3Qht3QhYmDpLCMA9VCHe2DWWXuSM6C/e0P3ockRvbV6AK2G9tG2NYb210XiXw3vXMbK3z/vLMeJvlTB+bVnu3lS0fjo5bEta/H3bE+jnxxx+qHN7M34Y3axZsxDb7/AW2w/jX7p0qQp3HsYPQzeG+IKoEsCjGDt2LDwKFdUFnA8BeOyxxzx2E7IAdCO0tQCcy5ynFGAUnmUIVVuEkSYNocvWwU1m5GlTYlYgS38qTwiiws0/JcehhBZ/3/YCxvOjzm+cw89I/M9wxadOnYr59ZOKiopCdMU0gYztRxeirMOjDKMAyNiC+unBGs3hxwLAaEBbxwE481KV0j3L6I+WCVSxKohKIwOpLCqAKiP7U1nkIO2Njm0Q2+UYey/SCm1ev35ULSjzWnI8xvRXirzSmED6Y/wEKrYttjvyrAHG79WRkLH9w4cPb/K/Gon/GWMAXn755Qyz2ey1zo9+fkzSIeftN7kpTwsb/v4PafiIoejPbzKHHwsAowFt7QEArhPrQirfXumoWDeXCpMVKl03nUpTp9eP359Bjg3TtLH9GO9fJrYxvr9uvP80La2bH2C62D+jfvz/DJE/XTvH/fkzqDT9MSrZvdhOhSdu6vh19PMvWbLEYwObJP5fEG9pBN688sorlJaW5rEHA119mJwDYiFXApJlyHslvQnU7Sc/cC+t37DF7Rx+LACMBrR1N6DEXz7MNf/PsQzbldwltqpfRNqcR6Lrx+1H21zHwxrG8LuOr9Rthzbadh2vO8d1PFIw3OP52v58sf3Bxps6Zx36+ZcvX95o3n5PlIaLtzUa6SAC8+bNI6z021BgPWRsv5y3H29+We9HWZJyngD0IgixUA8ccL+oCQsAowHuBED/VmmtAHQ3yH7+Xr16NXkzu6P+GBiu7AKcP38+RvuZZbmyzo9WfLj98lyjAMg83K+4uLjTzU3jxQLAaIC7OAAWAN+AOn94eLhr2LBhjQy7OQEAjceCAQEB9NJLLzk2bdqkNQainx+t+PrQXaSye09fFob+rl271uscfiwAjAa4iwNgAWg53n///dCIiAht0I6xXt6cALg7DimiBFEdeP755xEJqN0b6SHIY3EdGD/q+viM7XvuuUczft1X8wgWAEYD3DUCsgC0HPj/MN2WfjVdkd1ksA2MFG9yEK6+XizkMaDM+8lPfqIFD2FbLtkl90EQcD05OSiur+/n9wYWAEYDWABuDLLFX/bD6wUABgbDxZsaQ3pzc3MRipvxxBNPaG95vQvfHPX1fXkNlAsRueOOO2jVqlXN1vmNYAFgNMBdHAALQMvgcDjS0TIPY5dvfP0bXa6rh2MOHDhAX331VSjm8cOinYj6g6HJYyWNZYAwfhirUWRQPUA4sK+LdrAAMBrAHkDrcezYMRVdfvL/0v9vSGFgs2fPdqWkpDTp39++fXuS2Wx2oU/fWF0AIRz6Vn7Z9Yfj8Pa///77G2L7fQULAKMB3A3YOtgLCpTFS5bY9XVzk+4/hLEGBA6it956SzWc2oATJ06EYkkvNCDKFXlNBmM0jiGAYNx5552YIchjP783sAAwGsAC0Dqov/3t7meeecat0Ur+9LE5dOrUqWZj+48cOaLV490JgHzr6z/PnDmT1q1b51Od3wgWAEYDOA7AdzidTiUvL881adykJkYridV6rVYrtptFenq69v/r3/Ty/5d5SCEEGPorjreLawc0LsU3sAAwGnAz4gDIkdfjun2Xcv1kmvLNmXTl2zO7FDp3UEG+8Vh/xPnz57GKT5MZdeR/hnTixIl06NAhj3V0DNCJjY21DxkypNFb3kjZAIgBQGlpaR7L8wUsAIwGdGQjoOtQZsilrDBzTV6k7drRSLr2i4VUm7eE/nw0jv6ippNLfT3jW3u+YjzP37B161YzptRC/d9kMFb8bzCs+fPnw2CVxmfWAeP50W+PtfrcjejTE3V+HJeQkKAKsW5Vnd8IFgBGAzpCAL49k6X8+XCcrWSL2VGQ+gQVpUyliqQJVLVmlOAIKl89joo3KnQxcx5d/dV61/UPNpqNZfgLxNs/ODMzUzVWm0C5/BbGA2zatIlUVVX05xYUFFgP5x22vfTKK+rQoUObCIik/P9BZfoDCPK5oTq/ESwAjAa0dxwARui58mIdZRtnU2H8JCqyTKRSyyhyWoaQM2EgXbYGkTNpOJUmj6FC6x1UnDaDyrc+7vjrqU0qXWpdK3d7Ij8/X0lOTtbq+CaD4UgPAPMAiLd8hjCgHg6HI/jTTz9VrVar+vOf/9yF1X0guJ6MH5T/P6pmmZmve43t9xUQgCeffNLjJKIsAN0I7ekB/F3dGVx7cBUVJk8mR9RgKg0fSM6oAeSMDiBnjGCUoCWwEaviAqkybgSVpD9Ff87fSnTpgyYigLaCb9R05VzWIsV5fAtdfnc9VR/dQF//OoscWS8qtbZFiisvJsB4XlvgzV1vhirTprqtt+M/gxeAlXvfffddTOlNDz30EI0YMUIzKnfnGAkPAm0L6OrDBJ51V21bQAAwJ6Cn2YlZALoR2qsb8NvPc5Wv37XaL1oVKowcSRWY3Se8vzB+kUbVM7apAJRHDqbKmGFUEjWJyjaH0P+e3eugwu/aBa5/uNnsOhJnu/KLMPoq/Rk6b51ax2TBNVPIkf4IOXc8TeXZC23Xf5dl/u4btQ3yjuRR4JCARv+RnqjTY1QgGu0wOs+XFXpwHMYAYGAPPIa2qvMbwQLAaEB7CcCVEym7K3Y+TYUxo6kkZogQgMHC+IUARAjDj8a2YJw0fMwZCIrtmEFUDS9AiEZJ8gS6sm8x/b/fbXb87+l029W9S23X9r5GpWunUmnKJCpOvJ3KLSOoNHYYVVpHUNWakVS5ZjRVi+2ilClUvus1+r8nNzSJwrsRYIRec7P9yP/OXfy+8VjjPrjksp8/NTU1ANdrD+Tl5ZkxHsHTWAQWgG6E9ogD+PbzHKXmF4tdjg2TqDp5GFUJ464WVQBnrGDEAO3tXyE8gVJsW0B4AiC260VBHFsVLzyC16dTza4n6MquZ6h8/TRRFhYIGUrOhEFif3+qtvQT7Eu1yf2odm0Q1a4WImMZSA7LSLoQN4Eqsxe7rh1fm2T8jq0BYv8x244xOk9PT4buifr/Gl2CycnJ9vz8/ABTO+K9997TPAAWAEabxwFgfb7ag2HpVZvvpWsp/ena6j7iTd9PGLSo/2NRDxi2eMtXWUZTzepxVJ10O1UlBgljDtDe/HWeQB+6LHjN0ptc4vxrSX3E/oFUHRmgTQLqjMMxaEvoK8qFoAwUgjJYW4ikLHywYH8qiQ6gS1GBVBx/JxW+OT/PdabxxJitAcJ6MYrP5MZoboRojYewCKNrlzq/EewBMBrQ1o2AroPxSk22cNNXj6UryYOo1ioMNnpg3WIeUQOoPGEYla4RnkHmHPUvtqdtNTufViuy5lBh4jjh9qNqII4Vb/Wa2D70dVxP+jqhL11N6E9XhcFrC41E9BLVhLppwPGmhyhgQRBnOBoVRfUhfJAQgH5UFtWfyoSXURwzgi69MZ+cH+40G7+rLxBvf2XVqlV2T4tpuKO+KuDOM0Aff/8B/emhWQ/Txo0b263ObwR7AIwGtLUAXD31Rl7xujnCBR9FzuShmpE6heE6w4TBCuMs3XAXVWc9fdqVtygAx5Oa3uMvv07ZXfb6s+SIG02VMGYLGgnFm1+IQE1Sf7psHaK96Wvj+pAr5laqEd5BTaLwEuLFW19UF8piMO14gOZdOGPE+bH9NC8C6wVUrR5JJW++QjUfbjU3/qa+4ZNPPtk9d+5cj11nngjjl1UGOUcA4gSwDsBrr71GWZmZdCI///SZM2cCtAt1AFgAGA2QcQD6N9SNCMC1j3ZTYdJUYZTDRH1cvLXX1C8Mgl6AmOFUnvkIXT+d3qi862pWwF9OrM678sYzVGUdSuX1AnBFGPDlxL50bU0/rSrxdYIQgIRb6WtRJfg6WQjEalEFSB5GzsTh5EwaSpeF4NRVHW6ja1bs701VW6dS7a+WnXbZb2zp8JycnN1YiUcas7s3upE4BkYGw0eLOyb2nPfM07R961bK2b8/IzMzU/n8ozOK8C4C5HU6AlwFYDQg95e/1Cai1Bv9jQhAzantdC51lvAAArUGuStrh2m8bB1GjjXjqDxrvmo8R+L/frIp4/KuZ6go5W7hwgcJ1x7dhn21HoPqiH5UFd2HKuMHirf6cKpOvZ2qXp9KV95+mr7OWeAq3zZHLd/xqKskZQKVWEZQoahmlKTdTX87tsLl+sTzfPstxcGDB3djxV6TzrhBCIK+UVBO9QVPAZ4VYgIwa9CWLVscH330kcff3pGQ3YAsAH4O4XaGwF3DlNPeiJvaGm574w1NAPSu6o0IwPXP96olb5jpojWYytcM14y1cu0ociSMp9KNs+l/T6ZZjefo8bffpKiV2fPpUuL9VBgxkiqXDaDSFQOpXKSO5YF0MWYcFax5gKp3v0SuX7ya948vttvo0nEzzr12whLqzF1JlzKeo4KMeVR2OJyoILvZ67UUWOoLkXxy2C7e6vi/0M8vu/tg9GjJRwwAFvoQhp937Ngx2x/+8Acb2hCMZd4ssAfgx0Do6BdffGGLjo62mc1mB+qdWDACq8Zi/Plzzz3X8BkzxyKVeSCU3RdOnjxZ69duqyqAS9Tpne8m7i7NfpFKMqZR4eo7qGjDA3Qx43FyHk5Cmc0CvQh//XCzuTonQi3fupCK1j5KF5NnUqF1OhWte4xKc0Kp5vja0ziGzjSdCusfX+aaXfnp5pr8zWbX2b1m4/4bwalTp9QpU6ZoBiIDfGD0/fr1o+DgYFq4cKG2FNfatWvNqqqahQEFGMvwB7AA+DGwMkxiYiKNHDlSizdH3REzwIJ42NCIJD9jG3lyH4ib6gtRvnRbTW0gAIArPzXgb59szLt2PJ4uvSm8gexXqTovMaNWzVKMx3qCEJJgZ84a5fLhlNBvPsymq3kbMwqzzIozP02hghvv0msNIM7CI6MVK1Zob3kYPdz7zenptH3nTq1OL4ymQ1rybwTcCOinwAOWsjZFCweVRtiRNLWRAHQHiHuVJKga8zsD2APwU4gHKvTxkMcbzTDbkTS5eRhYALoe2APwY2B+OKNhdhRNbh4GFoCuBxYAP8b4iWObGKaRJjc3DTQe5yuN5YEsAF0PXAXwY4ybOKaJYeopJ4jEtgwzlY14raHJzQOgJwtA1wO6f9kD8FN4EgBp6Gi1RyMhbhLmk+/Zs6fGW2+9VctDzwG69UB8Roo8EBNNGPfLJaZMbh4EEGPThcvIAtCFwB6AH8OTAMBQccMQYLJlyxaNmHcO00qnpaU1fMaNk/uxb/PmzVoKIs+4HwtTYFCKJ48Ao9RYALoWWAD8GM0JAPr5N2zYYP/8888V8MyZM+h31lL9Z1+YmZmpDU4xxgJIwgMQDwwLQBcCNwL6KdCvjPnkxWYTAUAe3P+tW7eqxvNuBNu3b29WAOABIJy18VmMzgx4ACEhIR4nJmUBuEloTgBAjEXHuHHjeTcCVB/kUtXuJq3kNoCuBzQCYlpwT2sSoH2IBeAmAAKAN67JgwCgCoDJIo3n3QiEoGgCYHLzIOCaiH3nXoCuhX379pkx96AnAYAH8Pq2bWQ/d07Rn8doZyAUePr06U0MXxJVAIvF4iouLk4ynttaREREaOWifJMbAcA69h9//DELQBdCZGSkefTo0Y26j0319xtpz9496e09b1OhH41g7DZA3Uw/QEdP1Nkw+g+jBY3ntQafffZZsH6Mu5G45pw5c1xnz5694fH0DP+AzWbrsXDhwnSMYNQbPyhD0DE8fP/+/Q68kIznM9oZCQkJWp++DPYxEotMoCHQ0QazyBw8eFAdPHhwE8OXxHeYN2+eqj+H0bkRHx+vvPTSS1pMiN74sS1HkyL4a/PmzWbDqYyOwIGDv2y08ISR6LM3m82ESUCM5/qC3/3ud+b58+c7mpvjDo1BqampLABdCOLlkQf3310PADwANDRDIDABSqMTGR2DXbt2hT748IMePQBUDbCw5KZNm+xw4Y3ntwSIGcjMzHSNHz++yUOgJ1zBd999lwWgi0B4jemYPAaNfO4aAPFsYX7Il19++bTdbr+hORQZrQRWlF23bp0W7uuuHUByzJgxlLVrF32mqj6JAIKFwsLC0r0tTY12CMxApD+X0TkhDL+HeFmoclWj5u77zAdn0iEO/Lp5QN3+wIEDKuphctopI8VhWl0NQ4d373zLkZubqxjLcYcTJ06E7Ny5U5uSGlUJd/3+knj7JyQk5OnPZ3Q+nD9/3pyfn29bunSptgKUpyXBwe/9y/do0fKFjrMFBWZdEYyOxtmzZ81oDESEnn5yEJPhhmEf6nPPP/+8Qxi2raCgwNa4pDocPXpUydiaYXvhpRccQUFB2hRiIrvZQUCoB6alpSnflcLoTBAuvFk8R7YdWTvoqblParEeciSpSXef9c/V2DFjCfMeNiqI0fGAF3D48OE89MEb+2r1RB5uKG4uqgRw2efPn6+uWbNG3bZtm2qxWNTZs2erISEhDgQYYfSgp7L05WF0oTgXXUF2QZXZOWiz2dQtW7aoMTExqnjju+bMmUMDBw6gH/ygbhVgd/cd9xsNwRglunbtWuKuPz/Cpk2bMoYPH+7RCzBWDWQrLurvoLEhUX+ukdgvRwXKBwIp8uQkpChb5oG8v/326ydubSnxImjOxXdH3G+chyoCJjU1MfwLycnJhL56o7G7Ix4eiAAM3928giY3D4CeRsFg3jwa701LKO+7Mb85wvjhKRw6dEi9dOkSv/39DZ9++mlGUlKStsqMsc5ufGgkPQmAu4dLn+fpGGbXJDwODAvOysrq0LUJGT4A/bH5+flJcXFxWiuuSXcDjYatZ3NdiO7orjz9tZhdg3g5oLoBbxFrG+zbt88unq8AE8P/gTaBB6Y+QP/5Xz/UbqbRYJldj7jPraGnc9G1jHal6OhotPjbTYzOhUPvHlLnL/iZFg2IBh/jA+PpwTHul3MMGvObY2vaCHw9R3ZVGfObI85pzW9pzTnGPG9szTltRf39R5UQ3cqPPvqotlApRnhyi38nBKK6RH3N/M4776CbjyZMmEB9+/bVBnfIh83kRvkl5cPRUQbQXFuEJ/p6HX8WgNb8/rYiro0uXSwzh1GkmzIyKDs721xQUKB890QxOiUqKyuDEeCTkpISumvXLlq1ahU99NBDdP/99xNi/DFqcNiwYcxOSNw7EEFecNcR4+ErMcz7hRde0Gb22bNnz+nU1FRF/egjxfgcMboYzp8/H/zll1+qvz9/Xj3/1VfqVwYWFRWhu0e9cOGCto20sLBQo3gz8P4ust/Bk3kwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDN/x/wHjsXZ4EUApzgAAAABJRU5ErkJggg==";
2438
2551
 
2439
2552
  // src/components/SOLModal/index.tsx
2553
+ var import_react_intl11 = require("react-intl");
2440
2554
  var import_jsx_runtime54 = require("react/jsx-runtime");
2441
2555
  function WalletContent({
2442
2556
  onSuccess,
@@ -2634,7 +2748,12 @@ function SOLModal({
2634
2748
  onSuccess,
2635
2749
  ...props
2636
2750
  }) {
2637
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ModalWithHeader, { ...props, title: props.title || firstUpperCase(type + " SOL Wallet"), children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_wallet_adapter_react.ConnectionProvider, { endpoint: (0, import_web3.clusterApiUrl)("devnet"), children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_wallet_adapter_react.WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_wallet_adapter_react_ui.WalletModalProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(WalletContent, { onSuccess, type }) }) }) }) });
2751
+ const intl = (0, import_react_intl11.useIntl)();
2752
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
2753
+ id: type == "bind" ? "bindWith" : "loginWith"
2754
+ }, {
2755
+ name: "SOL"
2756
+ }), children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_wallet_adapter_react.ConnectionProvider, { endpoint: (0, import_web3.clusterApiUrl)("devnet"), children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_wallet_adapter_react.WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_wallet_adapter_react_ui.WalletModalProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(WalletContent, { onSuccess, type }) }) }) }) });
2638
2757
  }
2639
2758
 
2640
2759
  // src/context/BusinessProvider.tsx
@@ -2679,7 +2798,7 @@ var context_default = Providers;
2679
2798
 
2680
2799
  // src/hooks/useWalletInit.ts
2681
2800
  var import_react16 = require("react");
2682
- var AppClientId2 = "react-sdk-" + getVersion();
2801
+ var AppClientId2 = getAppClientId();
2683
2802
  function useWalletInit({
2684
2803
  refreshOverview
2685
2804
  }) {
@@ -2817,7 +2936,8 @@ function useInit({
2817
2936
  theme,
2818
2937
  appid,
2819
2938
  events,
2820
- endpoints
2939
+ endpoints,
2940
+ locale
2821
2941
  }) {
2822
2942
  const {
2823
2943
  setAppid,
@@ -2826,7 +2946,9 @@ function useInit({
2826
2946
  setMid,
2827
2947
  token,
2828
2948
  setOverview,
2829
- setTheme
2949
+ setTheme,
2950
+ setLocale,
2951
+ locale: realLocale
2830
2952
  } = useLocalStore_default();
2831
2953
  const overviewLoadingRef = (0, import_react17.useRef)(false);
2832
2954
  const searchParams = new URLSearchParams(window.location.search);
@@ -2841,6 +2963,9 @@ function useInit({
2841
2963
  (0, import_react17.useEffect)(() => {
2842
2964
  setEndpoints(realEndpoints);
2843
2965
  }, [realEndpoints]);
2966
+ (0, import_react17.useEffect)(() => {
2967
+ setLocale(locale || "en");
2968
+ }, [locale]);
2844
2969
  (0, import_react17.useEffect)(() => {
2845
2970
  if (matchToken) {
2846
2971
  const tokenData = JSON.parse(atob(matchToken));
@@ -2913,26 +3038,429 @@ function useInit({
2913
3038
  return {
2914
3039
  loadOverview,
2915
3040
  login,
2916
- endpoints: realEndpoints
3041
+ endpoints: realEndpoints,
3042
+ locale: realLocale
2917
3043
  };
2918
3044
  }
2919
3045
 
2920
3046
  // src/MatchContext.tsx
2921
3047
  var import_react_query = require("@tanstack/react-query");
3048
+ var import_react_intl12 = require("react-intl");
3049
+
3050
+ // src/i18n/en.json
3051
+ var en_default = {
3052
+ email: "Email",
3053
+ emailAddress: "Email Address",
3054
+ emailAddressPlaceholder: "Enter Your Email Address",
3055
+ continue: "Continue",
3056
+ send: "Send",
3057
+ resend: "Resend",
3058
+ sendCodeErrorTip: "Failed to send code: {error}",
3059
+ sendEmailTips: "We have sent a verification code to your email",
3060
+ verificationCode: "Verification Code",
3061
+ codePlaceholder: "Enter the code",
3062
+ wallet: "Wallet",
3063
+ otherLoginMethods: "Other login methods",
3064
+ login: "Login",
3065
+ user: "User",
3066
+ loginTitle: "Log in / Sign up",
3067
+ loginTips: "You can use the following methods",
3068
+ passwordMinError: "Password must be at least {length} characters",
3069
+ passwordMatchError: "The password you entered twice do not match",
3070
+ passwordTitle: "Set Password",
3071
+ passwordTips: "Please set the wallet password that will be used to recover the wallet",
3072
+ password: "Password",
3073
+ passwordPlaceholder: "Enter Your Password",
3074
+ rePassword: "Re Password",
3075
+ rePasswordPlaceholder: "Re Enter the Password",
3076
+ recoverTitle: "Recover Wallet",
3077
+ recoverTips: "Please enter your password to recover your wallet",
3078
+ bindWith: "Bind with {name} Wallet",
3079
+ loginWith: "Login with {name} Wallet",
3080
+ editUsernameTitle: "Edit User Name",
3081
+ setUsernameTitle: "Set User Name",
3082
+ username: "User Name",
3083
+ usernamePlaceholder: "Enter Your User Name",
3084
+ usernameValidError: "Name can be composed of numbers and letters as well as characters",
3085
+ usernameLengthError: "No less than 2 characters",
3086
+ confirm: "Confirm",
3087
+ nextTime: "Next time",
3088
+ setUsername: "Set a User Name",
3089
+ disconnect: "Disconnect"
3090
+ };
3091
+
3092
+ // src/i18n/zh.json
3093
+ var zh_default = {
3094
+ email: "\u90AE\u7BB1",
3095
+ emailAddress: "\u90AE\u7BB1\u5730\u5740",
3096
+ emailAddressPlaceholder: "\u8BF7\u8F93\u5165\u60A8\u7684\u90AE\u7BB1\u5730\u5740",
3097
+ continue: "\u7EE7\u7EED",
3098
+ send: "\u53D1\u9001",
3099
+ resend: "\u91CD\u65B0\u53D1\u9001",
3100
+ sendCodeErrorTip: "\u53D1\u9001\u9A8C\u8BC1\u7801\u5931\u8D25\uFF1A{error}",
3101
+ sendEmailTips: "\u6211\u4EEC\u5DF2\u5411\u60A8\u7684\u90AE\u7BB1\u53D1\u9001\u9A8C\u8BC1\u7801",
3102
+ verificationCode: "\u9A8C\u8BC1\u7801",
3103
+ codePlaceholder: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801",
3104
+ wallet: "\u94B1\u5305",
3105
+ otherLoginMethods: "\u5176\u4ED6\u767B\u5F55\u65B9\u5F0F",
3106
+ login: "\u767B\u5F55",
3107
+ user: "\u7528\u6237",
3108
+ loginTitle: "\u767B\u5F55 / \u6CE8\u518C",
3109
+ loginTips: "\u60A8\u53EF\u4EE5\u4F7F\u7528\u4EE5\u4E0B\u65B9\u5F0F\u767B\u5F55",
3110
+ passwordMinError: "\u5BC6\u7801\u5FC5\u987B\u81F3\u5C11\u5305\u542B {length} \u4E2A\u5B57\u7B26",
3111
+ passwordMatchError: "\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4",
3112
+ passwordTitle: "\u8BBE\u7F6E\u5BC6\u7801",
3113
+ passwordTips: "\u8BF7\u8BBE\u7F6E\u7528\u4E8E\u6062\u590D\u94B1\u5305\u7684\u94B1\u5305\u5BC6\u7801",
3114
+ password: "\u5BC6\u7801",
3115
+ passwordPlaceholder: "\u8BF7\u8F93\u5165\u60A8\u7684\u5BC6\u7801",
3116
+ rePassword: "\u786E\u8BA4\u5BC6\u7801",
3117
+ rePasswordPlaceholder: "\u8BF7\u518D\u6B21\u8F93\u5165\u5BC6\u7801",
3118
+ recoverTitle: "\u6062\u590D\u94B1\u5305",
3119
+ recoverTips: "\u8BF7\u8F93\u5165\u60A8\u7684\u5BC6\u7801\u4EE5\u6062\u590D\u94B1\u5305",
3120
+ bindWith: "\u7ED1\u5B9A {name} \u94B1\u5305",
3121
+ loginWith: "\u4F7F\u7528 {name} \u94B1\u5305\u767B\u5F55",
3122
+ editUsernameTitle: "\u4FEE\u6539\u7528\u6237\u540D",
3123
+ setUsernameTitle: "\u8BBE\u7F6E\u7528\u6237\u540D",
3124
+ username: "\u7528\u6237\u540D",
3125
+ usernamePlaceholder: "\u8BF7\u8F93\u5165\u60A8\u7684\u7528\u6237\u540D",
3126
+ usernameValidError: "\u7528\u6237\u540D\u53EF\u4EE5\u7531\u6570\u5B57\u3001\u5B57\u6BCD\u548C\u5B57\u7B26\u7EC4\u6210",
3127
+ usernameLengthError: "\u7528\u6237\u540D\u4E0D\u5F97\u5C11\u4E8E 2 \u4E2A\u5B57\u7B26",
3128
+ confirm: "\u786E\u8BA4",
3129
+ nextTime: "\u4E0B\u6B21\u518D\u8BF4",
3130
+ setUsername: "\u8BBE\u7F6E\u7528\u6237\u540D",
3131
+ disconnect: "\u65AD\u5F00\u8FDE\u63A5"
3132
+ };
3133
+
3134
+ // src/i18n/tw.json
3135
+ var tw_default = {
3136
+ email: "\u90F5\u7BB1",
3137
+ emailAddress: "\u90F5\u7BB1\u5730\u5740",
3138
+ emailAddressPlaceholder: "\u8ACB\u8F38\u5165\u60A8\u7684\u90F5\u7BB1\u5730\u5740",
3139
+ continue: "\u7E7C\u7E8C",
3140
+ send: "\u767C\u9001",
3141
+ resend: "\u91CD\u65B0\u767C\u9001",
3142
+ sendCodeErrorTip: "\u767C\u9001\u9A57\u8B49\u78BC\u5931\u6557\uFF1A{error}",
3143
+ sendEmailTips: "\u6211\u5011\u5DF2\u5411\u60A8\u7684\u90F5\u7BB1\u767C\u9001\u9A57\u8B49\u78BC",
3144
+ verificationCode: "\u9A57\u8B49\u78BC",
3145
+ codePlaceholder: "\u8ACB\u8F38\u5165\u9A57\u8B49\u78BC",
3146
+ wallet: "\u9322\u5305",
3147
+ otherLoginMethods: "\u5176\u4ED6\u767B\u5165\u65B9\u5F0F",
3148
+ login: "\u767B\u5165",
3149
+ user: "\u7528\u6236",
3150
+ loginTitle: "\u767B\u5165 / \u8A3B\u518A",
3151
+ loginTips: "\u60A8\u53EF\u4EE5\u4F7F\u7528\u4EE5\u4E0B\u65B9\u5F0F\u767B\u5165",
3152
+ passwordMinError: "\u5BC6\u78BC\u5FC5\u9808\u81F3\u5C11\u5305\u542B {length} \u500B\u5B57\u7B26",
3153
+ passwordMatchError: "\u5169\u6B21\u8F38\u5165\u7684\u5BC6\u78BC\u4E0D\u4E00\u81F4",
3154
+ passwordTitle: "\u8A2D\u7F6E\u5BC6\u78BC",
3155
+ passwordTips: "\u8ACB\u8A2D\u7F6E\u7528\u65BC\u6062\u5FA9\u9322\u5305\u7684\u5BC6\u78BC",
3156
+ password: "\u5BC6\u78BC",
3157
+ passwordPlaceholder: "\u8ACB\u8F38\u5165\u60A8\u7684\u5BC6\u78BC",
3158
+ rePassword: "\u78BA\u8A8D\u5BC6\u78BC",
3159
+ rePasswordPlaceholder: "\u8ACB\u518D\u6B21\u8F38\u5165\u5BC6\u78BC",
3160
+ recoverTitle: "\u6062\u5FA9\u9322\u5305",
3161
+ recoverTips: "\u8ACB\u8F38\u5165\u60A8\u7684\u5BC6\u78BC\u4EE5\u6062\u5FA9\u9322\u5305",
3162
+ bindWith: "\u7D81\u5B9A {name} \u9322\u5305",
3163
+ loginWith: "\u4F7F\u7528 {name} \u9322\u5305\u767B\u5165",
3164
+ editUsernameTitle: "\u4FEE\u6539\u7528\u6236\u540D",
3165
+ setUsernameTitle: "\u8A2D\u7F6E\u7528\u6236\u540D",
3166
+ username: "\u7528\u6236\u540D",
3167
+ usernamePlaceholder: "\u8ACB\u8F38\u5165\u60A8\u7684\u7528\u6236\u540D",
3168
+ usernameValidError: "\u7528\u6236\u540D\u53EF\u4EE5\u7531\u6578\u5B57\u3001\u5B57\u6BCD\u548C\u5B57\u7B26\u7D44\u6210",
3169
+ usernameLengthError: "\u7528\u6236\u540D\u4E0D\u5F97\u5C11\u65BC 2 \u500B\u5B57\u7B26",
3170
+ confirm: "\u78BA\u8A8D",
3171
+ nextTime: "\u4E0B\u6B21\u518D\u8AAA",
3172
+ setUsername: "\u8A2D\u7F6E\u7528\u6236\u540D",
3173
+ disconnect: "\u65B7\u958B\u9023\u63A5"
3174
+ };
3175
+
3176
+ // src/i18n/fr.json
3177
+ var fr_default = {
3178
+ email: "Email",
3179
+ emailAddress: "Adresse Email",
3180
+ emailAddressPlaceholder: "Entrez votre adresse email",
3181
+ continue: "Continuer",
3182
+ send: "Envoyer",
3183
+ resend: "Renvoyer",
3184
+ sendCodeErrorTip: "\xC9chec de l'envoi du code : {error}",
3185
+ sendEmailTips: "Un code de v\xE9rification a \xE9t\xE9 envoy\xE9 \xE0 votre email",
3186
+ verificationCode: "Code de v\xE9rification",
3187
+ codePlaceholder: "Entrez le code",
3188
+ wallet: "Portefeuille",
3189
+ otherLoginMethods: "Autres m\xE9thodes de connexion",
3190
+ login: "Connexion",
3191
+ user: "Utilisateur",
3192
+ loginTitle: "Connexion / Inscription",
3193
+ loginTips: "Vous pouvez utiliser les m\xE9thodes suivantes",
3194
+ passwordMinError: "Le mot de passe doit contenir au moins {length} caract\xE8res",
3195
+ passwordMatchError: "Les mots de passe ne correspondent pas",
3196
+ passwordTitle: "D\xE9finir un mot de passe",
3197
+ passwordTips: "Veuillez d\xE9finir le mot de passe pour restaurer le portefeuille",
3198
+ password: "Mot de passe",
3199
+ passwordPlaceholder: "Entrez votre mot de passe",
3200
+ rePassword: "Confirmer le mot de passe",
3201
+ rePasswordPlaceholder: "Ressaisissez le mot de passe",
3202
+ recoverTitle: "Restaurer le portefeuille",
3203
+ recoverTips: "Entrez votre mot de passe pour restaurer le portefeuille",
3204
+ bindWith: "Lier avec le portefeuille {name}",
3205
+ loginWith: "Connexion avec le portefeuille {name}",
3206
+ editUsernameTitle: "Modifier le nom d'utilisateur",
3207
+ setUsernameTitle: "D\xE9finir un nom d'utilisateur",
3208
+ username: "Nom d'utilisateur",
3209
+ usernamePlaceholder: "Entrez votre nom d'utilisateur",
3210
+ usernameValidError: "Le nom peut contenir des lettres, chiffres et caract\xE8res",
3211
+ usernameLengthError: "Le nom doit comporter au moins 2 caract\xE8res",
3212
+ confirm: "Confirmer",
3213
+ nextTime: "La prochaine fois",
3214
+ setUsername: "D\xE9finir un nom d'utilisateur",
3215
+ disconnect: "D\xE9connecter"
3216
+ };
3217
+
3218
+ // src/i18n/ja.json
3219
+ var ja_default = {
3220
+ email: "\u30E1\u30FC\u30EB",
3221
+ emailAddress: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",
3222
+ emailAddressPlaceholder: "\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
3223
+ continue: "\u7D9A\u3051\u308B",
3224
+ send: "\u9001\u4FE1",
3225
+ resend: "\u518D\u9001\u4FE1",
3226
+ sendCodeErrorTip: "\u30B3\u30FC\u30C9\u9001\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F: {error}",
3227
+ sendEmailTips: "\u78BA\u8A8D\u30B3\u30FC\u30C9\u3092\u30E1\u30FC\u30EB\u306B\u9001\u4FE1\u3057\u307E\u3057\u305F",
3228
+ verificationCode: "\u78BA\u8A8D\u30B3\u30FC\u30C9",
3229
+ codePlaceholder: "\u30B3\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
3230
+ wallet: "\u30A6\u30A9\u30EC\u30C3\u30C8",
3231
+ otherLoginMethods: "\u305D\u306E\u4ED6\u306E\u30ED\u30B0\u30A4\u30F3\u65B9\u6CD5",
3232
+ login: "\u30ED\u30B0\u30A4\u30F3",
3233
+ user: "\u30E6\u30FC\u30B6\u30FC",
3234
+ loginTitle: "\u30ED\u30B0\u30A4\u30F3 / \u767B\u9332",
3235
+ loginTips: "\u4EE5\u4E0B\u306E\u65B9\u6CD5\u3067\u30ED\u30B0\u30A4\u30F3\u3067\u304D\u307E\u3059",
3236
+ passwordMinError: "\u30D1\u30B9\u30EF\u30FC\u30C9\u306F\u6700\u4F4E {length} \u6587\u5B57\u5FC5\u8981\u3067\u3059",
3237
+ passwordMatchError: "\u5165\u529B\u3055\u308C\u305F\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093",
3238
+ passwordTitle: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8A2D\u5B9A",
3239
+ passwordTips: "\u30A6\u30A9\u30EC\u30C3\u30C8\u5FA9\u5143\u7528\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
3240
+ password: "\u30D1\u30B9\u30EF\u30FC\u30C9",
3241
+ passwordPlaceholder: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
3242
+ rePassword: "\u30D1\u30B9\u30EF\u30FC\u30C9\u78BA\u8A8D",
3243
+ rePasswordPlaceholder: "\u518D\u5EA6\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
3244
+ recoverTitle: "\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u5FA9\u5143",
3245
+ recoverTips: "\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u5165\u529B\u3057\u3066\u30A6\u30A9\u30EC\u30C3\u30C8\u3092\u5FA9\u5143\u3057\u3066\u304F\u3060\u3055\u3044",
3246
+ bindWith: "{name}\u30A6\u30A9\u30EC\u30C3\u30C8\u3068\u9023\u643A",
3247
+ loginWith: "{name}\u30A6\u30A9\u30EC\u30C3\u30C8\u3067\u30ED\u30B0\u30A4\u30F3",
3248
+ editUsernameTitle: "\u30E6\u30FC\u30B6\u30FC\u540D\u3092\u7DE8\u96C6",
3249
+ setUsernameTitle: "\u30E6\u30FC\u30B6\u30FC\u540D\u3092\u8A2D\u5B9A",
3250
+ username: "\u30E6\u30FC\u30B6\u30FC\u540D",
3251
+ usernamePlaceholder: "\u30E6\u30FC\u30B6\u30FC\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
3252
+ usernameValidError: "\u540D\u524D\u306F\u6587\u5B57\u3001\u6570\u5B57\u3001\u8A18\u53F7\u3067\u69CB\u6210\u3067\u304D\u307E\u3059",
3253
+ usernameLengthError: "2\u6587\u5B57\u4EE5\u4E0A\u3067\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044",
3254
+ confirm: "\u78BA\u8A8D",
3255
+ nextTime: "\u6B21\u56DE",
3256
+ setUsername: "\u30E6\u30FC\u30B6\u30FC\u540D\u3092\u8A2D\u5B9A",
3257
+ disconnect: "\u5207\u65AD"
3258
+ };
3259
+
3260
+ // src/i18n/ko.json
3261
+ var ko_default = {
3262
+ email: "\uC774\uBA54\uC77C",
3263
+ emailAddress: "\uC774\uBA54\uC77C \uC8FC\uC18C",
3264
+ emailAddressPlaceholder: "\uC774\uBA54\uC77C \uC8FC\uC18C\uB97C \uC785\uB825\uD558\uC138\uC694",
3265
+ continue: "\uACC4\uC18D\uD558\uAE30",
3266
+ send: "\uBCF4\uB0B4\uAE30",
3267
+ resend: "\uC7AC\uC804\uC1A1",
3268
+ sendCodeErrorTip: "\uCF54\uB4DC \uC804\uC1A1 \uC2E4\uD328: {error}",
3269
+ sendEmailTips: "\uC778\uC99D \uCF54\uB4DC\uB97C \uC774\uBA54\uC77C\uB85C \uBCF4\uB0C8\uC2B5\uB2C8\uB2E4",
3270
+ verificationCode: "\uC778\uC99D \uCF54\uB4DC",
3271
+ codePlaceholder: "\uCF54\uB4DC\uB97C \uC785\uB825\uD558\uC138\uC694",
3272
+ wallet: "\uC9C0\uAC11",
3273
+ otherLoginMethods: "\uB2E4\uB978 \uB85C\uADF8\uC778 \uBC29\uBC95",
3274
+ login: "\uB85C\uADF8\uC778",
3275
+ user: "\uC0AC\uC6A9\uC790",
3276
+ loginTitle: "\uB85C\uADF8\uC778 / \uD68C\uC6D0\uAC00\uC785",
3277
+ loginTips: "\uB2E4\uC74C \uBC29\uBC95\uC73C\uB85C \uB85C\uADF8\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4",
3278
+ passwordMinError: "\uBE44\uBC00\uBC88\uD638\uB294 \uCD5C\uC18C {length}\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4",
3279
+ passwordMatchError: "\uB450 \uBE44\uBC00\uBC88\uD638\uAC00 \uC77C\uCE58\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4",
3280
+ passwordTitle: "\uBE44\uBC00\uBC88\uD638 \uC124\uC815",
3281
+ passwordTips: "\uC9C0\uAC11 \uBCF5\uAD6C\uC5D0 \uC0AC\uC6A9\uD560 \uBE44\uBC00\uBC88\uD638\uB97C \uC124\uC815\uD558\uC138\uC694",
3282
+ password: "\uBE44\uBC00\uBC88\uD638",
3283
+ passwordPlaceholder: "\uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD558\uC138\uC694",
3284
+ rePassword: "\uBE44\uBC00\uBC88\uD638 \uD655\uC778",
3285
+ rePasswordPlaceholder: "\uBE44\uBC00\uBC88\uD638\uB97C \uB2E4\uC2DC \uC785\uB825\uD558\uC138\uC694",
3286
+ recoverTitle: "\uC9C0\uAC11 \uBCF5\uAD6C",
3287
+ recoverTips: "\uBE44\uBC00\uBC88\uD638\uB97C \uC785\uB825\uD574 \uC9C0\uAC11\uC744 \uBCF5\uAD6C\uD558\uC138\uC694",
3288
+ bindWith: "{name} \uC9C0\uAC11\uACFC \uC5F0\uACB0",
3289
+ loginWith: "{name} \uC9C0\uAC11\uC73C\uB85C \uB85C\uADF8\uC778",
3290
+ editUsernameTitle: "\uC0AC\uC6A9\uC790 \uC774\uB984 \uC218\uC815",
3291
+ setUsernameTitle: "\uC0AC\uC6A9\uC790 \uC774\uB984 \uC124\uC815",
3292
+ username: "\uC0AC\uC6A9\uC790 \uC774\uB984",
3293
+ usernamePlaceholder: "\uC0AC\uC6A9\uC790 \uC774\uB984\uC744 \uC785\uB825\uD558\uC138\uC694",
3294
+ usernameValidError: "\uC774\uB984\uC740 \uBB38\uC790, \uC22B\uC790 \uBC0F \uD2B9\uC218\uBB38\uC790\uB85C \uAD6C\uC131\uB420 \uC218 \uC788\uC2B5\uB2C8\uB2E4",
3295
+ usernameLengthError: "\uC774\uB984\uC740 \uCD5C\uC18C 2\uC790 \uC774\uC0C1\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4",
3296
+ confirm: "\uD655\uC778",
3297
+ nextTime: "\uB2E4\uC74C\uC5D0",
3298
+ setUsername: "\uC0AC\uC6A9\uC790 \uC774\uB984 \uC124\uC815",
3299
+ disconnect: "\uC5F0\uACB0 \uB04A\uAE30"
3300
+ };
3301
+
3302
+ // src/i18n/vi.json
3303
+ var vi_default = {
3304
+ email: "Email",
3305
+ emailAddress: "\u0110\u1ECBa ch\u1EC9 Email",
3306
+ emailAddressPlaceholder: "Nh\u1EADp \u0111\u1ECBa ch\u1EC9 Email c\u1EE7a b\u1EA1n",
3307
+ continue: "Ti\u1EBFp t\u1EE5c",
3308
+ send: "G\u1EEDi",
3309
+ resend: "G\u1EEDi l\u1EA1i",
3310
+ sendCodeErrorTip: "G\u1EEDi m\xE3 th\u1EA5t b\u1EA1i: {error}",
3311
+ sendEmailTips: "Ch\xFAng t\xF4i \u0111\xE3 g\u1EEDi m\xE3 x\xE1c minh \u0111\u1EBFn email c\u1EE7a b\u1EA1n",
3312
+ verificationCode: "M\xE3 x\xE1c minh",
3313
+ codePlaceholder: "Nh\u1EADp m\xE3",
3314
+ wallet: "V\xED",
3315
+ otherLoginMethods: "Ph\u01B0\u01A1ng th\u1EE9c \u0111\u0103ng nh\u1EADp kh\xE1c",
3316
+ login: "\u0110\u0103ng nh\u1EADp",
3317
+ user: "Ng\u01B0\u1EDDi d\xF9ng",
3318
+ loginTitle: "\u0110\u0103ng nh\u1EADp / \u0110\u0103ng k\xFD",
3319
+ loginTips: "B\u1EA1n c\xF3 th\u1EC3 s\u1EED d\u1EE5ng c\xE1c ph\u01B0\u01A1ng th\u1EE9c sau",
3320
+ passwordMinError: "M\u1EADt kh\u1EA9u ph\u1EA3i c\xF3 \xEDt nh\u1EA5t {length} k\xFD t\u1EF1",
3321
+ passwordMatchError: "Hai m\u1EADt kh\u1EA9u kh\xF4ng kh\u1EDBp",
3322
+ passwordTitle: "T\u1EA1o m\u1EADt kh\u1EA9u",
3323
+ passwordTips: "Vui l\xF2ng \u0111\u1EB7t m\u1EADt kh\u1EA9u \u0111\u1EC3 kh\xF4i ph\u1EE5c v\xED",
3324
+ password: "M\u1EADt kh\u1EA9u",
3325
+ passwordPlaceholder: "Nh\u1EADp m\u1EADt kh\u1EA9u c\u1EE7a b\u1EA1n",
3326
+ rePassword: "X\xE1c nh\u1EADn m\u1EADt kh\u1EA9u",
3327
+ rePasswordPlaceholder: "Nh\u1EADp l\u1EA1i m\u1EADt kh\u1EA9u",
3328
+ recoverTitle: "Kh\xF4i ph\u1EE5c v\xED",
3329
+ recoverTips: "Nh\u1EADp m\u1EADt kh\u1EA9u \u0111\u1EC3 kh\xF4i ph\u1EE5c v\xED",
3330
+ bindWith: "Li\xEAn k\u1EBFt v\u1EDBi v\xED {name}",
3331
+ loginWith: "\u0110\u0103ng nh\u1EADp b\u1EB1ng v\xED {name}",
3332
+ editUsernameTitle: "Ch\u1EC9nh s\u1EEDa t\xEAn ng\u01B0\u1EDDi d\xF9ng",
3333
+ setUsernameTitle: "\u0110\u1EB7t t\xEAn ng\u01B0\u1EDDi d\xF9ng",
3334
+ username: "T\xEAn ng\u01B0\u1EDDi d\xF9ng",
3335
+ usernamePlaceholder: "Nh\u1EADp t\xEAn ng\u01B0\u1EDDi d\xF9ng c\u1EE7a b\u1EA1n",
3336
+ usernameValidError: "T\xEAn ch\u1EC9 \u0111\u01B0\u1EE3c ch\u1EE9a ch\u1EEF, s\u1ED1 v\xE0 k\xFD t\u1EF1",
3337
+ usernameLengthError: "T\xEAn ph\u1EA3i d\xE0i \xEDt nh\u1EA5t 2 k\xFD t\u1EF1",
3338
+ confirm: "X\xE1c nh\u1EADn",
3339
+ nextTime: "L\u1EA7n sau",
3340
+ setUsername: "\u0110\u1EB7t t\xEAn ng\u01B0\u1EDDi d\xF9ng",
3341
+ disconnect: "Ng\u1EAFt k\u1EBFt n\u1ED1i"
3342
+ };
3343
+
3344
+ // src/i18n/es.json
3345
+ var es_default = {
3346
+ email: "Correo",
3347
+ emailAddress: "Direcci\xF3n de correo",
3348
+ emailAddressPlaceholder: "Introduce tu direcci\xF3n de correo",
3349
+ continue: "Continuar",
3350
+ send: "Enviar",
3351
+ resend: "Reenviar",
3352
+ sendCodeErrorTip: "Error al enviar el c\xF3digo: {error}",
3353
+ sendEmailTips: "Hemos enviado un c\xF3digo de verificaci\xF3n a tu correo",
3354
+ verificationCode: "C\xF3digo de verificaci\xF3n",
3355
+ codePlaceholder: "Introduce el c\xF3digo",
3356
+ wallet: "Cartera",
3357
+ otherLoginMethods: "Otros m\xE9todos de inicio de sesi\xF3n",
3358
+ login: "Iniciar sesi\xF3n",
3359
+ user: "Usuario",
3360
+ loginTitle: "Iniciar sesi\xF3n / Registrarse",
3361
+ loginTips: "Puedes usar los siguientes m\xE9todos",
3362
+ passwordMinError: "La contrase\xF1a debe tener al menos {length} caracteres",
3363
+ passwordMatchError: "Las contrase\xF1as no coinciden",
3364
+ passwordTitle: "Establecer contrase\xF1a",
3365
+ passwordTips: "Configura la contrase\xF1a para recuperar tu cartera",
3366
+ password: "Contrase\xF1a",
3367
+ passwordPlaceholder: "Introduce tu contrase\xF1a",
3368
+ rePassword: "Confirmar contrase\xF1a",
3369
+ rePasswordPlaceholder: "Repite la contrase\xF1a",
3370
+ recoverTitle: "Recuperar cartera",
3371
+ recoverTips: "Introduce tu contrase\xF1a para recuperar la cartera",
3372
+ bindWith: "Vincular con la cartera {name}",
3373
+ loginWith: "Iniciar sesi\xF3n con la cartera {name}",
3374
+ editUsernameTitle: "Editar nombre de usuario",
3375
+ setUsernameTitle: "Establecer nombre de usuario",
3376
+ username: "Nombre de usuario",
3377
+ usernamePlaceholder: "Introduce tu nombre de usuario",
3378
+ usernameValidError: "El nombre puede contener letras, n\xFAmeros y caracteres",
3379
+ usernameLengthError: "El nombre debe tener al menos 2 caracteres",
3380
+ confirm: "Confirmar",
3381
+ nextTime: "La pr\xF3xima vez",
3382
+ setUsername: "Establecer nombre de usuario",
3383
+ disconnect: "Desconectar"
3384
+ };
3385
+
3386
+ // src/i18n/pt.json
3387
+ var pt_default = {
3388
+ email: "Email",
3389
+ emailAddress: "Endere\xE7o de Email",
3390
+ emailAddressPlaceholder: "Digite seu endere\xE7o de email",
3391
+ continue: "Continuar",
3392
+ send: "Enviar",
3393
+ resend: "Reenviar",
3394
+ sendCodeErrorTip: "Falha ao enviar c\xF3digo: {error}",
3395
+ sendEmailTips: "Enviamos um c\xF3digo de verifica\xE7\xE3o para seu email",
3396
+ verificationCode: "C\xF3digo de Verifica\xE7\xE3o",
3397
+ codePlaceholder: "Digite o c\xF3digo",
3398
+ wallet: "Carteira",
3399
+ otherLoginMethods: "Outros m\xE9todos de login",
3400
+ login: "Entrar",
3401
+ user: "Usu\xE1rio",
3402
+ loginTitle: "Entrar / Registrar",
3403
+ loginTips: "Voc\xEA pode usar os m\xE9todos abaixo",
3404
+ passwordMinError: "A senha deve ter pelo menos {length} caracteres",
3405
+ passwordMatchError: "As senhas digitadas n\xE3o coincidem",
3406
+ passwordTitle: "Definir Senha",
3407
+ passwordTips: "Configure uma senha para recuperar sua carteira",
3408
+ password: "Senha",
3409
+ passwordPlaceholder: "Digite sua senha",
3410
+ rePassword: "Confirmar Senha",
3411
+ rePasswordPlaceholder: "Digite a senha novamente",
3412
+ recoverTitle: "Recuperar Carteira",
3413
+ recoverTips: "Digite sua senha para recuperar a carteira",
3414
+ bindWith: "Vincular com Carteira {name}",
3415
+ loginWith: "Entrar com Carteira {name}",
3416
+ editUsernameTitle: "Editar Nome de Usu\xE1rio",
3417
+ setUsernameTitle: "Definir Nome de Usu\xE1rio",
3418
+ username: "Nome de Usu\xE1rio",
3419
+ usernamePlaceholder: "Digite seu nome de usu\xE1rio",
3420
+ usernameValidError: "O nome pode conter letras, n\xFAmeros e caracteres",
3421
+ usernameLengthError: "Deve ter no m\xEDnimo 2 caracteres",
3422
+ confirm: "Confirmar",
3423
+ nextTime: "Pr\xF3xima vez",
3424
+ setUsername: "Definir Nome de Usu\xE1rio",
3425
+ disconnect: "Desconectar"
3426
+ };
3427
+
3428
+ // src/i18n/index.ts
3429
+ var messages = {
3430
+ en: en_default,
3431
+ zh: zh_default,
3432
+ tw: tw_default,
3433
+ fr: fr_default,
3434
+ ja: ja_default,
3435
+ ko: ko_default,
3436
+ vi: vi_default,
3437
+ es: es_default,
3438
+ pt: pt_default
3439
+ };
3440
+
3441
+ // src/MatchContext.tsx
2922
3442
  var import_jsx_runtime57 = require("react/jsx-runtime");
2923
3443
  var queryClient = new import_react_query.QueryClient();
2924
3444
  var MatchContext = (0, import_react18.createContext)(void 0);
2925
- var MatchProvider = ({ children, appid, events, theme = "light", endpoints }) => {
2926
- const { loadOverview, login, endpoints: realEndPoints } = useInit({
3445
+ var MatchProvider = ({ children, appid, events, theme = "light", endpoints, locale }) => {
3446
+ const { loadOverview, login, endpoints: realEndPoints, locale: realLocale } = useInit({
2927
3447
  theme,
2928
3448
  appid,
2929
3449
  events,
2930
- endpoints
3450
+ endpoints,
3451
+ locale
3452
+ });
3453
+ matchlog_default.log("config", {
3454
+ appid,
3455
+ theme,
3456
+ endpoints,
3457
+ locale,
3458
+ realLocale
2931
3459
  });
2932
3460
  useWalletInit({
2933
3461
  refreshOverview: loadOverview
2934
3462
  });
2935
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_query.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
3463
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_intl12.IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_query.QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
2936
3464
  MatchContext.Provider,
2937
3465
  {
2938
3466
  value: {
@@ -2940,11 +3468,12 @@ var MatchProvider = ({ children, appid, events, theme = "light", endpoints }) =>
2940
3468
  endpoints: realEndPoints,
2941
3469
  events,
2942
3470
  login,
2943
- theme
3471
+ theme,
3472
+ locale: realLocale
2944
3473
  },
2945
3474
  children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(context_default, { children })
2946
3475
  }
2947
- ) });
3476
+ ) }) });
2948
3477
  };
2949
3478
  var useMatch = () => {
2950
3479
  const context = (0, import_react18.useContext)(MatchContext);