@verified-network/verified-custody 0.4.6 → 0.4.8

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/style.css","../src/iosShim.ts","../src/polyfillCryptoRN.ts","../src/pages/platform.tsx","../src/utils/constants.ts","../src/pages/globalStyle.tsx","../src/pages/index.tsx","../src/services/store.tsx","../src/pages/ftu.tsx","../src/utils/helpers.tsx","../src/utils/config.ts","../src/lib/biconomyRNFix.ts","../src/lib/abi/boostrap.json","../src/lib/abi/factory.json","../src/pages/contact.tsx","../src/components/slider.tsx","../src/components/search.tsx","../src/components/overlays.tsx","../src/pages/otp.tsx","../src/services/contracts.ts","../src/pages/createPin.tsx","../src/components/success.tsx","../src/pages/addCosigners.tsx","../src/pages/enterPin.tsx"],"sourcesContent":["\nfunction injectStyle(css) {\n if (!css || typeof document === 'undefined') return\n\n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if(head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n\n if(style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n}\ninjectStyle(\"textarea:focus,input:focus{outline:none;border:none}input{appearance:textfield;-moz-appearance:textfield;outline:none;border:none;margin:0}input::placeholder{margin:0}input[type=password]::-ms-reveal{display:none}input[type=password]::-moz-password-toggle{display:none}input[type=password]::-webkit-contacts-auto-fill-button{display:none}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}::-webkit-scrollbar{width:5px;height:4px}::-webkit-scrollbar-thumb{height:4px;width:5px;background-color:var(--Neutral-200, #d8d9df);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--Neutral-200, #d8d9df)}::-webkit-scrollbar-track{background:transparent;height:4px;width:5px;cursor:pointer}p{margin:0}.verified-custd-mdl-container{width:100%;height:100%;display:flex;justify-content:center;padding-bottom:20px;overflow-y:auto;overflow-x:hidden;position:relative}.verified-custd-mdl-startup-outter{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#643fff,#381ab7)}.verified-custd-mdl-startup-outter-norm{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:var(--common-white_states-main, #fff)}.verified-custd-mdl-startup{width:650px;height:fit-content;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-x:hidden;overflow-y:auto;padding-bottom:20px;border:1px solid #0F122E;border-radius:10px;position:relative}.verified-custd-mdl-loading-screen{width:100vh;border-radius:10px;width:100%;flex-shrink:0;background:#0000004d;z-index:100;display:flex;justify-content:center;align-items:center;overflow:auto;position:absolute;inset:0}.verified-custd-mdl-startup-icon-container{width:76.119%;display:flex;justify-content:center;align-items:center;position:relative;flex-direction:column;height:298px}.verified-custd-mdl-startup-icon-shadow{position:absolute;bottom:10px;right:70px;width:48.5%}.verified-custd-mdl-startup-text-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:12px;margin-right:20px;margin-left:20px}.verified-custd-mdl-startup-text-header{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Manrope;font-size:2.1rem;font-style:normal;font-weight:700;line-height:2.8125rem;margin:0}.verified-custd-mdl-startup-text-footer{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Roboto;font-size:.9rem;font-style:normal;font-weight:400;line-height:1.5rem;opacity:.8}.verified-custd-mdl-ftu-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;margin:20px;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none}.verified-custd-mdl-startup-language{background:var(--common-white_states-main, #fff);height:100%;width:100%}.verified-custd-mdl-startup-language-content-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:32px;width:100%}.verified-custd-mdl-st-language-content{display:flex;flex-direction:column;align-items:flex-start;gap:20px;align-self:stretch;width:100%}.verified-custd-mdl-st-language-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1.5rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch}.verified-custd-mdl-ms-search-content:hover{border-radius:var(--space-8px, 8px);border:1px solid var(--secondary-electric-violet-300, #9da3ff);background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-st-contact-input{display:flex;flex-direction:column;align-items:flex-start;gap:14px;width:90%}.verified-custd-mdl-st-contact-first-section{display:flex;width:150px;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-selection-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;border-radius:24px;cursor:pointer;user-select:none;overflow:hidden;width:28px;height:28px}.verified-custd-mdl-st-contact-selection-text{color:var(--Neutral-950, #0c0c0e);text-align:right;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:500;line-height:140%;width:40px;flex-shrink:0;cursor:pointer;user-select:none}.verified-custd-mdl-custom-blank-page{height:0}.verified-custd-mdl-startup-otp-text{display:flex;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-startup-otp-header-text{align-self:stretch;color:var(--Neutral-600, #5b5d6e);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:400;line-height:150%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-group{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-otp-input{display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-input-red{border-radius:8px;border:1px solid var(--Error-600, #E23636);background:var(--Neutral-50, #F7F7F8);display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-incorrect-text{color:var(--Error-600, #E23636);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:140%;max-width:200px;word-wrap:break-word}.verified-custd-mdl-otp-timer{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-otp-timer-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-timer-text-red{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text-active{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%;cursor:pointer;user-select:none}.verified-custd-mdl-st-otp-icon{cursor:pointer;user-select:none}.verified-custd-mdl-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;opacity:.5;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-startup-button-active{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-otp-input[type=password]{font-weight:900}.verified-custd-mdl-startup-button-click{border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-950, #0c0c0e);cursor:pointer;user-select:none;display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;width:90%;background:transparent;max-width:500px}.verified-custd-mdl-pin-input-container-text{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-button-text{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-slider{display:flex;width:335px;align-items:center;gap:12px;border-radius:4px;width:100%}.verified-custd-mdl-startup-slider-line{height:4px;flex-shrink:0;border-radius:var(--space-8px, 8px);background:var(--Neutral-100, #eeeef0)}.verified-custd-mdl-startup-slider-line-active{height:4px;flex:1 0 0;border-radius:var(--space-8px, 8px);background:var(--secondary-electric-violet-600, #603ff4)}.verified-custd-mdl-startup-contact{display:inline-flex;flex-direction:column;align-items:flex-start;gap:20px;width:100%}.verified-custd-mdl-startup-contact-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-startup-contact-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch;max-width:100%;word-wrap:break-word}.verified-custd-mdl-st-contact-content-container{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-st-contact-dropdown{cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-second-section{display:flex;width:100%;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-contact-second-section::placeholder{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-startup-contact-footer{display:inline-flex;flex-direction:column;align-items:center;gap:12px;width:100%;margin-top:16px}.verified-custd-mdl-st-contact-footer-first-section{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%}.verified-custd-mdl-st-contact-footer-second-section{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.verified-custd-mdl-st-contact-input-error{display:flex;align-items:center;gap:4px}.verified-custd-mdl-input-error-text{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;margin:0}.verified-custd-mdl-mobille-startup-search-box-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-mobile-startup-search-box{display:flex;height:40px;align-items:center;gap:6px;border-radius:6px;border:1px solid var(--Neutral-200, #d8d9df);background:var(--Neutral-50, #f7f7f8);width:100%;overflow:hidden}.verified-custd-mdl-ms-search-box-content{height:100%;width:100%;background:transparent;color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-ms-search-box-content::placeholder{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-mobile-startup-search-content{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:16px;border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-50, #f7f7f8);background:var(--common-white_states-main, #fff)}.verified-custd-mdl-ms-search-content-container{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;overflow-x:hidden;overflow-y:auto}.verified-custd-mdl-ms-search-content{display:flex;padding:var(--space-8px, 8px);align-items:center;gap:19px;align-self:stretch;cursor:pointer;user-select:none;height:34px;margin-bottom:5px;border:1px solid transparent}.verified-custd-mdl-ms-search-content-active{display:flex;padding:var(--space-8px, 8px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:6px;background:var(--Success-50, #f1f8ed);cursor:pointer;user-select:none}.verified-custd-mdl-ms-search-content-text-container{display:flex;align-items:center;gap:19px}.verified-custd-mdl-ms-search-content-icon{display:flex;width:28px;height:28px;justify-content:center;align-items:center;border-radius:24px;border:1px solid rgba(0,0,0,.05);background:var(--common-white_states-main, #fff);box-shadow:0 1px 4px #eee}.verified-custd-mdl-ms-search-content-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.775rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-terms-and-condition{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:450;line-height:140%}.verified-custd-mdl-privacy{display:flex;align-items:center;gap:4px;margin-bottom:20px}.verified-custd-mdl-privacy-text{color:var(--Neutral-800, #40414c);font-family:Roboto;font-size:.5rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:.01563rem}.verified-custd-mdl-p-p-payment-portal-amount-info-separator{display:flex;align-items:center;gap:6px;align-self:stretch;justify-content:center}.verified-custd-mdl-p-p-payment-portal-line{width:50%;height:1px;background:#eeeef0}.verified-custd-mdl-p-payment-portal-separator-text{color:var(--Neutral-700, #4a4a5a);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;opacity:.6}.verified-custd-mdl-startup-otp-footer{display:flex;align-items:center;gap:4px;width:100%;overflow:hidden}.verified-custd-mdl-startup-otp-footer-text{color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:.8rem;font-style:normal;font-weight:600;line-height:100%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-general-web-toast-error{display:flex;align-items:center;gap:12px}.verified-custd-mdl-general-web-toast-error-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-error-title{margin:0;color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:1rem;font-style:normal;font-weight:600;line-height:100%;align-self:stretch}.verified-custd-mdl-general-web-toast-error-label{align-self:stretch;color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-general-web-toast-success{display:flex;padding:12px;justify-content:space-between;align-items:center;align-self:stretch;border-radius:8px;background:var(--Success-50, #f1f8ed);width:100%;height:55px;max-height:55px}.verified-custd-mdl-general-web-toast-success-cont{display:flex;align-items:center;gap:12px;width:100%}.verified-custd-mdl-general-web-toast-success-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-success-link{display:flex;align-items:center}.verified-custd-mdl-general-web-toast-success-link-text{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.verified-custd-mdl-success-popup-content-container{display:flex;width:28.4375%;padding:24px;flex-direction:column;align-items:center;background:var(--common-white_states-main, #fff);box-shadow:0 4px 19px #0000001f;height:100%}.verified-custd-mdl-success-popup-content{display:flex;width:100%;flex-direction:column;align-items:center;gap:32px}.verified-custd-mdl-success-popup-content-text{display:flex;flex-direction:column;align-items:center;gap:12px;align-self:stretch}.verified-custd-mdl-success-popup-content-text-header{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Manrope;font-size:1.5rem;font-style:normal;font-weight:800;line-height:140%}.verified-custd-mdl-success-popup-content-text-footer{color:var(--Neutral-600, #5b5d6e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-icon{width:90%;max-width:90%;max-height:250px;height:250px}.verified-custd-mdl-add-cosigner-body{display:inline-flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-body-text-cont{display:flex;align-items:center;gap:10px;width:100%}.verified-custd-mdl-add-cosigner-body-text-icon{display:flex;padding:8px;align-items:center;gap:10px;border-radius:24px;background:var(--secondary-electric-violet-200, #C2C7FF);overflow:hidden;justify-content:center;width:20px;height:20px}.verified-custd-mdl-add-cosigner-body-text-label{width:76.1%;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-text-label-bold{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-buttons-cont{display:inline-flex;padding:10px;align-items:flex-start;gap:10px;background:transparent;display:flex;justify-content:space-between}.verified-custd-mdl-add-cosigner-button-neut{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;background:transparent;border-radius:8px;border:1px solid var(--Neutral-950, #0C0C0E);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-button-action{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;border-radius:8px;background:var(--primary-bitter-lemon-500, #CFE600);border:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-more-body{display:inline-flex;padding:15px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-more-header-cont{display:flex;flex-direction:column;align-items:flex-start;gap:32px}.verified-custd-mdl-add-cosigner-more-title-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-add-cosigner-header-text{align-self:stretch;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-more-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:18px;font-style:normal;font-weight:700;line-height:120%;margin:0}.verified-custd-mdl-add-cosigner-more-label{color:var(--Neutral-700, #4A4A5A);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-more-label-link{align-self:stretch;color:var(--secondary-electric-violet-700, #4E2BD7);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer;margin:0}.verified-custd-mdl-add-cosigner-header-info-cont{display:flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:8px;background:var(--Accent-100, #FFF9C1)}.verified-custd-mdl-add-cosigner-header-info-text{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-header-info-text-bold{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:700;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:20px}.verified-custd-mdl-add-cosigner-step2-body-header{display:flex;width:100%;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-step2-body-header-first-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:.8rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-body-header-second-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:100%}.verified-custd-mdl-add-cosigner-step2-body-content-header{display:flex;padding-top:14px;justify-content:center;align-items:center;position:relative;width:100%;flex-direction:column}.verified-custd-mdl-add-cosigner-step2-body-content-header-cont{display:flex;width:100%;padding:12px;flex-direction:column;align-items:flex-start;gap:16px}.verified-custd-mdl-add-cosigner-step2-body-content-header-label{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;position:absolute;left:12px;top:-14px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-body-content-header-label-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-body-content-header-body{justify-content:space-between;align-self:stretch;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-50, #F7F7F8);position:relative;display:flex;padding:12px;align-items:flex-start;gap:16px}.verified-custd-mdl-a-c-2-b-content-header-body-header-cont{display:flex;align-items:center;gap:12px;width:100%}.verified-custd-mdl-a-c-2-b-content-header-body-header{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-a-c-2-b-content-header-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;margin:0;max-width:150px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-label{color:var(--Neutral-400, #8F91A1);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;max-width:200px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-button{display:flex;padding:5.5px 8px;justify-content:center;align-items:center;gap:10px;border-radius:6px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content-footer{display:flex;align-items:center;gap:4px;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text{color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-body{display:flex;padding:15px;flex-direction:column;align-items:flex-start;gap:16px;border-radius:8px;border:1px solid var(--Neutral-200, #D8D9DF);min-width:90%;margin-bottom:20px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first{display:flex;justify-content:space-between;align-items:center;align-self:stretch;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first-header{display:flex;align-items:flex-end;gap:5px}.verified-custd-mdl-add-cosigner-step2-add-more-first-header-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-add-more-second{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-second-input{display:flex;padding:12px;align-items:center;gap:182px;align-self:stretch;border-radius:8px;background:var(--Neutral-50, #F7F7F8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-third{display:flex;align-items:flex-start;gap:24px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont{display:flex;align-items:center;gap:4px}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:13px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-buttons{display:flex;align-items:flex-start;gap:16px;align-self:stretch;width:100%;background:transparent}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut{width:50%;display:flex;padding:7.5px 12px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;background:transparent;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-action{width:50%;display:flex;padding:6px 8px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;align-self:stretch;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-second-input::placeholder{color:var(--Neutral-300, #B6B7C3);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-confirm-body-content{display:flex;padding-top:20px;padding-bottom:20px;flex-direction:column;justify-content:flex-start;align-items:center;gap:61px;border-radius:8px 8px 0 0;background:var(--Neutral-White-100, #FFF);width:100%;max-height:62.7%}.verified-custd-mdl-add-cosigner-confirm-body-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:90%}.verified-custd-mdl-add-cosigner-confirm-body-header{display:flex;flex-direction:column;align-items:center;gap:16px}.verified-custd-mdl-add-cosigner-confirm-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:16px;font-style:normal;font-weight:700;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-label{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer{display:flex;width:90%;padding:15px 15px 5px;flex-direction:column;align-items:flex-start;gap:5px;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-White-100, #FFF)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont{width:100%;flex-direction:row;background:transparent;display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind{display:flex;flex-direction:column;align-items:center;gap:-6px;border-radius:2px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-600, #603FF4)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text{color:var(--Neutral-White-100, #FFF);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont{width:100%;height:51px}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont{width:98%;height:16px;flex-shrink:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider{width:100%;height:5px;flex-shrink:0;border-radius:10px;background:var(--Neutral-100, #EEEEF0)}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind{height:5px;flex-shrink:0;border-radius:10px;background:var(--secondary-electric-violet-600, #603FF4);position:relative}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon{flex-shrink:0;position:absolute;top:-5px;right:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont{display:flex;width:100%;padding:10px 0;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;cursor:pointer}.verified-custd-mdl-a-c-2-b-content-header-body-header-icons{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:10px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-dis{display:flex;align-items:center;gap:4px;margin-bottom:18px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis{color:var(--Neutral-300, #B6B7C3);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-contact-content-heder-cont{width:100%;display:flex;justify-content:space-between;flex-direction:row}.verified-custd-mdl-add-cosigner-confirm-body-content-outter{background:#0006;z-index:5;position:absolute;width:100%;bottom:0;right:0;left:0;height:100%;display:flex;flex-direction:column-reverse}.verified-custd-mdl-portfolio-page-content-header-button{display:flex;padding:6px 12px;align-items:center;gap:4px;border-radius:32px;background:var(--secondary-electric-violet-900, #362689);cursor:pointer;color:var(--Neutral-White-100, var(--common-white_states-main, #fff));border:none;width:fit-content;max-width:150px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word;height:30px}.verified-custd-mdl-portfolio-page-content-header-button-cont{width:fit-content;height:fit-content;display:flex;flex-direction:column;gap:4px;justify-content:flex-start;position:relative}.verified-custd-mdl-portfolio-page-content-header-button-body{height:fit-content;width:fit-content;display:flex;flex-direction:column;gap:4px;border:none;border-radius:10px;background:var(--Neutral-50, #f7f7f8);padding:10px;position:absolute;top:33px;right:0}.verified-custd-mdl-portfolio-page-content-header-button-body-cont{background:none;cursor:pointer;border:1px solid transparent;padding:5px}.verified-custd-mdl-portfolio-page-content-header-button-body-cont:hover{border:1px solid #362689;background:transparent}.verified-custd-mdl-portfolio-page-content-header-button-body-text{width:110px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word}.verified-custd-mdl-profile-popup-content-third{display:flex;padding:12px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--common-white_states-main, #fff);box-shadow:0 0 16px #0000001f}.verified-custd-mdl-profile-popup-content-third-container{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-profile-popup-content-third-content,.verified-custd-mdl-profile-popup-content-third-content-tkn{display:flex;padding:4px var(--space-0, 0px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:var(--space-8px, 8px);cursor:pointer}.verified-custd-mdl-profile-popup-content-third-content-text-container{display:flex;align-items:center;gap:var(--space-8px, 8px)}.verified-custd-mdl-profile-popup-content-third-content-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;max-width:170px;word-wrap:break-word}.verified-custd-mdl-profile-popup-content-third-content-line{width:100%;height:1px;background:#eeeef0}.verified-custd-mdl-profile-popup-content-third-content-tkn:hover{border:#362689 1px solid}.verified-custd-mdl-profile-popup-content{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-asset-layout-content{display:inline-flex;padding:0 20px 155px;flex-direction:column;align-items:flex-start;gap:20px;border-radius:8px;background:var(--Neutral-White-100, #fff);width:100%;height:100%}.verified-custd-mdl-profile-popup-content-second{display:flex;padding:12px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--common-white_states-main, #fff);box-shadow:0 0 16px #0000001f}.verified-custd-mdl-profile-popup-content-second-text{color:var(--Neutral-900, #383842);text-align:center;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%}.verified-custd-mdl-profile-popup-content-second-container{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-profile-popup-content-second-content{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:24px;cursor:pointer}.verified-custd-mdl-profile-popup-content-second-content-icon{display:flex;padding:12px;flex-direction:column;align-items:center;gap:var(--space-8px, 8px);border-radius:4px;background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-profile-popup-content-second-content-text{color:#000;text-align:center;font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:1.125rem;text-transform:capitalize;width:fit-content;max-width:60px;height:36px}.verified-custd-mdl-profile-popup-content-third-button{display:flex;width:100px;padding:6px 14px;justify-content:center;align-items:center;gap:10px;border-radius:100px;border:1px solid var(--secondary-electric-violet-700, #4e2bd7)}.verified-custd-mdl-profile-popup-content-third-button-text{color:var(--secondary-electric-violet-600, #603ff4);text-align:center;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:600;line-height:125%}.verified-custd-mdl-offer-security-popup-info-content{display:flex;padding:6px 12px;justify-content:center;align-items:center;gap:10px;background:var(--common-white_states-main, #fff);position:absolute;top:-1;left:4px;width:230px;border-radius:2px;z-index:3;box-shadow:0 0 16px #0000001f}.verified-custd-mdl-offer-security-popup-info-content-text{color:var(--Neutral-900, #383842);width:auto;max-width:300px;height:fit-content;word-wrap:break-word;overflow-wrap:break-word;font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%}\\n\");","if (\r\n typeof window !== \"undefined\" &&\r\n typeof (window as any).chrome === \"undefined\"\r\n) {\r\n (window as any).chrome = {};\r\n}\r\n","if (\r\n typeof global !== \"undefined\" &&\r\n typeof global.crypto === \"undefined\" &&\r\n typeof navigator !== \"undefined\" &&\r\n navigator.product === \"ReactNative\"\r\n) {\r\n try {\r\n require(\"react-native-get-random-values\");\r\n } catch (err) {\r\n console.warn(\"react native [polyfillCrypto] Failed to load polyfill:\", err);\r\n }\r\n}\r\n","// platform.ts\r\nimport React, { forwardRef } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { globalStyles } from \"./globalStyle\";\r\n\r\nlet isReactNative = false;\r\nlet isInitialized = false;\r\n\r\nlet View: any,\r\n Text: any,\r\n Image: any,\r\n ScrollView: any,\r\n StyleSheet: any,\r\n TextInput: any,\r\n TouchableOpacity: any,\r\n ActivityIndicator: any,\r\n Font: any,\r\n AsyncStorage: any,\r\n EventEmitter: any,\r\n styles: any,\r\n rnPasskey: any;\r\n\r\nconst initPlatform = async () => {\r\n if (isInitialized) return;\r\n\r\n const isRunningInReactNative =\r\n typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\";\r\n\r\n if (isRunningInReactNative) {\r\n console.log(\"Initializing React Native platform...\");\r\n const RN = await import(\"react-native\");\r\n const events = await import(\"events\");\r\n const font = await import(\"expo-font\");\r\n Font = font.default; //expo pick the required fonts automatically???\r\n const reactStorage = await import(\r\n \"@react-native-async-storage/async-storage\"\r\n );\r\n const passKey = await import(\"react-native-passkey\");\r\n rnPasskey = await passKey.Passkey;\r\n AsyncStorage = reactStorage.default;\r\n EventEmitter = events.EventEmitter;\r\n\r\n const filterPropsRN = ({ className, id, ...rest }: any) => rest;\r\n\r\n const wrapRNTags = (Component: any) => (props: any) =>\r\n <Component {...filterPropsRN(props)} />;\r\n\r\n View = wrapRNTags(RN.View);\r\n Text = wrapRNTags(RN.Text);\r\n Image = wrapRNTags(RN.Image);\r\n ScrollView = wrapRNTags(RN.ScrollView);\r\n StyleSheet = RN.StyleSheet;\r\n TextInput = wrapRNTags(RN.TextInput);\r\n TouchableOpacity = wrapRNTags(RN.TouchableOpacity);\r\n ActivityIndicator = wrapRNTags(RN.ActivityIndicator);\r\n styles = RN.StyleSheet.create(globalStyles);\r\n isReactNative = true;\r\n console.log(\"React Native platform initialized.\");\r\n } else {\r\n console.log(\"Initializing Web platform...\");\r\n const { motion } = await import(\"framer-motion\");\r\n\r\n View = ({ onPress, ...rest }: any) => <div onClick={onPress} {...rest} />;\r\n Text = ({ onPress, ...rest }: any) => <span onClick={onPress} {...rest} />;\r\n Image = ({ onPress, source, ...rest }: any) => (\r\n <img onClick={onPress} {...rest} src={source?.uri} />\r\n );\r\n ScrollView = (props: any) => (\r\n <div style={{ overflowY: \"auto\", ...props.style }}>{props.children}</div>\r\n );\r\n StyleSheet = {\r\n create: (styles: any) => styles,\r\n };\r\n styles = {};\r\n TextInput = forwardRef(\r\n (\r\n {\r\n onChangeText,\r\n onInput,\r\n onKeyDown,\r\n onKeyPress,\r\n value,\r\n keyboardType,\r\n secureTextEntry,\r\n onSubmitEditing,\r\n blurOnSubmit,\r\n placeholderTextColor,\r\n ...rest\r\n }: any,\r\n ref\r\n ) => (\r\n <input\r\n {...rest}\r\n ref={ref}\r\n value={value}\r\n onInput={(e: any) => {\r\n onInput?.(e);\r\n onChangeText?.(e.target.value);\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n onSubmitEditing?.(e);\r\n }\r\n onKeyDown?.(e);\r\n onKeyPress?.(e);\r\n }}\r\n type={\r\n secureTextEntry\r\n ? \"password\"\r\n : keyboardType === \"numeric\" || keyboardType === \"number-pad\"\r\n ? \"tel\"\r\n : \"text\"\r\n }\r\n onChange={() => {}}\r\n />\r\n )\r\n );\r\n\r\n TouchableOpacity = ({ onPress, style, ...rest }: any) => (\r\n <button\r\n style={{ outline: \"none\", border: \"none\", ...style }}\r\n onClick={onPress}\r\n {...rest}\r\n >\r\n {rest.children}\r\n </button>\r\n );\r\n\r\n ActivityIndicator = ({ color, size, ...rest }: any) => (\r\n <motion.img\r\n height=\"50px\"\r\n width=\"50px\"\r\n src={imageAssets.loadingIcon}\r\n alt=\"Loading...\"\r\n animate={{\r\n rotate: 360,\r\n scale: [1, 1.5, 1],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n {...rest}\r\n />\r\n );\r\n\r\n isReactNative = false;\r\n console.log(\"Web platform initialized.\");\r\n }\r\n\r\n isInitialized = true;\r\n};\r\n\r\nconst getPlatformComponents = () => {\r\n if (!isInitialized) {\r\n throw new Error(\r\n \"Platform not initialized. Call `await initPlatform()` first.\"\r\n );\r\n }\r\n\r\n return {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n StyleSheet,\r\n TextInput,\r\n TouchableOpacity,\r\n ActivityIndicator,\r\n Font,\r\n AsyncStorage,\r\n EventEmitter,\r\n styles,\r\n rnPasskey,\r\n };\r\n};\r\n\r\nexport { initPlatform, getPlatformComponents };\r\n","export const defaultChainId = 8453;\r\n\r\nexport const defaultVerifiedUrl =\r\n process.env.REACT_APP_NODE_ENV === \"production\"\r\n ? \"https://wallet.verified.network\"\r\n : \"https://veripay-bac0b.web.app\";\r\n\r\nexport const verifiedWebsiteUrls = [\r\n \"https://veripay-bac0b.web.app\",\r\n \"https://wallet.verified.network\",\r\n \"https://verified-l1.web.app\",\r\n \"https://invest.verified.network\",\r\n];\r\n\r\nexport const allGoogleFontUrls = [\r\n \"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Hind:wght@300;400;500;600;700&display=swap\",\r\n];\r\n\r\nexport const newTransactionEventHash =\r\n \"0x7f8d3f14b960b3bcf34baea4b46178e331b54a33e565d7d50d77cdfe9e926fe8\";\r\n\r\nexport const numberPositions = {\r\n 1: \"1st\",\r\n 2: \"2nd\",\r\n 3: \"3rd\",\r\n 4: \"4th\",\r\n 5: \"5th\",\r\n};\r\n\r\nexport const numberPositionsFmt = {\r\n 1: \"1 st\",\r\n 2: \"2 nd\",\r\n 3: \"3 rd\",\r\n 4: \"4 th\",\r\n 5: \"5 th\",\r\n};\r\n\r\nexport const actionTexts = {\r\n connect_wallet: \"connect your account\",\r\n eth_requestAccounts: \"connect your account\",\r\n getPk: \"recover your account details\",\r\n invitation: \"accept Co-Signer invitation\",\r\n signRecovery: \"sign account recovery\",\r\n completeRecovery: \"restore login access\",\r\n eth_sendTransaction: \"sign smart contract interaction\",\r\n};\r\n\r\nexport const imageAssets = {\r\n successIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/succes-page-icon.svg\",\r\n usaFlag:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/Flag-United-States-of-America%201.svg\",\r\n privacyTip:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/privacy_tip.svg\",\r\n addCoSignerIcon1:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-1.svg\",\r\n addCoSignerIcon2:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-2.svg\",\r\n addCoSignerIcon3:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-3.svg\",\r\n addCoSignerIcon4:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-4.svg\",\r\n pkicon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pk-icon.svg\",\r\n encryptedIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/encrypted-icon.svg\",\r\n pinHide:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-hide-icon.svg\",\r\n pinShow:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-show-icon.svg\",\r\n arrowUp:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-arrow-up.svg\",\r\n arrowDown:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-dropdown.svg\",\r\n editBlue:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit.svg\",\r\n editBlack:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit-icon.svg\",\r\n search:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/search-icon.svg\",\r\n circleClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/check-circle-icon.svg\",\r\n supervise:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/supervisor-icon.svg\",\r\n delete:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/delete-icon.svg\",\r\n pointer:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pointer-icon.svg\",\r\n sliderDot:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/slider-icon.svg\",\r\n select:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-icon.svg\",\r\n selectClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-clicked-icon.svg\",\r\n addIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-icon.svg\",\r\n addDisableIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-dis.svg\",\r\n errorAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/error-icon.svg\",\r\n successAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/success-icon.svg\",\r\n loadingIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/loading-icon.png\",\r\n checkCircle:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/check-circle.svg\",\r\n expandRight:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/chevron-right-icon.svg\",\r\n closeIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/close-icon.svg\",\r\n infoBlue:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/info-blue.svg\",\r\n profileEdit:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/profile-pic-edit.svg\",\r\n infoReference:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/quick_reference.svg\",\r\n profileQuestions:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/shield_question.svg\",\r\n verifiedCheckMark:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/verified-checkmark.svg\",\r\n friends:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/friends.svg\",\r\n baseIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/base-icon.svg\",\r\n ethereumIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/ethereum-icon.svg\",\r\n gnosisIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/gnois-icon.svg\",\r\n copyIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/copy_icon.svg\",\r\n errorIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/error.svg\",\r\n};\r\n\r\nexport const countriesDetails = [\r\n {\r\n name: \"Afghanistan\",\r\n code: \"AF\",\r\n currency: \"AFN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/af.webp\",\r\n phone_code: \"93\",\r\n },\r\n {\r\n name: \"Albania\",\r\n code: \"AL\",\r\n currency: \"ALL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/al.webp\",\r\n phone_code: \"355\",\r\n },\r\n {\r\n name: \"Algeria\",\r\n code: \"DZ\",\r\n currency: \"DZD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dz.webp\",\r\n phone_code: \"213\",\r\n },\r\n {\r\n name: \"American Samoa\",\r\n code: \"AS\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/as.webp\",\r\n phone_code: \"1-684\",\r\n },\r\n {\r\n name: \"Andorra\",\r\n code: \"AD\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ad.webp\",\r\n phone_code: \"376\",\r\n },\r\n {\r\n name: \"Angola\",\r\n code: \"AO\",\r\n currency: \"AOA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ao.webp\",\r\n phone_code: \"244\",\r\n },\r\n {\r\n name: \"Anguilla\",\r\n code: \"AI\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ai.webp\",\r\n phone_code: \"1-264\",\r\n },\r\n {\r\n name: \"Antarctica\",\r\n code: \"AQ\",\r\n currency: \"N/A\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aq.webp\",\r\n phone_code: \"N/A\",\r\n },\r\n {\r\n name: \"Antigua and Barbuda\",\r\n code: \"AG\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ag.webp\",\r\n phone_code: \"1-268\",\r\n },\r\n {\r\n name: \"Argentina\",\r\n code: \"AR\",\r\n currency: \"ARS\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ar.webp\",\r\n phone_code: \"54\",\r\n },\r\n {\r\n name: \"Armenia\",\r\n code: \"AM\",\r\n currency: \"AMD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/am.webp\",\r\n phone_code: \"374\",\r\n },\r\n {\r\n name: \"Aruba\",\r\n code: \"AW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aw.webp\",\r\n phone_code: \"297\",\r\n },\r\n {\r\n name: \"Australia\",\r\n code: \"AU\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/au.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Austria\",\r\n code: \"AT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/at.webp\",\r\n phone_code: \"43\",\r\n },\r\n {\r\n name: \"Azerbaijan\",\r\n code: \"AZ\",\r\n currency: \"AZN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/az.webp\",\r\n phone_code: \"994\",\r\n },\r\n {\r\n name: \"Bahamas\",\r\n code: \"BS\",\r\n currency: \"BSD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bs.webp\",\r\n phone_code: \"1-242\",\r\n },\r\n {\r\n name: \"Bahrain\",\r\n code: \"BH\",\r\n currency: \"BHD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bh.webp\",\r\n phone_code: \"973\",\r\n },\r\n {\r\n name: \"Bangladesh\",\r\n code: \"BD\",\r\n currency: \"BDT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bd.webp\",\r\n phone_code: \"880\",\r\n },\r\n {\r\n name: \"Barbados\",\r\n code: \"BB\",\r\n currency: \"BBD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bb.webp\",\r\n phone_code: \"1-246\",\r\n },\r\n {\r\n name: \"Belarus\",\r\n code: \"BY\",\r\n currency: \"BYR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/by.webp\",\r\n phone_code: \"375\",\r\n },\r\n {\r\n name: \"Belgium\",\r\n code: \"BE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/be.webp\",\r\n phone_code: \"32\",\r\n },\r\n {\r\n name: \"Belize\",\r\n code: \"BZ\",\r\n currency: \"BZD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bz.webp\",\r\n phone_code: \"501\",\r\n },\r\n {\r\n name: \"Benin\",\r\n code: \"BJ\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bj.webp\",\r\n phone_code: \"229\",\r\n },\r\n {\r\n name: \"Bermuda\",\r\n code: \"BM\",\r\n currency: \"BMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bm.webp\",\r\n phone_code: \"1-441\",\r\n },\r\n {\r\n name: \"Bhutan\",\r\n code: \"BT\",\r\n currency: \"BTN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bt.webp\",\r\n phone_code: \"975\",\r\n },\r\n {\r\n name: \"Bolivia\",\r\n code: \"BO\",\r\n currency: \"BOB\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bo.webp\",\r\n phone_code: \"591\",\r\n },\r\n {\r\n name: \"Bosnia and Herzegovina\",\r\n code: \"BA\",\r\n currency: \"BAM\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ba.webp\",\r\n phone_code: \"387\",\r\n },\r\n {\r\n name: \"Botswana\",\r\n code: \"BW\",\r\n currency: \"BWP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bw.webp\",\r\n phone_code: \"267\",\r\n },\r\n {\r\n name: \"Brazil\",\r\n code: \"BR\",\r\n currency: \"BRL\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/br.webp\",\r\n phone_code: \"55\",\r\n },\r\n {\r\n name: \"British Indian Ocean Territory\",\r\n code: \"IO\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/io.webp\",\r\n phone_code: \"246\",\r\n },\r\n {\r\n name: \"Brunei Darussalam\",\r\n code: \"BN\",\r\n currency: \"BND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bn.webp\",\r\n phone_code: \"673\",\r\n },\r\n {\r\n name: \"Bulgaria\",\r\n code: \"BG\",\r\n currency: \"BGN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bg.webp\",\r\n phone_code: \"359\",\r\n },\r\n {\r\n name: \"Burkina Faso\",\r\n code: \"BF\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bf.webp\",\r\n phone_code: \"226\",\r\n },\r\n {\r\n name: \"Burundi\",\r\n code: \"BI\",\r\n currency: \"BIF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bi.webp\",\r\n phone_code: \"257\",\r\n },\r\n {\r\n name: \"Cambodia\",\r\n code: \"KH\",\r\n currency: \"KHR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kh.webp\",\r\n phone_code: \"855\",\r\n },\r\n {\r\n name: \"Cameroon\",\r\n code: \"CM\",\r\n currency: \"CFA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cm.webp\",\r\n phone_code: \"237\",\r\n },\r\n {\r\n name: \"Canada\",\r\n code: \"CA\",\r\n currency: \"CAD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ca.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Cape Verde\",\r\n code: \"CV\",\r\n currency: \"CVE\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cv.webp\",\r\n phone_code: \"238\",\r\n },\r\n {\r\n name: \"Cayman Islands\",\r\n code: \"KY\",\r\n currency: \"KYD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ky.webp\",\r\n phone_code: \"1-345\",\r\n },\r\n {\r\n name: \"Central African Republic\",\r\n code: \"CF\",\r\n currency: \"XAF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cf.webp\",\r\n phone_code: \"236\",\r\n },\r\n {\r\n name: \"Chad\",\r\n code: \"TD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/td.webp\",\r\n phone_code: \"235\",\r\n },\r\n {\r\n name: \"Chile\",\r\n code: \"CL\",\r\n currency: \"CLP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cl.webp\",\r\n phone_code: \"56\",\r\n },\r\n {\r\n name: \"China\",\r\n code: \"CN\",\r\n currency: \"CNY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cn.webp\",\r\n phone_code: \"86\",\r\n },\r\n {\r\n name: \"Christmas Island\",\r\n code: \"CX\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cx.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Cocos (Keeling) Islands\",\r\n code: \"CC\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cc.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Colombia\",\r\n code: \"CO\",\r\n currency: \"COP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/co.webp\",\r\n phone_code: \"57\",\r\n },\r\n {\r\n name: \"Comoros\",\r\n code: \"KM\",\r\n currency: \"KMF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/km.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Congo (Congo-Brazzaville)\",\r\n code: \"CG\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cg.webp\",\r\n phone_code: \"242\",\r\n },\r\n {\r\n name: \"Congo (Democratic Republic of the Congo)\",\r\n code: \"CD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cd.webp\",\r\n phone_code: \"243\",\r\n },\r\n {\r\n name: \"Cook Islands\",\r\n code: \"CK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ck.webp\",\r\n phone_code: \"682\",\r\n },\r\n {\r\n name: \"Costa Rica\",\r\n code: \"CR\",\r\n currency: \"CRC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cr.webp\",\r\n phone_code: \"506\",\r\n },\r\n {\r\n name: \"Croatia\",\r\n code: \"HR\",\r\n currency: \"HRK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hr.webp\",\r\n phone_code: \"385\",\r\n },\r\n {\r\n name: \"Cuba\",\r\n code: \"CU\",\r\n currency: \"CUP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cu.webp\",\r\n phone_code: \"53\",\r\n },\r\n {\r\n name: \"Curaçao\",\r\n code: \"CW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cw.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Cyprus\",\r\n code: \"CY\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cy.webp\",\r\n phone_code: \"357\",\r\n },\r\n {\r\n name: \"Czech Republic\",\r\n code: \"CZ\",\r\n currency: \"CZK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cz.webp\",\r\n phone_code: \"420\",\r\n },\r\n {\r\n name: \"Denmark\",\r\n code: \"DK\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dk.webp\",\r\n phone_code: \"45\",\r\n },\r\n {\r\n name: \"Djibouti\",\r\n code: \"DJ\",\r\n currency: \"DJF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dj.webp\",\r\n phone_code: \"253\",\r\n },\r\n {\r\n name: \"Dominica\",\r\n code: \"DM\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dm.webp\",\r\n phone_code: \"1-767\",\r\n },\r\n {\r\n name: \"Dominican Republic\",\r\n code: \"DO\",\r\n currency: \"DOP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/do.webp\",\r\n phone_code: \"1-809\",\r\n },\r\n {\r\n name: \"Ecuador\",\r\n code: \"EC\",\r\n currency: \"USD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ec.webp\",\r\n phone_code: \"593\",\r\n },\r\n {\r\n name: \"Egypt\",\r\n code: \"EG\",\r\n currency: \"EGP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eg.webp\",\r\n phone_code: \"20\",\r\n },\r\n {\r\n name: \"El Salvador\",\r\n code: \"SV\",\r\n currency: \"SVC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sv.webp\",\r\n phone_code: \"503\",\r\n },\r\n {\r\n name: \"Equatorial Guinea\",\r\n code: \"GQ\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gq.webp\",\r\n phone_code: \"240\",\r\n },\r\n {\r\n name: \"Eritrea\",\r\n code: \"ER\",\r\n currency: \"ERN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/er.webp\",\r\n phone_code: \"291\",\r\n },\r\n {\r\n name: \"Estonia\",\r\n code: \"EE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ee.webp\",\r\n phone_code: \"372\",\r\n },\r\n {\r\n name: \"Eswatini\",\r\n code: \"SZ\",\r\n currency: \"SZL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sz.webp\",\r\n phone_code: \"268\",\r\n },\r\n {\r\n name: \"Ethiopia\",\r\n code: \"ET\",\r\n currency: \"ETB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/et.webp\",\r\n phone_code: \"251\",\r\n },\r\n {\r\n name: \"Falkland Islands\",\r\n code: \"FK\",\r\n currency: \"FKP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fk.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"Faroe Islands\",\r\n code: \"FO\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fo.webp\",\r\n phone_code: \"298\",\r\n },\r\n {\r\n name: \"Fiji\",\r\n code: \"FJ\",\r\n currency: \"FJD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fj.webp\",\r\n phone_code: \"679\",\r\n },\r\n {\r\n name: \"Finland\",\r\n code: \"FI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fi.webp\",\r\n phone_code: \"358\",\r\n },\r\n {\r\n name: \"France\",\r\n code: \"FR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fr.webp\",\r\n phone_code: \"33\",\r\n },\r\n {\r\n name: \"Gabon\",\r\n code: \"GA\",\r\n currency: \"GAB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ga.webp\",\r\n phone_code: \"241\",\r\n },\r\n {\r\n name: \"Gambia\",\r\n code: \"GM\",\r\n currency: \"GMD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gm.webp\",\r\n phone_code: \"220\",\r\n },\r\n {\r\n name: \"Georgia\",\r\n code: \"GE\",\r\n currency: \"GEL\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ge.webp\",\r\n phone_code: \"995\",\r\n },\r\n {\r\n name: \"Germany\",\r\n code: \"DE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/de.webp\",\r\n phone_code: \"49\",\r\n },\r\n {\r\n name: \"Ghana\",\r\n code: \"GH\",\r\n currency: \"GHS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gh.webp\",\r\n phone_code: \"233\",\r\n },\r\n {\r\n name: \"Greece\",\r\n code: \"GR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gr.webp\",\r\n phone_code: \"30\",\r\n },\r\n {\r\n name: \"Greenland\",\r\n code: \"GL\",\r\n currency: \"DKK\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gl.webp\",\r\n phone_code: \"299\",\r\n },\r\n {\r\n name: \"Grenada\",\r\n code: \"GD\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gd.webp\",\r\n phone_code: \"1-473\",\r\n },\r\n {\r\n name: \"Guadeloupe\",\r\n code: \"GP\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gp.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Guam\",\r\n code: \"GU\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gu.webp\",\r\n phone_code: \"1-671\",\r\n },\r\n {\r\n name: \"Guatemala\",\r\n code: \"GT\",\r\n currency: \"GTQ\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gt.webp\",\r\n phone_code: \"502\",\r\n },\r\n {\r\n name: \"Guinea\",\r\n code: \"GN\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gn.webp\",\r\n phone_code: \"224\",\r\n },\r\n {\r\n name: \"Guinea-Bissau\",\r\n code: \"GW\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gw.webp\",\r\n phone_code: \"245\",\r\n },\r\n {\r\n name: \"Guyana\",\r\n code: \"GY\",\r\n currency: \"GYD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gy.webp\",\r\n phone_code: \"592\",\r\n },\r\n {\r\n name: \"Haiti\",\r\n code: \"HT\",\r\n currency: \"HTG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ht.webp\",\r\n phone_code: \"509\",\r\n },\r\n {\r\n name: \"Heard Island and McDonald Islands\",\r\n code: \"HM\",\r\n currency: \"AUD\",\r\n continent: \"Australia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hm.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Honduras\",\r\n code: \"HN\",\r\n currency: \"HNL\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hn.webp\",\r\n phone_code: \"504\",\r\n },\r\n {\r\n name: \"Hong Kong\",\r\n code: \"HK\",\r\n currency: \"HKD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hk.webp\",\r\n phone_code: \"852\",\r\n },\r\n {\r\n name: \"Hungary\",\r\n code: \"HU\",\r\n currency: \"HUF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hu.webp\",\r\n phone_code: \"36\",\r\n },\r\n {\r\n name: \"Iceland\",\r\n code: \"IS\",\r\n currency: \"ISK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/is.webp\",\r\n phone_code: \"354\",\r\n },\r\n {\r\n name: \"India\",\r\n code: \"IN\",\r\n currency: \"INR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/in.webp\",\r\n phone_code: \"91\",\r\n },\r\n {\r\n name: \"Indonesia\",\r\n code: \"ID\",\r\n currency: \"IDR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/id.webp\",\r\n phone_code: \"62\",\r\n },\r\n {\r\n name: \"Iran\",\r\n code: \"IR\",\r\n currency: \"IRR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ir.webp\",\r\n phone_code: \"98\",\r\n },\r\n {\r\n name: \"Iraq\",\r\n code: \"IQ\",\r\n currency: \"IQD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/iq.webp\",\r\n phone_code: \"964\",\r\n },\r\n {\r\n name: \"Ireland\",\r\n code: \"IE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ie.webp\",\r\n phone_code: \"353\",\r\n },\r\n {\r\n name: \"Israel\",\r\n code: \"IL\",\r\n currency: \"ILS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/il.webp\",\r\n phone_code: \"972\",\r\n },\r\n {\r\n name: \"Italy\",\r\n code: \"IT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/it.webp\",\r\n phone_code: \"39\",\r\n },\r\n {\r\n name: \"Jamaica\",\r\n code: \"JM\",\r\n currency: \"JMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jm.webp\",\r\n phone_code: \"1-876\",\r\n },\r\n {\r\n name: \"Japan\",\r\n code: \"JP\",\r\n currency: \"JPY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jp.webp\",\r\n phone_code: \"81\",\r\n },\r\n {\r\n name: \"Jordan\",\r\n code: \"JO\",\r\n currency: \"JOD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jo.webp\",\r\n phone_code: \"962\",\r\n },\r\n {\r\n name: \"Kazakhstan\",\r\n code: \"KZ\",\r\n currency: \"KZT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kz.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Kenya\",\r\n code: \"KE\",\r\n currency: \"KES\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ke.webp\",\r\n phone_code: \"254\",\r\n },\r\n {\r\n name: \"Kiribati\",\r\n code: \"KI\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ki.webp\",\r\n phone_code: \"686\",\r\n },\r\n {\r\n name: \"Korea (North)\",\r\n code: \"KP\",\r\n currency: \"KPW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kp.webp\",\r\n phone_code: \"850\",\r\n },\r\n {\r\n name: \"Korea (South)\",\r\n code: \"KR\",\r\n currency: \"KRW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kr.webp\",\r\n phone_code: \"82\",\r\n },\r\n {\r\n name: \"Kuwait\",\r\n code: \"KW\",\r\n currency: \"KWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kw.webp\",\r\n phone_code: \"965\",\r\n },\r\n {\r\n name: \"Kyrgyzstan\",\r\n code: \"KG\",\r\n currency: \"KGS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kg.webp\",\r\n phone_code: \"996\",\r\n },\r\n {\r\n name: \"Laos\",\r\n code: \"LA\",\r\n currency: \"LAK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/la.webp\",\r\n phone_code: \"856\",\r\n },\r\n {\r\n name: \"Latvia\",\r\n code: \"LV\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lv.webp\",\r\n phone_code: \"371\",\r\n },\r\n {\r\n name: \"Lebanon\",\r\n code: \"LB\",\r\n currency: \"LBP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lb.webp\",\r\n phone_code: \"961\",\r\n },\r\n {\r\n name: \"Lesotho\",\r\n code: \"LS\",\r\n currency: \"LSL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ls.webp\",\r\n phone_code: \"266\",\r\n },\r\n {\r\n name: \"Liberia\",\r\n code: \"LR\",\r\n currency: \"LRD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lr.webp\",\r\n phone_code: \"231\",\r\n },\r\n {\r\n name: \"Libya\",\r\n code: \"LY\",\r\n currency: \"LYD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ly.webp\",\r\n phone_code: \"218\",\r\n },\r\n {\r\n name: \"Liechtenstein\",\r\n code: \"LI\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/li.webp\",\r\n phone_code: \"423\",\r\n },\r\n {\r\n name: \"Lithuania\",\r\n code: \"LT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lt.webp\",\r\n phone_code: \"370\",\r\n },\r\n {\r\n name: \"Luxembourg\",\r\n code: \"LU\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lu.webp\",\r\n phone_code: \"352\",\r\n },\r\n {\r\n name: \"Macau\",\r\n code: \"MO\",\r\n currency: \"MOP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mo.webp\",\r\n phone_code: \"853\",\r\n },\r\n {\r\n name: \"Madagascar\",\r\n code: \"MG\",\r\n currency: \"MGA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mg.webp\",\r\n phone_code: \"261\",\r\n },\r\n {\r\n name: \"Malawi\",\r\n code: \"MW\",\r\n currency: \"MWK\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mw.webp\",\r\n phone_code: \"265\",\r\n },\r\n {\r\n name: \"Malaysia\",\r\n code: \"MY\",\r\n currency: \"MYR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/my.webp\",\r\n phone_code: \"60\",\r\n },\r\n {\r\n name: \"Maldives\",\r\n code: \"MV\",\r\n currency: \"MVR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mv.webp\",\r\n phone_code: \"960\",\r\n },\r\n {\r\n name: \"Mali\",\r\n code: \"ML\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ml.webp\",\r\n phone_code: \"223\",\r\n },\r\n {\r\n name: \"Malta\",\r\n code: \"MT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mt.webp\",\r\n phone_code: \"356\",\r\n },\r\n {\r\n name: \"Marshall Islands\",\r\n code: \"MH\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mh.webp\",\r\n phone_code: \"692\",\r\n },\r\n {\r\n name: \"Martinique\",\r\n code: \"MQ\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mq.webp\",\r\n phone_code: \"596\",\r\n },\r\n {\r\n name: \"Mauritania\",\r\n code: \"MR\",\r\n currency: \"MRU\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mr.webp\",\r\n phone_code: \"222\",\r\n },\r\n {\r\n name: \"Mauritius\",\r\n code: \"MU\",\r\n currency: \"MUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mu.webp\",\r\n phone_code: \"230\",\r\n },\r\n {\r\n name: \"Mayotte\",\r\n code: \"YT\",\r\n currency: \"EUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/yt.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Mexico\",\r\n code: \"MX\",\r\n currency: \"MXN\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mx.webp\",\r\n phone_code: \"52\",\r\n },\r\n {\r\n name: \"Micronesia\",\r\n code: \"FM\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fm.webp\",\r\n phone_code: \"691\",\r\n },\r\n {\r\n name: \"Moldova\",\r\n code: \"MD\",\r\n currency: \"MDL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/md.webp\",\r\n phone_code: \"373\",\r\n },\r\n {\r\n name: \"Monaco\",\r\n code: \"MC\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mc.webp\",\r\n phone_code: \"377\",\r\n },\r\n {\r\n name: \"Mongolia\",\r\n code: \"MN\",\r\n currency: \"MNT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mn.webp\",\r\n phone_code: \"976\",\r\n },\r\n {\r\n name: \"Montenegro\",\r\n code: \"ME\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/me.webp\",\r\n phone_code: \"382\",\r\n },\r\n {\r\n name: \"Montserrat\",\r\n code: \"MS\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ms.webp\",\r\n phone_code: \"1-664\",\r\n },\r\n {\r\n name: \"Morocco\",\r\n code: \"MA\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ma.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Mozambique\",\r\n code: \"MZ\",\r\n currency: \"MZN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mz.webp\",\r\n phone_code: \"258\",\r\n },\r\n {\r\n name: \"Myanmar\",\r\n code: \"MM\",\r\n currency: \"MMK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mm.webp\",\r\n phone_code: \"95\",\r\n },\r\n {\r\n name: \"Namibia\",\r\n code: \"NA\",\r\n currency: \"NAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/na.webp\",\r\n phone_code: \"264\",\r\n },\r\n {\r\n name: \"Nauru\",\r\n code: \"NR\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nr.webp\",\r\n phone_code: \"674\",\r\n },\r\n {\r\n name: \"Nepal\",\r\n code: \"NP\",\r\n currency: \"NPR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/np.webp\",\r\n phone_code: \"977\",\r\n },\r\n {\r\n name: \"Netherlands\",\r\n code: \"NL\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nl.webp\",\r\n phone_code: \"31\",\r\n },\r\n {\r\n name: \"New Caledonia\",\r\n code: \"NC\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nc.webp\",\r\n phone_code: \"687\",\r\n },\r\n {\r\n name: \"New Zealand\",\r\n code: \"NZ\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nz.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Nicaragua\",\r\n code: \"NI\",\r\n currency: \"NIO\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ni.webp\",\r\n phone_code: \"505\",\r\n },\r\n {\r\n name: \"Niger\",\r\n code: \"NE\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ne.webp\",\r\n phone_code: \"227\",\r\n },\r\n {\r\n name: \"Nigeria\",\r\n code: \"NG\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ng.webp\",\r\n phone_code: \"234\",\r\n },\r\n {\r\n name: \"Niue\",\r\n code: \"NU\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nu.webp\",\r\n phone_code: \"683\",\r\n },\r\n {\r\n name: \"Norfolk Island\",\r\n code: \"NF\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nf.webp\",\r\n phone_code: \"672\",\r\n },\r\n {\r\n name: \"North Macedonia\",\r\n code: \"MK\",\r\n currency: \"MKD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mk.webp\",\r\n phone_code: \"389\",\r\n },\r\n {\r\n name: \"Northern Mariana Islands\",\r\n code: \"MP\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mp.webp\",\r\n phone_code: \"1-670\",\r\n },\r\n {\r\n name: \"Norway\",\r\n code: \"NO\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/no.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Oman\",\r\n code: \"OM\",\r\n currency: \"OMR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/om.webp\",\r\n phone_code: \"968\",\r\n },\r\n {\r\n name: \"Pakistan\",\r\n code: \"PK\",\r\n currency: \"PKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pk.webp\",\r\n phone_code: \"92\",\r\n },\r\n {\r\n name: \"Palau\",\r\n code: \"PW\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pw.webp\",\r\n phone_code: \"680\",\r\n },\r\n {\r\n name: \"Panama\",\r\n code: \"PA\",\r\n currency: \"PAB\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pa.webp\",\r\n phone_code: \"507\",\r\n },\r\n {\r\n name: \"Papua New Guinea\",\r\n code: \"PG\",\r\n currency: \"PGK\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pg.webp\",\r\n phone_code: \"675\",\r\n },\r\n {\r\n name: \"Paraguay\",\r\n code: \"PY\",\r\n currency: \"PYG\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/py.webp\",\r\n phone_code: \"595\",\r\n },\r\n {\r\n name: \"Peru\",\r\n code: \"PE\",\r\n currency: \"PEN\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pe.webp\",\r\n phone_code: \"51\",\r\n },\r\n {\r\n name: \"Philippines\",\r\n code: \"PH\",\r\n currency: \"PHP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ph.webp\",\r\n phone_code: \"63\",\r\n },\r\n {\r\n name: \"Pitcairn Islands\",\r\n code: \"PN\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pn.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Poland\",\r\n code: \"PL\",\r\n currency: \"PLN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pl.webp\",\r\n phone_code: \"48\",\r\n },\r\n {\r\n name: \"Portugal\",\r\n code: \"PT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pt.webp\",\r\n phone_code: \"351\",\r\n },\r\n {\r\n name: \"Puerto Rico\",\r\n code: \"PR\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pr.webp\",\r\n phone_code: \"1-787\",\r\n },\r\n {\r\n name: \"Qatar\",\r\n code: \"QA\",\r\n currency: \"QAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/qa.webp\",\r\n phone_code: \"974\",\r\n },\r\n {\r\n name: \"Romania\",\r\n code: \"RO\",\r\n currency: \"RON\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ro.webp\",\r\n phone_code: \"40\",\r\n },\r\n {\r\n name: \"Russia\",\r\n code: \"RU\",\r\n currency: \"RUB\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ru.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Rwanda\",\r\n code: \"RW\",\r\n currency: \"RWF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rw.webp\",\r\n phone_code: \"250\",\r\n },\r\n {\r\n name: \"Saint Barthélemy\",\r\n code: \"BL\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bl.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Helena\",\r\n code: \"SH\",\r\n currency: \"SHP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sh.webp\",\r\n phone_code: \"290\",\r\n },\r\n {\r\n name: \"Saint Kitts and Nevis\",\r\n code: \"KN\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kn.webp\",\r\n phone_code: \"1-869\",\r\n },\r\n {\r\n name: \"Saint Lucia\",\r\n code: \"LC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lc.webp\",\r\n phone_code: \"1-758\",\r\n },\r\n {\r\n name: \"Saint Martin\",\r\n code: \"MF\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mf.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Pierre and Miquelon\",\r\n code: \"PM\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pm.webp\",\r\n phone_code: \"508\",\r\n },\r\n {\r\n name: \"Saint Vincent and the Grenadines\",\r\n code: \"VC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vc.webp\",\r\n phone_code: \"1-784\",\r\n },\r\n {\r\n name: \"Samoa\",\r\n code: \"WS\",\r\n currency: \"WST\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ws.webp\",\r\n phone_code: \"685\",\r\n },\r\n {\r\n name: \"San Marino\",\r\n code: \"SM\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"378\",\r\n },\r\n {\r\n name: \"Sao Tome and Principe\",\r\n code: \"ST\",\r\n currency: \"STN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/st.webp\",\r\n phone_code: \"239\",\r\n },\r\n {\r\n name: \"Saudi Arabia\",\r\n code: \"SA\",\r\n currency: \"SAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sa.webp\",\r\n phone_code: \"966\",\r\n },\r\n {\r\n name: \"Senegal\",\r\n code: \"SN\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sn.webp\",\r\n phone_code: \"221\",\r\n },\r\n {\r\n name: \"Serbia\",\r\n code: \"RS\",\r\n currency: \"RSD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rs.webp\",\r\n phone_code: \"381\",\r\n },\r\n {\r\n name: \"Seychelles\",\r\n code: \"SC\",\r\n currency: \"SCR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sc.webp\",\r\n phone_code: \"248\",\r\n },\r\n {\r\n name: \"Sierra Leone\",\r\n code: \"SL\",\r\n currency: \"SLL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sl.webp\",\r\n phone_code: \"232\",\r\n },\r\n {\r\n name: \"Singapore\",\r\n code: \"SG\",\r\n currency: \"SGD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sg.webp\",\r\n phone_code: \"65\",\r\n },\r\n {\r\n name: \"Sint Eustatius\",\r\n code: \"SX\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sx.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Sint Maarten\",\r\n code: \"SM\",\r\n currency: \"ANG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"1-721\",\r\n },\r\n {\r\n name: \"Slovakia\",\r\n code: \"SK\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sk.webp\",\r\n phone_code: \"421\",\r\n },\r\n {\r\n name: \"Slovenia\",\r\n code: \"SI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/si.webp\",\r\n phone_code: \"386\",\r\n },\r\n {\r\n name: \"Solomon Islands\",\r\n code: \"SB\",\r\n currency: \"SBD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sb.webp\",\r\n phone_code: \"677\",\r\n },\r\n {\r\n name: \"Somalia\",\r\n code: \"SO\",\r\n currency: \"SOS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/so.webp\",\r\n phone_code: \"252\",\r\n },\r\n {\r\n name: \"South Africa\",\r\n code: \"ZA\",\r\n currency: \"ZAR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/za.webp\",\r\n phone_code: \"27\",\r\n },\r\n {\r\n name: \"South Georgia and the South Sandwich Islands\",\r\n code: \"GS\",\r\n currency: \"GBP\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gs.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"South Sudan\",\r\n code: \"SS\",\r\n currency: \"SSP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ss.webp\",\r\n phone_code: \"211\",\r\n },\r\n {\r\n name: \"Spain\",\r\n code: \"ES\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/es.webp\",\r\n phone_code: \"34\",\r\n },\r\n {\r\n name: \"Sri Lanka\",\r\n code: \"LK\",\r\n currency: \"LKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lk.webp\",\r\n phone_code: \"94\",\r\n },\r\n {\r\n name: \"Sudan\",\r\n code: \"SD\",\r\n currency: \"SDG\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sd.webp\",\r\n phone_code: \"249\",\r\n },\r\n {\r\n name: \"Suriname\",\r\n code: \"SR\",\r\n currency: \"SRD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sr.webp\",\r\n phone_code: \"597\",\r\n },\r\n {\r\n name: \"Svalbard and Jan Mayen\",\r\n code: \"SJ\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sj.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Sweden\",\r\n code: \"SE\",\r\n currency: \"SEK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/se.webp\",\r\n phone_code: \"46\",\r\n },\r\n {\r\n name: \"Switzerland\",\r\n code: \"CH\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ch.webp\",\r\n phone_code: \"41\",\r\n },\r\n {\r\n name: \"Syria\",\r\n code: \"SY\",\r\n currency: \"SYP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sy.webp\",\r\n phone_code: \"963\",\r\n },\r\n {\r\n name: \"Taiwan\",\r\n code: \"TW\",\r\n currency: \"TWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tw.webp\",\r\n phone_code: \"886\",\r\n },\r\n {\r\n name: \"Tajikistan\",\r\n code: \"TJ\",\r\n currency: \"TJS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tj.webp\",\r\n phone_code: \"992\",\r\n },\r\n {\r\n name: \"Tanzania\",\r\n code: \"TZ\",\r\n currency: \"TZS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tz.webp\",\r\n phone_code: \"255\",\r\n },\r\n {\r\n name: \"Thailand\",\r\n code: \"TH\",\r\n currency: \"THB\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/th.webp\",\r\n phone_code: \"66\",\r\n },\r\n {\r\n name: \"Timor-Leste\",\r\n code: \"TL\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tl.webp\",\r\n phone_code: \"670\",\r\n },\r\n {\r\n name: \"Togo\",\r\n code: \"TG\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tg.webp\",\r\n phone_code: \"228\",\r\n },\r\n {\r\n name: \"Tokelau\",\r\n code: \"TK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tk.webp\",\r\n phone_code: \"690\",\r\n },\r\n {\r\n name: \"Tonga\",\r\n code: \"TO\",\r\n currency: \"TOP\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/to.webp\",\r\n phone_code: \"676\",\r\n },\r\n {\r\n name: \"Trinidad and Tobago\",\r\n code: \"TT\",\r\n currency: \"TTD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tt.webp\",\r\n phone_code: \"1-868\",\r\n },\r\n {\r\n name: \"Tunisia\",\r\n code: \"TN\",\r\n currency: \"TND\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tn.webp\",\r\n phone_code: \"216\",\r\n },\r\n {\r\n name: \"Turkey\",\r\n code: \"TR\",\r\n currency: \"TRY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tr.webp\",\r\n phone_code: \"90\",\r\n },\r\n {\r\n name: \"Turkmenistan\",\r\n code: \"TM\",\r\n currency: \"TMT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tm.webp\",\r\n phone_code: \"993\",\r\n },\r\n {\r\n name: \"Tuvalu\",\r\n code: \"TV\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tv.webp\",\r\n phone_code: \"688\",\r\n },\r\n {\r\n name: \"Uganda\",\r\n code: \"UG\",\r\n currency: \"UGX\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ug.webp\",\r\n phone_code: \"256\",\r\n },\r\n {\r\n name: \"Ukraine\",\r\n code: \"UA\",\r\n currency: \"UAH\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ua.webp\",\r\n phone_code: \"380\",\r\n },\r\n {\r\n name: \"United Arab Emirates\",\r\n code: \"AE\",\r\n currency: \"AED\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ae.webp\",\r\n phone_code: \"971\",\r\n },\r\n {\r\n name: \"United Kingdom\",\r\n code: \"GB\",\r\n currency: \"GBP\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gb.webp\",\r\n phone_code: \"44\",\r\n },\r\n {\r\n name: \"United States\",\r\n code: \"US\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/us.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Uruguay\",\r\n code: \"UY\",\r\n currency: \"UYU\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uy.webp\",\r\n phone_code: \"598\",\r\n },\r\n {\r\n name: \"Uzbekistan\",\r\n code: \"UZ\",\r\n currency: \"UZS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uz.webp\",\r\n phone_code: \"998\",\r\n },\r\n {\r\n name: \"Vanuatu\",\r\n code: \"VU\",\r\n currency: \"VUV\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vu.webp\",\r\n phone_code: \"678\",\r\n },\r\n {\r\n name: \"Vatican City\",\r\n code: \"VA\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/va.webp\",\r\n phone_code: \"379\",\r\n },\r\n {\r\n name: \"Venezuela\",\r\n code: \"VE\",\r\n currency: \"VES\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ve.webp\",\r\n phone_code: \"58\",\r\n },\r\n {\r\n name: \"Vietnam\",\r\n code: \"VN\",\r\n currency: \"VND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vn.webp\",\r\n phone_code: \"84\",\r\n },\r\n {\r\n name: \"Wallis and Futuna\",\r\n code: \"WF\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/wf.webp\",\r\n phone_code: \"681\",\r\n },\r\n {\r\n name: \"Western Sahara\",\r\n code: \"EH\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eh.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Yemen\",\r\n code: \"YE\",\r\n currency: \"YER\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ye.webp\",\r\n phone_code: \"967\",\r\n },\r\n {\r\n name: \"Zambia\",\r\n code: \"ZM\",\r\n currency: \"ZMW\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zm.webp\",\r\n phone_code: \"260\",\r\n },\r\n {\r\n name: \"Zimbabwe\",\r\n code: \"ZW\",\r\n currency: \"ZWL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zw.webp\",\r\n phone_code: \"263\",\r\n },\r\n];\r\n","export const globalStyles: any = {\r\n verifiedCustdMdlContainer: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n paddingBottom: 20,\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlStartupOutterGrad: {\r\n // <LinearGradient\r\n // colors={['#643fff', '#381ab7']}\r\n // start={{ x: 0.5, y: 0 }}\r\n // end={{ x: 0.5, y: 1 }}\r\n // style={styles.verifiedCustdMdlStartupOutterGrad}\r\n // >\r\n // {/* your content here */}\r\n // </LinearGradient>\r\n\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n // background is handled by LinearGradient above\r\n },\r\n\r\n verifiedCustdMdlStartupOutterNorm: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n backgroundColor: \"#ffffff\",\r\n },\r\n\r\n verifiedCustdMdlStartup: {\r\n width: 650,\r\n height: \"auto\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n overflowX: \"hidden\",\r\n overflowY: \"scroll\",\r\n paddingBottom: 20,\r\n borderWidth: 1,\r\n borderColor: \"#0F122E\",\r\n borderRadius: 10,\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlLoadingScreen: {\r\n borderRadius: 10,\r\n width: \"100%\",\r\n flexShrink: 0,\r\n backgroundColor: \"rgba(0, 0, 0, 0.3)\",\r\n zIndex: 100,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n overflow: \"scroll\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n\r\n verifiedCustdMdlStartupIconContainer: {\r\n width: \"76.119%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n flexDirection: \"column\",\r\n height: 298,\r\n },\r\n\r\n verifiedCustdMdlStartupIconShadow: {\r\n position: \"absolute\",\r\n bottom: 10,\r\n right: 70,\r\n width: \"48.5%\",\r\n },\r\n\r\n verifiedCustdMdlStartupTextContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n marginRight: 20,\r\n marginLeft: 20,\r\n },\r\n\r\n verifiedCustdMdlStartupTextHeader: {\r\n color: \"#ffffff\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 33.6, // 2.1rem\r\n fontWeight: \"700\",\r\n lineHeight: 45,\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlStartupTextFooter: {\r\n color: \"#ffffff\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14.4, // 0.9rem\r\n fontWeight: \"400\",\r\n lineHeight: 24,\r\n opacity: 0.8,\r\n },\r\n\r\n verifiedCustdMdlFtuStartupButton: {\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#cfe600\",\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n margin: 20,\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontWeight: \"500\",\r\n lineHeight: 24,\r\n outline: \"none\",\r\n borderWidth: 0,\r\n },\r\n\r\n verifiedCustdMdlStartupLanguage: {\r\n backgroundColor: \"#ffffff\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStartupLanguageContentContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 32,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStLanguageContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 20,\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStLanguageText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 24, // 1.5rem\r\n fontWeight: \"700\",\r\n lineHeight: 24,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentHover: {\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#9da3ff\",\r\n backgroundColor: \"#ecefff\",\r\n },\r\n\r\n verifiedCustdMdlStContactInput: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 14,\r\n width: \"90%\",\r\n },\r\n\r\n verifiedCustdMdlStContactContentContainer: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: 8,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStContactFirstSection: {\r\n display: \"flex\",\r\n width: 150,\r\n height: 44,\r\n paddingLeft: 6,\r\n alignItems: \"center\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f7f7f8\",\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n },\r\n\r\n verifiedCustdMdlStContactSelectionIcon: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexShrink: 0,\r\n borderRadius: 24,\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n overflow: \"hidden\",\r\n width: 28,\r\n height: 28,\r\n },\r\n\r\n verifiedCustdMdlStContactSelectionText: {\r\n color: \"#0c0c0e\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n width: 40,\r\n flexShrink: 0,\r\n },\r\n\r\n verifiedCustdMdlStContactDropdown: {},\r\n\r\n verifiedCustdMdlStContactFooterFirstSection: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStContactFooterSecondSection: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 4,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlCustomBlankPage: {\r\n height: 0,\r\n },\r\n\r\n // verifiedCustdMdlStContactInputError: {\r\n // display: \"flex\",\r\n // alignItems: \"center\",\r\n // gap: 4,\r\n // },\r\n\r\n verifiedCustdMdlStartupOtpText: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlStartupOtpHeaderText: {\r\n alignSelf: \"stretch\",\r\n color: \"#5b5d6e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 11.2,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 11.2 * 1.5\r\n maxWidth: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlOtpInputGroup: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n alignItems: \"flex-start\",\r\n gap: 8,\r\n },\r\n\r\n verifiedCustdMdlOtpInput: {\r\n display: \"flex\",\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n flex: 1,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f7f7f8\",\r\n width: \"25%\",\r\n textAlign: \"center\",\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpInputRed: {\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#E23636\",\r\n backgroundColor: \"#F7F7F8\",\r\n display: \"flex\",\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n flex: 1,\r\n alignSelf: \"stretch\",\r\n width: \"25%\",\r\n textAlign: \"center\",\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpIncorrectText: {\r\n color: \"#E23636\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n maxWidth: 200,\r\n },\r\n\r\n verifiedCustdMdlOtpTimer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n flexDirection: \"row\",\r\n },\r\n\r\n verifiedCustdMdlOtpTimerText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpTimerTextRed: {\r\n color: \"#e23636\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpResendText: {\r\n color: \"#b6b7c3\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpResendTextActive: {\r\n color: \"#603ff4\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlStOtpIcon: {},\r\n\r\n verifiedCustdMdlStartupButton: {\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#cfe600\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n opacity: 0.5,\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n width: \"90%\",\r\n maxWidth: 500,\r\n },\r\n\r\n verifiedCustdMdlStartupButtonActive: {\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#cfe600\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n width: \"90%\",\r\n maxWidth: 500,\r\n },\r\n\r\n verifiedCustdMdlOtpInputPassword: {\r\n fontWeight: \"900\",\r\n },\r\n\r\n verifiedCustdMdlStartupButtonClick: {\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#0c0c0e\",\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n width: \"90%\",\r\n backgroundColor: \"transparent\",\r\n maxWidth: 500,\r\n },\r\n\r\n verifiedCustdMdlPinInputContainerText: {\r\n color: \"#5B5D6E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 14 * 1.5\r\n },\r\n\r\n verifiedCustdMdlStButtonText: {\r\n color: \"#0c0c0e\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n },\r\n\r\n verifiedCustdMdlStartupSlider: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n borderRadius: 4,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStartupSliderLine: {\r\n height: 4,\r\n flexShrink: 0,\r\n borderRadius: 8,\r\n backgroundColor: \"#eeeef0\",\r\n },\r\n\r\n verifiedCustdMdlStartupSliderLineActive: {\r\n height: 4,\r\n flex: 1,\r\n borderRadius: 8,\r\n backgroundColor: \"#603ff4\",\r\n },\r\n\r\n verifiedCustdMdlStartupContact: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 20,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStartupContactContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlStartupContactText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 16, // 100%\r\n alignSelf: \"stretch\",\r\n maxWidth: \"100%\",\r\n },\r\n\r\n // verifiedCustdMdlStContactContentContainer: {\r\n // display: \"flex\",\r\n // alignItems: \"flex-start\",\r\n // gap: 8,\r\n // width: \"100%\",\r\n // },\r\n\r\n verifiedCustdMdlStContactSecondSection: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n height: 44,\r\n paddingLeft: 6,\r\n alignItems: \"center\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f7f7f8\",\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlStContactSecondSectionPlaceholder: {\r\n color: \"#b6b7c3\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlStartupContactFooter: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n marginTop: 16,\r\n },\r\n\r\n // verifiedCustdMdlStContactFooterFirstSection: {\r\n // display: \"flex\",\r\n // flexDirection: \"column\",\r\n // alignItems: \"center\",\r\n // justifyContent: \"center\",\r\n // gap: 12,\r\n // width: \"100%\",\r\n // },\r\n\r\n // verifiedCustdMdlStContactFooterSecondSection: {\r\n // display: \"flex\",\r\n // alignItems: \"center\",\r\n // justifyContent: \"center\",\r\n // gap: 4,\r\n // width: \"100%\",\r\n // },\r\n\r\n verifiedCustdMdlStContactInputError: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n },\r\n\r\n verifiedCustdMdlInputErrorText: {\r\n color: \"#e23636\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 140%\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlMobileStartupSearchBoxContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 6,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlMobileStartupSearchBox: {\r\n display: \"flex\",\r\n height: 40,\r\n alignItems: \"center\",\r\n gap: 6,\r\n borderRadius: 6,\r\n borderWidth: 1,\r\n borderColor: \"#d8d9df\",\r\n backgroundColor: \"#f7f7f8\",\r\n width: \"100%\",\r\n overflow: \"hidden\", // only works with ScrollView or certain View types\r\n },\r\n\r\n verifiedCustdMdlMsSearchBoxContent: {\r\n height: \"100%\",\r\n width: \"100%\",\r\n backgroundColor: \"transparent\",\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlMsSearchBoxContentPlaceholder: {\r\n color: \"#8f91a1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlMobileStartupSearchContent: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#f7f7f8\",\r\n backgroundColor: \"#ffffff\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n alignSelf: \"stretch\",\r\n overflow: \"scroll\", // or use ScrollView for better scroll control\r\n },\r\n\r\n verifiedCustdMdlMsSearchContent: {\r\n display: \"flex\",\r\n padding: 8,\r\n alignItems: \"center\",\r\n gap: 19,\r\n alignSelf: \"stretch\",\r\n height: 34,\r\n marginBottom: 5,\r\n borderWidth: 1,\r\n borderColor: \"transparent\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentActive: {\r\n display: \"flex\",\r\n padding: 8,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 6,\r\n backgroundColor: \"#f1f8ed\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentTextContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 19,\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentIcon: {\r\n display: \"flex\",\r\n width: 28,\r\n height: 28,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n borderRadius: 24,\r\n borderWidth: 1,\r\n borderColor: \"rgba(0, 0, 0, 0.05)\",\r\n backgroundColor: \"#fff\",\r\n shadowColor: \"#eee\",\r\n shadowOffset: { width: 0, height: 1 },\r\n shadowOpacity: 1,\r\n shadowRadius: 4,\r\n elevation: 3, // for Android shadow\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12.4, // 0.775rem\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18.6, // 12.4 * 1.5\r\n },\r\n\r\n verifiedCustdMdlTermsAndCondition: {\r\n color: \"#8f91a1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 11.2,\r\n fontStyle: \"normal\",\r\n fontWeight: \"450\",\r\n lineHeight: 15.68, // 11.2 * 1.4\r\n },\r\n\r\n verifiedCustdMdlPrivacy: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n marginBottom: 20,\r\n },\r\n\r\n verifiedCustdMdlPrivacyText: {\r\n color: \"#40414c\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 8,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 20,\r\n letterSpacing: 0.25,\r\n },\r\n\r\n verifiedCustdMdlPPPaymentPortalAmountInfoSeparator: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 6,\r\n alignSelf: \"stretch\",\r\n justifyContent: \"center\",\r\n },\r\n\r\n verifiedCustdMdlPPPaymentPortalLine: {\r\n width: \"50%\",\r\n height: 1,\r\n backgroundColor: \"#eeeef0\",\r\n },\r\n\r\n verifiedCustdMdlPPaymentPortalSeparatorText: {\r\n color: \"#4a4a5a\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 140%\r\n opacity: 0.6,\r\n },\r\n\r\n verifiedCustdMdlStartupOtpFooter: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n },\r\n\r\n verifiedCustdMdlStartupOtpFooterText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 12.8,\r\n fontStyle: \"normal\",\r\n fontWeight: \"600\",\r\n lineHeight: 12.8, // 100%\r\n maxWidth: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlOtpInputContainer: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 6,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastError: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastErrorContainer: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n padding: 6,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastErrorTitle: {\r\n margin: 0,\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"600\",\r\n lineHeight: 16, // 100%\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastErrorLabel: {\r\n alignSelf: \"stretch\",\r\n color: \"#8f91a1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccess: {\r\n padding: 12,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f1f8ed\",\r\n width: \"100%\",\r\n height: 55,\r\n maxHeight: 55,\r\n flexDirection: \"row\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessCont: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessContainer: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n padding: 6,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessLink: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessLinkText: {\r\n color: \"#603ff4\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 21, // 150%\r\n textDecorationLine: \"underline\",\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentContainer: {\r\n width: \"28.4375%\",\r\n padding: 24,\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n backgroundColor: \"#fff\",\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 4 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 19,\r\n elevation: 5,\r\n height: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContent: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 32,\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentText: {\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentTextHeader: {\r\n color: \"#0c0c0e\",\r\n textAlign: \"center\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 24,\r\n fontStyle: \"normal\",\r\n fontWeight: \"800\",\r\n lineHeight: 33.6, // 140%\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentTextFooter: {\r\n color: \"#5b5d6e\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 24, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyIcon: {\r\n width: \"90%\",\r\n maxWidth: \"90%\",\r\n height: 250,\r\n maxHeight: 250,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBody: {\r\n padding: 10,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n borderRadius: 8,\r\n backgroundColor: \"#ECEFFF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextCont: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextIcon: {\r\n padding: 8,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 10,\r\n borderRadius: 24,\r\n backgroundColor: \"#C2C7FF\",\r\n width: 20,\r\n height: 20,\r\n overflow: \"hidden\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextLabel: {\r\n width: \"76.1%\",\r\n color: \"#5B5D6E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 15, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextLabelBold: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 14, // 140%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerButtonsCont: {\r\n padding: 10,\r\n flexDirection: \"row\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: 10,\r\n backgroundColor: \"transparent\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerButtonNeut: {\r\n width: \"45%\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"transparent\",\r\n borderWidth: 1,\r\n borderColor: \"#0C0C0E\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 18, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerButtonAction: {\r\n width: \"45%\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#CFE600\",\r\n borderWidth: 0,\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 18, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreBody: {\r\n padding: 15,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n borderRadius: 8,\r\n backgroundColor: \"#ECEFFF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreHeaderCont: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 32,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreTitleCont: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderText: {\r\n alignSelf: \"stretch\",\r\n color: \"#5B5D6E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 12 * 1.5\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreTitle: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 18,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 21.6, // 18 * 1.2\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreLabel: {\r\n color: \"#4A4A5A\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 14 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreLabelLink: {\r\n alignSelf: \"stretch\",\r\n color: \"#4E2BD7\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 18, // 12 * 1.5\r\n textDecorationLine: \"underline\",\r\n // textDecorationStyle: \"solid\", // not supported\r\n // textDecorationThickness: \"auto\", // not supported\r\n // textDecorationSkipInk: \"none\", // not supported\r\n // textUnderlineOffset: \"auto\", // not supported\r\n // textUnderlinePosition: \"from-font\", // not supported\r\n // cursor: \"pointer\",\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderInfoCont: {\r\n padding: 10,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#FFF9C1\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderInfoText: {\r\n color: \"#89490A\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 15, // 10 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderInfoTextBold: {\r\n color: \"#89490A\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 14, // 10 * 1.4\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2Body: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n marginTop: 20,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyHeader: {\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyHeaderFirstText: {\r\n color: \"#0C0C0E\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12.8, // 0.8rem\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.2, // 12.8 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyHeaderSecondText: {\r\n color: \"#0C0C0E\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContent: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeader: {\r\n paddingTop: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n position: \"relative\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont: {\r\n width: \"100%\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel: {\r\n paddingVertical: 4,\r\n paddingHorizontal: 6,\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n position: \"absolute\",\r\n left: 12,\r\n top: -14,\r\n borderRadius: 6,\r\n backgroundColor: \"#DDE1FF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText: {\r\n color: \"#362689\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 14, // 10 * 1.4\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#EEEEF0\",\r\n backgroundColor: \"#F7F7F8\",\r\n padding: 12,\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyHeaderCont: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyHeader: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 6,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyTitle: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n margin: 0,\r\n maxWidth: 150,\r\n // wordWrap: \"break-word\", // Not supported in React Native\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyLabel: {\r\n color: \"#8F91A1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n margin: 0,\r\n maxWidth: 200,\r\n // wordWrap: \"break-word\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyButton: {\r\n flexDirection: \"row\",\r\n paddingVertical: 5.5,\r\n paddingHorizontal: 8,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n borderRadius: 6,\r\n borderWidth: 1,\r\n borderColor: \"#603FF4\",\r\n backgroundColor: \"#603FF4\",\r\n color: \"#ECEFFF\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooter: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n // cursor: \"pointer\" // Not supported\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooterText: {\r\n color: \"#603FF4\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 21, // 14 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreBody: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n padding: 15,\r\n gap: 16,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#D8D9DF\",\r\n minWidth: \"90%\",\r\n marginBottom: 20,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirst: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstHeader: {\r\n flexDirection: \"row\",\r\n alignItems: \"flex-end\",\r\n gap: 5,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstHeaderText: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 11.2, // 0.7rem\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 11.2 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstFooter: {\r\n flexDirection: \"row\",\r\n paddingVertical: 4,\r\n paddingHorizontal: 6,\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n borderRadius: 6,\r\n backgroundColor: \"#DDE1FF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstFooterText: {\r\n color: \"#362689\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 14, // 10 * 1.4\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreSecond: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 4,\r\n width: \"100%\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreSecondInput: {\r\n display: \"flex\",\r\n padding: 12,\r\n alignItems: \"center\",\r\n gap: 182,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#F7F7F8\", // var(--Neutral-50)\r\n color: \"#0C0C0E\", // var(--Neutral-950)\r\n\r\n // Paragraph 02/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 150% of 12px ~ 18px\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreThird: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: 24,\r\n width: \"100%\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreThirdCont: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreThirdContText: {\r\n color: \"#383842\", // var(--Neutral-900)\r\n\r\n // Paragraph 02/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 13,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 20, // 150% of 13px ~ 19.5px\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreButtons: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n backgroundColor: \"transparent\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreButtonsNeut: {\r\n width: \"50%\",\r\n display: \"flex\",\r\n paddingVertical: 7.5,\r\n paddingHorizontal: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n flexBasis: 0,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n color: \"#603FF4\",\r\n textAlign: \"right\",\r\n\r\n // Paragraph 02/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 20, // 140% of 14px ~ 19.6px\r\n backgroundColor: \"transparent\",\r\n cursor: \"pointer\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreButtonsAction: {\r\n width: \"50%\",\r\n display: \"flex\",\r\n paddingVertical: 6,\r\n paddingHorizontal: 8,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n flexBasis: 0,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n backgroundColor: \"#603FF4\",\r\n color: \"#ECEFFF\", // var(--secondary-electric-violet-50)\r\n textAlign: \"right\",\r\n\r\n // Paragraph 02/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 20, // 140% of 14px ~ 19.6px\r\n cursor: \"pointer\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreSecondInputPlaceholder: {\r\n color: \"#B6B7C3\", // var(--Neutral-300)\r\n\r\n // Paragraph 02/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 150% of 12px\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyContent: {\r\n display: \"flex\",\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n flexDirection: \"column\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\",\r\n gap: 61,\r\n borderTopLeftRadius: 8,\r\n borderTopRightRadius: 8,\r\n backgroundColor: \"#FFFFFF\", // var(--Neutral-White-100)\r\n width: \"100%\",\r\n maxHeight: \"62.7%\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyCont: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n width: \"90%\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyHeader: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 16,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyTitle: {\r\n color: \"#0C0C0E\", // var(--Neutral-950)\r\n fontFamily: \"Manrope\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 24, // 150% of 16px\r\n margin: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyLabel: {\r\n color: \"#5B5D6E\", // var(--Neutral-600)\r\n\r\n // Paragraph 01/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 150% of 12px\r\n margin: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooter: {\r\n display: \"flex\",\r\n width: \"90%\",\r\n paddingTop: 15,\r\n paddingBottom: 5,\r\n paddingHorizontal: 15,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 5,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#EEEEF0\", // var(--Neutral-100)\r\n backgroundColor: \"#FFFFFF\", // var(--Neutral-White-100)\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndCont: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n backgroundColor: \"transparent\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n marginBottom: 3,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterInd: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: -6,\r\n borderRadius: 2,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndTextCont: {\r\n display: \"flex\",\r\n paddingVertical: 4,\r\n paddingHorizontal: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n borderRadius: 6,\r\n backgroundColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndText: {\r\n color: \"#FFFFFF\", // var(--Neutral-White-100)\r\n textAlign: \"center\",\r\n\r\n // Paragraph 03/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 17, // 140% of 12px\r\n margin: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndIcon: {\r\n width: 12,\r\n height: 12,\r\n },\r\n\r\n verifiedCustdMdlPrivacyIcon: {\r\n width: 20,\r\n height: 20,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelCont: {\r\n width: \"100%\",\r\n height: 51,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderCont: {\r\n width: \"98%\",\r\n height: 16,\r\n flexShrink: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSlider: {\r\n width: \"100%\",\r\n height: 5,\r\n flexShrink: 0,\r\n borderRadius: 10,\r\n backgroundColor: \"#EEEEF0\", // var(--Neutral-100)\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd: {\r\n height: 5,\r\n flexShrink: 0,\r\n borderRadius: 10,\r\n backgroundColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n position: \"relative\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderIcon: {\r\n flexShrink: 0,\r\n position: \"absolute\",\r\n top: -5,\r\n right: 0,\r\n width: 16,\r\n height: 16,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelTextCont: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n paddingVertical: 10,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText: {\r\n color: \"#0C0C0E\", // var(--Neutral-950)\r\n\r\n // Paragraph 02/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 17, // 140% of 12px\r\n margin: 0,\r\n cursor: \"pointer\",\r\n },\r\n verifiedCustdMdlAC2BContentHeaderBodyHeaderIcons: {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n alignItems: \"center\",\r\n gap: 16,\r\n marginTop: 10,\r\n },\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooterDis: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n marginBottom: 18,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooterTextDis: {\r\n color: \"#B6B7C3\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 21,\r\n },\r\n\r\n verifiedCustdMdlStartupContactContentHeaderCont: {\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n display: \"flex\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerConfirmBodyContentOutter: {\r\n backgroundColor: \"rgba(0, 0, 0, 0.40)\",\r\n zIndex: 5,\r\n position: \"absolute\",\r\n width: \"100%\",\r\n bottom: 0,\r\n right: 0,\r\n left: 0,\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column-reverse\",\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButton: {\r\n display: \"flex\",\r\n paddingVertical: 6,\r\n paddingHorizontal: 12,\r\n alignItems: \"center\",\r\n gap: 4,\r\n borderRadius: 32,\r\n backgroundColor: \"#362689\", // Electric Violet 900\r\n cursor: \"pointer\",\r\n color: \"#FFFFFF\",\r\n borderWidth: 0,\r\n width: \"auto\",\r\n maxWidth: 150,\r\n fontFamily: \"Roboto\",\r\n fontSize: 10.4, // 0.65rem ≈ 10.4px\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 14.56, // 140%\r\n height: 30,\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonCont: {\r\n width: \"auto\",\r\n height: \"auto\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 4,\r\n justifyContent: \"flex-start\",\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonBody: {\r\n height: \"auto\",\r\n width: \"auto\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 4,\r\n borderWidth: 0,\r\n borderRadius: 10,\r\n backgroundColor: \"#F7F7F8\",\r\n padding: 10,\r\n position: \"absolute\",\r\n top: 33,\r\n right: 0,\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonBodyCont: {\r\n backgroundColor: \"transparent\",\r\n cursor: \"pointer\",\r\n borderWidth: 1,\r\n borderColor: \"transparent\",\r\n padding: 5,\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonBodyText: {\r\n width: 110,\r\n fontFamily: \"Roboto\",\r\n fontSize: 10.4,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 14.56,\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdButton: {\r\n display: \"flex\",\r\n width: 100,\r\n paddingVertical: 6,\r\n paddingHorizontal: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n borderRadius: 100,\r\n borderWidth: 1,\r\n borderColor: \"#4e2bd7\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdButtonText: {\r\n color: \"#603ff4\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"600\",\r\n lineHeight: 17.5, // 125%\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThird: {\r\n display: \"flex\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#FFFFFF\",\r\n // Shadow Nav 1\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 0 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 16,\r\n elevation: 4,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContent: {\r\n display: \"flex\",\r\n paddingVertical: 4,\r\n paddingHorizontal: 0,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n cursor: \"pointer\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContentTextContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContentText: {\r\n color: \"#383842\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n maxWidth: 170,\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContentLine: {\r\n width: \"100%\",\r\n height: 1,\r\n backgroundColor: \"#EEEEF0\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlAssetLayoutContent: {\r\n display: \"flex\",\r\n paddingTop: 0,\r\n paddingBottom: 155,\r\n paddingHorizontal: 20,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 20,\r\n borderRadius: 8,\r\n backgroundColor: \"#FFFFFF\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecond: {\r\n display: \"flex\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#FFFFFF\",\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 0 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 16,\r\n elevation: 4,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondText: {\r\n color: \"#383842\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 21,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContainer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 24,\r\n cursor: \"pointer\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContentIcon: {\r\n display: \"flex\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 4,\r\n backgroundColor: \"#ECEFFF\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContentText: {\r\n color: \"#000000\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18,\r\n textTransform: \"capitalize\",\r\n width: \"auto\",\r\n maxWidth: 60,\r\n height: 36,\r\n },\r\n\r\n VerifiedCustdMdlOfferSecurityPopupInfoContentGrad: {\r\n display: \"flex\",\r\n paddingVertical: 6,\r\n paddingHorizontal: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n backgroundColor: \"#FFFFFF\",\r\n position: \"absolute\",\r\n top: -1,\r\n left: 4,\r\n width: 230,\r\n borderRadius: 2,\r\n zIndex: 3,\r\n // <LinearGradient> equivalent gradient can go here\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 0 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 16,\r\n elevation: 4,\r\n },\r\n\r\n verifiedCustdMdlOfferSecurityPopupInfoContentText: {\r\n color: \"#383842\",\r\n width: \"auto\",\r\n maxWidth: 300,\r\n height: \"auto\",\r\n flexWrap: \"wrap\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8,\r\n },\r\n};\r\n","import { initPlatform, getPlatformComponents } from \"./platform\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useVaultStore, VaultContextProvider } from \"../services/store\";\r\nimport { VerifiedCustodyProps, VerifiedWalletVault } from \"../utils/types\";\r\nimport FTUPage from \"./ftu\";\r\nimport EnterPinPage from \"./enterPin\";\r\nimport {\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport { actionTexts, countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport AddCosignersPage from \"./addCosigners\";\r\nimport Success from \"../components/success\";\r\nimport CreatePinPage from \"./createPin\";\r\n\r\nconst VerifiedCustody = (props: VerifiedCustodyProps) => {\r\n const [ready, setReady] = useState<boolean>(false);\r\n const [platformComponents, setPlatformComponents] = useState<any>({});\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(false);\r\n const [isOnboard, setisOnboard] = useState<boolean | null>(null);\r\n const [vaultData, setVaultData] = useState<VerifiedWalletVault>({});\r\n const [_vaultData, _setVaultData] = useState<any>({});\r\n const [isLoading, setIsLoading] = useState<boolean>(false);\r\n const [showDashboard, setShowDasboard] = useState<boolean>(false);\r\n const [showCompleteVault, setShowCompleteVault] = useState<boolean>(false);\r\n const [showResetPin, setShowResetPin] = useState<boolean>(false);\r\n const [showRemoveCosigner, setShowRemoveCosigner] = useState<boolean>(false);\r\n const [action, setAction] = useState<string>(\"\");\r\n const [allCountries, setAllCountries] = useState([]);\r\n const [step, setStep] = useState<string>(\"\");\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n const loadModule = async () => {\r\n await initPlatform();\r\n const components = getPlatformComponents();\r\n if (components) {\r\n setPlatformComponents(components);\r\n setReady(true);\r\n }\r\n };\r\n loadModule();\r\n }, []);\r\n\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Font,\r\n AsyncStorage,\r\n ActivityIndicator,\r\n styles,\r\n } = platformComponents;\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!fontsLoaded && ready) {\r\n PreloadGoogleFonts();\r\n }\r\n }, [ready, fontsLoaded]);\r\n\r\n useEffect(() => {\r\n const checkUserOnboardingStatus = async () => {\r\n if (!isReactNative) {\r\n // On web we use chrome extension storage or localStorage\r\n if (chrome?.storage?.local) {\r\n chrome.storage.local.get(\"myVault\", (res) => {\r\n if (res.myVault && JSON.parse(res.myVault)?.vaultId) {\r\n setVaultData(JSON.parse(res.myVault));\r\n setisOnboard(true);\r\n } else {\r\n setisOnboard(false);\r\n }\r\n });\r\n } else if (localStorage) {\r\n const myVault = JSON.parse(localStorage.getItem(\"myVault\"));\r\n if (myVault && myVault?.vaultId) {\r\n setVaultData(myVault);\r\n setisOnboard(true);\r\n } else setisOnboard(false);\r\n } else {\r\n setisOnboard(false);\r\n }\r\n } else if (AsyncStorage) {\r\n try {\r\n // On react native we use react-native-async-storage\r\n const storedVault = await AsyncStorage.getItem(\"myVault\");\r\n if (storedVault) {\r\n const myVault = JSON.parse(storedVault);\r\n if (myVault?.vaultId) {\r\n setVaultData(myVault);\r\n setisOnboard(true);\r\n return;\r\n }\r\n }\r\n setisOnboard(false);\r\n } catch (err) {\r\n console.error(\"Error reading vault data on react:\", err);\r\n setisOnboard(false);\r\n }\r\n }\r\n };\r\n\r\n if (ready) {\r\n checkUserOnboardingStatus();\r\n }\r\n }, [ready]);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries = countriesDetails //use api instead???\r\n .map((cnt) => {\r\n if (cnt) {\r\n return {\r\n name: cnt?.name,\r\n countryName: cnt?.name,\r\n officialName: cnt?.name,\r\n currencySymbol: cnt?.currency,\r\n currencyName: cnt?.currency,\r\n officialCurrencySymbol: cnt?.currency,\r\n countryCode: cnt?.code,\r\n flag: cnt?.flag,\r\n continent: cnt?.continent,\r\n phone_code: cnt?.phone_code,\r\n code: cnt?.code,\r\n };\r\n }\r\n return null;\r\n })\r\n .filter((cnt) => cnt !== undefined && cnt !== null);\r\n setAllCountries(fmtCountries);\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n return (\r\n <React.Fragment>\r\n {ready && (\r\n <React.Fragment>\r\n {fontsLoaded && (\r\n <VaultContextProvider>\r\n {isLoading && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlLoadingScreen,\r\n height: \"100vh\",\r\n }\r\n : { height: \"100vh\" }\r\n }\r\n className=\"verified-custd-mdl-loading-screen\"\r\n >\r\n <ActivityIndicator size=\"large\" color=\"blue\" />\r\n </View>\r\n )}\r\n <View\r\n id=\"verified-custd-out-cont\"\r\n className=\"verified-custd-mdl-container\"\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlContainer } : {}\r\n }\r\n >\r\n {isOnboard === null && props.delayPageElement && (\r\n <React.Fragment>{props.delayPageElement}</React.Fragment>\r\n )}\r\n\r\n {isOnboard === null && !props.delayPageElement && (\r\n <View\r\n style={\r\n props.delayPageStyle\r\n ? props.delayPageStyle\r\n : {\r\n width: \"100%\",\r\n height: \"100%\",\r\n background: \"transparent\",\r\n border: \"none\",\r\n }\r\n }\r\n >\r\n {\" \"}\r\n </View>\r\n )}\r\n\r\n {isOnboard !== null && (\r\n <React.Fragment>\r\n {!isOnboard && !showDashboard && (\r\n <FTUPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n helperFunctions={props.helperFunctions}\r\n popupView={props.popupView}\r\n action={props.action ? props.action : \"getPk\"}\r\n vaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n txData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n showLogoPage={props.showLogoPage}\r\n logoPageElement={props.logoPageElement}\r\n logoTimeoutTime={props.logoTimeoutTime}\r\n defaultCountry={props.defaultCountry}\r\n setisOnboard={setisOnboard}\r\n setIsLoading={setIsLoading}\r\n dashbordElement={props.dashbordElement}\r\n chainId={Number(props.chainId)}\r\n enablePhone={props.enablePhone}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n />\r\n )}\r\n\r\n {isOnboard && !showDashboard && !showCompleteVault && (\r\n <EnterPinPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n regAddress={vaultData?.regAddress}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={\r\n props.actionText || actionTexts[props.action]\r\n }\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action || \"\"}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n txToSign={props.txToSign || null}\r\n signTxElement={props.signTxElement}\r\n helperFunctions={props.helperFunctions}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n setShowCompleteVault={setShowCompleteVault}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n />\r\n )}\r\n\r\n {isOnboard && showDashboard && showCompleteVault && (\r\n <EnterPinPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n regAddress={vaultData?.regAddress}\r\n vaultChannel={vaultData?.channel}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={\r\n props.actionText || actionTexts[props.action]\r\n }\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action || \"\"}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n txToSign={props.txToSign || null}\r\n signTxElement={props.signTxElement}\r\n helperFunctions={props.helperFunctions}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n setShowCompleteVault={setShowCompleteVault}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"\" && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n heigth: \"100%\",\r\n padding: \"20px\",\r\n }}\r\n >\r\n <AddCosignersPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n />\r\n </View>\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"7\" && (\r\n <Success\r\n platform={platformComponents}\r\n action={props.action}\r\n setStep={setStep}\r\n stepToSet=\"8\"\r\n customTextHeader=\"Successful\"\r\n actionHeaderText=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n actionFooterText=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n showButton={props.dashbordElement ? true : false}\r\n buttonText={\r\n props.dashbordElement ? \"Go To Dashboard\" : \"\"\r\n }\r\n handleShowDashboard={() => {\r\n setShowResetPin(false);\r\n setShowRemoveCosigner(false);\r\n setShowDasboard(true);\r\n }}\r\n buttonFunc={() => {\r\n setShowResetPin(false);\r\n setShowRemoveCosigner(false);\r\n setShowDasboard(true);\r\n }}\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"8\" &&\r\n props.dashbordElement && (\r\n <props.dashbordElement setIsLoading={setIsLoading} />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"8\" &&\r\n !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {!showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n !showRemoveCosigner &&\r\n props.dashbordElement && (\r\n <props.dashbordElement\r\n setIsLoading={setIsLoading}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n setAction={setAction}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n setVaultData={_setVaultData}\r\n initWalletAndContract={initWalletAndContract}\r\n useVaultStore={useVaultStore}\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n !showRemoveCosigner &&\r\n !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n !showRemoveCosigner &&\r\n showDashboard &&\r\n showResetPin && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n heigth: \"100%\",\r\n padding: \"20px\",\r\n }}\r\n >\r\n <CreatePinPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n action=\"reset-pin\"\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n vaultData={_vaultData}\r\n selectedCountry={selectedCountry}\r\n helperFunctions={props.helperFunctions}\r\n isExistingUser={true}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n />\r\n </View>\r\n )}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n showRemoveCosigner && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n heigth: \"100%\",\r\n padding: \"20px\",\r\n }}\r\n >\r\n <AddCosignersPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n action={\"remove-cosigner\"}\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n />\r\n </View>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </View>\r\n </VaultContextProvider>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </React.Fragment>\r\n )}\r\n {!ready &&\r\n typeof navigator !== \"undefined\" &&\r\n navigator.product !== \"ReactNative\" && (\r\n <React.Fragment>Preparing Module...</React.Fragment>\r\n )}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default VerifiedCustody;\r\n","import React, { createContext, useContext, useState } from \"react\";\r\n\r\ninterface VaultStore {\r\n chainId: number | null;\r\n pk: string | null;\r\n address: string | null;\r\n signer: any;\r\n provider: any;\r\n vaultContract: any;\r\n vaultData: any;\r\n setChainId: (chainId: number | null) => void;\r\n setPk: (pk: string | null) => void;\r\n setAddress: (address: string | null) => void;\r\n setSigner: (signer: any) => void;\r\n setProvider: (provider: any) => void;\r\n setVaultContract: (vaultContract: any) => void;\r\n setVaultData: (vaultData: any) => void;\r\n}\r\n\r\nconst VaultStoreContext = createContext<VaultStore | undefined>(undefined);\r\n\r\nexport const VaultContextProvider = ({ children }: { children: any }) => {\r\n const [chainId, setChainId] = useState<number | null>(null);\r\n const [pk, setPk] = useState<string | null>(null);\r\n const [address, setAddress] = useState<string | null>(null);\r\n const [signer, setSigner] = useState<any>(null);\r\n const [provider, setProvider] = useState<any>(null);\r\n const [vaultContract, setVaultContract] = useState<any>(null);\r\n const [vaultData, setVaultData] = useState<any>(null);\r\n\r\n return (\r\n <VaultStoreContext.Provider\r\n value={{\r\n chainId,\r\n pk,\r\n address,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData,\r\n setChainId,\r\n setPk,\r\n setAddress,\r\n setSigner,\r\n setProvider,\r\n setVaultContract,\r\n setVaultData,\r\n }}\r\n >\r\n {children}\r\n </VaultStoreContext.Provider>\r\n );\r\n};\r\n\r\nexport const useVaultStore = () => {\r\n const context = useContext(VaultStoreContext);\r\n if (!context) {\r\n throw new Error(\"useVaultStore must be used within VaultContextProvider\");\r\n }\r\n return context;\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { debounce } from \"lodash\";\r\nimport { actionTexts, countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport ContactPage from \"./contact\";\r\nimport OTPPage from \"./otp\";\r\nimport CreatePinPage from \"./createPin\";\r\nimport Success from \"../components/success\";\r\nimport AddCosignersPage from \"./addCosigners\";\r\nimport EnterPinPage from \"./enterPin\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst FTUPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n popupView?: boolean;\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n chainId?: number;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n showLogoPage?: boolean;\r\n logoPageElement?: React.JSX.Element;\r\n logoTimeoutTime?: number;\r\n showStartupPage?: boolean;\r\n startupPageElement?: React.JSX.Element;\r\n enablePhone?: boolean;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n setIsLoading?: (isLoading: boolean) => void;\r\n setShowDashboard?: (showDashboard: boolean) => void;\r\n setShowResetPin?: (showResetPin: boolean) => void;\r\n setShowRemoveCosigner?: (showRemoveCosigner: boolean) => void;\r\n dashbordElement?: React.ComponentType<{\r\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n }>;\r\n rootTagId?: string;\r\n rootExpandedWidth?: string;\r\n rootExpandedHeight?: string;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n } = props?.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [showLogo, setShowLogo] = useState<boolean>(\r\n props.showLogoPage || false\r\n );\r\n const [allCountries, setAllCountries] = useState<any[]>([]);\r\n const [step, setStep] = useState<string>(\"2\");\r\n\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n const [showSuccessBtn, setShowSuccessBtn] = useState<boolean>(false);\r\n const [successBtnText, setSuccessBtnText] = useState<string>(\"\");\r\n const [successBtnNeutText, setSuccessBtnNeutText] = useState<string>(\"\");\r\n const [actionHeaderText, setActionHeaderText] = useState<string>(\"\");\r\n const [actionFooterText, setActionFooterText] = useState<string>(\"\");\r\n const [successBtnFunc, setSuccessBtnFunc] = useState<any>(null);\r\n const [successBtnNeutFunc, setSuccessBtnNeutFunc] = useState<any>(null);\r\n const [isExistingUser, setIsExistingUser] = useState<boolean>(false);\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n vaultData,\r\n chainId,\r\n vaultContract,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const initializeUserWalletAndContract = async () => {\r\n let lastPk: any;\r\n\r\n if (!isReactNative && chrome?.storage?.local) {\r\n lastPk = await new Promise((resolve) => {\r\n chrome.storage.local.get([\"lastPk\"], (result) => {\r\n resolve(result.lastPk);\r\n });\r\n });\r\n } else if (!isReactNative && localStorage) {\r\n lastPk = localStorage.getItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n lastPk = AsyncStorage.getItem(\"lastPk\");\r\n }\r\n\r\n const walletAndContractDetails = await initWalletAndContract(\r\n props.chainId,\r\n lastPk && lastPk?.length > 0 ? lastPk : undefined\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultData(walletAndContractDetails.vaultData);\r\n if (walletAndContractDetails.vaultContract?.contractAddress) {\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n } else {\r\n setVaultContract(undefined);\r\n }\r\n };\r\n if (!vaultContract?.contractAddress) {\r\n initializeUserWalletAndContract();\r\n }\r\n }, [vaultContract]);\r\n\r\n useEffect(() => {\r\n const handleLogoDisplay = debounce(() => {\r\n setShowLogo(false);\r\n }, props.logoTimeoutTime ?? 3000);\r\n handleLogoDisplay();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries: any = countriesDetails\r\n .map((cnt: any) => {\r\n if (!cnt) return undefined;\r\n return {\r\n name: cnt.name,\r\n countryName: cnt.name,\r\n officialName: cnt.name,\r\n currencySymbol: cnt.currency,\r\n currencyName: cnt.currency,\r\n officialCurrencySymbol: cnt.currency,\r\n countryCode: cnt.code,\r\n flag: cnt.flag,\r\n continent: cnt.continent,\r\n phone_code: cnt.phone_code,\r\n code: cnt.code,\r\n };\r\n })\r\n .filter(Boolean);\r\n setAllCountries(fmtCountries);\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n return (\r\n <ScrollView style={{ padding: 20, width: \"100%\", heigth: \"100%\" }}>\r\n {fontsLoaded && showLogo && props.logoPageElement && (\r\n <View>{props.logoPageElement}</View>\r\n )}\r\n {fontsLoaded && !showLogo && (\r\n <View style={{ width: \"100%\", heigth: \"100%\" }}>\r\n {/* Render steps */}\r\n {step === \"2\" && (\r\n <ContactPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setUserNumberFmt={setUserNumberFmt}\r\n userNumberFmt={userNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n {step === \"3\" && (\r\n <OTPPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n helperFunctions={props.helperFunctions}\r\n setIsExistingUser={setIsExistingUser}\r\n />\r\n )}\r\n\r\n {step === \"4\" && (\r\n <CreatePinPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setShowSuccessBtn={setShowSuccessBtn}\r\n setSuccessBtnText={setSuccessBtnText}\r\n setSuccessBtnNeutText={setSuccessBtnNeutText}\r\n setSuccessBtnFunc={setSuccessBtnFunc}\r\n setSuccessBtnNeutFunc={setSuccessBtnNeutFunc}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n action={props.action}\r\n vaultData={props.vaultData}\r\n txData={props.txData}\r\n setActionHeaderText={setActionHeaderText}\r\n setActionFooterText={setActionFooterText}\r\n helperFunctions={props.helperFunctions}\r\n isExistingUser={isExistingUser}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n />\r\n )}\r\n\r\n {step === \"5\" && (\r\n <Success\r\n platform={props.platform}\r\n setStep={setStep}\r\n stepToSet=\"6\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully created a new account.\"\r\n action={props.action}\r\n showButton={showSuccessBtn}\r\n buttonText={successBtnText}\r\n buttonNeutText={successBtnNeutText}\r\n buttonFunc={successBtnFunc}\r\n buttonNeutFunc={successBtnNeutFunc}\r\n actionHeaderText={actionHeaderText}\r\n actionFooterText={actionFooterText}\r\n />\r\n )}\r\n\r\n {step === \"6\" && (\r\n <AddCosignersPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n setShowDashboard={props.setShowDashboard}\r\n setShowResetPin={props.setShowResetPin}\r\n setShowRemoveCosigner={props.setShowRemoveCosigner}\r\n />\r\n )}\r\n\r\n {step === \"7\" && props.action === \"\" && (\r\n <Success\r\n platform={props.platform}\r\n action={props.action}\r\n setStep={setStep}\r\n stepToSet=\"8\"\r\n actionHeaderText=\"Successful\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n actionFooterText=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n showButton={props.dashbordElement ? true : false}\r\n buttonText={props.dashbordElement ? \"Go To Dashboard\" : \"\"}\r\n handleShowDashboard={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n buttonFunc={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n />\r\n )}\r\n\r\n {step === \"7\" && props.action !== \"\" && (\r\n <Success\r\n platform={props.platform}\r\n action={props.action}\r\n messageTosend={\r\n props.action === \"signRecovery\"\r\n ? {\r\n type: \"signRecovery\",\r\n value: {\r\n vaultData: props.vaultData,\r\n txData: { newUser: true, ...props.txData },\r\n chainId: chainId,\r\n },\r\n }\r\n : { type: \"closePopup\", key: \"\", value: \"\" }\r\n }\r\n actionHeaderText=\"Successful\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n actionFooterText=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n showButton={props.dashbordElement ? true : false}\r\n buttonText={props.dashbordElement ? \"Go To Dashboard\" : \"\"}\r\n handleShowDashboard={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n buttonFunc={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n />\r\n )}\r\n\r\n {step === \"8\" && props.dashbordElement && (\r\n <props.dashbordElement setIsLoading={props.setIsLoading} />\r\n )}\r\n\r\n {step === \"8\" && !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {step === \"0\" && (\r\n <EnterPinPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n vaultId={vaultData?.vaultId}\r\n setisOnboard={props.setisOnboard}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n actionText={actionTexts[\"getPk\"]}\r\n setIsLoading={props.setIsLoading}\r\n newChainId={Number(chainId || props.chainId)}\r\n action={\"getPk\"}\r\n reqVaultData={vaultData}\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(props.txData[ky]);\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n helperFunctions={props.helperFunctions}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n setShowDashboard={props.setShowDashboard}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n />\r\n )}\r\n </View>\r\n )}\r\n {!fontsLoaded && (\r\n <View style={{ padding: 20, width: \"100%\", heigth: \"100%\" }}>\r\n <Text>Loading Module Fonts...</Text>\r\n </View>\r\n )}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default FTUPage;\r\n","import {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport { allGoogleFontUrls, defaultChainId, imageAssets } from \"./constants\";\r\nimport { ChainConfig } from \"./config\";\r\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\r\nimport { sha256 } from \"@noble/hashes/sha256\";\r\nimport { randomBytes, utf8ToBytes, bytesToUtf8 } from \"@noble/hashes/utils\";\r\nimport { gcm } from \"@noble/ciphers/aes\";\r\nimport crypt from \"crypto-js\";\r\nimport { toast } from \"react-toastify\";\r\nimport React from \"react\";\r\nimport {\r\n base,\r\n baseSepolia,\r\n gnosis,\r\n mainnet,\r\n polygon,\r\n sepolia,\r\n} from \"viem/chains\";\r\nimport { http } from \"viem\";\r\nimport { computeNexusAccount } from \"../lib/biconomyRNFix\";\r\n\r\n/**\r\n *\r\n * @param document Any web page loaded in the browser / Dom tree\r\n */\r\nexport const loadAllGoogleFonts = (document: Document) => {\r\n const apiExists = document.querySelector(\r\n `link[href=\"https://fonts.googleapis.com\"]`\r\n );\r\n if (!apiExists) {\r\n const apiLink = document.createElement(\"link\");\r\n apiLink.rel = \"preconnect\";\r\n apiLink.href = \"https://fonts.googleapis.com\";\r\n document.head.appendChild(apiLink);\r\n }\r\n const staticExists = document.querySelector(\r\n `link[href=\"https://fonts.gstatic.com\"]`\r\n );\r\n if (!staticExists) {\r\n const staticLink = document.createElement(\"link\");\r\n staticLink.rel = \"preconnect\";\r\n staticLink.href = \"https://fonts.gstatic.com\";\r\n document.head.appendChild(staticLink);\r\n }\r\n allGoogleFontUrls.map((fontUrl) => {\r\n const fontExists = document.querySelector(`link[href=\"${fontUrl}\"]`);\r\n if (!fontExists) {\r\n const fontLink = document.createElement(\"link\");\r\n fontLink.rel = \"stylesheet\";\r\n fontLink.href = fontUrl;\r\n document.head.appendChild(fontLink);\r\n }\r\n });\r\n return true;\r\n};\r\n\r\n/**\r\n *\r\n * @param expoFont default export from expo-font for react-native\r\n */\r\nexport const loadAllGoogleFontsRN = async (expoFont: any) => {\r\n await expoFont?.loadAsync({\r\n Roboto: require(\"../assets/reactNativeFonts/Roboto-Regular.ttf\"),\r\n Manrope: require(\"../assets/reactNativeFonts/Manrope-Regular.ttf\"),\r\n Hind: require(\"../assets/reactNativeFonts/Hind-Regular.ttf\"),\r\n });\r\n return true;\r\n};\r\n\r\n/**\r\n * initialize user's wallet and vault contract using existing private key or create a new wallet for user\r\n * unsupported/invalid chainId passed will automatically use default supported chainId\r\n * @param chainId\r\n * @param privateKey\r\n *\r\n */\r\nexport const initWalletAndContract = async (\r\n chainId?: number,\r\n privateKey?: string\r\n) => {\r\n try {\r\n let sender: VerifiedWallet;\r\n //import existing wallet or create new one.\r\n if (privateKey) {\r\n sender = new VerifiedWallet(privateKey);\r\n } else {\r\n const mnemonics = VerifiedWallet.generateMnemonic();\r\n sender = VerifiedWallet.importWallet(mnemonics);\r\n }\r\n\r\n //initialize provider, signer, privatekey and vault contract\r\n const cntAddresses: any = contractAddress;\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n const pk = sender.privateKey;\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId]?.Custody);\r\n const _signer: any = signer;\r\n const chainToUse = [\r\n base,\r\n mainnet,\r\n gnosis,\r\n polygon,\r\n sepolia,\r\n baseSepolia,\r\n ].find((nt) => Number(nt?.id) === Number(_chainId));\r\n const address = await computeNexusAccount(chainToUse, http(), _signer);\r\n if (_chainId === 11155111) {\r\n console.log(\"address to send test ETH to: \", sender.address);\r\n }\r\n\r\n //valid return\r\n return {\r\n chainId: _chainId,\r\n address,\r\n pk,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData: null,\r\n };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\r\n \"Error while initializing user's wallet and contract: \",\r\n err\r\n );\r\n }\r\n //default return;\r\n return {\r\n chainId: null,\r\n address: null,\r\n pk: null,\r\n signer: null,\r\n provider: null,\r\n vaultContract: null,\r\n vaultData: null,\r\n };\r\n }\r\n};\r\n\r\nexport const hashTheString = (text: string): string => {\r\n const lower = text.toLowerCase();\r\n const hash = sha256(utf8ToBytes(lower));\r\n return (\r\n \"0x\" +\r\n Array.from(hash)\r\n .map((b) => b.toString(16).padStart(2, \"0\"))\r\n .join(\"\") //pure js for react native\r\n );\r\n};\r\n\r\nexport const hashTheBuffer = (buffer: ArrayBuffer | Uint8Array): string => {\r\n const bytes = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\r\n const hash = sha256(bytes);\r\n return (\r\n \"0x\" +\r\n Array.from(hash)\r\n .map((b) => b.toString(16).padStart(2, \"0\"))\r\n .join(\"\")\r\n );\r\n};\r\n\r\nexport const encryptString = (text: string, secretKey: string) => {\r\n const encryptedAES = crypt.AES.encrypt(text, secretKey);\r\n return encryptedAES.toString();\r\n};\r\n\r\nexport const decryptString = (encryptedText: string, secretKey: string) => {\r\n var decryptedBytes = crypt.AES.decrypt(encryptedText, secretKey);\r\n var decryptedText = decryptedBytes.toString(crypt.enc.Utf8);\r\n return decryptedText;\r\n};\r\n\r\nexport const getErrorToastContent = (title: string, content: string) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-error\">\r\n <img style={{ marginLeft: \"5px\" }} src={imageAssets.errorAlert} alt=\"\" />\r\n <div className=\"verified-custd-mdl-general-web-toast-error-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const getSuccessToastContent = (\r\n title: string,\r\n content: string,\r\n link: string\r\n) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-success\">\r\n <div className=\"verified-custd-mdl-general-web-toast-success-cont\">\r\n <img\r\n style={{ marginLeft: \"5px\" }}\r\n src={imageAssets.successAlert}\r\n alt=\"\"\r\n />\r\n <div className=\"verified-custd-mdl-general-web-toast-success-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n {link?.length > 0 && (\r\n <div className=\"verified-custd-mdl-general-web-toast-success-link\">\r\n <a\r\n className=\"verified-custd-mdl-general-web-toast-success-link-text\"\r\n href={link}\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n >\r\n Follow your transaction.\r\n </a>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const errorToast = (title: string, content: string) => {\r\n toast.dismiss();\r\n return toast.error(getErrorToastContent(title, content), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"#fef2f2\",\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n\r\nexport const successToast = (title: string, content: string, link: string) => {\r\n toast.dismiss();\r\n return toast.success(getSuccessToastContent(title, content, link), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"var(--Success-50, #F1F8ED)\",\r\n\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n\r\nexport const resolveGlobalStyleUnit = (\r\n isReactNative: boolean,\r\n unitValueString: string,\r\n baseRem = 16\r\n) => {\r\n if (!isReactNative) {\r\n return unitValueString;\r\n }\r\n const value = parseFloat(unitValueString);\r\n\r\n if (unitValueString.endsWith(\"rem\")) {\r\n return value * baseRem;\r\n } else if (unitValueString.endsWith(\"px\")) {\r\n return value; // treat px as dp\r\n } else {\r\n return value; // unitless, just parse\r\n }\r\n};\r\n\r\nconst hexToBytes = (hex: string) => {\r\n // Remove 0x prefix if present\r\n const cleanHex =\r\n hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\r\n\r\n if (cleanHex.length % 2 !== 0) {\r\n throw new Error(\"Invalid hex string: odd length\");\r\n }\r\n\r\n const byteLength = cleanHex.length / 2;\r\n const bytes = new Uint8Array(byteLength);\r\n for (let i = 0; i < byteLength; i++) {\r\n const byteHex = cleanHex.substr(i * 2, 2);\r\n bytes[i] = parseInt(byteHex, 16);\r\n }\r\n return bytes;\r\n};\r\n\r\nexport const publicKeyCredentialCreationOptions = (\r\n projectName: string,\r\n vaultId: string,\r\n hashedVaultId: string\r\n) => {\r\n const userId = hexToBytes(hashedVaultId);\r\n const credentials: any = {\r\n challenge: randomBytes(32),\r\n rp: {\r\n name: projectName,\r\n },\r\n user: {\r\n id: userId,\r\n name: vaultId,\r\n displayName: vaultId,\r\n },\r\n pubKeyCredParams: [\r\n { alg: -7, type: \"public-key\" }, // ES256\r\n { type: \"public-key\", alg: -257 }, // RS256\r\n ],\r\n authenticatorSelection: {\r\n userVerification: \"preferred\",\r\n residentKey: \"preferred\",\r\n },\r\n timeout: 60000,\r\n attestation: \"direct\",\r\n };\r\n\r\n return credentials;\r\n};\r\n\r\nexport const publicKeyCredentialRequestOptions = () => {\r\n const credential: any = {\r\n challenge: randomBytes(32),\r\n timeout: 60000,\r\n userVerification: \"preferred\",\r\n // allowCredentials: [\r\n // {\r\n // type: \"public-key\",\r\n // userHandle: userId,\r\n // },\r\n // ], //fetch all by default\r\n };\r\n\r\n return credential;\r\n};\r\n\r\n// Helpers for base64url encoding/decoding\r\nconst Uint8ArraytoBase64 = (buf: Uint8Array): string =>\r\n btoa(String.fromCharCode(...buf))\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\")\r\n .replace(/=+$/, \"\");\r\n\r\n// Base64url decode to Uint8Array\r\nconst Base64URLtoUint8Array = (base64url: string): Uint8Array => {\r\n const base64 =\r\n base64url.replace(/-/g, \"+\").replace(/_/g, \"/\") +\r\n \"===\".slice((base64url.length + 3) % 4);\r\n const binary = atob(base64);\r\n return new Uint8Array([...binary].map((char) => char.charCodeAt(0)));\r\n};\r\n\r\nexport const encryptWithPasskey = async (\r\n plaintext: string,\r\n rawId: ArrayBuffer | Uint8Array, // allow both ArrayBuffer or Uint8Array\r\n rawIdString: string\r\n): Promise<string> => {\r\n // Convert rawId to Uint8Array if needed\r\n const rawIdBytes =\r\n rawId instanceof Uint8Array ? rawId : new Uint8Array(rawId);\r\n\r\n // Generate random 8 bytes for salt nonce\r\n const randomBytes8 = randomBytes(8);\r\n const randomHex = Array.from(randomBytes8)\r\n .map((b) => b.toString(16).padStart(2, \"0\"))\r\n .join(\"\");\r\n\r\n // Hash rawIdString + randomHex to create salt string\r\n const saltString = hashTheString(`${rawIdString}:${randomHex}`);\r\n const salt = utf8ToBytes(saltString);\r\n\r\n // Generate random 12-byte IV (nonce) for AES-GCM\r\n const iv = randomBytes(12);\r\n\r\n // Derive a 256-bit key using PBKDF2 with SHA-256 and 300k iterations\r\n const key = pbkdf2(sha256, rawIdBytes, salt, { c: 300_000, dkLen: 32 });\r\n\r\n // Encrypt plaintext using AES-GCM (noble's gcm)\r\n const cipher = gcm(key, iv);\r\n const ciphertext = cipher.encrypt(utf8ToBytes(plaintext));\r\n\r\n // Return combined base64url(salt) + \".\" + base64url(iv) + \".\" + base64url(ciphertext)\r\n return [\r\n Uint8ArraytoBase64(salt),\r\n Uint8ArraytoBase64(iv),\r\n Uint8ArraytoBase64(ciphertext),\r\n ].join(\".\");\r\n};\r\n\r\nexport const decryptWithPasskey = async (\r\n encryptedString: string,\r\n rawId: ArrayBuffer | Uint8Array // allow both ArrayBuffer or Uint8Array\r\n): Promise<string> => {\r\n const [saltB64, ivB64, ciphertextB64] = encryptedString.split(\".\");\r\n if (!saltB64 || !ivB64 || !ciphertextB64) {\r\n throw new Error(\"Invalid encrypted data format\");\r\n }\r\n\r\n // Convert rawId to Uint8Array if needed\r\n const rawIdBytes =\r\n rawId instanceof Uint8Array ? rawId : new Uint8Array(rawId);\r\n\r\n const salt = Base64URLtoUint8Array(saltB64);\r\n const iv = Base64URLtoUint8Array(ivB64);\r\n const ciphertext = Base64URLtoUint8Array(ciphertextB64);\r\n\r\n // Derive the same key with PBKDF2 (300k iterations)\r\n const key = pbkdf2(sha256, rawIdBytes, salt, { c: 300_000, dkLen: 32 });\r\n\r\n // Decrypt ciphertext using AES-GCM\r\n const cipher = gcm(key, iv);\r\n\r\n try {\r\n const plaintextBytes = cipher.decrypt(ciphertext);\r\n return bytesToUtf8(plaintextBytes);\r\n } catch {\r\n throw new Error(\"Decryption failed: invalid key or corrupted data\");\r\n }\r\n};\r\n","import { imageAssets } from \"../utils/constants\";\r\n\r\nexport const ChainConfig: any = {\r\n 1: {\r\n chainId: `0x${Number(1).toString(16)}`,\r\n chainName: \"Ethereum\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://eth-mainnet.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://etherscan.io/\"],\r\n icon: imageAssets.ethereumIcon,\r\n },\r\n\r\n 8453: {\r\n chainId: `0x${Number(8453).toString(16)}`,\r\n chainName: \"Base Mainnet\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://base-mainnet.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://basescan.org/\"],\r\n Icon: imageAssets.baseIcon,\r\n },\r\n\r\n 100: {\r\n chainId: `0x${Number(100).toString(16)}`,\r\n chainName: \"Gnosis\",\r\n nativeCurrency: {\r\n name: \"XDAI\",\r\n symbol: \"XDAI\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://rpc.gnosischain.com/\"],\r\n blockExplorerUrls: [\"https://gnosisscan.io/\"],\r\n icon: imageAssets.gnosisIcon,\r\n },\r\n\r\n 11155111: {\r\n chainId: `0x${Number(11155111).toString(16)}`,\r\n chainName: \"Sepolia Test Network\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://eth-sepolia.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://sepolia.etherscan.io/\"],\r\n icon: imageAssets.ethereumIcon,\r\n custodyContractBlock: 9236510,\r\n },\r\n\r\n 84532: {\r\n chainId: `0x${Number(84532).toString(16)}`,\r\n chainName: \"Base Sepolia\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://sepolia.base.org\"],\r\n blockExplorerUrls: [\"https://sepolia.basescan.org/\"],\r\n icon: imageAssets.baseIcon,\r\n },\r\n};\r\n","import {\r\n createPublicClient,\r\n encodeAbiParameters,\r\n encodeFunctionData,\r\n pad,\r\n toHex,\r\n zeroAddress,\r\n zeroHash,\r\n} from \"viem\";\r\nimport BOOSTRAP from \"./abi/boostrap.json\";\r\nimport FACTORY from \"./abi/factory.json\";\r\n\r\nconst NEXUS_ACCOUNT_FACTORY_ADDRESS =\r\n \"0x000000001D1D5004a02bAfAb9de2D6CE5b7B13de\";\r\nconst NEXUS_BOOTSTRAP_ADDRESS = \"0x00000000D3254452a909E4eeD47455Af7E27C289\";\r\nconst DUMMY_SIGNATURE =\r\n \"0x81d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b\";\r\nconst index = 0n;\r\n\r\nconst toInitData = (mod: any) => {\r\n const module = mod.module || mod.address;\r\n const data = mod.initData || mod.data;\r\n if (!module || !data) {\r\n throw new Error(\"Module or data is missing\");\r\n }\r\n return { module, data };\r\n};\r\n\r\nconst getInitData = (params: any) =>\r\n encodeAbiParameters(\r\n [\r\n { name: \"bootstrap\", type: \"address\" },\r\n { name: \"initData\", type: \"bytes\" },\r\n ],\r\n [\r\n params.bootStrapAddress,\r\n encodeFunctionData({\r\n abi: BOOSTRAP.abi,\r\n functionName: \"initNexusWithDefaultValidatorAndOtherModulesNoRegistry\",\r\n args: [\r\n params.defaultValidator.data,\r\n params.validators,\r\n params.executors,\r\n params.hook,\r\n params.fallbacks,\r\n params.prevalidationHooks,\r\n ],\r\n }),\r\n ]\r\n );\r\n\r\nconst toValidator = (parameters: any) => {\r\n const {\r\n deInitData = \"0x\",\r\n type = \"validator\",\r\n signer,\r\n data = \"0x\",\r\n module,\r\n ...rest\r\n } = parameters;\r\n return {\r\n deInitData,\r\n data,\r\n module,\r\n address: module,\r\n signer,\r\n type,\r\n getStubSignature: async () => DUMMY_SIGNATURE,\r\n signUserOpHash: async (userOpHash: any) =>\r\n await signer.signMessage({ message: { raw: userOpHash } }),\r\n signMessage: async (message: any) => await signer.signMessage({ message }),\r\n ...rest,\r\n };\r\n};\r\n\r\nconst toDefaultModule = (parameters: any) =>\r\n toValidator({\r\n initData: parameters.signer.address,\r\n data: parameters.signer.address,\r\n deInitData: \"0x\",\r\n ...parameters,\r\n address: zeroAddress,\r\n module: zeroAddress,\r\n type: \"validator\",\r\n getStubSignature: async () => DUMMY_SIGNATURE,\r\n });\r\n\r\nconst toEmptyHook = () => ({\r\n module: zeroAddress,\r\n data: zeroHash,\r\n});\r\n\r\nexport const computeNexusAccount = async (\r\n chain: any,\r\n transport: any,\r\n signer: any\r\n) => {\r\n const publicClient = createPublicClient({ chain, transport });\r\n\r\n const defaultValidator = toDefaultModule({ signer });\r\n const validators = [];\r\n const executors = [];\r\n const hook = toEmptyHook();\r\n const fallbacks = [];\r\n const registryAddress = zeroAddress;\r\n const factoryAddress = NEXUS_ACCOUNT_FACTORY_ADDRESS;\r\n const bootStrapAddress = NEXUS_BOOTSTRAP_ADDRESS;\r\n const prevalidationHooks = [];\r\n\r\n const initData = getInitData({\r\n defaultValidator: toInitData(defaultValidator),\r\n validators: validators.map(toInitData),\r\n executors: executors.map(toInitData),\r\n hook: toInitData(hook),\r\n fallbacks: fallbacks.map(toInitData),\r\n registryAddress,\r\n bootStrapAddress,\r\n prevalidationHooks,\r\n });\r\n\r\n const salt = pad(toHex(index), { size: 32 });\r\n const nexusAccount: any = await publicClient.readContract({\r\n address: factoryAddress,\r\n abi: FACTORY.abi,\r\n functionName: \"computeAccountAddress\",\r\n args: [initData, salt],\r\n });\r\n if (nexusAccount?.toLowerCase() !== zeroAddress?.toLowerCase()) {\r\n return nexusAccount;\r\n }\r\n return;\r\n};\r\n","{\r\n \"abi\": [\r\n {\r\n \"type\": \"constructor\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"defaultValidator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"stateMutability\": \"nonpayable\"\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"CanNotRemoveLastValidator\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"DefaultValidatorAlreadyInstalled\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"EmergencyUninstallSigError\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"EnableModeSigError\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackAlreadyInstalledForSelector\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackCallTypeInvalid\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackHandlerUninstallFailed\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackNotInstalledForSelector\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackSelectorForbidden\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"HookAlreadyInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"currentHook\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"HookPostCheckFailed\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidInput\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidModule\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidModuleTypeId\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidNonce\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_AlreadyInitialized\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_EntryAlreadyInList\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"entry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_InvalidEntry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"entry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_InvalidPage\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"MismatchModuleTypeId\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"MissingFallbackHandler\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ModuleAddressCanNotBeZero\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ModuleAlreadyInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ModuleNotInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"NoValidatorInstalled\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"PrevalidationHookAlreadyInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"currentPreValidationHook\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"UnauthorizedOperation\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"operator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"UnsupportedCallType\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"callType\",\r\n \"type\": \"bytes1\",\r\n \"internalType\": \"CallType\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ValidatorNotInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"ERC7484RegistryConfigured\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"indexed\": true,\r\n \"internalType\": \"contract IERC7484\"\r\n }\r\n ],\r\n \"anonymous\": false\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"ModuleInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"indexed\": false,\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"indexed\": false,\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"anonymous\": false\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"ModuleUninstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"indexed\": false,\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"indexed\": false,\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"anonymous\": false\r\n },\r\n {\r\n \"type\": \"fallback\",\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"eip712Domain\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"name\": \"fields\",\r\n \"type\": \"bytes1\",\r\n \"internalType\": \"bytes1\"\r\n },\r\n {\r\n \"name\": \"name\",\r\n \"type\": \"string\",\r\n \"internalType\": \"string\"\r\n },\r\n {\r\n \"name\": \"version\",\r\n \"type\": \"string\",\r\n \"internalType\": \"string\"\r\n },\r\n {\r\n \"name\": \"chainId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"verifyingContract\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\",\r\n \"internalType\": \"bytes32\"\r\n },\r\n {\r\n \"name\": \"extensions\",\r\n \"type\": \"uint256[]\",\r\n \"internalType\": \"uint256[]\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getActiveHook\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getExecutorsPaginated\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"cursor\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"size\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"array\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"next\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getFallbackHandlerBySelector\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"\",\r\n \"type\": \"bytes1\",\r\n \"internalType\": \"CallType\"\r\n },\r\n {\r\n \"name\": \"\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getRegistry\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"name\": \"\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getValidatorsPaginated\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"cursor\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"size\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"array\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"next\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexus\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusScoped\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusScopedNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithDefaultValidator\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithDefaultValidatorAndOtherModules\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"defaultValidatorInitData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithDefaultValidatorAndOtherModulesNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"defaultValidatorInitData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n },\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithSingleValidator\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithSingleValidatorNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"installModule\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"isModuleInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"additionalContext\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"installed\",\r\n \"type\": \"bool\",\r\n \"internalType\": \"bool\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"uninstallModule\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"deInitData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"receive\",\r\n \"stateMutability\": \"payable\"\r\n }\r\n ]\r\n}","{\r\n \"abi\": [\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"implementation_\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"owner_\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"nonpayable\",\r\n \"type\": \"constructor\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"account\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"AccountAlreadyDeployed\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"AlreadyInitialized\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"ImplementationAddressCanNotBeZero\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"InvalidEntryPointAddress\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"NewOwnerIsZeroAddress\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"NoHandoverRequest\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"Unauthorized\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"ZeroAddressNotAllowed\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"account\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"bytes\",\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\"\r\n },\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"bytes32\",\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\"\r\n }\r\n ],\r\n \"name\": \"AccountCreated\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"OwnershipHandoverCanceled\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"OwnershipHandoverRequested\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"oldOwner\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"newOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"OwnershipTransferred\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"ACCOUNT_IMPLEMENTATION\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"epAddress\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"internalType\": \"uint32\",\r\n \"name\": \"unstakeDelaySec\",\r\n \"type\": \"uint32\"\r\n }\r\n ],\r\n \"name\": \"addStake\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"cancelOwnershipHandover\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"completeOwnershipHandover\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"bytes\",\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\"\r\n },\r\n {\r\n \"internalType\": \"bytes32\",\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\"\r\n }\r\n ],\r\n \"name\": \"computeAccountAddress\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address payable\",\r\n \"name\": \"expectedAddress\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"bytes\",\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\"\r\n },\r\n {\r\n \"internalType\": \"bytes32\",\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\"\r\n }\r\n ],\r\n \"name\": \"createAccount\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address payable\",\r\n \"name\": \"\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"owner\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"result\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"ownershipHandoverExpiresAt\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"uint256\",\r\n \"name\": \"result\",\r\n \"type\": \"uint256\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"renounceOwnership\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"requestOwnershipHandover\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"newOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"transferOwnership\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"epAddress\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"unlockStake\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"nonpayable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"epAddress\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"internalType\": \"address payable\",\r\n \"name\": \"withdrawAddress\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"withdrawStake\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"nonpayable\",\r\n \"type\": \"function\"\r\n }\r\n ]\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n errorToast,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport { TermsAndConditionsOverlay } from \"../components/overlays\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst ContactPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n userNumberFmt: string;\r\n setUserEmail: (email: string) => void;\r\n userEmail: string;\r\n setSelectedCountry: (country: {\r\n name: string;\r\n area: string;\r\n flag: string;\r\n }) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n noContract?: boolean;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [userNumber, setUserNumber] = useState(\"\");\r\n const [userInput, setUserInput] = useState(\"\");\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [sendOtpErrorText, setSendOtpErrorText] = useState(\"\");\r\n\r\n const [buttonActive, setButtonActive] = useState(false);\r\n const { pk, vaultContract, address } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n const handleButtonDisplay = () => {\r\n if (props.selectedCountry.area && userNumber.length === 10) {\r\n setSendOtpErrorText(\"\");\r\n setButtonActive(true);\r\n } else if (\r\n props.userEmail?.length > 0 &&\r\n isNaN(Number(props.userEmail)) &&\r\n props.userEmail.includes(\"@\")\r\n ) {\r\n setSendOtpErrorText(\"\");\r\n setButtonActive(true);\r\n } else {\r\n setSendOtpErrorText(\"\");\r\n setButtonActive(false);\r\n }\r\n };\r\n\r\n const handleSendOTP = async () => {\r\n if (props.userEmail === \"\" && userNumber === \"\") {\r\n setSendOtpErrorText(\"Invalid email or phone number. Try again later\");\r\n return;\r\n }\r\n if (!props.helperFunctions) {\r\n setSendOtpErrorText(\"No Helper Functions provided.\");\r\n return;\r\n }\r\n\r\n if (\r\n props.userEmail?.length > 0 &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(props.userEmail)\r\n ) {\r\n setSendOtpErrorText(\"Invalid email format.\");\r\n return;\r\n }\r\n\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${userNumber}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (\r\n (vaultId && channel && pk && vaultContract) ||\r\n (vaultId && channel && props.noContract)\r\n ) {\r\n props.setIsLoading(true);\r\n try {\r\n const res = await props.helperFunctions.sendOTPVerification(\r\n address,\r\n channel,\r\n vaultId\r\n );\r\n props.setIsLoading(false);\r\n if (res) {\r\n setSendOtpErrorText(\"\");\r\n props.setStep(\"3\");\r\n } else {\r\n setSendOtpErrorText(\r\n channel === \"email\"\r\n ? \"Error sending OTP to email. Try again.\"\r\n : \"Error sending OTP to phone. Try again.\"\r\n );\r\n errorToast(\r\n \"OTP Error\",\r\n channel === \"email\"\r\n ? \"Please enter a valid email.\"\r\n : \"Please enter a valid phone number.\"\r\n );\r\n }\r\n } catch (err) {\r\n props.setIsLoading(false);\r\n setSendOtpErrorText(\"Unexpected error. Try again.\");\r\n }\r\n } else {\r\n if (!props.noContract) {\r\n setSendOtpErrorText(\"Network error. Check your internet connection.\");\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <ScrollView style={{ width: \"100%\", height: \"100%\" }}>\r\n {fontsLoaded && (\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupLanguage } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupContact } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"0\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {props.enablePhone\r\n ? \"Enter your phone number\"\r\n : \"Enter your email address\"}\r\n </Text>\r\n\r\n {props.enablePhone && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactInput }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactContentContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-content-container\"\r\n >\r\n <TouchableOpacity\r\n onPress={() => setSearchActive(!searchActive)}\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactFirstSection }\r\n : {}\r\n }\r\n >\r\n <Image\r\n source={{ uri: props.selectedCountry.flag }}\r\n alt=\"Country Flag\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSelectionIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-selection-icon\"\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSelectionText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {props.selectedCountry.area}\r\n </Text>\r\n <Image\r\n alt=\"Dropdown\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactDropdown }\r\n : {}\r\n }\r\n source={\r\n searchActive\r\n ? { uri: imageAssets.arrowUp }\r\n : { uri: imageAssets.arrowDown }\r\n }\r\n />\r\n </TouchableOpacity>\r\n\r\n <TextInput\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactSecondSection }\r\n : {}\r\n }\r\n placeholder=\"Enter your phone number\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n value={props.userNumberFmt}\r\n keyboardType=\"numeric\"\r\n onChangeText={(text: string) => {\r\n const numericInput = text.replace(/\\D/g, \"\");\r\n setUserInput(text);\r\n setUserNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (let i = 0; i < numericInput?.length; i++) {\r\n formattedNumber += numericInput[i];\r\n if (\r\n (i + 1) % 5 === 0 &&\r\n i + 1 < numericInput?.length\r\n ) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n props.setUserNumberFmt(formattedNumber);\r\n handleButtonDisplay();\r\n }}\r\n />\r\n </View>\r\n\r\n {searchActive && (\r\n <SearchBox\r\n platform={props.platform}\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={props.setSelectedCountry}\r\n selected={props.selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight=\"300\"\r\n contentbottomMargin=\"300\"\r\n />\r\n )}\r\n\r\n {userNumber.length !== 10 &&\r\n userInput.length > 10 &&\r\n !sendOtpErrorText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlInputErrorText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n Invalid input, please check your phone number\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n {!searchActive && (\r\n <React.Fragment>\r\n {props.enablePhone && (\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-amount-info-separator\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPPaymentPortalAmountInfoSeparator,\r\n }\r\n : {}\r\n }\r\n >\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-line\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlPPPaymentPortalLine }\r\n : {}\r\n }\r\n ></View>\r\n <Text\r\n className=\"verified-custd-mdl-p-payment-portal-separator-text\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPaymentPortalSeparatorText,\r\n }\r\n : {}\r\n }\r\n >\r\n OR\r\n </Text>\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-line\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlPPPaymentPortalLine }\r\n : {}\r\n }\r\n ></View>\r\n </View>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactInput }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <TextInput\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactSecondSection }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter your email address\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n value={props.userEmail}\r\n onChangeText={(text: string) => {\r\n props.setUserEmail(text);\r\n props.setUserNumberFmt(\"\");\r\n setUserNumber(\"\");\r\n setUserInput(\"\");\r\n handleButtonDisplay();\r\n }}\r\n />\r\n {sendOtpErrorText && props.userEmail.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlInputErrorText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {sendOtpErrorText}\r\n </Text>\r\n )}\r\n </View>\r\n </React.Fragment>\r\n )}\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: \"80px\" }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <TermsAndConditionsOverlay platform={props.platform} />\r\n <TouchableOpacity\r\n style={\r\n isReactNative && buttonActive\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive }\r\n : isReactNative && !buttonActive\r\n ? { ...styles.verifiedCustdMdlStartupButton }\r\n : {}\r\n }\r\n className={\r\n buttonActive\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={handleSendOTP}\r\n >\r\n <Text>Get OTP</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default ContactPage;\r\n","import React from \"react\";\r\n\r\nconst PageSlider = (props: {\r\n sliderCount: number[];\r\n currentSlider: string;\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const current = Number(props.currentSlider);\r\n const total = props.sliderCount?.length || 0;\r\n const widthPercent = total > 0 ? 100 / total : 0;\r\n\r\n return (\r\n <View\r\n className=\"verified-custd-mdl-startup-slider\"\r\n style={{ flexDirection: \"row\", height: 4, overflow: \"hidden\" }}\r\n >\r\n {props.sliderCount?.map((_, idx) => {\r\n const isActive = idx <= current;\r\n return (\r\n <View\r\n key={idx}\r\n className={\r\n isActive\r\n ? \"verified-custd-mdl-startup-slider-line-active\"\r\n : \"verified-custd-mdl-startup-slider-line\"\r\n }\r\n style={\r\n isReactNative && isActive\r\n ? {\r\n ...styles.verifiedCustdMdlStartupSliderLineActive,\r\n width: `${widthPercent}%`,\r\n }\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupSliderLine,\r\n width: `${widthPercent}%`,\r\n }\r\n : !isReactNative && isActive\r\n ? {\r\n width: `${widthPercent}%`,\r\n }\r\n : { width: `${widthPercent}%` }\r\n }\r\n />\r\n );\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nexport default PageSlider;\r\n","import React, { useState } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst SearchBox = (props: any) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [newSearchContent, setNewSearchContent] = useState(null);\r\n\r\n const handleSearch = (value: string) => {\r\n if (value === \"\") {\r\n setNewSearchContent(null);\r\n return;\r\n }\r\n\r\n const filtered = props.searchContent.filter((src: any) => {\r\n const name = src?.name?.toLowerCase();\r\n const input = value.toLowerCase();\r\n\r\n if (name?.includes(input)) {\r\n src.searched = input;\r\n src.nameArray = src.name.split(\"\");\r\n return src;\r\n }\r\n });\r\n\r\n setNewSearchContent(filtered);\r\n props.handleButtonDisplay();\r\n };\r\n\r\n const handleSelect = (src: any, idx: number) => {\r\n if (props.type === \"area-code\") {\r\n props.setSelected({\r\n area: src.phone_code,\r\n flag: src.flag,\r\n name: src.name,\r\n });\r\n } else if (props.type === \"language\") {\r\n props.setSelected(src.name);\r\n }\r\n\r\n if (props.setSearchActive) {\r\n props.setSearchActive(false);\r\n }\r\n\r\n props.handleButtonDisplay();\r\n };\r\n\r\n const renderTextHighlight = (array: string[], search: string) =>\r\n array.map((char, idx) => {\r\n const isHighlighted = search.includes(char.toLowerCase());\r\n return (\r\n <Text\r\n key={idx}\r\n style={isHighlighted ? styles.boldText : styles.fadedText}\r\n >\r\n {char}\r\n </Text>\r\n );\r\n });\r\n\r\n const renderResults = (data: any[], isFiltered: boolean = false) => {\r\n return data.map((src, idx) => {\r\n const isActive = !isReactNative\r\n ? window?.location?.search === `?${idx}`\r\n : false;\r\n const isSelected = props.selected && props.selected.length > 0;\r\n\r\n const contentContainerClass =\r\n props.type === \"language\" && isActive\r\n ? \"verified-custd-mdl-ms-search-content-active\"\r\n : \"verified-custd-mdl-ms-search-content\";\r\n\r\n return (\r\n <TouchableOpacity\r\n key={idx}\r\n className={contentContainerClass}\r\n style={styles.resultItem}\r\n onPress={() => handleSelect(src, idx)}\r\n >\r\n <View style={styles.resultInner}>\r\n <Image\r\n source={{ uri: props.type === \"language\" ? src.icon : src.flag }}\r\n alt=\"Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n style={styles.icon}\r\n />\r\n\r\n <Text\r\n className=\"verified-custd-mdl-ms-search-content-text\"\r\n style={styles.resultText}\r\n >\r\n {src.nameArray && src.searched\r\n ? renderTextHighlight(src.nameArray, src.searched)\r\n : src.name}\r\n {props.type === \"language\" && src.label && (\r\n <Text\r\n style={\r\n src.searched?.includes(src.label.toLowerCase())\r\n ? {}\r\n : styles.fadedText\r\n }\r\n >\r\n {` (${src.label})`}\r\n </Text>\r\n )}\r\n </Text>\r\n </View>\r\n\r\n {props.type === \"language\" && isSelected && isActive && (\r\n <Image\r\n source={{ uri: imageAssets.circleClicked }}\r\n alt=\"Clicked\"\r\n style={styles.selectedIcon}\r\n />\r\n )}\r\n </TouchableOpacity>\r\n );\r\n });\r\n };\r\n\r\n return (\r\n <View\r\n className=\"verified-custd-mdl-startup-language-content-container\"\r\n style={styles.container}\r\n >\r\n <View className=\"verified-custd-mdl-st-language-content\">\r\n {props.headerText && (\r\n <Text\r\n className=\"verified-custd-mdl-st-language-text\"\r\n style={styles.headerText}\r\n >\r\n {props.headerText}\r\n </Text>\r\n )}\r\n\r\n <View className=\"verified-custd-mdl-mobille-startup-search-box-container\">\r\n <View\r\n className=\"verified-custd-mdl-mobile-startup-search-box\"\r\n style={styles.searchBox}\r\n >\r\n <Image\r\n source={{ uri: imageAssets.search }}\r\n alt=\"Search\"\r\n className=\"verified-custd-mdl-mobile-search-icon\"\r\n style={styles.searchIcon}\r\n />\r\n <TextInput\r\n placeholder=\"Search\"\r\n className=\"verified-custd-mdl-ms-search-box-content\"\r\n style={styles.input}\r\n onChangeText={handleSearch}\r\n onFocus={() => props.type === \"language\" && props.setSelected(\"\")}\r\n />\r\n </View>\r\n\r\n <ScrollView\r\n className=\"verified-custd-mdl-mobile-startup-search-content\"\r\n style={{ maxHeight: props.contentMaxHeight || 300 }}\r\n >\r\n <View className=\"verified-custd-mdl-ms-search-content-container\">\r\n {(newSearchContent || props.searchContent)?.length > 0 &&\r\n renderResults(newSearchContent || props.searchContent)}\r\n </View>\r\n </ScrollView>\r\n </View>\r\n </View>\r\n </View>\r\n );\r\n};\r\n\r\n// const styles = StyleSheet?.create({\r\n// container: {\r\n// padding: 8,\r\n// },\r\n// headerText: {\r\n// fontSize: 14,\r\n// marginBottom: 8,\r\n// },\r\n// searchBox: {\r\n// flexDirection: \"row\",\r\n// alignItems: \"center\",\r\n// borderColor: \"#CCC\",\r\n// borderWidth: 1,\r\n// borderRadius: 6,\r\n// padding: 6,\r\n// marginBottom: 12,\r\n// },\r\n// searchIcon: {\r\n// width: 18,\r\n// height: 18,\r\n// marginRight: 6,\r\n// },\r\n// input: {\r\n// flex: 1,\r\n// fontSize: 14,\r\n// borderWidth: 0,\r\n// outlineStyle: \"none\",\r\n// },\r\n// resultItem: {\r\n// paddingVertical: 8,\r\n// paddingHorizontal: 10,\r\n// borderBottomWidth: 1,\r\n// borderBottomColor: \"#eee\",\r\n// flexDirection: \"row\",\r\n// alignItems: \"center\",\r\n// justifyContent: \"space-between\",\r\n// },\r\n// resultInner: {\r\n// flexDirection: \"row\",\r\n// alignItems: \"center\",\r\n// },\r\n// icon: {\r\n// width: 20,\r\n// height: 20,\r\n// marginRight: 10,\r\n// },\r\n// resultText: {\r\n// fontSize: 14,\r\n// flexWrap: \"wrap\",\r\n// },\r\n// fadedText: {\r\n// color: \"#B6B7C3\",\r\n// },\r\n// boldText: {\r\n// color: \"#000\",\r\n// },\r\n// selectedIcon: {\r\n// width: 16,\r\n// height: 16,\r\n// },\r\n// });\r\n\r\nexport default SearchBox;\r\n","import React from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { resolveGlobalStyleUnit } from \"../utils/helpers\";\r\n\r\nexport const TermsAndConditionsOverlay = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n return (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n By proceeding, you agree with Verified Wallet{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n color: \"#603FF4\",\r\n cursor: \"pointer\",\r\n }\r\n : { color: \"#603FF4\", cursor: \"pointer\" }\r\n }\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n T&C\r\n </Text>{\" \"}\r\n and{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n color: \"#603FF4\",\r\n cursor: \"pointer\",\r\n }\r\n : { color: \"#603FF4\", cursor: \"pointer\" }\r\n }\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n Privacy Policy.\r\n </Text>\r\n </Text>\r\n );\r\n};\r\n\r\nexport const LogoutOverlay = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n setIsLoading: (isLoading: boolean) => void;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const handleLogout = async () => {\r\n props.setIsLoading(true);\r\n try {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (!isReactNative && !chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n localStorage.removeItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n await AsyncStorage.removeItem(\"lastPk\");\r\n }\r\n\r\n if (props.setisOnboard) {\r\n props.setisOnboard(false);\r\n }\r\n } finally {\r\n props.setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <Text\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n fontSize: resolveGlobalStyleUnit(isReactNative, \"0.7rem\"),\r\n }\r\n : { fontSize: resolveGlobalStyleUnit(isReactNative, \"0.7rem\") }\r\n }\r\n >\r\n Want to access a different account? Click{\" \"}\r\n <Text\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n color: \"#603FF4\",\r\n cursor: \"pointer\",\r\n }\r\n : { color: \"#603FF4\", cursor: \"pointer\" }\r\n }\r\n onPress={handleLogout}\r\n >\r\n Logout\r\n </Text>{\" \"}\r\n to logout and login/create another account\r\n </Text>\r\n );\r\n};\r\n\r\nexport const PrivacyOverlay = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n return (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPrivacy,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-privacy\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.privacyTip }}\r\n alt=\"Privacy Icon\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPrivacyIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-privacy-icon\"\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPrivacyText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-privacy-text\"\r\n >\r\n Trusted by 10M+ Investors globally\r\n </Text>\r\n </View>\r\n );\r\n};\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n errorToast,\r\n hashTheString,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { checkIsExistingUser } from \"../services/contracts\";\r\n\r\nconst OTPPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n setUserEmail: (email: string) => void;\r\n setIsExistingUser?: (isExistingUser: boolean) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n userNumberFmt: string;\r\n userEmail: string;\r\n noContract?: boolean;\r\n helperFunctions?: any;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const inputsRef = useRef<Array<any>>([]);\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [countdown, setCountdown] = useState(60);\r\n const [otp, setOtp] = useState([\"\", \"\", \"\", \"\"]);\r\n const [otpIncorrect, setOtpIncorrect] = useState(false);\r\n const [otherErrorText, setOtherErrorText] = useState(\"\");\r\n\r\n const { pk, vaultContract, address } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (countdown === 0) return;\r\n const timer = setInterval(() => setCountdown((c) => c - 1), 1000);\r\n return () => clearInterval(timer);\r\n }, [countdown]);\r\n\r\n const handleTextChange = (text: string, idx: number) => {\r\n if (text?.length > 1) {\r\n // Manually capture Paste\r\n const paste = text.replace(/\\D/g, \"\");\r\n const newOtp = [...otp];\r\n let pasteIndex = 0;\r\n\r\n for (let i = idx; i < otp.length && pasteIndex < paste.length; i++) {\r\n newOtp[i] = paste[pasteIndex];\r\n pasteIndex++;\r\n }\r\n setOtp(newOtp);\r\n\r\n // Focus next empty input if any\r\n const nextIndex = idx + paste.length;\r\n if (nextIndex < otp.length && inputsRef.current[nextIndex]) {\r\n inputsRef.current[nextIndex].focus();\r\n }\r\n setOtpIncorrect(false);\r\n } else {\r\n // Normal input\r\n const clean = text.replace(/\\D/g, \"\");\r\n const newOtp = [...otp];\r\n newOtp[idx] = clean;\r\n setOtp(newOtp);\r\n\r\n // Move focus to next input if available\r\n if (clean && inputsRef.current[idx + 1]) {\r\n inputsRef.current[idx + 1].focus();\r\n }\r\n setOtpIncorrect(false);\r\n }\r\n };\r\n\r\n const handleKeyPress = (_: any, idx: number, e: any) => {\r\n const key = e.nativeEvent.key;\r\n\r\n if (\r\n key === \"Backspace\" &&\r\n !otp[idx] &&\r\n idx > 0 &&\r\n inputsRef.current[idx - 1]\r\n ) {\r\n inputsRef.current[idx - 1].focus();\r\n }\r\n };\r\n\r\n const isFilled = otp.every((d) => d.length > 0);\r\n\r\n const getVaultId = () =>\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n\r\n const handleVerifyOtp = async () => {\r\n if (!isFilled || !props.helperFunctions) {\r\n setOtpIncorrect(true);\r\n setOtherErrorText(\"Please enter the complete OTP.\");\r\n return;\r\n }\r\n const vaultId = getVaultId();\r\n const fullOtp = otp.join(\"\");\r\n if ((!props.noContract && !pk) || (!props.noContract && !vaultContract))\r\n return;\r\n props.setIsLoading(true);\r\n try {\r\n const valid = await props.helperFunctions.checkOTPVerification(\r\n address,\r\n vaultId,\r\n fullOtp\r\n );\r\n\r\n if (!valid) {\r\n props.setIsLoading(false);\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n const hashed = hashTheString(vaultId);\r\n let exists = false;\r\n if (!props.noContract && vaultContract) {\r\n exists = await checkIsExistingUser(vaultContract, hashed);\r\n if (exists === null) {\r\n props.setIsLoading(false);\r\n setOtherErrorText(\"Unexpected error. Try again later.\");\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n }\r\n\r\n props.setIsExistingUser?.(exists);\r\n props.setIsLoading(false);\r\n props.setStep(\"4\");\r\n } catch (err: any) {\r\n props.setIsLoading(false);\r\n setOtherErrorText(\"Error verifying OTP. Try again.\");\r\n setOtpIncorrect(true);\r\n console.error(\"error: \", err);\r\n }\r\n };\r\n\r\n const handleResend = async () => {\r\n if (!props.helperFunctions) {\r\n setOtherErrorText(\"Helper functions missing.\");\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n const vaultId = getVaultId();\r\n const channel = props.userEmail ? \"email\" : \"sms\";\r\n props.setIsLoading(true);\r\n const res = await props.helperFunctions.sendOTPVerification(\r\n address,\r\n channel,\r\n vaultId\r\n );\r\n props.setIsLoading(false);\r\n if (res) {\r\n setOtp([\"\", \"\", \"\", \"\"]);\r\n setCountdown(60);\r\n setOtpIncorrect(false);\r\n setOtherErrorText(\"\");\r\n } else {\r\n errorToast(\"OTP resend failed\", \"Please try again later.\");\r\n }\r\n };\r\n\r\n return (\r\n <ScrollView>\r\n {fontsLoaded && (\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupLanguage } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupContact } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"0\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n Enter OTP\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpHeaderText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Enter{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n color: \"#0C0C0E\",\r\n }\r\n : { color: \"#0C0C0E\" }\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n 4-Digits OTP (One Time Password)\r\n </Text>{\" \"}\r\n sent to your{\" \"}\r\n {props.userNumberFmt ? \"phone number\" : \"email address\"}:\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpFooterText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {props.userNumberFmt && (\r\n <React.Fragment>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >{`(+${props.selectedCountry.area}) `}</Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {props.userNumberFmt.split(\" \")[0]}{\" \"}\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {props.userNumberFmt.split(\" \")[1]}\r\n </Text>\r\n </React.Fragment>\r\n )}\r\n {props.userEmail && <Text>{props.userEmail}</Text>}\r\n </Text>\r\n <TouchableOpacity\r\n style={{ background: \"transparent\", width: 20, height: 20 }}\r\n onPress={() => {\r\n props.setUserNumberFmt(\"\");\r\n props.setUserEmail(\"\");\r\n props.setStep(\"2\");\r\n }}\r\n >\r\n <Image\r\n source={{ uri: imageAssets.editBlue }}\r\n alt=\"Edit\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStOtpIcon,\r\n width: 20,\r\n height: 20,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-otp-icon\"\r\n />\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputContainer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputGroup }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {otp.map((_, idx) => (\r\n <TextInput\r\n key={idx}\r\n ref={(el: any) => (inputsRef.current[idx] = el)}\r\n value={otp[idx]}\r\n onChangeText={(text: any) => handleTextChange(text, idx)}\r\n onKeyPress={(e: any) => handleKeyPress(e, idx, e)}\r\n keyboardType=\"number-pad\"\r\n maxLength={1}\r\n style={\r\n isReactNative && otpIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInputRed }\r\n : isReactNative && !otpIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n />\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlOtpTimer } : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {!otpIncorrect && countdown > 5 && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimerText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer-text\"\r\n >\r\n <Text style={{ color: \"#717286\", fontWeight: \"400\" }}>\r\n 00:\r\n </Text>\r\n {countdown}\r\n </Text>\r\n )}\r\n\r\n {!otpIncorrect &&\r\n countdown <= 5 &&\r\n countdown > 0 &&\r\n otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimerTextRed }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer-text-red\"\r\n >\r\n <Text style={{ fontWeight: \"400\" }}>00:</Text>\r\n {countdown}\r\n </Text>\r\n )}\r\n\r\n {!otpIncorrect && countdown === 0 && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text\"\r\n >\r\n Didn't receive an OTP ?\r\n </Text>\r\n )}\r\n\r\n {otpIncorrect && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpIncorrectText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct OTP\r\n </Text>\r\n )}\r\n\r\n {otpIncorrect && otherErrorText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpIncorrectText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {otherErrorText}\r\n </Text>\r\n )}\r\n\r\n {!otpIncorrect && countdown > 0 && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text\"\r\n >\r\n Resend OTP\r\n </Text>\r\n )}\r\n\r\n {(!otpIncorrect && countdown === 0 && otherErrorText === \"\") ||\r\n (otpIncorrect && otherErrorText === \"\") ? (\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={async () => {\r\n setOtp([\"\", \"\", \"\", \"\"]);\r\n await handleResend();\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendTextActive }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text-active\"\r\n >\r\n Resend OTP\r\n </Text>\r\n </TouchableOpacity>\r\n ) : null}\r\n </View>\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: \"100px\" }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <TouchableOpacity\r\n className={\r\n isFilled && !otpIncorrect\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={handleVerifyOtp}\r\n disabled={!isFilled || otpIncorrect}\r\n style={\r\n isFilled && !otpIncorrect\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive }\r\n : { ...styles.verifiedCustdMdlStartupButton }\r\n }\r\n >\r\n <Text>Proceed</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default OTPPage;\r\n","import { AbiCoder, encodeBytes32String } from \"ethers\";\r\nimport { combine, split } from \"shamir-secret-sharing\";\r\nimport {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport {\r\n decryptString,\r\n decryptWithPasskey,\r\n encryptString,\r\n encryptWithPasskey,\r\n errorToast,\r\n hashTheString,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n newTransactionEventHash,\r\n numberPositions,\r\n} from \"../utils/constants\";\r\nimport { ChainConfig } from \"../utils/config\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport {\r\n base,\r\n baseSepolia,\r\n gnosis,\r\n mainnet,\r\n polygon,\r\n sepolia,\r\n} from \"viem/chains\";\r\nimport { http } from \"viem\";\r\nimport { computeNexusAccount } from \"../lib/biconomyRNFix\";\r\n\r\nexport const checkIsExistingUser = async (\r\n vaultContract: any,\r\n hashedVaultId: string\r\n) => {\r\n try {\r\n return await vaultContract\r\n .getCreator(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result[0] === true) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while checking if user exists: \", err);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const checkOrResetOrCreateVault = async (\r\n isReactNative: boolean,\r\n AsyncStorage: any,\r\n EventEmitter: any,\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n otpChannel: string,\r\n userPk: string,\r\n userAddress: string,\r\n vaultContract: any,\r\n action?: string,\r\n reqVaultData?: any,\r\n txData?: any,\r\n passKeyRawId?: any,\r\n keyHolders?: string[],\r\n quorum?: number\r\n) => {\r\n try {\r\n const vaultData = {\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n vaultContract,\r\n rawId: passKeyRawId,\r\n };\r\n return await vaultContract\r\n .getCreator(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result[0] === true) {\r\n try {\r\n let encryptedPk: string;\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n encryptedPk = encryptString(userPk, secretKey);\r\n } else {\r\n encryptedPk = await encryptWithPasskey(\r\n userPk,\r\n passKeyRawId,\r\n vaultPin\r\n );\r\n }\r\n\r\n let lastPk: any;\r\n if (chrome?.storage?.local) {\r\n lastPk = await new Promise((resolve) => {\r\n chrome.storage.local.get([\"lastPk\"], (result) => {\r\n resolve(result.lastPk);\r\n });\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n lastPk = localStorage.getItem(\"lastPk\");\r\n }\r\n\r\n if (\r\n action === \"reset-pin\" &&\r\n reqVaultData?.vaultContract &&\r\n keyHolders?.length > 1 &&\r\n quorum > 1 &&\r\n userPk?.length > 0\r\n ) {\r\n const keyShardsCount = Number(keyHolders.length);\r\n\r\n const privateKeySplits = await split(\r\n Uint8Array.from(\r\n userPk.split(\"\").map((letter: string) => letter.charCodeAt(0))\r\n ),\r\n Number(keyShardsCount),\r\n Number(quorum)\r\n );\r\n\r\n const sharesArrayAsString = privateKeySplits.map((share) =>\r\n share.join(\",\")\r\n );\r\n\r\n const secretKey = !passKeyRawId\r\n ? encodeBytes32String(vaultPin)\r\n : \"\";\r\n\r\n let failedKeyHolders = [];\r\n let succesfulKeyHolders = [];\r\n\r\n for (let idx = 0; idx < keyHolders.length; idx++) {\r\n const participant = keyHolders[idx];\r\n const encryptedShard = passKeyRawId\r\n ? await encryptWithPasskey(\r\n sharesArrayAsString[idx],\r\n passKeyRawId,\r\n vaultPin\r\n )\r\n : encryptString(sharesArrayAsString[idx], secretKey);\r\n await vaultContract\r\n .addParticipant(hashedVaultId, participant, encryptedShard)\r\n .then(async (res: any) => {\r\n const keyHolder = {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant,\r\n hashedCosigner: participant,\r\n cosignerVaultIdType: \"\",\r\n cosignerVaultId: participant,\r\n share: encryptedShard,\r\n };\r\n if (res?.status === 0) {\r\n succesfulKeyHolders.push(keyHolder);\r\n } else {\r\n failedKeyHolders.push(keyHolder);\r\n }\r\n });\r\n\r\n await new Promise((res) => setTimeout(res, 1000)); //1 second timeout to fix nonce error???\r\n }\r\n\r\n if (\r\n failedKeyHolders?.length > 0 ||\r\n succesfulKeyHolders?.length !== keyHolders?.length\r\n ) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while adding co-signers\");\r\n }\r\n errorToast(\r\n \"Oops somethin went wrong\",\r\n \"error while adding co-signers\"\r\n );\r\n return null;\r\n }\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n //no need to define quorum anymore we already use last quorum set\r\n return {};\r\n }\r\n\r\n if (lastPk && lastPk?.length > 0) {\r\n //existing PK means failed confirmParticipant, and since wallet exists??\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n\r\n hashedVaultId,\r\n\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n //delete saved pk if confirmParticipant is successful??\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"lastPk\");\r\n }\r\n try {\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n let encryptedPk: string;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n encryptedPk = encryptString(userPk, secretKey);\r\n } else {\r\n encryptedPk = await encryptWithPasskey(\r\n userPk,\r\n passKeyRawId,\r\n vaultPin\r\n );\r\n }\r\n\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error saving new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for existing vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n if (action === \"invitation\") {\r\n return { isExisting: true, ...vaultData };\r\n } else {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n const windowObj = !isReactNative ? window : null;\r\n if (!isReactNative && chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage({\r\n type:\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n });\r\n } else if (!isReactNative && !chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n {\r\n detail: {\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n },\r\n }\r\n );\r\n windowObj?.dispatchEvent(event);\r\n } else if (isReactNative && EventEmitter) {\r\n const vaultEventEmitter = new EventEmitter();\r\n const eventType =\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\";\r\n\r\n const eventDetail = {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n };\r\n\r\n vaultEventEmitter.emit(eventType, eventDetail);\r\n }\r\n }\r\n return action === \"getPk\"\r\n ? {\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n shouldStop: true,\r\n }\r\n : { shouldStop: true };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error handling existing vault: \", err);\r\n }\r\n\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error fetching existing vault key(s). Try again later\"\r\n );\r\n return false;\r\n }\r\n }\r\n // else if (res?.reason?.toLowerCase() === \"invalid pin\") {\r\n // let lastPk: any;\r\n // if (chrome?.storage?.local) {\r\n // lastPk = await new Promise((resolve) => {\r\n // chrome.storage.local.get([\"lastPk\"], (result) => {\r\n // resolve(result.lastPk);\r\n // });\r\n // });\r\n // } else if (!chrome?.storage?.local && localStorage) {\r\n // lastPk = localStorage.getItem(\"lastPk\");\r\n // }\r\n // if (\r\n // action === \"reset-pin\" &&\r\n // reqVaultData?.hashedOldPin &&\r\n // reqVaultData?.vaultContract\r\n // ) {\r\n // return await resetVaultPin(\r\n // hashedVaultId,\r\n // reqVaultData?.vaultContract\r\n // );\r\n // } else if (lastPk && lastPk?.length > 0) {\r\n // //existing PK means failed confirmParticipant, and since wallet exists??\r\n // return await vaultContract\r\n // .confirmParticipant(\r\n // hashedVaultId,\r\n\r\n // hashedVaultId,\r\n\r\n // true\r\n // )\r\n // .then(async (cfrmRes: any) => {\r\n // if (cfrmRes?.status === 0) {\r\n // //delete saved pk if confirmParticipant is successful??\r\n // if (!isReactNative && chrome?.storage?.local) {\r\n // await chrome.storage.local.remove(\"lastPk\");\r\n // } else if (\r\n // !isReactNative &&\r\n // !chrome?.storage?.local &&\r\n // localStorage\r\n // ) {\r\n // localStorage.removeItem(\"lastPk\");\r\n // } else if (isReactNative && AsyncStorage) {\r\n // await AsyncStorage.removeItem(\"lastPk\");\r\n // }\r\n // try {\r\n // const newSender = new VerifiedWallet(userPk);\r\n\r\n // const userRegAddress = await newSender.getAddress();\r\n\r\n // let encryptedPk: string;\r\n\r\n // if (!passKeyRawId) {\r\n // const secretKey = encodeBytes32String(vaultPin);\r\n\r\n // encryptedPk = encryptString(userPk, secretKey);\r\n // } else {\r\n // encryptedPk = await encryptWithPasskey(\r\n // userPk,\r\n // passKeyRawId,\r\n // vaultPin\r\n // );\r\n // }\r\n\r\n // if (!isReactNative && chrome?.storage?.local) {\r\n // await chrome.storage.local.set({\r\n // myVault: JSON.stringify({\r\n // address: userAddress,\r\n // regAddress: userRegAddress,\r\n // vaultId,\r\n // hashedVaultId: hashedVaultId,\r\n // pk: encryptedPk,\r\n // channel: otpChannel,\r\n // }),\r\n // });\r\n // } else if (\r\n // !isReactNative &&\r\n // !chrome?.storage?.local &&\r\n // localStorage\r\n // ) {\r\n // localStorage.setItem(\r\n // \"myVault\",\r\n // JSON.stringify({\r\n // address: userAddress,\r\n // regAddress: userRegAddress,\r\n // vaultId,\r\n // hashedVaultId: hashedVaultId,\r\n // pk: encryptedPk,\r\n // channel: otpChannel,\r\n // })\r\n // );\r\n // } else if (isReactNative && AsyncStorage) {\r\n // await AsyncStorage.setItem(\r\n // \"myVault\",\r\n // JSON.stringify({\r\n // address: userAddress,\r\n // regAddress: userRegAddress,\r\n // vaultId,\r\n // hashedVaultId: hashedVaultId,\r\n // pk: encryptedPk,\r\n // channel: otpChannel,\r\n // })\r\n // );\r\n // }\r\n\r\n // return vaultData;\r\n // } catch (err) {\r\n // errorToast(\r\n // \"Oops something went wrong\",\r\n // \"Error saving new vault details. Try again later\"\r\n // );\r\n // if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n // console.error(\"save vault failed: \", err);\r\n // }\r\n\r\n // return false;\r\n // }\r\n // } else {\r\n // errorToast(\r\n // \"Oops something went wrong\",\r\n // \"Error creating pin for existing vault. Try again later\"\r\n // );\r\n\r\n // if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n // console.error(\"confirm pin vault failed: \", cfrmRes);\r\n // }\r\n // return false;\r\n // }\r\n // });\r\n // } else {\r\n // return null;\r\n // }\r\n // }\r\n else if (res?.status === 0 && res?.response?.result[0] !== true) {\r\n return await vaultContract\r\n .createVault(hashedVaultId)\r\n .then(async (vultRes: any) => {\r\n if (vultRes?.status === 0) {\r\n //temporary save the last pk incase confirmParticipant fails??\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n lastPk: userPk,\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\"lastPk\", userPk);\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\"lastPk\", userPk);\r\n }\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n\r\n hashedVaultId,\r\n\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n //delete saved pk if confirmParticipant is successful??\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"lastPk\");\r\n }\r\n try {\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n let encryptedPk: string;\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n encryptedPk = encryptString(userPk, secretKey);\r\n } else {\r\n encryptedPk = await encryptWithPasskey(\r\n userPk,\r\n passKeyRawId,\r\n vaultPin\r\n );\r\n }\r\n\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error saving new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for new vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating new vault. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"create vault failed: \", vultRes);\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n });\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error while creating pin. Try again later\"\r\n );\r\n return false;\r\n }\r\n};\r\n\r\nexport const validateVaultPin = async (\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n encryptedPk: any,\r\n userAddress: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n includePk?: boolean,\r\n newChainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n try {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n\r\n // console.log(\"chainId to use: \", _chainId);\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .getCreator(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result[0] === true) {\r\n const quorumSet = await vaultContract.getQuorum(hashedVaultId);\r\n if (\r\n quorumSet?.status === 0 &&\r\n quorumSet?.response?.result?.length > 0\r\n ) {\r\n return includePk && Number(quorumSet?.response?.result[0]) > 0\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n pk: userPk,\r\n }\r\n : Number(quorumSet?.response?.result[0]) === 0\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n pk: userPk,\r\n inCompleteVault: true,\r\n }\r\n : {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n };\r\n } else {\r\n //For account recovery....\r\n return includePk\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n pk: userPk,\r\n }\r\n : {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n };\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Account does not exist\");\r\n }\r\n return null;\r\n }\r\n });\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error getting vault contract\");\r\n }\r\n return null;\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error decrypting pk\");\r\n }\r\n return null;\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const acceptOrRejectInvitation = async (\r\n sendCreatorAcceptance: VerifiedCustodyHelpers[\"sendCreatorAcceptance\"],\r\n sendCreatorRejection: VerifiedCustodyHelpers[\"sendCreatorRejection\"],\r\n channel: \"email\" | \"sms\",\r\n hashedCosignerId: string,\r\n hashedCosignerPin: string,\r\n hashedCreatorVaultId: string,\r\n hashedCreatorVaultPin: string,\r\n creatorVaultId: string,\r\n coSignerVaultId: string,\r\n accepted: boolean,\r\n vaultContract?: any,\r\n userPk?: string,\r\n chainId?: number\r\n) => {\r\n let contract: any;\r\n if (vaultContract) {\r\n contract = vaultContract;\r\n } else {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n contract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n }\r\n if (contract) {\r\n return await contract\r\n .confirmParticipant(hashedCreatorVaultId, hashedCosignerId, accepted)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n if (accepted) {\r\n await sendCreatorAcceptance(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId,\r\n hashedCreatorVaultPin\r\n );\r\n } else {\r\n await sendCreatorRejection(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId,\r\n hashedCreatorVaultPin\r\n );\r\n }\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with\");\r\n }\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with error: \", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\n// const retryCompleteVault = async () => {\r\n// failedParticipants = [...new Set(failedParticipants)]\r\n// await Promise.all(\r\n// failedParticipants.map(async (participant, idx) => {\r\n// const retryAdd = await mainService.vault.addParticipant(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// participant.hashedCosigner,\r\n// participant.share\r\n// )\r\n\r\n// if (retryAdd.status) {\r\n// // failedParticipants.push({\r\n// // creatorVaultId: ,\r\n// // fcmToken,\r\n// // cosigner,\r\n// // share: sharesArrayAsString[idx],\r\n// // })\r\n// } else {\r\n// const filtered = failedParticipants.filter(\r\n// (part) => part.cosigner !== participant.cosigner\r\n// )\r\n// failedParticipants = [...new Set(filtered)]\r\n// await sendNotification({\r\n// creator: vaultInfo.vaultId,\r\n// hashedCreator: vaultInfo.hashedVaultId,\r\n// idType: participant.idType,\r\n// email: participant.cosigner,\r\n// phoneNumber: participant.cosigner,\r\n// })\r\n// }\r\n// })\r\n// )\r\n\r\n// if (failedParticipants.length > 0) {\r\n// setIsRetry(true)\r\n// setIsLoading(false)\r\n// return\r\n// }\r\n\r\n// const addQuorum = await mainService.vault.defineQuorum(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// threshold.toString() // coming from the slider\r\n// )\r\n\r\n// if (addQuorum.status) {\r\n// return false\r\n// }\r\n// return true\r\n// }\r\n\r\nexport const completeVaultCreation = async (\r\n sendCoSignerInvitation: (\r\n channel: \"sms\" | \"email\",\r\n cosigerId: string,\r\n cretorId: string,\r\n hashedCretorPin: string\r\n ) => Promise<boolean>,\r\n sendCreatorConfirmation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n cosigersList: [],\r\n requiredSigners: number,\r\n hashedCretorPin: string,\r\n isRemoved?: boolean\r\n ) => Promise<boolean>,\r\n keyHolders: any,\r\n coSigners: any,\r\n otpChannel: \"sms\" | \"email\",\r\n KeyThreshold: number,\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n vaultContract: any,\r\n pk: string,\r\n passKeyRawId?: any,\r\n action?: string\r\n) => {\r\n const keyShardsCount = Number(keyHolders.length);\r\n\r\n const privateKeySplits = await split(\r\n Uint8Array.from(pk.split(\"\").map((letter: string) => letter.charCodeAt(0))),\r\n Number(keyShardsCount),\r\n KeyThreshold\r\n );\r\n\r\n const sharesArrayAsString = privateKeySplits.map((share) => share.join(\",\"));\r\n\r\n const secretKey = !passKeyRawId ? encodeBytes32String(vaultPin) : \"\";\r\n\r\n let failedKeyHolders = [];\r\n let succesfulKeyHolders = [];\r\n\r\n for (let idx = 0; idx < keyHolders.length; idx++) {\r\n const participant = keyHolders[idx];\r\n const encryptedShard = passKeyRawId\r\n ? await encryptWithPasskey(\r\n sharesArrayAsString[idx],\r\n passKeyRawId,\r\n vaultPin\r\n )\r\n : encryptString(sharesArrayAsString[idx], secretKey);\r\n await vaultContract\r\n .addParticipant(\r\n hashedVaultId,\r\n action === \"remove-cosigner\"\r\n ? participant\r\n : hashTheString(participant.vaultId),\r\n encryptedShard\r\n )\r\n .then(async (res: any) => {\r\n const keyHolder =\r\n action === \"remove-cosigner\"\r\n ? {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant,\r\n hashedCosigner: participant,\r\n cosignerVaultIdType: \"\",\r\n cosignerVaultId: participant,\r\n share: encryptedShard,\r\n }\r\n : {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant.vaultId,\r\n hashedCosigner: hashTheString(participant.vaultId),\r\n cosignerVaultIdType:\r\n participant.otpChannel === \"sms\" ? \"PHONE\" : \"EMAIL\",\r\n cosignerVaultId: participant.vaultId,\r\n share: encryptedShard,\r\n ...participant,\r\n };\r\n if (res?.status === 0) {\r\n succesfulKeyHolders.push(keyHolder);\r\n if (action !== \"remove-cosigner\" && participant.vaultId !== vaultId) {\r\n await sendCoSignerInvitation(\r\n participant.otpChannel,\r\n participant.vaultId,\r\n vaultId,\r\n hashedVaultPin\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending cosigner invite\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending cosigner invite\");\r\n }\r\n });\r\n }\r\n } else {\r\n failedKeyHolders.push(keyHolder);\r\n }\r\n });\r\n\r\n await new Promise((res) => setTimeout(res, 1000)); //1 second timeout to fix nonce error???\r\n }\r\n\r\n if (\r\n failedKeyHolders?.length > 0 ||\r\n succesfulKeyHolders?.length !== keyHolders?.length\r\n ) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while adding co-signers\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while adding co-signers\");\r\n return false;\r\n }\r\n\r\n return await vaultContract\r\n .defineQuorum(hashedVaultId, KeyThreshold.toString())\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && action !== \"remove-cosigner\") {\r\n const cosignersList = coSigners?.map((cng: any) => {\r\n return {\r\n name: cng?.name,\r\n email: cng?.email,\r\n phoneNumber: cng?.phoneNumber,\r\n contactType: String(cng?.otpChannel)?.toUpperCase(),\r\n position: `${numberPositions[Number(cng?.position)]} Co-Signer`,\r\n };\r\n });\r\n await sendCreatorConfirmation(\r\n otpChannel,\r\n vaultId,\r\n cosignersList,\r\n Number(KeyThreshold),\r\n hashedVaultPin\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending creator's confirmation\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending creator's confirmation\");\r\n }\r\n });\r\n\r\n return true;\r\n } else if (res?.status === 0 && action === \"remove-cosigner\") {\r\n const removeCosignerPromise = coSigners?.map(async (cng: any) => {\r\n const removeRes = await vaultContract.removeParticipant(\r\n hashedVaultId,\r\n hashTheString(cng?.vaultId)\r\n );\r\n if (removeRes?.status === 0) {\r\n return \"true\";\r\n } else {\r\n return \"false\";\r\n }\r\n });\r\n const promisesResult = await Promise.all(removeCosignerPromise);\r\n\r\n if (promisesResult?.find((res) => res === \"false\")?.length > 0) {\r\n return false;\r\n }\r\n\r\n const cosignersList = coSigners?.map((cng: any) => {\r\n return {\r\n email: cng?.email,\r\n phoneNumber: cng?.phoneNumber,\r\n contactType: String(cng?.otpChannel)?.toUpperCase(),\r\n position: `${numberPositions[Number(cng?.position)]} Co-Signer`,\r\n };\r\n });\r\n\r\n await sendCreatorConfirmation(\r\n otpChannel,\r\n vaultId,\r\n cosignersList,\r\n Number(KeyThreshold),\r\n hashedVaultPin,\r\n true\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending creator's confirmation\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending creator's confirmation\");\r\n }\r\n });\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while saving vault keys\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while saving vault keys\");\r\n return false;\r\n }\r\n });\r\n};\r\n\r\nexport const initiateVaultRecovery = async (\r\n sendCreatorInitiation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n hashedCretorPin: string,\r\n txId: number,\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n vaultChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .promptSignatures(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.hash) {\r\n const abiCoder = new AbiCoder();\r\n let txId: any, vaultLogsLength: number;\r\n if (res?.response?.result?.logs?.length > 0) {\r\n const vaultLogs = res?.response?.result?.logs?.filter(\r\n (log: any) =>\r\n log?.address?.toLowerCase() ===\r\n cntAddresses[_chainId].Custody?.toLowerCase() &&\r\n log?.topics\r\n ?.map((tp: string) => tp?.toLowerCase())\r\n ?.includes(newTransactionEventHash?.toLowerCase())\r\n );\r\n vaultLogsLength = vaultLogs?.length;\r\n const txData = vaultLogs[0]?.data;\r\n\r\n const decodedTxData = abiCoder\r\n .decode([\"bytes32\", \"bytes32\", \"uint256\"], txData)\r\n ?.map((val, idx) => (idx < 2 ? val : Number(val)))\r\n .flat();\r\n txId = decodedTxData[decodedTxData?.length - 1];\r\n } else {\r\n const newProv = new Provider(provider);\r\n const receipt = await newProv.getTransactionReceipt(\r\n res?.response?.hash\r\n );\r\n const logs = receipt.logs;\r\n const vaultLogs = logs?.filter(\r\n (log: any) =>\r\n log?.address?.toLowerCase() ===\r\n cntAddresses[_chainId].Custody?.toLowerCase() &&\r\n log?.topics\r\n ?.map((tp: string) => tp?.toLowerCase())\r\n ?.includes(newTransactionEventHash?.toLowerCase())\r\n );\r\n vaultLogsLength = vaultLogs?.length;\r\n const txData = vaultLogs[0]?.data;\r\n const decodedTxData = abiCoder\r\n .decode([\"bytes32\", \"bytes32\", \"uint256\"], txData)\r\n ?.map((val, idx) => (idx < 2 ? val : Number(val)))\r\n .flat();\r\n txId = decodedTxData[decodedTxData?.length - 1];\r\n }\r\n await sendCreatorInitiation(\r\n vaultChannel,\r\n vaultId,\r\n hashedVaultPin,\r\n Number(txId),\r\n Number(vaultLogsLength)\r\n );\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"prompt signatures failed\", res);\r\n }\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while initiating vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const signVaultRecovery = async (\r\n sendCreatorSigned: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n coSignerId: string,\r\n vaultPinHashed: string\r\n ) => Promise<boolean>,\r\n sendCreatorCompleted: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n txId: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqVaultId: string,\r\n hashedReqId: string,\r\n hashedReqPin: string,\r\n reqTxId: string,\r\n chainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .signTransaction(hashedReqId, hashedVaultId, String(reqTxId))\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n await sendCreatorSigned(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId) ? \"email\" : \"sms\",\r\n reqVaultId,\r\n vaultId,\r\n hashedReqPin\r\n );\r\n return await vaultContract\r\n .checkQuorum(hashedReqId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n await sendCreatorCompleted(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId)\r\n ? \"email\"\r\n : \"sms\",\r\n reqVaultId,\r\n Number(reqTxId)\r\n );\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while signing vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const restoreVaultLogin = async (\r\n isReactNative: boolean,\r\n AsyncStorage: any,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqTxId: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .checkQuorum(hashedVaultId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n return await vaultContract\r\n .getShards(hashedVaultId, reqTxId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result) {\r\n const recoveredShrads = res?.response?.result.filter(\r\n (shrd: string) => shrd !== \"\"\r\n );\r\n if (recoveredShrads.length > 1) {\r\n //at least 2 shrads?? since minimum signers are 2??\r\n const secretKey = !passKeyRawId\r\n ? encodeBytes32String(vaultPin)\r\n : \"\";\r\n // const decryptedShares = recoveredShrads.map(\r\n // (shrd: string) => decryptString(shrd, secretKey)\r\n // );\r\n\r\n const decryptedShares = await Promise.all(\r\n recoveredShrads.map((shrd: string) =>\r\n passKeyRawId\r\n ? decryptWithPasskey(shrd, passKeyRawId)\r\n : decryptString(shrd, secretKey)\r\n )\r\n );\r\n\r\n const shares = decryptedShares.map(\r\n (shrd: string) =>\r\n new Uint8Array(shrd.split(\",\").map(Number))\r\n );\r\n\r\n const combinedShares = await combine(shares);\r\n\r\n const pk = new TextDecoder().decode(combinedShares);\r\n\r\n if (pk) {\r\n const secretKey = !passKeyRawId\r\n ? encodeBytes32String(vaultPin)\r\n : \"\";\r\n\r\n const newEncryptedPk = passKeyRawId\r\n ? await encryptWithPasskey(pk, passKeyRawId, vaultPin)\r\n : encryptString(pk, secretKey);\r\n\r\n const newSender = new VerifiedWallet(pk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n const newSigner = newSender.setProvider(\r\n new Provider(provider)\r\n );\r\n\r\n const _newsigner: any = newSigner;\r\n const chainToUse = [\r\n base,\r\n mainnet,\r\n gnosis,\r\n polygon,\r\n sepolia,\r\n baseSepolia,\r\n ].find((nt) => Number(nt?.id) === Number(_chainId));\r\n const nexAddress = await computeNexusAccount(\r\n chainToUse,\r\n http(),\r\n _newsigner\r\n );\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n }\r\n};\r\n\r\n// export const resetVaultPin = async (\r\n// hashedVaultId: string,\r\n// hashedOldPin: string,\r\n// hashedNewPin: string,\r\n// vaultContract: any\r\n// ) => {\r\n// return await vaultContract\r\n// .resetPin(hashedVaultId)\r\n// .then(async (res: any) => {\r\n// const trueAny: any = true;\r\n// if (res?.status === 0) {\r\n// return await vaultContract\r\n// .confirmParticipant(\r\n// hashedVaultId,\r\n// hashedNewPin,\r\n// hashedVaultId,\r\n// hashedNewPin,\r\n// trueAny\r\n// )\r\n// .then((cRes: any) => {\r\n// if (cRes?.status === 0) {\r\n// return {};\r\n// } else {\r\n// return null;\r\n// }\r\n// });\r\n// } else {\r\n// return null;\r\n// }\r\n// });\r\n// };\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n hashTheBuffer,\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n publicKeyCredentialCreationOptions,\r\n publicKeyCredentialRequestOptions,\r\n resolveGlobalStyleUnit,\r\n} from \"../utils/helpers\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n checkOrResetOrCreateVault,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport Success from \"../components/success\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport { contractAddress, Provider } from \"@verified-network/verified-sdk\";\r\nimport { ethers } from \"ethers\";\r\nimport { ChainConfig } from \"../utils/config\";\r\n\r\nconst CreatePinPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowSuccessBtn?: (showSuccessBtn: boolean) => void;\r\n setSuccessBtnText?: (successBtnText: string) => void;\r\n setSuccessBtnNeutText?: (successBtnNeutText: string) => void;\r\n setSuccessBtnFunc?: (successBtnFunc: any) => void;\r\n setSuccessBtnNeutFunc?: (successBtnNeutFunc: any) => void;\r\n setActionHeaderText?: (actionHeaderText: string) => void;\r\n setActionFooterText?: (actionFooterText: string) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n isExistingUser?: boolean;\r\n rootTagId?: string;\r\n rootExpandedWidth?: string;\r\n rootExpandedHeight?: string;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n EventEmitter,\r\n styles,\r\n rnPasskey,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [pinHide, setPinHide] = useState(true);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [showCustomSuccess, setShowCustomSuccess] = useState(false);\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n const [customSuccessText, setCustomSuccessText] = useState(\"\");\r\n const [vaultPin, setVaultPin] = useState(\"\");\r\n const [vaultRawId, setVaultRawId] = useState(null);\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [isPin, setIsPin] = useState(false);\r\n const [showImportAcct, setShowImportAcct] = useState(false);\r\n const [privateKeyError, setPrivateKeyError] = useState(\"\");\r\n const [enteredPk, setEnteredPk] = useState(\"\");\r\n const [existingCosigners, setExistingCosigners] = useState([]);\r\n const [quorum, setQuorum] = useState(0);\r\n\r\n const {\r\n address,\r\n pk,\r\n chainId,\r\n vaultContract,\r\n signer,\r\n setVaultData,\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n vaultData,\r\n } = useVaultStore();\r\n\r\n const [pin, setPin] = useState([\"\", \"\", \"\", \"\"]);\r\n const [confirmPin, setConfirmPin] = useState([\"\", \"\", \"\", \"\"]);\r\n\r\n const pinRefs = useRef<Array<any>>([]);\r\n const confirmPinRefs = useRef<Array<any>>([]);\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleFetchUserCosigners = async () => {\r\n // console.log(\"will fetch users cosigners...\");\r\n if (props.setIsLoading) {\r\n props.setIsLoading(true);\r\n }\r\n\r\n const quorumSet = await props.vaultData?.vaultContract.getQuorum(\r\n props.vaultData?.hashedVaultId\r\n );\r\n if (quorumSet?.status === 0 && quorumSet?.response?.result?.length > 0) {\r\n const cosignersNumber = Number(quorumSet?.response?.result[0]);\r\n setQuorum(cosignersNumber);\r\n }\r\n\r\n if (props.vaultData?.existingCosignersHashed?.length > 0) {\r\n setExistingCosigners([\r\n ...new Set(props.vaultData?.existingCosignersHashed),\r\n ]);\r\n // console.log(\"hashed cosigners received will stop..\");\r\n if (props.setIsLoading) {\r\n props.setIsLoading(false);\r\n }\r\n return;\r\n }\r\n const cntAddresses: any = contractAddress;\r\n const custodyAddress = cntAddresses[chainId]?.Custody;\r\n if (!custodyAddress) {\r\n return;\r\n }\r\n const custodyEventAbi = [\r\n {\r\n anonymous: false,\r\n inputs: [\r\n {\r\n indexed: false,\r\n name: \"creator\",\r\n type: \"bytes32\",\r\n },\r\n {\r\n indexed: false,\r\n name: \"participant\",\r\n type: \"bytes32\",\r\n },\r\n ],\r\n name: \"NewParticipant\",\r\n type: \"event\",\r\n },\r\n ];\r\n const etherCustodyContract = new ethers.Contract(\r\n custodyAddress,\r\n custodyEventAbi,\r\n props.vaultData?.signer\r\n );\r\n if (!etherCustodyContract) {\r\n return;\r\n }\r\n const iface = new ethers.Interface(custodyEventAbi);\r\n const eventFragment = iface.getEvent(\"NewParticipant\");\r\n const topicHash = eventFragment.topicHash;\r\n\r\n const provider = new Provider(ChainConfig[chainId]?.rpcUrls[0]);\r\n\r\n const logs = await provider?.getLogs({\r\n address: custodyAddress,\r\n fromBlock: ChainConfig[chainId]?.custodyContractBlock || 0,\r\n toBlock: \"latest\",\r\n topics: [topicHash],\r\n });\r\n\r\n const userParticipants = logs\r\n ?.map((log: any) => {\r\n const parsedLog = iface.parseLog(log);\r\n if (\r\n parsedLog?.args?.creator?.toLowerCase() ===\r\n hashTheString(\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\" \", \"\")}`\r\n ) &&\r\n parsedLog?.args?.creator !== parsedLog?.args?.participant\r\n )\r\n return parsedLog?.args?.participant;\r\n else return null;\r\n })\r\n ?.filter((participant: any) => participant !== null);\r\n\r\n setExistingCosigners([...new Set(userParticipants)]);\r\n if (props.setIsLoading) {\r\n props.setIsLoading(false);\r\n }\r\n };\r\n\r\n if (\r\n (props.isExistingUser &&\r\n props.action === \"reset-pin\" &&\r\n props.vaultData?.signer,\r\n props.vaultData?.hashedVaultId,\r\n props.vaultData?.vaultContract)\r\n ) {\r\n handleFetchUserCosigners();\r\n }\r\n }, [props.isExistingUser, props.action, props.vaultData]);\r\n\r\n const handleTextChange = (text: string, idx: number, isConfirm: boolean) => {\r\n setPinIncorrect(false);\r\n setPinIncorrectText(\"\");\r\n const clean = text.replace(/\\D/g, \"\");\r\n const newPin = isConfirm ? [...confirmPin] : [...pin];\r\n newPin[idx] = clean;\r\n if (isConfirm) {\r\n setConfirmPin(newPin);\r\n if (clean && confirmPinRefs.current[idx + 1]) {\r\n confirmPinRefs.current[idx + 1].focus();\r\n }\r\n\r\n if (\r\n idx < 3 &&\r\n newPin.every((digit) => digit !== \"\") &&\r\n pin.every((digit) => digit !== \"\") &&\r\n newPin.join(\"\") !== pin.join(\"\")\r\n ) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\"Confirm Pin must match New Pin.\");\r\n }\r\n if (idx === 3 && pin.join(\"\") !== newPin.join(\"\")) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\"Confirm Pin must match New Pin.\");\r\n }\r\n } else {\r\n setPin(newPin);\r\n if (clean && pinRefs.current[idx + 1]) {\r\n pinRefs.current[idx + 1].focus();\r\n }\r\n if (\r\n confirmPin.every((digit) => digit !== \"\") &&\r\n newPin.join(\"\") !== confirmPin.join(\"\")\r\n ) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\"New Pin must match Confirm Pin.\");\r\n }\r\n }\r\n };\r\n\r\n const createPasskey = async () => {\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = props?.rootExpandedWidth || \"max-content\";\r\n root.style.minHeight = props?.rootExpandedHeight || \"100vh\";\r\n }\r\n }\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n try {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const credential: any = isReactNative\r\n ? rnPasskey.create(\r\n publicKeyCredentialCreationOptions(\r\n \"Verified Wallet\",\r\n vaultId,\r\n hashTheString(vaultId)\r\n )\r\n )\r\n : await navigator?.credentials?.create({\r\n publicKey: publicKeyCredentialCreationOptions(\r\n \"Verified Wallet\",\r\n vaultId,\r\n hashTheString(vaultId)\r\n ),\r\n });\r\n\r\n const hashedId = hashTheBuffer(credential?.rawId);\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = \"unset\";\r\n root.style.minHeight = \"unset\";\r\n }\r\n }\r\n return {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: credential?.rawId,\r\n };\r\n } catch (err) {\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = \"unset\";\r\n root.style.minHeight = \"unset\";\r\n }\r\n }\r\n setPinIncorrectText(\r\n `Passkey creation failed: ${err?.message?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n return null;\r\n }\r\n };\r\n\r\n const requestPasskey = async () => {\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = \"max-content\";\r\n root.style.minHeight = \"100vh\";\r\n }\r\n }\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = props?.rootExpandedWidth || \"max-content\";\r\n root.style.minHeight = props?.rootExpandedHeight || \"100vh\";\r\n }\r\n }\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n try {\r\n const credential: any = isReactNative\r\n ? await rnPasskey.get(publicKeyCredentialRequestOptions())\r\n : await navigator.credentials.get({\r\n publicKey: publicKeyCredentialRequestOptions(),\r\n });\r\n const hashedId = hashTheBuffer(credential?.rawId);\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = \"unset\";\r\n root.style.minHeight = \"unset\";\r\n }\r\n }\r\n return {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: credential?.rawId,\r\n };\r\n } catch (err) {\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = \"unset\";\r\n root.style.minHeight = \"unset\";\r\n }\r\n }\r\n setPinIncorrectText(\r\n `Passkey authentication failed: ${err?.message?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n };\r\n\r\n const handleKeyPress = (_: any, idx: number, e: any, isConfirm: boolean) => {\r\n const key = e.nativeEvent.key;\r\n\r\n if (\r\n !isConfirm &&\r\n key === \"Backspace\" &&\r\n !pin[idx] &&\r\n idx > 0 &&\r\n pinRefs.current[idx - 1]\r\n ) {\r\n pinRefs.current[idx - 1].focus();\r\n }\r\n\r\n if (\r\n isConfirm &&\r\n key === \"Backspace\" &&\r\n !confirmPin[idx] &&\r\n idx > 0 &&\r\n confirmPinRefs.current[idx - 1]\r\n ) {\r\n confirmPinRefs.current[idx - 1].focus();\r\n }\r\n };\r\n\r\n const isConfirmActive = () => {\r\n if (!isPin) {\r\n return true;\r\n }\r\n\r\n if (props.isExistingUser) {\r\n return pin.every((digit) => digit !== \"\");\r\n } else {\r\n return (\r\n pin.every((digit) => digit !== \"\") &&\r\n confirmPin.every(\r\n (digit) => digit !== \"\" && pin.join(\"\") === confirmPin.join(\"\")\r\n )\r\n );\r\n }\r\n };\r\n\r\n const isConfirmActiveImp = () => {\r\n if (\r\n showImportAcct &&\r\n enteredPk?.length === 66 &&\r\n enteredPk?.toLowerCase()?.startsWith(\"0x\")\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const handleVaultManagement = async (pinToUse?: {\r\n pinString: string;\r\n hashed: string;\r\n rawId: any;\r\n address?: string;\r\n pk?: string;\r\n vaultContract?: any;\r\n signer?: any;\r\n vaultData?: any;\r\n }) => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the CreatePinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (\r\n (!props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n address &&\r\n vaultContract) ||\r\n (!props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n props.vaultData?.vaultContract &&\r\n props.vaultData?.hashedOldPin) ||\r\n (props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n address &&\r\n vaultContract) ||\r\n (props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n props.vaultData?.vaultContract)\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = pinToUse?.pinString || pin.join(\"\");\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = pinToUse?.hashed || hashTheString(vaultPin);\r\n await checkOrResetOrCreateVault(\r\n isReactNative,\r\n AsyncStorage,\r\n EventEmitter,\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n channel,\r\n pinToUse?.pk ? pinToUse?.pk : pk ? pk : props.vaultData?.pk,\r\n pinToUse?.address\r\n ? pinToUse?.address\r\n : address\r\n ? address\r\n : props.vaultData?.address,\r\n pinToUse?.vaultContract\r\n ? pinToUse?.vaultContract\r\n : vaultContract\r\n ? vaultContract\r\n : props.vaultData?.vaultContract,\r\n props.action,\r\n pinToUse?.vaultData ? pinToUse?.vaultData : props.vaultData,\r\n props.txData,\r\n pinToUse?.rawId,\r\n props.action === \"reset-pin\"\r\n ? [props.vaultData?.hashedVaultId, ...existingCosigners]\r\n : undefined,\r\n quorum\r\n ).then(async (res: any) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setVaultData(\r\n res?.shouldStop && res?.vaultId\r\n ? {\r\n vaultId: res?.vaultId,\r\n hashedVaultId: res?.hashedVaultId,\r\n hashedVaultPin: res?.hashedVaultPin,\r\n pk: res?.pk,\r\n rawId: res?.rawId,\r\n channel: res?.channel,\r\n }\r\n : res?.shouldStop\r\n ? {}\r\n : res\r\n );\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n if (props.action === \"invitation\") {\r\n setVaultPin(vaultPin);\r\n setVaultRawId(pinToUse?.rawId);\r\n setShowInvitation(true);\r\n } else if (props.action === \"reset-pin\") {\r\n if (!isReactNative && chrome?.storage?.local && isPin) {\r\n chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage &&\r\n isPin\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage && isPin) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n await props.helperFunctions.sendCreatorAuthChanged(\r\n channel,\r\n vaultId,\r\n pinToUse?.hashed,\r\n props.vaultData.hashedVaultPin,\r\n Date.now()\r\n ),\r\n setCustomSuccessText(\r\n `You have successfully reset your account ${\r\n isPin ? \"4-Digits PIN\" : \"Passkey\"\r\n }. ${\r\n isPin\r\n ? \"Login with the new 4-Digits PIN\"\r\n : \"your new Passkey will be used to authenticate your account.\"\r\n }`\r\n );\r\n setShowCustomSuccess(true);\r\n } else if (!res?.shouldStop) {\r\n props.setStep(\"5\");\r\n } else if (res?.shouldStop && props.action !== \"getPk\") {\r\n setCustomSuccessText(\"\");\r\n setShowCustomSuccess(true);\r\n } else if (res?.shouldStop && props.action === \"getPk\") {\r\n props.setStep(\"0\");\r\n }\r\n } else if (res === null) {\r\n if (props.action === \"reset-pin\") {\r\n setPinIncorrectText(\"Reset pin failed. Try again later.\");\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\r\n `You are an existing user. Please use the right ${\r\n isPin\r\n ? \"existing 4-Digits PIN\"\r\n : \"existing Passkey for\" + \" \" + vaultId\r\n } to recover your account login access on this device/browser`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n setPinIncorrectText(\r\n \"Unexpected error while creating account. Please try again later.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (!isConfirmActive()) {\r\n setPinIncorrectText(\r\n props.isExistingUser\r\n ? \"Enter full pin.\"\r\n : \"New Pin must match Confirm Pin.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n if (\r\n vaultPin?.length === 4 &&\r\n props?.vaultData?.hashedVaultId &&\r\n props.vaultData?.hashedVaultPin &&\r\n vaultId\r\n ) {\r\n props.setIsLoading(true);\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = isPin\r\n ? hashTheString(vaultPin)\r\n : hashTheBuffer(vaultRawId);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n channel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.vaultData?.hashedVaultId,\r\n props.vaultData?.hashedVaultPin,\r\n props.vaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n vaultContract\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (\r\n res &&\r\n !vaultData?.isExisting &&\r\n props.setShowSuccessBtn &&\r\n props.setSuccessBtnText &&\r\n props.setSuccessBtnNeutText &&\r\n props.setActionHeaderText &&\r\n props.setActionFooterText\r\n ) {\r\n props.setShowSuccessBtn(true);\r\n props.setSuccessBtnText(\"Continue Setting Up Your Account\");\r\n props.setSuccessBtnNeutText(\"Do It Later\");\r\n props.setActionHeaderText(\"Successful\");\r\n props.setActionFooterText(\r\n accepted\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.vaultData?.vaultId}`\r\n );\r\n props.setStep(\"5\");\r\n } else if (res && vaultData?.isExisting) {\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <ScrollView\r\n contentContainerStyle={{\r\n flexGrow: 1,\r\n padding: 16,\r\n backgroundColor: \"#fff\",\r\n }}\r\n >\r\n {fontsLoaded && (\r\n <React.Fragment>\r\n {!showCustomSuccess && !showInvitation && (\r\n <React.Fragment>\r\n {!showImportAcct && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupLanguage }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin\r\n ? \"Create PIN\"\r\n : \"Secure Your Account with a Passkey\"}\r\n </Text>\r\n )}\r\n {props.isExistingUser && props.action !== \"reset-pin\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin\r\n ? \"Enter PIN\"\r\n : \"Sign-in with Existing Passkey\"}\r\n </Text>\r\n )}\r\n {props.isExistingUser && props.action === \"reset-pin\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin ? \"Change Pin\" : \"Change Passkey\"}\r\n </Text>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Protect your blockchain assets with{\" \"}\r\n {isPin ? \"PIN\" : \"Passkey\"}. This{\" \"}\r\n {isPin ? \"PIN\" : \"Passkey\"} will be required for all\r\n future transactions and logins.\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <React.Fragment>\r\n {props.action !== \"reset-pin\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Welcome back, please login using{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {isPin\r\n ? \"existing 4-Digits PIN\"\r\n : \"existing Passkey\"}\r\n </Text>{\" \"}\r\n for your{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`}\r\n </Text>{\" \"}\r\n account.\r\n </Text>\r\n )}\r\n\r\n {props.action === \"reset-pin\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Welcome back, Create new\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {isPin ? \"4-Digits PIN\" : \"Passkey\"}\r\n </Text>{\" \"}\r\n for your{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`}\r\n </Text>{\" \"}\r\n account.\r\n </Text>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </View>\r\n </View>\r\n\r\n {!isPin && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerMoreBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a passkey?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A passkey replaces passwords. Only your device can\r\n unlock it via PIN, Face/Voice/Fingerprint.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Your passkey is stored in your cloud account such as\r\n Apple iCloud Keychain, Google Password Manager, or\r\n Microsoft Account and synchronized across all devices.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In the event of device loss, as long as you have\r\n access to your cloud account, you can recover your\r\n passkey.\r\n </Text>\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click \"Create New Passkey\" button, passkey setup\r\n popup will appears to create new passkey and secure\r\n your account.\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click{\" \"}\r\n {props.action === \"reset-pin\"\r\n ? \"Create New Passkey\"\r\n : \"Login With Passkey\"}{\" \"}\r\n button, passkey popup will appears{\" \"}\r\n {props.action === \"reset-pin\"\r\n ? \"to create new passkey and secure your account\"\r\n : \"to login using the accoun't passkey.\"}\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={() => {\r\n if (!isReactNative) {\r\n window?.open(\r\n \"https://blog.google/inside-google/googlers/ask-a-techspert/how-passkeys-work\",\r\n \"_blank\"\r\n );\r\n }\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More about Passkey\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n\r\n {isPin && (\r\n <React.Fragment>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputContainer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPinInputContainerText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-pin-input-container-text\"\r\n >\r\n New PIN\r\n </Text>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputGroup }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {pin.map((_, idx) => (\r\n <TextInput\r\n key={`pin-${idx}`}\r\n style={\r\n isReactNative && pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInputRed }\r\n : isReactNative && pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n secureTextEntry={pinHide}\r\n keyboardType=\"number-pad\"\r\n maxLength={1}\r\n ref={(el: any) => (pinRefs.current[idx] = el)}\r\n value={pin[idx]}\r\n onChangeText={(text: any) =>\r\n handleTextChange(text, idx, false)\r\n }\r\n onKeyPress={(e: any) =>\r\n handleKeyPress(e, idx, e, false)\r\n }\r\n />\r\n ))}\r\n </View>\r\n\r\n {props.isExistingUser && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {!pinIncorrect && <Text></Text>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct pin\r\n </Text>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {!pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(true)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinShow }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n {pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(false)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinHide }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n )}\r\n </View>\r\n\r\n {!props.isExistingUser && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPinInputContainerText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-pin-input-container-text\"\r\n >\r\n Confirm PIN\r\n </Text>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputGroup }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {confirmPin.map((_, idx) => (\r\n <TextInput\r\n key={`confirm-${idx}`}\r\n style={\r\n isReactNative && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputRed,\r\n }\r\n : isReactNative && !pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n secureTextEntry={pinHide}\r\n keyboardType=\"number-pad\"\r\n maxLength={1}\r\n ref={(el: any) =>\r\n (confirmPinRefs.current[idx] = el)\r\n }\r\n value={confirmPin[idx]}\r\n onChangeText={(text: any) =>\r\n handleTextChange(text, idx, true)\r\n }\r\n onKeyPress={(e: any) =>\r\n handleKeyPress(e, idx, e, true)\r\n }\r\n />\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {!pinIncorrect && <Text></Text>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct pin\r\n </Text>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {!pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(true)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinShow }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n {pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(false)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinHide }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: 20 }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFooterFirstSection,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-footer-first-section\"\r\n >\r\n {!isPin && (\r\n <React.Fragment>\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <React.Fragment>\r\n {props.action === \"reset-pin\" && !isPin && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n color: \"#603FF4\",\r\n margin: \"10px\",\r\n }\r\n : { color: \"#603FF4\", margin: \"10px\" }\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Note: Before starting this process ensure you\r\n have backed up your private key. To do so,\r\n please navigate to the \"Account\" section on\r\n your dashboard and click on \"View Private\r\n Key.\" Once displayed, write down the private\r\n key and store it securely. Incomplete passkey\r\n change process may result in loss of access to\r\n your account.\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n onPress={async (e: any) => {\r\n if (props.action === \"reset-pin\") {\r\n const credentialIdHashed =\r\n await createPasskey();\r\n if (credentialIdHashed) {\r\n await handleVaultManagement(\r\n credentialIdHashed\r\n );\r\n }\r\n } else {\r\n const credentialIdHashed =\r\n await requestPasskey();\r\n\r\n if (credentialIdHashed) {\r\n await handleVaultManagement(\r\n credentialIdHashed\r\n );\r\n }\r\n }\r\n }}\r\n >\r\n {props.action === \"reset-pin\" && (\r\n <Text>Create New Passkey</Text>\r\n )}\r\n {props.action !== \"reset-pin\" && (\r\n <Text>Login With Passkey</Text>\r\n )}\r\n </TouchableOpacity>\r\n </React.Fragment>\r\n )}\r\n\r\n {!props.isExistingUser && (\r\n <React.Fragment>\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n onPress={async (e: any) => {\r\n const credentialIdHashed =\r\n await createPasskey();\r\n if (credentialIdHashed) {\r\n await handleVaultManagement(\r\n credentialIdHashed\r\n );\r\n }\r\n }}\r\n >\r\n <Text>Create New Account</Text>\r\n </TouchableOpacity>\r\n\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-amount-info-separator\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPPaymentPortalAmountInfoSeparator,\r\n }\r\n : {}\r\n }\r\n >\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-line\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPPaymentPortalLine,\r\n }\r\n : {}\r\n }\r\n ></View>\r\n <Text\r\n className=\"verified-custd-mdl-p-payment-portal-separator-text\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPaymentPortalSeparatorText,\r\n }\r\n : {}\r\n }\r\n >\r\n OR\r\n </Text>\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-line\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPPaymentPortalLine,\r\n }\r\n : {}\r\n }\r\n ></View>\r\n </View>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n border: \"1px solid #0c0c0e\",\r\n }\r\n : {\r\n border:\r\n \"1px solid var(--Neutral-950, #0c0c0e)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-startup-button-click\"\r\n onPress={async (e: any) => {\r\n setShowImportAcct(true);\r\n }}\r\n >\r\n <Text>Import An Existing account</Text>\r\n </TouchableOpacity>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {isPin && (\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative && isConfirmActive()\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : isReactNative && !isConfirmActive()\r\n ? { ...styles.verifiedCustdMdlStartupButton }\r\n : {}\r\n }\r\n className={\r\n isConfirmActive()\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={async (e: any) => {\r\n await handleVaultManagement();\r\n }}\r\n >\r\n <Text>Proceed</Text>\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n {showImportAcct && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupLanguage }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n Import Existing Account\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInput,\r\n marginTop: \"20px\",\r\n marginBottom: \"20px\",\r\n }\r\n : { marginTop: \"20px\", marginBottom: \"20px\" }\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <TextInput\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactSecondSection }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Private key starting with 0x\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n value={enteredPk}\r\n onChangeText={(text: string) => {\r\n setEnteredPk(text);\r\n }}\r\n />\r\n {privateKeyError?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlInputErrorText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {privateKeyError}\r\n </Text>\r\n )}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerMoreBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a passkey?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A passkey replaces passwords. Only your device can unlock\r\n it via PIN, Face/Voice/Fingerprint.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Your passkey is stored in your cloud account such as Apple\r\n iCloud Keychain, Google Password Manager, or Microsoft\r\n Account and synchronized across all devices.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In the event of device loss, as long as you have access to\r\n your cloud account, you can recover your passkey.\r\n </Text>\r\n\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click \"Proceed With Passkey\" button, passkey setup popup\r\n will appears to create new passkey and secure your\r\n account.\r\n </Text>\r\n\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={() => {\r\n if (!isReactNative) {\r\n window?.open(\r\n \"https://blog.google/inside-google/googlers/ask-a-techspert/how-passkeys-work\",\r\n \"_blank\"\r\n );\r\n }\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More about Passkey\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: 20 }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFooterFirstSection,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-footer-first-section\"\r\n >\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative && isConfirmActiveImp()\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : isReactNative && !isConfirmActiveImp()\r\n ? { ...styles.verifiedCustdMdlStartupButton }\r\n : {}\r\n }\r\n className={\r\n isConfirmActiveImp()\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={async (e: any) => {\r\n try {\r\n if (!isConfirmActiveImp()) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\r\n \"Invalid private key entered. Please scroll up, check private key and try again.\"\r\n );\r\n return;\r\n }\r\n const walletAndContractDetails =\r\n await initWalletAndContract(chainId, enteredPk);\r\n if (\r\n !walletAndContractDetails?.chainId ||\r\n !walletAndContractDetails?.address ||\r\n !walletAndContractDetails?.pk ||\r\n !walletAndContractDetails?.provider ||\r\n !walletAndContractDetails?.signer ||\r\n !walletAndContractDetails?.vaultContract\r\n ) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\r\n \"Invalid private key entered. Please check private key starts with 0x and try again.\"\r\n );\r\n return;\r\n }\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultData(walletAndContractDetails.vaultData);\r\n setVaultContract(\r\n walletAndContractDetails.vaultContract\r\n );\r\n\r\n const credentialIdHashed = await createPasskey();\r\n\r\n if (credentialIdHashed) {\r\n await handleVaultManagement({\r\n ...credentialIdHashed,\r\n pk: walletAndContractDetails.pk,\r\n vaultContract:\r\n walletAndContractDetails.vaultContract,\r\n signer: walletAndContractDetails.signer,\r\n address: walletAndContractDetails.address,\r\n vaultData: walletAndContractDetails.vaultData,\r\n });\r\n }\r\n } catch (err) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\r\n \"Error while importing account.try again later.\"\r\n );\r\n return;\r\n }\r\n }}\r\n >\r\n <Text>Proceed With Passkey</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {!showCustomSuccess && showInvitation && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <View\r\n className=\"verified-custd-mdl-startup-language\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupLanguage,\r\n padding: 0,\r\n position: \"relative\",\r\n }\r\n : { padding: 0, position: \"relative\" }\r\n }\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.vaultData?.vaultId}\r\n </Text>{\" \"}\r\n has requested you to be a Co-Signer\r\n </Text>\r\n </View>\r\n </View>\r\n <Image\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerBodyIcon }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon1 }}\r\n />\r\n {!showRejectInvitation && (\r\n <ScrollView>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerMoreBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a Co-Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : { fontSize: 12, color: \"#5B5D6E\" }\r\n }\r\n >\r\n A Co-Signer is a person who has the right given by you\r\n to generate a new pin on your behalf incase you forget\r\n it.\r\n </Text>\r\n\r\n <View className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image source={{ uri: imageAssets.pkicon }} />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n As a Co Signer you can help{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n reset PIN\r\n </Text>\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.encryptedIcon }}\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n Don’t worry, they{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n will not get access\r\n </Text>{\" \"}\r\n to your account in any way.\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n onPress={() => setShowRejectInvitation(true)}\r\n >\r\n <Text>Reject</Text>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n onPress={async () => {\r\n await handleAcceptAndRejectInvitation(true);\r\n }}\r\n >\r\n <Text>Accept</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </ScrollView>\r\n )}\r\n\r\n {showRejectInvitation && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContentOutter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-title\"\r\n >\r\n Are you sure you want to reject this request?\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyLabel,\r\n fontSize: 12,\r\n color: \"#5B5D6E\",\r\n }\r\n : { fontSize: 12, color: \"#5B5D6E\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.vaultData?.vaultId}\r\n </Text>\r\n , you will not be able to reset the PIN for them.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n width: \"90%\",\r\n }\r\n : { width: \"90%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n onPress={async () => {\r\n await handleAcceptAndRejectInvitation(false);\r\n }}\r\n >\r\n <Text>Yes</Text>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n onPress={() => setShowRejectInvitation(false)}\r\n >\r\n <Text>No</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n {showInvitationSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n !showRejectInvitation\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer request from ${props.vaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showCustomSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n customSuccessText?.length > 0\r\n ? customSuccessText\r\n : \"You have successfully logged in your account.\"\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default CreatePinPage;\r\n","import React, { useEffect } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst Success = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n setStep?: (step: string) => void;\r\n handleShowDashboard?: () => void;\r\n stepToSet?: string;\r\n messageTosend?: { type: string; key?: string; value?: any };\r\n customTextHeader: string;\r\n customTextFooter: string;\r\n showButton?: boolean;\r\n showText?: boolean;\r\n buttonText?: string;\r\n buttonNeutText?: string;\r\n buttonFunc?: any;\r\n buttonNeutFunc?: any;\r\n action?: string;\r\n actionHeaderText?: string;\r\n actionFooterText?: string;\r\n timeoutTime?: number;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n EventEmitter,\r\n } = props.platform;\r\n useEffect(() => {\r\n let timeoutId: any;\r\n if (!props.showButton) {\r\n timeoutId = setTimeout(() => {\r\n if (props.messageTosend) {\r\n try {\r\n const windowObj = !isReactNative ? window : null;\r\n if (!isReactNative && chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage(props.messageTosend, (res) => {\r\n if (res && props.action !== \"signRecovery\") {\r\n windowObj?.close();\r\n }\r\n });\r\n } else if (!isReactNative && !chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(props.messageTosend?.type, {\r\n detail: {\r\n value: props.messageTosend?.value,\r\n },\r\n });\r\n windowObj?.dispatchEvent(event);\r\n } else if (isReactNative && EventEmitter) {\r\n const vaultEventEmitter = new EventEmitter();\r\n vaultEventEmitter.emit(props.messageTosend?.type, {\r\n value: props.messageTosend?.value,\r\n });\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error sending message: \", err);\r\n }\r\n }\r\n }\r\n\r\n if (props.setStep && props.stepToSet) {\r\n props.setStep(props.stepToSet);\r\n }\r\n }, props.timeoutTime ?? 3000);\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n };\r\n }, []);\r\n\r\n const handleContinue = () => {\r\n props.setStep?.(\"6\");\r\n };\r\n\r\n const handleClosePopup = () => {\r\n if (!isReactNative && chrome.runtime) {\r\n chrome.runtime.sendMessage({\r\n type: \"VW_REQ\",\r\n params: { method: \"closePopup\" },\r\n });\r\n }\r\n };\r\n\r\n const handleShowDashboard = () => {\r\n props.handleShowDashboard();\r\n };\r\n\r\n return (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlSuccessPopupContentContainer,\r\n alignContent: \"center\",\r\n justifyContent: \"center\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n padding: 0,\r\n }\r\n : {\r\n alignContent: \"center\",\r\n justifyContent: \"center\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n padding: 0,\r\n }\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-container\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlSuccessPopupContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content\"\r\n >\r\n <Image\r\n style={{ width: \"90%\" }}\r\n source={{ uri: imageAssets.successIcon }}\r\n alt=\"Success Icon\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlSuccessPopupContentText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlSuccessPopupContentTextHeader }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-text-header\"\r\n >\r\n {!props?.showButton\r\n ? props.customTextHeader\r\n : props.actionHeaderText}\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlSuccessPopupContentTextFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-text-footer\"\r\n >\r\n {!props?.showButton\r\n ? props.customTextFooter\r\n : props.actionFooterText}\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n {props.showButton && props.buttonText?.length > 0 && (\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive, marginTop: 10 }\r\n : { marginTop: 10 }\r\n }\r\n onPress={() => {\r\n if (props.action === \"invitation\") {\r\n handleContinue();\r\n } else if (props.action === \"completeRecovery\") {\r\n handleShowDashboard();\r\n } else if (props.buttonFunc) {\r\n props.buttonFunc();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n <Text style={{ fontSize: 14 }}>{props.buttonText}</Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n {props.showButton && props.buttonNeutText?.length > 0 && (\r\n <TouchableOpacity\r\n onPress={() => {\r\n if (props.action === \"invitation\") {\r\n handleClosePopup();\r\n } else if (props.buttonNeutFunc) {\r\n props.buttonNeutFunc();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-click\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupButtonClick, marginTop: 10 }\r\n : { marginTop: 10 }\r\n }\r\n >\r\n <Text style={{ fontSize: 14 }}>{props.buttonNeutText}</Text>\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nexport default Success;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { imageAssets, numberPositionsFmt } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { completeVaultCreation } from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport {\r\n hashTheString,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport { ethers } from \"ethers\";\r\nimport { contractAddress, Provider } from \"@verified-network/verified-sdk\";\r\nimport { ChainConfig } from \"../utils/config\";\r\nimport Success from \"../components/success\";\r\n\r\nconst AddCosignersPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n action?: string;\r\n setShowDashboard?: (showDashboard: boolean) => void;\r\n setShowResetPin?: (showResetPin: boolean) => void;\r\n setShowRemoveCosigner?: (showRemoveCosigner: boolean) => void;\r\n dashbordElement?: React.ComponentType<{\r\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n }>;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [showLearnMore, setShowLearnMore] = useState<boolean>(false);\r\n const [learnMoreStep, setLearnMoreStep] = useState<string>(\"1\");\r\n const [cosignerStep, setCosignerStep] = useState<string>(\"1\");\r\n const [showAddMore, setShowAddMore] = useState<boolean>(false);\r\n const [addChannel, setAddChannel] = useState<string>(\"email\");\r\n const [coSignerNumber, setCoSignerNumber] = useState<string>(\"\");\r\n const [coSignerNumberFmt, setCoSignerNumberFmt] = useState<string>(\"\");\r\n const [coSignerEmail, setCoSignerEmail] = useState<string>(\"\");\r\n const [coSignerName, setCoSignerName] = useState<string>(\"\");\r\n const [userInput, setUserInput] = useState<string>(\"\");\r\n const [searchActive, setSearchActive] = useState<boolean>(false);\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [coSigners, setCosigners] = useState([]);\r\n const [existingCosignersNumber, setExistingCosignersNumber] = useState(0);\r\n const [existingCosigners, setExistingCosigners] = useState([]);\r\n const [remainingCosigners, setRemainingCosigners] = useState([]);\r\n const [showSetRule, setShowSetRule] = useState<boolean>(false);\r\n const [requiredSigners, setRequiredSigners] = useState<number>(2);\r\n const [errorText, setErrorText] = useState<string>(\"\");\r\n const [showRemoveSuccess, setShowRemoveSuccess] = useState<boolean>(false);\r\n\r\n const { pk, vaultData, vaultContract, chainId, signer } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else {\r\n //load fonts with expo-font for react native.\r\n try {\r\n const _ = await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } catch (err) {\r\n setFontsLoaded(false);\r\n }\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleFetchUserCosigners = async () => {\r\n if (props.setIsLoading) {\r\n props.setIsLoading(true);\r\n }\r\n const hashedVaultId = hashTheString(\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`\r\n );\r\n const quorumSet = await vaultContract.getQuorum(hashedVaultId);\r\n if (quorumSet?.status === 0 && quorumSet?.response?.result?.length > 0) {\r\n const cosignersNumber = Number(quorumSet?.response?.result[0]);\r\n setExistingCosignersNumber(cosignersNumber);\r\n setRemainingCosigners(new Array(cosignersNumber).fill(\" \"));\r\n }\r\n if (props.setIsLoading) {\r\n props.setIsLoading(false);\r\n }\r\n if (vaultData?.existingCosignersHashed?.length > 0) {\r\n setExistingCosigners([...new Set(vaultData?.existingCosignersHashed)]);\r\n setRemainingCosigners([...new Set(vaultData?.existingCosignersHashed)]);\r\n return;\r\n }\r\n const cntAddresses: any = contractAddress;\r\n const custodyAddress = cntAddresses[chainId]?.Custody;\r\n if (!custodyAddress) {\r\n return;\r\n }\r\n const custodyEventAbi = [\r\n {\r\n anonymous: false,\r\n inputs: [\r\n {\r\n indexed: false,\r\n name: \"creator\",\r\n type: \"bytes32\",\r\n },\r\n {\r\n indexed: false,\r\n name: \"participant\",\r\n type: \"bytes32\",\r\n },\r\n ],\r\n name: \"NewParticipant\",\r\n type: \"event\",\r\n },\r\n ];\r\n const etherCustodyContract = new ethers.Contract(\r\n custodyAddress,\r\n custodyEventAbi,\r\n signer\r\n );\r\n if (!etherCustodyContract) {\r\n return;\r\n }\r\n const iface = new ethers.Interface(custodyEventAbi);\r\n const eventFragment = iface.getEvent(\"NewParticipant\");\r\n const topicHash = eventFragment.topicHash;\r\n\r\n const provider = new Provider(ChainConfig[chainId]?.rpcUrls[0]);\r\n\r\n const logs = await provider?.getLogs({\r\n address: custodyAddress,\r\n fromBlock: ChainConfig[chainId]?.custodyContractBlock || 0,\r\n toBlock: \"latest\",\r\n topics: [topicHash],\r\n });\r\n\r\n const userParticipants = logs\r\n ?.map((log: any) => {\r\n const parsedLog = iface.parseLog(log);\r\n if (\r\n parsedLog?.args?.creator?.toLowerCase() ===\r\n hashTheString(\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\" \", \"\")}`\r\n ) &&\r\n parsedLog?.args?.creator !== parsedLog?.args?.participant\r\n )\r\n return parsedLog?.args?.participant;\r\n else return null;\r\n })\r\n ?.filter((participant: any) => participant !== null);\r\n\r\n setExistingCosigners([...new Set(userParticipants)]);\r\n setRemainingCosigners([...new Set(userParticipants)]);\r\n };\r\n\r\n if (\r\n (props.userEmail?.length > 0 &&\r\n props.action === \"remove-cosigner\" &&\r\n signer &&\r\n vaultContract) ||\r\n (props.userNumberFmt?.length > 0 &&\r\n props.action === \"remove-cosigner\" &&\r\n signer &&\r\n vaultContract)\r\n ) {\r\n handleFetchUserCosigners();\r\n }\r\n }, [\r\n props.userEmail,\r\n props.action,\r\n props.userNumberFmt,\r\n props.selectedCountry.area,\r\n ]);\r\n\r\n const handleButtonDisplay = () => {\r\n // const button = document.getElementById(\"add-cosigner-button\");\r\n // if (button && coSigners?.length > 0) {\r\n // button.className = \"startup-button-active\";\r\n // } else {\r\n // button!.className = \"startup-button\";\r\n // }\r\n };\r\n\r\n const handleAddCoSigner = () => {\r\n let coSignerLength = coSigners?.length;\r\n if (addChannel === \"sms\" && coSignerNumber?.length === 0) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"sms\" && coSignerNumber?.length !== 10) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"email\" && coSignerEmail?.length === 0) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(coSignerEmail)\r\n ) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n coSigners?.find((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() + sig?.number?.toLowerCase() ===\r\n selectedCountry.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase()\r\n : sig?.email?.toLowerCase() === coSignerEmail?.toLowerCase()\r\n )\r\n ) {\r\n if (props.action !== \"remove-cosigner\") {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number is already a co-signer\"\r\n : \"Invalid input, email is already a co-signer\"\r\n );\r\n }\r\n if (props.action === \"remove-cosigner\") {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number is already added to list of co-signers to remove\"\r\n : \"Invalid input, email is already added to list of co-signers to remove\"\r\n );\r\n }\r\n return;\r\n } else if (\r\n addChannel === \"sms\" &&\r\n selectedCountry?.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase() ===\r\n props.selectedCountry.area?.toLowerCase() +\r\n props.userNumberFmt?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, phone number is creator's phone number\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n coSignerEmail?.toLowerCase() === props.userEmail?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, email is creator's email\");\r\n return;\r\n } else if (\r\n props.action === \"remove-cosigner\" &&\r\n existingCosigners?.length === 0\r\n ) {\r\n setErrorText(\r\n \"Error while fetching your existing cosigners. Try again later\"\r\n );\r\n return;\r\n } else if (\r\n props.action === \"remove-cosigner\" &&\r\n !existingCosigners?.includes(\r\n hashTheString(\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail\r\n )\r\n )\r\n ) {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number entered is not a valid co-signer of your account.\"\r\n : \"Invalid input, email entered is not a valid co-signer of your account.\"\r\n );\r\n return;\r\n } else if (\r\n props.action === \"remove-cosigner\" &&\r\n remainingCosigners?.length === 1\r\n ) {\r\n setErrorText(\r\n \"You have only 1 co-signer left, at least one(1) co-signer is required.\"\r\n );\r\n return;\r\n } else if (coSignerLength + 1 === 5) {\r\n setErrorText(\r\n \"You cannot add more than 5 Co-signers to your account. You can delete existing cosigner and add new one.\"\r\n );\r\n return;\r\n }\r\n setErrorText(\"\");\r\n\r\n setCosigners((cngs) => [\r\n {\r\n name: coSignerName,\r\n email: coSignerEmail,\r\n number: coSignerNumberFmt,\r\n phoneNumber: `+${selectedCountry?.area}${coSignerNumber}`,\r\n otpChannel: addChannel,\r\n phoneArea: selectedCountry?.area,\r\n position: cngs?.length + 1,\r\n vaultId:\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail,\r\n },\r\n ...cngs,\r\n ]);\r\n setCoSignerEmail(\"\");\r\n setCoSignerName(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n if (coSignerLength + 1 === 4) {\r\n setShowAddMore(false);\r\n }\r\n if (props.action === \"remove-cosigner\" && remainingCosigners?.length > 1) {\r\n setRemainingCosigners(\r\n remainingCosigners?.filter(\r\n (sig) =>\r\n sig !==\r\n hashTheString(\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail\r\n )\r\n )\r\n );\r\n }\r\n };\r\n\r\n const handleCompleteVault = async () => {\r\n const keyHolders =\r\n props.action !== \"remove-cosigner\"\r\n ? [\r\n {\r\n otpChannel: props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n email: props?.userEmail,\r\n phoneNumber: `+${\r\n props?.selectedCountry?.area\r\n }${props?.userNumberFmt?.replace(\" \", \"\")}`,\r\n vaultId: vaultData?.vaultId,\r\n },\r\n ...coSigners,\r\n ]\r\n : [vaultData?.hashedVaultId, ...remainingCosigners];\r\n\r\n if (\r\n (props.action !== \"remove-cosigner\" &&\r\n keyHolders?.length > 0 &&\r\n coSigners?.length > 0 &&\r\n requiredSigners &&\r\n vaultData?.vaultId &&\r\n vaultData?.hashedVaultId &&\r\n vaultContract &&\r\n pk &&\r\n props.helperFunctions?.sendCoSignerInvitation &&\r\n props.helperFunctions?.sendCreatorConfirmation) ||\r\n (props.action === \"remove-cosigner\" &&\r\n keyHolders?.length > 1 &&\r\n requiredSigners &&\r\n vaultData?.vaultId &&\r\n vaultData?.hashedVaultId &&\r\n vaultContract &&\r\n pk &&\r\n props.helperFunctions?.sendCoSignerInvitation &&\r\n props.helperFunctions?.sendCreatorConfirmation)\r\n ) {\r\n props.setIsLoading(true);\r\n await completeVaultCreation(\r\n props.helperFunctions.sendCoSignerInvitation,\r\n props.helperFunctions.sendCreatorConfirmation,\r\n keyHolders,\r\n coSigners,\r\n props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n requiredSigners,\r\n vaultData.vaultId,\r\n vaultData.hashedVaultId,\r\n vaultData.vaultPin,\r\n vaultData.hashedVaultPin,\r\n vaultContract,\r\n pk,\r\n vaultData?.rawId,\r\n props.action\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n props.action === \"remove-cosigner\"\r\n ? setShowRemoveSuccess(true)\r\n : props.setStep(\"7\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupLanguage, padding: \"0\" }\r\n : { padding: \"0\" }\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n {fontsLoaded && !showRemoveSuccess && (\r\n <React.Fragment>\r\n {!showLearnMore && (\r\n <React.Fragment>\r\n {cosignerStep === \"1\" && (\r\n <React.Fragment>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"2\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {props.action === \"remove-cosigner\"\r\n ? \"You can remove an existing Co-signer\"\r\n : \" We require you to add at least another Co-Signer.\"}\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <Image\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerBodyIcon }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon1 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.pkicon }}\r\n alt=\"icon\"\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n This is a blockchain based platform where{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n we do not store password keys.\r\n </Text>\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.encryptedIcon }}\r\n alt=\"icon\"\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n Don’t worry, the{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n Co-Signer does not get access\r\n </Text>{\" \"}\r\n to your account in any way.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.supervise }}\r\n alt=\"icon\"\r\n />\r\n </View>\r\n {props.action !== \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n You can{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n be your own Co-Signer\r\n </Text>{\" \"}\r\n by adding a different contact number or Email ID. to\r\n your account in any way.\r\n </Text>\r\n )}\r\n\r\n {props.action === \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n You may remove an existing Co-signer; however{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n at least one (1) Co-signer must remain\r\n </Text>{\" \"}\r\n on the account. You can manage your account’s\r\n Co-signers on the next page.\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerButtonsCont }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n }\r\n onPress={() => {\r\n setLearnMoreStep(\"1\");\r\n setShowLearnMore(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Learn More</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n width: \"50%\",\r\n }\r\n : {\r\n width: \"50%\",\r\n }\r\n }\r\n onPress={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>\r\n {props.action === \"remove-cosigner\"\r\n ? \"Manage Signers\"\r\n : \"Add Co-Signer\"}\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n\r\n {cosignerStep === \"2\" && (\r\n <React.Fragment>\r\n {\" \"}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"2\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContent,\r\n gap: 16,\r\n }\r\n : { gap: 16 }\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {props.action === \"remove-cosigner\"\r\n ? \"Remove your Co-signers\"\r\n : \"Add your Co-Signers\"}\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n {!showSetRule && (\r\n <React.Fragment>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-text\"\r\n >\r\n {props.action === \"remove-cosigner\"\r\n ? \"Input phone number/an Email ID of the Co-Signer you want to remove\"\r\n : \"Add a phone number/an Email ID of Co-Signer to send them a request.\"}\r\n </Text>\r\n\r\n {props.action === \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-text\"\r\n >\r\n You Signing rule is{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoTextBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-text-bold\"\r\n >\r\n {existingCosignersNumber} required signers\r\n </Text>\r\n </Text>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoTextBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-text-bold\"\r\n >\r\n NOTE:\r\n </Text>{\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \"You cannot remove all Co-signers at least one(1) must remain, This is to ensure your account is secured.\"\r\n : \"You can add yourself as a Co-Signer and further add more Co-Signers to your account.\"}\r\n </Text>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerStep2Body }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body\"\r\n >\r\n {props.action === \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\"\r\n >\r\n Creator\r\n </Text>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\"\r\n >\r\n You\r\n </Text>\r\n\r\n {props.userEmail?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n {props.userEmail}\r\n </Text>\r\n )}\r\n {props.userEmail?.length === 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n (+{props.selectedCountry.area}){\" \"}\r\n {props.userNumberFmt}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeaderFirstText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header-first-text\"\r\n >\r\n {props.action === \"remove-cosigner\"\r\n ? \"Remove Co-signers\"\r\n : \"Add Co-Signers\"}\r\n </Text>\r\n\r\n {props.action !== \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeaderSecondText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header-second-text\"\r\n >\r\n (\r\n {coSigners?.length + 1 < 5\r\n ? coSigners?.length + 1\r\n : 5}\r\n /5)\r\n </Text>\r\n )}\r\n {props.action === \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeaderSecondText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header-second-text\"\r\n >\r\n ({coSigners?.length}\r\n /5)\r\n </Text>\r\n )}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header\"\r\n >\r\n {props.action === \"remove-cosigner\" &&\r\n remainingCosigners?.includes(\" \") && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text\"\r\n >\r\n Fetching previous Co-signers...\r\n </Text>\r\n )}\r\n {props.action !== \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\"\r\n >\r\n Creator\r\n </Text>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\"\r\n >\r\n You\r\n </Text>\r\n\r\n {props.userEmail?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n {props.userEmail}\r\n </Text>\r\n )}\r\n {props.userEmail?.length === 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n (+{props.selectedCountry.area}){\" \"}\r\n {props.userNumberFmt}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n\r\n {/* <TouchableOpacity className=\"verified-custd-mdl-a-c-2-b-content-header-body-button\">\r\n <Text>Add Self</Text>\r\n </TouchableOpacity> */}\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!showSetRule &&\r\n coSigners\r\n .sort((a, b) => a?.position - b?.position)\r\n .map((cng, idx) => (\r\n <View\r\n key={idx}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\"\r\n >\r\n {\r\n numberPositionsFmt[\r\n cng?.position\r\n ]?.split(\" \")[0]\r\n }\r\n <Text>\r\n <Text style={{ fontSize: 10 }}>\r\n {/* sup replacement */}\r\n {\r\n numberPositionsFmt[\r\n cng?.position\r\n ]?.split(\" \")[1]\r\n }\r\n </Text>\r\n </Text>{\" \"}\r\n Co-Signer{\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \"To Remove\"\r\n : \"\"}\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\"\r\n >\r\n {cng?.name}\r\n </Text>\r\n\r\n {cng.otpChannel === \"email\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n {cng.email}\r\n </Text>\r\n )}\r\n {cng.otpChannel === \"sms\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n (+{cng?.phoneArea}) {cng.number}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderIcons,\r\n flexDirection: \"row\",\r\n }\r\n : { flexDirection: \"row\" }\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-icons\"\r\n >\r\n {/* <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.editBlack }}\r\n />\r\n </TouchableOpacity> */}\r\n\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => {\r\n setCosigners((cngs) =>\r\n cngs\r\n ?.filter((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() +\r\n sig?.number?.toLowerCase() !==\r\n cng?.phoneArea?.toLowerCase() +\r\n cng?.number?.toLowerCase()\r\n : sig?.email?.toLowerCase() !==\r\n cng?.email?.toLowerCase()\r\n )\r\n ?.map((nSig, newId) => {\r\n nSig.position = newId + 1;\r\n return nSig;\r\n })\r\n );\r\n handleButtonDisplay();\r\n }}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.delete }}\r\n />\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n ))}\r\n </View>\r\n\r\n {showSetRule && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContentOutter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-title\"\r\n >\r\n Specify the number of Co-Signers you need to\r\n sign off for an approval\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n By default we need 2, you can add up to 5\r\n Co-Signers as minimum sign off needed for\r\n approval.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooter,\r\n width: \"100%\",\r\n }\r\n : { width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont\"\r\n >\r\n {new Array(\r\n props.action === \"remove-cosigner\"\r\n ? remainingCosigners?.length + 1\r\n : coSigners?.length + 1\r\n )\r\n .fill(\"1\")\r\n .map((_, idx) => (\r\n <View\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind\"\r\n style={\r\n idx + 1 === requiredSigners &&\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterInd,\r\n }\r\n : idx + 1 === requiredSigners &&\r\n !isReactNative\r\n ? {}\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterInd,\r\n height: 0,\r\n width: 0,\r\n overflow: \"hidden\",\r\n }\r\n : {\r\n height: 0,\r\n width: 0,\r\n overflow: \"hidden\",\r\n }\r\n }\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text\"\r\n >\r\n {String(idx + 1)}\r\n </Text>\r\n </View>\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-icon\"\r\n source={{ uri: imageAssets.pointer }}\r\n />\r\n </View>\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSlider,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider\"\r\n >\r\n {props.action !== \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative &&\r\n coSigners?.length === 1\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 / coSigners?.length\r\n }%`,\r\n }\r\n : !isReactNative &&\r\n coSigners?.length === 1\r\n ? {\r\n width: `${\r\n 100 / coSigners?.length\r\n }%`,\r\n }\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 / coSigners?.length + 5\r\n }%`,\r\n }\r\n : {\r\n width: `calc(${\r\n 100 / coSigners?.length\r\n }% + 12px)`,\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind\"\r\n >\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon\"\r\n source={{\r\n uri: imageAssets.sliderDot,\r\n }}\r\n />\r\n </View>\r\n )}\r\n {props.action === \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative &&\r\n remainingCosigners?.length === 1\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 /\r\n remainingCosigners?.length\r\n }%`,\r\n }\r\n : !isReactNative &&\r\n remainingCosigners?.length === 1\r\n ? {\r\n width: `${\r\n 100 /\r\n remainingCosigners?.length\r\n }%`,\r\n }\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 /\r\n remainingCosigners?.length +\r\n 5\r\n }%`,\r\n }\r\n : {\r\n width: `calc(${\r\n 100 /\r\n remainingCosigners?.length\r\n }% + 12px)`,\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind\"\r\n >\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon\"\r\n source={{\r\n uri: imageAssets.sliderDot,\r\n }}\r\n />\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont\"\r\n >\r\n {new Array(\r\n props.action === \"remove-cosigner\"\r\n ? remainingCosigners?.length + 1\r\n : coSigners?.length + 1\r\n )\r\n .fill(\"1\")\r\n .map((_, idx) => (\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n key={idx}\r\n onPress={() => {\r\n if (idx + 1 > 1) {\r\n setRequiredSigners(idx + 1);\r\n }\r\n }}\r\n >\r\n {props.action !==\r\n \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative &&\r\n idx === coSigners?.length\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingRight: 12,\r\n }\r\n : isReactNative && idx === 0\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingLeft: 12,\r\n }\r\n : !isReactNative && idx === 0\r\n ? { paddingLeft: 12 }\r\n : !isReactNative &&\r\n idx === coSigners?.length\r\n ? { paddingRight: 12 }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text\"\r\n >\r\n {String(idx + 1)}\r\n </Text>\r\n )}\r\n\r\n {props.action ===\r\n \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative &&\r\n idx ===\r\n remainingCosigners?.length\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingRight: 12,\r\n }\r\n : isReactNative && idx === 0\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingLeft: 12,\r\n }\r\n : !isReactNative && idx === 0\r\n ? { paddingLeft: 12 }\r\n : !isReactNative &&\r\n idx ===\r\n remainingCosigners?.length\r\n ? { paddingRight: 12 }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text\"\r\n >\r\n {String(idx + 1)}\r\n </Text>\r\n )}\r\n </TouchableOpacity>\r\n ))}\r\n </View>\r\n </View>\r\n </View>\r\n\r\n <TouchableOpacity\r\n id=\"confirm-cosigner-button\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginBottom: 10,\r\n width: \"100%\",\r\n }\r\n : { marginBottom: 10, width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n onPress={async () => {\r\n await handleCompleteVault();\r\n }}\r\n >\r\n <Text>Confirm</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {showAddMore && coSigners?.length < 4 && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreBody,\r\n width: \"90%\",\r\n }\r\n : { width: \"90%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirst,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header-text\"\r\n >\r\n Add Details\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstFooter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text\"\r\n >\r\n {\r\n numberPositionsFmt[\r\n coSigners?.length + 1\r\n ]?.split(\" \")[0]\r\n }\r\n <Text style={{ fontSize: 10 }}>\r\n {\r\n numberPositionsFmt[\r\n coSigners?.length + 1\r\n ]?.split(\" \")[1]\r\n }\r\n </Text>{\" \"}\r\n Co-Signer{\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \"To Remove\"\r\n : \"\"}\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n {props.action !== \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreSecond,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-second\"\r\n >\r\n <TextInput\r\n onChangeText={setCoSignerName}\r\n value={coSignerName}\r\n placeholder=\"Enter Co-signer name\"\r\n placeholderTextColor=\"#B6B7C3\"\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-second-input\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreSecondInput,\r\n }\r\n : {}\r\n }\r\n />\r\n </View>\r\n )}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThird,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\"\r\n >\r\n {props.enablePhone && (\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdCont,\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }\r\n : { background: \"transparent\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\"\r\n onPress={() => {\r\n setAddChannel(\"sms\");\r\n setErrorText(\"\");\r\n setCoSignerEmail(\"\");\r\n }}\r\n >\r\n <Image\r\n source={{\r\n uri:\r\n addChannel === \"sms\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select,\r\n }}\r\n style={{ width: 24, height: 24 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdContText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\"\r\n >\r\n Phone number\r\n </Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdCont,\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }\r\n : { background: \"transparent\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\"\r\n onPress={() => {\r\n setAddChannel(\"email\");\r\n setErrorText(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n }}\r\n >\r\n <Image\r\n source={{\r\n uri:\r\n addChannel === \"email\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select,\r\n }}\r\n style={{ width: 24, height: 24 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdContText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\"\r\n >\r\n Email\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThird,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\"\r\n >\r\n {addChannel === \"sms\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInput,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactContentContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-content-container\"\r\n >\r\n <TouchableOpacity\r\n onPress={() =>\r\n setSearchActive(!searchActive)\r\n }\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFirstSection,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }\r\n : {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n >\r\n <Image\r\n source={{ uri: selectedCountry.flag }}\r\n style={{ width: 24, height: 16 }}\r\n alt=\"Country Flag\"\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSelectionText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {selectedCountry.area}\r\n </Text>\r\n\r\n {searchActive ? (\r\n <Image\r\n source={{ uri: imageAssets.arrowUp }}\r\n style={{ width: 16, height: 16 }}\r\n alt=\"Dropdown Icon\"\r\n />\r\n ) : (\r\n <Image\r\n source={{ uri: imageAssets.arrowDown }}\r\n style={{ width: 16, height: 16 }}\r\n alt=\"Dropdown Icon\"\r\n />\r\n )}\r\n </TouchableOpacity>\r\n\r\n <TextInput\r\n onChangeText={(text) => {\r\n if (text === \"\") {\r\n setUserInput(userInput + \" \");\r\n } else {\r\n setUserInput(text);\r\n }\r\n const numericInput = text.replace(\r\n /\\D/g,\r\n \"\"\r\n );\r\n setCoSignerNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (\r\n let i = 0;\r\n i < numericInput.length;\r\n i++\r\n ) {\r\n formattedNumber += numericInput[i];\r\n if (\r\n (i + 1) % 5 === 0 &&\r\n i + 1 < numericInput.length\r\n ) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n setCoSignerNumberFmt(formattedNumber);\r\n setErrorText(\"\");\r\n }}\r\n onBlur={handleButtonDisplay}\r\n value={coSignerNumberFmt}\r\n placeholder=\"Enter phone number\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n keyboardType=\"phone-pad\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSecondSection,\r\n }\r\n : {}\r\n }\r\n />\r\n </View>\r\n\r\n {searchActive && (\r\n <SearchBox\r\n platform={props.platform}\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={setSelectedCountry}\r\n selected={selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight={300}\r\n contentbottomMargin={300}\r\n />\r\n )}\r\n\r\n {errorText === \"\" &&\r\n coSignerNumber.length !== 10 &&\r\n userInput.length > 10 && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInputError,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input-error\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlInputErrorText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n Invalid input, please check the phone\r\n number\r\n </Text>\r\n </View>\r\n )}\r\n\r\n {errorText !== \"\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInputError,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input-error\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlInputErrorText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {errorText}\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n\r\n {addChannel === \"email\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInput,\r\n width: \"100%\",\r\n }\r\n : { width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <TextInput\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSecondSection,\r\n width: \"100%\",\r\n }\r\n : { width: \"100%\" }\r\n }\r\n onChangeText={(text: string) => {\r\n setCoSignerEmail(text);\r\n setErrorText(\"\");\r\n }}\r\n onBlur={handleButtonDisplay}\r\n value={coSignerEmail}\r\n placeholder=\"Enter email\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n keyboardType=\"email-address\"\r\n autoCapitalize=\"none\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n />\r\n {errorText !== \"\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInputError,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input-error\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlInputErrorText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {errorText}\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreButtons,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }\r\n : {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreButtonsNeut,\r\n flex: 1,\r\n marginRight: 8,\r\n border: \"1px solid #603FF4\",\r\n color: \"#603FF4\",\r\n }\r\n : {\r\n flex: 1,\r\n marginRight: 8,\r\n border:\r\n \"1px solid var(--secondary-electric-violet-600, #603FF4)\",\r\n color:\r\n \"var(--secondary-electric-violet-600, #603FF4)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut\"\r\n onPress={() => setShowAddMore(false)}\r\n >\r\n <Text>Cancel</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreButtonsAction,\r\n flex: 1,\r\n marginLeft: 8,\r\n }\r\n : { flex: 1, marginLeft: 8 }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-action\"\r\n onPress={() => {\r\n handleAddCoSigner();\r\n handleButtonDisplay();\r\n }}\r\n >\r\n <Text>Add</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!showAddMore &&\r\n !showSetRule &&\r\n coSigners?.length < 4 && (\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooter,\r\n background: \"transparent\",\r\n width: 20,\r\n height: 20,\r\n }\r\n : { background: \"transparent\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer\"\r\n onPress={() => setShowAddMore(true)}\r\n >\r\n <Image\r\n source={{ uri: imageAssets.addIcon }}\r\n style={{ width: 20, height: 20 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text\"\r\n >\r\n {\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \" Add Co-Signer to remove\"\r\n : \" Add another Co-Signer\"}\r\n </Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n {!showAddMore &&\r\n !showSetRule &&\r\n coSigners?.length === 4 && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooterDis,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-dis\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.addDisableIcon }}\r\n style={{ width: 20, height: 20 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooterTextDis,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis\"\r\n >\r\n Add another Co-Signer{\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \"To Remove\"\r\n : \"\"}\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n {!showSetRule && (\r\n <TouchableOpacity\r\n className={\r\n coSigners?.length > 0\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n style={\r\n isReactNative && coSigners?.length > 0\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : isReactNative && coSigners?.length === 0\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : isReactNative &&\r\n coSigners?.length > 0 &&\r\n !showAddMore &&\r\n coSigners?.length < 4\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : isReactNative &&\r\n coSigners?.length === 0 &&\r\n !showAddMore &&\r\n coSigners?.length < 4\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : !showAddMore && coSigners?.length < 4\r\n ? {\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : { marginBottom: \"20px\", width: \"100%\" }\r\n }\r\n onPress={() => {\r\n if (coSigners?.length > 0) {\r\n setRequiredSigners(2);\r\n setShowSetRule(true);\r\n setShowAddMore(false);\r\n }\r\n }}\r\n >\r\n <Text style={styles.buttonText}>Proceed</Text>\r\n </TouchableOpacity>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showLearnMore && (\r\n <React.Fragment>\r\n {learnMoreStep === \"1\" && (\r\n <React.Fragment>\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon2 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a Co-Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setShowLearnMore(false)}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Back</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={() => setLearnMoreStep(\"2\")}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Next</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"2\" && (\r\n <React.Fragment>\r\n <Image\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyIcon,\r\n }\r\n : {}\r\n }\r\n source={{ uri: imageAssets.addCoSignerIcon3 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n Why is it needed?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In blockchain application, it is impossible to reset a key\r\n if the PIN is forgotten you can login with the help of\r\n Co-Signer\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setLearnMoreStep(\"1\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Back</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setLearnMoreStep(\"3\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Next</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"3\" && (\r\n <React.Fragment>\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon4 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n Who can be my Co-Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n You can nominate your trusted acquaintances, family\r\n members and even yourself as a co-signer.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More in Details\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setLearnMoreStep(\"2\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Back</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n setLearnMoreStep(\"1\");\r\n }}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Start</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n {fontsLoaded && showRemoveSuccess && (\r\n <Success\r\n platform={props.platform}\r\n action={props.action}\r\n setStep={props.setStep}\r\n stepToSet=\"8\"\r\n actionHeaderText=\"Successful\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully removed cosigners and set new signing rule.\"\r\n actionFooterText=\"Congratulations! You have successfully removed cosigners and set new signing rule.\"\r\n showButton={props.dashbordElement ? true : false}\r\n buttonText={props.dashbordElement ? \"Go To Dashboard\" : \"\"}\r\n handleShowDashboard={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n buttonFunc={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n />\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </View>\r\n );\r\n};\r\n\r\nexport default AddCosignersPage;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n hashTheBuffer,\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n publicKeyCredentialRequestOptions,\r\n resolveGlobalStyleUnit,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n imageAssets,\r\n verifiedWebsiteUrls,\r\n} from \"../utils/constants\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n initiateVaultRecovery,\r\n restoreVaultLogin,\r\n signVaultRecovery,\r\n validateVaultPin,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { LogoutOverlay } from \"../components/overlays\";\r\nimport Success from \"../components/success\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { ethers } from \"ethers\";\r\n\r\nconst EnterPinPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setisOnboard: (isOnboard: boolean) => void;\r\n vaultId: string;\r\n hashedVaultId: string;\r\n encrptedPk: string;\r\n vaultAddress: string;\r\n regAddress?: string;\r\n vaultChannel: \"sms\" | \"email\";\r\n actionText?: string;\r\n title?: string;\r\n origin?: string;\r\n chainId?: number;\r\n newChainId?: number;\r\n action?: string;\r\n reqVaultData?: any;\r\n reqTxData?: any;\r\n signTxElement?: any;\r\n txToSign?: any;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowDashboard?: (showDashboard: boolean) => void;\r\n setShowResetPin?: (showResetPin: boolean) => void;\r\n setShowRemoveCosigner?: (showRemoveCosigner: boolean) => void;\r\n setShowCompleteVault?: (showDashboard: boolean) => void;\r\n setUserEmail?: (userEmail: string) => void;\r\n setUserNumberFmt?: (userNumberFmt: string) => void;\r\n setSelectedCountry?: (selectedCountry: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n }) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n dashbordElement?: React.ComponentType<{\r\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n }>;\r\n rootTagId?: string;\r\n rootExpandedWidth?: string;\r\n rootExpandedHeight?: string;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n rnPasskey,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState(props.fontsLoaded || false);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinHide, setPinHide] = useState(true); //hide pin by default\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [showSuccess, setShowSuccess] = useState(false);\r\n const [vaultData, _setVaultData] = useState(null);\r\n const [vaultDataRes, setVaultDataRes] = useState(null);\r\n const [chainId, _setChainId] = useState(props.newChainId || defaultChainId);\r\n const [showChains, setShowChains] = useState(false);\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n const [isAccepted, setIsAccepted] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [showTx, setShowTx] = useState(false);\r\n const [newTx, setNewTx] = useState({});\r\n const [pin, setPin] = useState([\"\", \"\", \"\", \"\"]);\r\n const inputsRef = useRef<Array<any>>([]);\r\n const [isPin, setIsPin] = useState(false);\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n const handleTextChange = (text: string, idx: number) => {\r\n if (text.length > 1) {\r\n // Manually capture Paste\r\n const paste = text.replace(/\\D/g, \"\");\r\n const newPin = [...pin];\r\n let pasteIndex = 0;\r\n\r\n for (let i = idx; i < pin.length && pasteIndex < paste.length; i++) {\r\n newPin[i] = paste[pasteIndex];\r\n pasteIndex++;\r\n }\r\n setPin(newPin);\r\n\r\n // Focus next empty input if any\r\n const nextIndex = idx + paste.length;\r\n if (nextIndex < pin.length && inputsRef.current[nextIndex]) {\r\n inputsRef.current[nextIndex].focus();\r\n }\r\n setPinIncorrect(false);\r\n } else {\r\n // Normal input\r\n const clean = text.replace(/\\D/g, \"\");\r\n const newPin = [...pin];\r\n newPin[idx] = clean;\r\n setPin(newPin);\r\n\r\n // Move focus to next input if available\r\n if (clean && inputsRef.current[idx + 1]) {\r\n inputsRef.current[idx + 1].focus();\r\n }\r\n setPinIncorrect(false);\r\n }\r\n };\r\n\r\n const handleKeyPress = (_: any, idx: number, e: any) => {\r\n const key = e.nativeEvent.key;\r\n\r\n if (\r\n key === \"Backspace\" &&\r\n !pin[idx] &&\r\n idx > 0 &&\r\n inputsRef.current[idx - 1]\r\n ) {\r\n inputsRef.current[idx - 1].focus();\r\n }\r\n };\r\n\r\n const isFilled = pin.every((d) => d.length > 0);\r\n\r\n const handleVerifyPin = async (pinToUse?: {\r\n pinString: string;\r\n hashed: string;\r\n rawId: any;\r\n }) => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the EnterPinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n\r\n if (\r\n (isPin && isFilled && props.hashedVaultId && props.encrptedPk) ||\r\n (!isPin && props.hashedVaultId && props.encrptedPk && pinToUse)\r\n ) {\r\n props.setIsLoading(true);\r\n const fullOtp = pinToUse?.pinString\r\n ? pinToUse?.pinString\r\n : pin.join(\"\");\r\n await validateVaultPin(\r\n props.vaultId,\r\n props.hashedVaultId,\r\n fullOtp,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.encrptedPk,\r\n props.vaultAddress,\r\n props.vaultChannel,\r\n Number(chainId),\r\n verifiedWebsiteUrls?.includes(props.origin?.toLowerCase()),\r\n null,\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n if (res && !res?.inCompleteVault) {\r\n props.setIsLoading(false);\r\n _setVaultData(res);\r\n setVaultDataRes(\r\n res?.pk && props.action !== \"eth_requestAccounts\"\r\n ? {\r\n address: res.address,\r\n channel: res.channel,\r\n chainId: res.chainId,\r\n pk: res?.pk,\r\n }\r\n : {\r\n address: props.regAddress,\r\n channel: res.channel,\r\n chainId: res.chainId,\r\n }\r\n );\r\n\r\n if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await initiateVaultRecovery(\r\n props.helperFunctions.sendCreatorInitiation,\r\n props.hashedVaultId,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.vaultChannel,\r\n Number(chainId),\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Account recovery failed. Verify you don't have pending account recovery process and Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (props.action === \"signRecovery\") {\r\n props.setIsLoading(true);\r\n await signVaultRecovery(\r\n props.helperFunctions.sendCreatorSigned,\r\n props.helperFunctions.sendCreatorCompleted,\r\n props.hashedVaultId,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqVaultData?.vaultId,\r\n props.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props.reqTxData?.id,\r\n Number(chainId),\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (\r\n !isReactNative &&\r\n !props.reqTxData?.newUser &&\r\n chrome?.storage?.local &&\r\n !props.vaultAddress\r\n ) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !props.reqTxData?.newUser &&\r\n !chrome?.storage?.local &&\r\n !props.vaultAddress &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (\r\n isReactNative &&\r\n AsyncStorage &&\r\n !props.reqTxData?.newUser &&\r\n !props.vaultAddress\r\n ) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Error while signing transaction; it's either you are not a valid co-signer or you had signed this particular transaction before. Verify and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await restoreVaultLogin(\r\n isReactNative,\r\n AsyncStorage,\r\n props.hashedVaultId,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqTxData?.id,\r\n props.vaultChannel,\r\n Number(chainId),\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `Error while restoring login access. Verify all required co-signers had signed our account recovery and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"eth_sendTransaction\" &&\r\n props.encrptedPk?.length > 0 &&\r\n res?.pin?.length > 0 &&\r\n props.signTxElement\r\n ) {\r\n setNewTx({\r\n chainId,\r\n ky: isPin ? ethers.encodeBytes32String(res?.pin) : \"\",\r\n rawId: isPin ? \"\" : pinToUse?.rawId,\r\n ...props.txToSign, //overwrite chainId if exist\r\n });\r\n setShowInvitation(false);\r\n setShowTx(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase() &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowInvitation(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept your own Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept this Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to fetch account details. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to restore login access for this account. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n (props.action === \"connect_wallet\" && !props?.vaultAddress) ||\r\n (props.action === \"eth_requestAccounts\" && !props?.vaultAddress)\r\n ) {\r\n setPinIncorrectText(\r\n `Incomplete account details received. This may be due to incomplete/unexpected error from last login. Please logout and login back to recover account details.`\r\n );\r\n setPinIncorrect(true);\r\n } else if (props.action === \"\" && props.vaultAddress) {\r\n props.setShowDashboard(true);\r\n } else if (props.action === \"\" && !props.vaultAddress) {\r\n setPinIncorrectText(\r\n \"Incomplete account login detected. Logout and try again later\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowSuccess(true);\r\n }\r\n } else if (res && res?.inCompleteVault && res?.pk) {\r\n const walletAndContractDetails = await initWalletAndContract(\r\n Number(chainId),\r\n res?.pk\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n setVaultData({\r\n vaultId: res?.vaultId,\r\n hashedVaultId: res?.hashedVaultId,\r\n vaultPin: res?.pin,\r\n hashedVaultPin: isPin\r\n ? hashTheString(res?.pin)\r\n : hashTheBuffer(res?.rawId),\r\n vaultContract: walletAndContractDetails.vaultContract,\r\n rawId: res?.rawId,\r\n });\r\n if (res?.channel?.toLowerCase() === \"sms\") {\r\n const areaCode = res?.vaultId?.replace(\r\n res?.vaultId?.slice(-10),\r\n \"\"\r\n );\r\n const formattedNumber =\r\n res?.vaultId?.slice(-10)?.slice(0, 5) +\r\n \" \" +\r\n res?.vaultId?.slice(-10)?.slice(5);\r\n props.setSelectedCountry({\r\n area: areaCode?.replace(\"+\", \"\"),\r\n name: \"\",\r\n flag: \"\",\r\n });\r\n\r\n props.setUserNumberFmt(formattedNumber);\r\n props.setUserEmail(\"\");\r\n } else {\r\n props.setUserEmail(res?.vaultId);\r\n props.setUserNumberFmt(\"\");\r\n }\r\n props.setIsLoading(false);\r\n props.setShowCompleteVault(true);\r\n props.setShowDashboard(false);\r\n } else {\r\n setPinIncorrectText(\r\n isPin\r\n ? \"\"\r\n : `Incorrect Passkey. please chose the correct existing passkey for account: ${props.vaultId}`\r\n );\r\n setPinIncorrect(true);\r\n props.setIsLoading(false);\r\n }\r\n });\r\n } else {\r\n if (!isPin && !pinToUse) {\r\n setPinIncorrectText(\r\n \"Unexpected error with selected passkey. Try again later\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n\r\n if (isPin && !isFilled) {\r\n setPinIncorrectText(\"Input your 4-Digits PIN to login.\");\r\n setPinIncorrect(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId = props.vaultId;\r\n if (\r\n vaultData?.pin?.length > 0 &&\r\n vaultData?.pk?.length > 0 &&\r\n props?.reqVaultData?.hashedVaultId &&\r\n props.reqVaultData?.hashedVaultPin &&\r\n vaultId &&\r\n props.helperFunctions?.sendCreatorAcceptance &&\r\n props.helperFunctions?.sendCreatorRejection\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = vaultData.pin;\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = isPin\r\n ? hashTheString(vaultPin)\r\n : hashTheBuffer(vaultData.rawId);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n props.vaultChannel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props?.reqVaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n null,\r\n vaultData.pk,\r\n Number(chainId)\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setIsAccepted(accepted);\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n const requestPasskey = async () => {\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = props?.rootExpandedWidth || \"max-content\";\r\n root.style.minHeight = props?.rootExpandedHeight || \"100vh\";\r\n }\r\n }\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n try {\r\n const credential: any = await navigator.credentials.get({\r\n publicKey: publicKeyCredentialRequestOptions(),\r\n });\r\n const hashedId = hashTheBuffer(credential?.rawId);\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = \"unset\";\r\n root.style.minHeight = \"unset\";\r\n }\r\n }\r\n return {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: credential?.rawId,\r\n };\r\n } catch (err) {\r\n if (!isReactNative && props.rootTagId?.length > 0) {\r\n const root = document.getElementById(props.rootTagId);\r\n if (root) {\r\n root.style.minWidth = \"unset\";\r\n root.style.minHeight = \"unset\";\r\n }\r\n }\r\n setPinIncorrectText(\r\n `Passkey authentication failed: ${err?.message?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && !showInvitation && !showTx && (\r\n <React.Fragment>\r\n {!showSuccess && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupLanguage,\r\n padding: \"20px\",\r\n paddingTop: \"0\",\r\n }\r\n : { padding: \"20px\", paddingTop: \"0\" }\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContact,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1]}\r\n currentSlider=\"0\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content-heder-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactText,\r\n alignSelf: \"center\",\r\n }\r\n : { alignSelf: \"center\" }\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin ? \"Enter PIN\" : \"Sign-in with Existing Passkey\"}\r\n </Text>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Welcome back, please login using{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {isPin ? \"existing 4-Digits PIN\" : \"existing Passkey\"}\r\n </Text>{\" \"}\r\n for your{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>{props.vaultId}</Text>{\" \"}\r\n account.\r\n </Text>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer\"\r\n >\r\n {props.actionText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {`To ${props.actionText} from origin: ${\r\n props.origin || props.title\r\n }`}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n\r\n {isPin && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputGroup,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {pin.map((_, idx) => (\r\n <TextInput\r\n key={idx}\r\n ref={(el: any) => (inputsRef.current[idx] = el)}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n style={\r\n isReactNative && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputRed,\r\n }\r\n : isReactNative && !pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n secureTextEntry={pinHide}\r\n maxLength={1}\r\n value={pin[idx]}\r\n onChangeText={(text: any) =>\r\n handleTextChange(text, idx)\r\n }\r\n onKeyPress={(e: any) => handleKeyPress(e, idx, e)}\r\n keyboardType=\"number-pad\"\r\n id={`verified-custd-mdl-otp-input-${idx}`}\r\n />\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpTimer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {pinIncorrect && !pinIncorrectText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct pin\r\n </Text>\r\n )}\r\n {pinIncorrect && pinIncorrectText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {!pinIncorrect && <Text></Text>}\r\n\r\n {!pinHide ? (\r\n <TouchableOpacity\r\n onPress={() => setPinHide(true)}\r\n style={{ backgroundColor: \"transparent\" }}\r\n >\r\n <Image\r\n style={{ width: 24, height: 24 }}\r\n source={{ uri: imageAssets.pinShow }}\r\n />\r\n </TouchableOpacity>\r\n ) : (\r\n <TouchableOpacity\r\n onPress={() => setPinHide(false)}\r\n style={{ backgroundColor: \"transparent\" }}\r\n >\r\n <Image\r\n style={{ width: 24, height: 24 }}\r\n source={{ uri: imageAssets.pinHide }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!isPin && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a passkey?\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Your passkey is stored in your cloud account such as Apple\r\n iCloud Keychain, Google Password Manager, or Microsoft\r\n Account and synchronized across all devices.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In the event of device loss, as long as you have access to\r\n your cloud account, you can recover your passkey.\r\n </Text>\r\n\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click \"Login With Passkey\" button, passkey popup will\r\n appears to login using your existing passkey.\r\n </Text>\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={() => {\r\n if (!isReactNative) {\r\n window?.open(\r\n \"https://blog.google/inside-google/googlers/ask-a-techspert/how-passkeys-work\",\r\n \"_blank\"\r\n );\r\n }\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More about Passkey\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: 20 }} />}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactFooter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFooterFirstSection,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-footer-first-section\"\r\n >\r\n <LogoutOverlay\r\n platform={props.platform}\r\n setisOnboard={props.setisOnboard}\r\n setIsLoading={props.setIsLoading}\r\n />\r\n {isPin && (\r\n <TouchableOpacity\r\n onPress={async () => await handleVerifyPin()}\r\n style={\r\n isReactNative && isFilled && !pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : isReactNative && isFilled && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n }\r\n : isReactNative && !isFilled && !pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n }\r\n : isReactNative && !isFilled && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n }\r\n : {}\r\n }\r\n className={\r\n isFilled && !pinIncorrect\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n >\r\n <Text>Proceed</Text>\r\n </TouchableOpacity>\r\n )}\r\n {!isPin && (\r\n <React.Fragment>\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n marginTop: \"3px\",\r\n width: \"100%\",\r\n }\r\n : { marginTop: \"3px\", width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginBottom: \"20px\",\r\n }\r\n : { marginBottom: \"20px\" }\r\n }\r\n onPress={async () => {\r\n const pinToUse = await requestPasskey();\r\n if (pinToUse) {\r\n await handleVerifyPin(pinToUse);\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n <Text>Login With Passkey</Text>\r\n </TouchableOpacity>\r\n </React.Fragment>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {showSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={\r\n props.action === \"getPk\" ||\r\n props.action === \"signRecovery\" ||\r\n props.action === \"completeRecovery\"\r\n ? { type: \"closePopup\", key: \"\", value: \"\" }\r\n : {\r\n type: \"vaultData\",\r\n key: \"vaultData\",\r\n value: vaultDataRes,\r\n }\r\n }\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n props.action === \"getPk\" && props.vaultChannel === \"email\"\r\n ? \"You have successfully initiated your account recovery process check your email for further instructions\"\r\n : props.action === \"getPk\" && props.vaultChannel === \"sms\"\r\n ? \"You have successfully initiated your account recovery process check your phone number messages for further instructions\"\r\n : props.action === \"signRecovery\"\r\n ? `Congratulations! You have successfully signed account recovery transaction for user: ${props.reqVaultData?.vaultId}`\r\n : props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : `Congratulations! You have successfully ${\r\n props.actionText || \"logged in to your account.\"\r\n }`\r\n }\r\n showButton={\r\n props.action === \"completeRecovery\" && props.dashbordElement\r\n ? true\r\n : false\r\n }\r\n buttonText={\r\n props.action === \"completeRecovery\" && props.dashbordElement\r\n ? \"Go To Dashboard\"\r\n : \"\"\r\n }\r\n buttonFunc={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n handleShowDashboard={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n actionFooterText={\r\n props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : \"\"\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {fontsLoaded && showInvitation && !showTx && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupLanguage,\r\n padding: \"20px\",\r\n position: \"relative\",\r\n }\r\n : { padding: \"20px\", position: \"relative\" }\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContact,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.reqVaultData?.vaultId}\r\n </Text>{\" \"}\r\n has requested you to be a Co‑Signer\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <TouchableOpacity\r\n style={{ backgroundColor: \"transparent\", width: \"100%\" }}\r\n >\r\n <Image\r\n style={{ height: 250, width: \"90%\" }}\r\n source={{ uri: imageAssets.addCoSignerIcon1 }}\r\n />\r\n </TouchableOpacity>\r\n\r\n {!showRejectInvitation ? (\r\n <React.Fragment>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a Co‑Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: 12,\r\n color: \"#5B5D6E\",\r\n }\r\n : {\r\n fontSize: 12,\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co‑Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image source={{ uri: imageAssets.pkicon }} />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n As a Co Signer you can help{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n reset PIN\r\n </Text>\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image source={{ uri: imageAssets.encryptedIcon }} />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n Don’t worry, they{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n will not get access\r\n </Text>{\" \"}\r\n to your account in any way.\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n onPress={() => setShowRejectInvitation(true)}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : { border: \"1px solid #0C0C0E\", color: \"#0C0C0E\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Reject</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={async () =>\r\n await handleAcceptAndRejectInvitation(true)\r\n }\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Accept</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n ) : (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContentOutter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-title\"\r\n >\r\n Are you sure you want to reject this request?\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyLabel,\r\n fontSize: 12,\r\n color: \"#5B5D6E\",\r\n }\r\n : {\r\n fontSize: 12,\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.reqVaultData?.vaultId}\r\n </Text>\r\n , you will not be able to reset the PIN for them.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n width: \"90%\",\r\n }\r\n : { width: \"90%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n onPress={async () =>\r\n await handleAcceptAndRejectInvitation(false)\r\n }\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Yes</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={() => setShowRejectInvitation(false)}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>No</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n {showInvitationSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={{\r\n type: \"getPk\",\r\n key: \"vaultData\",\r\n value: vaultData,\r\n }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n isAccepted\r\n ? `You have been added as a Co-Signer for ${props.reqVaultData?.vaultId}`\r\n : `You rejected Co-signer request from ${props.reqVaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {fontsLoaded && !showInvitation && showTx && (\r\n <props.signTxElement\r\n setIsLoading={props.setIsLoading}\r\n txToSign={newTx}\r\n />\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default EnterPinPage;\r\n"],"mappings":"2fACA,SAASA,GAAYC,EAAK,CACxB,GAAI,CAACA,GAAO,OAAO,SAAa,IAAa,OAE7C,IAAMC,EAAO,SAAS,MAAQ,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAC/DC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,KAAO,WAEVD,EAAK,WACNA,EAAK,aAAaC,EAAOD,EAAK,UAAU,EAExCA,EAAK,YAAYC,CAAK,EAGrBA,EAAM,WACPA,EAAM,WAAW,QAAUF,EAE3BE,EAAM,YAAY,SAAS,eAAeF,CAAG,CAAC,CAElD,CACAD,GAAY;AAAA,CAAmzmC,ECnB7zmC,OAAO,OAAW,KAClB,OAAQ,OAAe,OAAW,MAEjC,OAAe,OAAS,CAAC,GCJ5B,GACE,OAAO,OAAW,KAClB,OAAO,OAAO,OAAW,KACzB,OAAO,UAAc,KACrB,UAAU,UAAY,cAEtB,GAAI,CACF,GAAQ,gCAAgC,CAC1C,OAASI,EAAK,CACZ,QAAQ,KAAK,yDAA0DA,CAAG,CAC5E,CCTF,OAAOC,IAAS,cAAAC,OAAkB,QCC3B,IAAMC,GACX,QAAQ,IAAI,qBAAuB,aAC/B,kCACA,gCAEOC,GAAsB,CACjC,gCACA,kCACA,8BACA,iCACF,EAEaC,GAAoB,CAC/B,iJACA,8KACA,qFACF,EAEaC,GACX,qEAEWC,GAAkB,CAC7B,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,KACL,EAEaC,GAAqB,CAChC,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,MACL,EAEaC,GAAc,CACzB,eAAgB,uBAChB,oBAAqB,uBACrB,MAAO,+BACP,WAAY,8BACZ,aAAc,wBACd,iBAAkB,uBAClB,oBAAqB,iCACvB,EAEaC,EAAc,CACzB,YACE,iGACF,QACE,kHACF,WACE,4FACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,OACE,wFACF,cACE,+FACF,QACE,8FACF,QACE,8FACF,QACE,iGACF,UACE,iGACF,SACE,qFACF,UACE,0FACF,OACE,4FACF,cACE,kGACF,UACE,gGACF,OACE,4FACF,QACE,6FACF,UACE,4FACF,OACE,4FACF,cACE,oGACF,QACE,iGACF,eACE,gGACF,WACE,2FACF,aACE,6FACF,YACE,6FACF,YACE,6FACF,YACE,mGACF,UACE,2FACF,SACE,0FACF,YACE,iGACF,cACE,gGACF,iBACE,gGACF,kBACE,mGACF,QACE,wFACF,SACE,0FACF,aACE,8FACF,WACE,2FACF,SACE,0FACF,UACE,qFACJ,EAEaC,GAAmB,CAC9B,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iCACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,0BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2CACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,qBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oCACN,KAAM,KACN,SAAU,MACV,UAAW,YACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mCACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,+CACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,uBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN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AAS,EACvBA,EAAM,UACN,IACEA,EAAM,gBAAgB,IACxB,GAAGA,EAAM,eAAe,QACtB,IACA,EACF,CAAC,EACP,EAAQ,IAAI,UAEd,CAEJ,CAEJ,CACF,EAEC,CAACuC,GACAuF,EAAA,cAAC5H,EAAA,CACC,MACED,EACI,CAAE,GAAGW,EAAO,mCAAoC,EAChD,CAAC,EAEP,UAAU,6CAEVkH,EAAA,cAAC5H,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEVkH,EAAA,cAAC5H,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDAEVkH,EAAA,cAAC3H,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAUoH,EACR/H,EACA,MACF,CACF,EACA,CACE,SAAU+H,EACR/H,EACA,MACF,CACF,EAEN,UAAU,8CACX,oBAED,CACF,CACF,EACA6H,EAAA,cAAC3H,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAUoH,EACR/H,EACA,MACF,CACF,EACA,CACE,SAAU+H,EACR/H,EACA,MACF,CACF,EAEN,UAAU,8CACX,+FAGD,EACA6H,EAAA,cAAC3H,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAUoH,EACR/H,EACA,MACF,CACF,EACA,CACE,SAAU+H,EACR/H,EACA,MACF,CACF,EAEN,UAAU,8CACX,gKAID,EACA6H,EAAA,cAAC3H,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAUoH,EACR/H,EACA,MACF,CACF,EACA,CACE,SAAU+H,EACR/H,EACA,MACF,CACF,EAEN,UAAU,8CACX,8GAID,EACC,CAACD,EAAM,gBACN8H,EAAA,cAAC3H,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAUoH,EACR/H,EACA,MACF,CACF,EACA,CACE,SAAU+H,EACR/H,EACA,MACF,CACF,EAEN,UAAU,8CACX,oHAID,EAEDD,EAAM,gBACL8H,EAAA,cAAC3H,EA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","names":["injectStyle","css","head","style","err","React","forwardRef","defaultVerifiedUrl","verifiedWebsiteUrls","allGoogleFontUrls","newTransactionEventHash","numberPositions","numberPositionsFmt","actionTexts","imageAssets","countriesDetails","globalStyles","isReactNative","isInitialized","View","Text","Image","ScrollView","StyleSheet","TextInput","TouchableOpacity","ActivityIndicator","Font","AsyncStorage","EventEmitter","styles","rnPasskey","initPlatform","RN","events","reactStorage","filterPropsRN","className","id","rest","wrapRNTags","Component","props","React","globalStyles","motion","onPress","source","forwardRef","onChangeText","onInput","onKeyDown","onKeyPress","value","keyboardType","secureTextEntry","onSubmitEditing","blurOnSubmit","placeholderTextColor","ref","e","style","color","size","imageAssets","getPlatformComponents","React","useEffect","useState","React","createContext","useContext","useState","VaultStoreContext","VaultContextProvider","children","chainId","setChainId","pk","setPk","address","setAddress","signer","setSigner","provider","setProvider","vaultContract","setVaultContract","vaultData","setVaultData","useVaultStore","context","React","useEffect","useState","debounce","contractAddress","Custody","Provider","VerifiedWallet","ChainConfig","imageAssets","pbkdf2","sha256","randomBytes","utf8ToBytes","bytesToUtf8","gcm","crypt","toast","React","base","baseSepolia","gnosis","mainnet","polygon","sepolia","http","createPublicClient","encodeAbiParameters","encodeFunctionData","pad","toHex","zeroAddress","zeroHash","boostrap_default","factory_default","NEXUS_ACCOUNT_FACTORY_ADDRESS","NEXUS_BOOTSTRAP_ADDRESS","DUMMY_SIGNATURE","index","toInitData","mod","module","data","getInitData","params","encodeAbiParameters","encodeFunctionData","boostrap_default","toValidator","parameters","deInitData","type","signer","rest","userOpHash","message","toDefaultModule","zeroAddress","toEmptyHook","zeroHash","computeNexusAccount","chain","transport","publicClient","createPublicClient","defaultValidator","validators","executors","hook","fallbacks","registryAddress","factoryAddress","bootStrapAddress","prevalidationHooks","initData","salt","pad","toHex","nexusAccount","factory_default","loadAllGoogleFonts","document","apiLink","staticLink","allGoogleFontUrls","fontUrl","fontLink","loadAllGoogleFontsRN","expoFont","initWalletAndContract","chainId","privateKey","sender","VerifiedWallet","mnemonics","cntAddresses","contractAddress","_chainId","ChainConfig","provider","signer","Provider","pk","vaultContract","Custody","_signer","chainToUse","base","mainnet","gnosis","polygon","sepolia","baseSepolia","nt","address","computeNexusAccount","http","err","hashTheString","text","lower","hash","sha256","utf8ToBytes","b","hashTheBuffer","buffer","bytes","encryptString","secretKey","crypt","decryptString","encryptedText","decryptedBytes","decryptedText","getErrorToastContent","title","content","React","imageAssets","errorToast","title","content","toast","getErrorToastContent","resolveGlobalStyleUnit","isReactNative","unitValueString","baseRem","value","hexToBytes","hex","cleanHex","byteLength","bytes","i","byteHex","publicKeyCredentialCreationOptions","projectName","vaultId","hashedVaultId","userId","randomBytes","publicKeyCredentialRequestOptions","Uint8ArraytoBase64","buf","Base64URLtoUint8Array","base64url","base64","binary","char","encryptWithPasskey","plaintext","rawId","rawIdString","rawIdBytes","randomBytes8","randomHex","b","saltString","hashTheString","salt","utf8ToBytes","iv","key","pbkdf2","sha256","ciphertext","gcm","decryptWithPasskey","encryptedString","saltB64","ivB64","ciphertextB64","cipher","plaintextBytes","bytesToUtf8","React","useEffect","useState","React","PageSlider","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","current","total","widthPercent","_","idx","isActive","slider_default","React","useState","SearchBox","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","newSearchContent","setNewSearchContent","useState","handleSearch","value","filtered","src","name","input","handleSelect","idx","renderTextHighlight","array","search","char","isHighlighted","React","renderResults","data","isFiltered","isActive","isSelected","contentContainerClass","imageAssets","search_default","React","TermsAndConditionsOverlay","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","React","LogoutOverlay","handleLogout","resolveGlobalStyleUnit","ContactPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","fontsLoaded","setFontsLoaded","useState","userNumber","setUserNumber","userInput","setUserInput","searchActive","setSearchActive","sendOtpErrorText","setSendOtpErrorText","buttonActive","setButtonActive","pk","vaultContract","address","useVaultStore","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleButtonDisplay","handleSendOTP","vaultId","channel","res","errorToast","React","slider_default","imageAssets","text","numericInput","formattedNumber","i","search_default","TermsAndConditionsOverlay","contact_default","React","useEffect","useRef","useState","AbiCoder","encodeBytes32String","combine","split","contractAddress","Custody","Provider","VerifiedWallet","base","baseSepolia","gnosis","mainnet","polygon","sepolia","http","checkIsExistingUser","vaultContract","hashedVaultId","res","err","checkOrResetOrCreateVault","isReactNative","AsyncStorage","EventEmitter","vaultId","vaultPin","hashedVaultPin","otpChannel","userPk","userAddress","action","reqVaultData","txData","passKeyRawId","keyHolders","quorum","vaultData","encryptedPk","encryptWithPasskey","secretKey","encodeBytes32String","encryptString","lastPk","resolve","result","keyShardsCount","sharesArrayAsString","split","letter","share","failedKeyHolders","succesfulKeyHolders","idx","participant","encryptedShard","keyHolder","errorToast","userRegAddress","VerifiedWallet","cfrmRes","windowObj","event","vaultEventEmitter","eventType","eventDetail","vultRes","validateVaultPin","chainId","includePk","newChainId","decryptWithPasskey","decryptString","cntAddresses","contractAddress","sender","_chainId","ChainConfig","provider","signer","Provider","Custody","quorumSet","acceptOrRejectInvitation","sendCreatorAcceptance","sendCreatorRejection","channel","hashedCosignerId","hashedCosignerPin","hashedCreatorVaultId","hashedCreatorVaultPin","creatorVaultId","coSignerVaultId","accepted","contract","completeVaultCreation","sendCoSignerInvitation","sendCreatorConfirmation","coSigners","KeyThreshold","pk","hashTheString","cosignersList","cng","numberPositions","removeCosignerPromise","initiateVaultRecovery","sendCreatorInitiation","vaultChannel","abiCoder","AbiCoder","txId","vaultLogsLength","vaultLogs","log","tp","newTransactionEventHash","decodedTxData","val","signVaultRecovery","sendCreatorSigned","sendCreatorCompleted","reqVaultId","hashedReqId","hashedReqPin","reqTxId","qRes","restoreVaultLogin","recoveredShrads","shrd","shares","combinedShares","combine","newEncryptedPk","newSender","_newsigner","chainToUse","base","mainnet","gnosis","polygon","sepolia","baseSepolia","nt","nexAddress","computeNexusAccount","http","OTPPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","fontsLoaded","setFontsLoaded","useState","inputsRef","useRef","searchActive","setSearchActive","countdown","setCountdown","otp","setOtp","otpIncorrect","setOtpIncorrect","otherErrorText","setOtherErrorText","pk","vaultContract","address","useVaultStore","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","timer","c","handleTextChange","text","idx","paste","newOtp","pasteIndex","i","nextIndex","clean","handleKeyPress","_","e","isFilled","d","getVaultId","handleVerifyOtp","vaultId","fullOtp","hashed","hashTheString","exists","checkIsExistingUser","err","handleResend","channel","res","errorToast","React","slider_default","imageAssets","el","otp_default","React","useEffect","useRef","useState","React","useEffect","Success","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","EventEmitter","useEffect","timeoutId","windowObj","res","event","err","handleContinue","handleClosePopup","handleShowDashboard","React","imageAssets","success_default","contractAddress","Provider","ethers","CreatePinPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","EventEmitter","styles","rnPasskey","fontsLoaded","setFontsLoaded","useState","pinHide","setPinHide","pinIncorrect","setPinIncorrect","pinIncorrectText","setPinIncorrectText","showCustomSuccess","setShowCustomSuccess","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showRejectInvitation","setShowRejectInvitation","customSuccessText","setCustomSuccessText","vaultPin","setVaultPin","vaultRawId","setVaultRawId","searchActive","setSearchActive","isPin","setIsPin","showImportAcct","setShowImportAcct","privateKeyError","setPrivateKeyError","enteredPk","setEnteredPk","existingCosigners","setExistingCosigners","quorum","setQuorum","address","pk","chainId","vaultContract","signer","setVaultData","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","vaultData","useVaultStore","pin","setPin","confirmPin","setConfirmPin","pinRefs","useRef","confirmPinRefs","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleFetchUserCosigners","quorumSet","cosignersNumber","custodyAddress","contractAddress","custodyEventAbi","ethers","iface","topicHash","userParticipants","Provider","ChainConfig","log","parsedLog","hashTheString","participant","handleTextChange","text","idx","isConfirm","clean","newPin","digit","createPasskey","root","vaultId","credential","publicKeyCredentialCreationOptions","hashedId","hashTheBuffer","err","requestPasskey","publicKeyCredentialRequestOptions","handleKeyPress","_","e","key","isConfirmActive","isConfirmActiveImp","handleVaultManagement","pinToUse","channel","hashedVaultId","hashedVaultPin","checkOrResetOrCreateVault","res","handleAcceptAndRejectInvitation","accepted","acceptOrRejectInvitation","React","slider_default","resolveGlobalStyleUnit","el","imageAssets","credentialIdHashed","walletAndContractDetails","initWalletAndContract","success_default","createPin_default","React","useEffect","useState","ethers","contractAddress","Provider","AddCosignersPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","fontsLoaded","setFontsLoaded","useState","showLearnMore","setShowLearnMore","learnMoreStep","setLearnMoreStep","cosignerStep","setCosignerStep","showAddMore","setShowAddMore","addChannel","setAddChannel","coSignerNumber","setCoSignerNumber","coSignerNumberFmt","setCoSignerNumberFmt","coSignerEmail","setCoSignerEmail","coSignerName","setCoSignerName","userInput","setUserInput","searchActive","setSearchActive","selectedCountry","setSelectedCountry","imageAssets","coSigners","setCosigners","existingCosignersNumber","setExistingCosignersNumber","existingCosigners","setExistingCosigners","remainingCosigners","setRemainingCosigners","showSetRule","setShowSetRule","requiredSigners","setRequiredSigners","errorText","setErrorText","showRemoveSuccess","setShowRemoveSuccess","pk","vaultData","vaultContract","chainId","signer","useVaultStore","useEffect","PreloadGoogleFonts","_","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleFetchUserCosigners","hashedVaultId","hashTheString","quorumSet","cosignersNumber","custodyAddress","contractAddress","custodyEventAbi","ethers","iface","topicHash","userParticipants","Provider","ChainConfig","log","parsedLog","participant","handleButtonDisplay","handleAddCoSigner","coSignerLength","sig","cngs","handleCompleteVault","keyHolders","completeVaultCreation","res","React","slider_default","a","b","cng","idx","numberPositionsFmt","nSig","newId","text","numericInput","formattedNumber","i","search_default","success_default","addCosigners_default","React","useEffect","useRef","useState","ethers","EnterPinPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","rnPasskey","fontsLoaded","setFontsLoaded","useState","pinIncorrect","setPinIncorrect","pinHide","setPinHide","searchActive","setSearchActive","showSuccess","setShowSuccess","vaultData","_setVaultData","vaultDataRes","setVaultDataRes","chainId","_setChainId","showChains","setShowChains","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showRejectInvitation","setShowRejectInvitation","isAccepted","setIsAccepted","pinIncorrectText","setPinIncorrectText","showTx","setShowTx","newTx","setNewTx","pin","setPin","inputsRef","useRef","isPin","setIsPin","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","useVaultStore","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleTextChange","text","idx","paste","newPin","pasteIndex","i","nextIndex","clean","handleKeyPress","_","e","isFilled","d","handleVerifyPin","pinToUse","fullOtp","validateVaultPin","hashTheString","verifiedWebsiteUrls","res","initiateVaultRecovery","signVaultRecovery","restoreVaultLogin","walletAndContractDetails","initWalletAndContract","hashTheBuffer","areaCode","formattedNumber","handleAcceptAndRejectInvitation","accepted","vaultId","vaultPin","hashedVaultId","hashedVaultPin","acceptOrRejectInvitation","requestPasskey","root","credential","publicKeyCredentialRequestOptions","hashedId","err","React","slider_default","el","imageAssets","resolveGlobalStyleUnit","LogoutOverlay","success_default","enterPin_default","FTUPage","props","isReactNative","View","Text","Image","ScrollView","StyleSheet","Font","AsyncStorage","fontsLoaded","setFontsLoaded","useState","showLogo","setShowLogo","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","showSuccessBtn","setShowSuccessBtn","successBtnText","setSuccessBtnText","successBtnNeutText","setSuccessBtnNeutText","actionHeaderText","setActionHeaderText","actionFooterText","setActionFooterText","successBtnFunc","setSuccessBtnFunc","successBtnNeutFunc","setSuccessBtnNeutFunc","isExistingUser","setIsExistingUser","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","vaultData","chainId","vaultContract","useVaultStore","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","initializeUserWalletAndContract","lastPk","resolve","result","walletAndContractDetails","initWalletAndContract","debounce","fmtCountries","countriesDetails","cnt","React","contact_default","otp_default","createPin_default","success_default","addCosigners_default","enterPin_default","actionTexts","ky","ftu_default","VerifiedCustody","props","ready","setReady","useState","platformComponents","setPlatformComponents","fontsLoaded","setFontsLoaded","isOnboard","setisOnboard","vaultData","setVaultData","_vaultData","_setVaultData","isLoading","setIsLoading","showDashboard","setShowDasboard","showCompleteVault","setShowCompleteVault","showResetPin","setShowResetPin","showRemoveCosigner","setShowRemoveCosigner","action","setAction","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","useEffect","initPlatform","components","getPlatformComponents","isReactNative","View","Text","Font","AsyncStorage","ActivityIndicator","styles","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","storedVault","myVault","err","res","fmtCountries","countriesDetails","cnt","React","VaultContextProvider","ftu_default","hashTheString","ky","enterPin_default","actionTexts","addCosigners_default","success_default","initWalletAndContract","useVaultStore","createPin_default","pages_default"]}
1
+ {"version":3,"sources":["../src/style.css","../src/iosShim.ts","../src/polyfillCryptoRN.ts","../src/pages/platform.tsx","../src/utils/constants.ts","../src/pages/globalStyle.tsx","../src/pages/index.tsx","../src/services/store.tsx","../src/pages/ftu.tsx","../src/utils/helpers.tsx","../src/utils/config.ts","../src/lib/biconomyRNFix.ts","../src/lib/abi/boostrap.json","../src/lib/abi/factory.json","../src/pages/contact.tsx","../src/components/slider.tsx","../src/components/search.tsx","../src/components/overlays.tsx","../src/pages/otp.tsx","../src/services/contracts.ts","../src/pages/createPin.tsx","../src/components/success.tsx","../src/pages/addCosigners.tsx","../src/pages/enterPin.tsx"],"sourcesContent":["\nfunction injectStyle(css) {\n if (!css || typeof document === 'undefined') return\n\n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if(head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n\n if(style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n}\ninjectStyle(\"textarea:focus,input:focus{outline:none;border:none}input{appearance:textfield;-moz-appearance:textfield;outline:none;border:none;margin:0}input::placeholder{margin:0}input[type=password]::-ms-reveal{display:none}input[type=password]::-moz-password-toggle{display:none}input[type=password]::-webkit-contacts-auto-fill-button{display:none}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}::-webkit-scrollbar{width:5px;height:4px}::-webkit-scrollbar-thumb{height:4px;width:5px;background-color:var(--Neutral-200, #d8d9df);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--Neutral-200, #d8d9df)}::-webkit-scrollbar-track{background:transparent;height:4px;width:5px;cursor:pointer}p{margin:0}.verified-custd-mdl-container{width:100%;height:100%;display:flex;justify-content:center;padding-bottom:20px;overflow-y:auto;overflow-x:hidden;position:relative}.verified-custd-mdl-startup-outter{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#643fff,#381ab7)}.verified-custd-mdl-startup-outter-norm{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:var(--common-white_states-main, #fff)}.verified-custd-mdl-startup{width:650px;height:fit-content;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-x:hidden;overflow-y:auto;padding-bottom:20px;border:1px solid #0F122E;border-radius:10px;position:relative}.verified-custd-mdl-loading-screen{width:100vh;border-radius:10px;width:100%;flex-shrink:0;background:#0000004d;z-index:100;display:flex;justify-content:center;align-items:center;overflow:auto;position:absolute;inset:0}.verified-custd-mdl-startup-icon-container{width:76.119%;display:flex;justify-content:center;align-items:center;position:relative;flex-direction:column;height:298px}.verified-custd-mdl-startup-icon-shadow{position:absolute;bottom:10px;right:70px;width:48.5%}.verified-custd-mdl-startup-text-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:12px;margin-right:20px;margin-left:20px}.verified-custd-mdl-startup-text-header{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Manrope;font-size:2.1rem;font-style:normal;font-weight:700;line-height:2.8125rem;margin:0}.verified-custd-mdl-startup-text-footer{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Roboto;font-size:.9rem;font-style:normal;font-weight:400;line-height:1.5rem;opacity:.8}.verified-custd-mdl-ftu-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;margin:20px;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none}.verified-custd-mdl-startup-language{background:var(--common-white_states-main, #fff);height:100%;width:100%}.verified-custd-mdl-startup-language-content-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:32px;width:100%}.verified-custd-mdl-st-language-content{display:flex;flex-direction:column;align-items:flex-start;gap:20px;align-self:stretch;width:100%}.verified-custd-mdl-st-language-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1.5rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch}.verified-custd-mdl-ms-search-content:hover{border-radius:var(--space-8px, 8px);border:1px solid var(--secondary-electric-violet-300, #9da3ff);background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-st-contact-input{display:flex;flex-direction:column;align-items:flex-start;gap:14px;width:90%}.verified-custd-mdl-st-contact-first-section{display:flex;width:150px;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-selection-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;border-radius:24px;cursor:pointer;user-select:none;overflow:hidden;width:28px;height:28px}.verified-custd-mdl-st-contact-selection-text{color:var(--Neutral-950, #0c0c0e);text-align:right;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:500;line-height:140%;width:40px;flex-shrink:0;cursor:pointer;user-select:none}.verified-custd-mdl-custom-blank-page{height:0}.verified-custd-mdl-startup-otp-text{display:flex;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-startup-otp-header-text{align-self:stretch;color:var(--Neutral-600, #5b5d6e);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:400;line-height:150%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-group{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-otp-input{display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-input-red{border-radius:8px;border:1px solid var(--Error-600, #E23636);background:var(--Neutral-50, #F7F7F8);display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-incorrect-text{color:var(--Error-600, #E23636);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:140%;max-width:200px;word-wrap:break-word}.verified-custd-mdl-otp-timer{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-otp-timer-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-timer-text-red{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text-active{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%;cursor:pointer;user-select:none}.verified-custd-mdl-st-otp-icon{cursor:pointer;user-select:none}.verified-custd-mdl-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;opacity:.5;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-startup-button-active{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-otp-input[type=password]{font-weight:900}.verified-custd-mdl-startup-button-click{border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-950, #0c0c0e);cursor:pointer;user-select:none;display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;width:90%;background:transparent;max-width:500px}.verified-custd-mdl-pin-input-container-text{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-button-text{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-slider{display:flex;width:335px;align-items:center;gap:12px;border-radius:4px;width:100%}.verified-custd-mdl-startup-slider-line{height:4px;flex-shrink:0;border-radius:var(--space-8px, 8px);background:var(--Neutral-100, #eeeef0)}.verified-custd-mdl-startup-slider-line-active{height:4px;flex:1 0 0;border-radius:var(--space-8px, 8px);background:var(--secondary-electric-violet-600, #603ff4)}.verified-custd-mdl-startup-contact{display:inline-flex;flex-direction:column;align-items:flex-start;gap:20px;width:100%}.verified-custd-mdl-startup-contact-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-startup-contact-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch;max-width:100%;word-wrap:break-word}.verified-custd-mdl-st-contact-content-container{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-st-contact-dropdown{cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-second-section{display:flex;width:100%;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-contact-second-section::placeholder{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-startup-contact-footer{display:inline-flex;flex-direction:column;align-items:center;gap:12px;width:100%;margin-top:16px}.verified-custd-mdl-st-contact-footer-first-section{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%}.verified-custd-mdl-st-contact-footer-second-section{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.verified-custd-mdl-st-contact-input-error{display:flex;align-items:center;gap:4px}.verified-custd-mdl-input-error-text{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;margin:0}.verified-custd-mdl-mobille-startup-search-box-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-mobile-startup-search-box{display:flex;height:40px;align-items:center;gap:6px;border-radius:6px;border:1px solid var(--Neutral-200, #d8d9df);background:var(--Neutral-50, #f7f7f8);width:100%;overflow:hidden}.verified-custd-mdl-ms-search-box-content{height:100%;width:100%;background:transparent;color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-ms-search-box-content::placeholder{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-mobile-startup-search-content{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:16px;border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-50, #f7f7f8);background:var(--common-white_states-main, #fff)}.verified-custd-mdl-ms-search-content-container{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;overflow-x:hidden;overflow-y:auto}.verified-custd-mdl-ms-search-content{display:flex;padding:var(--space-8px, 8px);align-items:center;gap:19px;align-self:stretch;cursor:pointer;user-select:none;height:34px;margin-bottom:5px;border:1px solid transparent}.verified-custd-mdl-ms-search-content-active{display:flex;padding:var(--space-8px, 8px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:6px;background:var(--Success-50, #f1f8ed);cursor:pointer;user-select:none}.verified-custd-mdl-ms-search-content-text-container{display:flex;align-items:center;gap:19px}.verified-custd-mdl-ms-search-content-icon{display:flex;width:28px;height:28px;justify-content:center;align-items:center;border-radius:24px;border:1px solid rgba(0,0,0,.05);background:var(--common-white_states-main, #fff);box-shadow:0 1px 4px #eee}.verified-custd-mdl-ms-search-content-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.775rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-terms-and-condition{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:450;line-height:140%}.verified-custd-mdl-privacy{display:flex;align-items:center;gap:4px;margin-bottom:20px}.verified-custd-mdl-privacy-text{color:var(--Neutral-800, #40414c);font-family:Roboto;font-size:.5rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:.01563rem}.verified-custd-mdl-p-p-payment-portal-amount-info-separator{display:flex;align-items:center;gap:6px;align-self:stretch;justify-content:center}.verified-custd-mdl-p-p-payment-portal-line{width:50%;height:1px;background:#eeeef0}.verified-custd-mdl-p-payment-portal-separator-text{color:var(--Neutral-700, #4a4a5a);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;opacity:.6}.verified-custd-mdl-startup-otp-footer{display:flex;align-items:center;gap:4px;width:100%;overflow:hidden}.verified-custd-mdl-startup-otp-footer-text{color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:.8rem;font-style:normal;font-weight:600;line-height:100%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-general-web-toast-error{display:flex;align-items:center;gap:12px}.verified-custd-mdl-general-web-toast-error-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-error-title{margin:0;color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:1rem;font-style:normal;font-weight:600;line-height:100%;align-self:stretch}.verified-custd-mdl-general-web-toast-error-label{align-self:stretch;color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-general-web-toast-success{display:flex;padding:12px;justify-content:space-between;align-items:center;align-self:stretch;border-radius:8px;background:var(--Success-50, #f1f8ed);width:100%;height:55px;max-height:55px}.verified-custd-mdl-general-web-toast-success-cont{display:flex;align-items:center;gap:12px;width:100%}.verified-custd-mdl-general-web-toast-success-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-success-link{display:flex;align-items:center}.verified-custd-mdl-general-web-toast-success-link-text{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.verified-custd-mdl-success-popup-content-container{display:flex;width:28.4375%;padding:24px;flex-direction:column;align-items:center;background:var(--common-white_states-main, #fff);box-shadow:0 4px 19px #0000001f;height:100%}.verified-custd-mdl-success-popup-content{display:flex;width:100%;flex-direction:column;align-items:center;gap:32px}.verified-custd-mdl-success-popup-content-text{display:flex;flex-direction:column;align-items:center;gap:12px;align-self:stretch}.verified-custd-mdl-success-popup-content-text-header{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Manrope;font-size:1.5rem;font-style:normal;font-weight:800;line-height:140%}.verified-custd-mdl-success-popup-content-text-footer{color:var(--Neutral-600, #5b5d6e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-icon{width:90%;max-width:90%;max-height:250px;height:250px}.verified-custd-mdl-add-cosigner-body{display:inline-flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-body-text-cont{display:flex;align-items:center;gap:10px;width:100%}.verified-custd-mdl-add-cosigner-body-text-icon{display:flex;padding:8px;align-items:center;gap:10px;border-radius:24px;background:var(--secondary-electric-violet-200, #C2C7FF);overflow:hidden;justify-content:center;width:20px;height:20px}.verified-custd-mdl-add-cosigner-body-text-label{width:76.1%;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-text-label-bold{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-buttons-cont{display:inline-flex;padding:10px;align-items:flex-start;gap:10px;background:transparent;display:flex;justify-content:space-between}.verified-custd-mdl-add-cosigner-button-neut{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;background:transparent;border-radius:8px;border:1px solid var(--Neutral-950, #0C0C0E);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-button-action{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;border-radius:8px;background:var(--primary-bitter-lemon-500, #CFE600);border:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-more-body{display:inline-flex;padding:15px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-more-header-cont{display:flex;flex-direction:column;align-items:flex-start;gap:32px}.verified-custd-mdl-add-cosigner-more-title-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-add-cosigner-header-text{align-self:stretch;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-more-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:18px;font-style:normal;font-weight:700;line-height:120%;margin:0}.verified-custd-mdl-add-cosigner-more-label{color:var(--Neutral-700, #4A4A5A);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-more-label-link{align-self:stretch;color:var(--secondary-electric-violet-700, #4E2BD7);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer;margin:0}.verified-custd-mdl-add-cosigner-header-info-cont{display:flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:8px;background:var(--Accent-100, #FFF9C1)}.verified-custd-mdl-add-cosigner-header-info-text{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-header-info-text-bold{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:700;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:20px}.verified-custd-mdl-add-cosigner-step2-body-header{display:flex;width:100%;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-step2-body-header-first-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:.8rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-body-header-second-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:100%}.verified-custd-mdl-add-cosigner-step2-body-content-header{display:flex;padding-top:14px;justify-content:center;align-items:center;position:relative;width:100%;flex-direction:column}.verified-custd-mdl-add-cosigner-step2-body-content-header-cont{display:flex;width:100%;padding:12px;flex-direction:column;align-items:flex-start;gap:16px}.verified-custd-mdl-add-cosigner-step2-body-content-header-label{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;position:absolute;left:12px;top:-14px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-body-content-header-label-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-body-content-header-body{justify-content:space-between;align-self:stretch;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-50, #F7F7F8);position:relative;display:flex;padding:12px;align-items:flex-start;gap:16px}.verified-custd-mdl-a-c-2-b-content-header-body-header-cont{display:flex;align-items:center;gap:12px;width:100%}.verified-custd-mdl-a-c-2-b-content-header-body-header{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-a-c-2-b-content-header-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;margin:0;max-width:150px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-label{color:var(--Neutral-400, #8F91A1);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;max-width:200px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-button{display:flex;padding:5.5px 8px;justify-content:center;align-items:center;gap:10px;border-radius:6px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content-footer{display:flex;align-items:center;gap:4px;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text{color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-body{display:flex;padding:15px;flex-direction:column;align-items:flex-start;gap:16px;border-radius:8px;border:1px solid var(--Neutral-200, #D8D9DF);min-width:90%;margin-bottom:20px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first{display:flex;justify-content:space-between;align-items:center;align-self:stretch;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first-header{display:flex;align-items:flex-end;gap:5px}.verified-custd-mdl-add-cosigner-step2-add-more-first-header-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-add-more-second{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-second-input{display:flex;padding:12px;align-items:center;gap:182px;align-self:stretch;border-radius:8px;background:var(--Neutral-50, #F7F7F8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-third{display:flex;align-items:flex-start;gap:24px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont{display:flex;align-items:center;gap:4px}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:13px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-buttons{display:flex;align-items:flex-start;gap:16px;align-self:stretch;width:100%;background:transparent}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut{width:50%;display:flex;padding:7.5px 12px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;background:transparent;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-action{width:50%;display:flex;padding:6px 8px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;align-self:stretch;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-second-input::placeholder{color:var(--Neutral-300, #B6B7C3);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-confirm-body-content{display:flex;padding-top:20px;padding-bottom:20px;flex-direction:column;justify-content:flex-start;align-items:center;gap:61px;border-radius:8px 8px 0 0;background:var(--Neutral-White-100, #FFF);width:100%;max-height:62.7%}.verified-custd-mdl-add-cosigner-confirm-body-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:90%}.verified-custd-mdl-add-cosigner-confirm-body-header{display:flex;flex-direction:column;align-items:center;gap:16px}.verified-custd-mdl-add-cosigner-confirm-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:16px;font-style:normal;font-weight:700;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-label{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer{display:flex;width:90%;padding:15px 15px 5px;flex-direction:column;align-items:flex-start;gap:5px;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-White-100, #FFF)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont{width:100%;flex-direction:row;background:transparent;display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind{display:flex;flex-direction:column;align-items:center;gap:-6px;border-radius:2px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-600, #603FF4)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text{color:var(--Neutral-White-100, #FFF);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont{width:100%;height:51px}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont{width:98%;height:16px;flex-shrink:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider{width:100%;height:5px;flex-shrink:0;border-radius:10px;background:var(--Neutral-100, #EEEEF0)}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind{height:5px;flex-shrink:0;border-radius:10px;background:var(--secondary-electric-violet-600, #603FF4);position:relative}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon{flex-shrink:0;position:absolute;top:-5px;right:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont{display:flex;width:100%;padding:10px 0;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;cursor:pointer}.verified-custd-mdl-a-c-2-b-content-header-body-header-icons{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:10px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-dis{display:flex;align-items:center;gap:4px;margin-bottom:18px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis{color:var(--Neutral-300, #B6B7C3);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-contact-content-heder-cont{width:100%;display:flex;justify-content:space-between;flex-direction:row}.verified-custd-mdl-add-cosigner-confirm-body-content-outter{background:#0006;z-index:5;position:absolute;width:100%;bottom:0;right:0;left:0;height:100%;display:flex;flex-direction:column-reverse}.verified-custd-mdl-portfolio-page-content-header-button{display:flex;padding:6px 12px;align-items:center;gap:4px;border-radius:32px;background:var(--secondary-electric-violet-900, #362689);cursor:pointer;color:var(--Neutral-White-100, var(--common-white_states-main, #fff));border:none;width:fit-content;max-width:150px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word;height:30px}.verified-custd-mdl-portfolio-page-content-header-button-cont{width:fit-content;height:fit-content;display:flex;flex-direction:column;gap:4px;justify-content:flex-start;position:relative}.verified-custd-mdl-portfolio-page-content-header-button-body{height:fit-content;width:fit-content;display:flex;flex-direction:column;gap:4px;border:none;border-radius:10px;background:var(--Neutral-50, #f7f7f8);padding:10px;position:absolute;top:33px;right:0}.verified-custd-mdl-portfolio-page-content-header-button-body-cont{background:none;cursor:pointer;border:1px solid transparent;padding:5px}.verified-custd-mdl-portfolio-page-content-header-button-body-cont:hover{border:1px solid #362689;background:transparent}.verified-custd-mdl-portfolio-page-content-header-button-body-text{width:110px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word}.verified-custd-mdl-profile-popup-content-third{display:flex;padding:12px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--common-white_states-main, #fff);box-shadow:0 0 16px #0000001f}.verified-custd-mdl-profile-popup-content-third-container{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-profile-popup-content-third-content,.verified-custd-mdl-profile-popup-content-third-content-tkn{display:flex;padding:4px var(--space-0, 0px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:var(--space-8px, 8px);cursor:pointer}.verified-custd-mdl-profile-popup-content-third-content-text-container{display:flex;align-items:center;gap:var(--space-8px, 8px)}.verified-custd-mdl-profile-popup-content-third-content-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;max-width:170px;word-wrap:break-word}.verified-custd-mdl-profile-popup-content-third-content-line{width:100%;height:1px;background:#eeeef0}.verified-custd-mdl-profile-popup-content-third-content-tkn:hover{border:#362689 1px solid}.verified-custd-mdl-profile-popup-content{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-asset-layout-content{display:inline-flex;padding:0 20px 155px;flex-direction:column;align-items:flex-start;gap:20px;border-radius:8px;background:var(--Neutral-White-100, #fff);width:100%;height:100%}.verified-custd-mdl-profile-popup-content-second{display:flex;padding:12px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--common-white_states-main, #fff);box-shadow:0 0 16px #0000001f}.verified-custd-mdl-profile-popup-content-second-text{color:var(--Neutral-900, #383842);text-align:center;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%}.verified-custd-mdl-profile-popup-content-second-container{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-profile-popup-content-second-content{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:24px;cursor:pointer}.verified-custd-mdl-profile-popup-content-second-content-icon{display:flex;padding:12px;flex-direction:column;align-items:center;gap:var(--space-8px, 8px);border-radius:4px;background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-profile-popup-content-second-content-text{color:#000;text-align:center;font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:1.125rem;text-transform:capitalize;width:fit-content;max-width:60px;height:36px}.verified-custd-mdl-profile-popup-content-third-button{display:flex;width:100px;padding:6px 14px;justify-content:center;align-items:center;gap:10px;border-radius:100px;border:1px solid var(--secondary-electric-violet-700, #4e2bd7)}.verified-custd-mdl-profile-popup-content-third-button-text{color:var(--secondary-electric-violet-600, #603ff4);text-align:center;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:600;line-height:125%}.verified-custd-mdl-offer-security-popup-info-content{display:flex;padding:6px 12px;justify-content:center;align-items:center;gap:10px;background:var(--common-white_states-main, #fff);position:absolute;top:-1;left:4px;width:230px;border-radius:2px;z-index:3;box-shadow:0 0 16px #0000001f}.verified-custd-mdl-offer-security-popup-info-content-text{color:var(--Neutral-900, #383842);width:auto;max-width:300px;height:fit-content;word-wrap:break-word;overflow-wrap:break-word;font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%}\\n\");","if (\r\n typeof window !== \"undefined\" &&\r\n typeof (window as any).chrome === \"undefined\"\r\n) {\r\n (window as any).chrome = {};\r\n}\r\n","if (\r\n typeof global !== \"undefined\" &&\r\n typeof global.crypto === \"undefined\" &&\r\n typeof navigator !== \"undefined\" &&\r\n navigator.product === \"ReactNative\"\r\n) {\r\n try {\r\n require(\"react-native-get-random-values\");\r\n } catch (err) {\r\n console.warn(\"react native [polyfillCrypto] Failed to load polyfill:\", err);\r\n }\r\n}\r\n","// platform.ts\r\nimport React, { forwardRef } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { globalStyles } from \"./globalStyle\";\r\n\r\nlet isReactNative = false;\r\nlet isInitialized = false;\r\n\r\nlet View: any,\r\n Text: any,\r\n Image: any,\r\n ScrollView: any,\r\n StyleSheet: any,\r\n TextInput: any,\r\n TouchableOpacity: any,\r\n ActivityIndicator: any,\r\n Font: any,\r\n AsyncStorage: any,\r\n EventEmitter: any,\r\n styles: any,\r\n rnPasskey: any;\r\n\r\nconst initPlatform = async () => {\r\n if (isInitialized) return;\r\n\r\n const isRunningInReactNative =\r\n typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\";\r\n\r\n if (isRunningInReactNative) {\r\n console.log(\"Initializing React Native platform...\");\r\n const RN = await import(\"react-native\");\r\n const events = await import(\"events\");\r\n const font = await import(\"expo-font\");\r\n Font = font.default; //expo pick the required fonts automatically???\r\n const reactStorage = await import(\r\n \"@react-native-async-storage/async-storage\"\r\n );\r\n const passKey = await import(\"react-native-passkey\");\r\n rnPasskey = await passKey.Passkey;\r\n AsyncStorage = reactStorage.default;\r\n EventEmitter = events.EventEmitter;\r\n\r\n const filterPropsRN = ({ className, id, ...rest }: any) => rest;\r\n\r\n const wrapRNTags = (Component: any) => (props: any) =>\r\n <Component {...filterPropsRN(props)} />;\r\n\r\n View = wrapRNTags(RN.View);\r\n Text = wrapRNTags(RN.Text);\r\n Image = wrapRNTags(RN.Image);\r\n ScrollView = wrapRNTags(RN.ScrollView);\r\n StyleSheet = RN.StyleSheet;\r\n TextInput = wrapRNTags(RN.TextInput);\r\n TouchableOpacity = wrapRNTags(RN.TouchableOpacity);\r\n ActivityIndicator = wrapRNTags(RN.ActivityIndicator);\r\n styles = RN.StyleSheet.create(globalStyles);\r\n isReactNative = true;\r\n console.log(\"React Native platform initialized.\");\r\n } else {\r\n console.log(\"Initializing Web platform...\");\r\n const { motion } = await import(\"framer-motion\");\r\n\r\n View = ({ onPress, ...rest }: any) => <div onClick={onPress} {...rest} />;\r\n Text = ({ onPress, ...rest }: any) => <span onClick={onPress} {...rest} />;\r\n Image = ({ onPress, source, ...rest }: any) => (\r\n <img onClick={onPress} {...rest} src={source?.uri} />\r\n );\r\n ScrollView = (props: any) => (\r\n <div style={{ overflowY: \"auto\", ...props.style }}>{props.children}</div>\r\n );\r\n StyleSheet = {\r\n create: (styles: any) => styles,\r\n };\r\n styles = {};\r\n TextInput = forwardRef(\r\n (\r\n {\r\n onChangeText,\r\n onInput,\r\n onKeyDown,\r\n onKeyPress,\r\n value,\r\n keyboardType,\r\n secureTextEntry,\r\n onSubmitEditing,\r\n blurOnSubmit,\r\n placeholderTextColor,\r\n ...rest\r\n }: any,\r\n ref\r\n ) => (\r\n <input\r\n {...rest}\r\n ref={ref}\r\n value={value}\r\n onInput={(e: any) => {\r\n onInput?.(e);\r\n onChangeText?.(e.target.value);\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n onSubmitEditing?.(e);\r\n }\r\n onKeyDown?.(e);\r\n onKeyPress?.(e);\r\n }}\r\n type={\r\n secureTextEntry\r\n ? \"password\"\r\n : keyboardType === \"numeric\" || keyboardType === \"number-pad\"\r\n ? \"tel\"\r\n : \"text\"\r\n }\r\n onChange={() => {}}\r\n />\r\n )\r\n );\r\n\r\n TouchableOpacity = ({ onPress, style, ...rest }: any) => (\r\n <button\r\n style={{ outline: \"none\", border: \"none\", ...style }}\r\n onClick={onPress}\r\n {...rest}\r\n >\r\n {rest.children}\r\n </button>\r\n );\r\n\r\n ActivityIndicator = ({ color, size, ...rest }: any) => (\r\n <motion.img\r\n height=\"50px\"\r\n width=\"50px\"\r\n src={imageAssets.loadingIcon}\r\n alt=\"Loading...\"\r\n animate={{\r\n rotate: 360,\r\n scale: [1, 1.5, 1],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n {...rest}\r\n />\r\n );\r\n\r\n isReactNative = false;\r\n console.log(\"Web platform initialized.\");\r\n }\r\n\r\n isInitialized = true;\r\n};\r\n\r\nconst getPlatformComponents = () => {\r\n if (!isInitialized) {\r\n throw new Error(\r\n \"Platform not initialized. Call `await initPlatform()` first.\"\r\n );\r\n }\r\n\r\n return {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n StyleSheet,\r\n TextInput,\r\n TouchableOpacity,\r\n ActivityIndicator,\r\n Font,\r\n AsyncStorage,\r\n EventEmitter,\r\n styles,\r\n rnPasskey,\r\n };\r\n};\r\n\r\nexport { initPlatform, getPlatformComponents };\r\n","export const defaultChainId = 8453;\r\n\r\nexport const defaultVerifiedUrl =\r\n process.env.REACT_APP_NODE_ENV === \"production\"\r\n ? \"https://wallet.verified.network\"\r\n : \"https://veripay-bac0b.web.app\";\r\n\r\nexport const createPasskeyEndpoint =\r\n \"https://wallet.verified.network/create-passkey\";\r\n\r\nexport const getPasskeyEndpoint = \"https://wallet.verified.network/get-passkey\";\r\n\r\nexport const verifiedWebsiteUrls = [\r\n \"https://veripay-bac0b.web.app\",\r\n \"https://wallet.verified.network\",\r\n \"https://verified-l1.web.app\",\r\n \"https://invest.verified.network\",\r\n];\r\n\r\nexport const allGoogleFontUrls = [\r\n \"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Hind:wght@300;400;500;600;700&display=swap\",\r\n];\r\n\r\nexport const newTransactionEventHash =\r\n \"0x7f8d3f14b960b3bcf34baea4b46178e331b54a33e565d7d50d77cdfe9e926fe8\";\r\n\r\nexport const numberPositions = {\r\n 1: \"1st\",\r\n 2: \"2nd\",\r\n 3: \"3rd\",\r\n 4: \"4th\",\r\n 5: \"5th\",\r\n};\r\n\r\nexport const numberPositionsFmt = {\r\n 1: \"1 st\",\r\n 2: \"2 nd\",\r\n 3: \"3 rd\",\r\n 4: \"4 th\",\r\n 5: \"5 th\",\r\n};\r\n\r\nexport const actionTexts = {\r\n connect_wallet: \"connect your account\",\r\n eth_requestAccounts: \"connect your account\",\r\n getPk: \"recover your account details\",\r\n invitation: \"accept Co-Signer invitation\",\r\n signRecovery: \"sign account recovery\",\r\n completeRecovery: \"restore login access\",\r\n eth_sendTransaction: \"sign smart contract interaction\",\r\n};\r\n\r\nexport const imageAssets = {\r\n successIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/succes-page-icon.svg\",\r\n usaFlag:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/Flag-United-States-of-America%201.svg\",\r\n privacyTip:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/privacy_tip.svg\",\r\n addCoSignerIcon1:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-1.svg\",\r\n addCoSignerIcon2:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-2.svg\",\r\n addCoSignerIcon3:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-3.svg\",\r\n addCoSignerIcon4:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-4.svg\",\r\n pkicon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pk-icon.svg\",\r\n encryptedIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/encrypted-icon.svg\",\r\n pinHide:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-hide-icon.svg\",\r\n pinShow:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-show-icon.svg\",\r\n arrowUp:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-arrow-up.svg\",\r\n arrowDown:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-dropdown.svg\",\r\n editBlue:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit.svg\",\r\n editBlack:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit-icon.svg\",\r\n search:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/search-icon.svg\",\r\n circleClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/check-circle-icon.svg\",\r\n supervise:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/supervisor-icon.svg\",\r\n delete:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/delete-icon.svg\",\r\n pointer:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pointer-icon.svg\",\r\n sliderDot:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/slider-icon.svg\",\r\n select:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-icon.svg\",\r\n selectClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-clicked-icon.svg\",\r\n addIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-icon.svg\",\r\n addDisableIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-dis.svg\",\r\n errorAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/error-icon.svg\",\r\n successAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/success-icon.svg\",\r\n loadingIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/loading-icon.png\",\r\n checkCircle:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/check-circle.svg\",\r\n expandRight:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/chevron-right-icon.svg\",\r\n closeIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/close-icon.svg\",\r\n infoBlue:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/info-blue.svg\",\r\n profileEdit:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/profile-pic-edit.svg\",\r\n infoReference:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/quick_reference.svg\",\r\n profileQuestions:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/shield_question.svg\",\r\n verifiedCheckMark:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/verified-checkmark.svg\",\r\n friends:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/friends.svg\",\r\n baseIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/base-icon.svg\",\r\n ethereumIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/ethereum-icon.svg\",\r\n gnosisIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/gnois-icon.svg\",\r\n copyIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/copy_icon.svg\",\r\n errorIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/error.svg\",\r\n};\r\n\r\nexport const countriesDetails = [\r\n {\r\n name: \"Afghanistan\",\r\n code: \"AF\",\r\n currency: \"AFN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/af.webp\",\r\n phone_code: \"93\",\r\n },\r\n {\r\n name: \"Albania\",\r\n code: \"AL\",\r\n currency: \"ALL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/al.webp\",\r\n phone_code: \"355\",\r\n },\r\n {\r\n name: \"Algeria\",\r\n code: \"DZ\",\r\n currency: \"DZD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dz.webp\",\r\n phone_code: \"213\",\r\n },\r\n {\r\n name: \"American Samoa\",\r\n code: \"AS\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/as.webp\",\r\n phone_code: \"1-684\",\r\n },\r\n {\r\n name: \"Andorra\",\r\n code: \"AD\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ad.webp\",\r\n phone_code: \"376\",\r\n },\r\n {\r\n name: \"Angola\",\r\n code: \"AO\",\r\n currency: \"AOA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ao.webp\",\r\n phone_code: \"244\",\r\n },\r\n {\r\n name: \"Anguilla\",\r\n code: \"AI\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ai.webp\",\r\n phone_code: \"1-264\",\r\n },\r\n {\r\n name: \"Antarctica\",\r\n code: \"AQ\",\r\n currency: \"N/A\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aq.webp\",\r\n phone_code: \"N/A\",\r\n },\r\n {\r\n name: \"Antigua and Barbuda\",\r\n code: \"AG\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ag.webp\",\r\n phone_code: \"1-268\",\r\n },\r\n {\r\n name: \"Argentina\",\r\n code: \"AR\",\r\n currency: \"ARS\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ar.webp\",\r\n phone_code: \"54\",\r\n },\r\n {\r\n name: \"Armenia\",\r\n code: \"AM\",\r\n currency: \"AMD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/am.webp\",\r\n phone_code: \"374\",\r\n },\r\n {\r\n name: \"Aruba\",\r\n code: \"AW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aw.webp\",\r\n phone_code: \"297\",\r\n },\r\n {\r\n name: \"Australia\",\r\n code: \"AU\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/au.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Austria\",\r\n code: \"AT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/at.webp\",\r\n phone_code: \"43\",\r\n },\r\n {\r\n name: \"Azerbaijan\",\r\n code: \"AZ\",\r\n currency: \"AZN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/az.webp\",\r\n phone_code: \"994\",\r\n },\r\n {\r\n name: \"Bahamas\",\r\n code: \"BS\",\r\n currency: \"BSD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bs.webp\",\r\n phone_code: \"1-242\",\r\n },\r\n {\r\n name: \"Bahrain\",\r\n code: \"BH\",\r\n currency: \"BHD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bh.webp\",\r\n phone_code: \"973\",\r\n },\r\n {\r\n name: \"Bangladesh\",\r\n code: \"BD\",\r\n currency: \"BDT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bd.webp\",\r\n phone_code: \"880\",\r\n },\r\n {\r\n name: \"Barbados\",\r\n code: \"BB\",\r\n currency: \"BBD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bb.webp\",\r\n phone_code: \"1-246\",\r\n },\r\n {\r\n name: \"Belarus\",\r\n code: \"BY\",\r\n currency: \"BYR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/by.webp\",\r\n phone_code: \"375\",\r\n },\r\n {\r\n name: \"Belgium\",\r\n code: \"BE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/be.webp\",\r\n phone_code: \"32\",\r\n },\r\n {\r\n name: \"Belize\",\r\n code: \"BZ\",\r\n currency: \"BZD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bz.webp\",\r\n phone_code: \"501\",\r\n },\r\n {\r\n name: \"Benin\",\r\n code: \"BJ\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bj.webp\",\r\n phone_code: \"229\",\r\n },\r\n {\r\n name: \"Bermuda\",\r\n code: \"BM\",\r\n currency: \"BMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bm.webp\",\r\n phone_code: \"1-441\",\r\n },\r\n {\r\n name: \"Bhutan\",\r\n code: \"BT\",\r\n currency: \"BTN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bt.webp\",\r\n phone_code: \"975\",\r\n },\r\n {\r\n name: \"Bolivia\",\r\n code: \"BO\",\r\n currency: \"BOB\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bo.webp\",\r\n phone_code: \"591\",\r\n },\r\n {\r\n name: \"Bosnia and Herzegovina\",\r\n code: \"BA\",\r\n currency: \"BAM\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ba.webp\",\r\n phone_code: \"387\",\r\n },\r\n {\r\n name: \"Botswana\",\r\n code: \"BW\",\r\n currency: \"BWP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bw.webp\",\r\n phone_code: \"267\",\r\n },\r\n {\r\n name: \"Brazil\",\r\n code: \"BR\",\r\n currency: \"BRL\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/br.webp\",\r\n phone_code: \"55\",\r\n },\r\n {\r\n name: \"British Indian Ocean Territory\",\r\n code: \"IO\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/io.webp\",\r\n phone_code: \"246\",\r\n },\r\n {\r\n name: \"Brunei Darussalam\",\r\n code: \"BN\",\r\n currency: \"BND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bn.webp\",\r\n phone_code: \"673\",\r\n },\r\n {\r\n name: \"Bulgaria\",\r\n code: \"BG\",\r\n currency: \"BGN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bg.webp\",\r\n phone_code: \"359\",\r\n },\r\n {\r\n name: \"Burkina Faso\",\r\n code: \"BF\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bf.webp\",\r\n phone_code: \"226\",\r\n },\r\n {\r\n name: \"Burundi\",\r\n code: \"BI\",\r\n currency: \"BIF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bi.webp\",\r\n phone_code: \"257\",\r\n },\r\n {\r\n name: \"Cambodia\",\r\n code: \"KH\",\r\n currency: \"KHR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kh.webp\",\r\n phone_code: \"855\",\r\n },\r\n {\r\n name: \"Cameroon\",\r\n code: \"CM\",\r\n currency: \"CFA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cm.webp\",\r\n phone_code: \"237\",\r\n },\r\n {\r\n name: \"Canada\",\r\n code: \"CA\",\r\n currency: \"CAD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ca.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Cape Verde\",\r\n code: \"CV\",\r\n currency: \"CVE\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cv.webp\",\r\n phone_code: \"238\",\r\n },\r\n {\r\n name: \"Cayman Islands\",\r\n code: \"KY\",\r\n currency: \"KYD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ky.webp\",\r\n phone_code: \"1-345\",\r\n },\r\n {\r\n name: \"Central African Republic\",\r\n code: \"CF\",\r\n currency: \"XAF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cf.webp\",\r\n phone_code: \"236\",\r\n },\r\n {\r\n name: \"Chad\",\r\n code: \"TD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/td.webp\",\r\n phone_code: \"235\",\r\n },\r\n {\r\n name: \"Chile\",\r\n code: \"CL\",\r\n currency: \"CLP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cl.webp\",\r\n phone_code: \"56\",\r\n },\r\n {\r\n name: \"China\",\r\n code: \"CN\",\r\n currency: \"CNY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cn.webp\",\r\n phone_code: \"86\",\r\n },\r\n {\r\n name: \"Christmas Island\",\r\n code: \"CX\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cx.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Cocos (Keeling) Islands\",\r\n code: \"CC\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cc.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Colombia\",\r\n code: \"CO\",\r\n currency: \"COP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/co.webp\",\r\n phone_code: \"57\",\r\n },\r\n {\r\n name: \"Comoros\",\r\n code: \"KM\",\r\n currency: \"KMF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/km.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Congo (Congo-Brazzaville)\",\r\n code: \"CG\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cg.webp\",\r\n phone_code: \"242\",\r\n },\r\n {\r\n name: \"Congo (Democratic Republic of the Congo)\",\r\n code: \"CD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cd.webp\",\r\n phone_code: \"243\",\r\n },\r\n {\r\n name: \"Cook Islands\",\r\n code: \"CK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ck.webp\",\r\n phone_code: \"682\",\r\n },\r\n {\r\n name: \"Costa Rica\",\r\n code: \"CR\",\r\n currency: \"CRC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cr.webp\",\r\n phone_code: \"506\",\r\n },\r\n {\r\n name: \"Croatia\",\r\n code: \"HR\",\r\n currency: \"HRK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hr.webp\",\r\n phone_code: \"385\",\r\n },\r\n {\r\n name: \"Cuba\",\r\n code: \"CU\",\r\n currency: \"CUP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cu.webp\",\r\n phone_code: \"53\",\r\n },\r\n {\r\n name: \"Curaçao\",\r\n code: \"CW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cw.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Cyprus\",\r\n code: \"CY\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cy.webp\",\r\n phone_code: \"357\",\r\n },\r\n {\r\n name: \"Czech Republic\",\r\n code: \"CZ\",\r\n currency: \"CZK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cz.webp\",\r\n phone_code: \"420\",\r\n },\r\n {\r\n name: \"Denmark\",\r\n code: \"DK\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dk.webp\",\r\n phone_code: \"45\",\r\n },\r\n {\r\n name: \"Djibouti\",\r\n code: \"DJ\",\r\n currency: \"DJF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dj.webp\",\r\n phone_code: \"253\",\r\n },\r\n {\r\n name: \"Dominica\",\r\n code: \"DM\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dm.webp\",\r\n phone_code: \"1-767\",\r\n },\r\n {\r\n name: \"Dominican Republic\",\r\n code: \"DO\",\r\n currency: \"DOP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/do.webp\",\r\n phone_code: \"1-809\",\r\n },\r\n {\r\n name: \"Ecuador\",\r\n code: \"EC\",\r\n currency: \"USD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ec.webp\",\r\n phone_code: \"593\",\r\n },\r\n {\r\n name: \"Egypt\",\r\n code: \"EG\",\r\n currency: \"EGP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eg.webp\",\r\n phone_code: \"20\",\r\n },\r\n {\r\n name: \"El Salvador\",\r\n code: \"SV\",\r\n currency: \"SVC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sv.webp\",\r\n phone_code: \"503\",\r\n },\r\n {\r\n name: \"Equatorial Guinea\",\r\n code: \"GQ\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gq.webp\",\r\n phone_code: \"240\",\r\n },\r\n {\r\n name: \"Eritrea\",\r\n code: \"ER\",\r\n currency: \"ERN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/er.webp\",\r\n phone_code: \"291\",\r\n },\r\n {\r\n name: \"Estonia\",\r\n code: \"EE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ee.webp\",\r\n phone_code: \"372\",\r\n },\r\n {\r\n name: \"Eswatini\",\r\n code: \"SZ\",\r\n currency: \"SZL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sz.webp\",\r\n phone_code: \"268\",\r\n },\r\n {\r\n name: \"Ethiopia\",\r\n code: \"ET\",\r\n currency: \"ETB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/et.webp\",\r\n phone_code: \"251\",\r\n },\r\n {\r\n name: \"Falkland Islands\",\r\n code: \"FK\",\r\n currency: \"FKP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fk.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"Faroe Islands\",\r\n code: \"FO\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fo.webp\",\r\n phone_code: \"298\",\r\n },\r\n {\r\n name: \"Fiji\",\r\n code: \"FJ\",\r\n currency: \"FJD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fj.webp\",\r\n phone_code: \"679\",\r\n },\r\n {\r\n name: \"Finland\",\r\n code: \"FI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fi.webp\",\r\n phone_code: \"358\",\r\n },\r\n {\r\n name: \"France\",\r\n code: \"FR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fr.webp\",\r\n phone_code: \"33\",\r\n },\r\n {\r\n name: \"Gabon\",\r\n code: \"GA\",\r\n currency: \"GAB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ga.webp\",\r\n phone_code: \"241\",\r\n },\r\n {\r\n name: \"Gambia\",\r\n code: \"GM\",\r\n currency: \"GMD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gm.webp\",\r\n phone_code: \"220\",\r\n },\r\n {\r\n name: \"Georgia\",\r\n code: \"GE\",\r\n currency: \"GEL\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ge.webp\",\r\n phone_code: \"995\",\r\n },\r\n {\r\n name: \"Germany\",\r\n code: \"DE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/de.webp\",\r\n phone_code: \"49\",\r\n },\r\n {\r\n name: \"Ghana\",\r\n code: \"GH\",\r\n currency: \"GHS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gh.webp\",\r\n phone_code: \"233\",\r\n },\r\n {\r\n name: \"Greece\",\r\n code: \"GR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gr.webp\",\r\n phone_code: \"30\",\r\n },\r\n {\r\n name: \"Greenland\",\r\n code: \"GL\",\r\n currency: \"DKK\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gl.webp\",\r\n phone_code: \"299\",\r\n },\r\n {\r\n name: \"Grenada\",\r\n code: \"GD\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gd.webp\",\r\n phone_code: \"1-473\",\r\n },\r\n {\r\n name: \"Guadeloupe\",\r\n code: \"GP\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gp.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Guam\",\r\n code: \"GU\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gu.webp\",\r\n phone_code: \"1-671\",\r\n },\r\n {\r\n name: \"Guatemala\",\r\n code: \"GT\",\r\n currency: \"GTQ\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gt.webp\",\r\n phone_code: \"502\",\r\n },\r\n {\r\n name: \"Guinea\",\r\n code: \"GN\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gn.webp\",\r\n phone_code: \"224\",\r\n },\r\n {\r\n name: \"Guinea-Bissau\",\r\n code: \"GW\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gw.webp\",\r\n phone_code: \"245\",\r\n },\r\n {\r\n name: \"Guyana\",\r\n code: \"GY\",\r\n currency: \"GYD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gy.webp\",\r\n phone_code: \"592\",\r\n },\r\n {\r\n name: \"Haiti\",\r\n code: \"HT\",\r\n currency: \"HTG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ht.webp\",\r\n phone_code: \"509\",\r\n },\r\n {\r\n name: \"Heard Island and McDonald Islands\",\r\n code: \"HM\",\r\n currency: \"AUD\",\r\n continent: \"Australia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hm.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Honduras\",\r\n code: \"HN\",\r\n currency: \"HNL\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hn.webp\",\r\n phone_code: \"504\",\r\n },\r\n {\r\n name: \"Hong Kong\",\r\n code: \"HK\",\r\n currency: \"HKD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hk.webp\",\r\n phone_code: \"852\",\r\n },\r\n {\r\n name: \"Hungary\",\r\n code: \"HU\",\r\n currency: \"HUF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hu.webp\",\r\n phone_code: \"36\",\r\n },\r\n {\r\n name: \"Iceland\",\r\n code: \"IS\",\r\n currency: \"ISK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/is.webp\",\r\n phone_code: \"354\",\r\n },\r\n {\r\n name: \"India\",\r\n code: \"IN\",\r\n currency: \"INR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/in.webp\",\r\n phone_code: \"91\",\r\n },\r\n {\r\n name: \"Indonesia\",\r\n code: \"ID\",\r\n currency: \"IDR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/id.webp\",\r\n phone_code: \"62\",\r\n },\r\n {\r\n name: \"Iran\",\r\n code: \"IR\",\r\n currency: \"IRR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ir.webp\",\r\n phone_code: \"98\",\r\n },\r\n {\r\n name: \"Iraq\",\r\n code: \"IQ\",\r\n currency: \"IQD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/iq.webp\",\r\n phone_code: \"964\",\r\n },\r\n {\r\n name: \"Ireland\",\r\n code: \"IE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ie.webp\",\r\n phone_code: \"353\",\r\n },\r\n {\r\n name: \"Israel\",\r\n code: \"IL\",\r\n currency: \"ILS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/il.webp\",\r\n phone_code: \"972\",\r\n },\r\n {\r\n name: \"Italy\",\r\n code: \"IT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/it.webp\",\r\n phone_code: \"39\",\r\n },\r\n {\r\n name: \"Jamaica\",\r\n code: \"JM\",\r\n currency: \"JMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jm.webp\",\r\n phone_code: \"1-876\",\r\n },\r\n {\r\n name: \"Japan\",\r\n code: \"JP\",\r\n currency: \"JPY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jp.webp\",\r\n phone_code: \"81\",\r\n },\r\n {\r\n name: \"Jordan\",\r\n code: \"JO\",\r\n currency: \"JOD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jo.webp\",\r\n phone_code: \"962\",\r\n },\r\n {\r\n name: \"Kazakhstan\",\r\n code: \"KZ\",\r\n currency: \"KZT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kz.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Kenya\",\r\n code: \"KE\",\r\n currency: \"KES\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ke.webp\",\r\n phone_code: \"254\",\r\n },\r\n {\r\n name: \"Kiribati\",\r\n code: \"KI\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ki.webp\",\r\n phone_code: \"686\",\r\n },\r\n {\r\n name: \"Korea (North)\",\r\n code: \"KP\",\r\n currency: \"KPW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kp.webp\",\r\n phone_code: \"850\",\r\n },\r\n {\r\n name: \"Korea (South)\",\r\n code: \"KR\",\r\n currency: \"KRW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kr.webp\",\r\n phone_code: \"82\",\r\n },\r\n {\r\n name: \"Kuwait\",\r\n code: \"KW\",\r\n currency: \"KWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kw.webp\",\r\n phone_code: \"965\",\r\n },\r\n {\r\n name: \"Kyrgyzstan\",\r\n code: \"KG\",\r\n currency: \"KGS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kg.webp\",\r\n phone_code: \"996\",\r\n },\r\n {\r\n name: \"Laos\",\r\n code: \"LA\",\r\n currency: \"LAK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/la.webp\",\r\n phone_code: \"856\",\r\n },\r\n {\r\n name: \"Latvia\",\r\n code: \"LV\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lv.webp\",\r\n phone_code: \"371\",\r\n },\r\n {\r\n name: \"Lebanon\",\r\n code: \"LB\",\r\n currency: \"LBP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lb.webp\",\r\n phone_code: \"961\",\r\n },\r\n {\r\n name: \"Lesotho\",\r\n code: \"LS\",\r\n currency: \"LSL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ls.webp\",\r\n phone_code: \"266\",\r\n },\r\n {\r\n name: \"Liberia\",\r\n code: \"LR\",\r\n currency: \"LRD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lr.webp\",\r\n phone_code: \"231\",\r\n },\r\n {\r\n name: \"Libya\",\r\n code: \"LY\",\r\n currency: \"LYD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ly.webp\",\r\n phone_code: \"218\",\r\n },\r\n {\r\n name: \"Liechtenstein\",\r\n code: \"LI\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/li.webp\",\r\n phone_code: \"423\",\r\n },\r\n {\r\n name: \"Lithuania\",\r\n code: \"LT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lt.webp\",\r\n phone_code: \"370\",\r\n },\r\n {\r\n name: \"Luxembourg\",\r\n code: \"LU\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lu.webp\",\r\n phone_code: \"352\",\r\n },\r\n {\r\n name: \"Macau\",\r\n code: \"MO\",\r\n currency: \"MOP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mo.webp\",\r\n phone_code: \"853\",\r\n },\r\n {\r\n name: \"Madagascar\",\r\n code: \"MG\",\r\n currency: \"MGA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mg.webp\",\r\n phone_code: \"261\",\r\n },\r\n {\r\n name: \"Malawi\",\r\n code: \"MW\",\r\n currency: \"MWK\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mw.webp\",\r\n phone_code: \"265\",\r\n },\r\n {\r\n name: \"Malaysia\",\r\n code: \"MY\",\r\n currency: \"MYR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/my.webp\",\r\n phone_code: \"60\",\r\n },\r\n {\r\n name: \"Maldives\",\r\n code: \"MV\",\r\n currency: \"MVR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mv.webp\",\r\n phone_code: \"960\",\r\n },\r\n {\r\n name: \"Mali\",\r\n code: \"ML\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ml.webp\",\r\n phone_code: \"223\",\r\n },\r\n {\r\n name: \"Malta\",\r\n code: \"MT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mt.webp\",\r\n phone_code: \"356\",\r\n },\r\n {\r\n name: \"Marshall Islands\",\r\n code: \"MH\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mh.webp\",\r\n phone_code: \"692\",\r\n },\r\n {\r\n name: \"Martinique\",\r\n code: \"MQ\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mq.webp\",\r\n phone_code: \"596\",\r\n },\r\n {\r\n name: \"Mauritania\",\r\n code: \"MR\",\r\n currency: \"MRU\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mr.webp\",\r\n phone_code: \"222\",\r\n },\r\n {\r\n name: \"Mauritius\",\r\n code: \"MU\",\r\n currency: \"MUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mu.webp\",\r\n phone_code: \"230\",\r\n },\r\n {\r\n name: \"Mayotte\",\r\n code: \"YT\",\r\n currency: \"EUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/yt.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Mexico\",\r\n code: \"MX\",\r\n currency: \"MXN\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mx.webp\",\r\n phone_code: \"52\",\r\n },\r\n {\r\n name: \"Micronesia\",\r\n code: \"FM\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fm.webp\",\r\n phone_code: \"691\",\r\n },\r\n {\r\n name: \"Moldova\",\r\n code: \"MD\",\r\n currency: \"MDL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/md.webp\",\r\n phone_code: \"373\",\r\n },\r\n {\r\n name: \"Monaco\",\r\n code: \"MC\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mc.webp\",\r\n phone_code: \"377\",\r\n },\r\n {\r\n name: \"Mongolia\",\r\n code: \"MN\",\r\n currency: \"MNT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mn.webp\",\r\n phone_code: \"976\",\r\n },\r\n {\r\n name: \"Montenegro\",\r\n code: \"ME\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/me.webp\",\r\n phone_code: \"382\",\r\n },\r\n {\r\n name: \"Montserrat\",\r\n code: \"MS\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ms.webp\",\r\n phone_code: \"1-664\",\r\n },\r\n {\r\n name: \"Morocco\",\r\n code: \"MA\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ma.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Mozambique\",\r\n code: \"MZ\",\r\n currency: \"MZN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mz.webp\",\r\n phone_code: \"258\",\r\n },\r\n {\r\n name: \"Myanmar\",\r\n code: \"MM\",\r\n currency: \"MMK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mm.webp\",\r\n phone_code: \"95\",\r\n },\r\n {\r\n name: \"Namibia\",\r\n code: \"NA\",\r\n currency: \"NAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/na.webp\",\r\n phone_code: \"264\",\r\n },\r\n {\r\n name: \"Nauru\",\r\n code: \"NR\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nr.webp\",\r\n phone_code: \"674\",\r\n },\r\n {\r\n name: \"Nepal\",\r\n code: \"NP\",\r\n currency: \"NPR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/np.webp\",\r\n phone_code: \"977\",\r\n },\r\n {\r\n name: \"Netherlands\",\r\n code: \"NL\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nl.webp\",\r\n phone_code: \"31\",\r\n },\r\n {\r\n name: \"New Caledonia\",\r\n code: \"NC\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nc.webp\",\r\n phone_code: \"687\",\r\n },\r\n {\r\n name: \"New Zealand\",\r\n code: \"NZ\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nz.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Nicaragua\",\r\n code: \"NI\",\r\n currency: \"NIO\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ni.webp\",\r\n phone_code: \"505\",\r\n },\r\n {\r\n name: \"Niger\",\r\n code: \"NE\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ne.webp\",\r\n phone_code: \"227\",\r\n },\r\n {\r\n name: \"Nigeria\",\r\n code: \"NG\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ng.webp\",\r\n phone_code: \"234\",\r\n },\r\n {\r\n name: \"Niue\",\r\n code: \"NU\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nu.webp\",\r\n phone_code: \"683\",\r\n },\r\n {\r\n name: \"Norfolk Island\",\r\n code: \"NF\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nf.webp\",\r\n phone_code: \"672\",\r\n },\r\n {\r\n name: \"North Macedonia\",\r\n code: \"MK\",\r\n currency: \"MKD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mk.webp\",\r\n phone_code: \"389\",\r\n },\r\n {\r\n name: \"Northern Mariana Islands\",\r\n code: \"MP\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mp.webp\",\r\n phone_code: \"1-670\",\r\n },\r\n {\r\n name: \"Norway\",\r\n code: \"NO\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/no.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Oman\",\r\n code: \"OM\",\r\n currency: \"OMR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/om.webp\",\r\n phone_code: \"968\",\r\n },\r\n {\r\n name: \"Pakistan\",\r\n code: \"PK\",\r\n currency: \"PKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pk.webp\",\r\n phone_code: \"92\",\r\n },\r\n {\r\n name: \"Palau\",\r\n code: \"PW\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pw.webp\",\r\n phone_code: \"680\",\r\n },\r\n {\r\n name: \"Panama\",\r\n code: \"PA\",\r\n currency: \"PAB\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pa.webp\",\r\n phone_code: \"507\",\r\n },\r\n {\r\n name: \"Papua New Guinea\",\r\n code: \"PG\",\r\n currency: \"PGK\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pg.webp\",\r\n phone_code: \"675\",\r\n },\r\n {\r\n name: \"Paraguay\",\r\n code: \"PY\",\r\n currency: \"PYG\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/py.webp\",\r\n phone_code: \"595\",\r\n },\r\n {\r\n name: \"Peru\",\r\n code: \"PE\",\r\n currency: \"PEN\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pe.webp\",\r\n phone_code: \"51\",\r\n },\r\n {\r\n name: \"Philippines\",\r\n code: \"PH\",\r\n currency: \"PHP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ph.webp\",\r\n phone_code: \"63\",\r\n },\r\n {\r\n name: \"Pitcairn Islands\",\r\n code: \"PN\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pn.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Poland\",\r\n code: \"PL\",\r\n currency: \"PLN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pl.webp\",\r\n phone_code: \"48\",\r\n },\r\n {\r\n name: \"Portugal\",\r\n code: \"PT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pt.webp\",\r\n phone_code: \"351\",\r\n },\r\n {\r\n name: \"Puerto Rico\",\r\n code: \"PR\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pr.webp\",\r\n phone_code: \"1-787\",\r\n },\r\n {\r\n name: \"Qatar\",\r\n code: \"QA\",\r\n currency: \"QAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/qa.webp\",\r\n phone_code: \"974\",\r\n },\r\n {\r\n name: \"Romania\",\r\n code: \"RO\",\r\n currency: \"RON\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ro.webp\",\r\n phone_code: \"40\",\r\n },\r\n {\r\n name: \"Russia\",\r\n code: \"RU\",\r\n currency: \"RUB\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ru.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Rwanda\",\r\n code: \"RW\",\r\n currency: \"RWF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rw.webp\",\r\n phone_code: \"250\",\r\n },\r\n {\r\n name: \"Saint Barthélemy\",\r\n code: \"BL\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bl.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Helena\",\r\n code: \"SH\",\r\n currency: \"SHP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sh.webp\",\r\n phone_code: \"290\",\r\n },\r\n {\r\n name: \"Saint Kitts and Nevis\",\r\n code: \"KN\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kn.webp\",\r\n phone_code: \"1-869\",\r\n },\r\n {\r\n name: \"Saint Lucia\",\r\n code: \"LC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lc.webp\",\r\n phone_code: \"1-758\",\r\n },\r\n {\r\n name: \"Saint Martin\",\r\n code: \"MF\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mf.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Pierre and Miquelon\",\r\n code: \"PM\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pm.webp\",\r\n phone_code: \"508\",\r\n },\r\n {\r\n name: \"Saint Vincent and the Grenadines\",\r\n code: \"VC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vc.webp\",\r\n phone_code: \"1-784\",\r\n },\r\n {\r\n name: \"Samoa\",\r\n code: \"WS\",\r\n currency: \"WST\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ws.webp\",\r\n phone_code: \"685\",\r\n },\r\n {\r\n name: \"San Marino\",\r\n code: \"SM\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"378\",\r\n },\r\n {\r\n name: \"Sao Tome and Principe\",\r\n code: \"ST\",\r\n currency: \"STN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/st.webp\",\r\n phone_code: \"239\",\r\n },\r\n {\r\n name: \"Saudi Arabia\",\r\n code: \"SA\",\r\n currency: \"SAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sa.webp\",\r\n phone_code: \"966\",\r\n },\r\n {\r\n name: \"Senegal\",\r\n code: \"SN\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sn.webp\",\r\n phone_code: \"221\",\r\n },\r\n {\r\n name: \"Serbia\",\r\n code: \"RS\",\r\n currency: \"RSD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rs.webp\",\r\n phone_code: \"381\",\r\n },\r\n {\r\n name: \"Seychelles\",\r\n code: \"SC\",\r\n currency: \"SCR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sc.webp\",\r\n phone_code: \"248\",\r\n },\r\n {\r\n name: \"Sierra Leone\",\r\n code: \"SL\",\r\n currency: \"SLL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sl.webp\",\r\n phone_code: \"232\",\r\n },\r\n {\r\n name: \"Singapore\",\r\n code: \"SG\",\r\n currency: \"SGD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sg.webp\",\r\n phone_code: \"65\",\r\n },\r\n {\r\n name: \"Sint Eustatius\",\r\n code: \"SX\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sx.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Sint Maarten\",\r\n code: \"SM\",\r\n currency: \"ANG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"1-721\",\r\n },\r\n {\r\n name: \"Slovakia\",\r\n code: \"SK\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sk.webp\",\r\n phone_code: \"421\",\r\n },\r\n {\r\n name: \"Slovenia\",\r\n code: \"SI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/si.webp\",\r\n phone_code: \"386\",\r\n },\r\n {\r\n name: \"Solomon Islands\",\r\n code: \"SB\",\r\n currency: \"SBD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sb.webp\",\r\n phone_code: \"677\",\r\n },\r\n {\r\n name: \"Somalia\",\r\n code: \"SO\",\r\n currency: \"SOS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/so.webp\",\r\n phone_code: \"252\",\r\n },\r\n {\r\n name: \"South Africa\",\r\n code: \"ZA\",\r\n currency: \"ZAR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/za.webp\",\r\n phone_code: \"27\",\r\n },\r\n {\r\n name: \"South Georgia and the South Sandwich Islands\",\r\n code: \"GS\",\r\n currency: \"GBP\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gs.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"South Sudan\",\r\n code: \"SS\",\r\n currency: \"SSP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ss.webp\",\r\n phone_code: \"211\",\r\n },\r\n {\r\n name: \"Spain\",\r\n code: \"ES\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/es.webp\",\r\n phone_code: \"34\",\r\n },\r\n {\r\n name: \"Sri Lanka\",\r\n code: \"LK\",\r\n currency: \"LKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lk.webp\",\r\n phone_code: \"94\",\r\n },\r\n {\r\n name: \"Sudan\",\r\n code: \"SD\",\r\n currency: \"SDG\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sd.webp\",\r\n phone_code: \"249\",\r\n },\r\n {\r\n name: \"Suriname\",\r\n code: \"SR\",\r\n currency: \"SRD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sr.webp\",\r\n phone_code: \"597\",\r\n },\r\n {\r\n name: \"Svalbard and Jan Mayen\",\r\n code: \"SJ\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sj.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Sweden\",\r\n code: \"SE\",\r\n currency: \"SEK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/se.webp\",\r\n phone_code: \"46\",\r\n },\r\n {\r\n name: \"Switzerland\",\r\n code: \"CH\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ch.webp\",\r\n phone_code: \"41\",\r\n },\r\n {\r\n name: \"Syria\",\r\n code: \"SY\",\r\n currency: \"SYP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sy.webp\",\r\n phone_code: \"963\",\r\n },\r\n {\r\n name: \"Taiwan\",\r\n code: \"TW\",\r\n currency: \"TWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tw.webp\",\r\n phone_code: \"886\",\r\n },\r\n {\r\n name: \"Tajikistan\",\r\n code: \"TJ\",\r\n currency: \"TJS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tj.webp\",\r\n phone_code: \"992\",\r\n },\r\n {\r\n name: \"Tanzania\",\r\n code: \"TZ\",\r\n currency: \"TZS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tz.webp\",\r\n phone_code: \"255\",\r\n },\r\n {\r\n name: \"Thailand\",\r\n code: \"TH\",\r\n currency: \"THB\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/th.webp\",\r\n phone_code: \"66\",\r\n },\r\n {\r\n name: \"Timor-Leste\",\r\n code: \"TL\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tl.webp\",\r\n phone_code: \"670\",\r\n },\r\n {\r\n name: \"Togo\",\r\n code: \"TG\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tg.webp\",\r\n phone_code: \"228\",\r\n },\r\n {\r\n name: \"Tokelau\",\r\n code: \"TK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tk.webp\",\r\n phone_code: \"690\",\r\n },\r\n {\r\n name: \"Tonga\",\r\n code: \"TO\",\r\n currency: \"TOP\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/to.webp\",\r\n phone_code: \"676\",\r\n },\r\n {\r\n name: \"Trinidad and Tobago\",\r\n code: \"TT\",\r\n currency: \"TTD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tt.webp\",\r\n phone_code: \"1-868\",\r\n },\r\n {\r\n name: \"Tunisia\",\r\n code: \"TN\",\r\n currency: \"TND\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tn.webp\",\r\n phone_code: \"216\",\r\n },\r\n {\r\n name: \"Turkey\",\r\n code: \"TR\",\r\n currency: \"TRY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tr.webp\",\r\n phone_code: \"90\",\r\n },\r\n {\r\n name: \"Turkmenistan\",\r\n code: \"TM\",\r\n currency: \"TMT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tm.webp\",\r\n phone_code: \"993\",\r\n },\r\n {\r\n name: \"Tuvalu\",\r\n code: \"TV\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tv.webp\",\r\n phone_code: \"688\",\r\n },\r\n {\r\n name: \"Uganda\",\r\n code: \"UG\",\r\n currency: \"UGX\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ug.webp\",\r\n phone_code: \"256\",\r\n },\r\n {\r\n name: \"Ukraine\",\r\n code: \"UA\",\r\n currency: \"UAH\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ua.webp\",\r\n phone_code: \"380\",\r\n },\r\n {\r\n name: \"United Arab Emirates\",\r\n code: \"AE\",\r\n currency: \"AED\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ae.webp\",\r\n phone_code: \"971\",\r\n },\r\n {\r\n name: \"United Kingdom\",\r\n code: \"GB\",\r\n currency: \"GBP\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gb.webp\",\r\n phone_code: \"44\",\r\n },\r\n {\r\n name: \"United States\",\r\n code: \"US\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/us.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Uruguay\",\r\n code: \"UY\",\r\n currency: \"UYU\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uy.webp\",\r\n phone_code: \"598\",\r\n },\r\n {\r\n name: \"Uzbekistan\",\r\n code: \"UZ\",\r\n currency: \"UZS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uz.webp\",\r\n phone_code: \"998\",\r\n },\r\n {\r\n name: \"Vanuatu\",\r\n code: \"VU\",\r\n currency: \"VUV\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vu.webp\",\r\n phone_code: \"678\",\r\n },\r\n {\r\n name: \"Vatican City\",\r\n code: \"VA\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/va.webp\",\r\n phone_code: \"379\",\r\n },\r\n {\r\n name: \"Venezuela\",\r\n code: \"VE\",\r\n currency: \"VES\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ve.webp\",\r\n phone_code: \"58\",\r\n },\r\n {\r\n name: \"Vietnam\",\r\n code: \"VN\",\r\n currency: \"VND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vn.webp\",\r\n phone_code: \"84\",\r\n },\r\n {\r\n name: \"Wallis and Futuna\",\r\n code: \"WF\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/wf.webp\",\r\n phone_code: \"681\",\r\n },\r\n {\r\n name: \"Western Sahara\",\r\n code: \"EH\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eh.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Yemen\",\r\n code: \"YE\",\r\n currency: \"YER\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ye.webp\",\r\n phone_code: \"967\",\r\n },\r\n {\r\n name: \"Zambia\",\r\n code: \"ZM\",\r\n currency: \"ZMW\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zm.webp\",\r\n phone_code: \"260\",\r\n },\r\n {\r\n name: \"Zimbabwe\",\r\n code: \"ZW\",\r\n currency: \"ZWL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zw.webp\",\r\n phone_code: \"263\",\r\n },\r\n];\r\n","export const globalStyles: any = {\r\n verifiedCustdMdlContainer: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n paddingBottom: 20,\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlStartupOutterGrad: {\r\n // <LinearGradient\r\n // colors={['#643fff', '#381ab7']}\r\n // start={{ x: 0.5, y: 0 }}\r\n // end={{ x: 0.5, y: 1 }}\r\n // style={styles.verifiedCustdMdlStartupOutterGrad}\r\n // >\r\n // {/* your content here */}\r\n // </LinearGradient>\r\n\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n // background is handled by LinearGradient above\r\n },\r\n\r\n verifiedCustdMdlStartupOutterNorm: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n backgroundColor: \"#ffffff\",\r\n },\r\n\r\n verifiedCustdMdlStartup: {\r\n width: 650,\r\n height: \"auto\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n overflowX: \"hidden\",\r\n overflowY: \"scroll\",\r\n paddingBottom: 20,\r\n borderWidth: 1,\r\n borderColor: \"#0F122E\",\r\n borderRadius: 10,\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlLoadingScreen: {\r\n borderRadius: 10,\r\n width: \"100%\",\r\n flexShrink: 0,\r\n backgroundColor: \"rgba(0, 0, 0, 0.3)\",\r\n zIndex: 100,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n overflow: \"scroll\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n\r\n verifiedCustdMdlStartupIconContainer: {\r\n width: \"76.119%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n flexDirection: \"column\",\r\n height: 298,\r\n },\r\n\r\n verifiedCustdMdlStartupIconShadow: {\r\n position: \"absolute\",\r\n bottom: 10,\r\n right: 70,\r\n width: \"48.5%\",\r\n },\r\n\r\n verifiedCustdMdlStartupTextContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n marginRight: 20,\r\n marginLeft: 20,\r\n },\r\n\r\n verifiedCustdMdlStartupTextHeader: {\r\n color: \"#ffffff\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 33.6, // 2.1rem\r\n fontWeight: \"700\",\r\n lineHeight: 45,\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlStartupTextFooter: {\r\n color: \"#ffffff\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14.4, // 0.9rem\r\n fontWeight: \"400\",\r\n lineHeight: 24,\r\n opacity: 0.8,\r\n },\r\n\r\n verifiedCustdMdlFtuStartupButton: {\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#cfe600\",\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n margin: 20,\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontWeight: \"500\",\r\n lineHeight: 24,\r\n outline: \"none\",\r\n borderWidth: 0,\r\n },\r\n\r\n verifiedCustdMdlStartupLanguage: {\r\n backgroundColor: \"#ffffff\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStartupLanguageContentContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 32,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStLanguageContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 20,\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStLanguageText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 24, // 1.5rem\r\n fontWeight: \"700\",\r\n lineHeight: 24,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentHover: {\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#9da3ff\",\r\n backgroundColor: \"#ecefff\",\r\n },\r\n\r\n verifiedCustdMdlStContactInput: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 14,\r\n width: \"90%\",\r\n },\r\n\r\n verifiedCustdMdlStContactContentContainer: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: 8,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStContactFirstSection: {\r\n display: \"flex\",\r\n width: 150,\r\n height: 44,\r\n paddingLeft: 6,\r\n alignItems: \"center\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f7f7f8\",\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n },\r\n\r\n verifiedCustdMdlStContactSelectionIcon: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexShrink: 0,\r\n borderRadius: 24,\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n overflow: \"hidden\",\r\n width: 28,\r\n height: 28,\r\n },\r\n\r\n verifiedCustdMdlStContactSelectionText: {\r\n color: \"#0c0c0e\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n width: 40,\r\n flexShrink: 0,\r\n },\r\n\r\n verifiedCustdMdlStContactDropdown: {},\r\n\r\n verifiedCustdMdlStContactFooterFirstSection: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStContactFooterSecondSection: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 4,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlCustomBlankPage: {\r\n height: 0,\r\n },\r\n\r\n // verifiedCustdMdlStContactInputError: {\r\n // display: \"flex\",\r\n // alignItems: \"center\",\r\n // gap: 4,\r\n // },\r\n\r\n verifiedCustdMdlStartupOtpText: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlStartupOtpHeaderText: {\r\n alignSelf: \"stretch\",\r\n color: \"#5b5d6e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 11.2,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 11.2 * 1.5\r\n maxWidth: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlOtpInputGroup: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n alignItems: \"flex-start\",\r\n gap: 8,\r\n },\r\n\r\n verifiedCustdMdlOtpInput: {\r\n display: \"flex\",\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n flex: 1,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f7f7f8\",\r\n width: \"25%\",\r\n textAlign: \"center\",\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpInputRed: {\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#E23636\",\r\n backgroundColor: \"#F7F7F8\",\r\n display: \"flex\",\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n flex: 1,\r\n alignSelf: \"stretch\",\r\n width: \"25%\",\r\n textAlign: \"center\",\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpIncorrectText: {\r\n color: \"#E23636\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n maxWidth: 200,\r\n },\r\n\r\n verifiedCustdMdlOtpTimer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n flexDirection: \"row\",\r\n },\r\n\r\n verifiedCustdMdlOtpTimerText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpTimerTextRed: {\r\n color: \"#e23636\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpResendText: {\r\n color: \"#b6b7c3\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpResendTextActive: {\r\n color: \"#603ff4\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlStOtpIcon: {},\r\n\r\n verifiedCustdMdlStartupButton: {\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#cfe600\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n opacity: 0.5,\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n width: \"90%\",\r\n maxWidth: 500,\r\n },\r\n\r\n verifiedCustdMdlStartupButtonActive: {\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#cfe600\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n width: \"90%\",\r\n maxWidth: 500,\r\n },\r\n\r\n verifiedCustdMdlOtpInputPassword: {\r\n fontWeight: \"900\",\r\n },\r\n\r\n verifiedCustdMdlStartupButtonClick: {\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#0c0c0e\",\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n width: \"90%\",\r\n backgroundColor: \"transparent\",\r\n maxWidth: 500,\r\n },\r\n\r\n verifiedCustdMdlPinInputContainerText: {\r\n color: \"#5B5D6E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 14 * 1.5\r\n },\r\n\r\n verifiedCustdMdlStButtonText: {\r\n color: \"#0c0c0e\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n },\r\n\r\n verifiedCustdMdlStartupSlider: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n borderRadius: 4,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStartupSliderLine: {\r\n height: 4,\r\n flexShrink: 0,\r\n borderRadius: 8,\r\n backgroundColor: \"#eeeef0\",\r\n },\r\n\r\n verifiedCustdMdlStartupSliderLineActive: {\r\n height: 4,\r\n flex: 1,\r\n borderRadius: 8,\r\n backgroundColor: \"#603ff4\",\r\n },\r\n\r\n verifiedCustdMdlStartupContact: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 20,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStartupContactContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlStartupContactText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 16, // 100%\r\n alignSelf: \"stretch\",\r\n maxWidth: \"100%\",\r\n },\r\n\r\n // verifiedCustdMdlStContactContentContainer: {\r\n // display: \"flex\",\r\n // alignItems: \"flex-start\",\r\n // gap: 8,\r\n // width: \"100%\",\r\n // },\r\n\r\n verifiedCustdMdlStContactSecondSection: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n height: 44,\r\n paddingLeft: 6,\r\n alignItems: \"center\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f7f7f8\",\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlStContactSecondSectionPlaceholder: {\r\n color: \"#b6b7c3\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlStartupContactFooter: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n marginTop: 16,\r\n },\r\n\r\n // verifiedCustdMdlStContactFooterFirstSection: {\r\n // display: \"flex\",\r\n // flexDirection: \"column\",\r\n // alignItems: \"center\",\r\n // justifyContent: \"center\",\r\n // gap: 12,\r\n // width: \"100%\",\r\n // },\r\n\r\n // verifiedCustdMdlStContactFooterSecondSection: {\r\n // display: \"flex\",\r\n // alignItems: \"center\",\r\n // justifyContent: \"center\",\r\n // gap: 4,\r\n // width: \"100%\",\r\n // },\r\n\r\n verifiedCustdMdlStContactInputError: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n },\r\n\r\n verifiedCustdMdlInputErrorText: {\r\n color: \"#e23636\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 140%\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlMobileStartupSearchBoxContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 6,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlMobileStartupSearchBox: {\r\n display: \"flex\",\r\n height: 40,\r\n alignItems: \"center\",\r\n gap: 6,\r\n borderRadius: 6,\r\n borderWidth: 1,\r\n borderColor: \"#d8d9df\",\r\n backgroundColor: \"#f7f7f8\",\r\n width: \"100%\",\r\n overflow: \"hidden\", // only works with ScrollView or certain View types\r\n },\r\n\r\n verifiedCustdMdlMsSearchBoxContent: {\r\n height: \"100%\",\r\n width: \"100%\",\r\n backgroundColor: \"transparent\",\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlMsSearchBoxContentPlaceholder: {\r\n color: \"#8f91a1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlMobileStartupSearchContent: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#f7f7f8\",\r\n backgroundColor: \"#ffffff\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n alignSelf: \"stretch\",\r\n overflow: \"scroll\", // or use ScrollView for better scroll control\r\n },\r\n\r\n verifiedCustdMdlMsSearchContent: {\r\n display: \"flex\",\r\n padding: 8,\r\n alignItems: \"center\",\r\n gap: 19,\r\n alignSelf: \"stretch\",\r\n height: 34,\r\n marginBottom: 5,\r\n borderWidth: 1,\r\n borderColor: \"transparent\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentActive: {\r\n display: \"flex\",\r\n padding: 8,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 6,\r\n backgroundColor: \"#f1f8ed\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentTextContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 19,\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentIcon: {\r\n display: \"flex\",\r\n width: 28,\r\n height: 28,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n borderRadius: 24,\r\n borderWidth: 1,\r\n borderColor: \"rgba(0, 0, 0, 0.05)\",\r\n backgroundColor: \"#fff\",\r\n shadowColor: \"#eee\",\r\n shadowOffset: { width: 0, height: 1 },\r\n shadowOpacity: 1,\r\n shadowRadius: 4,\r\n elevation: 3, // for Android shadow\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12.4, // 0.775rem\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18.6, // 12.4 * 1.5\r\n },\r\n\r\n verifiedCustdMdlTermsAndCondition: {\r\n color: \"#8f91a1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 11.2,\r\n fontStyle: \"normal\",\r\n fontWeight: \"450\",\r\n lineHeight: 15.68, // 11.2 * 1.4\r\n },\r\n\r\n verifiedCustdMdlPrivacy: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n marginBottom: 20,\r\n },\r\n\r\n verifiedCustdMdlPrivacyText: {\r\n color: \"#40414c\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 8,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 20,\r\n letterSpacing: 0.25,\r\n },\r\n\r\n verifiedCustdMdlPPPaymentPortalAmountInfoSeparator: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 6,\r\n alignSelf: \"stretch\",\r\n justifyContent: \"center\",\r\n },\r\n\r\n verifiedCustdMdlPPPaymentPortalLine: {\r\n width: \"50%\",\r\n height: 1,\r\n backgroundColor: \"#eeeef0\",\r\n },\r\n\r\n verifiedCustdMdlPPaymentPortalSeparatorText: {\r\n color: \"#4a4a5a\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 140%\r\n opacity: 0.6,\r\n },\r\n\r\n verifiedCustdMdlStartupOtpFooter: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n },\r\n\r\n verifiedCustdMdlStartupOtpFooterText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 12.8,\r\n fontStyle: \"normal\",\r\n fontWeight: \"600\",\r\n lineHeight: 12.8, // 100%\r\n maxWidth: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlOtpInputContainer: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 6,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastError: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastErrorContainer: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n padding: 6,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastErrorTitle: {\r\n margin: 0,\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"600\",\r\n lineHeight: 16, // 100%\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastErrorLabel: {\r\n alignSelf: \"stretch\",\r\n color: \"#8f91a1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccess: {\r\n padding: 12,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f1f8ed\",\r\n width: \"100%\",\r\n height: 55,\r\n maxHeight: 55,\r\n flexDirection: \"row\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessCont: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessContainer: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n padding: 6,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessLink: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessLinkText: {\r\n color: \"#603ff4\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 21, // 150%\r\n textDecorationLine: \"underline\",\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentContainer: {\r\n width: \"28.4375%\",\r\n padding: 24,\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n backgroundColor: \"#fff\",\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 4 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 19,\r\n elevation: 5,\r\n height: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContent: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 32,\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentText: {\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentTextHeader: {\r\n color: \"#0c0c0e\",\r\n textAlign: \"center\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 24,\r\n fontStyle: \"normal\",\r\n fontWeight: \"800\",\r\n lineHeight: 33.6, // 140%\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentTextFooter: {\r\n color: \"#5b5d6e\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 24, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyIcon: {\r\n width: \"90%\",\r\n maxWidth: \"90%\",\r\n height: 250,\r\n maxHeight: 250,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBody: {\r\n padding: 10,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n borderRadius: 8,\r\n backgroundColor: \"#ECEFFF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextCont: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextIcon: {\r\n padding: 8,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 10,\r\n borderRadius: 24,\r\n backgroundColor: \"#C2C7FF\",\r\n width: 20,\r\n height: 20,\r\n overflow: \"hidden\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextLabel: {\r\n width: \"76.1%\",\r\n color: \"#5B5D6E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 15, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextLabelBold: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 14, // 140%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerButtonsCont: {\r\n padding: 10,\r\n flexDirection: \"row\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: 10,\r\n backgroundColor: \"transparent\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerButtonNeut: {\r\n width: \"45%\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"transparent\",\r\n borderWidth: 1,\r\n borderColor: \"#0C0C0E\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 18, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerButtonAction: {\r\n width: \"45%\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#CFE600\",\r\n borderWidth: 0,\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 18, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreBody: {\r\n padding: 15,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n borderRadius: 8,\r\n backgroundColor: \"#ECEFFF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreHeaderCont: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 32,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreTitleCont: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderText: {\r\n alignSelf: \"stretch\",\r\n color: \"#5B5D6E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 12 * 1.5\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreTitle: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 18,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 21.6, // 18 * 1.2\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreLabel: {\r\n color: \"#4A4A5A\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 14 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreLabelLink: {\r\n alignSelf: \"stretch\",\r\n color: \"#4E2BD7\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 18, // 12 * 1.5\r\n textDecorationLine: \"underline\",\r\n // textDecorationStyle: \"solid\", // not supported\r\n // textDecorationThickness: \"auto\", // not supported\r\n // textDecorationSkipInk: \"none\", // not supported\r\n // textUnderlineOffset: \"auto\", // not supported\r\n // textUnderlinePosition: \"from-font\", // not supported\r\n // cursor: \"pointer\",\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderInfoCont: {\r\n padding: 10,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#FFF9C1\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderInfoText: {\r\n color: \"#89490A\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 15, // 10 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderInfoTextBold: {\r\n color: \"#89490A\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 14, // 10 * 1.4\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2Body: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n marginTop: 20,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyHeader: {\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyHeaderFirstText: {\r\n color: \"#0C0C0E\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12.8, // 0.8rem\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.2, // 12.8 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyHeaderSecondText: {\r\n color: \"#0C0C0E\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContent: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeader: {\r\n paddingTop: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n position: \"relative\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont: {\r\n width: \"100%\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel: {\r\n paddingVertical: 4,\r\n paddingHorizontal: 6,\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n position: \"absolute\",\r\n left: 12,\r\n top: -14,\r\n borderRadius: 6,\r\n backgroundColor: \"#DDE1FF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText: {\r\n color: \"#362689\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 14, // 10 * 1.4\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#EEEEF0\",\r\n backgroundColor: \"#F7F7F8\",\r\n padding: 12,\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyHeaderCont: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyHeader: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 6,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyTitle: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n margin: 0,\r\n maxWidth: 150,\r\n // wordWrap: \"break-word\", // Not supported in React Native\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyLabel: {\r\n color: \"#8F91A1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n margin: 0,\r\n maxWidth: 200,\r\n // wordWrap: \"break-word\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyButton: {\r\n flexDirection: \"row\",\r\n paddingVertical: 5.5,\r\n paddingHorizontal: 8,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n borderRadius: 6,\r\n borderWidth: 1,\r\n borderColor: \"#603FF4\",\r\n backgroundColor: \"#603FF4\",\r\n color: \"#ECEFFF\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooter: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n // cursor: \"pointer\" // Not supported\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooterText: {\r\n color: \"#603FF4\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 21, // 14 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreBody: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n padding: 15,\r\n gap: 16,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#D8D9DF\",\r\n minWidth: \"90%\",\r\n marginBottom: 20,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirst: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstHeader: {\r\n flexDirection: \"row\",\r\n alignItems: \"flex-end\",\r\n gap: 5,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstHeaderText: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 11.2, // 0.7rem\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 11.2 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstFooter: {\r\n flexDirection: \"row\",\r\n paddingVertical: 4,\r\n paddingHorizontal: 6,\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n borderRadius: 6,\r\n backgroundColor: \"#DDE1FF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstFooterText: {\r\n color: \"#362689\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 14, // 10 * 1.4\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreSecond: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 4,\r\n width: \"100%\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreSecondInput: {\r\n display: \"flex\",\r\n padding: 12,\r\n alignItems: \"center\",\r\n gap: 182,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#F7F7F8\", // var(--Neutral-50)\r\n color: \"#0C0C0E\", // var(--Neutral-950)\r\n\r\n // Paragraph 02/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 150% of 12px ~ 18px\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreThird: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: 24,\r\n width: \"100%\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreThirdCont: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreThirdContText: {\r\n color: \"#383842\", // var(--Neutral-900)\r\n\r\n // Paragraph 02/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 13,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 20, // 150% of 13px ~ 19.5px\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreButtons: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n backgroundColor: \"transparent\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreButtonsNeut: {\r\n width: \"50%\",\r\n display: \"flex\",\r\n paddingVertical: 7.5,\r\n paddingHorizontal: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n flexBasis: 0,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n color: \"#603FF4\",\r\n textAlign: \"right\",\r\n\r\n // Paragraph 02/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 20, // 140% of 14px ~ 19.6px\r\n backgroundColor: \"transparent\",\r\n cursor: \"pointer\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreButtonsAction: {\r\n width: \"50%\",\r\n display: \"flex\",\r\n paddingVertical: 6,\r\n paddingHorizontal: 8,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n flexBasis: 0,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n backgroundColor: \"#603FF4\",\r\n color: \"#ECEFFF\", // var(--secondary-electric-violet-50)\r\n textAlign: \"right\",\r\n\r\n // Paragraph 02/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 20, // 140% of 14px ~ 19.6px\r\n cursor: \"pointer\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreSecondInputPlaceholder: {\r\n color: \"#B6B7C3\", // var(--Neutral-300)\r\n\r\n // Paragraph 02/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 150% of 12px\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyContent: {\r\n display: \"flex\",\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n flexDirection: \"column\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\",\r\n gap: 61,\r\n borderTopLeftRadius: 8,\r\n borderTopRightRadius: 8,\r\n backgroundColor: \"#FFFFFF\", // var(--Neutral-White-100)\r\n width: \"100%\",\r\n maxHeight: \"62.7%\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyCont: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n width: \"90%\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyHeader: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 16,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyTitle: {\r\n color: \"#0C0C0E\", // var(--Neutral-950)\r\n fontFamily: \"Manrope\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 24, // 150% of 16px\r\n margin: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyLabel: {\r\n color: \"#5B5D6E\", // var(--Neutral-600)\r\n\r\n // Paragraph 01/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 150% of 12px\r\n margin: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooter: {\r\n display: \"flex\",\r\n width: \"90%\",\r\n paddingTop: 15,\r\n paddingBottom: 5,\r\n paddingHorizontal: 15,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 5,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#EEEEF0\", // var(--Neutral-100)\r\n backgroundColor: \"#FFFFFF\", // var(--Neutral-White-100)\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndCont: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n backgroundColor: \"transparent\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n marginBottom: 3,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterInd: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: -6,\r\n borderRadius: 2,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndTextCont: {\r\n display: \"flex\",\r\n paddingVertical: 4,\r\n paddingHorizontal: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n borderRadius: 6,\r\n backgroundColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndText: {\r\n color: \"#FFFFFF\", // var(--Neutral-White-100)\r\n textAlign: \"center\",\r\n\r\n // Paragraph 03/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 17, // 140% of 12px\r\n margin: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndIcon: {\r\n width: 12,\r\n height: 12,\r\n },\r\n\r\n verifiedCustdMdlPrivacyIcon: {\r\n width: 20,\r\n height: 20,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelCont: {\r\n width: \"100%\",\r\n height: 51,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderCont: {\r\n width: \"98%\",\r\n height: 16,\r\n flexShrink: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSlider: {\r\n width: \"100%\",\r\n height: 5,\r\n flexShrink: 0,\r\n borderRadius: 10,\r\n backgroundColor: \"#EEEEF0\", // var(--Neutral-100)\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd: {\r\n height: 5,\r\n flexShrink: 0,\r\n borderRadius: 10,\r\n backgroundColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n position: \"relative\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderIcon: {\r\n flexShrink: 0,\r\n position: \"absolute\",\r\n top: -5,\r\n right: 0,\r\n width: 16,\r\n height: 16,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelTextCont: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n paddingVertical: 10,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText: {\r\n color: \"#0C0C0E\", // var(--Neutral-950)\r\n\r\n // Paragraph 02/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 17, // 140% of 12px\r\n margin: 0,\r\n cursor: \"pointer\",\r\n },\r\n verifiedCustdMdlAC2BContentHeaderBodyHeaderIcons: {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n alignItems: \"center\",\r\n gap: 16,\r\n marginTop: 10,\r\n },\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooterDis: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n marginBottom: 18,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooterTextDis: {\r\n color: \"#B6B7C3\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 21,\r\n },\r\n\r\n verifiedCustdMdlStartupContactContentHeaderCont: {\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n display: \"flex\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerConfirmBodyContentOutter: {\r\n backgroundColor: \"rgba(0, 0, 0, 0.40)\",\r\n zIndex: 5,\r\n position: \"absolute\",\r\n width: \"100%\",\r\n bottom: 0,\r\n right: 0,\r\n left: 0,\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column-reverse\",\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButton: {\r\n display: \"flex\",\r\n paddingVertical: 6,\r\n paddingHorizontal: 12,\r\n alignItems: \"center\",\r\n gap: 4,\r\n borderRadius: 32,\r\n backgroundColor: \"#362689\", // Electric Violet 900\r\n cursor: \"pointer\",\r\n color: \"#FFFFFF\",\r\n borderWidth: 0,\r\n width: \"auto\",\r\n maxWidth: 150,\r\n fontFamily: \"Roboto\",\r\n fontSize: 10.4, // 0.65rem ≈ 10.4px\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 14.56, // 140%\r\n height: 30,\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonCont: {\r\n width: \"auto\",\r\n height: \"auto\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 4,\r\n justifyContent: \"flex-start\",\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonBody: {\r\n height: \"auto\",\r\n width: \"auto\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 4,\r\n borderWidth: 0,\r\n borderRadius: 10,\r\n backgroundColor: \"#F7F7F8\",\r\n padding: 10,\r\n position: \"absolute\",\r\n top: 33,\r\n right: 0,\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonBodyCont: {\r\n backgroundColor: \"transparent\",\r\n cursor: \"pointer\",\r\n borderWidth: 1,\r\n borderColor: \"transparent\",\r\n padding: 5,\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonBodyText: {\r\n width: 110,\r\n fontFamily: \"Roboto\",\r\n fontSize: 10.4,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 14.56,\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdButton: {\r\n display: \"flex\",\r\n width: 100,\r\n paddingVertical: 6,\r\n paddingHorizontal: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n borderRadius: 100,\r\n borderWidth: 1,\r\n borderColor: \"#4e2bd7\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdButtonText: {\r\n color: \"#603ff4\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"600\",\r\n lineHeight: 17.5, // 125%\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThird: {\r\n display: \"flex\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#FFFFFF\",\r\n // Shadow Nav 1\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 0 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 16,\r\n elevation: 4,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContent: {\r\n display: \"flex\",\r\n paddingVertical: 4,\r\n paddingHorizontal: 0,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n cursor: \"pointer\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContentTextContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContentText: {\r\n color: \"#383842\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n maxWidth: 170,\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContentLine: {\r\n width: \"100%\",\r\n height: 1,\r\n backgroundColor: \"#EEEEF0\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlAssetLayoutContent: {\r\n display: \"flex\",\r\n paddingTop: 0,\r\n paddingBottom: 155,\r\n paddingHorizontal: 20,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 20,\r\n borderRadius: 8,\r\n backgroundColor: \"#FFFFFF\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecond: {\r\n display: \"flex\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#FFFFFF\",\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 0 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 16,\r\n elevation: 4,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondText: {\r\n color: \"#383842\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 21,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContainer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 24,\r\n cursor: \"pointer\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContentIcon: {\r\n display: \"flex\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 4,\r\n backgroundColor: \"#ECEFFF\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContentText: {\r\n color: \"#000000\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18,\r\n textTransform: \"capitalize\",\r\n width: \"auto\",\r\n maxWidth: 60,\r\n height: 36,\r\n },\r\n\r\n VerifiedCustdMdlOfferSecurityPopupInfoContentGrad: {\r\n display: \"flex\",\r\n paddingVertical: 6,\r\n paddingHorizontal: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n backgroundColor: \"#FFFFFF\",\r\n position: \"absolute\",\r\n top: -1,\r\n left: 4,\r\n width: 230,\r\n borderRadius: 2,\r\n zIndex: 3,\r\n // <LinearGradient> equivalent gradient can go here\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 0 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 16,\r\n elevation: 4,\r\n },\r\n\r\n verifiedCustdMdlOfferSecurityPopupInfoContentText: {\r\n color: \"#383842\",\r\n width: \"auto\",\r\n maxWidth: 300,\r\n height: \"auto\",\r\n flexWrap: \"wrap\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8,\r\n },\r\n};\r\n","import { initPlatform, getPlatformComponents } from \"./platform\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useVaultStore, VaultContextProvider } from \"../services/store\";\r\nimport { VerifiedCustodyProps, VerifiedWalletVault } from \"../utils/types\";\r\nimport FTUPage from \"./ftu\";\r\nimport EnterPinPage from \"./enterPin\";\r\nimport {\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport { actionTexts, countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport AddCosignersPage from \"./addCosigners\";\r\nimport Success from \"../components/success\";\r\nimport CreatePinPage from \"./createPin\";\r\n\r\nconst VerifiedCustody = (props: VerifiedCustodyProps) => {\r\n const [ready, setReady] = useState<boolean>(false);\r\n const [platformComponents, setPlatformComponents] = useState<any>({});\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(false);\r\n const [isOnboard, setisOnboard] = useState<boolean | null>(null);\r\n const [vaultData, setVaultData] = useState<VerifiedWalletVault>({});\r\n const [_vaultData, _setVaultData] = useState<any>({});\r\n const [isLoading, setIsLoading] = useState<boolean>(false);\r\n const [showDashboard, setShowDasboard] = useState<boolean>(false);\r\n const [showCompleteVault, setShowCompleteVault] = useState<boolean>(false);\r\n const [showResetPin, setShowResetPin] = useState<boolean>(false);\r\n const [showRemoveCosigner, setShowRemoveCosigner] = useState<boolean>(false);\r\n const [action, setAction] = useState<string>(\"\");\r\n const [allCountries, setAllCountries] = useState([]);\r\n const [step, setStep] = useState<string>(\"\");\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n const loadModule = async () => {\r\n await initPlatform();\r\n const components = getPlatformComponents();\r\n if (components) {\r\n setPlatformComponents(components);\r\n setReady(true);\r\n }\r\n };\r\n loadModule();\r\n }, []);\r\n\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Font,\r\n AsyncStorage,\r\n ActivityIndicator,\r\n styles,\r\n } = platformComponents;\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!fontsLoaded && ready) {\r\n PreloadGoogleFonts();\r\n }\r\n }, [ready, fontsLoaded]);\r\n\r\n useEffect(() => {\r\n const checkUserOnboardingStatus = async () => {\r\n if (!isReactNative) {\r\n // On web we use chrome extension storage or localStorage\r\n if (chrome?.storage?.local) {\r\n chrome.storage.local.get(\"myVault\", (res) => {\r\n if (res.myVault && JSON.parse(res.myVault)?.vaultId) {\r\n setVaultData(JSON.parse(res.myVault));\r\n setisOnboard(true);\r\n } else {\r\n setisOnboard(false);\r\n }\r\n });\r\n } else if (localStorage) {\r\n const myVault = JSON.parse(localStorage.getItem(\"myVault\"));\r\n if (myVault && myVault?.vaultId) {\r\n setVaultData(myVault);\r\n setisOnboard(true);\r\n } else setisOnboard(false);\r\n } else {\r\n setisOnboard(false);\r\n }\r\n } else if (AsyncStorage) {\r\n try {\r\n // On react native we use react-native-async-storage\r\n const storedVault = await AsyncStorage.getItem(\"myVault\");\r\n if (storedVault) {\r\n const myVault = JSON.parse(storedVault);\r\n if (myVault?.vaultId) {\r\n setVaultData(myVault);\r\n setisOnboard(true);\r\n return;\r\n }\r\n }\r\n setisOnboard(false);\r\n } catch (err) {\r\n console.error(\"Error reading vault data on react:\", err);\r\n setisOnboard(false);\r\n }\r\n }\r\n };\r\n\r\n if (ready) {\r\n checkUserOnboardingStatus();\r\n }\r\n }, [ready]);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries = countriesDetails //use api instead???\r\n .map((cnt) => {\r\n if (cnt) {\r\n return {\r\n name: cnt?.name,\r\n countryName: cnt?.name,\r\n officialName: cnt?.name,\r\n currencySymbol: cnt?.currency,\r\n currencyName: cnt?.currency,\r\n officialCurrencySymbol: cnt?.currency,\r\n countryCode: cnt?.code,\r\n flag: cnt?.flag,\r\n continent: cnt?.continent,\r\n phone_code: cnt?.phone_code,\r\n code: cnt?.code,\r\n };\r\n }\r\n return null;\r\n })\r\n .filter((cnt) => cnt !== undefined && cnt !== null);\r\n setAllCountries(fmtCountries);\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n return (\r\n <React.Fragment>\r\n {ready && (\r\n <React.Fragment>\r\n {fontsLoaded && (\r\n <VaultContextProvider>\r\n {isLoading && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlLoadingScreen,\r\n height: \"100vh\",\r\n }\r\n : { height: \"100vh\" }\r\n }\r\n className=\"verified-custd-mdl-loading-screen\"\r\n >\r\n <ActivityIndicator size=\"large\" color=\"blue\" />\r\n </View>\r\n )}\r\n <View\r\n id=\"verified-custd-out-cont\"\r\n className=\"verified-custd-mdl-container\"\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlContainer } : {}\r\n }\r\n >\r\n {isOnboard === null && props.delayPageElement && (\r\n <React.Fragment>{props.delayPageElement}</React.Fragment>\r\n )}\r\n\r\n {isOnboard === null && !props.delayPageElement && (\r\n <View\r\n style={\r\n props.delayPageStyle\r\n ? props.delayPageStyle\r\n : {\r\n width: \"100%\",\r\n height: \"100%\",\r\n background: \"transparent\",\r\n border: \"none\",\r\n }\r\n }\r\n >\r\n {\" \"}\r\n </View>\r\n )}\r\n\r\n {isOnboard !== null && (\r\n <React.Fragment>\r\n {!isOnboard && !showDashboard && (\r\n <FTUPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n helperFunctions={props.helperFunctions}\r\n popupView={props.popupView}\r\n action={props.action ? props.action : \"getPk\"}\r\n vaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n txData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n showLogoPage={props.showLogoPage}\r\n logoPageElement={props.logoPageElement}\r\n logoTimeoutTime={props.logoTimeoutTime}\r\n defaultCountry={props.defaultCountry}\r\n setisOnboard={setisOnboard}\r\n setIsLoading={setIsLoading}\r\n dashbordElement={props.dashbordElement}\r\n chainId={Number(props.chainId)}\r\n enablePhone={props.enablePhone}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n createPasskeyDomain={props?.createPasskeyDomain}\r\n getPasskeyDomain={props?.getPasskeyDomain}\r\n />\r\n )}\r\n\r\n {isOnboard && !showDashboard && !showCompleteVault && (\r\n <EnterPinPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n regAddress={vaultData?.regAddress}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={\r\n props.actionText || actionTexts[props.action]\r\n }\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action || \"\"}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n txToSign={props.txToSign || null}\r\n signTxElement={props.signTxElement}\r\n helperFunctions={props.helperFunctions}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n setShowCompleteVault={setShowCompleteVault}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n createPasskeyDomain={props?.createPasskeyDomain}\r\n getPasskeyDomain={props?.getPasskeyDomain}\r\n />\r\n )}\r\n\r\n {isOnboard && showDashboard && showCompleteVault && (\r\n <EnterPinPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n regAddress={vaultData?.regAddress}\r\n vaultChannel={vaultData?.channel}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={\r\n props.actionText || actionTexts[props.action]\r\n }\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action || \"\"}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n txToSign={props.txToSign || null}\r\n signTxElement={props.signTxElement}\r\n helperFunctions={props.helperFunctions}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n setShowCompleteVault={setShowCompleteVault}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n createPasskeyDomain={props?.createPasskeyDomain}\r\n getPasskeyDomain={props?.getPasskeyDomain}\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"\" && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n heigth: \"100%\",\r\n padding: \"20px\",\r\n }}\r\n >\r\n <AddCosignersPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n />\r\n </View>\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"7\" && (\r\n <Success\r\n platform={platformComponents}\r\n action={props.action}\r\n setStep={setStep}\r\n stepToSet=\"8\"\r\n customTextHeader=\"Successful\"\r\n actionHeaderText=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n actionFooterText=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n showButton={props.dashbordElement ? true : false}\r\n buttonText={\r\n props.dashbordElement ? \"Go To Dashboard\" : \"\"\r\n }\r\n handleShowDashboard={() => {\r\n setShowResetPin(false);\r\n setShowRemoveCosigner(false);\r\n setShowDasboard(true);\r\n }}\r\n buttonFunc={() => {\r\n setShowResetPin(false);\r\n setShowRemoveCosigner(false);\r\n setShowDasboard(true);\r\n }}\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"8\" &&\r\n props.dashbordElement && (\r\n <props.dashbordElement setIsLoading={setIsLoading} />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"8\" &&\r\n !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {!showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n !showRemoveCosigner &&\r\n props.dashbordElement && (\r\n <props.dashbordElement\r\n setIsLoading={setIsLoading}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n setAction={setAction}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n setVaultData={_setVaultData}\r\n initWalletAndContract={initWalletAndContract}\r\n useVaultStore={useVaultStore}\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n !showRemoveCosigner &&\r\n !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n !showRemoveCosigner &&\r\n showDashboard &&\r\n showResetPin && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n heigth: \"100%\",\r\n padding: \"20px\",\r\n }}\r\n >\r\n <CreatePinPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n action=\"reset-pin\"\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n vaultData={_vaultData}\r\n selectedCountry={selectedCountry}\r\n helperFunctions={props.helperFunctions}\r\n isExistingUser={true}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n createPasskeyDomain={props?.createPasskeyDomain}\r\n getPasskeyDomain={props?.getPasskeyDomain}\r\n />\r\n </View>\r\n )}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n showRemoveCosigner && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n heigth: \"100%\",\r\n padding: \"20px\",\r\n }}\r\n >\r\n <AddCosignersPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n action={\"remove-cosigner\"}\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n setShowDashboard={setShowDasboard}\r\n setShowResetPin={setShowResetPin}\r\n setShowRemoveCosigner={setShowRemoveCosigner}\r\n />\r\n </View>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </View>\r\n </VaultContextProvider>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </React.Fragment>\r\n )}\r\n {!ready &&\r\n typeof navigator !== \"undefined\" &&\r\n navigator.product !== \"ReactNative\" && (\r\n <React.Fragment>Preparing Module...</React.Fragment>\r\n )}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default VerifiedCustody;\r\n","import React, { createContext, useContext, useState } from \"react\";\r\n\r\ninterface VaultStore {\r\n chainId: number | null;\r\n pk: string | null;\r\n address: string | null;\r\n signer: any;\r\n provider: any;\r\n vaultContract: any;\r\n vaultData: any;\r\n setChainId: (chainId: number | null) => void;\r\n setPk: (pk: string | null) => void;\r\n setAddress: (address: string | null) => void;\r\n setSigner: (signer: any) => void;\r\n setProvider: (provider: any) => void;\r\n setVaultContract: (vaultContract: any) => void;\r\n setVaultData: (vaultData: any) => void;\r\n}\r\n\r\nconst VaultStoreContext = createContext<VaultStore | undefined>(undefined);\r\n\r\nexport const VaultContextProvider = ({ children }: { children: any }) => {\r\n const [chainId, setChainId] = useState<number | null>(null);\r\n const [pk, setPk] = useState<string | null>(null);\r\n const [address, setAddress] = useState<string | null>(null);\r\n const [signer, setSigner] = useState<any>(null);\r\n const [provider, setProvider] = useState<any>(null);\r\n const [vaultContract, setVaultContract] = useState<any>(null);\r\n const [vaultData, setVaultData] = useState<any>(null);\r\n\r\n return (\r\n <VaultStoreContext.Provider\r\n value={{\r\n chainId,\r\n pk,\r\n address,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData,\r\n setChainId,\r\n setPk,\r\n setAddress,\r\n setSigner,\r\n setProvider,\r\n setVaultContract,\r\n setVaultData,\r\n }}\r\n >\r\n {children}\r\n </VaultStoreContext.Provider>\r\n );\r\n};\r\n\r\nexport const useVaultStore = () => {\r\n const context = useContext(VaultStoreContext);\r\n if (!context) {\r\n throw new Error(\"useVaultStore must be used within VaultContextProvider\");\r\n }\r\n return context;\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { debounce } from \"lodash\";\r\nimport { actionTexts, countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport ContactPage from \"./contact\";\r\nimport OTPPage from \"./otp\";\r\nimport CreatePinPage from \"./createPin\";\r\nimport Success from \"../components/success\";\r\nimport AddCosignersPage from \"./addCosigners\";\r\nimport EnterPinPage from \"./enterPin\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst FTUPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n createPasskeyDomain?: string;\r\n getPasskeyDomain?: string;\r\n fontsLoaded?: boolean;\r\n popupView?: boolean;\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n chainId?: number;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n showLogoPage?: boolean;\r\n logoPageElement?: React.JSX.Element;\r\n logoTimeoutTime?: number;\r\n showStartupPage?: boolean;\r\n startupPageElement?: React.JSX.Element;\r\n enablePhone?: boolean;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n setIsLoading?: (isLoading: boolean) => void;\r\n setShowDashboard?: (showDashboard: boolean) => void;\r\n setShowResetPin?: (showResetPin: boolean) => void;\r\n setShowRemoveCosigner?: (showRemoveCosigner: boolean) => void;\r\n dashbordElement?: React.ComponentType<{\r\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n }>;\r\n rootTagId?: string;\r\n rootExpandedWidth?: string;\r\n rootExpandedHeight?: string;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n } = props?.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [showLogo, setShowLogo] = useState<boolean>(\r\n props.showLogoPage || false\r\n );\r\n const [allCountries, setAllCountries] = useState<any[]>([]);\r\n const [step, setStep] = useState<string>(\"2\");\r\n\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n const [showSuccessBtn, setShowSuccessBtn] = useState<boolean>(false);\r\n const [successBtnText, setSuccessBtnText] = useState<string>(\"\");\r\n const [successBtnNeutText, setSuccessBtnNeutText] = useState<string>(\"\");\r\n const [actionHeaderText, setActionHeaderText] = useState<string>(\"\");\r\n const [actionFooterText, setActionFooterText] = useState<string>(\"\");\r\n const [successBtnFunc, setSuccessBtnFunc] = useState<any>(null);\r\n const [successBtnNeutFunc, setSuccessBtnNeutFunc] = useState<any>(null);\r\n const [isExistingUser, setIsExistingUser] = useState<boolean>(false);\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n vaultData,\r\n chainId,\r\n vaultContract,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const initializeUserWalletAndContract = async () => {\r\n let lastPk: any;\r\n\r\n if (!isReactNative && chrome?.storage?.local) {\r\n lastPk = await new Promise((resolve) => {\r\n chrome.storage.local.get([\"lastPk\"], (result) => {\r\n resolve(result.lastPk);\r\n });\r\n });\r\n } else if (!isReactNative && localStorage) {\r\n lastPk = localStorage.getItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n lastPk = AsyncStorage.getItem(\"lastPk\");\r\n }\r\n\r\n const walletAndContractDetails = await initWalletAndContract(\r\n props.chainId,\r\n lastPk && lastPk?.length > 0 ? lastPk : undefined\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultData(walletAndContractDetails.vaultData);\r\n if (walletAndContractDetails.vaultContract?.contractAddress) {\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n } else {\r\n setVaultContract(undefined);\r\n }\r\n };\r\n if (!vaultContract?.contractAddress) {\r\n initializeUserWalletAndContract();\r\n }\r\n }, [vaultContract]);\r\n\r\n useEffect(() => {\r\n const handleLogoDisplay = debounce(() => {\r\n setShowLogo(false);\r\n }, props.logoTimeoutTime ?? 3000);\r\n handleLogoDisplay();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries: any = countriesDetails\r\n .map((cnt: any) => {\r\n if (!cnt) return undefined;\r\n return {\r\n name: cnt.name,\r\n countryName: cnt.name,\r\n officialName: cnt.name,\r\n currencySymbol: cnt.currency,\r\n currencyName: cnt.currency,\r\n officialCurrencySymbol: cnt.currency,\r\n countryCode: cnt.code,\r\n flag: cnt.flag,\r\n continent: cnt.continent,\r\n phone_code: cnt.phone_code,\r\n code: cnt.code,\r\n };\r\n })\r\n .filter(Boolean);\r\n setAllCountries(fmtCountries);\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n return (\r\n <ScrollView style={{ padding: 20, width: \"100%\", heigth: \"100%\" }}>\r\n {fontsLoaded && showLogo && props.logoPageElement && (\r\n <View>{props.logoPageElement}</View>\r\n )}\r\n {fontsLoaded && !showLogo && (\r\n <View style={{ width: \"100%\", heigth: \"100%\" }}>\r\n {/* Render steps */}\r\n {step === \"2\" && (\r\n <ContactPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setUserNumberFmt={setUserNumberFmt}\r\n userNumberFmt={userNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n {step === \"3\" && (\r\n <OTPPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n helperFunctions={props.helperFunctions}\r\n setIsExistingUser={setIsExistingUser}\r\n />\r\n )}\r\n\r\n {step === \"4\" && (\r\n <CreatePinPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setShowSuccessBtn={setShowSuccessBtn}\r\n setSuccessBtnText={setSuccessBtnText}\r\n setSuccessBtnNeutText={setSuccessBtnNeutText}\r\n setSuccessBtnFunc={setSuccessBtnFunc}\r\n setSuccessBtnNeutFunc={setSuccessBtnNeutFunc}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n action={props.action}\r\n vaultData={props.vaultData}\r\n txData={props.txData}\r\n setActionHeaderText={setActionHeaderText}\r\n setActionFooterText={setActionFooterText}\r\n helperFunctions={props.helperFunctions}\r\n isExistingUser={isExistingUser}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n createPasskeyDomain={props?.createPasskeyDomain}\r\n getPasskeyDomain={props?.getPasskeyDomain}\r\n />\r\n )}\r\n\r\n {step === \"5\" && (\r\n <Success\r\n platform={props.platform}\r\n setStep={setStep}\r\n stepToSet=\"6\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully created a new account.\"\r\n action={props.action}\r\n showButton={showSuccessBtn}\r\n buttonText={successBtnText}\r\n buttonNeutText={successBtnNeutText}\r\n buttonFunc={successBtnFunc}\r\n buttonNeutFunc={successBtnNeutFunc}\r\n actionHeaderText={actionHeaderText}\r\n actionFooterText={actionFooterText}\r\n />\r\n )}\r\n\r\n {step === \"6\" && (\r\n <AddCosignersPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n dashbordElement={props.dashbordElement}\r\n setShowDashboard={props.setShowDashboard}\r\n setShowResetPin={props.setShowResetPin}\r\n setShowRemoveCosigner={props.setShowRemoveCosigner}\r\n />\r\n )}\r\n\r\n {step === \"7\" && props.action === \"\" && (\r\n <Success\r\n platform={props.platform}\r\n action={props.action}\r\n setStep={setStep}\r\n stepToSet=\"8\"\r\n actionHeaderText=\"Successful\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n actionFooterText=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n showButton={props.dashbordElement ? true : false}\r\n buttonText={props.dashbordElement ? \"Go To Dashboard\" : \"\"}\r\n handleShowDashboard={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n buttonFunc={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n />\r\n )}\r\n\r\n {step === \"7\" && props.action !== \"\" && (\r\n <Success\r\n platform={props.platform}\r\n action={props.action}\r\n messageTosend={\r\n props.action === \"signRecovery\"\r\n ? {\r\n type: \"signRecovery\",\r\n value: {\r\n vaultData: props.vaultData,\r\n txData: { newUser: true, ...props.txData },\r\n chainId: chainId,\r\n },\r\n }\r\n : { type: \"closePopup\", key: \"\", value: \"\" }\r\n }\r\n actionHeaderText=\"Successful\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n actionFooterText=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n showButton={props.dashbordElement ? true : false}\r\n buttonText={props.dashbordElement ? \"Go To Dashboard\" : \"\"}\r\n handleShowDashboard={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n buttonFunc={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n />\r\n )}\r\n\r\n {step === \"8\" && props.dashbordElement && (\r\n <props.dashbordElement setIsLoading={props.setIsLoading} />\r\n )}\r\n\r\n {step === \"8\" && !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {step === \"0\" && (\r\n <EnterPinPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n vaultId={vaultData?.vaultId}\r\n setisOnboard={props.setisOnboard}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n actionText={actionTexts[\"getPk\"]}\r\n setIsLoading={props.setIsLoading}\r\n newChainId={Number(chainId || props.chainId)}\r\n action={\"getPk\"}\r\n reqVaultData={vaultData}\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(props.txData[ky]);\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n helperFunctions={props.helperFunctions}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n setShowDashboard={props.setShowDashboard}\r\n rootTagId={props.rootTagId}\r\n rootExpandedWidth={props.rootExpandedWidth}\r\n rootExpandedHeight={props.rootExpandedHeight}\r\n createPasskeyDomain={props?.createPasskeyDomain}\r\n getPasskeyDomain={props?.getPasskeyDomain}\r\n />\r\n )}\r\n </View>\r\n )}\r\n {!fontsLoaded && (\r\n <View style={{ padding: 20, width: \"100%\", heigth: \"100%\" }}>\r\n <Text>Loading Module Fonts...</Text>\r\n </View>\r\n )}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default FTUPage;\r\n","import {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport { allGoogleFontUrls, defaultChainId, imageAssets } from \"./constants\";\r\nimport { ChainConfig } from \"./config\";\r\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\r\nimport { sha256 } from \"@noble/hashes/sha256\";\r\nimport { randomBytes, utf8ToBytes, bytesToUtf8 } from \"@noble/hashes/utils\";\r\nimport { gcm } from \"@noble/ciphers/aes\";\r\nimport crypt from \"crypto-js\";\r\nimport { toast } from \"react-toastify\";\r\nimport React from \"react\";\r\nimport {\r\n base,\r\n baseSepolia,\r\n gnosis,\r\n mainnet,\r\n polygon,\r\n sepolia,\r\n} from \"viem/chains\";\r\nimport { http } from \"viem\";\r\nimport { computeNexusAccount } from \"../lib/biconomyRNFix\";\r\n\r\n/**\r\n *\r\n * @param document Any web page loaded in the browser / Dom tree\r\n */\r\nexport const loadAllGoogleFonts = (document: Document) => {\r\n const apiExists = document.querySelector(\r\n `link[href=\"https://fonts.googleapis.com\"]`\r\n );\r\n if (!apiExists) {\r\n const apiLink = document.createElement(\"link\");\r\n apiLink.rel = \"preconnect\";\r\n apiLink.href = \"https://fonts.googleapis.com\";\r\n document.head.appendChild(apiLink);\r\n }\r\n const staticExists = document.querySelector(\r\n `link[href=\"https://fonts.gstatic.com\"]`\r\n );\r\n if (!staticExists) {\r\n const staticLink = document.createElement(\"link\");\r\n staticLink.rel = \"preconnect\";\r\n staticLink.href = \"https://fonts.gstatic.com\";\r\n document.head.appendChild(staticLink);\r\n }\r\n allGoogleFontUrls.map((fontUrl) => {\r\n const fontExists = document.querySelector(`link[href=\"${fontUrl}\"]`);\r\n if (!fontExists) {\r\n const fontLink = document.createElement(\"link\");\r\n fontLink.rel = \"stylesheet\";\r\n fontLink.href = fontUrl;\r\n document.head.appendChild(fontLink);\r\n }\r\n });\r\n return true;\r\n};\r\n\r\n/**\r\n *\r\n * @param expoFont default export from expo-font for react-native\r\n */\r\nexport const loadAllGoogleFontsRN = async (expoFont: any) => {\r\n await expoFont?.loadAsync({\r\n Roboto: require(\"../assets/reactNativeFonts/Roboto-Regular.ttf\"),\r\n Manrope: require(\"../assets/reactNativeFonts/Manrope-Regular.ttf\"),\r\n Hind: require(\"../assets/reactNativeFonts/Hind-Regular.ttf\"),\r\n });\r\n return true;\r\n};\r\n\r\n/**\r\n * initialize user's wallet and vault contract using existing private key or create a new wallet for user\r\n * unsupported/invalid chainId passed will automatically use default supported chainId\r\n * @param chainId\r\n * @param privateKey\r\n *\r\n */\r\nexport const initWalletAndContract = async (\r\n chainId?: number,\r\n privateKey?: string\r\n) => {\r\n try {\r\n let sender: VerifiedWallet;\r\n //import existing wallet or create new one.\r\n if (privateKey) {\r\n sender = new VerifiedWallet(privateKey);\r\n } else {\r\n const mnemonics = VerifiedWallet.generateMnemonic();\r\n sender = VerifiedWallet.importWallet(mnemonics);\r\n }\r\n\r\n //initialize provider, signer, privatekey and vault contract\r\n const cntAddresses: any = contractAddress;\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n const pk = sender.privateKey;\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId]?.Custody);\r\n const _signer: any = signer;\r\n const chainToUse = [\r\n base,\r\n mainnet,\r\n gnosis,\r\n polygon,\r\n sepolia,\r\n baseSepolia,\r\n ].find((nt) => Number(nt?.id) === Number(_chainId));\r\n const address = await computeNexusAccount(chainToUse, http(), _signer);\r\n if (_chainId === 11155111) {\r\n console.log(\"address to send test ETH to: \", sender.address);\r\n }\r\n\r\n //valid return\r\n return {\r\n chainId: _chainId,\r\n address,\r\n pk,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData: null,\r\n };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\r\n \"Error while initializing user's wallet and contract: \",\r\n err\r\n );\r\n }\r\n //default return;\r\n return {\r\n chainId: null,\r\n address: null,\r\n pk: null,\r\n signer: null,\r\n provider: null,\r\n vaultContract: null,\r\n vaultData: null,\r\n };\r\n }\r\n};\r\n\r\nexport const hashTheString = (text: string): string => {\r\n const lower = text.toLowerCase();\r\n const hash = sha256(utf8ToBytes(lower));\r\n return (\r\n \"0x\" +\r\n Array.from(hash)\r\n .map((b) => b.toString(16).padStart(2, \"0\"))\r\n .join(\"\") //pure js for react native\r\n );\r\n};\r\n\r\nexport const hashTheBuffer = (buffer: ArrayBuffer | Uint8Array): string => {\r\n const bytes = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\r\n const hash = sha256(bytes);\r\n return (\r\n \"0x\" +\r\n Array.from(hash)\r\n .map((b) => b.toString(16).padStart(2, \"0\"))\r\n .join(\"\")\r\n );\r\n};\r\n\r\nexport const encryptString = (text: string, secretKey: string) => {\r\n const encryptedAES = crypt.AES.encrypt(text, secretKey);\r\n return encryptedAES.toString();\r\n};\r\n\r\nexport const decryptString = (encryptedText: string, secretKey: string) => {\r\n var decryptedBytes = crypt.AES.decrypt(encryptedText, secretKey);\r\n var decryptedText = decryptedBytes.toString(crypt.enc.Utf8);\r\n return decryptedText;\r\n};\r\n\r\nexport const getErrorToastContent = (title: string, content: string) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-error\">\r\n <img style={{ marginLeft: \"5px\" }} src={imageAssets.errorAlert} alt=\"\" />\r\n <div className=\"verified-custd-mdl-general-web-toast-error-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const getSuccessToastContent = (\r\n title: string,\r\n content: string,\r\n link: string\r\n) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-success\">\r\n <div className=\"verified-custd-mdl-general-web-toast-success-cont\">\r\n <img\r\n style={{ marginLeft: \"5px\" }}\r\n src={imageAssets.successAlert}\r\n alt=\"\"\r\n />\r\n <div className=\"verified-custd-mdl-general-web-toast-success-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n {link?.length > 0 && (\r\n <div className=\"verified-custd-mdl-general-web-toast-success-link\">\r\n <a\r\n className=\"verified-custd-mdl-general-web-toast-success-link-text\"\r\n href={link}\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n >\r\n Follow your transaction.\r\n </a>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const errorToast = (title: string, content: string) => {\r\n toast.dismiss();\r\n return toast.error(getErrorToastContent(title, content), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"#fef2f2\",\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n\r\nexport const successToast = (title: string, content: string, link: string) => {\r\n toast.dismiss();\r\n return toast.success(getSuccessToastContent(title, content, link), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"var(--Success-50, #F1F8ED)\",\r\n\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n\r\nexport const resolveGlobalStyleUnit = (\r\n isReactNative: boolean,\r\n unitValueString: string,\r\n baseRem = 16\r\n) => {\r\n if (!isReactNative) {\r\n return unitValueString;\r\n }\r\n const value = parseFloat(unitValueString);\r\n\r\n if (unitValueString.endsWith(\"rem\")) {\r\n return value * baseRem;\r\n } else if (unitValueString.endsWith(\"px\")) {\r\n return value; // treat px as dp\r\n } else {\r\n return value; // unitless, just parse\r\n }\r\n};\r\n\r\nconst hexToBytes = (hex: string) => {\r\n // Remove 0x prefix if present\r\n const cleanHex =\r\n hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\r\n\r\n if (cleanHex.length % 2 !== 0) {\r\n throw new Error(\"Invalid hex string: odd length\");\r\n }\r\n\r\n const byteLength = cleanHex.length / 2;\r\n const bytes = new Uint8Array(byteLength);\r\n for (let i = 0; i < byteLength; i++) {\r\n const byteHex = cleanHex.substr(i * 2, 2);\r\n bytes[i] = parseInt(byteHex, 16);\r\n }\r\n return bytes;\r\n};\r\n\r\nexport const publicKeyCredentialCreationOptions = (\r\n projectName: string,\r\n vaultId: string,\r\n hashedVaultId: string\r\n) => {\r\n const userId = hexToBytes(hashedVaultId);\r\n const credentials: any = {\r\n challenge: randomBytes(32),\r\n rp: {\r\n name: projectName,\r\n },\r\n user: {\r\n id: userId,\r\n name: vaultId,\r\n displayName: vaultId,\r\n },\r\n pubKeyCredParams: [\r\n { type: \"public-key\", alg: -7 }, // ES256\r\n { type: \"public-key\", alg: -257 }, // RS256\r\n ],\r\n authenticatorSelection: {\r\n userVerification: \"preferred\",\r\n residentKey: \"required\",\r\n },\r\n timeout: 60000,\r\n attestation: \"none\",\r\n };\r\n return credentials;\r\n};\r\n\r\nexport const base64ToArrayBuffer = (base64: any) => {\r\n const binary = atob(base64);\r\n const buffer = new ArrayBuffer(binary.length);\r\n const bytes = new Uint8Array(buffer);\r\n for (let i = 0; i < binary.length; i++) {\r\n bytes[i] = binary.charCodeAt(i);\r\n }\r\n return buffer;\r\n};\r\n\r\nexport const publicKeyCredentialRequestOptions = () => {\r\n const credential: any = {\r\n challenge: randomBytes(32),\r\n timeout: 60000,\r\n userVerification: \"preferred\",\r\n // allowCredentials: [\r\n // {\r\n // type: \"public-key\",\r\n // userHandle: userId,\r\n // },\r\n // ], //fetch all by default\r\n };\r\n\r\n return credential;\r\n};\r\n\r\n// Helpers for base64url encoding/decoding\r\nconst Uint8ArraytoBase64 = (buf: Uint8Array): string =>\r\n btoa(String.fromCharCode(...buf))\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\")\r\n .replace(/=+$/, \"\");\r\n\r\n// Base64url decode to Uint8Array\r\nconst Base64URLtoUint8Array = (base64url: string): Uint8Array => {\r\n const base64 =\r\n base64url.replace(/-/g, \"+\").replace(/_/g, \"/\") +\r\n \"===\".slice((base64url.length + 3) % 4);\r\n const binary = atob(base64);\r\n return new Uint8Array([...binary].map((char) => char.charCodeAt(0)));\r\n};\r\n\r\nexport const encryptWithPasskey = async (\r\n plaintext: string,\r\n rawId: ArrayBuffer | Uint8Array, // allow both ArrayBuffer or Uint8Array\r\n rawIdString: string\r\n): Promise<string> => {\r\n // Convert rawId to Uint8Array if needed\r\n const rawIdBytes =\r\n rawId instanceof Uint8Array ? rawId : new Uint8Array(rawId);\r\n\r\n // Generate random 8 bytes for salt nonce\r\n const randomBytes8 = randomBytes(8);\r\n const randomHex = Array.from(randomBytes8)\r\n .map((b) => b.toString(16).padStart(2, \"0\"))\r\n .join(\"\");\r\n\r\n // Hash rawIdString + randomHex to create salt string\r\n const saltString = hashTheString(`${rawIdString}:${randomHex}`);\r\n const salt = utf8ToBytes(saltString);\r\n\r\n // Generate random 12-byte IV (nonce) for AES-GCM\r\n const iv = randomBytes(12);\r\n\r\n // Derive a 256-bit key using PBKDF2 with SHA-256 and 300k iterations\r\n const key = pbkdf2(sha256, rawIdBytes, salt, { c: 300_000, dkLen: 32 });\r\n\r\n // Encrypt plaintext using AES-GCM (noble's gcm)\r\n const cipher = gcm(key, iv);\r\n const ciphertext = cipher.encrypt(utf8ToBytes(plaintext));\r\n\r\n // Return combined base64url(salt) + \".\" + base64url(iv) + \".\" + base64url(ciphertext)\r\n return [\r\n Uint8ArraytoBase64(salt),\r\n Uint8ArraytoBase64(iv),\r\n Uint8ArraytoBase64(ciphertext),\r\n ].join(\".\");\r\n};\r\n\r\nexport const decryptWithPasskey = async (\r\n encryptedString: string,\r\n rawId: ArrayBuffer | Uint8Array // allow both ArrayBuffer or Uint8Array\r\n): Promise<string> => {\r\n const [saltB64, ivB64, ciphertextB64] = encryptedString.split(\".\");\r\n if (!saltB64 || !ivB64 || !ciphertextB64) {\r\n throw new Error(\"Invalid encrypted data format\");\r\n }\r\n\r\n // Convert rawId to Uint8Array if needed\r\n const rawIdBytes =\r\n rawId instanceof Uint8Array ? rawId : new Uint8Array(rawId);\r\n\r\n const salt = Base64URLtoUint8Array(saltB64);\r\n const iv = Base64URLtoUint8Array(ivB64);\r\n const ciphertext = Base64URLtoUint8Array(ciphertextB64);\r\n\r\n // Derive the same key with PBKDF2 (300k iterations)\r\n const key = pbkdf2(sha256, rawIdBytes, salt, { c: 300_000, dkLen: 32 });\r\n\r\n // Decrypt ciphertext using AES-GCM\r\n const cipher = gcm(key, iv);\r\n\r\n try {\r\n const plaintextBytes = cipher.decrypt(ciphertext);\r\n return bytesToUtf8(plaintextBytes);\r\n } catch {\r\n throw new Error(\"Decryption failed: invalid key or corrupted data\");\r\n }\r\n};\r\n","import { imageAssets } from \"../utils/constants\";\r\n\r\nexport const ChainConfig: any = {\r\n 1: {\r\n chainId: `0x${Number(1).toString(16)}`,\r\n chainName: \"Ethereum\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://eth-mainnet.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://etherscan.io/\"],\r\n icon: imageAssets.ethereumIcon,\r\n },\r\n\r\n 8453: {\r\n chainId: `0x${Number(8453).toString(16)}`,\r\n chainName: \"Base Mainnet\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://base-mainnet.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://basescan.org/\"],\r\n Icon: imageAssets.baseIcon,\r\n },\r\n\r\n 100: {\r\n chainId: `0x${Number(100).toString(16)}`,\r\n chainName: \"Gnosis\",\r\n nativeCurrency: {\r\n name: \"XDAI\",\r\n symbol: \"XDAI\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://rpc.gnosischain.com/\"],\r\n blockExplorerUrls: [\"https://gnosisscan.io/\"],\r\n icon: imageAssets.gnosisIcon,\r\n },\r\n\r\n 11155111: {\r\n chainId: `0x${Number(11155111).toString(16)}`,\r\n chainName: \"Sepolia Test Network\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://eth-sepolia.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://sepolia.etherscan.io/\"],\r\n icon: imageAssets.ethereumIcon,\r\n custodyContractBlock: 9236510,\r\n },\r\n\r\n 84532: {\r\n chainId: `0x${Number(84532).toString(16)}`,\r\n chainName: \"Base Sepolia\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://sepolia.base.org\"],\r\n blockExplorerUrls: [\"https://sepolia.basescan.org/\"],\r\n icon: imageAssets.baseIcon,\r\n },\r\n};\r\n","import {\r\n createPublicClient,\r\n encodeAbiParameters,\r\n encodeFunctionData,\r\n pad,\r\n toHex,\r\n zeroAddress,\r\n zeroHash,\r\n} from \"viem\";\r\nimport BOOSTRAP from \"./abi/boostrap.json\";\r\nimport FACTORY from \"./abi/factory.json\";\r\n\r\nconst NEXUS_ACCOUNT_FACTORY_ADDRESS =\r\n \"0x000000001D1D5004a02bAfAb9de2D6CE5b7B13de\";\r\nconst NEXUS_BOOTSTRAP_ADDRESS = \"0x00000000D3254452a909E4eeD47455Af7E27C289\";\r\nconst DUMMY_SIGNATURE =\r\n \"0x81d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b\";\r\nconst index = 0n;\r\n\r\nconst toInitData = (mod: any) => {\r\n const module = mod.module || mod.address;\r\n const data = mod.initData || mod.data;\r\n if (!module || !data) {\r\n throw new Error(\"Module or data is missing\");\r\n }\r\n return { module, data };\r\n};\r\n\r\nconst getInitData = (params: any) =>\r\n encodeAbiParameters(\r\n [\r\n { name: \"bootstrap\", type: \"address\" },\r\n { name: \"initData\", type: \"bytes\" },\r\n ],\r\n [\r\n params.bootStrapAddress,\r\n encodeFunctionData({\r\n abi: BOOSTRAP.abi,\r\n functionName: \"initNexusWithDefaultValidatorAndOtherModulesNoRegistry\",\r\n args: [\r\n params.defaultValidator.data,\r\n params.validators,\r\n params.executors,\r\n params.hook,\r\n params.fallbacks,\r\n params.prevalidationHooks,\r\n ],\r\n }),\r\n ]\r\n );\r\n\r\nconst toValidator = (parameters: any) => {\r\n const {\r\n deInitData = \"0x\",\r\n type = \"validator\",\r\n signer,\r\n data = \"0x\",\r\n module,\r\n ...rest\r\n } = parameters;\r\n return {\r\n deInitData,\r\n data,\r\n module,\r\n address: module,\r\n signer,\r\n type,\r\n getStubSignature: async () => DUMMY_SIGNATURE,\r\n signUserOpHash: async (userOpHash: any) =>\r\n await signer.signMessage({ message: { raw: userOpHash } }),\r\n signMessage: async (message: any) => await signer.signMessage({ message }),\r\n ...rest,\r\n };\r\n};\r\n\r\nconst toDefaultModule = (parameters: any) =>\r\n toValidator({\r\n initData: parameters.signer.address,\r\n data: parameters.signer.address,\r\n deInitData: \"0x\",\r\n ...parameters,\r\n address: zeroAddress,\r\n module: zeroAddress,\r\n type: \"validator\",\r\n getStubSignature: async () => DUMMY_SIGNATURE,\r\n });\r\n\r\nconst toEmptyHook = () => ({\r\n module: zeroAddress,\r\n data: zeroHash,\r\n});\r\n\r\nexport const computeNexusAccount = async (\r\n chain: any,\r\n transport: any,\r\n signer: any\r\n) => {\r\n const publicClient = createPublicClient({ chain, transport });\r\n\r\n const defaultValidator = toDefaultModule({ signer });\r\n const validators = [];\r\n const executors = [];\r\n const hook = toEmptyHook();\r\n const fallbacks = [];\r\n const registryAddress = zeroAddress;\r\n const factoryAddress = NEXUS_ACCOUNT_FACTORY_ADDRESS;\r\n const bootStrapAddress = NEXUS_BOOTSTRAP_ADDRESS;\r\n const prevalidationHooks = [];\r\n\r\n const initData = getInitData({\r\n defaultValidator: toInitData(defaultValidator),\r\n validators: validators.map(toInitData),\r\n executors: executors.map(toInitData),\r\n hook: toInitData(hook),\r\n fallbacks: fallbacks.map(toInitData),\r\n registryAddress,\r\n bootStrapAddress,\r\n prevalidationHooks,\r\n });\r\n\r\n const salt = pad(toHex(index), { size: 32 });\r\n const nexusAccount: any = await publicClient.readContract({\r\n address: factoryAddress,\r\n abi: FACTORY.abi,\r\n functionName: \"computeAccountAddress\",\r\n args: [initData, salt],\r\n });\r\n if (nexusAccount?.toLowerCase() !== zeroAddress?.toLowerCase()) {\r\n return nexusAccount;\r\n }\r\n return;\r\n};\r\n","{\r\n \"abi\": [\r\n {\r\n \"type\": \"constructor\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"defaultValidator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"stateMutability\": \"nonpayable\"\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"CanNotRemoveLastValidator\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"DefaultValidatorAlreadyInstalled\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"EmergencyUninstallSigError\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"EnableModeSigError\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackAlreadyInstalledForSelector\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackCallTypeInvalid\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackHandlerUninstallFailed\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackNotInstalledForSelector\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackSelectorForbidden\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"HookAlreadyInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"currentHook\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"HookPostCheckFailed\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidInput\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidModule\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidModuleTypeId\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidNonce\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_AlreadyInitialized\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_EntryAlreadyInList\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"entry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_InvalidEntry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"entry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_InvalidPage\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"MismatchModuleTypeId\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"MissingFallbackHandler\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ModuleAddressCanNotBeZero\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ModuleAlreadyInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ModuleNotInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"NoValidatorInstalled\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"PrevalidationHookAlreadyInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"currentPreValidationHook\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"UnauthorizedOperation\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"operator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"UnsupportedCallType\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"callType\",\r\n \"type\": \"bytes1\",\r\n \"internalType\": \"CallType\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ValidatorNotInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"ERC7484RegistryConfigured\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"indexed\": true,\r\n \"internalType\": \"contract IERC7484\"\r\n }\r\n ],\r\n \"anonymous\": false\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"ModuleInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"indexed\": false,\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"indexed\": false,\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"anonymous\": false\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"ModuleUninstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"indexed\": false,\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"indexed\": false,\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"anonymous\": false\r\n },\r\n {\r\n \"type\": \"fallback\",\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"eip712Domain\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"name\": \"fields\",\r\n \"type\": \"bytes1\",\r\n \"internalType\": \"bytes1\"\r\n },\r\n {\r\n \"name\": \"name\",\r\n \"type\": \"string\",\r\n \"internalType\": \"string\"\r\n },\r\n {\r\n \"name\": \"version\",\r\n \"type\": \"string\",\r\n \"internalType\": \"string\"\r\n },\r\n {\r\n \"name\": \"chainId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"verifyingContract\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\",\r\n \"internalType\": \"bytes32\"\r\n },\r\n {\r\n \"name\": \"extensions\",\r\n \"type\": \"uint256[]\",\r\n \"internalType\": \"uint256[]\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getActiveHook\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getExecutorsPaginated\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"cursor\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"size\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"array\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"next\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getFallbackHandlerBySelector\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"\",\r\n \"type\": \"bytes1\",\r\n \"internalType\": \"CallType\"\r\n },\r\n {\r\n \"name\": \"\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getRegistry\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"name\": \"\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getValidatorsPaginated\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"cursor\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"size\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"array\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"next\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexus\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusScoped\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusScopedNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithDefaultValidator\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithDefaultValidatorAndOtherModules\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"defaultValidatorInitData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithDefaultValidatorAndOtherModulesNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"defaultValidatorInitData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n },\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithSingleValidator\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithSingleValidatorNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"installModule\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"isModuleInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"additionalContext\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"installed\",\r\n \"type\": \"bool\",\r\n \"internalType\": \"bool\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"uninstallModule\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"deInitData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"receive\",\r\n \"stateMutability\": \"payable\"\r\n }\r\n ]\r\n}","{\r\n \"abi\": [\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"implementation_\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"owner_\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"nonpayable\",\r\n \"type\": \"constructor\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"account\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"AccountAlreadyDeployed\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"AlreadyInitialized\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"ImplementationAddressCanNotBeZero\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"InvalidEntryPointAddress\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"NewOwnerIsZeroAddress\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"NoHandoverRequest\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"Unauthorized\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"ZeroAddressNotAllowed\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"account\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"bytes\",\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\"\r\n },\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"bytes32\",\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\"\r\n }\r\n ],\r\n \"name\": \"AccountCreated\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"OwnershipHandoverCanceled\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"OwnershipHandoverRequested\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"oldOwner\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"newOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"OwnershipTransferred\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"ACCOUNT_IMPLEMENTATION\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"epAddress\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"internalType\": \"uint32\",\r\n \"name\": \"unstakeDelaySec\",\r\n \"type\": \"uint32\"\r\n }\r\n ],\r\n \"name\": \"addStake\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"cancelOwnershipHandover\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"completeOwnershipHandover\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"bytes\",\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\"\r\n },\r\n {\r\n \"internalType\": \"bytes32\",\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\"\r\n }\r\n ],\r\n \"name\": \"computeAccountAddress\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address payable\",\r\n \"name\": \"expectedAddress\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"bytes\",\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\"\r\n },\r\n {\r\n \"internalType\": \"bytes32\",\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\"\r\n }\r\n ],\r\n \"name\": \"createAccount\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address payable\",\r\n \"name\": \"\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"owner\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"result\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"ownershipHandoverExpiresAt\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"uint256\",\r\n \"name\": \"result\",\r\n \"type\": \"uint256\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"renounceOwnership\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"requestOwnershipHandover\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"newOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"transferOwnership\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"epAddress\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"unlockStake\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"nonpayable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"epAddress\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"internalType\": \"address payable\",\r\n \"name\": \"withdrawAddress\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"withdrawStake\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"nonpayable\",\r\n \"type\": \"function\"\r\n }\r\n ]\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n errorToast,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport { TermsAndConditionsOverlay } from \"../components/overlays\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst ContactPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n userNumberFmt: string;\r\n setUserEmail: (email: string) => void;\r\n userEmail: string;\r\n setSelectedCountry: (country: {\r\n name: string;\r\n area: string;\r\n flag: string;\r\n }) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n noContract?: boolean;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [userNumber, setUserNumber] = useState(\"\");\r\n const [userInput, setUserInput] = useState(\"\");\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [sendOtpErrorText, setSendOtpErrorText] = useState(\"\");\r\n\r\n const [buttonActive, setButtonActive] = useState(false);\r\n const { pk, vaultContract, address } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n const handleButtonDisplay = () => {\r\n if (props.selectedCountry.area && userNumber.length === 10) {\r\n setSendOtpErrorText(\"\");\r\n setButtonActive(true);\r\n } else if (\r\n props.userEmail?.length > 0 &&\r\n isNaN(Number(props.userEmail)) &&\r\n props.userEmail.includes(\"@\")\r\n ) {\r\n setSendOtpErrorText(\"\");\r\n setButtonActive(true);\r\n } else {\r\n setSendOtpErrorText(\"\");\r\n setButtonActive(false);\r\n }\r\n };\r\n\r\n const handleSendOTP = async () => {\r\n if (props.userEmail === \"\" && userNumber === \"\") {\r\n setSendOtpErrorText(\"Invalid email or phone number. Try again later\");\r\n return;\r\n }\r\n if (!props.helperFunctions) {\r\n setSendOtpErrorText(\"No Helper Functions provided.\");\r\n return;\r\n }\r\n\r\n if (\r\n props.userEmail?.length > 0 &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(props.userEmail)\r\n ) {\r\n setSendOtpErrorText(\"Invalid email format.\");\r\n return;\r\n }\r\n\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${userNumber}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (\r\n (vaultId && channel && pk && vaultContract) ||\r\n (vaultId && channel && props.noContract)\r\n ) {\r\n props.setIsLoading(true);\r\n try {\r\n const res = await props.helperFunctions.sendOTPVerification(\r\n address,\r\n channel,\r\n vaultId\r\n );\r\n props.setIsLoading(false);\r\n if (res) {\r\n setSendOtpErrorText(\"\");\r\n props.setStep(\"3\");\r\n } else {\r\n setSendOtpErrorText(\r\n channel === \"email\"\r\n ? \"Error sending OTP to email. Try again.\"\r\n : \"Error sending OTP to phone. Try again.\"\r\n );\r\n errorToast(\r\n \"OTP Error\",\r\n channel === \"email\"\r\n ? \"Please enter a valid email.\"\r\n : \"Please enter a valid phone number.\"\r\n );\r\n }\r\n } catch (err) {\r\n props.setIsLoading(false);\r\n setSendOtpErrorText(\"Unexpected error. Try again.\");\r\n }\r\n } else {\r\n if (!props.noContract) {\r\n setSendOtpErrorText(\"Network error. Check your internet connection.\");\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <ScrollView style={{ width: \"100%\", height: \"100%\" }}>\r\n {fontsLoaded && (\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupLanguage } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupContact } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"0\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {props.enablePhone\r\n ? \"Enter your phone number\"\r\n : \"Enter your email address\"}\r\n </Text>\r\n\r\n {props.enablePhone && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactInput }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactContentContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-content-container\"\r\n >\r\n <TouchableOpacity\r\n onPress={() => setSearchActive(!searchActive)}\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactFirstSection }\r\n : {}\r\n }\r\n >\r\n <Image\r\n source={{ uri: props.selectedCountry.flag }}\r\n alt=\"Country Flag\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSelectionIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-selection-icon\"\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSelectionText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {props.selectedCountry.area}\r\n </Text>\r\n <Image\r\n alt=\"Dropdown\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactDropdown }\r\n : {}\r\n }\r\n source={\r\n searchActive\r\n ? { uri: imageAssets.arrowUp }\r\n : { uri: imageAssets.arrowDown }\r\n }\r\n />\r\n </TouchableOpacity>\r\n\r\n <TextInput\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactSecondSection }\r\n : {}\r\n }\r\n placeholder=\"Enter your phone number\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n value={props.userNumberFmt}\r\n keyboardType=\"numeric\"\r\n onChangeText={(text: string) => {\r\n const numericInput = text.replace(/\\D/g, \"\");\r\n setUserInput(text);\r\n setUserNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (let i = 0; i < numericInput?.length; i++) {\r\n formattedNumber += numericInput[i];\r\n if (\r\n (i + 1) % 5 === 0 &&\r\n i + 1 < numericInput?.length\r\n ) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n props.setUserNumberFmt(formattedNumber);\r\n handleButtonDisplay();\r\n }}\r\n />\r\n </View>\r\n\r\n {searchActive && (\r\n <SearchBox\r\n platform={props.platform}\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={props.setSelectedCountry}\r\n selected={props.selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight=\"300\"\r\n contentbottomMargin=\"300\"\r\n />\r\n )}\r\n\r\n {userNumber.length !== 10 &&\r\n userInput.length > 10 &&\r\n !sendOtpErrorText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlInputErrorText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n Invalid input, please check your phone number\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n {!searchActive && (\r\n <React.Fragment>\r\n {props.enablePhone && (\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-amount-info-separator\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPPaymentPortalAmountInfoSeparator,\r\n }\r\n : {}\r\n }\r\n >\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-line\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlPPPaymentPortalLine }\r\n : {}\r\n }\r\n ></View>\r\n <Text\r\n className=\"verified-custd-mdl-p-payment-portal-separator-text\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPaymentPortalSeparatorText,\r\n }\r\n : {}\r\n }\r\n >\r\n OR\r\n </Text>\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-line\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlPPPaymentPortalLine }\r\n : {}\r\n }\r\n ></View>\r\n </View>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactInput }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <TextInput\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactSecondSection }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter your email address\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n value={props.userEmail}\r\n onChangeText={(text: string) => {\r\n props.setUserEmail(text);\r\n props.setUserNumberFmt(\"\");\r\n setUserNumber(\"\");\r\n setUserInput(\"\");\r\n handleButtonDisplay();\r\n }}\r\n />\r\n {sendOtpErrorText && props.userEmail.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlInputErrorText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {sendOtpErrorText}\r\n </Text>\r\n )}\r\n </View>\r\n </React.Fragment>\r\n )}\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: \"80px\" }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <TermsAndConditionsOverlay platform={props.platform} />\r\n <TouchableOpacity\r\n style={\r\n isReactNative && buttonActive\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive }\r\n : isReactNative && !buttonActive\r\n ? { ...styles.verifiedCustdMdlStartupButton }\r\n : {}\r\n }\r\n className={\r\n buttonActive\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={handleSendOTP}\r\n >\r\n <Text>Get OTP</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default ContactPage;\r\n","import React from \"react\";\r\n\r\nconst PageSlider = (props: {\r\n sliderCount: number[];\r\n currentSlider: string;\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const current = Number(props.currentSlider);\r\n const total = props.sliderCount?.length || 0;\r\n const widthPercent = total > 0 ? 100 / total : 0;\r\n\r\n return (\r\n <View\r\n className=\"verified-custd-mdl-startup-slider\"\r\n style={{ flexDirection: \"row\", height: 4, overflow: \"hidden\" }}\r\n >\r\n {props.sliderCount?.map((_, idx) => {\r\n const isActive = idx <= current;\r\n return (\r\n <View\r\n key={idx}\r\n className={\r\n isActive\r\n ? \"verified-custd-mdl-startup-slider-line-active\"\r\n : \"verified-custd-mdl-startup-slider-line\"\r\n }\r\n style={\r\n isReactNative && isActive\r\n ? {\r\n ...styles.verifiedCustdMdlStartupSliderLineActive,\r\n width: `${widthPercent}%`,\r\n }\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupSliderLine,\r\n width: `${widthPercent}%`,\r\n }\r\n : !isReactNative && isActive\r\n ? {\r\n width: `${widthPercent}%`,\r\n }\r\n : { width: `${widthPercent}%` }\r\n }\r\n />\r\n );\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nexport default PageSlider;\r\n","import React, { useState } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst SearchBox = (props: any) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [newSearchContent, setNewSearchContent] = useState(null);\r\n\r\n const handleSearch = (value: string) => {\r\n if (value === \"\") {\r\n setNewSearchContent(null);\r\n return;\r\n }\r\n\r\n const filtered = props.searchContent.filter((src: any) => {\r\n const name = src?.name?.toLowerCase();\r\n const input = value.toLowerCase();\r\n\r\n if (name?.includes(input)) {\r\n src.searched = input;\r\n src.nameArray = src.name.split(\"\");\r\n return src;\r\n }\r\n });\r\n\r\n setNewSearchContent(filtered);\r\n props.handleButtonDisplay();\r\n };\r\n\r\n const handleSelect = (src: any, idx: number) => {\r\n if (props.type === \"area-code\") {\r\n props.setSelected({\r\n area: src.phone_code,\r\n flag: src.flag,\r\n name: src.name,\r\n });\r\n } else if (props.type === \"language\") {\r\n props.setSelected(src.name);\r\n }\r\n\r\n if (props.setSearchActive) {\r\n props.setSearchActive(false);\r\n }\r\n\r\n props.handleButtonDisplay();\r\n };\r\n\r\n const renderTextHighlight = (array: string[], search: string) =>\r\n array.map((char, idx) => {\r\n const isHighlighted = search.includes(char.toLowerCase());\r\n return (\r\n <Text\r\n key={idx}\r\n style={isHighlighted ? styles.boldText : styles.fadedText}\r\n >\r\n {char}\r\n </Text>\r\n );\r\n });\r\n\r\n const renderResults = (data: any[], isFiltered: boolean = false) => {\r\n return data.map((src, idx) => {\r\n const isActive = !isReactNative\r\n ? window?.location?.search === `?${idx}`\r\n : false;\r\n const isSelected = props.selected && props.selected.length > 0;\r\n\r\n const contentContainerClass =\r\n props.type === \"language\" && isActive\r\n ? \"verified-custd-mdl-ms-search-content-active\"\r\n : \"verified-custd-mdl-ms-search-content\";\r\n\r\n return (\r\n <TouchableOpacity\r\n key={idx}\r\n className={contentContainerClass}\r\n style={styles.resultItem}\r\n onPress={() => handleSelect(src, idx)}\r\n >\r\n <View style={styles.resultInner}>\r\n <Image\r\n source={{ uri: props.type === \"language\" ? src.icon : src.flag }}\r\n alt=\"Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n style={styles.icon}\r\n />\r\n\r\n <Text\r\n className=\"verified-custd-mdl-ms-search-content-text\"\r\n style={styles.resultText}\r\n >\r\n {src.nameArray && src.searched\r\n ? renderTextHighlight(src.nameArray, src.searched)\r\n : src.name}\r\n {props.type === \"language\" && src.label && (\r\n <Text\r\n style={\r\n src.searched?.includes(src.label.toLowerCase())\r\n ? {}\r\n : styles.fadedText\r\n }\r\n >\r\n {` (${src.label})`}\r\n </Text>\r\n )}\r\n </Text>\r\n </View>\r\n\r\n {props.type === \"language\" && isSelected && isActive && (\r\n <Image\r\n source={{ uri: imageAssets.circleClicked }}\r\n alt=\"Clicked\"\r\n style={styles.selectedIcon}\r\n />\r\n )}\r\n </TouchableOpacity>\r\n );\r\n });\r\n };\r\n\r\n return (\r\n <View\r\n className=\"verified-custd-mdl-startup-language-content-container\"\r\n style={styles.container}\r\n >\r\n <View className=\"verified-custd-mdl-st-language-content\">\r\n {props.headerText && (\r\n <Text\r\n className=\"verified-custd-mdl-st-language-text\"\r\n style={styles.headerText}\r\n >\r\n {props.headerText}\r\n </Text>\r\n )}\r\n\r\n <View className=\"verified-custd-mdl-mobille-startup-search-box-container\">\r\n <View\r\n className=\"verified-custd-mdl-mobile-startup-search-box\"\r\n style={styles.searchBox}\r\n >\r\n <Image\r\n source={{ uri: imageAssets.search }}\r\n alt=\"Search\"\r\n className=\"verified-custd-mdl-mobile-search-icon\"\r\n style={styles.searchIcon}\r\n />\r\n <TextInput\r\n placeholder=\"Search\"\r\n className=\"verified-custd-mdl-ms-search-box-content\"\r\n style={styles.input}\r\n onChangeText={handleSearch}\r\n onFocus={() => props.type === \"language\" && props.setSelected(\"\")}\r\n />\r\n </View>\r\n\r\n <ScrollView\r\n className=\"verified-custd-mdl-mobile-startup-search-content\"\r\n style={{ maxHeight: props.contentMaxHeight || 300 }}\r\n >\r\n <View className=\"verified-custd-mdl-ms-search-content-container\">\r\n {(newSearchContent || props.searchContent)?.length > 0 &&\r\n renderResults(newSearchContent || props.searchContent)}\r\n </View>\r\n </ScrollView>\r\n </View>\r\n </View>\r\n </View>\r\n );\r\n};\r\n\r\n// const styles = StyleSheet?.create({\r\n// container: {\r\n// padding: 8,\r\n// },\r\n// headerText: {\r\n// fontSize: 14,\r\n// marginBottom: 8,\r\n// },\r\n// searchBox: {\r\n// flexDirection: \"row\",\r\n// alignItems: \"center\",\r\n// borderColor: \"#CCC\",\r\n// borderWidth: 1,\r\n// borderRadius: 6,\r\n// padding: 6,\r\n// marginBottom: 12,\r\n// },\r\n// searchIcon: {\r\n// width: 18,\r\n// height: 18,\r\n// marginRight: 6,\r\n// },\r\n// input: {\r\n// flex: 1,\r\n// fontSize: 14,\r\n// borderWidth: 0,\r\n// outlineStyle: \"none\",\r\n// },\r\n// resultItem: {\r\n// paddingVertical: 8,\r\n// paddingHorizontal: 10,\r\n// borderBottomWidth: 1,\r\n// borderBottomColor: \"#eee\",\r\n// flexDirection: \"row\",\r\n// alignItems: \"center\",\r\n// justifyContent: \"space-between\",\r\n// },\r\n// resultInner: {\r\n// flexDirection: \"row\",\r\n// alignItems: \"center\",\r\n// },\r\n// icon: {\r\n// width: 20,\r\n// height: 20,\r\n// marginRight: 10,\r\n// },\r\n// resultText: {\r\n// fontSize: 14,\r\n// flexWrap: \"wrap\",\r\n// },\r\n// fadedText: {\r\n// color: \"#B6B7C3\",\r\n// },\r\n// boldText: {\r\n// color: \"#000\",\r\n// },\r\n// selectedIcon: {\r\n// width: 16,\r\n// height: 16,\r\n// },\r\n// });\r\n\r\nexport default SearchBox;\r\n","import React from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { resolveGlobalStyleUnit } from \"../utils/helpers\";\r\n\r\nexport const TermsAndConditionsOverlay = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n return (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n By proceeding, you agree with Verified Wallet{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n color: \"#603FF4\",\r\n cursor: \"pointer\",\r\n }\r\n : { color: \"#603FF4\", cursor: \"pointer\" }\r\n }\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n T&C\r\n </Text>{\" \"}\r\n and{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n color: \"#603FF4\",\r\n cursor: \"pointer\",\r\n }\r\n : { color: \"#603FF4\", cursor: \"pointer\" }\r\n }\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n Privacy Policy.\r\n </Text>\r\n </Text>\r\n );\r\n};\r\n\r\nexport const LogoutOverlay = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n setIsLoading: (isLoading: boolean) => void;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const handleLogout = async () => {\r\n props.setIsLoading(true);\r\n try {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (!isReactNative && !chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n localStorage.removeItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n await AsyncStorage.removeItem(\"lastPk\");\r\n }\r\n\r\n if (props.setisOnboard) {\r\n props.setisOnboard(false);\r\n }\r\n } finally {\r\n props.setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <Text\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n fontSize: resolveGlobalStyleUnit(isReactNative, \"0.7rem\"),\r\n }\r\n : { fontSize: resolveGlobalStyleUnit(isReactNative, \"0.7rem\") }\r\n }\r\n >\r\n Want to access a different account? Click{\" \"}\r\n <Text\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n color: \"#603FF4\",\r\n cursor: \"pointer\",\r\n }\r\n : { color: \"#603FF4\", cursor: \"pointer\" }\r\n }\r\n onPress={handleLogout}\r\n >\r\n Logout\r\n </Text>{\" \"}\r\n to logout and login/create another account\r\n </Text>\r\n );\r\n};\r\n\r\nexport const PrivacyOverlay = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n return (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPrivacy,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-privacy\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.privacyTip }}\r\n alt=\"Privacy Icon\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPrivacyIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-privacy-icon\"\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPrivacyText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-privacy-text\"\r\n >\r\n Trusted by 10M+ Investors globally\r\n </Text>\r\n </View>\r\n );\r\n};\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n errorToast,\r\n hashTheString,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { checkIsExistingUser } from \"../services/contracts\";\r\n\r\nconst OTPPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n setUserEmail: (email: string) => void;\r\n setIsExistingUser?: (isExistingUser: boolean) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n userNumberFmt: string;\r\n userEmail: string;\r\n noContract?: boolean;\r\n helperFunctions?: any;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const inputsRef = useRef<Array<any>>([]);\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [countdown, setCountdown] = useState(60);\r\n const [otp, setOtp] = useState([\"\", \"\", \"\", \"\"]);\r\n const [otpIncorrect, setOtpIncorrect] = useState(false);\r\n const [otherErrorText, setOtherErrorText] = useState(\"\");\r\n\r\n const { pk, vaultContract, address } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (countdown === 0) return;\r\n const timer = setInterval(() => setCountdown((c) => c - 1), 1000);\r\n return () => clearInterval(timer);\r\n }, [countdown]);\r\n\r\n const handleTextChange = (text: string, idx: number) => {\r\n if (text?.length > 1) {\r\n // Manually capture Paste\r\n const paste = text.replace(/\\D/g, \"\");\r\n const newOtp = [...otp];\r\n let pasteIndex = 0;\r\n\r\n for (let i = idx; i < otp.length && pasteIndex < paste.length; i++) {\r\n newOtp[i] = paste[pasteIndex];\r\n pasteIndex++;\r\n }\r\n setOtp(newOtp);\r\n\r\n // Focus next empty input if any\r\n const nextIndex = idx + paste.length;\r\n if (nextIndex < otp.length && inputsRef.current[nextIndex]) {\r\n inputsRef.current[nextIndex].focus();\r\n }\r\n setOtpIncorrect(false);\r\n } else {\r\n // Normal input\r\n const clean = text.replace(/\\D/g, \"\");\r\n const newOtp = [...otp];\r\n newOtp[idx] = clean;\r\n setOtp(newOtp);\r\n\r\n // Move focus to next input if available\r\n if (clean && inputsRef.current[idx + 1]) {\r\n inputsRef.current[idx + 1].focus();\r\n }\r\n setOtpIncorrect(false);\r\n }\r\n };\r\n\r\n const handleKeyPress = (_: any, idx: number, e: any) => {\r\n const key = e.nativeEvent.key;\r\n\r\n if (\r\n key === \"Backspace\" &&\r\n !otp[idx] &&\r\n idx > 0 &&\r\n inputsRef.current[idx - 1]\r\n ) {\r\n inputsRef.current[idx - 1].focus();\r\n }\r\n };\r\n\r\n const isFilled = otp.every((d) => d.length > 0);\r\n\r\n const getVaultId = () =>\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n\r\n const handleVerifyOtp = async () => {\r\n if (!isFilled || !props.helperFunctions) {\r\n setOtpIncorrect(true);\r\n setOtherErrorText(\"Please enter the complete OTP.\");\r\n return;\r\n }\r\n const vaultId = getVaultId();\r\n const fullOtp = otp.join(\"\");\r\n if ((!props.noContract && !pk) || (!props.noContract && !vaultContract))\r\n return;\r\n props.setIsLoading(true);\r\n try {\r\n const valid = await props.helperFunctions.checkOTPVerification(\r\n address,\r\n vaultId,\r\n fullOtp\r\n );\r\n\r\n if (!valid) {\r\n props.setIsLoading(false);\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n const hashed = hashTheString(vaultId);\r\n let exists = false;\r\n if (!props.noContract && vaultContract) {\r\n exists = await checkIsExistingUser(vaultContract, hashed);\r\n if (exists === null) {\r\n props.setIsLoading(false);\r\n setOtherErrorText(\"Unexpected error. Try again later.\");\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n }\r\n\r\n props.setIsExistingUser?.(exists);\r\n props.setIsLoading(false);\r\n props.setStep(\"4\");\r\n } catch (err: any) {\r\n props.setIsLoading(false);\r\n setOtherErrorText(\"Error verifying OTP. Try again.\");\r\n setOtpIncorrect(true);\r\n console.error(\"error: \", err);\r\n }\r\n };\r\n\r\n const handleResend = async () => {\r\n if (!props.helperFunctions) {\r\n setOtherErrorText(\"Helper functions missing.\");\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n const vaultId = getVaultId();\r\n const channel = props.userEmail ? \"email\" : \"sms\";\r\n props.setIsLoading(true);\r\n const res = await props.helperFunctions.sendOTPVerification(\r\n address,\r\n channel,\r\n vaultId\r\n );\r\n props.setIsLoading(false);\r\n if (res) {\r\n setOtp([\"\", \"\", \"\", \"\"]);\r\n setCountdown(60);\r\n setOtpIncorrect(false);\r\n setOtherErrorText(\"\");\r\n } else {\r\n errorToast(\"OTP resend failed\", \"Please try again later.\");\r\n }\r\n };\r\n\r\n return (\r\n <ScrollView>\r\n {fontsLoaded && (\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupLanguage } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupContact } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"0\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n Enter OTP\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpHeaderText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Enter{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n color: \"#0C0C0E\",\r\n }\r\n : { color: \"#0C0C0E\" }\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n 4-Digits OTP (One Time Password)\r\n </Text>{\" \"}\r\n sent to your{\" \"}\r\n {props.userNumberFmt ? \"phone number\" : \"email address\"}:\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpFooterText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {props.userNumberFmt && (\r\n <React.Fragment>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >{`(+${props.selectedCountry.area}) `}</Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {props.userNumberFmt.split(\" \")[0]}{\" \"}\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {props.userNumberFmt.split(\" \")[1]}\r\n </Text>\r\n </React.Fragment>\r\n )}\r\n {props.userEmail && <Text>{props.userEmail}</Text>}\r\n </Text>\r\n <TouchableOpacity\r\n style={{ background: \"transparent\", width: 20, height: 20 }}\r\n onPress={() => {\r\n props.setUserNumberFmt(\"\");\r\n props.setUserEmail(\"\");\r\n props.setStep(\"2\");\r\n }}\r\n >\r\n <Image\r\n source={{ uri: imageAssets.editBlue }}\r\n alt=\"Edit\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStOtpIcon,\r\n width: 20,\r\n height: 20,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-otp-icon\"\r\n />\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputContainer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputGroup }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {otp.map((_, idx) => (\r\n <TextInput\r\n key={idx}\r\n ref={(el: any) => (inputsRef.current[idx] = el)}\r\n value={otp[idx]}\r\n onChangeText={(text: any) => handleTextChange(text, idx)}\r\n onKeyPress={(e: any) => handleKeyPress(e, idx, e)}\r\n keyboardType=\"number-pad\"\r\n maxLength={1}\r\n style={\r\n isReactNative && otpIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInputRed }\r\n : isReactNative && !otpIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n />\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlOtpTimer } : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {!otpIncorrect && countdown > 5 && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimerText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer-text\"\r\n >\r\n <Text style={{ color: \"#717286\", fontWeight: \"400\" }}>\r\n 00:\r\n </Text>\r\n {countdown}\r\n </Text>\r\n )}\r\n\r\n {!otpIncorrect &&\r\n countdown <= 5 &&\r\n countdown > 0 &&\r\n otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimerTextRed }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer-text-red\"\r\n >\r\n <Text style={{ fontWeight: \"400\" }}>00:</Text>\r\n {countdown}\r\n </Text>\r\n )}\r\n\r\n {!otpIncorrect && countdown === 0 && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text\"\r\n >\r\n Didn't receive an OTP ?\r\n </Text>\r\n )}\r\n\r\n {otpIncorrect && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpIncorrectText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct OTP\r\n </Text>\r\n )}\r\n\r\n {otpIncorrect && otherErrorText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpIncorrectText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {otherErrorText}\r\n </Text>\r\n )}\r\n\r\n {!otpIncorrect && countdown > 0 && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text\"\r\n >\r\n Resend OTP\r\n </Text>\r\n )}\r\n\r\n {(!otpIncorrect && countdown === 0 && otherErrorText === \"\") ||\r\n (otpIncorrect && otherErrorText === \"\") ? (\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={async () => {\r\n setOtp([\"\", \"\", \"\", \"\"]);\r\n await handleResend();\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendTextActive }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text-active\"\r\n >\r\n Resend OTP\r\n </Text>\r\n </TouchableOpacity>\r\n ) : null}\r\n </View>\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: \"100px\" }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <TouchableOpacity\r\n className={\r\n isFilled && !otpIncorrect\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={handleVerifyOtp}\r\n disabled={!isFilled || otpIncorrect}\r\n style={\r\n isFilled && !otpIncorrect\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive }\r\n : { ...styles.verifiedCustdMdlStartupButton }\r\n }\r\n >\r\n <Text>Proceed</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default OTPPage;\r\n","import { AbiCoder, encodeBytes32String } from \"ethers\";\r\nimport { combine, split } from \"shamir-secret-sharing\";\r\nimport {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport {\r\n decryptString,\r\n decryptWithPasskey,\r\n encryptString,\r\n encryptWithPasskey,\r\n errorToast,\r\n hashTheString,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n newTransactionEventHash,\r\n numberPositions,\r\n} from \"../utils/constants\";\r\nimport { ChainConfig } from \"../utils/config\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport {\r\n base,\r\n baseSepolia,\r\n gnosis,\r\n mainnet,\r\n polygon,\r\n sepolia,\r\n} from \"viem/chains\";\r\nimport { http } from \"viem\";\r\nimport { computeNexusAccount } from \"../lib/biconomyRNFix\";\r\n\r\nexport const checkIsExistingUser = async (\r\n vaultContract: any,\r\n hashedVaultId: string\r\n) => {\r\n try {\r\n return await vaultContract\r\n .getCreator(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result[0] === true) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while checking if user exists: \", err);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const checkOrResetOrCreateVault = async (\r\n isReactNative: boolean,\r\n AsyncStorage: any,\r\n EventEmitter: any,\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n otpChannel: string,\r\n userPk: string,\r\n userAddress: string,\r\n vaultContract: any,\r\n action?: string,\r\n reqVaultData?: any,\r\n txData?: any,\r\n passKeyRawId?: any,\r\n keyHolders?: string[],\r\n quorum?: number\r\n) => {\r\n try {\r\n const vaultData = {\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n vaultContract,\r\n rawId: passKeyRawId,\r\n };\r\n return await vaultContract\r\n .getCreator(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result[0] === true) {\r\n try {\r\n let encryptedPk: string;\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n encryptedPk = encryptString(userPk, secretKey);\r\n } else {\r\n encryptedPk = await encryptWithPasskey(\r\n userPk,\r\n passKeyRawId,\r\n vaultPin\r\n );\r\n }\r\n\r\n let lastPk: any;\r\n if (chrome?.storage?.local) {\r\n lastPk = await new Promise((resolve) => {\r\n chrome.storage.local.get([\"lastPk\"], (result) => {\r\n resolve(result.lastPk);\r\n });\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n lastPk = localStorage.getItem(\"lastPk\");\r\n }\r\n\r\n if (\r\n action === \"reset-pin\" &&\r\n reqVaultData?.vaultContract &&\r\n keyHolders?.length > 1 &&\r\n quorum > 1 &&\r\n userPk?.length > 0\r\n ) {\r\n const keyShardsCount = Number(keyHolders.length);\r\n\r\n const privateKeySplits = await split(\r\n Uint8Array.from(\r\n userPk.split(\"\").map((letter: string) => letter.charCodeAt(0))\r\n ),\r\n Number(keyShardsCount),\r\n Number(quorum)\r\n );\r\n\r\n const sharesArrayAsString = privateKeySplits.map((share) =>\r\n share.join(\",\")\r\n );\r\n\r\n const secretKey = !passKeyRawId\r\n ? encodeBytes32String(vaultPin)\r\n : \"\";\r\n\r\n let failedKeyHolders = [];\r\n let succesfulKeyHolders = [];\r\n\r\n for (let idx = 0; idx < keyHolders.length; idx++) {\r\n const participant = keyHolders[idx];\r\n const encryptedShard = passKeyRawId\r\n ? await encryptWithPasskey(\r\n sharesArrayAsString[idx],\r\n passKeyRawId,\r\n vaultPin\r\n )\r\n : encryptString(sharesArrayAsString[idx], secretKey);\r\n await vaultContract\r\n .addParticipant(hashedVaultId, participant, encryptedShard)\r\n .then(async (res: any) => {\r\n const keyHolder = {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant,\r\n hashedCosigner: participant,\r\n cosignerVaultIdType: \"\",\r\n cosignerVaultId: participant,\r\n share: encryptedShard,\r\n };\r\n if (res?.status === 0) {\r\n succesfulKeyHolders.push(keyHolder);\r\n } else {\r\n failedKeyHolders.push(keyHolder);\r\n }\r\n });\r\n\r\n await new Promise((res) => setTimeout(res, 1000)); //1 second timeout to fix nonce error???\r\n }\r\n\r\n if (\r\n failedKeyHolders?.length > 0 ||\r\n succesfulKeyHolders?.length !== keyHolders?.length\r\n ) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while adding co-signers\");\r\n }\r\n errorToast(\r\n \"Oops somethin went wrong\",\r\n \"error while adding co-signers\"\r\n );\r\n return null;\r\n }\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n //no need to define quorum anymore we already use last quorum set\r\n return {};\r\n }\r\n\r\n if (lastPk && lastPk?.length > 0) {\r\n //existing PK means failed confirmParticipant, and since wallet exists??\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n\r\n hashedVaultId,\r\n\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n //delete saved pk if confirmParticipant is successful??\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"lastPk\");\r\n }\r\n try {\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n let encryptedPk: string;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n encryptedPk = encryptString(userPk, secretKey);\r\n } else {\r\n encryptedPk = await encryptWithPasskey(\r\n userPk,\r\n passKeyRawId,\r\n vaultPin\r\n );\r\n }\r\n\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error saving new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for existing vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n if (action === \"invitation\") {\r\n return { isExisting: true, ...vaultData };\r\n } else {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n const windowObj = !isReactNative ? window : null;\r\n if (!isReactNative && chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage({\r\n type:\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n });\r\n } else if (!isReactNative && !chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n {\r\n detail: {\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n },\r\n }\r\n );\r\n windowObj?.dispatchEvent(event);\r\n } else if (isReactNative && EventEmitter) {\r\n const vaultEventEmitter = new EventEmitter();\r\n const eventType =\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\";\r\n\r\n const eventDetail = {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n };\r\n\r\n vaultEventEmitter.emit(eventType, eventDetail);\r\n }\r\n }\r\n return action === \"getPk\"\r\n ? {\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n shouldStop: true,\r\n }\r\n : { shouldStop: true };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error handling existing vault: \", err);\r\n }\r\n\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error fetching existing vault key(s). Try again later\"\r\n );\r\n return false;\r\n }\r\n }\r\n // else if (res?.reason?.toLowerCase() === \"invalid pin\") {\r\n // let lastPk: any;\r\n // if (chrome?.storage?.local) {\r\n // lastPk = await new Promise((resolve) => {\r\n // chrome.storage.local.get([\"lastPk\"], (result) => {\r\n // resolve(result.lastPk);\r\n // });\r\n // });\r\n // } else if (!chrome?.storage?.local && localStorage) {\r\n // lastPk = localStorage.getItem(\"lastPk\");\r\n // }\r\n // if (\r\n // action === \"reset-pin\" &&\r\n // reqVaultData?.hashedOldPin &&\r\n // reqVaultData?.vaultContract\r\n // ) {\r\n // return await resetVaultPin(\r\n // hashedVaultId,\r\n // reqVaultData?.vaultContract\r\n // );\r\n // } else if (lastPk && lastPk?.length > 0) {\r\n // //existing PK means failed confirmParticipant, and since wallet exists??\r\n // return await vaultContract\r\n // .confirmParticipant(\r\n // hashedVaultId,\r\n\r\n // hashedVaultId,\r\n\r\n // true\r\n // )\r\n // .then(async (cfrmRes: any) => {\r\n // if (cfrmRes?.status === 0) {\r\n // //delete saved pk if confirmParticipant is successful??\r\n // if (!isReactNative && chrome?.storage?.local) {\r\n // await chrome.storage.local.remove(\"lastPk\");\r\n // } else if (\r\n // !isReactNative &&\r\n // !chrome?.storage?.local &&\r\n // localStorage\r\n // ) {\r\n // localStorage.removeItem(\"lastPk\");\r\n // } else if (isReactNative && AsyncStorage) {\r\n // await AsyncStorage.removeItem(\"lastPk\");\r\n // }\r\n // try {\r\n // const newSender = new VerifiedWallet(userPk);\r\n\r\n // const userRegAddress = await newSender.getAddress();\r\n\r\n // let encryptedPk: string;\r\n\r\n // if (!passKeyRawId) {\r\n // const secretKey = encodeBytes32String(vaultPin);\r\n\r\n // encryptedPk = encryptString(userPk, secretKey);\r\n // } else {\r\n // encryptedPk = await encryptWithPasskey(\r\n // userPk,\r\n // passKeyRawId,\r\n // vaultPin\r\n // );\r\n // }\r\n\r\n // if (!isReactNative && chrome?.storage?.local) {\r\n // await chrome.storage.local.set({\r\n // myVault: JSON.stringify({\r\n // address: userAddress,\r\n // regAddress: userRegAddress,\r\n // vaultId,\r\n // hashedVaultId: hashedVaultId,\r\n // pk: encryptedPk,\r\n // channel: otpChannel,\r\n // }),\r\n // });\r\n // } else if (\r\n // !isReactNative &&\r\n // !chrome?.storage?.local &&\r\n // localStorage\r\n // ) {\r\n // localStorage.setItem(\r\n // \"myVault\",\r\n // JSON.stringify({\r\n // address: userAddress,\r\n // regAddress: userRegAddress,\r\n // vaultId,\r\n // hashedVaultId: hashedVaultId,\r\n // pk: encryptedPk,\r\n // channel: otpChannel,\r\n // })\r\n // );\r\n // } else if (isReactNative && AsyncStorage) {\r\n // await AsyncStorage.setItem(\r\n // \"myVault\",\r\n // JSON.stringify({\r\n // address: userAddress,\r\n // regAddress: userRegAddress,\r\n // vaultId,\r\n // hashedVaultId: hashedVaultId,\r\n // pk: encryptedPk,\r\n // channel: otpChannel,\r\n // })\r\n // );\r\n // }\r\n\r\n // return vaultData;\r\n // } catch (err) {\r\n // errorToast(\r\n // \"Oops something went wrong\",\r\n // \"Error saving new vault details. Try again later\"\r\n // );\r\n // if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n // console.error(\"save vault failed: \", err);\r\n // }\r\n\r\n // return false;\r\n // }\r\n // } else {\r\n // errorToast(\r\n // \"Oops something went wrong\",\r\n // \"Error creating pin for existing vault. Try again later\"\r\n // );\r\n\r\n // if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n // console.error(\"confirm pin vault failed: \", cfrmRes);\r\n // }\r\n // return false;\r\n // }\r\n // });\r\n // } else {\r\n // return null;\r\n // }\r\n // }\r\n else if (res?.status === 0 && res?.response?.result[0] !== true) {\r\n return await vaultContract\r\n .createVault(hashedVaultId)\r\n .then(async (vultRes: any) => {\r\n if (vultRes?.status === 0) {\r\n //temporary save the last pk incase confirmParticipant fails??\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n lastPk: userPk,\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\"lastPk\", userPk);\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\"lastPk\", userPk);\r\n }\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n\r\n hashedVaultId,\r\n\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n //delete saved pk if confirmParticipant is successful??\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"lastPk\");\r\n }\r\n try {\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n let encryptedPk: string;\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n encryptedPk = encryptString(userPk, secretKey);\r\n } else {\r\n encryptedPk = await encryptWithPasskey(\r\n userPk,\r\n passKeyRawId,\r\n vaultPin\r\n );\r\n }\r\n\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error saving new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for new vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating new vault. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"create vault failed: \", vultRes);\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n });\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error while creating pin. Try again later\"\r\n );\r\n return false;\r\n }\r\n};\r\n\r\nexport const validateVaultPin = async (\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n encryptedPk: any,\r\n userAddress: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n includePk?: boolean,\r\n newChainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n try {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n\r\n // console.log(\"chainId to use: \", _chainId);\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .getCreator(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result[0] === true) {\r\n const quorumSet = await vaultContract.getQuorum(hashedVaultId);\r\n if (\r\n quorumSet?.status === 0 &&\r\n quorumSet?.response?.result?.length > 0\r\n ) {\r\n return includePk && Number(quorumSet?.response?.result[0]) > 0\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n pk: userPk,\r\n }\r\n : Number(quorumSet?.response?.result[0]) === 0\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n pk: userPk,\r\n inCompleteVault: true,\r\n }\r\n : {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n };\r\n } else {\r\n //For account recovery....\r\n return includePk\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n pk: userPk,\r\n }\r\n : {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n };\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Account does not exist\");\r\n }\r\n return null;\r\n }\r\n });\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error getting vault contract\");\r\n }\r\n return null;\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error decrypting pk\");\r\n }\r\n return null;\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const acceptOrRejectInvitation = async (\r\n sendCreatorAcceptance: VerifiedCustodyHelpers[\"sendCreatorAcceptance\"],\r\n sendCreatorRejection: VerifiedCustodyHelpers[\"sendCreatorRejection\"],\r\n channel: \"email\" | \"sms\",\r\n hashedCosignerId: string,\r\n hashedCosignerPin: string,\r\n hashedCreatorVaultId: string,\r\n hashedCreatorVaultPin: string,\r\n creatorVaultId: string,\r\n coSignerVaultId: string,\r\n accepted: boolean,\r\n vaultContract?: any,\r\n userPk?: string,\r\n chainId?: number\r\n) => {\r\n let contract: any;\r\n if (vaultContract) {\r\n contract = vaultContract;\r\n } else {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n contract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n }\r\n if (contract) {\r\n return await contract\r\n .confirmParticipant(hashedCreatorVaultId, hashedCosignerId, accepted)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n if (accepted) {\r\n await sendCreatorAcceptance(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId,\r\n hashedCreatorVaultPin\r\n );\r\n } else {\r\n await sendCreatorRejection(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId,\r\n hashedCreatorVaultPin\r\n );\r\n }\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with\");\r\n }\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with error: \", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\n// const retryCompleteVault = async () => {\r\n// failedParticipants = [...new Set(failedParticipants)]\r\n// await Promise.all(\r\n// failedParticipants.map(async (participant, idx) => {\r\n// const retryAdd = await mainService.vault.addParticipant(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// participant.hashedCosigner,\r\n// participant.share\r\n// )\r\n\r\n// if (retryAdd.status) {\r\n// // failedParticipants.push({\r\n// // creatorVaultId: ,\r\n// // fcmToken,\r\n// // cosigner,\r\n// // share: sharesArrayAsString[idx],\r\n// // })\r\n// } else {\r\n// const filtered = failedParticipants.filter(\r\n// (part) => part.cosigner !== participant.cosigner\r\n// )\r\n// failedParticipants = [...new Set(filtered)]\r\n// await sendNotification({\r\n// creator: vaultInfo.vaultId,\r\n// hashedCreator: vaultInfo.hashedVaultId,\r\n// idType: participant.idType,\r\n// email: participant.cosigner,\r\n// phoneNumber: participant.cosigner,\r\n// })\r\n// }\r\n// })\r\n// )\r\n\r\n// if (failedParticipants.length > 0) {\r\n// setIsRetry(true)\r\n// setIsLoading(false)\r\n// return\r\n// }\r\n\r\n// const addQuorum = await mainService.vault.defineQuorum(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// threshold.toString() // coming from the slider\r\n// )\r\n\r\n// if (addQuorum.status) {\r\n// return false\r\n// }\r\n// return true\r\n// }\r\n\r\nexport const completeVaultCreation = async (\r\n sendCoSignerInvitation: (\r\n channel: \"sms\" | \"email\",\r\n cosigerId: string,\r\n cretorId: string,\r\n hashedCretorPin: string\r\n ) => Promise<boolean>,\r\n sendCreatorConfirmation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n cosigersList: [],\r\n requiredSigners: number,\r\n hashedCretorPin: string,\r\n isRemoved?: boolean\r\n ) => Promise<boolean>,\r\n keyHolders: any,\r\n coSigners: any,\r\n otpChannel: \"sms\" | \"email\",\r\n KeyThreshold: number,\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n vaultContract: any,\r\n pk: string,\r\n passKeyRawId?: any,\r\n action?: string\r\n) => {\r\n const keyShardsCount = Number(keyHolders.length);\r\n\r\n const privateKeySplits = await split(\r\n Uint8Array.from(pk.split(\"\").map((letter: string) => letter.charCodeAt(0))),\r\n Number(keyShardsCount),\r\n KeyThreshold\r\n );\r\n\r\n const sharesArrayAsString = privateKeySplits.map((share) => share.join(\",\"));\r\n\r\n const secretKey = !passKeyRawId ? encodeBytes32String(vaultPin) : \"\";\r\n\r\n let failedKeyHolders = [];\r\n let succesfulKeyHolders = [];\r\n\r\n for (let idx = 0; idx < keyHolders.length; idx++) {\r\n const participant = keyHolders[idx];\r\n const encryptedShard = passKeyRawId\r\n ? await encryptWithPasskey(\r\n sharesArrayAsString[idx],\r\n passKeyRawId,\r\n vaultPin\r\n )\r\n : encryptString(sharesArrayAsString[idx], secretKey);\r\n await vaultContract\r\n .addParticipant(\r\n hashedVaultId,\r\n action === \"remove-cosigner\"\r\n ? participant\r\n : hashTheString(participant.vaultId),\r\n encryptedShard\r\n )\r\n .then(async (res: any) => {\r\n const keyHolder =\r\n action === \"remove-cosigner\"\r\n ? {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant,\r\n hashedCosigner: participant,\r\n cosignerVaultIdType: \"\",\r\n cosignerVaultId: participant,\r\n share: encryptedShard,\r\n }\r\n : {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant.vaultId,\r\n hashedCosigner: hashTheString(participant.vaultId),\r\n cosignerVaultIdType:\r\n participant.otpChannel === \"sms\" ? \"PHONE\" : \"EMAIL\",\r\n cosignerVaultId: participant.vaultId,\r\n share: encryptedShard,\r\n ...participant,\r\n };\r\n if (res?.status === 0) {\r\n succesfulKeyHolders.push(keyHolder);\r\n if (action !== \"remove-cosigner\" && participant.vaultId !== vaultId) {\r\n await sendCoSignerInvitation(\r\n participant.otpChannel,\r\n participant.vaultId,\r\n vaultId,\r\n hashedVaultPin\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending cosigner invite\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending cosigner invite\");\r\n }\r\n });\r\n }\r\n } else {\r\n failedKeyHolders.push(keyHolder);\r\n }\r\n });\r\n\r\n await new Promise((res) => setTimeout(res, 1000)); //1 second timeout to fix nonce error???\r\n }\r\n\r\n if (\r\n failedKeyHolders?.length > 0 ||\r\n succesfulKeyHolders?.length !== keyHolders?.length\r\n ) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while adding co-signers\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while adding co-signers\");\r\n return false;\r\n }\r\n\r\n return await vaultContract\r\n .defineQuorum(hashedVaultId, KeyThreshold.toString())\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && action !== \"remove-cosigner\") {\r\n const cosignersList = coSigners?.map((cng: any) => {\r\n return {\r\n name: cng?.name,\r\n email: cng?.email,\r\n phoneNumber: cng?.phoneNumber,\r\n contactType: String(cng?.otpChannel)?.toUpperCase(),\r\n position: `${numberPositions[Number(cng?.position)]} Co-Signer`,\r\n };\r\n });\r\n await sendCreatorConfirmation(\r\n otpChannel,\r\n vaultId,\r\n cosignersList,\r\n Number(KeyThreshold),\r\n hashedVaultPin\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending creator's confirmation\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending creator's confirmation\");\r\n }\r\n });\r\n\r\n return true;\r\n } else if (res?.status === 0 && action === \"remove-cosigner\") {\r\n const removeCosignerPromise = coSigners?.map(async (cng: any) => {\r\n const removeRes = await vaultContract.removeParticipant(\r\n hashedVaultId,\r\n hashTheString(cng?.vaultId)\r\n );\r\n if (removeRes?.status === 0) {\r\n return \"true\";\r\n } else {\r\n return \"false\";\r\n }\r\n });\r\n const promisesResult = await Promise.all(removeCosignerPromise);\r\n\r\n if (promisesResult?.find((res) => res === \"false\")?.length > 0) {\r\n return false;\r\n }\r\n\r\n const cosignersList = coSigners?.map((cng: any) => {\r\n return {\r\n email: cng?.email,\r\n phoneNumber: cng?.phoneNumber,\r\n contactType: String(cng?.otpChannel)?.toUpperCase(),\r\n position: `${numberPositions[Number(cng?.position)]} Co-Signer`,\r\n };\r\n });\r\n\r\n await sendCreatorConfirmation(\r\n otpChannel,\r\n vaultId,\r\n cosignersList,\r\n Number(KeyThreshold),\r\n hashedVaultPin,\r\n true\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending creator's confirmation\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending creator's confirmation\");\r\n }\r\n });\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while saving vault keys\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while saving vault keys\");\r\n return false;\r\n }\r\n });\r\n};\r\n\r\nexport const initiateVaultRecovery = async (\r\n sendCreatorInitiation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n hashedCretorPin: string,\r\n txId: number,\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n vaultChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .promptSignatures(hashedVaultId)\r\n .then(async (res: any) => {\r\n // console.log(\"propmt signature: \", res);\r\n if (res?.status === 0 && res?.response?.hash) {\r\n const abiCoder = new AbiCoder();\r\n let txId: any, vaultLogsLength: number;\r\n if (res?.response?.result?.logs?.length > 0) {\r\n const vaultLogs = res?.response?.result?.logs?.filter(\r\n (log: any) =>\r\n log?.address?.toLowerCase() ===\r\n cntAddresses[_chainId].Custody?.toLowerCase() &&\r\n log?.topics\r\n ?.map((tp: string) => tp?.toLowerCase())\r\n ?.includes(newTransactionEventHash?.toLowerCase())\r\n );\r\n vaultLogsLength = vaultLogs?.length;\r\n const txData = vaultLogs[0]?.data;\r\n\r\n const decodedTxData = abiCoder\r\n .decode([\"bytes32\", \"bytes32\", \"uint256\"], txData)\r\n ?.map((val, idx) => (idx < 2 ? val : Number(val)))\r\n .flat();\r\n txId = decodedTxData[decodedTxData?.length - 1];\r\n } else {\r\n const newProv = new Provider(provider);\r\n const receipt = await newProv.getTransactionReceipt(\r\n res?.response?.hash\r\n );\r\n const logs = receipt.logs;\r\n const vaultLogs = logs?.filter(\r\n (log: any) =>\r\n log?.address?.toLowerCase() ===\r\n cntAddresses[_chainId].Custody?.toLowerCase() &&\r\n log?.topics\r\n ?.map((tp: string) => tp?.toLowerCase())\r\n ?.includes(newTransactionEventHash?.toLowerCase())\r\n );\r\n vaultLogsLength = vaultLogs?.length;\r\n const txData = vaultLogs[0]?.data;\r\n const decodedTxData = abiCoder\r\n .decode([\"bytes32\", \"bytes32\", \"uint256\"], txData)\r\n ?.map((val, idx) => (idx < 2 ? val : Number(val)))\r\n .flat();\r\n txId = decodedTxData[decodedTxData?.length - 1];\r\n }\r\n await sendCreatorInitiation(\r\n vaultChannel,\r\n vaultId,\r\n hashedVaultPin,\r\n Number(txId),\r\n Number(vaultLogsLength)\r\n );\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"prompt signatures failed\", res);\r\n }\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while initiating vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const signVaultRecovery = async (\r\n sendCreatorSigned: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n coSignerId: string,\r\n vaultPinHashed: string\r\n ) => Promise<boolean>,\r\n sendCreatorCompleted: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n txId: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqVaultId: string,\r\n hashedReqId: string,\r\n hashedReqPin: string,\r\n reqTxId: string,\r\n chainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .signTransaction(hashedReqId, hashedVaultId, String(reqTxId))\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n await sendCreatorSigned(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId) ? \"email\" : \"sms\",\r\n reqVaultId,\r\n vaultId,\r\n hashedReqPin\r\n );\r\n return await vaultContract\r\n .checkQuorum(hashedReqId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n await sendCreatorCompleted(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId)\r\n ? \"email\"\r\n : \"sms\",\r\n reqVaultId,\r\n Number(reqTxId)\r\n );\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while signing vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const restoreVaultLogin = async (\r\n isReactNative: boolean,\r\n AsyncStorage: any,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqTxId: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .checkQuorum(hashedVaultId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n return await vaultContract\r\n .getShards(hashedVaultId, reqTxId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result) {\r\n const recoveredShrads = res?.response?.result.filter(\r\n (shrd: string) => shrd !== \"\"\r\n );\r\n if (recoveredShrads.length > 1) {\r\n //at least 2 shrads?? since minimum signers are 2??\r\n const secretKey = !passKeyRawId\r\n ? encodeBytes32String(vaultPin)\r\n : \"\";\r\n // const decryptedShares = recoveredShrads.map(\r\n // (shrd: string) => decryptString(shrd, secretKey)\r\n // );\r\n\r\n const decryptedShares = await Promise.all(\r\n recoveredShrads.map((shrd: string) =>\r\n passKeyRawId\r\n ? decryptWithPasskey(shrd, passKeyRawId)\r\n : decryptString(shrd, secretKey)\r\n )\r\n );\r\n\r\n const shares = decryptedShares.map(\r\n (shrd: string) =>\r\n new Uint8Array(shrd.split(\",\").map(Number))\r\n );\r\n\r\n const combinedShares = await combine(shares);\r\n\r\n const pk = new TextDecoder().decode(combinedShares);\r\n\r\n if (pk) {\r\n const secretKey = !passKeyRawId\r\n ? encodeBytes32String(vaultPin)\r\n : \"\";\r\n\r\n const newEncryptedPk = passKeyRawId\r\n ? await encryptWithPasskey(pk, passKeyRawId, vaultPin)\r\n : encryptString(pk, secretKey);\r\n\r\n const newSender = new VerifiedWallet(pk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n const newSigner = newSender.setProvider(\r\n new Provider(provider)\r\n );\r\n\r\n const _newsigner: any = newSigner;\r\n const chainToUse = [\r\n base,\r\n mainnet,\r\n gnosis,\r\n polygon,\r\n sepolia,\r\n baseSepolia,\r\n ].find((nt) => Number(nt?.id) === Number(_chainId));\r\n const nexAddress = await computeNexusAccount(\r\n chainToUse,\r\n http(),\r\n _newsigner\r\n );\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n }\r\n};\r\n\r\n// export const resetVaultPin = async (\r\n// hashedVaultId: string,\r\n// hashedOldPin: string,\r\n// hashedNewPin: string,\r\n// vaultContract: any\r\n// ) => {\r\n// return await vaultContract\r\n// .resetPin(hashedVaultId)\r\n// .then(async (res: any) => {\r\n// const trueAny: any = true;\r\n// if (res?.status === 0) {\r\n// return await vaultContract\r\n// .confirmParticipant(\r\n// hashedVaultId,\r\n// hashedNewPin,\r\n// hashedVaultId,\r\n// hashedNewPin,\r\n// trueAny\r\n// )\r\n// .then((cRes: any) => {\r\n// if (cRes?.status === 0) {\r\n// return {};\r\n// } else {\r\n// return null;\r\n// }\r\n// });\r\n// } else {\r\n// return null;\r\n// }\r\n// });\r\n// };\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n base64ToArrayBuffer,\r\n hashTheBuffer,\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n publicKeyCredentialCreationOptions,\r\n publicKeyCredentialRequestOptions,\r\n resolveGlobalStyleUnit,\r\n} from \"../utils/helpers\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n checkOrResetOrCreateVault,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport Success from \"../components/success\";\r\nimport {\r\n createPasskeyEndpoint,\r\n defaultVerifiedUrl,\r\n getPasskeyEndpoint,\r\n imageAssets,\r\n} from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport { contractAddress, Provider } from \"@verified-network/verified-sdk\";\r\nimport { ethers } from \"ethers\";\r\nimport { ChainConfig } from \"../utils/config\";\r\n\r\nconst CreatePinPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n createPasskeyDomain?: string;\r\n getPasskeyDomain?: string;\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowSuccessBtn?: (showSuccessBtn: boolean) => void;\r\n setSuccessBtnText?: (successBtnText: string) => void;\r\n setSuccessBtnNeutText?: (successBtnNeutText: string) => void;\r\n setSuccessBtnFunc?: (successBtnFunc: any) => void;\r\n setSuccessBtnNeutFunc?: (successBtnNeutFunc: any) => void;\r\n setActionHeaderText?: (actionHeaderText: string) => void;\r\n setActionFooterText?: (actionFooterText: string) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n isExistingUser?: boolean;\r\n rootTagId?: string;\r\n rootExpandedWidth?: string;\r\n rootExpandedHeight?: string;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n EventEmitter,\r\n styles,\r\n rnPasskey,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [pinHide, setPinHide] = useState(true);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [showCustomSuccess, setShowCustomSuccess] = useState(false);\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n const [customSuccessText, setCustomSuccessText] = useState(\"\");\r\n const [vaultPin, setVaultPin] = useState(\"\");\r\n const [vaultRawId, setVaultRawId] = useState(null);\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [isPin, setIsPin] = useState(false);\r\n const [showImportAcct, setShowImportAcct] = useState(false);\r\n const [privateKeyError, setPrivateKeyError] = useState(\"\");\r\n const [enteredPk, setEnteredPk] = useState(\"\");\r\n const [existingCosigners, setExistingCosigners] = useState([]);\r\n const [quorum, setQuorum] = useState(0);\r\n const [passkeyPopupId, setPasskeyPopupId] = useState(null);\r\n\r\n const {\r\n address,\r\n pk,\r\n chainId,\r\n vaultContract,\r\n signer,\r\n setVaultData,\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n vaultData,\r\n } = useVaultStore();\r\n\r\n const [pin, setPin] = useState([\"\", \"\", \"\", \"\"]);\r\n const [confirmPin, setConfirmPin] = useState([\"\", \"\", \"\", \"\"]);\r\n\r\n const pinRefs = useRef<Array<any>>([]);\r\n const confirmPinRefs = useRef<Array<any>>([]);\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleFetchUserCosigners = async () => {\r\n // console.log(\"will fetch users cosigners...\");\r\n if (props.setIsLoading) {\r\n props.setIsLoading(true);\r\n }\r\n\r\n const quorumSet = await props.vaultData?.vaultContract.getQuorum(\r\n props.vaultData?.hashedVaultId\r\n );\r\n if (quorumSet?.status === 0 && quorumSet?.response?.result?.length > 0) {\r\n const cosignersNumber = Number(quorumSet?.response?.result[0]);\r\n setQuorum(cosignersNumber);\r\n }\r\n\r\n if (props.vaultData?.existingCosignersHashed?.length > 0) {\r\n setExistingCosigners([\r\n ...new Set(props.vaultData?.existingCosignersHashed),\r\n ]);\r\n // console.log(\"hashed cosigners received will stop..\");\r\n if (props.setIsLoading) {\r\n props.setIsLoading(false);\r\n }\r\n return;\r\n }\r\n const cntAddresses: any = contractAddress;\r\n const custodyAddress = cntAddresses[chainId]?.Custody;\r\n if (!custodyAddress) {\r\n return;\r\n }\r\n const custodyEventAbi = [\r\n {\r\n anonymous: false,\r\n inputs: [\r\n {\r\n indexed: false,\r\n name: \"creator\",\r\n type: \"bytes32\",\r\n },\r\n {\r\n indexed: false,\r\n name: \"participant\",\r\n type: \"bytes32\",\r\n },\r\n ],\r\n name: \"NewParticipant\",\r\n type: \"event\",\r\n },\r\n ];\r\n const etherCustodyContract = new ethers.Contract(\r\n custodyAddress,\r\n custodyEventAbi,\r\n props.vaultData?.signer\r\n );\r\n if (!etherCustodyContract) {\r\n return;\r\n }\r\n const iface = new ethers.Interface(custodyEventAbi);\r\n const eventFragment = iface.getEvent(\"NewParticipant\");\r\n const topicHash = eventFragment.topicHash;\r\n\r\n const provider = new Provider(ChainConfig[chainId]?.rpcUrls[0]);\r\n\r\n const logs = await provider?.getLogs({\r\n address: custodyAddress,\r\n fromBlock: ChainConfig[chainId]?.custodyContractBlock || 0,\r\n toBlock: \"latest\",\r\n topics: [topicHash],\r\n });\r\n\r\n const userParticipants = logs\r\n ?.map((log: any) => {\r\n const parsedLog = iface.parseLog(log);\r\n if (\r\n parsedLog?.args?.creator?.toLowerCase() ===\r\n hashTheString(\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\" \", \"\")}`\r\n ) &&\r\n parsedLog?.args?.creator !== parsedLog?.args?.participant\r\n )\r\n return parsedLog?.args?.participant;\r\n else return null;\r\n })\r\n ?.filter((participant: any) => participant !== null);\r\n\r\n setExistingCosigners([...new Set(userParticipants)]);\r\n if (props.setIsLoading) {\r\n props.setIsLoading(false);\r\n }\r\n };\r\n\r\n if (\r\n (props.isExistingUser &&\r\n props.action === \"reset-pin\" &&\r\n props.vaultData?.signer,\r\n props.vaultData?.hashedVaultId,\r\n props.vaultData?.vaultContract)\r\n ) {\r\n handleFetchUserCosigners();\r\n }\r\n }, [props.isExistingUser, props.action, props.vaultData]);\r\n\r\n const handleTextChange = (text: string, idx: number, isConfirm: boolean) => {\r\n setPinIncorrect(false);\r\n setPinIncorrectText(\"\");\r\n const clean = text.replace(/\\D/g, \"\");\r\n const newPin = isConfirm ? [...confirmPin] : [...pin];\r\n newPin[idx] = clean;\r\n if (isConfirm) {\r\n setConfirmPin(newPin);\r\n if (clean && confirmPinRefs.current[idx + 1]) {\r\n confirmPinRefs.current[idx + 1].focus();\r\n }\r\n\r\n if (\r\n idx < 3 &&\r\n newPin.every((digit) => digit !== \"\") &&\r\n pin.every((digit) => digit !== \"\") &&\r\n newPin.join(\"\") !== pin.join(\"\")\r\n ) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\"Confirm Pin must match New Pin.\");\r\n }\r\n if (idx === 3 && pin.join(\"\") !== newPin.join(\"\")) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\"Confirm Pin must match New Pin.\");\r\n }\r\n } else {\r\n setPin(newPin);\r\n if (clean && pinRefs.current[idx + 1]) {\r\n pinRefs.current[idx + 1].focus();\r\n }\r\n if (\r\n confirmPin.every((digit) => digit !== \"\") &&\r\n newPin.join(\"\") !== confirmPin.join(\"\")\r\n ) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\"New Pin must match Confirm Pin.\");\r\n }\r\n }\r\n };\r\n\r\n const createPasskey = async () => {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n try {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n if (chrome?.windows?.create) {\r\n //extension environment\r\n const passkeyUrl =\r\n props?.createPasskeyDomain?.length > 0\r\n ? props?.createPasskeyDomain\r\n : createPasskeyEndpoint;\r\n const passkeyListener = async (msg: any, sender: any, __: any) => {\r\n if (msg.type === \"VW:Passkey_Credential\") {\r\n if (\r\n msg?.origin &&\r\n passkeyUrl?.toLowerCase()?.startsWith(msg?.origin?.toLowerCase())\r\n ) {\r\n if (passkeyPopupId) {\r\n chrome.windows.remove(passkeyPopupId);\r\n }\r\n if (sender?.tab && sender?.tab?.windowId) {\r\n chrome.windows.remove(sender.tab.windowId);\r\n }\r\n const credential = msg.data;\r\n\r\n if (credential?.id && credential?.rawId) {\r\n const _rawId = base64ToArrayBuffer(credential?.rawId);\r\n const hashedId = hashTheBuffer(_rawId);\r\n const pinToUse = {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: _rawId,\r\n listener: passkeyListener,\r\n };\r\n\r\n await handleVaultManagement(pinToUse);\r\n } else {\r\n setPinIncorrectText(\r\n `Passkey creation failed: ${credential?.error?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n setPinIncorrectText(\r\n `Passkey creation failed: invalid passkey origin. Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n }\r\n };\r\n chrome.runtime.onMessage.addListener(passkeyListener);\r\n await chrome.windows\r\n .create({\r\n url: `${passkeyUrl}?id=${vaultId}`,\r\n type: \"popup\",\r\n width: 500,\r\n height: 600,\r\n })\r\n .then((_window) => {\r\n setPasskeyPopupId(_window.id);\r\n });\r\n } else {\r\n const credential: any = isReactNative\r\n ? rnPasskey.create(\r\n publicKeyCredentialCreationOptions(\r\n \"Verified Wallet\",\r\n vaultId,\r\n hashTheString(vaultId)\r\n )\r\n )\r\n : await navigator?.credentials?.create({\r\n publicKey: publicKeyCredentialCreationOptions(\r\n \"Verified Wallet\",\r\n vaultId,\r\n hashTheString(vaultId)\r\n ),\r\n });\r\n\r\n if (credential) {\r\n const hashedId = hashTheBuffer(credential?.rawId);\r\n\r\n return {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: credential?.rawId,\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n } catch (err) {\r\n setPinIncorrectText(\r\n `Passkey creation failed: ${err?.message?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n return null;\r\n }\r\n };\r\n\r\n const requestPasskey = async () => {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n if (chrome?.windows?.create && window) {\r\n const passkeyUrl =\r\n props?.getPasskeyDomain?.length > 0\r\n ? props?.getPasskeyDomain\r\n : getPasskeyEndpoint;\r\n const passkeyListener = async (msg: any, sender: any, __: any) => {\r\n if (msg.type === \"VW:Passkey_Credential\") {\r\n if (\r\n msg?.origin &&\r\n passkeyUrl?.toLowerCase()?.startsWith(msg?.origin?.toLowerCase())\r\n ) {\r\n if (passkeyPopupId) {\r\n chrome.windows.remove(passkeyPopupId);\r\n }\r\n if (sender?.tab && sender?.tab?.windowId) {\r\n chrome.windows.remove(sender.tab.windowId);\r\n }\r\n const credential = msg.data;\r\n\r\n if (credential?.id && credential?.rawId) {\r\n const _rawId = base64ToArrayBuffer(credential?.rawId);\r\n const hashedId = hashTheBuffer(_rawId);\r\n const pinToUse = {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: _rawId,\r\n listener: passkeyListener,\r\n };\r\n\r\n await handleVaultManagement(pinToUse);\r\n } else {\r\n setPinIncorrectText(\r\n `Passkey authentication failed: ${credential?.error?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n setPinIncorrectText(\r\n `Passkey authentication failed: invalid passkey origin. Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n }\r\n };\r\n chrome.runtime.onMessage.addListener(passkeyListener);\r\n await chrome.windows\r\n .create({\r\n url: `${passkeyUrl}`,\r\n type: \"popup\",\r\n width: 500,\r\n height: 600,\r\n })\r\n .then((_window) => {\r\n setPasskeyPopupId(_window.id);\r\n });\r\n } else {\r\n try {\r\n const credential: any = isReactNative\r\n ? await rnPasskey.get(publicKeyCredentialRequestOptions())\r\n : await navigator?.credentials?.get({\r\n publicKey: publicKeyCredentialRequestOptions(),\r\n });\r\n const hashedId = hashTheBuffer(credential?.rawId);\r\n return {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: credential?.rawId,\r\n };\r\n } catch (err) {\r\n setPinIncorrectText(\r\n `Passkey authentication failed: ${err?.message?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n }\r\n };\r\n\r\n const handleKeyPress = (_: any, idx: number, e: any, isConfirm: boolean) => {\r\n const key = e.nativeEvent.key;\r\n\r\n if (\r\n !isConfirm &&\r\n key === \"Backspace\" &&\r\n !pin[idx] &&\r\n idx > 0 &&\r\n pinRefs.current[idx - 1]\r\n ) {\r\n pinRefs.current[idx - 1].focus();\r\n }\r\n\r\n if (\r\n isConfirm &&\r\n key === \"Backspace\" &&\r\n !confirmPin[idx] &&\r\n idx > 0 &&\r\n confirmPinRefs.current[idx - 1]\r\n ) {\r\n confirmPinRefs.current[idx - 1].focus();\r\n }\r\n };\r\n\r\n const isConfirmActive = () => {\r\n if (!isPin) {\r\n return true;\r\n }\r\n\r\n if (props.isExistingUser) {\r\n return pin.every((digit) => digit !== \"\");\r\n } else {\r\n return (\r\n pin.every((digit) => digit !== \"\") &&\r\n confirmPin.every(\r\n (digit) => digit !== \"\" && pin.join(\"\") === confirmPin.join(\"\")\r\n )\r\n );\r\n }\r\n };\r\n\r\n const isConfirmActiveImp = () => {\r\n if (\r\n showImportAcct &&\r\n enteredPk?.length === 66 &&\r\n enteredPk?.toLowerCase()?.startsWith(\"0x\")\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const handleVaultManagement = async (pinToUse?: {\r\n pinString: string;\r\n hashed: string;\r\n rawId: any;\r\n address?: string;\r\n pk?: string;\r\n vaultContract?: any;\r\n signer?: any;\r\n vaultData?: any;\r\n listener?: any;\r\n }) => {\r\n //remove last used event listener\r\n if (pinToUse?.listener && chrome?.runtime?.onMessage?.removeListener) {\r\n chrome?.runtime?.onMessage?.removeListener(pinToUse?.listener);\r\n }\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the CreatePinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (\r\n (!props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n address &&\r\n vaultContract) ||\r\n (!props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n props.vaultData?.vaultContract &&\r\n props.vaultData?.hashedOldPin) ||\r\n (props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n address &&\r\n vaultContract) ||\r\n (props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n props.vaultData?.vaultContract)\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = pinToUse?.pinString || pin.join(\"\");\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = pinToUse?.hashed || hashTheString(vaultPin);\r\n await checkOrResetOrCreateVault(\r\n isReactNative,\r\n AsyncStorage,\r\n EventEmitter,\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n channel,\r\n pinToUse?.pk ? pinToUse?.pk : pk ? pk : props.vaultData?.pk,\r\n pinToUse?.address\r\n ? pinToUse?.address\r\n : address\r\n ? address\r\n : props.vaultData?.address,\r\n pinToUse?.vaultContract\r\n ? pinToUse?.vaultContract\r\n : vaultContract\r\n ? vaultContract\r\n : props.vaultData?.vaultContract,\r\n props.action,\r\n pinToUse?.vaultData ? pinToUse?.vaultData : props.vaultData,\r\n props.txData,\r\n pinToUse?.rawId,\r\n props.action === \"reset-pin\"\r\n ? [props.vaultData?.hashedVaultId, ...existingCosigners]\r\n : undefined,\r\n quorum\r\n ).then(async (res: any) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setVaultData(\r\n res?.shouldStop && res?.vaultId\r\n ? {\r\n vaultId: res?.vaultId,\r\n hashedVaultId: res?.hashedVaultId,\r\n hashedVaultPin: res?.hashedVaultPin,\r\n pk: res?.pk,\r\n rawId: res?.rawId,\r\n channel: res?.channel,\r\n }\r\n : res?.shouldStop\r\n ? {}\r\n : res\r\n );\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n if (props.action === \"invitation\") {\r\n setVaultPin(vaultPin);\r\n setVaultRawId(pinToUse?.rawId);\r\n setShowInvitation(true);\r\n } else if (props.action === \"reset-pin\") {\r\n if (!isReactNative && chrome?.storage?.local && isPin) {\r\n chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage &&\r\n isPin\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage && isPin) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n await props.helperFunctions.sendCreatorAuthChanged(\r\n channel,\r\n vaultId,\r\n pinToUse?.hashed,\r\n props.vaultData.hashedVaultPin,\r\n Date.now()\r\n ),\r\n setCustomSuccessText(\r\n `You have successfully reset your account ${\r\n isPin ? \"4-Digits PIN\" : \"Passkey\"\r\n }. ${\r\n isPin\r\n ? \"Login with the new 4-Digits PIN\"\r\n : \"your new Passkey will be used to authenticate your account.\"\r\n }`\r\n );\r\n setShowCustomSuccess(true);\r\n } else if (!res?.shouldStop) {\r\n props.setStep(\"5\");\r\n } else if (res?.shouldStop && props.action !== \"getPk\") {\r\n setCustomSuccessText(\"\");\r\n setShowCustomSuccess(true);\r\n } else if (res?.shouldStop && props.action === \"getPk\") {\r\n props.setStep(\"0\");\r\n }\r\n } else if (res === null) {\r\n if (props.action === \"reset-pin\") {\r\n setPinIncorrectText(\"Reset pin failed. Try again later.\");\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\r\n `You are an existing user. Please use the right ${\r\n isPin\r\n ? \"existing 4-Digits PIN\"\r\n : \"existing Passkey for\" + \" \" + vaultId\r\n } to recover your account login access on this device/browser`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n setPinIncorrectText(\r\n \"Unexpected error while creating account. Please try again later.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (!isConfirmActive()) {\r\n setPinIncorrectText(\r\n props.isExistingUser\r\n ? \"Enter full pin.\"\r\n : \"New Pin must match Confirm Pin.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n if (\r\n (vaultPin?.length === 4 &&\r\n props?.vaultData?.hashedVaultId &&\r\n props.vaultData?.hashedVaultPin &&\r\n vaultId) ||\r\n (vaultRawId &&\r\n props?.vaultData?.hashedVaultId &&\r\n props.vaultData?.hashedVaultPin &&\r\n vaultId)\r\n ) {\r\n props.setIsLoading(true);\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = isPin\r\n ? hashTheString(vaultPin)\r\n : hashTheBuffer(vaultRawId);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n channel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.vaultData?.hashedVaultId,\r\n props.vaultData?.hashedVaultPin,\r\n props.vaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n vaultContract\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (\r\n res &&\r\n !vaultData?.isExisting &&\r\n props.setShowSuccessBtn &&\r\n props.setSuccessBtnText &&\r\n props.setSuccessBtnNeutText &&\r\n props.setActionHeaderText &&\r\n props.setActionFooterText\r\n ) {\r\n props.setShowSuccessBtn(true);\r\n props.setSuccessBtnText(\"Continue Setting Up Your Account\");\r\n props.setSuccessBtnNeutText(\"Do It Later\");\r\n props.setActionHeaderText(\"Successful\");\r\n props.setActionFooterText(\r\n accepted\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.vaultData?.vaultId}`\r\n );\r\n props.setStep(\"5\");\r\n } else if (res && vaultData?.isExisting) {\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <ScrollView\r\n contentContainerStyle={{\r\n flexGrow: 1,\r\n padding: 16,\r\n backgroundColor: \"#fff\",\r\n }}\r\n >\r\n {fontsLoaded && (\r\n <React.Fragment>\r\n {!showCustomSuccess && !showInvitation && (\r\n <React.Fragment>\r\n {!showImportAcct && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupLanguage }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin\r\n ? \"Create PIN\"\r\n : \"Secure Your Account with a Passkey\"}\r\n </Text>\r\n )}\r\n {props.isExistingUser && props.action !== \"reset-pin\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin\r\n ? \"Enter PIN\"\r\n : \"Sign-in with Existing Passkey\"}\r\n </Text>\r\n )}\r\n {props.isExistingUser && props.action === \"reset-pin\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin ? \"Change Pin\" : \"Change Passkey\"}\r\n </Text>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Protect your blockchain assets with{\" \"}\r\n {isPin ? \"PIN\" : \"Passkey\"}. This{\" \"}\r\n {isPin ? \"PIN\" : \"Passkey\"} will be required for all\r\n future transactions and logins.\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <React.Fragment>\r\n {props.action !== \"reset-pin\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Welcome back, please login using{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {isPin\r\n ? \"existing 4-Digits PIN\"\r\n : \"existing Passkey\"}\r\n </Text>{\" \"}\r\n for your{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`}\r\n </Text>{\" \"}\r\n account.\r\n </Text>\r\n )}\r\n\r\n {props.action === \"reset-pin\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Welcome back, Create new\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {isPin ? \"4-Digits PIN\" : \"Passkey\"}\r\n </Text>{\" \"}\r\n for your{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`}\r\n </Text>{\" \"}\r\n account.\r\n </Text>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </View>\r\n </View>\r\n\r\n {!isPin && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerMoreBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a passkey?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A passkey replaces passwords. Only your device can\r\n unlock it via PIN, Face/Voice/Fingerprint.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Your passkey is stored in your cloud account such as\r\n Apple iCloud Keychain, Google Password Manager, or\r\n Microsoft Account and synchronized across all devices.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In the event of device loss, as long as you have\r\n access to your cloud account, you can recover your\r\n passkey.\r\n </Text>\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click \"Create New Passkey\" button, passkey setup\r\n popup will appears to create new passkey and secure\r\n your account.\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click{\" \"}\r\n {props.action === \"reset-pin\"\r\n ? \"Create New Passkey\"\r\n : \"Login With Passkey\"}{\" \"}\r\n button, passkey popup will appears{\" \"}\r\n {props.action === \"reset-pin\"\r\n ? \"to create new passkey and secure your account\"\r\n : \"to login using the accoun't passkey.\"}\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={() => {\r\n if (!isReactNative) {\r\n window?.open(\r\n \"https://blog.google/inside-google/googlers/ask-a-techspert/how-passkeys-work\",\r\n \"_blank\"\r\n );\r\n }\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More about Passkey\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n\r\n {isPin && (\r\n <React.Fragment>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputContainer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPinInputContainerText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-pin-input-container-text\"\r\n >\r\n New PIN\r\n </Text>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputGroup }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {pin.map((_, idx) => (\r\n <TextInput\r\n key={`pin-${idx}`}\r\n style={\r\n isReactNative && pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInputRed }\r\n : isReactNative && pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n secureTextEntry={pinHide}\r\n keyboardType=\"number-pad\"\r\n maxLength={1}\r\n ref={(el: any) => (pinRefs.current[idx] = el)}\r\n value={pin[idx]}\r\n onChangeText={(text: any) =>\r\n handleTextChange(text, idx, false)\r\n }\r\n onKeyPress={(e: any) =>\r\n handleKeyPress(e, idx, e, false)\r\n }\r\n />\r\n ))}\r\n </View>\r\n\r\n {props.isExistingUser && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {!pinIncorrect && <Text></Text>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct pin\r\n </Text>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {!pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(true)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinShow }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n {pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(false)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinHide }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n )}\r\n </View>\r\n\r\n {!props.isExistingUser && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPinInputContainerText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-pin-input-container-text\"\r\n >\r\n Confirm PIN\r\n </Text>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputGroup }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {confirmPin.map((_, idx) => (\r\n <TextInput\r\n key={`confirm-${idx}`}\r\n style={\r\n isReactNative && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputRed,\r\n }\r\n : isReactNative && !pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n secureTextEntry={pinHide}\r\n keyboardType=\"number-pad\"\r\n maxLength={1}\r\n ref={(el: any) =>\r\n (confirmPinRefs.current[idx] = el)\r\n }\r\n value={confirmPin[idx]}\r\n onChangeText={(text: any) =>\r\n handleTextChange(text, idx, true)\r\n }\r\n onKeyPress={(e: any) =>\r\n handleKeyPress(e, idx, e, true)\r\n }\r\n />\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {!pinIncorrect && <Text></Text>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct pin\r\n </Text>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {!pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(true)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinShow }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n {pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(false)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinHide }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: 20 }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFooterFirstSection,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-footer-first-section\"\r\n >\r\n {!isPin && (\r\n <React.Fragment>\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <React.Fragment>\r\n {props.action === \"reset-pin\" && !isPin && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n color: \"#603FF4\",\r\n margin: \"10px\",\r\n }\r\n : { color: \"#603FF4\", margin: \"10px\" }\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Note: Before starting this process ensure you\r\n have backed up your private key. To do so,\r\n please navigate to the \"Account\" section on\r\n your dashboard and click on \"View Private\r\n Key.\" Once displayed, write down the private\r\n key and store it securely. Incomplete passkey\r\n change process may result in loss of access to\r\n your account.\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n onPress={async (e: any) => {\r\n if (props.action === \"reset-pin\") {\r\n const credentialIdHashed =\r\n await createPasskey();\r\n if (credentialIdHashed) {\r\n await handleVaultManagement(\r\n credentialIdHashed\r\n );\r\n }\r\n } else {\r\n const credentialIdHashed =\r\n await requestPasskey();\r\n\r\n if (credentialIdHashed) {\r\n await handleVaultManagement(\r\n credentialIdHashed\r\n );\r\n }\r\n }\r\n }}\r\n >\r\n {props.action === \"reset-pin\" && (\r\n <Text>Create New Passkey</Text>\r\n )}\r\n {props.action !== \"reset-pin\" && (\r\n <Text>Login With Passkey</Text>\r\n )}\r\n </TouchableOpacity>\r\n </React.Fragment>\r\n )}\r\n\r\n {!props.isExistingUser && (\r\n <React.Fragment>\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n onPress={async (e: any) => {\r\n const credentialIdHashed =\r\n await createPasskey();\r\n if (credentialIdHashed) {\r\n await handleVaultManagement(\r\n credentialIdHashed\r\n );\r\n }\r\n }}\r\n >\r\n <Text>Create New Account</Text>\r\n </TouchableOpacity>\r\n\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-amount-info-separator\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPPaymentPortalAmountInfoSeparator,\r\n }\r\n : {}\r\n }\r\n >\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-line\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPPaymentPortalLine,\r\n }\r\n : {}\r\n }\r\n ></View>\r\n <Text\r\n className=\"verified-custd-mdl-p-payment-portal-separator-text\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPaymentPortalSeparatorText,\r\n }\r\n : {}\r\n }\r\n >\r\n OR\r\n </Text>\r\n <View\r\n className=\"verified-custd-mdl-p-p-payment-portal-line\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPPPaymentPortalLine,\r\n }\r\n : {}\r\n }\r\n ></View>\r\n </View>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n border: \"1px solid #0c0c0e\",\r\n }\r\n : {\r\n border:\r\n \"1px solid var(--Neutral-950, #0c0c0e)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-startup-button-click\"\r\n onPress={async (e: any) => {\r\n setShowImportAcct(true);\r\n }}\r\n >\r\n <Text>Import An Existing account</Text>\r\n </TouchableOpacity>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {isPin && (\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative && isConfirmActive()\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : isReactNative && !isConfirmActive()\r\n ? { ...styles.verifiedCustdMdlStartupButton }\r\n : {}\r\n }\r\n className={\r\n isConfirmActive()\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={async (e: any) => {\r\n await handleVaultManagement();\r\n }}\r\n >\r\n <Text>Proceed</Text>\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n {showImportAcct && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupLanguage }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n Import Existing Account\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInput,\r\n marginTop: \"20px\",\r\n marginBottom: \"20px\",\r\n }\r\n : { marginTop: \"20px\", marginBottom: \"20px\" }\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <TextInput\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactSecondSection }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Private key starting with 0x\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n value={enteredPk}\r\n onChangeText={(text: string) => {\r\n setEnteredPk(text);\r\n }}\r\n />\r\n {privateKeyError?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlInputErrorText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {privateKeyError}\r\n </Text>\r\n )}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerMoreBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a passkey?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A passkey replaces passwords. Only your device can unlock\r\n it via PIN, Face/Voice/Fingerprint.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Your passkey is stored in your cloud account such as Apple\r\n iCloud Keychain, Google Password Manager, or Microsoft\r\n Account and synchronized across all devices.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In the event of device loss, as long as you have access to\r\n your cloud account, you can recover your passkey.\r\n </Text>\r\n\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click \"Proceed With Passkey\" button, passkey setup popup\r\n will appears to create new passkey and secure your\r\n account.\r\n </Text>\r\n\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={() => {\r\n if (!isReactNative) {\r\n window?.open(\r\n \"https://blog.google/inside-google/googlers/ask-a-techspert/how-passkeys-work\",\r\n \"_blank\"\r\n );\r\n }\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More about Passkey\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: 20 }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFooterFirstSection,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-footer-first-section\"\r\n >\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative && isConfirmActiveImp()\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : isReactNative && !isConfirmActiveImp()\r\n ? { ...styles.verifiedCustdMdlStartupButton }\r\n : {}\r\n }\r\n className={\r\n isConfirmActiveImp()\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={async (e: any) => {\r\n try {\r\n if (!isConfirmActiveImp()) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\r\n \"Invalid private key entered. Please scroll up, check private key and try again.\"\r\n );\r\n return;\r\n }\r\n const walletAndContractDetails =\r\n await initWalletAndContract(chainId, enteredPk);\r\n if (\r\n !walletAndContractDetails?.chainId ||\r\n !walletAndContractDetails?.address ||\r\n !walletAndContractDetails?.pk ||\r\n !walletAndContractDetails?.provider ||\r\n !walletAndContractDetails?.signer ||\r\n !walletAndContractDetails?.vaultContract\r\n ) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\r\n \"Invalid private key entered. Please check private key starts with 0x and try again.\"\r\n );\r\n return;\r\n }\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultData(walletAndContractDetails.vaultData);\r\n setVaultContract(\r\n walletAndContractDetails.vaultContract\r\n );\r\n\r\n const credentialIdHashed = await createPasskey();\r\n\r\n if (credentialIdHashed) {\r\n await handleVaultManagement({\r\n ...credentialIdHashed,\r\n pk: walletAndContractDetails.pk,\r\n vaultContract:\r\n walletAndContractDetails.vaultContract,\r\n signer: walletAndContractDetails.signer,\r\n address: walletAndContractDetails.address,\r\n vaultData: walletAndContractDetails.vaultData,\r\n });\r\n }\r\n } catch (err) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\r\n \"Error while importing account.try again later.\"\r\n );\r\n return;\r\n }\r\n }}\r\n >\r\n <Text>Proceed With Passkey</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {!showCustomSuccess && showInvitation && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <View\r\n className=\"verified-custd-mdl-startup-language\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupLanguage,\r\n padding: 0,\r\n position: \"relative\",\r\n }\r\n : { padding: 0, position: \"relative\" }\r\n }\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.vaultData?.vaultId}\r\n </Text>{\" \"}\r\n has requested you to be a Co-Signer\r\n </Text>\r\n </View>\r\n </View>\r\n <Image\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerBodyIcon }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon1 }}\r\n />\r\n {!showRejectInvitation && (\r\n <ScrollView>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerMoreBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a Co-Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : { fontSize: 12, color: \"#5B5D6E\" }\r\n }\r\n >\r\n A Co-Signer is a person who has the right given by you\r\n to generate a new pin on your behalf incase you forget\r\n it.\r\n </Text>\r\n\r\n <View className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image source={{ uri: imageAssets.pkicon }} />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n As a Co Signer you can help{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n reset PIN\r\n </Text>\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.encryptedIcon }}\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n Don’t worry, they{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n will not get access\r\n </Text>{\" \"}\r\n to your account in any way.\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n onPress={() => setShowRejectInvitation(true)}\r\n >\r\n <Text>Reject</Text>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n onPress={async () => {\r\n await handleAcceptAndRejectInvitation(true);\r\n }}\r\n >\r\n <Text>Accept</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </ScrollView>\r\n )}\r\n\r\n {showRejectInvitation && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContentOutter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-title\"\r\n >\r\n Are you sure you want to reject this request?\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyLabel,\r\n fontSize: 12,\r\n color: \"#5B5D6E\",\r\n }\r\n : { fontSize: 12, color: \"#5B5D6E\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.vaultData?.vaultId}\r\n </Text>\r\n , you will not be able to reset the PIN for them.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n width: \"90%\",\r\n }\r\n : { width: \"90%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n onPress={async () => {\r\n await handleAcceptAndRejectInvitation(false);\r\n }}\r\n >\r\n <Text>Yes</Text>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n onPress={() => setShowRejectInvitation(false)}\r\n >\r\n <Text>No</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n {showInvitationSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n !showRejectInvitation\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer request from ${props.vaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showCustomSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n customSuccessText?.length > 0\r\n ? customSuccessText\r\n : \"You have successfully logged in your account.\"\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default CreatePinPage;\r\n","import React, { useEffect } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst Success = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n setStep?: (step: string) => void;\r\n handleShowDashboard?: () => void;\r\n stepToSet?: string;\r\n messageTosend?: { type: string; key?: string; value?: any };\r\n customTextHeader: string;\r\n customTextFooter: string;\r\n showButton?: boolean;\r\n showText?: boolean;\r\n buttonText?: string;\r\n buttonNeutText?: string;\r\n buttonFunc?: any;\r\n buttonNeutFunc?: any;\r\n action?: string;\r\n actionHeaderText?: string;\r\n actionFooterText?: string;\r\n timeoutTime?: number;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n EventEmitter,\r\n } = props.platform;\r\n useEffect(() => {\r\n let timeoutId: any;\r\n if (!props.showButton) {\r\n timeoutId = setTimeout(() => {\r\n if (props.messageTosend) {\r\n try {\r\n const windowObj = !isReactNative ? window : null;\r\n if (!isReactNative && chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage(props.messageTosend, (res) => {\r\n if (res && props.action !== \"signRecovery\") {\r\n windowObj?.close();\r\n }\r\n });\r\n } else if (!isReactNative && !chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(props.messageTosend?.type, {\r\n detail: {\r\n value: props.messageTosend?.value,\r\n },\r\n });\r\n windowObj?.dispatchEvent(event);\r\n } else if (isReactNative && EventEmitter) {\r\n const vaultEventEmitter = new EventEmitter();\r\n vaultEventEmitter.emit(props.messageTosend?.type, {\r\n value: props.messageTosend?.value,\r\n });\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error sending message: \", err);\r\n }\r\n }\r\n }\r\n\r\n if (props.setStep && props.stepToSet) {\r\n props.setStep(props.stepToSet);\r\n }\r\n }, props.timeoutTime ?? 3000);\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n };\r\n }, []);\r\n\r\n const handleContinue = () => {\r\n props.setStep?.(\"6\");\r\n };\r\n\r\n const handleClosePopup = () => {\r\n if (!isReactNative && chrome.runtime) {\r\n chrome.runtime.sendMessage({\r\n type: \"VW_REQ\",\r\n params: { method: \"closePopup\" },\r\n });\r\n }\r\n };\r\n\r\n const handleShowDashboard = () => {\r\n props.handleShowDashboard();\r\n };\r\n\r\n return (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlSuccessPopupContentContainer,\r\n alignContent: \"center\",\r\n justifyContent: \"center\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n padding: 0,\r\n }\r\n : {\r\n alignContent: \"center\",\r\n justifyContent: \"center\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n padding: 0,\r\n }\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-container\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlSuccessPopupContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content\"\r\n >\r\n <Image\r\n style={{ width: \"90%\" }}\r\n source={{ uri: imageAssets.successIcon }}\r\n alt=\"Success Icon\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlSuccessPopupContentText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlSuccessPopupContentTextHeader }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-text-header\"\r\n >\r\n {!props?.showButton\r\n ? props.customTextHeader\r\n : props.actionHeaderText}\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlSuccessPopupContentTextFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-text-footer\"\r\n >\r\n {!props?.showButton\r\n ? props.customTextFooter\r\n : props.actionFooterText}\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n {props.showButton && props.buttonText?.length > 0 && (\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive, marginTop: 10 }\r\n : { marginTop: 10 }\r\n }\r\n onPress={() => {\r\n if (props.action === \"invitation\") {\r\n handleContinue();\r\n } else if (props.action === \"completeRecovery\") {\r\n handleShowDashboard();\r\n } else if (props.buttonFunc) {\r\n props.buttonFunc();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n <Text style={{ fontSize: 14 }}>{props.buttonText}</Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n {props.showButton && props.buttonNeutText?.length > 0 && (\r\n <TouchableOpacity\r\n onPress={() => {\r\n if (props.action === \"invitation\") {\r\n handleClosePopup();\r\n } else if (props.buttonNeutFunc) {\r\n props.buttonNeutFunc();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-click\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupButtonClick, marginTop: 10 }\r\n : { marginTop: 10 }\r\n }\r\n >\r\n <Text style={{ fontSize: 14 }}>{props.buttonNeutText}</Text>\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nexport default Success;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { imageAssets, numberPositionsFmt } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { completeVaultCreation } from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport {\r\n hashTheString,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport { ethers } from \"ethers\";\r\nimport { contractAddress, Provider } from \"@verified-network/verified-sdk\";\r\nimport { ChainConfig } from \"../utils/config\";\r\nimport Success from \"../components/success\";\r\n\r\nconst AddCosignersPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n action?: string;\r\n setShowDashboard?: (showDashboard: boolean) => void;\r\n setShowResetPin?: (showResetPin: boolean) => void;\r\n setShowRemoveCosigner?: (showRemoveCosigner: boolean) => void;\r\n dashbordElement?: React.ComponentType<{\r\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n }>;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [showLearnMore, setShowLearnMore] = useState<boolean>(false);\r\n const [learnMoreStep, setLearnMoreStep] = useState<string>(\"1\");\r\n const [cosignerStep, setCosignerStep] = useState<string>(\"1\");\r\n const [showAddMore, setShowAddMore] = useState<boolean>(false);\r\n const [addChannel, setAddChannel] = useState<string>(\"email\");\r\n const [coSignerNumber, setCoSignerNumber] = useState<string>(\"\");\r\n const [coSignerNumberFmt, setCoSignerNumberFmt] = useState<string>(\"\");\r\n const [coSignerEmail, setCoSignerEmail] = useState<string>(\"\");\r\n const [coSignerName, setCoSignerName] = useState<string>(\"\");\r\n const [userInput, setUserInput] = useState<string>(\"\");\r\n const [searchActive, setSearchActive] = useState<boolean>(false);\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [coSigners, setCosigners] = useState([]);\r\n const [existingCosignersNumber, setExistingCosignersNumber] = useState(0);\r\n const [existingCosigners, setExistingCosigners] = useState([]);\r\n const [remainingCosigners, setRemainingCosigners] = useState([]);\r\n const [showSetRule, setShowSetRule] = useState<boolean>(false);\r\n const [requiredSigners, setRequiredSigners] = useState<number>(2);\r\n const [errorText, setErrorText] = useState<string>(\"\");\r\n const [showRemoveSuccess, setShowRemoveSuccess] = useState<boolean>(false);\r\n\r\n const { pk, vaultData, vaultContract, chainId, signer } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else {\r\n //load fonts with expo-font for react native.\r\n try {\r\n const _ = await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } catch (err) {\r\n setFontsLoaded(false);\r\n }\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleFetchUserCosigners = async () => {\r\n if (props.setIsLoading) {\r\n props.setIsLoading(true);\r\n }\r\n const hashedVaultId = hashTheString(\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`\r\n );\r\n const quorumSet = await vaultContract.getQuorum(hashedVaultId);\r\n if (quorumSet?.status === 0 && quorumSet?.response?.result?.length > 0) {\r\n const cosignersNumber = Number(quorumSet?.response?.result[0]);\r\n setExistingCosignersNumber(cosignersNumber);\r\n setRemainingCosigners(new Array(cosignersNumber).fill(\" \"));\r\n }\r\n if (props.setIsLoading) {\r\n props.setIsLoading(false);\r\n }\r\n if (vaultData?.existingCosignersHashed?.length > 0) {\r\n setExistingCosigners([...new Set(vaultData?.existingCosignersHashed)]);\r\n setRemainingCosigners([...new Set(vaultData?.existingCosignersHashed)]);\r\n return;\r\n }\r\n const cntAddresses: any = contractAddress;\r\n const custodyAddress = cntAddresses[chainId]?.Custody;\r\n if (!custodyAddress) {\r\n return;\r\n }\r\n const custodyEventAbi = [\r\n {\r\n anonymous: false,\r\n inputs: [\r\n {\r\n indexed: false,\r\n name: \"creator\",\r\n type: \"bytes32\",\r\n },\r\n {\r\n indexed: false,\r\n name: \"participant\",\r\n type: \"bytes32\",\r\n },\r\n ],\r\n name: \"NewParticipant\",\r\n type: \"event\",\r\n },\r\n ];\r\n const etherCustodyContract = new ethers.Contract(\r\n custodyAddress,\r\n custodyEventAbi,\r\n signer\r\n );\r\n if (!etherCustodyContract) {\r\n return;\r\n }\r\n const iface = new ethers.Interface(custodyEventAbi);\r\n const eventFragment = iface.getEvent(\"NewParticipant\");\r\n const topicHash = eventFragment.topicHash;\r\n\r\n const provider = new Provider(ChainConfig[chainId]?.rpcUrls[0]);\r\n\r\n const logs = await provider?.getLogs({\r\n address: custodyAddress,\r\n fromBlock: ChainConfig[chainId]?.custodyContractBlock || 0,\r\n toBlock: \"latest\",\r\n topics: [topicHash],\r\n });\r\n\r\n const userParticipants = logs\r\n ?.map((log: any) => {\r\n const parsedLog = iface.parseLog(log);\r\n if (\r\n parsedLog?.args?.creator?.toLowerCase() ===\r\n hashTheString(\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\" \", \"\")}`\r\n ) &&\r\n parsedLog?.args?.creator !== parsedLog?.args?.participant\r\n )\r\n return parsedLog?.args?.participant;\r\n else return null;\r\n })\r\n ?.filter((participant: any) => participant !== null);\r\n\r\n setExistingCosigners([...new Set(userParticipants)]);\r\n setRemainingCosigners([...new Set(userParticipants)]);\r\n };\r\n\r\n if (\r\n (props.userEmail?.length > 0 &&\r\n props.action === \"remove-cosigner\" &&\r\n signer &&\r\n vaultContract) ||\r\n (props.userNumberFmt?.length > 0 &&\r\n props.action === \"remove-cosigner\" &&\r\n signer &&\r\n vaultContract)\r\n ) {\r\n handleFetchUserCosigners();\r\n }\r\n }, [\r\n props.userEmail,\r\n props.action,\r\n props.userNumberFmt,\r\n props.selectedCountry.area,\r\n ]);\r\n\r\n const handleButtonDisplay = () => {\r\n // const button = document.getElementById(\"add-cosigner-button\");\r\n // if (button && coSigners?.length > 0) {\r\n // button.className = \"startup-button-active\";\r\n // } else {\r\n // button!.className = \"startup-button\";\r\n // }\r\n };\r\n\r\n const handleAddCoSigner = () => {\r\n let coSignerLength = coSigners?.length;\r\n if (addChannel === \"sms\" && coSignerNumber?.length === 0) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"sms\" && coSignerNumber?.length !== 10) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"email\" && coSignerEmail?.length === 0) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(coSignerEmail)\r\n ) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n coSigners?.find((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() + sig?.number?.toLowerCase() ===\r\n selectedCountry.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase()\r\n : sig?.email?.toLowerCase() === coSignerEmail?.toLowerCase()\r\n )\r\n ) {\r\n if (props.action !== \"remove-cosigner\") {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number is already a co-signer\"\r\n : \"Invalid input, email is already a co-signer\"\r\n );\r\n }\r\n if (props.action === \"remove-cosigner\") {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number is already added to list of co-signers to remove\"\r\n : \"Invalid input, email is already added to list of co-signers to remove\"\r\n );\r\n }\r\n return;\r\n } else if (\r\n addChannel === \"sms\" &&\r\n selectedCountry?.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase() ===\r\n props.selectedCountry.area?.toLowerCase() +\r\n props.userNumberFmt?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, phone number is creator's phone number\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n coSignerEmail?.toLowerCase() === props.userEmail?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, email is creator's email\");\r\n return;\r\n } else if (\r\n props.action === \"remove-cosigner\" &&\r\n existingCosigners?.length === 0\r\n ) {\r\n setErrorText(\r\n \"Error while fetching your existing cosigners. Try again later\"\r\n );\r\n return;\r\n } else if (\r\n props.action === \"remove-cosigner\" &&\r\n !existingCosigners?.includes(\r\n hashTheString(\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail\r\n )\r\n )\r\n ) {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number entered is not a valid co-signer of your account.\"\r\n : \"Invalid input, email entered is not a valid co-signer of your account.\"\r\n );\r\n return;\r\n } else if (\r\n props.action === \"remove-cosigner\" &&\r\n remainingCosigners?.length === 1\r\n ) {\r\n setErrorText(\r\n \"You have only 1 co-signer left, at least one(1) co-signer is required.\"\r\n );\r\n return;\r\n } else if (coSignerLength + 1 === 5) {\r\n setErrorText(\r\n \"You cannot add more than 5 Co-signers to your account. You can delete existing cosigner and add new one.\"\r\n );\r\n return;\r\n }\r\n setErrorText(\"\");\r\n\r\n setCosigners((cngs) => [\r\n {\r\n name: coSignerName,\r\n email: coSignerEmail,\r\n number: coSignerNumberFmt,\r\n phoneNumber: `+${selectedCountry?.area}${coSignerNumber}`,\r\n otpChannel: addChannel,\r\n phoneArea: selectedCountry?.area,\r\n position: cngs?.length + 1,\r\n vaultId:\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail,\r\n },\r\n ...cngs,\r\n ]);\r\n setCoSignerEmail(\"\");\r\n setCoSignerName(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n if (coSignerLength + 1 === 4) {\r\n setShowAddMore(false);\r\n }\r\n if (props.action === \"remove-cosigner\" && remainingCosigners?.length > 1) {\r\n setRemainingCosigners(\r\n remainingCosigners?.filter(\r\n (sig) =>\r\n sig !==\r\n hashTheString(\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail\r\n )\r\n )\r\n );\r\n }\r\n };\r\n\r\n const handleCompleteVault = async () => {\r\n const keyHolders =\r\n props.action !== \"remove-cosigner\"\r\n ? [\r\n {\r\n otpChannel: props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n email: props?.userEmail,\r\n phoneNumber: `+${\r\n props?.selectedCountry?.area\r\n }${props?.userNumberFmt?.replace(\" \", \"\")}`,\r\n vaultId: vaultData?.vaultId,\r\n },\r\n ...coSigners,\r\n ]\r\n : [vaultData?.hashedVaultId, ...remainingCosigners];\r\n\r\n if (\r\n (props.action !== \"remove-cosigner\" &&\r\n keyHolders?.length > 0 &&\r\n coSigners?.length > 0 &&\r\n requiredSigners &&\r\n vaultData?.vaultId &&\r\n vaultData?.hashedVaultId &&\r\n vaultContract &&\r\n pk &&\r\n props.helperFunctions?.sendCoSignerInvitation &&\r\n props.helperFunctions?.sendCreatorConfirmation) ||\r\n (props.action === \"remove-cosigner\" &&\r\n keyHolders?.length > 1 &&\r\n requiredSigners &&\r\n vaultData?.vaultId &&\r\n vaultData?.hashedVaultId &&\r\n vaultContract &&\r\n pk &&\r\n props.helperFunctions?.sendCoSignerInvitation &&\r\n props.helperFunctions?.sendCreatorConfirmation)\r\n ) {\r\n props.setIsLoading(true);\r\n await completeVaultCreation(\r\n props.helperFunctions.sendCoSignerInvitation,\r\n props.helperFunctions.sendCreatorConfirmation,\r\n keyHolders,\r\n coSigners,\r\n props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n requiredSigners,\r\n vaultData.vaultId,\r\n vaultData.hashedVaultId,\r\n vaultData.vaultPin,\r\n vaultData.hashedVaultPin,\r\n vaultContract,\r\n pk,\r\n vaultData?.rawId,\r\n props.action\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n props.action === \"remove-cosigner\"\r\n ? setShowRemoveSuccess(true)\r\n : props.setStep(\"7\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupLanguage, padding: \"0\" }\r\n : { padding: \"0\" }\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n {fontsLoaded && !showRemoveSuccess && (\r\n <React.Fragment>\r\n {!showLearnMore && (\r\n <React.Fragment>\r\n {cosignerStep === \"1\" && (\r\n <React.Fragment>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"2\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {props.action === \"remove-cosigner\"\r\n ? \"You can remove an existing Co-signer\"\r\n : \" We require you to add at least another Co-Signer.\"}\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <Image\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerBodyIcon }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon1 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.pkicon }}\r\n alt=\"icon\"\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n This is a blockchain based platform where{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n we do not store password keys.\r\n </Text>\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.encryptedIcon }}\r\n alt=\"icon\"\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n Don’t worry, the{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n Co-Signer does not get access\r\n </Text>{\" \"}\r\n to your account in any way.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.supervise }}\r\n alt=\"icon\"\r\n />\r\n </View>\r\n {props.action !== \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n You can{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n be your own Co-Signer\r\n </Text>{\" \"}\r\n by adding a different contact number or Email ID. to\r\n your account in any way.\r\n </Text>\r\n )}\r\n\r\n {props.action === \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n You may remove an existing Co-signer; however{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n at least one (1) Co-signer must remain\r\n </Text>{\" \"}\r\n on the account. You can manage your account’s\r\n Co-signers on the next page.\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerButtonsCont }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n }\r\n onPress={() => {\r\n setLearnMoreStep(\"1\");\r\n setShowLearnMore(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Learn More</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n width: \"50%\",\r\n }\r\n : {\r\n width: \"50%\",\r\n }\r\n }\r\n onPress={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>\r\n {props.action === \"remove-cosigner\"\r\n ? \"Manage Signers\"\r\n : \"Add Co-Signer\"}\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n\r\n {cosignerStep === \"2\" && (\r\n <React.Fragment>\r\n {\" \"}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"2\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContent,\r\n gap: 16,\r\n }\r\n : { gap: 16 }\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {props.action === \"remove-cosigner\"\r\n ? \"Remove your Co-signers\"\r\n : \"Add your Co-Signers\"}\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n {!showSetRule && (\r\n <React.Fragment>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-text\"\r\n >\r\n {props.action === \"remove-cosigner\"\r\n ? \"Input phone number/an Email ID of the Co-Signer you want to remove\"\r\n : \"Add a phone number/an Email ID of Co-Signer to send them a request.\"}\r\n </Text>\r\n\r\n {props.action === \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-text\"\r\n >\r\n You Signing rule is{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoTextBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-text-bold\"\r\n >\r\n {existingCosignersNumber} required signers\r\n </Text>\r\n </Text>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoTextBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-text-bold\"\r\n >\r\n NOTE:\r\n </Text>{\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \"You cannot remove all Co-signers at least one(1) must remain, This is to ensure your account is secured.\"\r\n : \"You can add yourself as a Co-Signer and further add more Co-Signers to your account.\"}\r\n </Text>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerStep2Body }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body\"\r\n >\r\n {props.action === \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\"\r\n >\r\n Creator\r\n </Text>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\"\r\n >\r\n You\r\n </Text>\r\n\r\n {props.userEmail?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n {props.userEmail}\r\n </Text>\r\n )}\r\n {props.userEmail?.length === 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n (+{props.selectedCountry.area}){\" \"}\r\n {props.userNumberFmt}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeaderFirstText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header-first-text\"\r\n >\r\n {props.action === \"remove-cosigner\"\r\n ? \"Remove Co-signers\"\r\n : \"Add Co-Signers\"}\r\n </Text>\r\n\r\n {props.action !== \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeaderSecondText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header-second-text\"\r\n >\r\n (\r\n {coSigners?.length + 1 < 5\r\n ? coSigners?.length + 1\r\n : 5}\r\n /5)\r\n </Text>\r\n )}\r\n {props.action === \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeaderSecondText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header-second-text\"\r\n >\r\n ({coSigners?.length}\r\n /5)\r\n </Text>\r\n )}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header\"\r\n >\r\n {props.action === \"remove-cosigner\" &&\r\n remainingCosigners?.includes(\" \") && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text\"\r\n >\r\n Fetching previous Co-signers...\r\n </Text>\r\n )}\r\n {props.action !== \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\"\r\n >\r\n Creator\r\n </Text>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\"\r\n >\r\n You\r\n </Text>\r\n\r\n {props.userEmail?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n {props.userEmail}\r\n </Text>\r\n )}\r\n {props.userEmail?.length === 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n (+{props.selectedCountry.area}){\" \"}\r\n {props.userNumberFmt}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n\r\n {/* <TouchableOpacity className=\"verified-custd-mdl-a-c-2-b-content-header-body-button\">\r\n <Text>Add Self</Text>\r\n </TouchableOpacity> */}\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!showSetRule &&\r\n coSigners\r\n .sort((a, b) => a?.position - b?.position)\r\n .map((cng, idx) => (\r\n <View\r\n key={idx}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\"\r\n >\r\n {\r\n numberPositionsFmt[\r\n cng?.position\r\n ]?.split(\" \")[0]\r\n }\r\n <Text>\r\n <Text style={{ fontSize: 10 }}>\r\n {/* sup replacement */}\r\n {\r\n numberPositionsFmt[\r\n cng?.position\r\n ]?.split(\" \")[1]\r\n }\r\n </Text>\r\n </Text>{\" \"}\r\n Co-Signer{\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \"To Remove\"\r\n : \"\"}\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\"\r\n >\r\n {cng?.name}\r\n </Text>\r\n\r\n {cng.otpChannel === \"email\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n {cng.email}\r\n </Text>\r\n )}\r\n {cng.otpChannel === \"sms\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n (+{cng?.phoneArea}) {cng.number}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderIcons,\r\n flexDirection: \"row\",\r\n }\r\n : { flexDirection: \"row\" }\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-icons\"\r\n >\r\n {/* <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.editBlack }}\r\n />\r\n </TouchableOpacity> */}\r\n\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => {\r\n setCosigners((cngs) =>\r\n cngs\r\n ?.filter((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() +\r\n sig?.number?.toLowerCase() !==\r\n cng?.phoneArea?.toLowerCase() +\r\n cng?.number?.toLowerCase()\r\n : sig?.email?.toLowerCase() !==\r\n cng?.email?.toLowerCase()\r\n )\r\n ?.map((nSig, newId) => {\r\n nSig.position = newId + 1;\r\n return nSig;\r\n })\r\n );\r\n handleButtonDisplay();\r\n }}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.delete }}\r\n />\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n ))}\r\n </View>\r\n\r\n {showSetRule && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContentOutter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-title\"\r\n >\r\n Specify the number of Co-Signers you need to\r\n sign off for an approval\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n By default we need 2, you can add up to 5\r\n Co-Signers as minimum sign off needed for\r\n approval.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooter,\r\n width: \"100%\",\r\n }\r\n : { width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont\"\r\n >\r\n {new Array(\r\n props.action === \"remove-cosigner\"\r\n ? remainingCosigners?.length + 1\r\n : coSigners?.length + 1\r\n )\r\n .fill(\"1\")\r\n .map((_, idx) => (\r\n <View\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind\"\r\n style={\r\n idx + 1 === requiredSigners &&\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterInd,\r\n }\r\n : idx + 1 === requiredSigners &&\r\n !isReactNative\r\n ? {}\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterInd,\r\n height: 0,\r\n width: 0,\r\n overflow: \"hidden\",\r\n }\r\n : {\r\n height: 0,\r\n width: 0,\r\n overflow: \"hidden\",\r\n }\r\n }\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text\"\r\n >\r\n {String(idx + 1)}\r\n </Text>\r\n </View>\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-icon\"\r\n source={{ uri: imageAssets.pointer }}\r\n />\r\n </View>\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSlider,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider\"\r\n >\r\n {props.action !== \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative &&\r\n coSigners?.length === 1\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 / coSigners?.length\r\n }%`,\r\n }\r\n : !isReactNative &&\r\n coSigners?.length === 1\r\n ? {\r\n width: `${\r\n 100 / coSigners?.length\r\n }%`,\r\n }\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 / coSigners?.length + 5\r\n }%`,\r\n }\r\n : {\r\n width: `calc(${\r\n 100 / coSigners?.length\r\n }% + 12px)`,\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind\"\r\n >\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon\"\r\n source={{\r\n uri: imageAssets.sliderDot,\r\n }}\r\n />\r\n </View>\r\n )}\r\n {props.action === \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative &&\r\n remainingCosigners?.length === 1\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 /\r\n remainingCosigners?.length\r\n }%`,\r\n }\r\n : !isReactNative &&\r\n remainingCosigners?.length === 1\r\n ? {\r\n width: `${\r\n 100 /\r\n remainingCosigners?.length\r\n }%`,\r\n }\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 /\r\n remainingCosigners?.length +\r\n 5\r\n }%`,\r\n }\r\n : {\r\n width: `calc(${\r\n 100 /\r\n remainingCosigners?.length\r\n }% + 12px)`,\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind\"\r\n >\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon\"\r\n source={{\r\n uri: imageAssets.sliderDot,\r\n }}\r\n />\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont\"\r\n >\r\n {new Array(\r\n props.action === \"remove-cosigner\"\r\n ? remainingCosigners?.length + 1\r\n : coSigners?.length + 1\r\n )\r\n .fill(\"1\")\r\n .map((_, idx) => (\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n key={idx}\r\n onPress={() => {\r\n if (idx + 1 > 1) {\r\n setRequiredSigners(idx + 1);\r\n }\r\n }}\r\n >\r\n {props.action !==\r\n \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative &&\r\n idx === coSigners?.length\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingRight: 12,\r\n }\r\n : isReactNative && idx === 0\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingLeft: 12,\r\n }\r\n : !isReactNative && idx === 0\r\n ? { paddingLeft: 12 }\r\n : !isReactNative &&\r\n idx === coSigners?.length\r\n ? { paddingRight: 12 }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text\"\r\n >\r\n {String(idx + 1)}\r\n </Text>\r\n )}\r\n\r\n {props.action ===\r\n \"remove-cosigner\" && (\r\n <Text\r\n style={\r\n isReactNative &&\r\n idx ===\r\n remainingCosigners?.length\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingRight: 12,\r\n }\r\n : isReactNative && idx === 0\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingLeft: 12,\r\n }\r\n : !isReactNative && idx === 0\r\n ? { paddingLeft: 12 }\r\n : !isReactNative &&\r\n idx ===\r\n remainingCosigners?.length\r\n ? { paddingRight: 12 }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text\"\r\n >\r\n {String(idx + 1)}\r\n </Text>\r\n )}\r\n </TouchableOpacity>\r\n ))}\r\n </View>\r\n </View>\r\n </View>\r\n\r\n <TouchableOpacity\r\n id=\"confirm-cosigner-button\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginBottom: 10,\r\n width: \"100%\",\r\n }\r\n : { marginBottom: 10, width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n onPress={async () => {\r\n await handleCompleteVault();\r\n }}\r\n >\r\n <Text>Confirm</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {showAddMore && coSigners?.length < 4 && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreBody,\r\n width: \"90%\",\r\n }\r\n : { width: \"90%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirst,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header-text\"\r\n >\r\n Add Details\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstFooter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text\"\r\n >\r\n {\r\n numberPositionsFmt[\r\n coSigners?.length + 1\r\n ]?.split(\" \")[0]\r\n }\r\n <Text style={{ fontSize: 10 }}>\r\n {\r\n numberPositionsFmt[\r\n coSigners?.length + 1\r\n ]?.split(\" \")[1]\r\n }\r\n </Text>{\" \"}\r\n Co-Signer{\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \"To Remove\"\r\n : \"\"}\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n {props.action !== \"remove-cosigner\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreSecond,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-second\"\r\n >\r\n <TextInput\r\n onChangeText={setCoSignerName}\r\n value={coSignerName}\r\n placeholder=\"Enter Co-signer name\"\r\n placeholderTextColor=\"#B6B7C3\"\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-second-input\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreSecondInput,\r\n }\r\n : {}\r\n }\r\n />\r\n </View>\r\n )}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThird,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\"\r\n >\r\n {props.enablePhone && (\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdCont,\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }\r\n : { background: \"transparent\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\"\r\n onPress={() => {\r\n setAddChannel(\"sms\");\r\n setErrorText(\"\");\r\n setCoSignerEmail(\"\");\r\n }}\r\n >\r\n <Image\r\n source={{\r\n uri:\r\n addChannel === \"sms\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select,\r\n }}\r\n style={{ width: 24, height: 24 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdContText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\"\r\n >\r\n Phone number\r\n </Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdCont,\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }\r\n : { background: \"transparent\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\"\r\n onPress={() => {\r\n setAddChannel(\"email\");\r\n setErrorText(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n }}\r\n >\r\n <Image\r\n source={{\r\n uri:\r\n addChannel === \"email\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select,\r\n }}\r\n style={{ width: 24, height: 24 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdContText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\"\r\n >\r\n Email\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThird,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\"\r\n >\r\n {addChannel === \"sms\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInput,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactContentContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-content-container\"\r\n >\r\n <TouchableOpacity\r\n onPress={() =>\r\n setSearchActive(!searchActive)\r\n }\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFirstSection,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }\r\n : {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n >\r\n <Image\r\n source={{ uri: selectedCountry.flag }}\r\n style={{ width: 24, height: 16 }}\r\n alt=\"Country Flag\"\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSelectionText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {selectedCountry.area}\r\n </Text>\r\n\r\n {searchActive ? (\r\n <Image\r\n source={{ uri: imageAssets.arrowUp }}\r\n style={{ width: 16, height: 16 }}\r\n alt=\"Dropdown Icon\"\r\n />\r\n ) : (\r\n <Image\r\n source={{ uri: imageAssets.arrowDown }}\r\n style={{ width: 16, height: 16 }}\r\n alt=\"Dropdown Icon\"\r\n />\r\n )}\r\n </TouchableOpacity>\r\n\r\n <TextInput\r\n onChangeText={(text) => {\r\n if (text === \"\") {\r\n setUserInput(userInput + \" \");\r\n } else {\r\n setUserInput(text);\r\n }\r\n const numericInput = text.replace(\r\n /\\D/g,\r\n \"\"\r\n );\r\n setCoSignerNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (\r\n let i = 0;\r\n i < numericInput.length;\r\n i++\r\n ) {\r\n formattedNumber += numericInput[i];\r\n if (\r\n (i + 1) % 5 === 0 &&\r\n i + 1 < numericInput.length\r\n ) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n setCoSignerNumberFmt(formattedNumber);\r\n setErrorText(\"\");\r\n }}\r\n onBlur={handleButtonDisplay}\r\n value={coSignerNumberFmt}\r\n placeholder=\"Enter phone number\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n keyboardType=\"phone-pad\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSecondSection,\r\n }\r\n : {}\r\n }\r\n />\r\n </View>\r\n\r\n {searchActive && (\r\n <SearchBox\r\n platform={props.platform}\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={setSelectedCountry}\r\n selected={selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight={300}\r\n contentbottomMargin={300}\r\n />\r\n )}\r\n\r\n {errorText === \"\" &&\r\n coSignerNumber.length !== 10 &&\r\n userInput.length > 10 && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInputError,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input-error\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlInputErrorText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n Invalid input, please check the phone\r\n number\r\n </Text>\r\n </View>\r\n )}\r\n\r\n {errorText !== \"\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInputError,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input-error\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlInputErrorText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {errorText}\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n\r\n {addChannel === \"email\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInput,\r\n width: \"100%\",\r\n }\r\n : { width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <TextInput\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSecondSection,\r\n width: \"100%\",\r\n }\r\n : { width: \"100%\" }\r\n }\r\n onChangeText={(text: string) => {\r\n setCoSignerEmail(text);\r\n setErrorText(\"\");\r\n }}\r\n onBlur={handleButtonDisplay}\r\n value={coSignerEmail}\r\n placeholder=\"Enter email\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n keyboardType=\"email-address\"\r\n autoCapitalize=\"none\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n />\r\n {errorText !== \"\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInputError,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input-error\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlInputErrorText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {errorText}\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreButtons,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }\r\n : {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreButtonsNeut,\r\n flex: 1,\r\n marginRight: 8,\r\n border: \"1px solid #603FF4\",\r\n color: \"#603FF4\",\r\n }\r\n : {\r\n flex: 1,\r\n marginRight: 8,\r\n border:\r\n \"1px solid var(--secondary-electric-violet-600, #603FF4)\",\r\n color:\r\n \"var(--secondary-electric-violet-600, #603FF4)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut\"\r\n onPress={() => setShowAddMore(false)}\r\n >\r\n <Text>Cancel</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreButtonsAction,\r\n flex: 1,\r\n marginLeft: 8,\r\n }\r\n : { flex: 1, marginLeft: 8 }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-action\"\r\n onPress={() => {\r\n handleAddCoSigner();\r\n handleButtonDisplay();\r\n }}\r\n >\r\n <Text>Add</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!showAddMore &&\r\n !showSetRule &&\r\n coSigners?.length < 4 && (\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooter,\r\n background: \"transparent\",\r\n width: 20,\r\n height: 20,\r\n }\r\n : { background: \"transparent\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer\"\r\n onPress={() => setShowAddMore(true)}\r\n >\r\n <Image\r\n source={{ uri: imageAssets.addIcon }}\r\n style={{ width: 20, height: 20 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text\"\r\n >\r\n {\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \" Add Co-Signer to remove\"\r\n : \" Add another Co-Signer\"}\r\n </Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n {!showAddMore &&\r\n !showSetRule &&\r\n coSigners?.length === 4 && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooterDis,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-dis\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.addDisableIcon }}\r\n style={{ width: 20, height: 20 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooterTextDis,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis\"\r\n >\r\n Add another Co-Signer{\" \"}\r\n {props.action === \"remove-cosigner\"\r\n ? \"To Remove\"\r\n : \"\"}\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n {!showSetRule && (\r\n <TouchableOpacity\r\n className={\r\n coSigners?.length > 0\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n style={\r\n isReactNative && coSigners?.length > 0\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : isReactNative && coSigners?.length === 0\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : isReactNative &&\r\n coSigners?.length > 0 &&\r\n !showAddMore &&\r\n coSigners?.length < 4\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : isReactNative &&\r\n coSigners?.length === 0 &&\r\n !showAddMore &&\r\n coSigners?.length < 4\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : !showAddMore && coSigners?.length < 4\r\n ? {\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : { marginBottom: \"20px\", width: \"100%\" }\r\n }\r\n onPress={() => {\r\n if (coSigners?.length > 0) {\r\n setRequiredSigners(2);\r\n setShowSetRule(true);\r\n setShowAddMore(false);\r\n }\r\n }}\r\n >\r\n <Text style={styles.buttonText}>Proceed</Text>\r\n </TouchableOpacity>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showLearnMore && (\r\n <React.Fragment>\r\n {learnMoreStep === \"1\" && (\r\n <React.Fragment>\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon2 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a Co-Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setShowLearnMore(false)}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Back</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={() => setLearnMoreStep(\"2\")}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Next</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"2\" && (\r\n <React.Fragment>\r\n <Image\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyIcon,\r\n }\r\n : {}\r\n }\r\n source={{ uri: imageAssets.addCoSignerIcon3 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n Why is it needed?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In blockchain application, it is impossible to reset a key\r\n if the PIN is forgotten you can login with the help of\r\n Co-Signer\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setLearnMoreStep(\"1\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Back</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setLearnMoreStep(\"3\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Next</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"3\" && (\r\n <React.Fragment>\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon4 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n Who can be my Co-Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n You can nominate your trusted acquaintances, family\r\n members and even yourself as a co-signer.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More in Details\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setLearnMoreStep(\"2\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Back</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n setLearnMoreStep(\"1\");\r\n }}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Start</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n {fontsLoaded && showRemoveSuccess && (\r\n <Success\r\n platform={props.platform}\r\n action={props.action}\r\n setStep={props.setStep}\r\n stepToSet=\"8\"\r\n actionHeaderText=\"Successful\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully removed cosigners and set new signing rule.\"\r\n actionFooterText=\"Congratulations! You have successfully removed cosigners and set new signing rule.\"\r\n showButton={props.dashbordElement ? true : false}\r\n buttonText={props.dashbordElement ? \"Go To Dashboard\" : \"\"}\r\n handleShowDashboard={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n buttonFunc={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n />\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </View>\r\n );\r\n};\r\n\r\nexport default AddCosignersPage;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n base64ToArrayBuffer,\r\n hashTheBuffer,\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n publicKeyCredentialRequestOptions,\r\n resolveGlobalStyleUnit,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n getPasskeyEndpoint,\r\n imageAssets,\r\n verifiedWebsiteUrls,\r\n} from \"../utils/constants\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n initiateVaultRecovery,\r\n restoreVaultLogin,\r\n signVaultRecovery,\r\n validateVaultPin,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { LogoutOverlay } from \"../components/overlays\";\r\nimport Success from \"../components/success\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { ethers } from \"ethers\";\r\n\r\nconst EnterPinPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n createPasskeyDomain?: string;\r\n getPasskeyDomain?: string;\r\n fontsLoaded?: boolean;\r\n setisOnboard: (isOnboard: boolean) => void;\r\n vaultId: string;\r\n hashedVaultId: string;\r\n encrptedPk: string;\r\n vaultAddress: string;\r\n regAddress?: string;\r\n vaultChannel: \"sms\" | \"email\";\r\n actionText?: string;\r\n title?: string;\r\n origin?: string;\r\n chainId?: number;\r\n newChainId?: number;\r\n action?: string;\r\n reqVaultData?: any;\r\n reqTxData?: any;\r\n signTxElement?: any;\r\n txToSign?: any;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowDashboard?: (showDashboard: boolean) => void;\r\n setShowResetPin?: (showResetPin: boolean) => void;\r\n setShowRemoveCosigner?: (showRemoveCosigner: boolean) => void;\r\n setShowCompleteVault?: (showDashboard: boolean) => void;\r\n setUserEmail?: (userEmail: string) => void;\r\n setUserNumberFmt?: (userNumberFmt: string) => void;\r\n setSelectedCountry?: (selectedCountry: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n }) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n dashbordElement?: React.ComponentType<{\r\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n }>;\r\n rootTagId?: string;\r\n rootExpandedWidth?: string;\r\n rootExpandedHeight?: string;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n rnPasskey,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState(props.fontsLoaded || false);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinHide, setPinHide] = useState(true); //hide pin by default\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [showSuccess, setShowSuccess] = useState(false);\r\n const [vaultData, _setVaultData] = useState(null);\r\n const [vaultDataRes, setVaultDataRes] = useState(null);\r\n const [chainId, _setChainId] = useState(props.newChainId || defaultChainId);\r\n const [showChains, setShowChains] = useState(false);\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n const [isAccepted, setIsAccepted] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [showTx, setShowTx] = useState(false);\r\n const [newTx, setNewTx] = useState({});\r\n const [pin, setPin] = useState([\"\", \"\", \"\", \"\"]);\r\n const inputsRef = useRef<Array<any>>([]);\r\n const [isPin, setIsPin] = useState(false);\r\n const [passkeyPopupId, setPasskeyPopupId] = useState(null);\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n const handleTextChange = (text: string, idx: number) => {\r\n if (text.length > 1) {\r\n // Manually capture Paste\r\n const paste = text.replace(/\\D/g, \"\");\r\n const newPin = [...pin];\r\n let pasteIndex = 0;\r\n\r\n for (let i = idx; i < pin.length && pasteIndex < paste.length; i++) {\r\n newPin[i] = paste[pasteIndex];\r\n pasteIndex++;\r\n }\r\n setPin(newPin);\r\n\r\n // Focus next empty input if any\r\n const nextIndex = idx + paste.length;\r\n if (nextIndex < pin.length && inputsRef.current[nextIndex]) {\r\n inputsRef.current[nextIndex].focus();\r\n }\r\n setPinIncorrect(false);\r\n } else {\r\n // Normal input\r\n const clean = text.replace(/\\D/g, \"\");\r\n const newPin = [...pin];\r\n newPin[idx] = clean;\r\n setPin(newPin);\r\n\r\n // Move focus to next input if available\r\n if (clean && inputsRef.current[idx + 1]) {\r\n inputsRef.current[idx + 1].focus();\r\n }\r\n setPinIncorrect(false);\r\n }\r\n };\r\n\r\n const handleKeyPress = (_: any, idx: number, e: any) => {\r\n const key = e.nativeEvent.key;\r\n\r\n if (\r\n key === \"Backspace\" &&\r\n !pin[idx] &&\r\n idx > 0 &&\r\n inputsRef.current[idx - 1]\r\n ) {\r\n inputsRef.current[idx - 1].focus();\r\n }\r\n };\r\n\r\n const isFilled = pin.every((d) => d.length > 0);\r\n\r\n const handleVerifyPin = async (pinToUse?: {\r\n pinString: string;\r\n hashed: string;\r\n rawId: any;\r\n listener?: any;\r\n }) => {\r\n //remove last used event listener\r\n if (pinToUse?.listener && chrome?.runtime?.onMessage?.removeListener) {\r\n chrome?.runtime?.onMessage?.removeListener(pinToUse?.listener);\r\n }\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the EnterPinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n\r\n if (\r\n (isPin && isFilled && props.hashedVaultId && props.encrptedPk) ||\r\n (!isPin && props.hashedVaultId && props.encrptedPk && pinToUse)\r\n ) {\r\n props.setIsLoading(true);\r\n const fullOtp = pinToUse?.pinString\r\n ? pinToUse?.pinString\r\n : pin.join(\"\");\r\n await validateVaultPin(\r\n props.vaultId,\r\n props.hashedVaultId,\r\n fullOtp,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.encrptedPk,\r\n props.vaultAddress,\r\n props.vaultChannel,\r\n Number(chainId),\r\n verifiedWebsiteUrls?.includes(props.origin?.toLowerCase()),\r\n null,\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n if (res && !res?.inCompleteVault) {\r\n props.setIsLoading(false);\r\n _setVaultData(res);\r\n setVaultDataRes(\r\n res?.pk && props.action !== \"eth_requestAccounts\"\r\n ? {\r\n address: res.address,\r\n channel: res.channel,\r\n chainId: res.chainId,\r\n pk: res?.pk,\r\n }\r\n : {\r\n address: props.regAddress,\r\n channel: res.channel,\r\n chainId: res.chainId,\r\n }\r\n );\r\n\r\n if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await initiateVaultRecovery(\r\n props.helperFunctions.sendCreatorInitiation,\r\n props.hashedVaultId,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.vaultChannel,\r\n Number(chainId),\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Account recovery failed. Verify you don't have pending account recovery process and Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (props.action === \"signRecovery\") {\r\n props.setIsLoading(true);\r\n await signVaultRecovery(\r\n props.helperFunctions.sendCreatorSigned,\r\n props.helperFunctions.sendCreatorCompleted,\r\n props.hashedVaultId,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqVaultData?.vaultId,\r\n props.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props.reqTxData?.id,\r\n Number(chainId),\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (\r\n !isReactNative &&\r\n !props.reqTxData?.newUser &&\r\n chrome?.storage?.local &&\r\n !props.vaultAddress\r\n ) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !props.reqTxData?.newUser &&\r\n !chrome?.storage?.local &&\r\n !props.vaultAddress &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (\r\n isReactNative &&\r\n AsyncStorage &&\r\n !props.reqTxData?.newUser &&\r\n !props.vaultAddress\r\n ) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Error while signing transaction; it's either you are not a valid co-signer or you had signed this particular transaction before. Verify and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await restoreVaultLogin(\r\n isReactNative,\r\n AsyncStorage,\r\n props.hashedVaultId,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqTxData?.id,\r\n props.vaultChannel,\r\n Number(chainId),\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `Error while restoring login access. Verify all required co-signers had signed our account recovery and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"eth_sendTransaction\" &&\r\n props.encrptedPk?.length > 0 &&\r\n res?.pin?.length > 0 &&\r\n props.signTxElement\r\n ) {\r\n setNewTx({\r\n chainId,\r\n ky: isPin ? ethers.encodeBytes32String(res?.pin) : \"\",\r\n rawId: isPin ? \"\" : pinToUse?.rawId,\r\n ...props.txToSign, //overwrite chainId if exist\r\n });\r\n setShowInvitation(false);\r\n setShowTx(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase() &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowInvitation(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept your own Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept this Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to fetch account details. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to restore login access for this account. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n (props.action === \"connect_wallet\" && !props?.vaultAddress) ||\r\n (props.action === \"eth_requestAccounts\" && !props?.vaultAddress)\r\n ) {\r\n setPinIncorrectText(\r\n `Incomplete account details received. This may be due to incomplete/unexpected error from last login. Please logout and login back to recover account details.`\r\n );\r\n setPinIncorrect(true);\r\n } else if (props.action === \"\" && props.vaultAddress) {\r\n props.setShowDashboard(true);\r\n } else if (props.action === \"\" && !props.vaultAddress) {\r\n setPinIncorrectText(\r\n \"Incomplete account login detected. Logout and try again later\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowSuccess(true);\r\n }\r\n } else if (res && res?.inCompleteVault && res?.pk) {\r\n const walletAndContractDetails = await initWalletAndContract(\r\n Number(chainId),\r\n res?.pk\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n setVaultData({\r\n vaultId: res?.vaultId,\r\n hashedVaultId: res?.hashedVaultId,\r\n vaultPin: res?.pin,\r\n hashedVaultPin: isPin\r\n ? hashTheString(res?.pin)\r\n : hashTheBuffer(res?.rawId),\r\n vaultContract: walletAndContractDetails.vaultContract,\r\n rawId: res?.rawId,\r\n });\r\n if (res?.channel?.toLowerCase() === \"sms\") {\r\n const areaCode = res?.vaultId?.replace(\r\n res?.vaultId?.slice(-10),\r\n \"\"\r\n );\r\n const formattedNumber =\r\n res?.vaultId?.slice(-10)?.slice(0, 5) +\r\n \" \" +\r\n res?.vaultId?.slice(-10)?.slice(5);\r\n props.setSelectedCountry({\r\n area: areaCode?.replace(\"+\", \"\"),\r\n name: \"\",\r\n flag: \"\",\r\n });\r\n\r\n props.setUserNumberFmt(formattedNumber);\r\n props.setUserEmail(\"\");\r\n } else {\r\n props.setUserEmail(res?.vaultId);\r\n props.setUserNumberFmt(\"\");\r\n }\r\n props.setIsLoading(false);\r\n props.setShowCompleteVault(true);\r\n props.setShowDashboard(false);\r\n } else {\r\n setPinIncorrectText(\r\n isPin\r\n ? \"\"\r\n : `Incorrect Passkey. please chose the correct existing passkey for account: ${props.vaultId}`\r\n );\r\n setPinIncorrect(true);\r\n props.setIsLoading(false);\r\n }\r\n });\r\n } else {\r\n if (!isPin && !pinToUse) {\r\n setPinIncorrectText(\r\n \"Unexpected error with selected passkey. Try again later\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n\r\n if (isPin && !isFilled) {\r\n setPinIncorrectText(\"Input your 4-Digits PIN to login.\");\r\n setPinIncorrect(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId = props.vaultId;\r\n if (\r\n vaultData?.pin?.length > 0 &&\r\n vaultData?.pk?.length > 0 &&\r\n props?.reqVaultData?.hashedVaultId &&\r\n props.reqVaultData?.hashedVaultPin &&\r\n vaultId &&\r\n props.helperFunctions?.sendCreatorAcceptance &&\r\n props.helperFunctions?.sendCreatorRejection\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = vaultData.pin;\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = isPin\r\n ? hashTheString(vaultPin)\r\n : hashTheBuffer(vaultData.rawId);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n props.vaultChannel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props?.reqVaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n null,\r\n vaultData.pk,\r\n Number(chainId)\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setIsAccepted(accepted);\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n const requestPasskey = async () => {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n if (chrome?.windows?.create) {\r\n const passkeyUrl =\r\n props?.getPasskeyDomain?.length > 0\r\n ? props?.getPasskeyDomain\r\n : getPasskeyEndpoint;\r\n const passkeyListener = async (msg: any, sender: any, __: any) => {\r\n if (msg.type === \"VW:Passkey_Credential\") {\r\n if (\r\n msg?.origin &&\r\n passkeyUrl?.toLowerCase()?.startsWith(msg?.origin?.toLowerCase())\r\n ) {\r\n if (passkeyPopupId) {\r\n chrome.windows.remove(passkeyPopupId);\r\n }\r\n if (sender?.tab && sender?.tab?.windowId) {\r\n chrome.windows.remove(sender.tab.windowId);\r\n }\r\n const credential = msg.data;\r\n\r\n if (credential?.id && credential?.rawId) {\r\n const _rawId = base64ToArrayBuffer(credential?.rawId);\r\n const hashedId = hashTheBuffer(_rawId);\r\n const pinToUse = {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: _rawId,\r\n listener: passkeyListener,\r\n };\r\n\r\n if (pinToUse) {\r\n await handleVerifyPin(pinToUse);\r\n }\r\n } else {\r\n setPinIncorrectText(\r\n `Passkey authentication failed: ${credential?.error\r\n ?.toString()\r\n ?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n setPinIncorrectText(\r\n `Passkey authentication failed: invalid passkey origin. Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n }\r\n };\r\n chrome.runtime.onMessage.addListener(passkeyListener);\r\n await chrome.windows\r\n .create({\r\n url: `${passkeyUrl}`,\r\n type: \"popup\",\r\n width: 500,\r\n height: 600,\r\n })\r\n .then((_window) => {\r\n setPasskeyPopupId(_window.id);\r\n });\r\n } else {\r\n try {\r\n const credential: any = isReactNative\r\n ? await rnPasskey.get(publicKeyCredentialRequestOptions())\r\n : await navigator?.credentials?.get({\r\n publicKey: publicKeyCredentialRequestOptions(),\r\n });\r\n const hashedId = hashTheBuffer(credential?.rawId);\r\n return {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: credential?.rawId,\r\n };\r\n } catch (err) {\r\n setPinIncorrectText(\r\n `Passkey authentication failed: ${err?.message?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && !showInvitation && !showTx && (\r\n <React.Fragment>\r\n {!showSuccess && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupLanguage,\r\n padding: \"20px\",\r\n paddingTop: \"0\",\r\n }\r\n : { padding: \"20px\", paddingTop: \"0\" }\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContact,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1]}\r\n currentSlider=\"0\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content-heder-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactText,\r\n alignSelf: \"center\",\r\n }\r\n : { alignSelf: \"center\" }\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin ? \"Enter PIN\" : \"Sign-in with Existing Passkey\"}\r\n </Text>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Welcome back, please login using{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {isPin ? \"existing 4-Digits PIN\" : \"existing Passkey\"}\r\n </Text>{\" \"}\r\n for your{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>{props.vaultId}</Text>{\" \"}\r\n account.\r\n </Text>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer\"\r\n >\r\n {props.actionText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {`To ${props.actionText} from origin: ${\r\n props.origin || props.title\r\n }`}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n\r\n {isPin && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputGroup,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {pin.map((_, idx) => (\r\n <TextInput\r\n key={idx}\r\n ref={(el: any) => (inputsRef.current[idx] = el)}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n style={\r\n isReactNative && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputRed,\r\n }\r\n : isReactNative && !pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n secureTextEntry={pinHide}\r\n maxLength={1}\r\n value={pin[idx]}\r\n onChangeText={(text: any) =>\r\n handleTextChange(text, idx)\r\n }\r\n onKeyPress={(e: any) => handleKeyPress(e, idx, e)}\r\n keyboardType=\"number-pad\"\r\n id={`verified-custd-mdl-otp-input-${idx}`}\r\n />\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpTimer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {pinIncorrect && !pinIncorrectText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct pin\r\n </Text>\r\n )}\r\n {pinIncorrect && pinIncorrectText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {!pinIncorrect && <Text></Text>}\r\n\r\n {!pinHide ? (\r\n <TouchableOpacity\r\n onPress={() => setPinHide(true)}\r\n style={{ backgroundColor: \"transparent\" }}\r\n >\r\n <Image\r\n style={{ width: 24, height: 24 }}\r\n source={{ uri: imageAssets.pinShow }}\r\n />\r\n </TouchableOpacity>\r\n ) : (\r\n <TouchableOpacity\r\n onPress={() => setPinHide(false)}\r\n style={{ backgroundColor: \"transparent\" }}\r\n >\r\n <Image\r\n style={{ width: 24, height: 24 }}\r\n source={{ uri: imageAssets.pinHide }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!isPin && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a passkey?\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Your passkey is stored in your cloud account such as Apple\r\n iCloud Keychain, Google Password Manager, or Microsoft\r\n Account and synchronized across all devices.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In the event of device loss, as long as you have access to\r\n your cloud account, you can recover your passkey.\r\n </Text>\r\n\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click \"Login With Passkey\" button, passkey popup will\r\n appears to login using your existing passkey.\r\n </Text>\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={() => {\r\n if (!isReactNative) {\r\n window?.open(\r\n \"https://blog.google/inside-google/googlers/ask-a-techspert/how-passkeys-work\",\r\n \"_blank\"\r\n );\r\n }\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More about Passkey\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: 20 }} />}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactFooter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFooterFirstSection,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-footer-first-section\"\r\n >\r\n <LogoutOverlay\r\n platform={props.platform}\r\n setisOnboard={props.setisOnboard}\r\n setIsLoading={props.setIsLoading}\r\n />\r\n {isPin && (\r\n <TouchableOpacity\r\n onPress={async () => await handleVerifyPin()}\r\n style={\r\n isReactNative && isFilled && !pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : isReactNative && isFilled && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n }\r\n : isReactNative && !isFilled && !pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n }\r\n : isReactNative && !isFilled && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n }\r\n : {}\r\n }\r\n className={\r\n isFilled && !pinIncorrect\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n >\r\n <Text>Proceed</Text>\r\n </TouchableOpacity>\r\n )}\r\n {!isPin && (\r\n <React.Fragment>\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n marginTop: \"3px\",\r\n width: \"100%\",\r\n }\r\n : { marginTop: \"3px\", width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginBottom: \"20px\",\r\n }\r\n : { marginBottom: \"20px\" }\r\n }\r\n onPress={async () => {\r\n const pinToUse = await requestPasskey();\r\n if (pinToUse) {\r\n await handleVerifyPin(pinToUse);\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n <Text>Login With Passkey</Text>\r\n </TouchableOpacity>\r\n </React.Fragment>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {showSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={\r\n props.action === \"getPk\" ||\r\n props.action === \"signRecovery\" ||\r\n props.action === \"completeRecovery\"\r\n ? { type: \"closePopup\", key: \"\", value: \"\" }\r\n : {\r\n type: \"vaultData\",\r\n key: \"vaultData\",\r\n value: vaultDataRes,\r\n }\r\n }\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n props.action === \"getPk\" && props.vaultChannel === \"email\"\r\n ? \"You have successfully initiated your account recovery process check your email for further instructions\"\r\n : props.action === \"getPk\" && props.vaultChannel === \"sms\"\r\n ? \"You have successfully initiated your account recovery process check your phone number messages for further instructions\"\r\n : props.action === \"signRecovery\"\r\n ? `Congratulations! You have successfully signed account recovery transaction for user: ${props.reqVaultData?.vaultId}`\r\n : props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : `Congratulations! You have successfully ${\r\n props.actionText || \"logged in to your account.\"\r\n }`\r\n }\r\n showButton={\r\n props.action === \"completeRecovery\" && props.dashbordElement\r\n ? true\r\n : false\r\n }\r\n buttonText={\r\n props.action === \"completeRecovery\" && props.dashbordElement\r\n ? \"Go To Dashboard\"\r\n : \"\"\r\n }\r\n buttonFunc={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n handleShowDashboard={() => {\r\n if (props.setShowResetPin) {\r\n props.setShowResetPin(false);\r\n }\r\n if (props.setShowRemoveCosigner) {\r\n props.setShowRemoveCosigner(false);\r\n }\r\n props.setShowDashboard(true);\r\n }}\r\n actionFooterText={\r\n props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : \"\"\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {fontsLoaded && showInvitation && !showTx && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupLanguage,\r\n padding: \"20px\",\r\n position: \"relative\",\r\n }\r\n : { padding: \"20px\", position: \"relative\" }\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContact,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.reqVaultData?.vaultId}\r\n </Text>{\" \"}\r\n has requested you to be a Co‑Signer\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <TouchableOpacity\r\n style={{ backgroundColor: \"transparent\", width: \"100%\" }}\r\n >\r\n <Image\r\n style={{ height: 250, width: \"90%\" }}\r\n source={{ uri: imageAssets.addCoSignerIcon1 }}\r\n />\r\n </TouchableOpacity>\r\n\r\n {!showRejectInvitation ? (\r\n <React.Fragment>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a Co‑Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: 12,\r\n color: \"#5B5D6E\",\r\n }\r\n : {\r\n fontSize: 12,\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co‑Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image source={{ uri: imageAssets.pkicon }} />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n As a Co Signer you can help{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n reset PIN\r\n </Text>\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image source={{ uri: imageAssets.encryptedIcon }} />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n Don’t worry, they{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n will not get access\r\n </Text>{\" \"}\r\n to your account in any way.\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n onPress={() => setShowRejectInvitation(true)}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : { border: \"1px solid #0C0C0E\", color: \"#0C0C0E\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Reject</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={async () =>\r\n await handleAcceptAndRejectInvitation(true)\r\n }\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Accept</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n ) : (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContentOutter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-title\"\r\n >\r\n Are you sure you want to reject this request?\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyLabel,\r\n fontSize: 12,\r\n color: \"#5B5D6E\",\r\n }\r\n : {\r\n fontSize: 12,\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.reqVaultData?.vaultId}\r\n </Text>\r\n , you will not be able to reset the PIN for them.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n width: \"90%\",\r\n }\r\n : { width: \"90%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n onPress={async () =>\r\n await handleAcceptAndRejectInvitation(false)\r\n }\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Yes</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={() => setShowRejectInvitation(false)}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>No</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n {showInvitationSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={{\r\n type: \"getPk\",\r\n key: \"vaultData\",\r\n value: vaultData,\r\n }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n isAccepted\r\n ? `You have been added as a Co-Signer for ${props.reqVaultData?.vaultId}`\r\n : `You rejected Co-signer request from ${props.reqVaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {fontsLoaded && !showInvitation && showTx && (\r\n <props.signTxElement\r\n setIsLoading={props.setIsLoading}\r\n txToSign={newTx}\r\n />\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default EnterPinPage;\r\n"],"mappings":"2fACA,SAASA,GAAYC,EAAK,CACxB,GAAI,CAACA,GAAO,OAAO,SAAa,IAAa,OAE7C,IAAMC,EAAO,SAAS,MAAQ,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAC/DC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,KAAO,WAEVD,EAAK,WACNA,EAAK,aAAaC,EAAOD,EAAK,UAAU,EAExCA,EAAK,YAAYC,CAAK,EAGrBA,EAAM,WACPA,EAAM,WAAW,QAAUF,EAE3BE,EAAM,YAAY,SAAS,eAAeF,CAAG,CAAC,CAElD,CACAD,GAAY;AAAA,CAAmzmC,ECnB7zmC,OAAO,OAAW,KAClB,OAAQ,OAAe,OAAW,MAEjC,OAAe,OAAS,CAAC,GCJ5B,GACE,OAAO,OAAW,KAClB,OAAO,OAAO,OAAW,KACzB,OAAO,UAAc,KACrB,UAAU,UAAY,cAEtB,GAAI,CACF,GAAQ,gCAAgC,CAC1C,OAASI,EAAK,CACZ,QAAQ,KAAK,yDAA0DA,CAAG,CAC5E,CCTF,OAAOC,IAAS,cAAAC,OAAkB,QCC3B,IAAMC,GACX,QAAQ,IAAI,qBAAuB,aAC/B,kCACA,gCAEOC,GACX,iDAEWC,GAAqB,8CAErBC,GAAsB,CACjC,gCACA,kCACA,8BACA,iCACF,EAEaC,GAAoB,CAC/B,iJACA,8KACA,qFACF,EAEaC,GACX,qEAEWC,GAAkB,CAC7B,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,KACL,EAEaC,GAAqB,CAChC,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,MACL,EAEaC,GAAc,CACzB,eAAgB,uBAChB,oBAAqB,uBACrB,MAAO,+BACP,WAAY,8BACZ,aAAc,wBACd,iBAAkB,uBAClB,oBAAqB,iCACvB,EAEaC,EAAc,CACzB,YACE,iGACF,QACE,kHACF,WACE,4FACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,OACE,wFACF,cACE,+FACF,QACE,8FACF,QACE,8FACF,QACE,iGACF,UACE,iGACF,SACE,qFACF,UACE,0FACF,OACE,4FACF,cACE,kGACF,UACE,gGACF,OACE,4FACF,QACE,6FACF,UACE,4FACF,OACE,4FACF,cACE,oGACF,QACE,iGACF,eACE,gGACF,WACE,2FACF,aACE,6FACF,YACE,6FACF,YACE,6FACF,YACE,mGACF,UACE,2FACF,SACE,0FACF,YACE,iGACF,cACE,gGACF,iBACE,gGACF,kBACE,mGACF,QACE,wFACF,SACE,0FACF,aACE,8FACF,WACE,2FACF,SACE,0FACF,UACE,qFACJ,EAEaC,GAAmB,CAC9B,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iCACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,0BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2CACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,qBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oCACN,KAAM,KACN,SAAU,MACV,UAAW,YACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mCACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,+CACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,uBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU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AACvI,EAAA,CACC,MACED,EACI,CAAE,GAAGW,EAAO,mCAAoC,EAChD,CAAC,EAEP,UAAU,6CAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDAEV6H,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,oBAED,CACF,CACF,EACAwI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,+FAGD,EACAwI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,gKAID,EACAwI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,8GAID,EACC,CAACD,EAAM,gBACNyI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,oHAID,EAEDD,EAAM,gBACLyI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,QACO,IACLD,EAAM,S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UAAW,OAAQ,aAAc,MAAO,EAEhD,UAAU,uCAEV6H,EAAA,cAACnI,EAAA,CACC,MACEL,EACI,CAAE,GAAGW,EAAO,sCAAuC,EACnD,CAAC,EAEP,UAAU,+CACV,YAAY,+BACZ,qBAAqB,UACrB,MAAOiC,EACP,aAAemD,GAAiB,CAC9BlD,GAAakD,CAAI,CACnB,EACF,EACCrD,IAAiB,OAAS,GACzB8F,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CAAE,GAAGW,EAAO,8BAA+B,EAC3C,CAAC,EAEP,UAAU,uCAET+B,EACH,CAEJ,EAEA8F,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CAAE,GAAGW,EAAO,mCAAoC,EAChD,CAAC,EAEP,UAAU,6CAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDAEV6H,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,oBAED,CACF,CACF,EACAwI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,+FAGD,EACAwI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,gKAID,EACAwI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,8GAGD,EAEAwI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+H,EACR1I,EACA,MACF,CACF,EACA,CACE,SAAU0I,EACR1I,EACA,MACF,CACF,EAEN,UAAU,8CACX,sHAID,EAEAwI,EAAA,cAAClI,EAAA,CACC,MAAO,CAAE,WAAY,aAAc,EACnC,QAAS,IAAM,CACRN,GACH,QAAQ,KACN,+EACA,QACF,CAEJ,GAEAwI,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,0BAED,CACF,CACF,EAEC,CAACyB,GAAgBoG,EAAA,cAACvI,EAAA,CAAK,MAAO,CAAE,OAAQ,EAAG,EAAG,EAE/CuI,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CAAE,GAAGW,EAAO,oCAAqC,EACjD,CAAC,EAEP,UAAU,6CAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,sDAETO,GAAgBE,GAAkB,OAAS,GAC1CoH,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,gCACZ,EACA,CAAC,EAEP,UAAU,yCAETS,CACH,EAEFoH,EAAA,cAAClI,EAAA,CACC,GAAG,gCACH,MACEN,GAAiB+H,GAAmB,EAChC,CACE,GAAGpH,EAAO,mCACZ,EACAX,GAAiB,CAAC+H,GAAmB,EACrC,CAAE,GAAGpH,EAAO,6BAA8B,EAC1C,CAAC,EAEP,UACEoH,GAAmB,EACf,2CACA,oCAEN,QAAS,MAAOH,GAAW,CACzB,GAAI,CACF,GAAI,CAACG,GAAmB,EAAG,CACzB5G,EAAgB,EAAI,EACpBE,EACE,iFACF,EACA,MACF,CACA,IAAMyH,EACJ,MAAMC,GAAsBzF,GAASV,CAAS,EAChD,GACE,CAACkG,GAA0B,SAC3B,CAACA,GAA0B,SAC3B,CAACA,GAA0B,IAC3B,CAACA,GAA0B,UAC3B,CAACA,GAA0B,QAC3B,CAACA,GAA0B,cAC3B,CACA3H,EAAgB,EAAI,EACpBE,EACE,qFACF,EACA,MACF,CACAqC,GAAWoF,EAAyB,OAAO,EAC3CnF,GAAWmF,EAAyB,OAAO,EAC3ClF,GAAMkF,EAAyB,EAAE,EACjCjF,GAAYiF,EAAyB,QAAQ,EAC7ChF,EAAUgF,EAAyB,MAAM,EACzCrF,GAAaqF,EAAyB,SAAS,EAC/C/E,EACE+E,EAAyB,aAC3B,EAEA,IAAMD,EAAqB,MAAMxC,GAAc,EAE3CwC,GACF,MAAM1B,GAAsB,CAC1B,GAAG0B,EACH,GAAIC,EAAyB,GAC7B,cACEA,EAAyB,cAC3B,OAAQA,EAAyB,OACjC,QAASA,EAAyB,QAClC,UAAWA,EAAyB,SACtC,CAAC,CAEL,MAAc,CACZ3H,EAAgB,EAAI,EACpBE,EACE,gDACF,EACA,MACF,CACF,GAEAmH,EAAA,cAACtI,EAAA,KAAK,sBAAoB,CAC5B,CACF,CACF,CACF,CAEJ,EAGD,CAACoB,GAAqBE,GACrBgH,EAAA,cAACA,EAAM,SAAN,KACE,CAAC9G,GACA8G,EAAA,cAACvI,EAAA,CACC,UAAU,sCACV,MACED,EACI,CACE,GAAGW,EAAO,gCACV,QAAS,EACT,SAAU,UACZ,EACA,CAAE,QAAS,EAAG,SAAU,UAAW,GAGzC6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CAAE,GAAGW,EAAO,8BAA+B,EAC3C,CAAC,EAEP,UAAU,sCAEV6H,EAAA,cAACC,GAAA,CACC,SAAU1I,EAAM,SAChB,YAAa,CAAC,EAAG,EAAG,CAAC,EACrB,cAAc,IAChB,EACAyI,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CAAE,GAAGW,EAAO,qCAAsC,EAClD,CAAC,EAEP,UAAU,8CAEV6H,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CAAE,GAAGW,EAAO,kCAAmC,EAC/C,CAAC,EAEP,UAAU,2CAEV6H,EAAA,cAACtI,EAAA,CAAK,MAAO,CAAE,WAAY,MAAO,GAC/BH,EAAM,WAAW,OACpB,EAAQ,IAAI,qCAEd,CACF,CACF,EACAyI,EAAA,cAACrI,EAAA,CACC,MACEH,EACI,CAAE,GAAGW,EAAO,mCAAoC,EAChD,CAAC,EAEP,UAAU,4CACV,OAAQ,CAAE,IAAKiI,EAAY,gBAAiB,EAC9C,EACC,CAAChH,GACA4G,EAAA,cAACpI,EAAA,KACCoI,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CAAE,GAAGW,EAAO,mCAAoC,EAChD,CAAC,EAEP,UAAU,6CAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDAEV6H,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CACX,sBAED,CACF,CACF,EACA6H,EAAA,cAACtI,EAAA,CACC,UAAU,6CACV,MACEF,EACI,CACE,GAAGW,EAAO,oCACZ,EACA,CAAE,SAAU,GAAI,MAAO,SAAU,GAExC,mHAID,EAEA6H,EAAA,cAACvI,EAAA,CAAK,UAAU,kDACduI,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEV6H,EAAA,cAACrI,EAAA,CAAM,OAAQ,CAAE,IAAKyI,EAAY,MAAO,EAAG,CAC9C,EACAJ,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,8BAC6B,IAC5B6H,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDACX,WAED,CACF,CACF,EAEA6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEV6H,EAAA,cAACrI,EAAA,CACC,OAAQ,CAAE,IAAKyI,EAAY,aAAc,EAC3C,CACF,EACAJ,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,yBACmB,IAClB6H,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDACX,qBAED,EAAQ,IAAI,6BAEd,CACF,CACF,EAEA6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,sCACZ,EACA,CAAC,EAEP,UAAU,gDAEV6H,EAAA,cAAClI,EAAA,CACC,MACEN,EACI,CACE,GAAGW,EAAO,sCACV,OAAQ,oBACR,MAAO,SACT,EACA,CACE,OAAQ,oBACR,MAAO,SACT,EAEN,UAAU,8CACV,QAAS,IAAMkB,EAAwB,EAAI,GAE3C2G,EAAA,cAACtI,EAAA,KAAK,QAAM,CACd,EACAsI,EAAA,cAAClI,EAAA,CACC,MACEN,EACI,CACE,GAAGW,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,gDACV,QAAS,SAAY,CACnB,MAAM0H,GAAgC,EAAI,CAC5C,GAEAG,EAAA,cAACtI,EAAA,KAAK,QAAM,CACd,CACF,CACF,EAGD0B,GACC4G,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,mDACZ,EACA,CAAC,EAEP,UAAU,+DAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,6CACZ,EACA,CAAC,EAEP,UAAU,wDAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,qDAEV6H,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,uDAEV6H,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,sDACX,+CAED,EACA6H,EAAA,cAACtI,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,4CACV,SAAU,GACV,MAAO,SACT,EACA,CAAE,SAAU,GAAI,MAAO,SAAU,EAEvC,UAAU,sDACX,wCACuC,IACtC6H,EAAA,cAACtI,EAAA,CAAK,MAAO,CAAE,WAAY,MAAO,GAC/BH,EAAM,WAAW,OACpB,EAAO,mDAET,CACF,EAEAyI,EAAA,cAACvI,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,uCACV,MAAO,KACT,EACA,CAAE,MAAO,KAAM,EAErB,UAAU,gDAEV6H,EAAA,cAAClI,EAAA,CACC,MACEN,EACI,CACE,GAAGW,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,gDACV,QAAS,SAAY,CACnB,MAAM0H,GAAgC,EAAK,CAC7C,GAEAG,EAAA,cAACtI,EAAA,KAAK,KAAG,CACX,EACAsI,EAAA,cAAClI,EAAA,CACC,MACEN,EACI,CACE,GAAGW,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,gDACV,QAAS,IAAMkB,EAAwB,EAAK,GAE5C2G,EAAA,cAACtI,EAAA,KAAK,IAAE,CACV,CACF,CACF,CACF,CACF,CAEJ,EAEDwB,GACC8G,EAAA,cAACQ,GAAA,CACC,SAAUjJ,EAAM,SAChB,cAAe,CAAE,KAAM,aAAc,IAAK,GAAI,MAAO,EAAG,EACxD,iBAAiB,aACjB,iBACG6B,EAEG,uCAAuC7B,EAAM,WAAW,OAAO,GAD/D,0CAA0CA,EAAM,WAAW,OAAO,GAG1E,CAEJ,EAGDuB,GACCkH,EAAA,cAACQ,GAAA,CACC,SAAUjJ,EAAM,SAChB,cAAe,CAAE,KAAM,aAAc,IAAK,GAAI,MAAO,EAAG,EACxD,iBAAiB,aACjB,iBACE+B,GAAmB,OAAS,EACxBA,EACA,gDAER,CAEJ,EAGD,CAACjB,GAAe2H,EAAA,cAACtI,EAAA,KAAK,yBAAuB,CAChD,CAEJ,EAEO+I,GAAQnJ,GE75Ef,OAAOoJ,GAAS,aAAAC,GAAW,YAAAC,OAAgB,QAY3C,OAAS,UAAAC,OAAc,SACvB,OAAS,mBAAAC,GAAiB,YAAAC,OAAgB,iCAI1C,IAAMC,GAAoBC,GAsCpB,CACJ,GAAM,CACJ,cAAAC,EACA,KAAAC,EACA,KAAAC,EACA,MAAAC,EACA,WAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,KAAAC,EACA,aAAAC,EACA,OAAAC,CACF,EAAIX,EAAM,SACJ,CAACY,EAAaC,CAAc,EAAIC,GACpCd,EAAM,aAAe,EACvB,EACM,CAACe,EAAeC,CAAgB,EAAIF,GAAkB,EAAK,EAC3D,CAACG,EAAeC,CAAgB,EAAIJ,GAAiB,GAAG,EACxD,CAACK,EAAcC,CAAe,EAAIN,GAAiB,GAAG,EACtD,CAACO,EAAaC,CAAc,EAAIR,GAAkB,EAAK,EACvD,CAACS,EAAYC,CAAa,EAAIV,GAAiB,OAAO,EACtD,CAACW,EAAgBC,CAAiB,EAAIZ,GAAiB,EAAE,EACzD,CAACa,EAAmBC,CAAoB,EAAId,GAAiB,EAAE,EAC/D,CAACe,EAAeC,CAAgB,EAAIhB,GAAiB,EAAE,EACvD,CAACiB,EAAcC,EAAe,EAAIlB,GAAiB,EAAE,EACrD,CAACmB,GAAWC,EAAY,EAAIpB,GAAiB,EAAE,EAC/C,CAACqB,EAAcC,CAAe,EAAItB,GAAkB,EAAK,EACzD,CAACuB,EAAiBC,EAAkB,EAAIxB,GAC5Cd,EAAM,gBAAkB,CACtB,KAAM,IACN,KAAMuC,EAAY,QAClB,KAAM,eACR,CACF,EACM,CAACC,EAAWC,EAAY,EAAI3B,GAAS,CAAC,CAAC,EACvC,CAAC4B,EAAyBC,EAA0B,EAAI7B,GAAS,CAAC,EAClE,CAAC8B,GAAmBC,EAAoB,EAAI/B,GAAS,CAAC,CAAC,EACvD,CAACgC,EAAoBC,EAAqB,EAAIjC,GAAS,CAAC,CAAC,EACzD,CAACkC,GAAaC,EAAc,EAAInC,GAAkB,EAAK,EACvD,CAACoC,GAAiBC,EAAkB,EAAIrC,GAAiB,CAAC,EAC1D,CAACsC,GAAWC,CAAY,EAAIvC,GAAiB,EAAE,EAC/C,CAACwC,GAAmBC,EAAoB,EAAIzC,GAAkB,EAAK,EAEnE,CAAE,GAAA0C,GAAI,UAAAC,GAAW,cAAAC,GAAe,QAAAC,GAAS,OAAAC,EAAO,EAAIC,GAAc,EAExEC,GAAU,IAAM,CACd,IAAMC,EAAqB,SAAY,CACrC,GAAK9D,EAMH,GAAI,CACF,IAAM+D,EAAI,MAAMC,GAAqBxD,CAAI,EACzCI,EAAe,EAAI,CACrB,MAAc,CACZA,EAAe,EAAK,CACtB,KAXkB,CAElB,IAAMqD,EAAgBC,GAAmB,QAAQ,EACjDtD,EAAeqD,CAAa,CAC9B,CASF,EACKlE,EAAM,aACT+D,EAAmB,CAEvB,EAAG,CAAC,CAAC,EAELD,GAAU,IAAM,CACd,IAAMM,EAA2B,SAAY,CACvCpE,EAAM,cACRA,EAAM,aAAa,EAAI,EAEzB,IAAMqE,EAAgBC,EACpBtE,EAAM,WAAW,OAAS,EACtBA,EAAM,UACN,IAAIA,EAAM,gBAAgB,IAAI,GAAGA,EAAM,eAAe,QACpD,IACA,EACF,CAAC,EACP,EACMuE,GAAY,MAAMb,GAAc,UAAUW,CAAa,EAC7D,GAAIE,IAAW,SAAW,GAAKA,IAAW,UAAU,QAAQ,OAAS,EAAG,CACtE,IAAMC,GAAkB,OAAOD,IAAW,UAAU,OAAO,CAAC,CAAC,EAC7D5B,GAA2B6B,EAAe,EAC1CzB,GAAsB,IAAI,MAAMyB,EAAe,EAAE,KAAK,GAAG,CAAC,CAC5D,CAIA,GAHIxE,EAAM,cACRA,EAAM,aAAa,EAAK,EAEtByD,IAAW,yBAAyB,OAAS,EAAG,CAClDZ,GAAqB,CAAC,GAAG,IAAI,IAAIY,IAAW,uBAAuB,CAAC,CAAC,EACrEV,GAAsB,CAAC,GAAG,IAAI,IAAIU,IAAW,uBAAuB,CAAC,CAAC,EACtE,MACF,CAEA,IAAMgB,EADoBC,GACUf,EAAO,GAAG,QAC9C,GAAI,CAACc,EACH,OAEF,IAAME,EAAkB,CACtB,CACE,UAAW,GACX,OAAQ,CACN,CACE,QAAS,GACT,KAAM,UACN,KAAM,SACR,EACA,CACE,QAAS,GACT,KAAM,cACN,KAAM,SACR,CACF,EACA,KAAM,iBACN,KAAM,OACR,CACF,EAMA,GAAI,CALyB,IAAIC,GAAO,SACtCH,EACAE,EACAf,EACF,EAEE,OAEF,IAAMiB,GAAQ,IAAID,GAAO,UAAUD,CAAe,EAE5CG,GADgBD,GAAM,SAAS,gBAAgB,EACrB,UAW1BE,IAPO,MAFI,IAAIC,GAASC,GAAYtB,EAAO,GAAG,QAAQ,CAAC,CAAC,GAEjC,QAAQ,CACnC,QAASc,EACT,UAAWQ,GAAYtB,EAAO,GAAG,sBAAwB,EACzD,QAAS,SACT,OAAQ,CAACmB,EAAS,CACpB,CAAC,IAGG,IAAKI,IAAa,CAClB,IAAMC,GAAYN,GAAM,SAASK,EAAG,EACpC,OACEC,IAAW,MAAM,SAAS,YAAY,IACpCb,EACEtE,EAAM,WAAW,OAAS,EACtBA,EAAM,UACN,IACEA,EAAM,gBAAgB,IACxB,GAAGA,EAAM,eAAe,QAAQ,IAAK,EAAE,CAAC,EAC9C,GACFmF,IAAW,MAAM,UAAYA,IAAW,MAAM,YAEvCA,IAAW,MAAM,YACd,IACd,CAAC,GACC,OAAQC,IAAqBA,KAAgB,IAAI,EAErDvC,GAAqB,CAAC,GAAG,IAAI,IAAIkC,EAAgB,CAAC,CAAC,EACnDhC,GAAsB,CAAC,GAAG,IAAI,IAAIgC,EAAgB,CAAC,CAAC,CACtD,GAGG/E,EAAM,WAAW,OAAS,GACzBA,EAAM,SAAW,mBACjB4D,IACAF,IACD1D,EAAM,eAAe,OAAS,GAC7BA,EAAM,SAAW,mBACjB4D,IACAF,KAEFU,EAAyB,CAE7B,EAAG,CACDpE,EAAM,UACNA,EAAM,OACNA,EAAM,cACNA,EAAM,gBAAgB,IACxB,CAAC,EAED,IAAMqF,GAAsB,IAAM,CAOlC,EAEMC,GAAoB,IAAM,CAC9B,IAAIC,EAAiB/C,GAAW,OAChC,GAAIjB,IAAe,OAASE,GAAgB,SAAW,EAAG,CACxD4B,EAAa,8CAA8C,EAC3D,MACF,SAAW9B,IAAe,OAASE,GAAgB,SAAW,GAAI,CAChE4B,EAAa,8CAA8C,EAC3D,MACF,SAAW9B,IAAe,SAAWM,GAAe,SAAW,EAAG,CAChEwB,EAAa,uCAAuC,EACpD,MACF,SACE9B,IAAe,SACf,CAAC,6BAA6B,KAAKM,CAAa,EAChD,CACAwB,EAAa,uCAAuC,EACpD,MACF,SACEb,GAAW,KAAMgD,GACfA,GAAK,aAAe,MAChBA,GAAK,WAAW,YAAY,EAAIA,GAAK,QAAQ,YAAY,IACzDnD,EAAgB,MAAM,YAAY,EAChCV,GAAmB,YAAY,EACjC6D,GAAK,OAAO,YAAY,IAAM3D,GAAe,YAAY,CAC/D,EACA,CACI7B,EAAM,SAAW,mBACnBqD,EACE9B,IAAe,MACX,qDACA,6CACN,EAEEvB,EAAM,SAAW,mBACnBqD,EACE9B,IAAe,MACX,+EACA,uEACN,EAEF,MACF,SACEA,IAAe,OACfc,GAAiB,MAAM,YAAY,EACjCV,GAAmB,YAAY,IAC/B3B,EAAM,gBAAgB,MAAM,YAAY,EACtCA,EAAM,eAAe,YAAY,EACrC,CACAqD,EAAa,uDAAuD,EACpE,MACF,SACE9B,IAAe,SACfM,GAAe,YAAY,IAAM7B,EAAM,WAAW,YAAY,EAC9D,CACAqD,EAAa,yCAAyC,EACtD,MACF,SACErD,EAAM,SAAW,mBACjB4C,IAAmB,SAAW,EAC9B,CACAS,EACE,+DACF,EACA,MACF,SACErD,EAAM,SAAW,mBACjB,CAAC4C,IAAmB,SAClB0B,EACE/C,IAAe,MACX,IAAIc,GAAiB,IAAI,GAAGZ,CAAc,GAC1CI,CACN,CACF,EACA,CACAwB,EACE9B,IAAe,MACX,gFACA,wEACN,EACA,MACF,SACEvB,EAAM,SAAW,mBACjB8C,GAAoB,SAAW,EAC/B,CACAO,EACE,wEACF,EACA,MACF,SAAWkC,EAAiB,IAAM,EAAG,CACnClC,EACE,0GACF,EACA,MACF,CACAA,EAAa,EAAE,EAEfZ,GAAcgD,GAAS,CACrB,CACE,KAAM1D,EACN,MAAOF,EACP,OAAQF,EACR,YAAa,IAAIU,GAAiB,IAAI,GAAGZ,CAAc,GACvD,WAAYF,EACZ,UAAWc,GAAiB,KAC5B,SAAUoD,GAAM,OAAS,EACzB,QACElE,IAAe,MACX,IAAIc,GAAiB,IAAI,GAAGZ,CAAc,GAC1CI,CACR,EACA,GAAG4D,CACL,CAAC,EACD3D,EAAiB,EAAE,EACnBE,GAAgB,EAAE,EAClBN,EAAkB,EAAE,EACpBE,EAAqB,EAAE,EACvBM,GAAa,EAAE,EACXqD,EAAiB,IAAM,GACzBjE,EAAe,EAAK,EAElBtB,EAAM,SAAW,mBAAqB8C,GAAoB,OAAS,GACrEC,GACED,GAAoB,OACjB0C,GACCA,IACAlB,EACE/C,IAAe,MACX,IAAIc,GAAiB,IAAI,GAAGZ,CAAc,GAC1CI,CACN,CACJ,CACF,CAEJ,EAEM6D,GAAsB,SAAY,CACtC,IAAMC,EACJ3F,EAAM,SAAW,kBACb,CACE,CACE,WAAYA,GAAO,WAAW,OAAS,EAAI,QAAU,MACrD,MAAOA,GAAO,UACd,YAAa,IACXA,GAAO,iBAAiB,IAC1B,GAAGA,GAAO,eAAe,QAAQ,IAAK,EAAE,CAAC,GACzC,QAASyD,IAAW,OACtB,EACA,GAAGjB,CACL,EACA,CAACiB,IAAW,cAAe,GAAGX,CAAkB,GAGnD9C,EAAM,SAAW,mBAChB2F,GAAY,OAAS,GACrBnD,GAAW,OAAS,GACpBU,IACAO,IAAW,SACXA,IAAW,eACXC,IACAF,IACAxD,EAAM,iBAAiB,wBACvBA,EAAM,iBAAiB,yBACxBA,EAAM,SAAW,mBAChB2F,GAAY,OAAS,GACrBzC,IACAO,IAAW,SACXA,IAAW,eACXC,IACAF,IACAxD,EAAM,iBAAiB,wBACvBA,EAAM,iBAAiB,2BAEzBA,EAAM,aAAa,EAAI,EACvB,MAAM4F,GACJ5F,EAAM,gBAAgB,uBACtBA,EAAM,gBAAgB,wBACtB2F,EACAnD,EACAxC,GAAO,WAAW,OAAS,EAAI,QAAU,MACzCkD,GACAO,GAAU,QACVA,GAAU,cACVA,GAAU,SACVA,GAAU,eACVC,GACAF,GACAC,IAAW,MACXzD,EAAM,MACR,EAAE,KAAM6F,GAAQ,CACd7F,EAAM,aAAa,EAAK,EACpB6F,IACF7F,EAAM,SAAW,kBACbuD,GAAqB,EAAI,EACzBvD,EAAM,QAAQ,GAAG,EAEzB,CAAC,EAEL,EAEA,OACE8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CAAE,GAAGU,EAAO,gCAAiC,QAAS,GAAI,EAC1D,CAAE,QAAS,GAAI,EAErB,UAAU,uCAETC,GAAe,CAAC0C,IACfwC,EAAA,cAACA,EAAM,SAAN,KACE,CAAC/E,GACA+E,EAAA,cAACA,EAAM,SAAN,KACE3E,IAAiB,KAChB2E,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CAAE,GAAGU,EAAO,8BAA+B,EAC3C,CAAC,EAEP,UAAU,sCAEVmF,EAAA,cAACC,GAAA,CACC,SAAU/F,EAAM,SAChB,YAAa,CAAC,EAAG,EAAG,CAAC,EACrB,cAAc,IAChB,EACA8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CAAE,GAAGU,EAAO,qCAAsC,EAClD,CAAC,EAEP,UAAU,8CAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CAAE,GAAGU,EAAO,kCAAmC,EAC/C,CAAC,EAEP,UAAU,2CAETX,EAAM,SAAW,kBACd,uCACA,oDACN,CACF,CACF,EAEA8F,EAAA,cAAC1F,EAAA,CACC,MACEH,EACI,CAAE,GAAGU,EAAO,mCAAoC,EAChD,CAAC,EAEP,UAAU,4CACV,OAAQ,CAAE,IAAK4B,EAAY,gBAAiB,EAC5C,IAAI,GACN,EAEAuD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CAAE,GAAGU,EAAO,+BAAgC,EAC5C,CAAC,EAEP,UAAU,wCAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEVmF,EAAA,cAAC1F,EAAA,CACC,OAAQ,CAAE,IAAKmC,EAAY,MAAO,EAClC,IAAI,OACN,CACF,EACAuD,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,4CAC2C,IAC1CmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDACX,gCAED,CACF,CACF,EAEAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEVmF,EAAA,cAAC1F,EAAA,CACC,OAAQ,CAAE,IAAKmC,EAAY,aAAc,EACzC,IAAI,OACN,CACF,EACAuD,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,wBACkB,IACjBmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDACX,+BAED,EAAQ,IAAI,6BAEd,CACF,EAEAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEVmF,EAAA,cAAC1F,EAAA,CACC,OAAQ,CAAE,IAAKmC,EAAY,SAAU,EACrC,IAAI,OACN,CACF,EACCvC,EAAM,SAAW,mBAChB8F,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,UACS,IACRmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDACX,uBAED,EAAQ,IAAI,+EAGd,EAGDX,EAAM,SAAW,mBAChB8F,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,gDAC+C,IAC9CmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDACX,wCAED,EAAQ,IAAI,iFAGd,CAEJ,CACF,EAEAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CAAE,GAAGU,EAAO,sCAAuC,EACnD,CAAC,EAEP,UAAU,gDAEVmF,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,sCACV,OAAQ,oBACR,MAAO,SACT,EACA,CACE,OAAQ,oBACR,MAAO,SACT,EAEN,QAAS,IAAM,CACbO,EAAiB,GAAG,EACpBF,EAAiB,EAAI,CACvB,EACA,UAAU,+CAEV8E,EAAA,cAAC3F,EAAA,KAAK,YAAU,CAClB,EAEA2F,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,wCACV,MAAO,KACT,EACA,CACE,MAAO,KACT,EAEN,QAAS,IAAM,CACbS,EAAgB,GAAG,EACnBE,EAAe,EAAK,EACpBN,EAAiB,EAAK,CACxB,EACA,UAAU,iDAEV8E,EAAA,cAAC3F,EAAA,KACEH,EAAM,SAAW,kBACd,iBACA,eACN,CACF,CACF,CACF,EAGDmB,IAAiB,KAChB2E,EAAA,cAACA,EAAM,SAAN,KACE,IACDA,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CAAE,GAAGU,EAAO,8BAA+B,EAC3C,CAAC,EAEP,UAAU,sCAEVmF,EAAA,cAACC,GAAA,CACC,SAAU/F,EAAM,SAChB,YAAa,CAAC,EAAG,EAAG,CAAC,EACrB,cAAc,IAChB,EAEA8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,sCACV,IAAK,EACP,EACA,CAAE,IAAK,EAAG,EAEhB,UAAU,8CAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CAAE,GAAGU,EAAO,kCAAmC,EAC/C,CAAC,EAEP,UAAU,2CAETX,EAAM,SAAW,kBACd,yBACA,qBACN,EAEA8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CAAE,GAAGU,EAAO,8BAA+B,EAC3C,CAAC,EAEP,UAAU,uCAET,CAACqC,IACA8C,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,qCACZ,EACA,CAAC,EAEP,UAAU,+CAETX,EAAM,SAAW,kBACd,qEACA,qEACN,EAECA,EAAM,SAAW,mBAChB8F,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,qCACZ,EACA,CAAC,EAEP,UAAU,+CACX,sBACqB,IACpBmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,6CACZ,EACA,CAAC,EAEP,UAAU,yDAET+B,EAAwB,mBAC3B,CACF,CAEJ,EAGFoD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,6CACZ,EACA,CAAC,EAEP,UAAU,yDACX,OAED,EAAQ,IACPX,EAAM,SAAW,kBACd,2GACA,sFACN,CACF,CACF,CACF,CACF,EACA8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CAAE,GAAGU,EAAO,oCAAqC,EACjD,CAAC,EAEP,UAAU,8CAETX,EAAM,SAAW,mBAChB8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,qDACZ,EACA,CAAC,EAEP,UAAU,kEAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,qDACZ,EACA,CAAC,EAEP,UAAU,kEAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,sDACZ,EACA,CAAC,EAEP,UAAU,mEAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0DACZ,EACA,CAAC,EAEP,UAAU,wEACX,SAED,CACF,EACAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,+CACZ,EACA,CAAC,EAEP,UAAU,8DAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,yDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,wDACX,KAED,EAECX,EAAM,WAAW,OAAS,GACzB8F,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,wDAETX,EAAM,SACT,EAEDA,EAAM,WAAW,SAAW,GAC3B8F,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,wDACX,KACIX,EAAM,gBAAgB,KAAK,IAAE,IAC/BA,EAAM,aACT,CAEJ,CACF,CACF,CACF,EAEF8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,qDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,mDACZ,EACA,CAAC,EAEP,UAAU,gEAETX,EAAM,SAAW,kBACd,oBACA,gBACN,EAECA,EAAM,SAAW,mBAChB8F,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oDACZ,EACA,CAAC,EAEP,UAAU,iEACX,IAEE6B,GAAW,OAAS,EAAI,EACrBA,GAAW,OAAS,EACpB,EAAE,KAER,EAEDxC,EAAM,SAAW,mBAChB8F,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oDACZ,EACA,CAAC,EAEP,UAAU,iEACX,IACG6B,GAAW,OAAO,KAEtB,CAEJ,EAEAsD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,sDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,iDACZ,EACA,CAAC,EAEP,UAAU,6DAETX,EAAM,SAAW,mBAChB8C,GAAoB,SAAS,GAAG,GAC9BgD,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CAAE,GAAGU,EAAO,6BAA8B,EAC1C,CAAC,EAEP,UAAU,sCACX,iCAED,EAEHX,EAAM,SAAW,mBAChB8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,qDACZ,EACA,CAAC,EAEP,UAAU,kEAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,qDACZ,EACA,CAAC,EAEP,UAAU,kEAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,sDACZ,EACA,CAAC,EAEP,UAAU,mEAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0DACZ,EACA,CAAC,EAEP,UAAU,wEACX,SAED,CACF,EACAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,+CACZ,EACA,CAAC,EAEP,UAAU,8DAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,yDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,wDACX,KAED,EAECX,EAAM,WAAW,OAAS,GACzB8F,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,wDAETX,EAAM,SACT,EAEDA,EAAM,WAAW,SAAW,GAC3B8F,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,wDACX,KACIX,EAAM,gBAAgB,KAAK,IAAE,IAC/BA,EAAM,aACT,CAEJ,CACF,CAKF,CACF,EAGD,CAACgD,IACAR,EACG,KAAK,CAACwD,EAAGC,IAAMD,GAAG,SAAWC,GAAG,QAAQ,EACxC,IAAI,CAACC,EAAKC,IACTL,EAAA,cAAC5F,EAAA,CACC,IAAKiG,EACL,MACElG,EACI,CACE,GAAGU,EAAO,qDACZ,EACA,CAAC,EAEP,UAAU,kEAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,qDACZ,EACA,CAAC,EAEP,UAAU,kEAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,sDACZ,EACA,CAAC,EAEP,UAAU,mEAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0DACZ,EACA,CAAC,EAEP,UAAU,wEAGRyF,GACEF,GAAK,QACP,GAAG,MAAM,GAAG,EAAE,CAAC,EAEjBJ,EAAA,cAAC3F,EAAA,KACC2F,EAAA,cAAC3F,EAAA,CAAK,MAAO,CAAE,SAAU,EAAG,GAGxBiG,GACEF,GAAK,QACP,GAAG,MAAM,GAAG,EAAE,CAAC,CAEnB,CACF,EAAQ,IAAI,YACF,IACTlG,EAAM,SAAW,kBACd,YACA,EACN,CACF,EAEA8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,+CACZ,EACA,CAAC,EAEP,UAAU,8DAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,yDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,wDAETuF,GAAK,IACR,EAECA,EAAI,aAAe,SAClBJ,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,wDAETuF,EAAI,KACP,EAEDA,EAAI,aAAe,OAClBJ,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,wDACX,KACIuF,GAAK,UAAU,KAAGA,EAAI,MAC3B,CAEJ,CACF,EAEAJ,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,iDACV,cAAe,KACjB,EACA,CAAE,cAAe,KAAM,EAE7B,UAAU,+DAeVmF,EAAA,cAACvF,EAAA,CACC,MAAO,CACL,WAAY,cACZ,MAAO,GACP,OAAQ,EACV,EACA,QAAS,IAAM,CACbkC,GAAcgD,IACZA,IACI,OAAQD,GACRA,GAAK,aAAe,MAChBA,GAAK,WAAW,YAAY,EAC1BA,GAAK,QAAQ,YAAY,IAC3BU,GAAK,WAAW,YAAY,EAC1BA,GAAK,QAAQ,YAAY,EAC3BV,GAAK,OAAO,YAAY,IACxBU,GAAK,OAAO,YAAY,CAC9B,GACE,IAAI,CAACG,EAAMC,KACXD,EAAK,SAAWC,EAAQ,EACjBD,EACR,CACL,EACAhB,GAAoB,CACtB,GAEAS,EAAA,cAAC1F,EAAA,CACC,MAAO,CACL,OAAQ,UACR,MAAO,GACP,OAAQ,EACV,EACA,OAAQ,CAAE,IAAKmC,EAAY,MAAO,EACpC,CACF,CACF,CACF,CACF,CACD,CACP,EAECS,IACC8C,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mDACZ,EACA,CAAC,EAEP,UAAU,+DAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,6CACZ,EACA,CAAC,EAEP,UAAU,wDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,qDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,uDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,sDACX,uEAGD,EACAmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,sDACX,+FAID,CACF,EAEAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,6CACV,MAAO,MACT,EACA,CAAE,MAAO,MAAO,EAEtB,UAAU,uDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mDACZ,EACA,CAAC,EAEP,UAAU,gEAET,IAAI,MACHX,EAAM,SAAW,kBACb8C,GAAoB,OAAS,EAC7BN,GAAW,OAAS,CAC1B,EACG,KAAK,GAAG,EACR,IAAI,CAACwB,EAAGmC,IACPL,EAAA,cAAC5F,EAAA,CACC,IAAKiG,EACL,UAAU,0DACV,MACEA,EAAM,IAAMjD,IACZjD,EACI,CACE,GAAGU,EAAO,+CACZ,EACAwF,EAAM,IAAMjD,IACZ,CAACjD,EACD,CAAC,EACDA,EACA,CACE,GAAGU,EAAO,gDACV,OAAQ,EACR,MAAO,EACP,SAAU,QACZ,EACA,CACE,OAAQ,EACR,MAAO,EACP,SAAU,QACZ,GAGNmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uDACZ,EACA,CAAC,EAEP,UAAU,qEAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,mDACZ,EACA,CAAC,EAEP,UAAU,gEAET,OAAOwF,EAAM,CAAC,CACjB,CACF,EACAL,EAAA,cAAC1F,EAAA,CACC,MACEH,EACI,CACE,GAAGU,EAAO,mDACZ,EACA,CAAC,EAEP,UAAU,+DACV,OAAQ,CAAE,IAAK4B,EAAY,OAAQ,EACrC,CACF,CACD,CACL,EAEAuD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,qDACZ,EACA,CAAC,EAEP,UAAU,kEAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,2DACZ,EACA,CAAC,EAEP,UAAU,yEAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uDACZ,EACA,CAAC,EAEP,UAAU,oEAETX,EAAM,SAAW,mBAChB8F,EAAA,cAAC5F,EAAA,CACC,MACED,GACAuC,GAAW,SAAW,EAClB,CACE,GAAG7B,EAAO,2DACV,MAAO,GACL,IAAM6B,GAAW,MACnB,GACF,EACA,CAACvC,GACDuC,GAAW,SAAW,EACtB,CACE,MAAO,GACL,IAAMA,GAAW,MACnB,GACF,EACAvC,EACA,CACE,GAAGU,EAAO,2DACV,MAAO,GACL,IAAM6B,GAAW,OAAS,CAC5B,GACF,EACA,CACE,MAAO,QACL,IAAMA,GAAW,MACnB,WACF,EAEN,UAAU,wEAEVsD,EAAA,cAAC1F,EAAA,CACC,MACEH,EACI,CACE,GAAGU,EAAO,2DACZ,EACA,CAAC,EAEP,UAAU,wEACV,OAAQ,CACN,IAAK4B,EAAY,SACnB,EACF,CACF,EAEDvC,EAAM,SAAW,mBAChB8F,EAAA,cAAC5F,EAAA,CACC,MACED,GACA6C,GAAoB,SAAW,EAC3B,CACE,GAAGnC,EAAO,2DACV,MAAO,GACL,IACAmC,GAAoB,MACtB,GACF,EACA,CAAC7C,GACD6C,GAAoB,SAAW,EAC/B,CACE,MAAO,GACL,IACAA,GAAoB,MACtB,GACF,EACA7C,EACA,CACE,GAAGU,EAAO,2DACV,MAAO,GACL,IACEmC,GAAoB,OACtB,CACF,GACF,EACA,CACE,MAAO,QACL,IACAA,GAAoB,MACtB,WACF,EAEN,UAAU,wEAEVgD,EAAA,cAAC1F,EAAA,CACC,MACEH,EACI,CACE,GAAGU,EAAO,2DACZ,EACA,CAAC,EAEP,UAAU,wEACV,OAAQ,CACN,IAAK4B,EAAY,SACnB,EACF,CACF,CAEJ,CACF,EAEAuD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,yDACZ,EACA,CAAC,EAEP,UAAU,uEAET,IAAI,MACHX,EAAM,SAAW,kBACb8C,GAAoB,OAAS,EAC7BN,GAAW,OAAS,CAC1B,EACG,KAAK,GAAG,EACR,IAAI,CAACwB,EAAGmC,IACPL,EAAA,cAACvF,EAAA,CACC,MAAO,CAAE,WAAY,aAAc,EACnC,IAAK4F,EACL,QAAS,IAAM,CACTA,EAAM,EAAI,GACZhD,GAAmBgD,EAAM,CAAC,CAE9B,GAECnG,EAAM,SACL,mBACA8F,EAAA,cAAC3F,EAAA,CACC,MACEF,GACAkG,IAAQ3D,GAAW,OACf,CACE,GAAG7B,EAAO,sDACV,aAAc,EAChB,EACAV,GAAiBkG,IAAQ,EACzB,CACE,GAAGxF,EAAO,sDACV,YAAa,EACf,EACA,CAACV,GAAiBkG,IAAQ,EAC1B,CAAE,YAAa,EAAG,EAClB,CAAClG,GACDkG,IAAQ3D,GAAW,OACnB,CAAE,aAAc,EAAG,EACnB,CAAC,EAEP,UAAU,kEAET,OAAO2D,EAAM,CAAC,CACjB,EAGDnG,EAAM,SACL,mBACA8F,EAAA,cAAC3F,EAAA,CACC,MACEF,GACAkG,IACErD,GAAoB,OAClB,CACE,GAAGnC,EAAO,sDACV,aAAc,EAChB,EACAV,GAAiBkG,IAAQ,EACzB,CACE,GAAGxF,EAAO,sDACV,YAAa,EACf,EACA,CAACV,GAAiBkG,IAAQ,EAC1B,CAAE,YAAa,EAAG,EAClB,CAAClG,GACDkG,IACErD,GAAoB,OACtB,CAAE,aAAc,EAAG,EACnB,CAAC,EAEP,UAAU,kEAET,OAAOqD,EAAM,CAAC,CACjB,CAEJ,CACD,CACL,CACF,CACF,EAEAL,EAAA,cAACvF,EAAA,CACC,GAAG,0BACH,MACEN,EACI,CACE,GAAGU,EAAO,oCACV,aAAc,GACd,MAAO,MACT,EACA,CAAE,aAAc,GAAI,MAAO,MAAO,EAExC,UAAU,2CACV,QAAS,SAAY,CACnB,MAAM+E,GAAoB,CAC5B,GAEAI,EAAA,cAAC3F,EAAA,KAAK,SAAO,CACf,CACF,CACF,CACF,EAGDkB,GAAemB,GAAW,OAAS,GAClCsD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,4CACV,MAAO,KACT,EACA,CAAE,MAAO,KAAM,EAErB,UAAU,uDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,kDACZ,EACA,CAAC,EAEP,UAAU,+DAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,sDACZ,EACA,CAAC,EAEP,UAAU,oEACX,aAED,CACF,EAEAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,kDACZ,EACA,CAAC,EAEP,UAAU,+DAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,sDACZ,EACA,CAAC,EAEP,UAAU,oEAGRyF,GACE5D,GAAW,OAAS,CACtB,GAAG,MAAM,GAAG,EAAE,CAAC,EAEjBsD,EAAA,cAAC3F,EAAA,CAAK,MAAO,CAAE,SAAU,EAAG,GAExBiG,GACE5D,GAAW,OAAS,CACtB,GAAG,MAAM,GAAG,EAAE,CAAC,CAEnB,EAAQ,IAAI,YACF,IACTxC,EAAM,SAAW,kBACd,YACA,EACN,CACF,CACF,EAECA,EAAM,SAAW,mBAChB8F,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,6CACZ,EACA,CAAC,EAEP,UAAU,yDAEVmF,EAAA,cAACxF,EAAA,CACC,aAAc0B,GACd,MAAOD,EACP,YAAY,uBACZ,qBAAqB,UACrB,UAAU,8DACV,MACE9B,EACI,CACE,GAAGU,EAAO,kDACZ,EACA,CAAC,EAET,CACF,EAGFmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDAETX,EAAM,aACL8F,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,iDACV,WAAY,cACZ,MAAO,GACP,OAAQ,EACV,EACA,CAAE,WAAY,aAAc,EAElC,UAAU,4DACV,QAAS,IAAM,CACba,EAAc,KAAK,EACnB6B,EAAa,EAAE,EACfvB,EAAiB,EAAE,CACrB,GAEAgE,EAAA,cAAC1F,EAAA,CACC,OAAQ,CACN,IACEmB,IAAe,MACXgB,EAAY,cACZA,EAAY,MACpB,EACA,MAAO,CAAE,MAAO,GAAI,OAAQ,EAAG,EACjC,EACAuD,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oDACZ,EACA,CAAC,EAEP,UAAU,kEACX,cAED,CACF,EAGFmF,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,iDACV,WAAY,cACZ,MAAO,GACP,OAAQ,EACV,EACA,CAAE,WAAY,aAAc,EAElC,UAAU,4DACV,QAAS,IAAM,CACba,EAAc,OAAO,EACrB6B,EAAa,EAAE,EACf3B,EAAkB,EAAE,EACpBE,EAAqB,EAAE,EACvBM,GAAa,EAAE,CACjB,GAEA4D,EAAA,cAAC1F,EAAA,CACC,OAAQ,CACN,IACEmB,IAAe,QACXgB,EAAY,cACZA,EAAY,MACpB,EACA,MAAO,CAAE,MAAO,GAAI,OAAQ,EAAG,EACjC,EACAuD,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oDACZ,EACA,CAAC,EAEP,UAAU,kEACX,OAED,CACF,CACF,EAEAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDAETY,IAAe,OACduE,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,8BACZ,EACA,CAAC,EAEP,UAAU,uCAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,mDAEVmF,EAAA,cAACvF,EAAA,CACC,QAAS,IACP6B,EAAgB,CAACD,CAAY,EAE/B,MACElC,EACI,CACE,GAAGU,EAAO,sCACV,cAAe,MACf,WAAY,QACd,EACA,CACE,cAAe,MACf,WAAY,QACd,EAEN,UAAU,+CAEVmF,EAAA,cAAC1F,EAAA,CACC,OAAQ,CAAE,IAAKiC,EAAgB,IAAK,EACpC,MAAO,CAAE,MAAO,GAAI,OAAQ,EAAG,EAC/B,IAAI,eACN,EACAyD,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,sCACZ,EACA,CAAC,EAEP,UAAU,gDACX,KACI0B,EAAgB,IACrB,EAECF,EACC2D,EAAA,cAAC1F,EAAA,CACC,OAAQ,CAAE,IAAKmC,EAAY,OAAQ,EACnC,MAAO,CAAE,MAAO,GAAI,OAAQ,EAAG,EAC/B,IAAI,gBACN,EAEAuD,EAAA,cAAC1F,EAAA,CACC,OAAQ,CAAE,IAAKmC,EAAY,SAAU,EACrC,MAAO,CAAE,MAAO,GAAI,OAAQ,EAAG,EAC/B,IAAI,gBACN,CAEJ,EAEAuD,EAAA,cAACxF,EAAA,CACC,aAAeiG,GAAS,CAEpBrE,GADEqE,IAAS,GACEtE,GAAY,IAEZsE,CAFe,EAI9B,IAAMC,EAAeD,EAAK,QACxB,MACA,EACF,EACA7E,EAAkB8E,CAAY,EAC9B,IAAIC,GAAkB,GACtB,QACMC,EAAI,EACRA,EAAIF,EAAa,OACjBE,IAEAD,IAAmBD,EAAaE,CAAC,GAE9BA,EAAI,GAAK,IAAM,GAChBA,EAAI,EAAIF,EAAa,SAErBC,IAAmB,KAGvB7E,EAAqB6E,EAAe,EACpCpD,EAAa,EAAE,CACjB,EACA,OAAQgC,GACR,MAAO1D,EACP,YAAY,qBACZ,qBAAqB,UACrB,aAAa,YACb,UAAU,+CACV,MACE1B,EACI,CACE,GAAGU,EAAO,sCACZ,EACA,CAAC,EAET,CACF,EAECwB,GACC2D,EAAA,cAACa,GAAA,CACC,SAAU3G,EAAM,SAChB,SAAS,cACT,cAAeA,EAAM,aACrB,KAAK,YACL,oBAAqBqF,GACrB,YAAa/C,GACb,SAAUD,EACV,aAAcF,EACd,gBAAiBC,EACjB,iBAAkB,IAClB,oBAAqB,IACvB,EAGDgB,KAAc,IACb3B,EAAe,SAAW,IAC1BQ,GAAU,OAAS,IACjB6D,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,6CAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,8BACZ,EACA,CAAC,EAEP,UAAU,uCACX,8CAGD,CACF,EAGHyC,KAAc,IACb0C,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,6CAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,8BACZ,EACA,CAAC,EAEP,UAAU,uCAETyC,EACH,CACF,CAEJ,EAGD7B,IAAe,SACduE,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,+BACV,MAAO,MACT,EACA,CAAE,MAAO,MAAO,EAEtB,UAAU,uCAEVmF,EAAA,cAACxF,EAAA,CACC,MACEL,EACI,CACE,GAAGU,EAAO,uCACV,MAAO,MACT,EACA,CAAE,MAAO,MAAO,EAEtB,aAAe4F,GAAiB,CAC9BzE,EAAiByE,CAAI,EACrBlD,EAAa,EAAE,CACjB,EACA,OAAQgC,GACR,MAAOxD,EACP,YAAY,cACZ,qBAAqB,UACrB,aAAa,gBACb,eAAe,OACf,UAAU,+CACZ,EACCuB,KAAc,IACb0C,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,6CAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,8BACZ,EACA,CAAC,EAEP,UAAU,uCAETyC,EACH,CACF,CAEJ,CAEJ,EAEA0C,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,+CACV,cAAe,MACf,eAAgB,eAClB,EACA,CACE,cAAe,MACf,eAAgB,eAClB,EAEN,UAAU,0DAEVmF,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,mDACV,KAAM,EACN,YAAa,EACb,OAAQ,oBACR,MAAO,SACT,EACA,CACE,KAAM,EACN,YAAa,EACb,OACE,0DACF,MACE,+CACJ,EAEN,UAAU,8DACV,QAAS,IAAMW,EAAe,EAAK,GAEnCwE,EAAA,cAAC3F,EAAA,KAAK,QAAM,CACd,EAEA2F,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,qDACV,KAAM,EACN,WAAY,CACd,EACA,CAAE,KAAM,EAAG,WAAY,CAAE,EAE/B,UAAU,gEACV,QAAS,IAAM,CACb2E,GAAkB,EAClBD,GAAoB,CACtB,GAEAS,EAAA,cAAC3F,EAAA,KAAK,KAAG,CACX,CACF,CACF,EAGD,CAACkB,GACA,CAAC2B,IACDR,GAAW,OAAS,GAClBsD,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,kDACV,WAAY,cACZ,MAAO,GACP,OAAQ,EACV,EACA,CAAE,WAAY,aAAc,EAElC,UAAU,4DACV,QAAS,IAAMW,EAAe,EAAI,GAElCwE,EAAA,cAAC1F,EAAA,CACC,OAAQ,CAAE,IAAKmC,EAAY,OAAQ,EACnC,MAAO,CAAE,MAAO,GAAI,OAAQ,EAAG,EACjC,EACAuD,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,qDACZ,EACA,CAAC,EAEP,UAAU,kEAET,IACAX,EAAM,SAAW,kBACd,2BACA,wBACN,CACF,EAGH,CAACqB,GACA,CAAC2B,IACDR,GAAW,SAAW,GACpBsD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,oDACZ,EACA,CAAC,EAEP,UAAU,iEAEVmF,EAAA,cAAC1F,EAAA,CACC,OAAQ,CAAE,IAAKmC,EAAY,cAAe,EAC1C,MAAO,CAAE,MAAO,GAAI,OAAQ,EAAG,EACjC,EACAuD,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,wDACZ,EACA,CAAC,EAEP,UAAU,sEACX,wBACuB,IACrBX,EAAM,SAAW,kBACd,YACA,EACN,CACF,CAEN,CACF,EACC,CAACgD,IACA8C,EAAA,cAACvF,EAAA,CACC,UACEiC,GAAW,OAAS,EAChB,2CACA,oCAEN,MACEvC,GAAiBuC,GAAW,OAAS,EACjC,CACE,GAAG7B,EAAO,oCACV,aAAc,OACd,MAAO,MACT,EACAV,GAAiBuC,GAAW,SAAW,EACvC,CACE,GAAG7B,EAAO,8BACV,aAAc,OACd,MAAO,MACT,EACAV,GACAuC,GAAW,OAAS,GACpB,CAACnB,GACDmB,GAAW,OAAS,EACpB,CACE,GAAG7B,EAAO,oCACV,UAAW,OACX,aAAc,OACd,MAAO,MACT,EACAV,GACAuC,GAAW,SAAW,GACtB,CAACnB,GACDmB,GAAW,OAAS,EACpB,CACE,GAAG7B,EAAO,8BACV,UAAW,OACX,aAAc,OACd,MAAO,MACT,EACA,CAACU,GAAemB,GAAW,OAAS,EACpC,CACE,UAAW,OACX,aAAc,OACd,MAAO,MACT,EACA,CAAE,aAAc,OAAQ,MAAO,MAAO,EAE5C,QAAS,IAAM,CACTA,GAAW,OAAS,IACtBW,GAAmB,CAAC,EACpBF,GAAe,EAAI,EACnB3B,EAAe,EAAK,EAExB,GAEAwE,EAAA,cAAC3F,EAAA,CAAK,MAAOQ,EAAO,YAAY,SAAO,CACzC,CAEJ,CAEJ,EAGDI,GACC+E,EAAA,cAACA,EAAM,SAAN,KACE7E,IAAkB,KACjB6E,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC1F,EAAA,CACC,MACEH,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,4CACV,OAAQ,CAAE,IAAK4B,EAAY,gBAAiB,EAC5C,IAAI,GACN,EAEAuD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,6CAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CACX,sBAED,CACF,CACF,EACAmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CACX,mHAGD,CACF,EAEAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,sCACZ,EACA,CAAC,EAEP,UAAU,gDAEVmF,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,sCACV,OAAQ,oBACR,MAAO,SACT,EACA,CACE,OAAQ,wCACR,MAAO,6BACT,EAEN,QAAS,IAAMK,EAAiB,EAAK,EACrC,UAAU,+CAEV8E,EAAA,cAAC3F,EAAA,KAAK,MAAI,CACZ,EAEA2F,EAAA,cAACvF,EAAA,CACC,QAAS,IAAMW,EAAiB,GAAG,EACnC,MACEjB,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,iDAEVmF,EAAA,cAAC3F,EAAA,KAAK,MAAI,CACZ,CACF,CACF,EAGDc,IAAkB,KACjB6E,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC1F,EAAA,CACC,UAAU,4CACV,MACEH,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,OAAQ,CAAE,IAAK4B,EAAY,gBAAiB,EAC5C,IAAI,GACN,EAEAuD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,6CAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,oDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CACX,mBAED,CACF,CACF,EACAmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CACX,6HAID,CACF,EAEAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,sCACZ,EACA,CAAC,EAEP,UAAU,gDAEVmF,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,sCACV,OAAQ,wCACR,MAAO,6BACT,EACA,CACE,OAAQ,wCACR,MAAO,6BACT,EAEN,QAAS,IAAMO,EAAiB,GAAG,EACnC,UAAU,+CAEV4E,EAAA,cAAC3F,EAAA,KAAK,MAAI,CACZ,EAEA2F,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,wCACV,OAAQ,oBACR,MAAO,SACT,EACA,CACE,OAAQ,wCACR,MAAO,6BACT,EAEN,QAAS,IAAMO,EAAiB,GAAG,EACnC,UAAU,iDAEV4E,EAAA,cAAC3F,EAAA,KAAK,MAAI,CACZ,CACF,CACF,EAGDc,IAAkB,KACjB6E,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAAC1F,EAAA,CACC,MACEH,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,4CACV,OAAQ,CAAE,IAAK4B,EAAY,gBAAiB,EAC5C,IAAI,GACN,EAEAuD,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,6CAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEVmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDAEVmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CACX,0BAED,CACF,CACF,EACAmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CACX,+FAGD,EACAmF,EAAA,cAAC3F,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,uBAED,CACF,EAEAmF,EAAA,cAAC5F,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,sCACZ,EACA,CAAC,EAEP,UAAU,gDAEVmF,EAAA,cAACvF,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,sCACV,OAAQ,oBACR,MAAO,SACT,EACA,CACE,OAAQ,wCACR,MAAO,6BACT,EAEN,QAAS,IAAMO,EAAiB,GAAG,EACnC,UAAU,+CAEV4E,EAAA,cAAC3F,EAAA,KAAK,MAAI,CACZ,EAEA2F,EAAA,cAACvF,EAAA,CACC,QAAS,IAAM,CACba,EAAgB,GAAG,EACnBE,EAAe,EAAK,EACpBN,EAAiB,EAAK,EACtBE,EAAiB,GAAG,CACtB,EACA,MACEjB,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,iDAEVmF,EAAA,cAAC3F,EAAA,KAAK,OAAK,CACb,CACF,CACF,CAEJ,CAEJ,EAEDS,GAAe0C,IACdwC,EAAA,cAACc,GAAA,CACC,SAAU5G,EAAM,SAChB,OAAQA,EAAM,OACd,QAASA,EAAM,QACf,UAAU,IACV,iBAAiB,aACjB,iBAAiB,aACjB,iBAAiB,qFACjB,iBAAiB,qFACjB,WAAY,EAAAA,EAAM,gBAClB,WAAYA,EAAM,gBAAkB,kBAAoB,GACxD,oBAAqB,IAAM,CACrBA,EAAM,iBACRA,EAAM,gBAAgB,EAAK,EAEzBA,EAAM,uBACRA,EAAM,sBAAsB,EAAK,EAEnCA,EAAM,iBAAiB,EAAI,CAC7B,EACA,WAAY,IAAM,CACZA,EAAM,iBACRA,EAAM,gBAAgB,EAAK,EAEzBA,EAAM,uBACRA,EAAM,sBAAsB,EAAK,EAEnCA,EAAM,iBAAiB,EAAI,CAC7B,EACF,EAGD,CAACY,GAAekF,EAAA,cAAC3F,EAAA,KAAK,yBAAuB,CAChD,CAEJ,EAEO0G,GAAQ9G,GC/2Ff,OAAO+G,GAAS,aAAAC,GAAW,UAAAC,GAAQ,YAAAC,OAAgB,QA6BnD,OAAS,UAAAC,OAAc,SAEvB,IAAMC,GAAgBC,GAyDhB,CACJ,GAAM,CACJ,cAAAC,EACA,KAAAC,EACA,KAAAC,EACA,MAAAC,EACA,WAAAC,EACA,UAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,KAAAC,EACA,aAAAC,EACA,OAAAC,EACA,UAAAC,CACF,EAAIZ,EAAM,SACJ,CAACa,EAAaC,CAAc,EAAIC,GAASf,EAAM,aAAe,EAAK,EACnE,CAACgB,EAAcC,CAAe,EAAIF,GAAS,EAAK,EAChD,CAACG,EAASC,CAAU,EAAIJ,GAAS,EAAI,EACrC,CAACK,EAAcC,CAAe,EAAIN,GAAS,EAAK,EAChD,CAACO,EAAaC,CAAc,EAAIR,GAAS,EAAK,EAC9C,CAACS,EAAWC,CAAa,EAAIV,GAAS,IAAI,EAC1C,CAACW,EAAcC,CAAe,EAAIZ,GAAS,IAAI,EAC/C,CAACa,EAASC,CAAW,EAAId,GAASf,EAAM,YAAc,IAAc,EACpE,CAAC8B,EAAYC,CAAa,EAAIhB,GAAS,EAAK,EAC5C,CAACiB,GAAgBC,EAAiB,EAAIlB,GAAS,EAAK,EACpD,CAACmB,GAAuBC,CAAwB,EAAIpB,GAAS,EAAK,EAClE,CAACqB,EAAsBC,CAAuB,EAAItB,GAAS,EAAK,EAChE,CAACuB,GAAYC,CAAa,EAAIxB,GAAS,EAAK,EAC5C,CAACyB,GAAkBC,CAAmB,EAAI1B,GAAS,EAAE,EACrD,CAAC2B,GAAQC,EAAS,EAAI5B,GAAS,EAAK,EACpC,CAAC6B,GAAOC,CAAQ,EAAI9B,GAAS,CAAC,CAAC,EAC/B,CAAC+B,GAAKC,EAAM,EAAIhC,GAAS,CAAC,GAAI,GAAI,GAAI,EAAE,CAAC,EACzCiC,GAAYC,GAAmB,CAAC,CAAC,EACjC,CAACC,GAAOC,EAAQ,EAAIpC,GAAS,EAAK,EAClC,CAACqC,GAAgBC,CAAiB,EAAItC,GAAS,IAAI,EAEnD,CACJ,WAAAuC,GACA,WAAAC,GACA,MAAAC,GACA,YAAAC,GACA,UAAAC,GACA,iBAAAC,GACA,aAAAC,EACF,EAAIC,GAAc,EAElBC,GAAU,IAAM,CACd,IAAMC,EAAqB,SAAY,CACrC,GAAK9D,EAIMQ,GAET,MAAMuD,GAAqBvD,CAAI,EAC/BK,EAAe,EAAI,MAPD,CAElB,IAAMmD,EAAgBC,GAAmB,QAAQ,EACjDpD,EAAemD,CAAa,CAC9B,CAOF,EACKjE,EAAM,aACT+D,EAAmB,CAEvB,EAAG,CAAC,CAAC,EAEL,IAAMI,GAAmB,CAACC,EAAcC,IAAgB,CACtD,GAAID,EAAK,OAAS,EAAG,CAEnB,IAAME,EAAQF,EAAK,QAAQ,MAAO,EAAE,EAC9BG,GAAS,CAAC,GAAGzB,EAAG,EAClB0B,GAAa,EAEjB,QAASC,GAAIJ,EAAKI,GAAI3B,GAAI,QAAU0B,GAAaF,EAAM,OAAQG,KAC7DF,GAAOE,EAAC,EAAIH,EAAME,EAAU,EAC5BA,KAEFzB,GAAOwB,EAAM,EAGb,IAAMG,GAAYL,EAAMC,EAAM,OAC1BI,GAAY5B,GAAI,QAAUE,GAAU,QAAQ0B,EAAS,GACvD1B,GAAU,QAAQ0B,EAAS,EAAE,MAAM,EAErCzD,EAAgB,EAAK,CACvB,KAAO,CAEL,IAAM0D,EAAQP,EAAK,QAAQ,MAAO,EAAE,EAC9BG,GAAS,CAAC,GAAGzB,EAAG,EACtByB,GAAOF,CAAG,EAAIM,EACd5B,GAAOwB,EAAM,EAGTI,GAAS3B,GAAU,QAAQqB,EAAM,CAAC,GACpCrB,GAAU,QAAQqB,EAAM,CAAC,EAAE,MAAM,EAEnCpD,EAAgB,EAAK,CACvB,CACF,EAEM2D,GAAiB,CAACC,EAAQR,EAAaS,IAAW,CAC1CA,EAAE,YAAY,MAGhB,aACR,CAAChC,GAAIuB,CAAG,GACRA,EAAM,GACNrB,GAAU,QAAQqB,EAAM,CAAC,GAEzBrB,GAAU,QAAQqB,EAAM,CAAC,EAAE,MAAM,CAErC,EAEMU,GAAWjC,GAAI,MAAOkC,GAAMA,EAAE,OAAS,CAAC,EAExCC,EAAkB,MAAOC,GAKzB,CAKJ,GAHIA,GAAU,UAAY,QAAQ,SAAS,WAAW,gBACpD,QAAQ,SAAS,WAAW,eAAeA,GAAU,QAAQ,EAE3D,CAAClF,EAAM,gBACTyC,EACE,qFACF,EACAxB,EAAgB,EAAI,UAEpBwB,EAAoB,EAAE,EACtBxB,EAAgB,EAAK,EAGlBiC,IAAS6B,IAAY/E,EAAM,eAAiBA,EAAM,YAClD,CAACkD,IAASlD,EAAM,eAAiBA,EAAM,YAAckF,EACtD,CACAlF,EAAM,aAAa,EAAI,EACvB,IAAMmF,EAAUD,GAAU,UACtBA,GAAU,UACVpC,GAAI,KAAK,EAAE,EACf,MAAMsC,GACJpF,EAAM,QACNA,EAAM,cACNmF,EACAD,GAAU,OAASA,GAAU,OAASG,EAAcF,CAAO,EAC3DnF,EAAM,WACNA,EAAM,aACNA,EAAM,aACN,OAAO4B,CAAO,EACd0D,IAAqB,SAAStF,EAAM,QAAQ,YAAY,CAAC,EACzD,KACAkF,GAAU,KACZ,EAAE,KAAK,MAAOK,GAAQ,CACpB,GAAIA,GAAO,CAACA,GAAK,gBACfvF,EAAM,aAAa,EAAK,EACxByB,EAAc8D,CAAG,EACjB5D,EACE4D,GAAK,IAAMvF,EAAM,SAAW,sBACxB,CACE,QAASuF,EAAI,QACb,QAASA,EAAI,QACb,QAASA,EAAI,QACb,GAAIA,GAAK,EACX,EACA,CACE,QAASvF,EAAM,WACf,QAASuF,EAAI,QACb,QAASA,EAAI,OACf,CACN,EAGEvF,EAAM,SAAW,SACjBA,EAAM,cAAc,SAAS,YAAY,IACvCA,EAAM,SAAS,YAAY,GAE7BA,EAAM,aAAa,EAAI,EACvB,MAAMwF,GACJxF,EAAM,gBAAgB,sBACtBA,EAAM,cACNkF,GAAU,OAASA,GAAU,OAASG,EAAcF,CAAO,EAC3DnF,EAAM,QACNmF,EACAnF,EAAM,WACNA,EAAM,aACN,OAAO4B,CAAO,EACdsD,GAAU,KACZ,EAAE,KAAK,MAAOK,IAAQ,CACpBvF,EAAM,aAAa,EAAK,EACpB,CAACC,GAAiB,QAAQ,SAAS,MACrC,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAE3C,CAACA,GACD,CAAC,QAAQ,SAAS,OAClB,aAEA,aAAa,WAAW,SAAS,EACxBA,GAAiBS,GAC1B,MAAMA,EAAa,WAAW,SAAS,EAErC6E,GACFhE,EAAe,EAAI,GAEnBkB,EACE,qGACF,EACAxB,EAAgB,EAAI,EAExB,CAAC,GACQjB,EAAM,SAAW,gBAC1BA,EAAM,aAAa,EAAI,EACvB,MAAMyF,GACJzF,EAAM,gBAAgB,kBACtBA,EAAM,gBAAgB,qBACtBA,EAAM,cACNkF,GAAU,OAASA,GAAU,OAASG,EAAcF,CAAO,EAC3DnF,EAAM,QACNmF,EACAnF,EAAM,WACNA,EAAM,cAAc,QACpBA,EAAM,cAAc,cACpBA,EAAM,cAAc,eACpBA,EAAM,WAAW,GACjB,OAAO4B,CAAO,EACdsD,GAAU,KACZ,EAAE,KAAK,MAAOK,IAAQ,CACpBvF,EAAM,aAAa,EAAK,EAEtB,CAACC,GACD,CAACD,EAAM,WAAW,SAClB,QAAQ,SAAS,OACjB,CAACA,EAAM,aAEP,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAE3C,CAACC,GACD,CAACD,EAAM,WAAW,SAClB,CAAC,QAAQ,SAAS,OAClB,CAACA,EAAM,cACP,aAEA,aAAa,WAAW,SAAS,EAEjCC,GACAS,GACA,CAACV,EAAM,WAAW,SAClB,CAACA,EAAM,cAEP,MAAMU,EAAa,WAAW,SAAS,EAErC6E,GACFhE,EAAe,EAAI,GAEnBkB,EACE,+JACF,EACAxB,EAAgB,EAAI,EAExB,CAAC,GAEDjB,EAAM,SAAW,oBACjBA,EAAM,cAAc,SAAS,YAAY,IACvCA,EAAM,SAAS,YAAY,GAE7BA,EAAM,aAAa,EAAI,EACvB,MAAM0F,GACJzF,EACAS,EACAV,EAAM,cACNkF,GAAU,OAASA,GAAU,OAASG,EAAcF,CAAO,EAC3DnF,EAAM,QACNmF,EACAnF,EAAM,WACNA,EAAM,WAAW,GACjBA,EAAM,aACN,OAAO4B,CAAO,EACdsD,GAAU,KACZ,EAAE,KAAK,MAAOK,IAAQ,CACpBvF,EAAM,aAAa,EAAK,EACpBuF,GACFhE,EAAe,EAAI,GAEf,CAACtB,GAAiB,QAAQ,SAAS,MACrC,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAE3C,CAACA,GACD,CAAC,QAAQ,SAAS,OAClB,aAEA,aAAa,WAAW,SAAS,EACxBA,GAAiBS,GAC1B,MAAMA,EAAa,WAAW,SAAS,EAEzC+B,EACE,yHACF,EACAxB,EAAgB,EAAI,EAExB,CAAC,GAEDjB,EAAM,SAAW,uBACjBA,EAAM,YAAY,OAAS,GAC3BuF,GAAK,KAAK,OAAS,GACnBvF,EAAM,eAEN6C,EAAS,CACP,QAAAjB,EACA,GAAIsB,GAAQpD,GAAO,oBAAoByF,GAAK,GAAG,EAAI,GACnD,MAAOrC,GAAQ,GAAKgC,GAAU,MAC9B,GAAGlF,EAAM,QACX,CAAC,EACDiC,GAAkB,EAAK,EACvBU,GAAU,EAAI,GAEd3C,EAAM,SAAW,cACjBA,EAAM,cAAc,SAAS,YAAY,IACvCA,EAAM,SAAS,YAAY,GAC7BA,EAAM,cAAc,YAAY,YAAY,IAC1CA,EAAM,SAAS,YAAY,GAE7ByC,EAAoB,EAAE,EACtBxB,EAAgB,EAAK,EACrBgB,GAAkB,EAAI,GAEtBjC,EAAM,SAAW,cACjBA,EAAM,cAAc,SAAS,YAAY,IACvCA,EAAM,SAAS,YAAY,GAE7ByC,EACE,gFAAgFzC,EAAM,cAAc,UAAU,UAChH,EACAiB,EAAgB,EAAI,GAEpBjB,EAAM,SAAW,cACjBA,EAAM,cAAc,YAAY,YAAY,IAC1CA,EAAM,SAAS,YAAY,GAE7ByC,EACE,4EAA4EzC,EAAM,cAAc,UAAU,UAC5G,EACAiB,EAAgB,EAAI,GAEpBjB,EAAM,SAAW,SACjBA,EAAM,cAAc,SAAS,YAAY,IACvCA,EAAM,SAAS,YAAY,GAEzB,CAACC,GAAiB,QAAQ,SAAS,MACrC,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAE3C,CAACA,GACD,CAAC,QAAQ,SAAS,OAClB,aAEA,aAAa,WAAW,SAAS,EACxBA,GAAiBS,GAC1B,MAAMA,EAAa,WAAW,SAAS,EAEzC+B,EACE,gFAAgFzC,EAAM,cAAc,OAAO,UAC7G,EACAiB,EAAgB,EAAI,GAEpBjB,EAAM,SAAW,oBACjBA,EAAM,cAAc,SAAS,YAAY,IACvCA,EAAM,SAAS,YAAY,GAEzB,CAACC,GAAiB,QAAQ,SAAS,MACrC,MAAM,OAAO,QAAQ,MAAM,OAAO,SAAS,EAE3C,CAACA,GACD,CAAC,QAAQ,SAAS,OAClB,aAEA,aAAa,WAAW,SAAS,EACxBA,GAAiBS,GAC1B,MAAMA,EAAa,WAAW,SAAS,EAEzC+B,EACE,gGAAgGzC,EAAM,cAAc,OAAO,UAC7H,EACAiB,EAAgB,EAAI,GAEnBjB,EAAM,SAAW,kBAAoB,CAACA,GAAO,cAC7CA,EAAM,SAAW,uBAAyB,CAACA,GAAO,cAEnDyC,EACE,+JACF,EACAxB,EAAgB,EAAI,GACXjB,EAAM,SAAW,IAAMA,EAAM,aACtCA,EAAM,iBAAiB,EAAI,EAClBA,EAAM,SAAW,IAAM,CAACA,EAAM,cACvCyC,EACE,+DACF,EACAxB,EAAgB,EAAI,IAEpBwB,EAAoB,EAAE,EACtBxB,EAAgB,EAAK,EACrBM,EAAe,EAAI,WAEZgE,GAAOA,GAAK,iBAAmBA,GAAK,GAAI,CACjD,IAAMI,GAA2B,MAAMC,GACrC,OAAOhE,CAAO,EACd2D,GAAK,EACP,EAiBA,GAhBAjC,GAAWqC,GAAyB,OAAO,EAC3CpC,GAAWoC,GAAyB,OAAO,EAC3CnC,GAAMmC,GAAyB,EAAE,EACjClC,GAAYkC,GAAyB,QAAQ,EAC7CjC,GAAUiC,GAAyB,MAAM,EACzChC,GAAiBgC,GAAyB,aAAa,EACvD/B,GAAa,CACX,QAAS2B,GAAK,QACd,cAAeA,GAAK,cACpB,SAAUA,GAAK,IACf,eAAgBrC,GACZmC,EAAcE,GAAK,GAAG,EACtBM,GAAcN,GAAK,KAAK,EAC5B,cAAeI,GAAyB,cACxC,MAAOJ,GAAK,KACd,CAAC,EACGA,GAAK,SAAS,YAAY,IAAM,MAAO,CACzC,IAAMO,GAAWP,GAAK,SAAS,QAC7BA,GAAK,SAAS,MAAM,GAAG,EACvB,EACF,EACMQ,GACJR,GAAK,SAAS,MAAM,GAAG,GAAG,MAAM,EAAG,CAAC,EACpC,IACAA,GAAK,SAAS,MAAM,GAAG,GAAG,MAAM,CAAC,EACnCvF,EAAM,mBAAmB,CACvB,KAAM8F,IAAU,QAAQ,IAAK,EAAE,EAC/B,KAAM,GACN,KAAM,EACR,CAAC,EAED9F,EAAM,iBAAiB+F,EAAe,EACtC/F,EAAM,aAAa,EAAE,CACvB,MACEA,EAAM,aAAauF,GAAK,OAAO,EAC/BvF,EAAM,iBAAiB,EAAE,EAE3BA,EAAM,aAAa,EAAK,EACxBA,EAAM,qBAAqB,EAAI,EAC/BA,EAAM,iBAAiB,EAAK,CAC9B,MACEyC,EACES,GACI,GACA,6EAA6ElD,EAAM,OAAO,EAChG,EACAiB,EAAgB,EAAI,EACpBjB,EAAM,aAAa,EAAK,CAE5B,CAAC,CACH,KACM,CAACkD,IAAS,CAACgC,IACbzC,EACE,yDACF,EACAxB,EAAgB,EAAI,GAGlBiC,IAAS,CAAC6B,KACZtC,EAAoB,mCAAmC,EACvDxB,EAAgB,EAAI,EAI5B,EAEM+E,EAAkC,MAAOC,GAAsB,CACnE,IAAMC,EAAUlG,EAAM,QACtB,GACEwB,GAAW,KAAK,OAAS,GACzBA,GAAW,IAAI,OAAS,GACxBxB,GAAO,cAAc,eACrBA,EAAM,cAAc,gBACpBkG,GACAlG,EAAM,iBAAiB,uBACvBA,EAAM,iBAAiB,qBACvB,CACAA,EAAM,aAAa,EAAI,EACvB,IAAMmG,EAAW3E,EAAU,IACrB4E,GAAgBf,EAAca,CAAO,EACrCG,GAAiBnD,GACnBmC,EAAcc,CAAQ,EACtBN,GAAcrE,EAAU,KAAK,EACjC,MAAM8E,GACJtG,EAAM,gBAAgB,sBACtBA,EAAM,gBAAgB,qBACtBA,EAAM,aACNoG,GACAC,GACArG,GAAO,cAAc,cACrBA,EAAM,cAAc,eACpBA,GAAO,cAAc,QACrBkG,EACAD,EACA,KACAzE,EAAU,GACV,OAAOI,CAAO,CAChB,EAAE,KAAM2D,IAAQ,CACdvF,EAAM,aAAa,EAAK,EACpBuF,KACFhD,EAAc0D,CAAQ,EACtB9D,EAAyB,EAAI,EAEjC,CAAC,CACH,CACF,EAEMoE,GAAiB,SAAY,CAGjC,GAFA9D,EAAoB,EAAE,EACtBxB,EAAgB,EAAK,EACjB,QAAQ,SAAS,OAAQ,CAC3B,IAAMuF,EACJxG,GAAO,kBAAkB,OAAS,EAC9BA,GAAO,iBACPyG,GACAC,EAAkB,MAAOC,EAAUC,GAAaC,KAAY,CAChE,GAAIF,EAAI,OAAS,wBACf,GACEA,GAAK,QACLH,GAAY,YAAY,GAAG,WAAWG,GAAK,QAAQ,YAAY,CAAC,EAChE,CACIvD,IACF,OAAO,QAAQ,OAAOA,EAAc,EAElCwD,IAAQ,KAAOA,IAAQ,KAAK,UAC9B,OAAO,QAAQ,OAAOA,GAAO,IAAI,QAAQ,EAE3C,IAAME,GAAaH,EAAI,KAEvB,GAAIG,IAAY,IAAMA,IAAY,MAAO,CACvC,IAAMC,GAASC,GAAoBF,IAAY,KAAK,EAC9CG,GAAWpB,GAAckB,EAAM,EAC/B7B,GAAW,CACf,UAAW4B,IAAY,GACvB,OAAQG,GACR,MAAOF,GACP,SAAUL,CACZ,EAEIxB,IACF,MAAMD,EAAgBC,EAAQ,CAElC,MACEzC,EACE,kCAAkCqE,IAAY,OAC1C,SAAS,GACT,QACA,6EACA,EACF,CAAC,kBACL,EACA7F,EAAgB,EAAI,CAExB,MACEwB,EACE,wEACF,EACAxB,EAAgB,EAAI,CAG1B,EACA,OAAO,QAAQ,UAAU,YAAYyF,CAAe,EACpD,MAAM,OAAO,QACV,OAAO,CACN,IAAK,GAAGF,CAAU,GAClB,KAAM,QACN,MAAO,IACP,OAAQ,GACV,CAAC,EACA,KAAMU,GAAY,CACjB7D,EAAkB6D,EAAQ,EAAE,CAC9B,CAAC,CACL,KACE,IAAI,CACF,IAAMJ,EAAkB7G,EACpB,MAAMW,EAAU,IAAIuG,GAAkC,CAAC,EACvD,MAAM,WAAW,aAAa,IAAI,CAChC,UAAWA,GAAkC,CAC/C,CAAC,EACCF,EAAWpB,GAAciB,GAAY,KAAK,EAChD,MAAO,CACL,UAAWA,GAAY,GACvB,OAAQG,EACR,MAAOH,GAAY,KACrB,CACF,OAASM,EAAK,CACZ3E,EACE,kCAAkC2E,GAAK,SAAS,QAC9C,6EACA,EACF,CAAC,kBACH,EACAnG,EAAgB,EAAI,CACtB,CAEJ,EAEA,OACEoG,EAAA,cAACA,EAAM,SAAN,KACExG,GAAe,CAACmB,IAAkB,CAACU,IAClC2E,EAAA,cAACA,EAAM,SAAN,KACE,CAAC/F,GACA+F,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,gCACV,QAAS,OACT,WAAY,GACd,EACA,CAAE,QAAS,OAAQ,WAAY,GAAI,EAEzC,UAAU,uCAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,8BACZ,EACA,CAAC,EAEP,UAAU,sCAEV0G,EAAA,cAACC,GAAA,CACC,SAAUtH,EAAM,SAChB,YAAa,CAAC,CAAC,EACf,cAAc,IAChB,EACAqH,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,qCACZ,EACA,CAAC,EAEP,UAAU,8CAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,+CACZ,EACA,CAAC,EAEP,UAAU,yDAEV0G,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,mCACV,UAAW,QACb,EACA,CAAE,UAAW,QAAS,EAE5B,UAAU,2CAETuC,GAAQ,YAAc,+BACzB,CACF,EACAmE,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,8BACZ,EACA,CAAC,EAEP,UAAU,uCAEV0G,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CACX,mCACkC,IACjC0G,EAAA,cAAClH,EAAA,CAAK,MAAO,CAAE,MAAO,SAAU,GAC7B+C,GAAQ,wBAA0B,kBACrC,EAAQ,IAAI,WACH,IACTmE,EAAA,cAAClH,EAAA,CAAK,MAAO,CAAE,MAAO,SAAU,GAAIH,EAAM,OAAQ,EAAQ,IAAI,UAEhE,EACAqH,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,gCACZ,EACA,CAAC,EAEP,UAAU,yCAETX,EAAM,YACLqH,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CAET,MAAMX,EAAM,UAAU,iBACrBA,EAAM,QAAUA,EAAM,KACxB,EACF,CAEJ,CACF,CACF,EAECkD,IACCmE,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,iCACZ,EACA,CAAC,EAEP,UAAU,0CAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,6BACZ,EACA,CAAC,EAEP,UAAU,sCAETmC,GAAI,IAAI,CAAC+B,EAAGR,IACXgD,EAAA,cAAC/G,EAAA,CACC,IAAK+D,EACL,IAAMkD,GAAavE,GAAU,QAAQqB,CAAG,EAAIkD,EAC5C,UACEvG,EACI,mCACA,+BAEN,MACEf,GAAiBe,EACb,CACE,GAAGL,EAAO,2BACZ,EACAV,GAAiB,CAACe,EAClB,CAAE,GAAGL,EAAO,wBAAyB,EACrC,CAAC,EAEP,gBAAiBO,EACjB,UAAW,EACX,MAAO4B,GAAIuB,CAAG,EACd,aAAeD,GACbD,GAAiBC,EAAMC,CAAG,EAE5B,WAAaS,GAAWF,GAAeE,EAAGT,EAAKS,CAAC,EAChD,aAAa,aACb,GAAI,gCAAgCT,CAAG,GACzC,CACD,CACH,EAEAgD,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,wBACZ,EACA,CAAC,EAEP,UAAU,gCAETK,GAAgB,CAACwB,IAChB6E,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,gCACZ,EACA,CAAC,EAEP,UAAU,yCACX,8BAED,EAEDK,GAAgBwB,IACf6E,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,gCACZ,EACA,CAAC,EAEP,UAAU,yCAET6B,EACH,EAED,CAACxB,GAAgBqG,EAAA,cAAClH,EAAA,IAAK,EAEtBe,EAWAmG,EAAA,cAAC9G,EAAA,CACC,QAAS,IAAMY,EAAW,EAAK,EAC/B,MAAO,CAAE,gBAAiB,aAAc,GAExCkG,EAAA,cAACjH,EAAA,CACC,MAAO,CAAE,MAAO,GAAI,OAAQ,EAAG,EAC/B,OAAQ,CAAE,IAAKoH,EAAY,OAAQ,EACrC,CACF,EAlBAH,EAAA,cAAC9G,EAAA,CACC,QAAS,IAAMY,EAAW,EAAI,EAC9B,MAAO,CAAE,gBAAiB,aAAc,GAExCkG,EAAA,cAACjH,EAAA,CACC,MAAO,CAAE,MAAO,GAAI,OAAQ,EAAG,EAC/B,OAAQ,CAAE,IAAKoH,EAAY,OAAQ,EACrC,CACF,CAYJ,CACF,EAGD,CAACtE,IACAmE,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,6CAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEV0G,EAAA,cAACnH,EAAA,CAAK,UAAU,mDACdmH,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,qCACV,SAAU8G,EACRxH,EACA,MACF,CACF,EACA,CACE,SAAUwH,EACRxH,EACA,MACF,CACF,EAEN,UAAU,8CACX,oBAED,CACF,CACF,EAEAoH,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,qCACV,SAAU8G,EACRxH,EACA,MACF,CACF,EACA,CACE,SAAUwH,EACRxH,EACA,MACF,CACF,EAEN,UAAU,8CACX,gKAID,EACAoH,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,qCACV,SAAU8G,EACRxH,EACA,MACF,CACF,EACA,CACE,SAAUwH,EACRxH,EACA,MACF,CACF,EAEN,UAAU,8CACX,8GAGD,EAEAoH,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,qCACV,SAAU8G,EACRxH,EACA,MACF,CACF,EACA,CACE,SAAUwH,EACRxH,EACA,MACF,CACF,EAEN,UAAU,8CACX,qGAGD,EACAoH,EAAA,cAAC9G,EAAA,CACC,MAAO,CAAE,WAAY,aAAc,EACnC,QAAS,IAAM,CACRN,GACH,QAAQ,KACN,+EACA,QACF,CAEJ,GAEAoH,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,0BAED,CACF,CACF,CAEJ,EAEC,CAACS,GAAgBiG,EAAA,cAACnH,EAAA,CAAK,MAAO,CAAE,OAAQ,EAAG,EAAG,EAE/CmH,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,6CAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,sDAEV0G,EAAA,cAACK,GAAA,CACC,SAAU1H,EAAM,SAChB,aAAcA,EAAM,aACpB,aAAcA,EAAM,aACtB,EACCkD,IACCmE,EAAA,cAAC9G,EAAA,CACC,QAAS,SAAY,MAAM0E,EAAgB,EAC3C,MACEhF,GAAiB8E,IAAY,CAAC/D,EAC1B,CACE,GAAGL,EAAO,mCACZ,EACAV,GAAiB8E,IAAY/D,EAC7B,CACE,GAAGL,EAAO,6BACZ,EACAV,GAAiB,CAAC8E,IAAY,CAAC/D,EAC/B,CACE,GAAGL,EAAO,6BACZ,EACAV,GAAiB,CAAC8E,IAAY/D,EAC9B,CACE,GAAGL,EAAO,6BACZ,EACA,CAAC,EAEP,UACEoE,IAAY,CAAC/D,EACT,2CACA,qCAGNqG,EAAA,cAAClH,EAAA,KAAK,SAAO,CACf,EAED,CAAC+C,IACAmE,EAAA,cAACA,EAAM,SAAN,KACErG,GAAgBwB,IAAkB,OAAS,GAC1C6E,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,iCACV,UAAW,MACX,MAAO,MACT,EACA,CAAE,UAAW,MAAO,MAAO,MAAO,EAExC,UAAU,yCAET6B,EACH,EAEF6E,EAAA,cAAC9G,EAAA,CACC,MACEN,EACI,CACE,GAAGU,EAAO,oCACV,aAAc,MAChB,EACA,CAAE,aAAc,MAAO,EAE7B,QAAS,SAAY,CACnB,IAAMuE,EAAW,MAAMqB,GAAe,EAClCrB,GACF,MAAMD,EAAgBC,CAAQ,CAElC,EACA,UAAU,4CAEVmC,EAAA,cAAClH,EAAA,KAAK,oBAAkB,CAC1B,CACF,CAEJ,CACF,CACF,EAGDmB,GACC+F,EAAA,cAACM,GAAA,CACC,SAAU3H,EAAM,SAChB,cACEA,EAAM,SAAW,SACjBA,EAAM,SAAW,gBACjBA,EAAM,SAAW,mBACb,CAAE,KAAM,aAAc,IAAK,GAAI,MAAO,EAAG,EACzC,CACE,KAAM,YACN,IAAK,YACL,MAAO0B,CACT,EAEN,iBAAiB,aACjB,iBACE1B,EAAM,SAAW,SAAWA,EAAM,eAAiB,QAC/C,0GACAA,EAAM,SAAW,SAAWA,EAAM,eAAiB,MACnD,0HACAA,EAAM,SAAW,eACjB,wFAAwFA,EAAM,cAAc,OAAO,GACnHA,EAAM,SAAW,mBACjB,yEAAyEA,GAAO,OAAO,WACvF,0CACEA,EAAM,YAAc,4BACtB,GAEN,WACE,GAAAA,EAAM,SAAW,oBAAsBA,EAAM,iBAI/C,WACEA,EAAM,SAAW,oBAAsBA,EAAM,gBACzC,kBACA,GAEN,WAAY,IAAM,CACZA,EAAM,iBACRA,EAAM,gBAAgB,EAAK,EAEzBA,EAAM,uBACRA,EAAM,sBAAsB,EAAK,EAEnCA,EAAM,iBAAiB,EAAI,CAC7B,EACA,oBAAqB,IAAM,CACrBA,EAAM,iBACRA,EAAM,gBAAgB,EAAK,EAEzBA,EAAM,uBACRA,EAAM,sBAAsB,EAAK,EAEnCA,EAAM,iBAAiB,EAAI,CAC7B,EACA,iBACEA,EAAM,SAAW,mBACb,yEAAyEA,GAAO,OAAO,WACvF,GAER,CAEJ,EAGDa,GAAemB,IAAkB,CAACU,IACjC2E,EAAA,cAACA,EAAM,SAAN,KACE,CAACnF,IACAmF,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,gCACV,QAAS,OACT,SAAU,UACZ,EACA,CAAE,QAAS,OAAQ,SAAU,UAAW,EAE9C,UAAU,uCAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,8BACZ,EACA,CAAC,EAEP,UAAU,sCAEV0G,EAAA,cAACC,GAAA,CACC,SAAUtH,EAAM,SAChB,YAAa,CAAC,EAAG,EAAG,CAAC,EACrB,cAAc,IAChB,EACAqH,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,qCACZ,EACA,CAAC,EAEP,UAAU,8CAEV0G,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,kCACZ,EACA,CAAC,EAEP,UAAU,2CAEV0G,EAAA,cAAClH,EAAA,CAAK,MAAO,CAAE,WAAY,MAAO,GAC/BH,EAAM,cAAc,OACvB,EAAQ,IAAI,0CAEd,CACF,CACF,EAEAqH,EAAA,cAAC9G,EAAA,CACC,MAAO,CAAE,gBAAiB,cAAe,MAAO,MAAO,GAEvD8G,EAAA,cAACjH,EAAA,CACC,MAAO,CAAE,OAAQ,IAAK,MAAO,KAAM,EACnC,OAAQ,CAAE,IAAKoH,EAAY,gBAAiB,EAC9C,CACF,EAEEpF,EA+MAiF,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mDACZ,EACA,CAAC,EAEP,UAAU,+DAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,6CACZ,EACA,CAAC,EAEP,UAAU,wDAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,0CACZ,EACA,CAAC,EAEP,UAAU,qDAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,uDAEV0G,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,2CACZ,EACA,CAAC,EAEP,UAAU,sDACX,+CAED,EACA0G,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,4CACV,SAAU,GACV,MAAO,SACT,EACA,CACE,SAAU,GACV,MAAO,6BACT,EAEN,UAAU,sDACX,wCACuC,IACtC0G,EAAA,cAAClH,EAAA,CAAK,MAAO,CAAE,WAAY,MAAO,GAC/BH,EAAM,cAAc,OACvB,EAAO,mDAET,CACF,EAEAqH,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACV,MAAO,KACT,EACA,CAAE,MAAO,KAAM,EAErB,UAAU,gDAEV0G,EAAA,cAAC9G,EAAA,CACC,QAAS,SACP,MAAMyF,EAAgC,EAAK,EAE7C,MACE/F,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,iDAEV0G,EAAA,cAAClH,EAAA,KAAK,KAAG,CACX,EAEAkH,EAAA,cAAC9G,EAAA,CACC,QAAS,IAAM8B,EAAwB,EAAK,EAC5C,MACEpC,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,iDAEV0G,EAAA,cAAClH,EAAA,KAAK,IAAE,CACV,CACF,CACF,CACF,CACF,EApUAkH,EAAA,cAACA,EAAM,SAAN,KACCA,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,mCACZ,EACA,CAAC,EAEP,UAAU,6CAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDAEV0G,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,oCACZ,EACA,CAAC,EAEP,UAAU,8CACX,2BAED,CACF,CACF,EACA0G,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,qCACV,SAAU,GACV,MAAO,SACT,EACA,CACE,SAAU,GACV,MAAO,6BACT,EAEN,UAAU,8CACX,wHAGD,EAEA0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEV0G,EAAA,cAACjH,EAAA,CAAM,OAAQ,CAAE,IAAKoH,EAAY,MAAO,EAAG,CAC9C,EACAH,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,8BAC6B,IAC5B0G,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDACX,WAED,CACF,CACF,EAEA0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEV0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,kDAEV0G,EAAA,cAACjH,EAAA,CAAM,OAAQ,CAAE,IAAKoH,EAAY,aAAc,EAAG,CACrD,EACAH,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDACX,yBACmB,IAClB0G,EAAA,cAAClH,EAAA,CACC,MACEF,EACI,CACE,GAAGU,EAAO,4CACZ,EACA,CAAC,EAEP,UAAU,wDACX,qBAED,EAAQ,IAAI,6BAEd,CACF,CACF,EAEA0G,EAAA,cAACnH,EAAA,CACC,MACED,EACI,CACE,GAAGU,EAAO,sCACZ,EACA,CAAC,EAEP,UAAU,gDAEV0G,EAAA,cAAC9G,EAAA,CACC,QAAS,IAAM8B,EAAwB,EAAI,EAC3C,MACEpC,EACI,CACE,GAAGU,EAAO,sCACV,OAAQ,oBACR,MAAO,SACT,EACA,CAAE,OAAQ,oBAAqB,MAAO,SAAU,EAEtD,UAAU,+CAEV0G,EAAA,cAAClH,EAAA,KAAK,QAAM,CACd,EAEAkH,EAAA,cAAC9G,EAAA,CACC,QAAS,SACP,MAAMyF,EAAgC,EAAI,EAE5C,MACE/F,EACI,CACE,GAAGU,EAAO,uCACZ,EACA,CAAC,EAEP,UAAU,iDAEV0G,EAAA,cAAClH,EAAA,KAAK,QAAM,CACd,CACF,CACF,CA0HJ,EAED+B,IACCmF,EAAA,cAACM,GAAA,CACC,SAAU3H,EAAM,SAChB,cAAe,CACb,KAAM,QACN,IAAK,YACL,MAAOwB,CACT,EACA,iBAAiB,aACjB,iBACEc,GACI,0CAA0CtC,EAAM,cAAc,OAAO,GACrE,uCAAuCA,EAAM,cAAc,OAAO,GAE1E,CAEJ,EAGDa,GAAe,CAACmB,IAAkBU,IACjC2E,EAAA,cAACrH,EAAM,cAAN,CACC,aAAcA,EAAM,aACpB,SAAU4C,GACZ,EAGD,CAAC/B,GAAewG,EAAA,cAAClH,EAAA,KAAK,yBAAuB,CAChD,CAEJ,EAEOyH,GAAQ7H,GfrnDf,IAAM8H,GAAWC,GAgDX,CACJ,GAAM,CACJ,cAAAC,EACA,KAAAC,EACA,KAAAC,EACA,MAAAC,EACA,WAAAC,EACA,WAAAC,EACA,KAAAC,EACA,aAAAC,CACF,EAAIR,GAAO,SACL,CAACS,EAAaC,CAAc,EAAIC,GACpCX,EAAM,aAAe,EACvB,EACM,CAACY,EAAUC,CAAW,EAAIF,GAC9BX,EAAM,cAAgB,EACxB,EACM,CAACc,EAAcC,CAAe,EAAIJ,GAAgB,CAAC,CAAC,EACpD,CAACK,EAAMC,CAAO,EAAIN,GAAiB,GAAG,EAEtC,CAACO,EAAiBC,CAAkB,EAAIR,GAC5CX,EAAM,gBAAkB,CACtB,KAAM,IACN,KAAMoB,EAAY,QAClB,KAAM,eACR,CACF,EAEM,CAACC,EAAeC,CAAgB,EAAIX,GAAiB,EAAE,EACvD,CAACY,EAAWC,CAAY,EAAIb,GAAiB,EAAE,EAC/C,CAACc,EAAgBC,CAAiB,EAAIf,GAAkB,EAAK,EAC7D,CAACgB,EAAgBC,CAAiB,EAAIjB,GAAiB,EAAE,EACzD,CAACkB,EAAoBC,CAAqB,EAAInB,GAAiB,EAAE,EACjE,CAACoB,EAAkBC,CAAmB,EAAIrB,GAAiB,EAAE,EAC7D,CAACsB,GAAkBC,EAAmB,EAAIvB,GAAiB,EAAE,EAC7D,CAACwB,GAAgBC,CAAiB,EAAIzB,GAAc,IAAI,EACxD,CAAC0B,EAAoBC,CAAqB,EAAI3B,GAAc,IAAI,EAChE,CAAC4B,GAAgBC,CAAiB,EAAI7B,GAAkB,EAAK,EAE7D,CACJ,WAAA8B,GACA,WAAAC,EACA,MAAAC,GACA,YAAAC,GACA,UAAAC,GACA,iBAAAC,EACA,aAAAC,GACA,UAAAC,GACA,QAAAC,GACA,cAAAC,EACF,EAAIC,GAAc,EAElB,OAAAC,GAAU,IAAM,CACd,IAAMC,GAAqB,SAAY,CACrC,GAAKpD,EAIMM,GAET,MAAM+C,GAAqB/C,CAAI,EAC/BG,EAAe,EAAI,MAPD,CAElB,IAAM6C,GAAgBC,GAAmB,QAAQ,EACjD9C,EAAe6C,EAAa,CAC9B,CAOF,EACKvD,EAAM,aACTqD,GAAmB,CAEvB,EAAG,CAAC,CAAC,EAELD,GAAU,IAAM,CACd,IAAMK,GAAkC,SAAY,CAClD,IAAIC,GAEA,CAACzD,GAAiB,QAAQ,SAAS,MACrCyD,GAAS,MAAM,IAAI,QAASC,IAAY,CACtC,OAAO,QAAQ,MAAM,IAAI,CAAC,QAAQ,EAAIC,IAAW,CAC/CD,GAAQC,GAAO,MAAM,CACvB,CAAC,CACH,CAAC,EACQ,CAAC3D,GAAiB,aAC3ByD,GAAS,aAAa,QAAQ,QAAQ,EAC7BzD,GAAiBO,IAC1BkD,GAASlD,EAAa,QAAQ,QAAQ,GAGxC,IAAMqD,EAA2B,MAAMC,GACrC9D,EAAM,QACN0D,IAAUA,IAAQ,OAAS,EAAIA,GAAS,MAC1C,EACAjB,GAAWoB,EAAyB,OAAO,EAC3CnB,EAAWmB,EAAyB,OAAO,EAC3ClB,GAAMkB,EAAyB,EAAE,EACjCjB,GAAYiB,EAAyB,QAAQ,EAC7ChB,GAAUgB,EAAyB,MAAM,EACzCd,GAAac,EAAyB,SAAS,EAC3CA,EAAyB,eAAe,gBAC1Cf,EAAiBe,EAAyB,aAAa,EAEvDf,EAAiB,MAAS,CAE9B,EACKI,IAAe,iBAClBO,GAAgC,CAEpC,EAAG,CAACP,EAAa,CAAC,EAElBE,GAAU,IAAM,CACYW,GAAS,IAAM,CACvClD,EAAY,EAAK,CACnB,EAAGb,EAAM,iBAAmB,GAAI,EACd,CACpB,EAAG,CAAC,CAAC,EAELoD,GAAU,IAAM,EACmB,IAAM,CACrC,IAAMY,GAAoBC,GACvB,IAAKC,GAAa,CACjB,GAAKA,EACL,MAAO,CACL,KAAMA,EAAI,KACV,YAAaA,EAAI,KACjB,aAAcA,EAAI,KAClB,eAAgBA,EAAI,SACpB,aAAcA,EAAI,SAClB,uBAAwBA,EAAI,SAC5B,YAAaA,EAAI,KACjB,KAAMA,EAAI,KACV,UAAWA,EAAI,UACf,WAAYA,EAAI,WAChB,KAAMA,EAAI,IACZ,CACF,CAAC,EACA,OAAO,OAAO,EACjBnD,EAAgBiD,EAAY,CAC9B,GACyB,CAC3B,EAAG,CAAC,CAAC,EAGHG,GAAA,cAAC9D,EAAA,CAAW,MAAO,CAAE,QAAS,GAAI,MAAO,OAAQ,OAAQ,MAAO,GAC7DI,GAAeG,GAAYZ,EAAM,iBAChCmE,GAAA,cAACjE,EAAA,KAAMF,EAAM,eAAgB,EAE9BS,GAAe,CAACG,GACfuD,GAAA,cAACjE,EAAA,CAAK,MAAO,CAAE,MAAO,OAAQ,OAAQ,MAAO,GAE1Cc,IAAS,KACRmD,GAAA,cAACC,GAAA,CACC,SAAUpE,EAAM,SAChB,YAAaS,EACb,QAASQ,EACT,aAAcjB,EAAM,aACpB,iBAAkBsB,EAClB,cAAeD,EACf,aAAcG,EACd,UAAWD,EACX,mBAAoBJ,EACpB,gBAAiBD,EACjB,aAAcJ,EACd,gBAAiBd,EAAM,gBACvB,YAAaA,EAAM,YACrB,EAEDgB,IAAS,KACRmD,GAAA,cAACE,GAAA,CACC,SAAUrE,EAAM,SAChB,YAAaS,EACb,QAASQ,EACT,aAAcjB,EAAM,aACpB,cAAeqB,EACf,iBAAkBC,EAClB,aAAcE,EACd,UAAWD,EACX,gBAAiBL,EACjB,gBAAiBlB,EAAM,gBACvB,kBAAmBwC,EACrB,EAGDxB,IAAS,KACRmD,GAAA,cAACG,GAAA,CACC,SAAUtE,EAAM,SAChB,YAAaS,EACb,QAASQ,EACT,aAAcjB,EAAM,aACpB,kBAAmB0B,EACnB,kBAAmBE,EACnB,sBAAuBE,EACvB,kBAAmBM,EACnB,sBAAuBE,EACvB,cAAejB,EACf,UAAWE,EACX,gBAAiBL,EACjB,OAAQlB,EAAM,OACd,UAAWA,EAAM,UACjB,OAAQA,EAAM,OACd,oBAAqBgC,EACrB,oBAAqBE,GACrB,gBAAiBlC,EAAM,gBACvB,eAAgBuC,GAChB,UAAWvC,EAAM,UACjB,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,oBAAqBA,GAAO,oBAC5B,iBAAkBA,GAAO,iBAC3B,EAGDgB,IAAS,KACRmD,GAAA,cAACI,GAAA,CACC,SAAUvE,EAAM,SAChB,QAASiB,EACT,UAAU,IACV,iBAAiB,aACjB,iBAAiB,gEACjB,OAAQjB,EAAM,OACd,WAAYyB,EACZ,WAAYE,EACZ,eAAgBE,EAChB,WAAYM,GACZ,eAAgBE,EAChB,iBAAkBN,EAClB,iBAAkBE,GACpB,EAGDjB,IAAS,KACRmD,GAAA,cAACK,GAAA,CACC,SAAUxE,EAAM,SAChB,YAAaS,EACb,QAASQ,EACT,aAAcjB,EAAM,aACpB,cAAeqB,EACf,UAAWE,EACX,gBAAiBL,EACjB,aAAcJ,EACd,gBAAiBd,EAAM,gBACvB,YAAaA,EAAM,YACnB,gBAAiBA,EAAM,gBACvB,iBAAkBA,EAAM,iBACxB,gBAAiBA,EAAM,gBACvB,sBAAuBA,EAAM,sBAC/B,EAGDgB,IAAS,KAAOhB,EAAM,SAAW,IAChCmE,GAAA,cAACI,GAAA,CACC,SAAUvE,EAAM,SAChB,OAAQA,EAAM,OACd,QAASiB,EACT,UAAU,IACV,iBAAiB,aACjB,iBAAiB,aACjB,iBAAiB,2EACjB,iBAAiB,2EACjB,WAAY,EAAAjB,EAAM,gBAClB,WAAYA,EAAM,gBAAkB,kBAAoB,GACxD,oBAAqB,IAAM,CACrBA,EAAM,iBACRA,EAAM,gBAAgB,EAAK,EAEzBA,EAAM,uBACRA,EAAM,sBAAsB,EAAK,EAEnCA,EAAM,iBAAiB,EAAI,CAC7B,EACA,WAAY,IAAM,CACZA,EAAM,iBACRA,EAAM,gBAAgB,EAAK,EAEzBA,EAAM,uBACRA,EAAM,sBAAsB,EAAK,EAEnCA,EAAM,iBAAiB,EAAI,CAC7B,EACF,EAGDgB,IAAS,KAAOhB,EAAM,SAAW,IAChCmE,GAAA,cAACI,GAAA,CACC,SAAUvE,EAAM,SAChB,OAAQA,EAAM,OACd,cACEA,EAAM,SAAW,eACb,CACE,KAAM,eACN,MAAO,CACL,UAAWA,EAAM,UACjB,OAAQ,CAAE,QAAS,GAAM,GAAGA,EAAM,MAAO,EACzC,QAASiD,EACX,CACF,EACA,CAAE,KAAM,aAAc,IAAK,GAAI,MAAO,EAAG,EAE/C,iBAAiB,aACjB,iBAAiB,aACjB,iBAAiB,2EACjB,iBAAiB,2EACjB,WAAY,EAAAjD,EAAM,gBAClB,WAAYA,EAAM,gBAAkB,kBAAoB,GACxD,oBAAqB,IAAM,CACrBA,EAAM,iBACRA,EAAM,gBAAgB,EAAK,EAEzBA,EAAM,uBACRA,EAAM,sBAAsB,EAAK,EAEnCA,EAAM,iBAAiB,EAAI,CAC7B,EACA,WAAY,IAAM,CACZA,EAAM,iBACRA,EAAM,gBAAgB,EAAK,EAEzBA,EAAM,uBACRA,EAAM,sBAAsB,EAAK,EAEnCA,EAAM,iBAAiB,EAAI,CAC7B,EACF,EAGDgB,IAAS,KAAOhB,EAAM,iBACrBmE,GAAA,cAACnE,EAAM,gBAAN,CAAsB,aAAcA,EAAM,aAAc,EAG1DgB,IAAS,KAAO,CAAChB,EAAM,iBACtBmE,GAAA,cAACA,GAAM,SAAN,IAAe,EAGjBnD,IAAS,KACRmD,GAAA,cAACM,GAAA,CACC,SAAUzE,EAAM,SAChB,YAAaS,EACb,QAASuC,IAAW,QACpB,aAAchD,EAAM,aACpB,cAAegD,IAAW,cAC1B,WAAYA,IAAW,GACvB,aAAcA,IAAW,QACzB,aAAcA,IAAW,QACzB,WAAY0B,GAAY,MACxB,aAAc1E,EAAM,aACpB,WAAY,OAAOiD,IAAWjD,EAAM,OAAO,EAC3C,OAAQ,QACR,aAAcgD,GACd,UACEhD,EAAM,OACF,OAAO,KAAKA,EAAM,MAAM,GAAG,IAAK2E,KAC9B3E,EAAM,OAAO2E,EAAE,EAAI,mBAAmB3E,EAAM,OAAO2E,EAAE,CAAC,EAC/C3E,EAAM,OACd,EAAE,OAAO,KAAKA,EAAM,MAAM,GAAG,OAAS,CAAC,EACxC,KAEN,gBAAiBA,EAAM,gBACvB,aAAcwB,EACd,iBAAkBF,EAClB,mBAAoBH,EACpB,YAAanB,EAAM,YACnB,iBAAkBA,EAAM,iBACxB,UAAWA,EAAM,UACjB,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,oBAAqBA,GAAO,oBAC5B,iBAAkBA,GAAO,iBAC3B,CAEJ,EAED,CAACS,GACA0D,GAAA,cAACjE,EAAA,CAAK,MAAO,CAAE,QAAS,GAAI,MAAO,OAAQ,OAAQ,MAAO,GACxDiE,GAAA,cAAChE,EAAA,KAAK,yBAAuB,CAC/B,CAEJ,CAEJ,EAEOyE,GAAQ7E,GF1af,IAAM8E,GAAmBC,GAAgC,CACvD,GAAM,CAACC,EAAOC,CAAQ,EAAIC,GAAkB,EAAK,EAC3C,CAACC,EAAoBC,CAAqB,EAAIF,GAAc,CAAC,CAAC,EAC9D,CAACG,EAAaC,CAAc,EAAIJ,GAAkB,EAAK,EACvD,CAACK,EAAWC,CAAY,EAAIN,GAAyB,IAAI,EACzD,CAACO,EAAWC,CAAY,EAAIR,GAA8B,CAAC,CAAC,EAC5D,CAACS,EAAYC,CAAa,EAAIV,GAAc,CAAC,CAAC,EAC9C,CAACW,EAAWC,CAAY,EAAIZ,GAAkB,EAAK,EACnD,CAACa,EAAeC,CAAe,EAAId,GAAkB,EAAK,EAC1D,CAACe,EAAmBC,CAAoB,EAAIhB,GAAkB,EAAK,EACnE,CAACiB,EAAcC,CAAe,EAAIlB,GAAkB,EAAK,EACzD,CAACmB,EAAoBC,CAAqB,EAAIpB,GAAkB,EAAK,EACrE,CAACqB,EAAQC,CAAS,EAAItB,GAAiB,EAAE,EACzC,CAACuB,EAAcC,CAAe,EAAIxB,GAAS,CAAC,CAAC,EAC7C,CAACyB,EAAMC,CAAO,EAAI1B,GAAiB,EAAE,EACrC,CAAC2B,EAAiBC,CAAkB,EAAI5B,GAC5CH,EAAM,gBAAkB,CACtB,KAAM,IACN,KAAMgC,EAAY,QAClB,KAAM,eACR,CACF,EACM,CAACC,GAAeC,EAAgB,EAAI/B,GAAiB,EAAE,EACvD,CAACgC,GAAWC,CAAY,EAAIjC,GAAiB,EAAE,EAErDkC,GAAU,IAAM,EACK,SAAY,CAC7B,MAAMC,GAAa,EACnB,IAAMC,GAAaC,GAAsB,EACrCD,KACFlC,EAAsBkC,EAAU,EAChCrC,EAAS,EAAI,EAEjB,GACW,CACb,EAAG,CAAC,CAAC,EAEL,GAAM,CACJ,cAAAuC,EACA,KAAAC,EACA,KAAAC,GACA,KAAAC,EACA,aAAAC,GACA,kBAAAC,EACA,OAAAC,EACF,EAAI3C,EAEJ,OAAAiC,GAAU,IAAM,CAcV,CAAC/B,GAAeL,IAbO,SAAY,CACrC,GAAKwC,EAIMG,GAET,MAAMI,GAAqBJ,CAAI,EAC/BrC,EAAe,EAAI,MAPD,CAElB,IAAM0C,GAAgBC,GAAmB,QAAQ,EACjD3C,EAAe0C,EAAa,CAC9B,CAOF,GAEqB,CAEvB,EAAG,CAAChD,EAAOK,CAAW,CAAC,EAEvB+B,GAAU,IAAM,CA0CVpC,IAzC8B,SAAY,CAC5C,GAAKwC,GAoBE,GAAII,GACT,GAAI,CAEF,IAAMM,GAAc,MAAMN,GAAa,QAAQ,SAAS,EACxD,GAAIM,GAAa,CACf,IAAMC,EAAU,KAAK,MAAMD,EAAW,EACtC,GAAIC,GAAS,QAAS,CACpBzC,EAAayC,CAAO,EACpB3C,EAAa,EAAI,EACjB,MACF,CACF,CACAA,EAAa,EAAK,CACpB,OAAS4C,GAAK,CACZ,QAAQ,MAAM,qCAAsCA,EAAG,EACvD5C,EAAa,EAAK,CACpB,UAlCI,QAAQ,SAAS,MACnB,OAAO,QAAQ,MAAM,IAAI,UAAY6C,IAAQ,CACvCA,GAAI,SAAW,KAAK,MAAMA,GAAI,OAAO,GAAG,SAC1C3C,EAAa,KAAK,MAAM2C,GAAI,OAAO,CAAC,EACpC7C,EAAa,EAAI,GAEjBA,EAAa,EAAK,CAEtB,CAAC,UACQ,aAAc,CACvB,IAAM2C,GAAU,KAAK,MAAM,aAAa,QAAQ,SAAS,CAAC,EACtDA,IAAWA,IAAS,SACtBzC,EAAayC,EAAO,EACpB3C,EAAa,EAAI,GACZA,EAAa,EAAK,CAC3B,MACEA,EAAa,EAAK,CAoBxB,GAG4B,CAE9B,EAAG,CAACR,CAAK,CAAC,EAEVoC,GAAU,IAAM,EACmB,IAAM,CACrC,IAAMkB,GAAeC,GAClB,IAAKC,GACAA,EACK,CACL,KAAMA,GAAK,KACX,YAAaA,GAAK,KAClB,aAAcA,GAAK,KACnB,eAAgBA,GAAK,SACrB,aAAcA,GAAK,SACnB,uBAAwBA,GAAK,SAC7B,YAAaA,GAAK,KAClB,KAAMA,GAAK,KACX,UAAWA,GAAK,UAChB,WAAYA,GAAK,WACjB,KAAMA,GAAK,IACb,EAEK,IACR,EACA,OAAQA,GAA6BA,GAAQ,IAAI,EACpD9B,EAAgB4B,EAAY,CAC9B,GACyB,CAC3B,EAAG,CAAC,CAAC,EAGHG,EAAA,cAACA,EAAM,SAAN,KACEzD,GACCyD,EAAA,cAACA,EAAM,SAAN,KACEpD,GACCoD,EAAA,cAACC,GAAA,KACE7C,GACC4C,EAAA,cAAChB,EAAA,CACC,MACED,EACI,CACE,GAAGM,GAAO,8BACV,OAAQ,OACV,EACA,CAAE,OAAQ,OAAQ,EAExB,UAAU,qCAEVW,EAAA,cAACZ,EAAA,CAAkB,KAAK,QAAQ,MAAM,OAAO,CAC/C,EAEFY,EAAA,cAAChB,EAAA,CACC,GAAG,0BACH,UAAU,+BACV,MACED,EAAgB,CAAE,GAAGM,GAAO,yBAA0B,EAAI,CAAC,GAG5DvC,IAAc,MAAQR,EAAM,kBAC3B0D,EAAA,cAACA,EAAM,SAAN,KAAgB1D,EAAM,gBAAiB,EAGzCQ,IAAc,MAAQ,CAACR,EAAM,kBAC5B0D,EAAA,cAAChB,EAAA,CACC,MACE1C,EAAM,eACFA,EAAM,eACN,CACE,MAAO,OACP,OAAQ,OACR,WAAY,cACZ,OAAQ,MACV,GAGL,GACH,EAGDQ,IAAc,MACbkD,EAAA,cAACA,EAAM,SAAN,KACE,CAAClD,GAAa,CAACQ,GACd0C,EAAA,cAACE,GAAA,CACC,SAAUxD,EACV,YAAaE,EACb,gBAAiBN,EAAM,gBACvB,UAAWA,EAAM,UACjB,OAAQA,EAAM,OAASA,EAAM,OAAS,QACtC,UACEA,EAAM,aACF,CACE,QAAS,mBACPA,EAAM,cAAc,KAClBA,EAAM,cAAc,OACxB,EACA,cAAe6D,EACb,mBACE7D,EAAM,cAAc,KAClBA,EAAM,cAAc,OACxB,CACF,EACA,eAAgB,mBACdA,EAAM,cAAc,KAClBA,EAAM,cAAc,cACxB,EACA,WAAY,mBACVA,EAAM,cAAc,GACtB,CACF,EACA,KAEN,OACEA,EAAM,OACF,OAAO,KAAKA,EAAM,MAAM,GAAG,IAAK8D,KAC9B9D,EAAM,OAAO8D,EAAE,EAAI,mBACjB9D,EAAM,OAAO8D,EAAE,CACjB,EACO9D,EAAM,OACd,EAAE,OAAO,KAAKA,EAAM,MAAM,GAAG,OAAS,CAAC,EACxC,KAEN,aAAcA,EAAM,aACpB,gBAAiBA,EAAM,gBACvB,gBAAiBA,EAAM,gBACvB,eAAgBA,EAAM,eACtB,aAAcS,EACd,aAAcM,EACd,gBAAiBf,EAAM,gBACvB,QAAS,OAAOA,EAAM,OAAO,EAC7B,YAAaA,EAAM,YACnB,iBAAkBiB,EAClB,gBAAiBI,EACjB,sBAAuBE,EACvB,UAAWvB,EAAM,UACjB,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,oBAAqBA,GAAO,oBAC5B,iBAAkBA,GAAO,iBAC3B,EAGDQ,GAAa,CAACQ,GAAiB,CAACE,GAC/BwC,EAAA,cAACK,GAAA,CACC,SAAU3D,EACV,YAAaE,EACb,aAAcG,EACd,QAASC,GAAW,QACpB,cAAeA,GAAW,cAC1B,WAAYA,GAAW,GACvB,aAAcA,GAAW,QACzB,aAAcA,GAAW,QACzB,WAAYA,GAAW,WACvB,OAAQV,EAAM,OACd,MAAOA,EAAM,MACb,WACEA,EAAM,YAAcgE,GAAYhE,EAAM,MAAM,EAE9C,aAAce,EACd,WAAY,OAAOf,EAAM,OAAO,EAChC,OAAQA,EAAM,QAAU,GACxB,aACEA,EAAM,aACF,CACE,QAAS,mBACPA,EAAM,cAAc,KAClBA,EAAM,cAAc,OACxB,EACA,cAAe6D,EACb,mBACE7D,EAAM,cAAc,KAClBA,EAAM,cAAc,OACxB,CACF,EACA,eAAgB,mBACdA,EAAM,cAAc,KAClBA,EAAM,cAAc,cACxB,EACA,WAAY,mBACVA,EAAM,cAAc,GACtB,CACF,EACA,KAEN,UACEA,EAAM,OACF,OAAO,KAAKA,EAAM,MAAM,GAAG,IAAK8D,KAC9B9D,EAAM,OAAO8D,EAAE,EAAI,mBACjB9D,EAAM,OAAO8D,EAAE,CACjB,EACO9D,EAAM,OACd,EAAE,OAAO,KAAKA,EAAM,MAAM,GAAG,OAAS,CAAC,EACxC,KAEN,SAAUA,EAAM,UAAY,KAC5B,cAAeA,EAAM,cACrB,gBAAiBA,EAAM,gBACvB,iBAAkBiB,EAClB,gBAAiBI,EACjB,sBAAuBE,EACvB,qBAAsBJ,EACtB,aAAciB,EACd,iBAAkBF,GAClB,mBAAoBH,EACpB,YAAa/B,EAAM,YACnB,gBAAiBA,EAAM,gBACvB,UAAWA,EAAM,UACjB,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,oBAAqBA,GAAO,oBAC5B,iBAAkBA,GAAO,iBAC3B,EAGDQ,GAAaQ,GAAiBE,GAC7BwC,EAAA,cAACK,GAAA,CACC,SAAU3D,EACV,YAAaE,EACb,aAAcG,EACd,QAASC,GAAW,QACpB,cAAeA,GAAW,cAC1B,WAAYA,GAAW,GACvB,aAAcA,GAAW,QACzB,WAAYA,GAAW,WACvB,aAAcA,GAAW,QACzB,OAAQV,EAAM,OACd,MAAOA,EAAM,MACb,WACEA,EAAM,YAAcgE,GAAYhE,EAAM,MAAM,EAE9C,aAAce,EACd,WAAY,OAAOf,EAAM,OAAO,EAChC,OAAQA,EAAM,QAAU,GACxB,aACEA,EAAM,aACF,CACE,QAAS,mBACPA,EAAM,cAAc,KAClBA,EAAM,cAAc,OACxB,EACA,cAAe6D,EACb,mBACE7D,EAAM,cAAc,KAClBA,EAAM,cAAc,OACxB,CACF,EACA,eAAgB,mBACdA,EAAM,cAAc,KAClBA,EAAM,cAAc,cACxB,EACA,WAAY,mBACVA,EAAM,cAAc,GACtB,CACF,EACA,KAEN,UACEA,EAAM,OACF,OAAO,KAAKA,EAAM,MAAM,GAAG,IAAK8D,KAC9B9D,EAAM,OAAO8D,EAAE,EAAI,mBACjB9D,EAAM,OAAO8D,EAAE,CACjB,EACO9D,EAAM,OACd,EAAE,OAAO,KAAKA,EAAM,MAAM,GAAG,OAAS,CAAC,EACxC,KAEN,SAAUA,EAAM,UAAY,KAC5B,cAAeA,EAAM,cACrB,gBAAiBA,EAAM,gBACvB,iBAAkBiB,EAClB,gBAAiBI,EACjB,sBAAuBE,EACvB,qBAAsBJ,EACtB,aAAciB,EACd,iBAAkBF,GAClB,mBAAoBH,EACpB,YAAa/B,EAAM,YACnB,gBAAiBA,EAAM,gBACvB,UAAWA,EAAM,UACjB,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,oBAAqBA,GAAO,oBAC5B,iBAAkBA,GAAO,iBAC3B,EAGDQ,GACC,CAACQ,GACDE,GACAU,IAAS,IACP8B,EAAA,cAAChB,EAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,QAAS,MACX,GAEAgB,EAAA,cAACO,GAAA,CACC,SAAU7D,EACV,YAAaE,EACb,QAASuB,EACT,aAAcd,EACd,cAAekB,GACf,UAAWE,GACX,gBAAiBL,EACjB,aAAcJ,EACd,gBAAiB1B,EAAM,gBACvB,YAAaA,EAAM,YACnB,gBAAiBA,EAAM,gBACvB,iBAAkBiB,EAClB,gBAAiBI,EACjB,sBAAuBE,EACzB,CACF,EAGHf,GACC,CAACQ,GACDE,GACAU,IAAS,KACP8B,EAAA,cAACQ,GAAA,CACC,SAAU9D,EACV,OAAQJ,EAAM,OACd,QAAS6B,EACT,UAAU,IACV,iBAAiB,aACjB,iBAAiB,aACjB,iBAAiB,2EACjB,iBAAiB,2EACjB,WAAY,EAAA7B,EAAM,gBAClB,WACEA,EAAM,gBAAkB,kBAAoB,GAE9C,oBAAqB,IAAM,CACzBqB,EAAgB,EAAK,EACrBE,EAAsB,EAAK,EAC3BN,EAAgB,EAAI,CACtB,EACA,WAAY,IAAM,CAChBI,EAAgB,EAAK,EACrBE,EAAsB,EAAK,EAC3BN,EAAgB,EAAI,CACtB,EACF,EAGHT,GACC,CAACQ,GACDE,GACAU,IAAS,KACT5B,EAAM,iBACJ0D,EAAA,cAAC1D,EAAM,gBAAN,CAAsB,aAAce,EAAc,EAGtDP,GACC,CAACQ,GACDE,GACAU,IAAS,KACT,CAAC5B,EAAM,iBACL0D,EAAA,cAACA,EAAM,SAAN,IAAe,EAGnB,CAACxC,GACAF,GACA,CAACI,GACD,CAACE,GACDtB,EAAM,iBACJ0D,EAAA,cAAC1D,EAAM,gBAAN,CACC,aAAce,EACd,gBAAiBM,EACjB,sBAAuBE,EACvB,UAAWE,EACX,iBAAkBS,GAClB,aAAcE,EACd,mBAAoBL,EACpB,aAAclB,EACd,sBAAuBsD,GACvB,cAAeC,GACjB,EAGH5D,GACC,CAACU,GACDF,GACA,CAACI,GACD,CAACE,GACD,CAACtB,EAAM,iBACL0D,EAAA,cAACA,EAAM,SAAN,IAAe,EAGnBlD,GACC,CAACU,GACD,CAACI,GACDN,GACAI,GACEsC,EAAA,cAAChB,EAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,QAAS,MACX,GAEAgB,EAAA,cAACW,GAAA,CACC,SAAUjE,EACV,YAAaE,EACb,OAAO,YACP,QAASuB,EACT,aAAcd,EACd,cAAekB,GACf,UAAWE,GACX,UAAWvB,EACX,gBAAiBkB,EACjB,gBAAiB9B,EAAM,gBACvB,eAAgB,GAChB,UAAWA,EAAM,UACjB,kBAAmBA,EAAM,kBACzB,mBAAoBA,EAAM,mBAC1B,oBAAqBA,GAAO,oBAC5B,iBAAkBA,GAAO,iBAC3B,CACF,EAGHQ,GACC,CAACU,GACDF,GACA,CAACI,GACDE,GACEoC,EAAA,cAAChB,EAAA,CACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,QAAS,MACX,GAEAgB,EAAA,cAACO,GAAA,CACC,SAAU7D,EACV,YAAaE,EACb,OAAQ,kBACR,QAASuB,EACT,aAAcd,EACd,cAAekB,GACf,UAAWE,GACX,gBAAiBL,EACjB,aAAcJ,EACd,gBAAiB1B,EAAM,gBACvB,YAAaA,EAAM,YACnB,gBAAiBA,EAAM,gBACvB,iBAAkBiB,EAClB,gBAAiBI,EACjB,sBAAuBE,EACzB,CACF,CAEN,CAEJ,CACF,EAGD,CAACjB,GAAeoD,EAAA,cAACf,GAAA,KAAK,yBAAuB,CAChD,EAED,CAAC1C,GACA,OAAO,UAAc,KACrB,UAAU,UAAY,eACpByD,EAAA,cAACA,EAAM,SAAN,KAAe,qBAAmB,CAEzC,CAEJ,EAEOY,GAAQvE","names":["injectStyle","css","head","style","err","React","forwardRef","defaultVerifiedUrl","createPasskeyEndpoint","getPasskeyEndpoint","verifiedWebsiteUrls","allGoogleFontUrls","newTransactionEventHash","numberPositions","numberPositionsFmt","actionTexts","imageAssets","countriesDetails","globalStyles","isReactNative","isInitialized","View","Text","Image","ScrollView","StyleSheet","TextInput","TouchableOpacity","ActivityIndicator","Font","AsyncStorage","EventEmitter","styles","rnPasskey","initPlatform","RN","events","reactStorage","filterPropsRN","className","id","rest","wrapRNTags","Component","props","React","globalStyles","motion","onPress","source","forwardRef","onChangeText","onInput","onKeyDown","onKeyPress","value","keyboardType","secureTextEntry","onSubmitEditing","blurOnSubmit","placeholderTextColor","ref","e","style","color","size","imageAssets","getPlatformComponents","React","useEffect","useState","React","createContext","useContext","useState","VaultStoreContext","VaultContextProvider","children","chainId","setChainId","pk","setPk","address","setAddress","signer","setSigner","provider","setProvider","vaultContract","setVaultContract","vaultData","setVaultData","useVaultStore","context","React","useEffect","useState","debounce","contractAddress","Custody","Provider","VerifiedWallet","ChainConfig","imageAssets","pbkdf2","sha256","randomBytes","utf8ToBytes","bytesToUtf8","gcm","crypt","toast","React","base","baseSepolia","gnosis","mainnet","polygon","sepolia","http","createPublicClient","encodeAbiParameters","encodeFunctionData","pad","toHex","zeroAddress","zeroHash","boostrap_default","factory_default","NEXUS_ACCOUNT_FACTORY_ADDRESS","NEXUS_BOOTSTRAP_ADDRESS","DUMMY_SIGNATURE","index","toInitData","mod","module","data","getInitData","params","encodeAbiParameters","encodeFunctionData","boostrap_default","toValidator","parameters","deInitData","type","signer","rest","userOpHash","message","toDefaultModule","zeroAddress","toEmptyHook","zeroHash","computeNexusAccount","chain","transport","publicClient","createPublicClient","defaultValidator","validators","executors","hook","fallbacks","registryAddress","factoryAddress","bootStrapAddress","prevalidationHooks","initData","salt","pad","toHex","nexusAccount","factory_default","loadAllGoogleFonts","document","apiLink","staticLink","allGoogleFontUrls","fontUrl","fontLink","loadAllGoogleFontsRN","expoFont","initWalletAndContract","chainId","privateKey","sender","VerifiedWallet","mnemonics","cntAddresses","contractAddress","_chainId","ChainConfig","provider","signer","Provider","pk","vaultContract","Custody","_signer","chainToUse","base","mainnet","gnosis","polygon","sepolia","baseSepolia","nt","address","computeNexusAccount","http","err","hashTheString","text","lower","hash","sha256","utf8ToBytes","b","hashTheBuffer","buffer","bytes","encryptString","secretKey","crypt","decryptString","encryptedText","decryptedBytes","decryptedText","getErrorToastContent","title","content","React","imageAssets","errorToast","title","content","toast","getErrorToastContent","resolveGlobalStyleUnit","isReactNative","unitValueString","baseRem","value","hexToBytes","hex","cleanHex","byteLength","bytes","i","byteHex","publicKeyCredentialCreationOptions","projectName","vaultId","hashedVaultId","userId","randomBytes","base64ToArrayBuffer","base64","binary","buffer","publicKeyCredentialRequestOptions","Uint8ArraytoBase64","buf","Base64URLtoUint8Array","base64url","char","encryptWithPasskey","plaintext","rawId","rawIdString","rawIdBytes","randomBytes8","randomHex","b","saltString","hashTheString","salt","utf8ToBytes","iv","key","pbkdf2","sha256","ciphertext","gcm","decryptWithPasskey","encryptedString","saltB64","ivB64","ciphertextB64","cipher","plaintextBytes","bytesToUtf8","React","useEffect","useState","React","PageSlider","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","current","total","widthPercent","_","idx","isActive","slider_default","React","useState","SearchBox","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","newSearchContent","setNewSearchContent","useState","handleSearch","value","filtered","src","name","input","handleSelect","idx","renderTextHighlight","array","search","char","isHighlighted","React","renderResults","data","isFiltered","isActive","isSelected","contentContainerClass","imageAssets","search_default","React","TermsAndConditionsOverlay","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","React","LogoutOverlay","handleLogout","resolveGlobalStyleUnit","ContactPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","fontsLoaded","setFontsLoaded","useState","userNumber","setUserNumber","userInput","setUserInput","searchActive","setSearchActive","sendOtpErrorText","setSendOtpErrorText","buttonActive","setButtonActive","pk","vaultContract","address","useVaultStore","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleButtonDisplay","handleSendOTP","vaultId","channel","res","errorToast","React","slider_default","imageAssets","text","numericInput","formattedNumber","i","search_default","TermsAndConditionsOverlay","contact_default","React","useEffect","useRef","useState","AbiCoder","encodeBytes32String","combine","split","contractAddress","Custody","Provider","VerifiedWallet","base","baseSepolia","gnosis","mainnet","polygon","sepolia","http","checkIsExistingUser","vaultContract","hashedVaultId","res","err","checkOrResetOrCreateVault","isReactNative","AsyncStorage","EventEmitter","vaultId","vaultPin","hashedVaultPin","otpChannel","userPk","userAddress","action","reqVaultData","txData","passKeyRawId","keyHolders","quorum","vaultData","encryptedPk","encryptWithPasskey","secretKey","encodeBytes32String","encryptString","lastPk","resolve","result","keyShardsCount","sharesArrayAsString","split","letter","share","failedKeyHolders","succesfulKeyHolders","idx","participant","encryptedShard","keyHolder","errorToast","userRegAddress","VerifiedWallet","cfrmRes","windowObj","event","vaultEventEmitter","eventType","eventDetail","vultRes","validateVaultPin","chainId","includePk","newChainId","decryptWithPasskey","decryptString","cntAddresses","contractAddress","sender","_chainId","ChainConfig","provider","signer","Provider","Custody","quorumSet","acceptOrRejectInvitation","sendCreatorAcceptance","sendCreatorRejection","channel","hashedCosignerId","hashedCosignerPin","hashedCreatorVaultId","hashedCreatorVaultPin","creatorVaultId","coSignerVaultId","accepted","contract","completeVaultCreation","sendCoSignerInvitation","sendCreatorConfirmation","coSigners","KeyThreshold","pk","hashTheString","cosignersList","cng","numberPositions","removeCosignerPromise","initiateVaultRecovery","sendCreatorInitiation","vaultChannel","abiCoder","AbiCoder","txId","vaultLogsLength","vaultLogs","log","tp","newTransactionEventHash","decodedTxData","val","signVaultRecovery","sendCreatorSigned","sendCreatorCompleted","reqVaultId","hashedReqId","hashedReqPin","reqTxId","qRes","restoreVaultLogin","recoveredShrads","shrd","shares","combinedShares","combine","newEncryptedPk","newSender","_newsigner","chainToUse","base","mainnet","gnosis","polygon","sepolia","baseSepolia","nt","nexAddress","computeNexusAccount","http","OTPPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","fontsLoaded","setFontsLoaded","useState","inputsRef","useRef","searchActive","setSearchActive","countdown","setCountdown","otp","setOtp","otpIncorrect","setOtpIncorrect","otherErrorText","setOtherErrorText","pk","vaultContract","address","useVaultStore","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","timer","c","handleTextChange","text","idx","paste","newOtp","pasteIndex","i","nextIndex","clean","handleKeyPress","_","e","isFilled","d","getVaultId","handleVerifyOtp","vaultId","fullOtp","hashed","hashTheString","exists","checkIsExistingUser","err","handleResend","channel","res","errorToast","React","slider_default","imageAssets","el","otp_default","React","useEffect","useRef","useState","React","useEffect","Success","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","EventEmitter","useEffect","timeoutId","windowObj","res","event","err","handleContinue","handleClosePopup","handleShowDashboard","React","imageAssets","success_default","contractAddress","Provider","ethers","CreatePinPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","EventEmitter","styles","rnPasskey","fontsLoaded","setFontsLoaded","useState","pinHide","setPinHide","pinIncorrect","setPinIncorrect","pinIncorrectText","setPinIncorrectText","showCustomSuccess","setShowCustomSuccess","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showRejectInvitation","setShowRejectInvitation","customSuccessText","setCustomSuccessText","vaultPin","setVaultPin","vaultRawId","setVaultRawId","searchActive","setSearchActive","isPin","setIsPin","showImportAcct","setShowImportAcct","privateKeyError","setPrivateKeyError","enteredPk","setEnteredPk","existingCosigners","setExistingCosigners","quorum","setQuorum","passkeyPopupId","setPasskeyPopupId","address","pk","chainId","vaultContract","signer","setVaultData","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","vaultData","useVaultStore","pin","setPin","confirmPin","setConfirmPin","pinRefs","useRef","confirmPinRefs","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleFetchUserCosigners","quorumSet","cosignersNumber","custodyAddress","contractAddress","custodyEventAbi","ethers","iface","topicHash","userParticipants","Provider","ChainConfig","log","parsedLog","hashTheString","participant","handleTextChange","text","idx","isConfirm","clean","newPin","digit","createPasskey","vaultId","passkeyUrl","createPasskeyEndpoint","passkeyListener","msg","sender","__","credential","_rawId","base64ToArrayBuffer","hashedId","hashTheBuffer","pinToUse","handleVaultManagement","_window","publicKeyCredentialCreationOptions","err","requestPasskey","getPasskeyEndpoint","publicKeyCredentialRequestOptions","handleKeyPress","_","e","key","isConfirmActive","isConfirmActiveImp","channel","hashedVaultId","hashedVaultPin","checkOrResetOrCreateVault","res","handleAcceptAndRejectInvitation","accepted","acceptOrRejectInvitation","React","slider_default","resolveGlobalStyleUnit","el","imageAssets","credentialIdHashed","walletAndContractDetails","initWalletAndContract","success_default","createPin_default","React","useEffect","useState","ethers","contractAddress","Provider","AddCosignersPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","fontsLoaded","setFontsLoaded","useState","showLearnMore","setShowLearnMore","learnMoreStep","setLearnMoreStep","cosignerStep","setCosignerStep","showAddMore","setShowAddMore","addChannel","setAddChannel","coSignerNumber","setCoSignerNumber","coSignerNumberFmt","setCoSignerNumberFmt","coSignerEmail","setCoSignerEmail","coSignerName","setCoSignerName","userInput","setUserInput","searchActive","setSearchActive","selectedCountry","setSelectedCountry","imageAssets","coSigners","setCosigners","existingCosignersNumber","setExistingCosignersNumber","existingCosigners","setExistingCosigners","remainingCosigners","setRemainingCosigners","showSetRule","setShowSetRule","requiredSigners","setRequiredSigners","errorText","setErrorText","showRemoveSuccess","setShowRemoveSuccess","pk","vaultData","vaultContract","chainId","signer","useVaultStore","useEffect","PreloadGoogleFonts","_","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleFetchUserCosigners","hashedVaultId","hashTheString","quorumSet","cosignersNumber","custodyAddress","contractAddress","custodyEventAbi","ethers","iface","topicHash","userParticipants","Provider","ChainConfig","log","parsedLog","participant","handleButtonDisplay","handleAddCoSigner","coSignerLength","sig","cngs","handleCompleteVault","keyHolders","completeVaultCreation","res","React","slider_default","a","b","cng","idx","numberPositionsFmt","nSig","newId","text","numericInput","formattedNumber","i","search_default","success_default","addCosigners_default","React","useEffect","useRef","useState","ethers","EnterPinPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","rnPasskey","fontsLoaded","setFontsLoaded","useState","pinIncorrect","setPinIncorrect","pinHide","setPinHide","searchActive","setSearchActive","showSuccess","setShowSuccess","vaultData","_setVaultData","vaultDataRes","setVaultDataRes","chainId","_setChainId","showChains","setShowChains","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showRejectInvitation","setShowRejectInvitation","isAccepted","setIsAccepted","pinIncorrectText","setPinIncorrectText","showTx","setShowTx","newTx","setNewTx","pin","setPin","inputsRef","useRef","isPin","setIsPin","passkeyPopupId","setPasskeyPopupId","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","useVaultStore","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleTextChange","text","idx","paste","newPin","pasteIndex","i","nextIndex","clean","handleKeyPress","_","e","isFilled","d","handleVerifyPin","pinToUse","fullOtp","validateVaultPin","hashTheString","verifiedWebsiteUrls","res","initiateVaultRecovery","signVaultRecovery","restoreVaultLogin","walletAndContractDetails","initWalletAndContract","hashTheBuffer","areaCode","formattedNumber","handleAcceptAndRejectInvitation","accepted","vaultId","vaultPin","hashedVaultId","hashedVaultPin","acceptOrRejectInvitation","requestPasskey","passkeyUrl","getPasskeyEndpoint","passkeyListener","msg","sender","__","credential","_rawId","base64ToArrayBuffer","hashedId","_window","publicKeyCredentialRequestOptions","err","React","slider_default","el","imageAssets","resolveGlobalStyleUnit","LogoutOverlay","success_default","enterPin_default","FTUPage","props","isReactNative","View","Text","Image","ScrollView","StyleSheet","Font","AsyncStorage","fontsLoaded","setFontsLoaded","useState","showLogo","setShowLogo","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","showSuccessBtn","setShowSuccessBtn","successBtnText","setSuccessBtnText","successBtnNeutText","setSuccessBtnNeutText","actionHeaderText","setActionHeaderText","actionFooterText","setActionFooterText","successBtnFunc","setSuccessBtnFunc","successBtnNeutFunc","setSuccessBtnNeutFunc","isExistingUser","setIsExistingUser","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","vaultData","chainId","vaultContract","useVaultStore","useEffect","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","initializeUserWalletAndContract","lastPk","resolve","result","walletAndContractDetails","initWalletAndContract","debounce","fmtCountries","countriesDetails","cnt","React","contact_default","otp_default","createPin_default","success_default","addCosigners_default","enterPin_default","actionTexts","ky","ftu_default","VerifiedCustody","props","ready","setReady","useState","platformComponents","setPlatformComponents","fontsLoaded","setFontsLoaded","isOnboard","setisOnboard","vaultData","setVaultData","_vaultData","_setVaultData","isLoading","setIsLoading","showDashboard","setShowDasboard","showCompleteVault","setShowCompleteVault","showResetPin","setShowResetPin","showRemoveCosigner","setShowRemoveCosigner","action","setAction","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","useEffect","initPlatform","components","getPlatformComponents","isReactNative","View","Text","Font","AsyncStorage","ActivityIndicator","styles","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","storedVault","myVault","err","res","fmtCountries","countriesDetails","cnt","React","VaultContextProvider","ftu_default","hashTheString","ky","enterPin_default","actionTexts","addCosigners_default","success_default","initWalletAndContract","useVaultStore","createPin_default","pages_default"]}