{"version":3,"sources":["utils/lang/en.js","utils/lang/es.js","utils/lang/de.js","utils/lang/it.js","utils/lang/ja.js","utils/lang/zh-chs.js","utils/lang/zh-cht.js","utils/translations.js","components/commonComponents/toolTip/toolTip.module.scss","styles/account.module.scss","components/action/action.module.scss","styles/index.scss","components/home/landingPage.module.scss","components/resetPassword/index.module.scss","components/login/login.module.scss","components/hoc/with-localization.component.js","components/contact/contactUs.module.scss","components/register/registry.module.scss","utils/userManage.js","config/index.js","config/globalConstant.js","components/header/index.js","components/commonComponents/notification/animate.component.js","components/commonComponents/notification/notice.component.js","components/commonComponents/notification/notification.component.js","components/commonComponents/notification/index.js","services/api.service.js","services/api/account.service.js","components/home/landingPage.component.js","components/home/index.js","components/commonComponents/step/stepItem.component.js","components/commonComponents/step/index.js","components/register/registry-start.component.js","utils/formValidation.js","components/register/register.service.js","components/commonComponents/alert/index.js","components/register/register-data.js","components/register/registry-create-account/registry-create-user-account.component.js","components/commonComponents/password/index.js","components/register/registry-create-account/registry-complete-account.component.js","components/register/registry-create-account/registry-create-orgnization.component.js","components/register/registry-create-account/registry-information.component.js","components/register/registry-create-account/registry-verify-account.component.js","components/register/registry-create-account/registry-invite-success.component.js","components/register/registry-create-account/registry-match-email-error.component.js","components/register/registry-create-account/index.js","components/register/registry-create-account/registry-sendnotification-success.component.js","components/register/index.js","components/register/confirm-email.component.js","components/commonComponents/toolTip/index.js","components/commonComponents/modal/modal.component.js","components/commonComponents/modal/confirm-modal.component.js","components/commonComponents/modal/index.js","components/login/index.js","components/resetPassword/resetPassword.service.js","components/resetPassword/resetPassword-step1.component.js","components/resetPassword/resetPassword-step2.component.js","components/resetPassword/resetPassword-success.component.js","components/resetPassword/index.js","components/contact/contactRight.component.js","components/contact/index.js","components/logout/index.js","components/callback/index.js","components/error/error.service.js","components/error/index.js","router/router.js","components/action/action.service.js","components/action/index.js","components/footer/index.js","components/commonComponents/banner/BannerUI.js","components/layout/NonSupportBrowser.js","components/layout/index.js","App.js","index.js","components/userProvider/index.js","components/commonComponents/step/step.module.scss","components/commonComponents/banner/BannerUI.module.scss","utils/util.js"],"names":["en","fullTitle","shortTitle","signIn","smartFactoryAssetManagement","minimizeDowntimeMaximizeEfficiency","landingPageDescription","rememberMe","loginFailedResponse","authorizationFailed","userSubscriptionExpired","userSubscriptionLacked","resetPassword","haveTrouble","loginFailedContact","userDisabledResponseStart","userDisabledResponseEnd","userDisabledContact","copyright","contactUs","about","legal","privacy","cookies","contact","errorRequired","errorMaxChar","errorMinChar","here","unsupportedBrowserTitle","unsupportedBrowserDes","es","de","it","ja","zh","zht","langDict","xx","getLocalizedStrings","translations","LocalizedStrings","module","exports","withLocalization","WrappedContent","state","currentLanguage","localStorage","getItem","getLanguage","translateString","s","setLanguage","style","color","formatString","key","vars","type","undefined","unshift","l","setItem","setState","translate","this","props","React","Component","options","config","authority","sessionStorage","client_id","getIdsClientId","scope","userStore","WebStorageStateStore","store","window","automaticSilentRenew","accessTokenExpiringNotificationTime","registerEvents","onUserLoaded","user","onUserUnloaded","clear","onUserSignedOut","location","pathname","onAccessTokenExpiring","currentUser","JSON","parse","profile","KeepSignedIn","userManager","signinSilent","signOut","signinType","Authentication","appConfig","apiBaseUrl","axios","get","then","res","data","APIHostOverride","protocol","hostname","port","defaultClientId","SolutionID","DefaultClientId","assetManagerDownloadLink","AssetManagerDownloadLink","showLegacySFxDesktopReminder","ShowLegacySFxDesktopReminder","learnmoreLink","LearnmoreLink","showMigrationLoginReminder","ShowMigrationLoginReminder","toLowerCase","versionList","process","split","length","GetVersion","IsEnableUserSelfRegistration","EnableUserSelfRegistration","HeaderComponent","openSolutionBar","triggerSolutionBar","returnURL","showSign","indexOf","context","familyName","givenName","avatarUrl","solutions","isLogin","showUserInfo","dropDownMenuOptions","showCamera","onSignOut","onCamera","preferenceItem","name","onClick","history","push","footerMenu","accountSetting","label","solutionsList","map","r","slnIcon","images","defaultIconUrl","defaultImageUrl","solutionIconUrl","url","clientUri","id","shortName","img","solutionBarOptions","open","language","onClose","solutionBar","rightContent","loggedIn","orgName","OrgName","title","isShowSolutionBar","onSolutionMenuButton","className","to","search","size","contextType","UserContext","withRouter","Animate","fadeinenter","fadeoutenter","onEnter","onEntered","onExit","onExited","prefixCls","componentClass","Fade","in","fadein","children","Notice","closeHander","e","stopPropagation","close","clearCloseTimer","startCloseTimer","duration","closeTimer","setTimeout","clearTimeout","prevProps","update","restartCloseTimer","onMouseEnter","onMouseLeave","seed","now","Date","getUuid","Notification","notices","add","notice","maxCount","previousState","noticeIndex","v","updatedNotices","concat","splice","updateKey","shift","remove","filter","transitionName","animation","noticeNodes","index","Boolean","args","slice","call","arguments","i","apply","createChainedFunction","bind","closeIcon","content","getTransitionName","defaultProps","newInstance","properties","callback","getContainer","div","document","createElement","appendChild","body","called","ReactDOM","ref","notification","noticeProps","removeNotice","component","destroy","parentNode","removeChild","notificationInstance","typeToColor","warning","success","info","error","defaultDuration","defaultTop","defaultBottom","defaultPlacement","defaultGetContainer","getPlacementStyle","placement","left","top","bottom","right","outerPrefixCls","background","Object","assign","message","description","btn","cacheKey","NotificationApi","src","alt","getNotificationInstance","closable","keys","forEach","errorMsg","requestList","CancelToken","sources","defaults","headers","post","interceptors","request","use","stringify","cancelToken","cancel","includes","Promise","reject","response","findIndex","item","isCancel","Cancel","method","params","settings","getUser","access_token","baseURL","catch","status","catchError","href","Number","handleError","apiService","delete","put","LoginAsync","opts","a","LogoutAsync","AcceptTerms","userId","getSolutionsAsync","Category","Recommended","Carousel","Link","CarouselBox","carouselSourceList","sourceLoading","useState","activeIndex","setActiveIndex","animating","setAnimating","next","nextIndex","previous","goToIndex","newIndex","CarouselContent","styles","carouselBox","cx","carouselSingle","backgroundImage","imageUrl","rightDetail","description1","target","rel","rightButton","slides","CarouselItem","carousel","onExiting","ride","interval","CarouselIndicators","items","onClickHandler","CarouselControl","direction","directionText","SolutionCard","defaultSRC","thumbnailUrl","solutionCard","solutionImgWrap","solutionImgUrl","onError","fullName","solutionCardDetail","display","solutionCardButton","SolutionCardList","solutionLoading","solutionContainer","useRef","pageSize","setPageSize","setSolutionsList","getSolutionListCallback","useCallback","pageNo","parseInt","pageNoChange","useEffect","addEventListener","updatePageSize","removeEventListener","current","windowWidth","innerWidth","solutionContainerWidth","clientWidth","solutionCardWrap","leftTitle","solutionCardContainer","pagination","active","disabled","VideoCard","videoCard","videoImgWrap","videoImg","VideoCardList","videoSourceList","videoCardContainer","LandingPage","userName","useContext","setVideoSourceList","setCarouselSourceList","linkSource","setLinkSourceList","setSourceLoading","obj","ret","sort","b","order","values","category","initSourceList","container","header","log","smLog","ul","leftBox","rightBox","Home","Fragment","StepItem","showLine","lineWidth","stepItemWrap","stepItem","line","width","stepText","Step","renderStep","stepNum","stepTexts","stepActive","stepWidth","steps","stepWrap","stepTitle","stepActiveText","RegistryStart","pt20","buttonMiddle","Button","onGetStarted","font16","validatePassword","password","minMaxLength","upper","lower","number","special","valid","test","validateEmail","email","String","validateStringValue","val","required","min","max","require","isValid","errorMessage","trim","validatePhoneNumber","value","validateEmailAsync","validateGenericEmailAsync","validateOrgNameAsync","getCountryPhoneCodeListAsyc","getCountryListAsync","getStateListAsync","countryId","registerAsync","consumeCaptchaAsync","cleanActionLinksAsync","resendNewAccountCaptchaAsync","operationId","clientReturnUri","sendWelcomeNotificationAsync","checkEmailDomainExistenceAsync","sendAccountRegistrationNotificationAsync","requesttype","imgSrc","Alert","fontStyle","registerData","CreateAccountBasic","countryPhoneCodeList","formValid","persistedState","validateEmailMsg","validateEmailShowError","confirmEmail","validateConfirmEmail","validateConfirmEmailMsg","phoneNum","userPhoneNum","validatephoneNum","validatephoneMsg","validatephoneNumShowError","phoneCountryCode","userPhoneCountryCode","firstName","isFirstNameChange","lastName","isLastNameChange","nextStep","isShowCheckEmailLoading","showNumberLoading","isExistedDomain","messageContent","showMessageBox","sendBtnDiabled","requestAccessButtonDisabled","showNextButton","isFreeProviderEmail","validForm","validatePhone","onNext","setRegisterData","onStepChange","checkWhetherDomainExistedAsync","onEmailChange","debounce","validateRes","msg","checkConfirmEmail","checkGenericEmailAsync","checkEmailAsync","GoToNext","onConfirmChange","value1","value2","isFreeProvider","onPhoneChange","msgDom","textcolor","onFirstNameChange","onLastNameChange","onPhoneCountryCodeChange","sendAccountRegistrationNotification","preventDefault","requestType","requestData","code","successMsg","scrollToAnchor","anchorElement","getElementById","scrollIntoView","displayMessageBox","onMessageContentChange","nextBtnDisabled","disabledRequestAccessButton","disabledSendBtn","fontWeight","row","FormGroup","formGroupWrap","Label","for","Spinner","spinner","Input","onChange","onPaste","maxLength","placeholder","showFlag","renderOption","geonameId","FlagUrl","flagUrl","isLoading","isDisabled","buttonGroupMargin","textarea","buttonRight","PasswordMask","masked","passwordValue","handleEyeClick","handlePasswordChange","persist","onBlur","innerEye","classnames","bootstrapDefaultStyle","fieldName","placeHolder","data-toggle","defaultValue","handlePasswordBlur","invalid","showErrorMsg","FormText","pwdErrorTip","CompleteAccount","showErrors","verifyPassword","canNotSubmit","readCheck","isShowLoading","canGoback","validateFields","onCheck","checked","validResult","confirmPassword","back","organizationName","organizationAddress","organizationAddressLine","organizationZipCode","organizationCity","organizationState","organizationCountry","countryName","continent","organizationPhoneCountryCode","organizationPhoneNumber","signInURL","FormFeedback","marginBottom","CustomInput","labelSpan","outline","CreateAccountOrganization","countryList","stateList","cityList","cityChangeAble","isShowCheckOrgNameLoading","validateOrgName","showOrgError","validateOrgNameMsg","isOrganizationAddressChange","country","isOrganizationZipCodeChange","isOrganizationCityChange","stateChangeAble","validatePhoneNum","showPhoneError","showProvinceLoading","showCountryLoading","validateOrganizationName","getCountryPhoneCodeListAsync","onOrganizationNameChange","onOrganizationPhoneNumberChange","onOrganizationAddressChange","onOrganizationAddressLineChange","onOrganizationZipCodeChange","onOrganizationCityChange","onBack","onChangePhoneCountryCode","onCountryChange","onStateChange","isFormValid","nextDisabled","CreateAccountInfo","tip","VerifyAccount","number1","number2","number3","number4","number5","number6","canContinue","verifyLoading","resendCodeLoading","resendCode","encodeURIComponent","replace","num","substr","getElementsByName","focus","VerifyCode","onKeyDown","keyCode","ctrlKey","navigator","clipboard","readText","text","textVal","verifyBefore","autoFocus","buttonGroup","marginRight","InviteSuccess","onSignIn","marginTop","fontSize","height","whiteSpace","stepComponentEnum","1","2","3","4","5","6","7","8","goToPrevious","onSignInButtonClick","headerTextCenter","guide","buttonGroupMargin2","contactSFx","CreateAccount","showComponent","passedInEmail","componentDidMount","result","initialStep","step","Register","match","isStart","CarouselWrap","CarouselWrapMask","rightContentBac","registryWrap","startComp","logo","exact","path","render","ConfirmEmail","Userid","getUrlParam","Token","confirmEmailAsync","alert","reg","RegExp","unescape","ToolTip","show","handleClick","node","contains","trigger","createRef","arrowPointAtCenter","ModalLocale","CommonModal","toggle","ModalId","handleOk","onOk","handleCancel","onCancel","ModalBody","okText","okType","cancelText","confirmLoading","defaultFooter","ModalFooter","cancelButtonProps","loading","okButtonProps","footer","Modal","ModalHeader","renderModalBody","renderModalFooter","ConfirmDialog","okCancel","confirm","currentProps","isOpen","iconType","warn","Login","returnUrl","queryStringHandler","ReturnUrl","clientUrl","clientReturnUrl","redirect_uri","isEnableUserSelfRegistration","showResult","showSfxDesktopDeprecatedModal","handleInputChange","event","userNameValidCheck","passwordValidCheck","canSubmit","userNameInvalid","passwordInvalid","userNameErrorMessage","passwordErrorMessage","loginFailed","showAgreeTermModal","rememberFlag","login","shouldSubmit","html","serviceLink","username","rememberLogin","loginProcess","IDSRedirectURL","isRedirectClient","redirectClientUri","currentLocation","hasAcceptedTerms","eventResult","clickCreateAccountLink","Form","onSubmit","remember","nexusMigrationTips","imgdiv","alterImg","attention","learnmore","footerBox","sendResetLinkAsync","ResetPasswordStep1","emailValid","emailValidateMsg","showAlert","isSubmitDisabled","debounceHandle","console","dir","afterValidation","ResetPasswordStep2","ResetPasswordSuccess","linkStyle","ResetPassword","Container","auth","ContactRight","contactRight","secondaryBtn","ContactUs","resetForm","userFirstName","userFirstNameValid","userFirstNameError","userLastName","userLastNameValid","userLastNameError","subject","subjectValid","subjectError","messageValid","messageError","visible","promptMessage","alertType","validateFirstName","firstNameValidCheck","validateLastName","lastNameValidCheck","onSubjectChange","validateSubject","subjectValidCheck","onMessageChange","validateMessage","messageValidCheck","handleSubmit","onDismiss","contactForm","contactTitle","contactLabel","contactControl","rows","verticalSeparatorLine","Logout","originalQueryString","logoutId","removeItem","redirectUrl","messageIndex","logingout","logged","SigninCallback","successCallback","updateUser","currentIDSRedirectURL","userMgr","SilentRedirectCallback","readErrorInformation","errorId","Error","origin","loadingErrorInfo","errorInfo","err","errorCase","case","Row","Col","xs","ErrorCase","NOT_FOUND","clientId","errorDescription","requestId","routes","requiresAuth","lazy","RetrieveOperationAsync","token","ResetPasswordAsync","pu","ActivateAccountAsync","aa","Action","encodedToken","operationInstance","clientRediretUri","resetPasswordAsync","isSubmit","isShowSubmitLoading","puModel","newPassword","confirmedNewPassword","redirectUri","isSubmitError","operation","formValidate","confirmPasswordValidMsg","confirmPasswordValid","passwordValidMsg","passwordValid","activateAccount","aaModel","isActivateButtonDisabled","sendCode","clientRedirectUri","sentCaptchaSuccessfully","rules","getErrorMessage","isShowErrorMsg","actionWrap","formPanel","mark","btnArea","buttonSpinner","actionBtnArea","actionButtonSpinner","loadWrap","Footer","links","link","getFullYear","version","Banner","isShow","showClose","bannerType","bannerPosition","renderContent","bannerConfig","bannerTypeDict","default","banner","colorClass","topBanner","icon","upgrade","subUpdate","bannerTypeEnum","propTypes","PropTypes","string","object","bool","isRequired","oneOf","func","UnsupportedBrowserBanner","bannerPaths","isIE","detectIE","authPath","hasSolution","Layout","getRequiresAuth","currentRoute","find","routerRath","checkUser","checkUserLoading","querySessionStatus","sessionExist","getUserProfile","getSolutionList","avatar","surname","role","updateUserProfile","profileObj","showUserProfile","supportedLanguagesList","supportedLanguages","currentLanguageValue","Lang","getToken","initialData","staticSource","saveSuccessCallback","given_name","family_name","uploadAvatarSuccess","imgUrl","Avatar","deleteAvatarSuccess","UserProfile","prevState","TotalSignIn","currentPathName","prevPathName","showBanner","some","matchPath","userState","route","App","fallback","app","createContext","UserConsumer","Consumer","UserProvider","Provider","ua","userAgent","msie","trident"],"mappings":"6RAAaA,EAAK,CAEdC,UAAW,WACXC,WAAY,WACZC,OAAQ,UAGRC,4BAA6B,WAC7BC,mCAAoC,0CACpCC,uBAAwB,kpBAGxBC,WAAY,cACZC,oBAAqB,kFACrBC,oBAAqB,kGACrBC,wBAAyB,4EACzBC,uBAAwB,yGACxBC,cAAe,wBACfC,YAAa,0CACbC,mBAAoB,gCACpBC,0BAA2B,oEAC3BC,wBAAyB,oEACzBC,oBAAqB,mBAErBC,UAAW,sCACXC,UAAW,aACXC,MAAO,QACPC,MAAO,QACPC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,cAAe,mCACfC,aAAc,8BACdC,aAAc,8BAEdC,KAAM,OACNC,wBAAyB,UACzBC,sBAAsB,wICrCbC,EAAK,CAEd9B,UAAW,WACXC,WAAY,WACZC,OAAQ,UAGRC,4BAA6B,WAC7BC,mCAAoC,0CACpCC,uBAAwB,kpBAGxBC,WAAY,cACZC,oBAAqB,kFACrBC,oBAAqB,kGACrBC,wBAAyB,4EACzBC,uBAAwB,yGACxBC,cAAe,wBACfC,YAAa,0CACbC,mBAAoB,gCACpBC,0BAA2B,oEAC3BC,wBAAyB,oEACzBC,oBAAqB,mBAErBC,UAAW,sCACXC,UAAW,aACXC,MAAO,QACPC,MAAO,QACPC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,cAAe,mCACfC,aAAc,8BACdC,aAAc,8BAEbC,KAAM,OACNC,wBAAyB,UACzBC,sBAAsB,wICrCdE,EAAK,CAEd/B,UAAW,WACXC,WAAY,WACZC,OAAQ,UAGRC,4BAA6B,WAC7BC,mCAAoC,0CACpCC,uBAAwB,kpBAGxBC,WAAY,cACZC,oBAAqB,kFACrBC,oBAAqB,kGACrBC,wBAAyB,4EACzBC,uBAAwB,yGACxBC,cAAe,wBACfC,YAAa,0CACbC,mBAAoB,gCACpBC,0BAA2B,oEAC3BC,wBAAyB,oEACzBC,oBAAqB,mBAErBC,UAAW,sCACXC,UAAW,aACXC,MAAO,QACPC,MAAO,QACPC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,cAAe,mCACfC,aAAc,8BACdC,aAAc,8BAEbC,KAAM,OACNC,wBAAyB,UACzBC,sBAAsB,wICrCdG,EAAK,CAEdhC,UAAW,WACXC,WAAY,WACZC,OAAQ,UAGRC,4BAA6B,WAC7BC,mCAAoC,0CACpCC,uBAAwB,kpBAGxBC,WAAY,cACZC,oBAAqB,kFACrBC,oBAAqB,kGACrBC,wBAAyB,4EACzBC,uBAAwB,yGACxBC,cAAe,wBACfC,YAAa,0CACbC,mBAAoB,gCACpBC,0BAA2B,oEAC3BC,wBAAyB,oEACzBC,oBAAqB,mBAErBC,UAAW,sCACXC,UAAW,aACXC,MAAO,QACPC,MAAO,QACPC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,cAAe,mCACfC,aAAc,8BACdC,aAAc,8BAEbC,KAAM,OACNC,wBAAyB,UACzBC,sBAAsB,wICrCdI,EAAK,CAEdjC,UAAW,WACXC,WAAY,WACZC,OAAQ,UAGRC,4BAA6B,WAC7BC,mCAAoC,0CACpCC,uBAAwB,kpBAGxBC,WAAY,cACZC,oBAAqB,kFACrBC,oBAAqB,kGACrBC,wBAAyB,4EACzBC,uBAAwB,yGACxBC,cAAe,wBACfC,YAAa,0CACbC,mBAAoB,gCACpBC,0BAA2B,oEAC3BC,wBAAyB,oEACzBC,oBAAqB,mBAErBC,UAAW,sCACXC,UAAW,aACXC,MAAO,QACPC,MAAO,QACPC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,cAAe,mCACfC,aAAc,8BACdC,aAAc,8BAEbC,KAAM,OACNC,wBAAyB,UACzBC,sBAAsB,wICrCdK,EAAK,CAEdlC,UAAW,WACXC,WAAY,WACZC,OAAQ,UAGRC,4BAA6B,WAC7BC,mCAAoC,0CACpCC,uBAAwB,kpBAGxBC,WAAY,cACZC,oBAAqB,kFACrBC,oBAAqB,kGACrBC,wBAAyB,4EACzBC,uBAAwB,yGACxBC,cAAe,wBACfC,YAAa,0CACbC,mBAAoB,gCACpBC,0BAA2B,oEAC3BC,wBAAyB,oEACzBC,oBAAqB,mBAErBC,UAAW,sCACXC,UAAW,aACXC,MAAO,QACPC,MAAO,QACPC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,cAAe,mCACfC,aAAc,8BACdC,aAAc,8BAEbC,KAAM,OACNC,wBAAyB,UACzBC,sBAAsB,wICrCdM,EAAM,CAEfnC,UAAW,WACXC,WAAY,WACZC,OAAQ,UAGRC,4BAA6B,WAC7BC,mCAAoC,0CACpCC,uBAAwB,kpBAGxBC,WAAY,cACZC,oBAAqB,kFACrBC,oBAAqB,kGACrBC,wBAAyB,4EACzBC,uBAAwB,yGACxBC,cAAe,wBACfC,YAAa,0CACbC,mBAAoB,gCACpBC,0BAA2B,oEAC3BC,wBAAyB,oEACzBC,oBAAqB,mBAErBC,UAAW,sCACXC,UAAW,aACXC,MAAO,QACPC,MAAO,QACPC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,cAAe,mCACfC,aAAc,8BACdC,aAAc,8BAEbC,KAAM,OACNC,wBAAyB,UACzBC,sBAAsB,wIC3BdO,EAAW,CACpBrC,GAAI,UACJ+B,GAAI,aACJC,GAAI,UACJC,GAAI,WACJC,GAAI,qBACJC,GAAI,2BACJC,IAAK,2BACLE,GAAI,QAGKC,EAAsB,WAgB/B,MAfiB,CACbvC,GAAIA,EACJ+B,GAAIA,EACJC,GAAIA,EACJC,GAAIA,EACJC,GAAIA,EACJC,GAAIA,EACJC,IAAKA,IAWAI,EAAe,I,OAAIC,GAAiBF,M,oBCvCjDG,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,eAAe,8BAA8B,kBAAkB,iCAAiC,MAAQ,uBAAuB,YAAY,6B,oBCAlRD,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,oBAAoB,mCAAmC,eAAe,8BAA8B,YAAc,6BAA6B,iBAAiB,gCAAgC,MAAQ,uBAAuB,SAAW,0BAA0B,YAAY,6B,mBCAvZD,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,WAAa,2BAA2B,UAAY,0BAA0B,KAAO,qBAAqB,OAAS,uBAAuB,QAAU,wBAAwB,SAAW,yBAAyB,cAAgB,8BAA8B,oBAAsB,oCAAoC,cAAgB,8BAA8B,SAAW,yBAAyB,KAAO,qBAAqB,MAAQ,sBAAsB,MAAQ,wB,oBCAnlBD,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,gB,mBCAvHD,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,UAAY,+BAA+B,OAAS,4BAA4B,IAAM,yBAAyB,MAAQ,2BAA2B,GAAK,wBAAwB,MAAQ,2BAA2B,QAAU,6BAA6B,QAAU,6BAA6B,UAAY,+BAA+B,iBAAmB,sCAAsC,QAAU,6BAA6B,sBAAwB,2CAA2C,aAAe,kCAAkC,gBAAkB,qCAAqC,mBAAqB,wCAAwC,mBAAqB,wCAAwC,WAAa,gCAAgC,OAAS,4BAA4B,SAAW,8BAA8B,mBAAqB,wCAAwC,UAAY,+BAA+B,aAAe,kCAAkC,SAAW,8BAA8B,SAAW,8BAA8B,YAAc,iCAAiC,eAAiB,oCAAoC,YAAc,iCAAiC,YAAc,mC,mBCA91CD,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,KAAO,4BAA4B,KAAO,4BAA4B,OAAS,8BAA8B,MAAQ,6BAA6B,YAAc,mCAAmC,wBAAwB,6CAA6C,MAAQ,6BAA6B,KAAO,4BAA4B,UAAY,iCAAiC,QAAU,iC,yDCA9gBD,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,oBAAoB,iCAAiC,aAAe,4BAA4B,iBAAmB,gCAAgC,gBAAkB,+BAA+B,aAAe,4BAA4B,IAAM,mBAAmB,OAAS,sBAAsB,OAAS,sBAAsB,eAAe,4BAA4B,YAAc,2BAA2B,iBAAiB,8BAA8B,MAAQ,qBAAqB,SAAW,wBAAwB,YAAY,yBAAyB,UAAY,yBAAyB,mBAAqB,kCAAkC,SAAW,wBAAwB,OAAS,sBAAsB,UAAY,yBAAyB,UAAY,2B,kGCyDr3BC,IAxDU,SAACC,GAqDtB,OArDyC,4MAErCC,MAAQ,CACJC,gBAAiBC,aAAaC,QAAQ,kBAAoBD,aAAaC,QAAQ,kBAAoBT,eAAaU,eAH/E,EAMrCC,gBAAkB,SAACC,GAEf,OADAZ,eAAaa,YAAY,EAAKP,MAAMC,iBACD,OAA/B,EAAKD,MAAMC,gBACH,0BAAMO,MAAO,CAAEC,MAAO,WAAtB,KAAqCf,eAAaY,GAAlD,MAEDZ,eAAaY,GAAKZ,eAAaY,GAAKA,GAXd,EAerCI,aAAe,SAACC,EAAKC,GACjB,IAAMC,SAAcD,EAEpB,MAAa,cAATC,QAAiCC,IAATD,EACjBF,EAGE,WAATE,GACAD,EAAKG,QAAQrB,eAAaiB,IACnBjB,eAAagB,aAAb,MAAAhB,eAAY,YAAiBkB,KAE7BlB,eAAagB,aAAahB,eAAaiB,GAAMC,IA1BvB,EA8BrCL,YAAc,SAACS,GACXtB,eAAaa,YAAYS,GACzBd,aAAae,QAAQ,iBAAkBD,GACvC,EAAKE,SAAS,CAAEjB,gBAAiBe,KAjCA,EAoCrCZ,YAAc,WACV,OAAO,EAAKJ,MAAMC,iBArCe,4CAwCrC,WAAU,IAAD,OACL,OACI,kBAACF,EAAD,eACIoB,UAAW,SAACb,GAAD,OAAO,EAAKD,gBAAgBC,IACvCL,gBAAiBmB,KAAKpB,MAAMC,gBAC5BM,YAAa,SAACS,GAAD,OAAO,EAAKT,YAAYS,IACrCN,aAAc,SAACC,EAAKC,GAAN,OAAe,EAAKF,aAAaC,EAAKC,KAChDQ,KAAKC,YA/CgB,GACvBC,IAAMC,a,mBCF5B3B,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,eAAiB,kCAAkC,aAAe,gCAAgC,UAAY,6BAA6B,YAAc,+BAA+B,aAAe,gCAAgC,sBAAwB,yCAAyC,aAAe,gCAAgC,aAAe,kC,kBCA7eD,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,iBAAiB,iCAAiC,aAAe,+BAA+B,UAAY,4BAA4B,OAAS,yBAAyB,KAAO,uBAAuB,KAAO,uBAAuB,MAAQ,wBAAwB,SAAW,2BAA2B,IAAM,sBAAsB,mBAAqB,qCAAqC,aAAe,+BAA+B,YAAc,8BAA8B,QAAU,0BAA0B,KAAO,uBAAuB,IAAM,sBAAsB,UAAY,4BAA4B,MAAQ,wBAAwB,gBAAkB,kCAAkC,OAAS,yBAAyB,KAAO,uBAAuB,MAAQ,wBAAwB,QAAU,0BAA0B,MAAQ,wBAAwB,aAAe,+BAA+B,gBAAkB,kCAAkC,YAAc,8BAA8B,eAAiB,iCAAiC,UAAY,4BAA4B,SAAW,2BAA2B,SAAW,2BAA2B,qBAAqB,qCAAqC,MAAQ,wBAAwB,YAAc,8BAA8B,kBAAoB,oCAAoC,SAAW,2BAA2B,mBAAqB,qCAAqC,WAAa,6BAA6B,oBAAoB,oCAAoC,aAAe,+BAA+B,eAAe,+BAA+B,cAAgB,gCAAgC,QAAU,0BAA0B,YAAc,8BAA8B,aAAe,+BAA+B,aAAe,+BAA+B,iBAAmB,mCAAmC,gBAAkB,kCAAkC,OAAS,yBAAyB,iBAAmB,mCAAmC,MAAQ,wBAAwB,eAAiB,mC,gCCDhsE,8BAOM2B,EAAU,CAGZC,OAAQ,CACJC,UALUC,eAAexB,QAAQ,aAMjCyB,UAAWC,cACXC,MAAM,iCAAD,OAAmCD,cAAnC,YATK,8BAUVE,UAAW,IAAIC,uBAAqB,CAAEC,MAAOC,OAAOhC,eACpDiC,sBAAsB,EACtBC,oCAAqC,KAEzCC,eAAgB,CACZC,aAAc,SAACC,GACXrC,aAAae,QAAQ,YAAY,IAErCuB,eAAgB,WACZtC,aAAauC,SAEjBC,gBAAiB,WACoB,mBAA7BR,OAAOS,SAASC,WAChBV,OAAOS,SAAW,mBAG1BE,sBAAuB,WACnB,IAAMC,EAAcC,KAAKC,MAAM9C,aAAaC,QAAQ,aAChD2C,GAAeA,EAAYG,UAAgD,IAArCH,EAAYG,QAAQC,aAC1DC,EAAYC,eAEZD,EAAYE,YAIxBC,WAAY,YAEVH,EAAc,IAAII,iBAAe/B,GAIxB2B,O,qUC3CJK,EAAY,GACVC,EAAaC,IAAMC,IAA6B,2BACxDC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,QAChBF,MAAK,SAAAE,GAKF,OAJAN,EAAYM,EACPA,GAASA,EAAKC,kBACfP,EAAUO,gBAAV,UAA+B7B,OAAOS,SAASqB,SAA/C,aAA4D9B,OAAOS,SAASsB,SAA5E,YAAwF/B,OAAOS,SAASuB,OAErGV,EAAUO,mBASZI,GANaT,IAAMC,IAA6B,2BACxDC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,QAChBF,MAAK,SAAAE,GACF,OAAOA,EAAKM,cAGWV,IAAMC,IAA6B,2BAC7DC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,QAChBF,MAAK,SAAAE,GACF,OAAOA,EAAKO,oBAGPC,EAA2BZ,IAAMC,IAA6B,2BACtEC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,QAChBF,MAAK,SAAAE,GACF,OAAOA,EAAKS,4BAGPC,EAA+Bd,IAAMC,IAA6B,2BAC1EC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,QAChBF,MAAK,SAAAE,GACF,OAAOA,EAAKW,gCAGPC,EAAgBhB,IAAMC,IAA6B,2BAC3DC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,QAChBF,MAAK,SAAAE,GACF,OAAOA,EAAKa,iBAGPC,EAA6BlB,IAAMC,IAA6B,2BACxEC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,QAChBF,MAAK,SAAAE,GACF,MAAyD,SAAlDA,EAAKe,2BAA2BC,gBAA4B,MAK3E,WACI,IAAMC,EAAcC,QAA8BC,MAAM,KACxD,GAAIF,GAAeA,EAAYG,OAAS,EACpC,MAAM,GAAN,OAAUH,EAAY,GAAtB,YAA4BA,EAAY,GAAxC,YCtD6B,uBDsD7B,YAAuEA,EAAYA,EAAYG,OAAS,IAEtG,OAAN,OCxDiC,uBDwDjC,MAPqBC,GAWlB,IAAMC,EAA+B,kBAAM1B,IAAMC,IAA6B,2BAChFC,MAAK,SAAAC,GAAG,OAAIA,EAAIC,QAChBF,MAAK,SAAAE,GACF,MAA2C,SAApCA,EAAKuB,6BAAyC,O,s/CEvDvDC,E,4MAEFtF,MAAQ,CACJuF,iBAAiB,G,EAGrBC,mBAAqB,WACjB,EAAKtE,SAAS,CAAEqE,iBAAkB,EAAKvF,MAAMuF,mB,4CAGjD,WAAU,IAAD,OACCE,EAAYvF,aAAaC,QAAQ,iBACjCyC,EAAWxB,KAAKC,MAAMsB,SAASC,SAC/B8C,EAAY9C,EAAS+C,QAAQ,YAAc,GAAoB,oBAAb/C,EAHnD,EAI8DxB,KAAKwE,QAAhEC,EAJH,EAIGA,WAAYC,EAJf,EAIeA,UAAWC,EAJ1B,EAI0BA,UAJ1B,IAIqCxD,YAJrC,MAI4C,GAJ5C,EAIgDyD,EAJhD,EAIgDA,UAC7C/C,EAAYV,EAAZU,QACFgD,EAAU7E,KAAKC,MAAM6E,aAErBC,EAAsB,CACxBJ,YACAD,YACAD,aACAO,YAAY,EACZC,UAAW,WACPlD,IAAYE,WAEhBiD,SAAU,aACVC,eAAgB,CACZC,KAAM,iBACNC,QAAS,WACL,EAAKpF,MAAMqF,QAAQC,KAAK,uBAK9BC,EAAa,CACfC,eAAgB,CACZC,MAAO,mBACPL,QAAS,WACL,EAAKpF,MAAMqF,QAAQC,KAAK,oBACxB,EAAKnB,wBAIXuB,EAAgBf,EAAUgB,KAAI,SAAAC,GAChC,IAAIC,EAAUD,EAAEE,QAAUF,EAAEE,OAAO,GAC/BC,EAAiBH,EAAEI,gBACnBC,EAAmBJ,GAAWA,EAAQK,IAAOL,EAAQK,IAAMH,EAE/D,MAAO,CACHG,IAAKN,EAAEO,UAAYP,EAAEO,UAAY,IACjCC,GAAIR,EAAEQ,GACNjB,KAAMS,EAAET,KACRkB,UAAWT,EAAES,UACbC,IAAKL,MAGPM,EAAqB,CACvBC,KAAMzG,KAAKpB,MAAMuF,gBACjBS,UAAWe,EACXe,SAAU,KACVC,QAAS3G,KAAKoE,mBACdoB,cAGEoB,EACF5G,KAAKpB,MAAMuF,iBAAmB,kBAAC,IAAgBqC,GAG7CK,EAAehC,GAAW,kBAAC,IAAqBE,GAGtD,OACI,oCACI,kBAAC,IAAD,CACI+B,SAAUjC,EACVkC,QAASlF,GAAWA,EAAQmF,QAC5BC,MAAO,WACPC,kBAAmBrC,EACnBsC,qBAAsB,WAClB,EAAK/C,sBAETwC,YAAaA,EACbC,aAAcA,IAEjBvC,GAAY,yBAAK8C,UAAU,sBACxB,oCACI,0BAAMA,UAAU,6BAAhB,4BACA,kBAAC,IAAD,CAAMC,GAAI,CACN7F,SAAU,iBACV8F,OAAQjD,IACT,kBAAC,IAAD,CAAQ+C,UAAU,2BAA2BG,KAAK,MAAlD,mB,GA3FGpH,aAsG9B+D,EAAgBsD,YAAcC,IACf/I,kBAAiBgJ,YAAWxD,I,uGC7GtByD,E,4MACnB/I,MAAQ,CACNgJ,aAAa,EACbC,cAAc,G,EAEhBC,QAAU,WACR,EAAKhI,SAAS,CAAE8H,aAAa,K,EAE/BG,UAAY,WACV,EAAKjI,SAAS,CAAE8H,aAAa,K,EAE/BI,OAAS,WACP,EAAKlI,SAAS,CAAE+H,cAAc,K,EAEhCI,SAAW,WACT,EAAKhI,MAAMgI,WACX,EAAKnI,SAAS,CAAE+H,cAAc,K,4CAEhC,WACE,IAAMK,EAAYlI,KAAKC,MAAMmH,UACvBe,EAAc,UAAMD,EAAN,SACdN,EAAc5H,KAAKpB,MAAMgJ,YAAX,UAA4BO,EAA5B,mBAA8D,GAC5EN,EAAe7H,KAAKpB,MAAMiJ,aAAX,UAA6BM,EAA7B,YAAwD,GAC7E,OACE,kBAACC,EAAA,EAAD,CACEC,GAAIrI,KAAKC,MAAMqI,OACfR,QAAS9H,KAAK8H,QACdC,UAAW/H,KAAK+H,UAChBC,OAAQhI,KAAKgI,OACbC,SAAUjI,KAAKiI,SACfb,UAAS,UAAKe,EAAL,aAAwBP,EAAxB,YAAuCC,IAE/C7H,KAAKC,MAAMsI,c,GAhCiBpI,aCAhBqI,E,4MACnB5J,MAAQ,CAAE0J,QAAQ,G,EAelBG,YAAc,SAACC,GACTA,GACFA,EAAEC,kBAEJ,EAAK7I,UAAS,SAAAlB,GAAK,MAAK,CAAE0J,QAAS1J,EAAM0J,Y,EAE3CM,MAAQ,WACN,EAAKC,kBACL,EAAK5I,MAAM0G,W,EAGbmC,gBAAkB,WACZ,EAAK7I,MAAM8I,WACb,EAAKC,WAAaC,YAAW,WAC3B,EAAKR,gBACkB,IAAtB,EAAKxI,MAAM8I,Y,EAIlBF,gBAAkB,WACZ,EAAKG,aACPE,aAAa,EAAKF,YAClB,EAAKA,WAAa,O,uDApCtB,WACEhJ,KAAK8I,oB,gCAGP,SAAmBK,IACbnJ,KAAKC,MAAM8I,WAAaI,EAAUJ,UACjC/I,KAAKC,MAAMmJ,SACdpJ,KAAKqJ,sB,kCAIT,WACErJ,KAAK6I,oB,+BA4BP,WACE7I,KAAK6I,kBACL7I,KAAK8I,oB,oBAGP,WACE,IAAM7I,EAAQD,KAAKC,MACbkI,EAAc,UAAMlI,EAAMiI,UAAZ,WACpB,OACE,kBAAC,EAAD,CACEI,OAAQtI,KAAKpB,MAAM0J,OACnBL,SAAUjI,KAAK4I,MACfxB,UAAS,UAAKe,IAEd,yBACEf,UAAS,UAAKe,EAAL,KACT/I,MAAOa,EAAMb,MACbkK,aAActJ,KAAK6I,gBACnBU,aAAcvJ,KAAK8I,gBACnBzD,QAASrF,KAAKyI,aAEd,yBAAKrB,UAAS,UAAKe,EAAL,aAAgClI,EAAMsI,gB,GA/D1BpI,aCgBpC,IAAIqJ,EAAO,EACLC,EAAMC,KAAKD,MACjB,SAASE,IACP,MAAM,kBAAN,OAAyBF,EAAzB,YAAgCD,K,IAE5BI,E,4MAOJhL,MAAQ,CACNiL,QAAS,I,EAYXC,IAAM,SAACC,GACL,IAAMxK,EAAMwK,EAAOxK,IAAMwK,EAAOxK,KAAOoK,IAC/BK,EAAa,EAAK/J,MAAlB+J,SACR,EAAKlK,UAAS,SAAAmK,GACZ,IAAMJ,EAAUI,EAAcJ,QACxBK,EAAcL,EAAQjE,KAAI,SAAAuE,GAAC,OAAIA,EAAE5K,OAAKgF,QAAQhF,GAC9C6K,EAAiBP,EAAQQ,SAa/B,OAZqB,IAAjBH,EACFE,EAAeE,OAAOJ,EAAa,EAAGH,IAElCC,GAAYH,EAAQ/F,QAAUkG,IAIhCD,EAAOQ,UAAYH,EAAe,GAAGG,WAAaH,EAAe,GAAG7K,IACpE6K,EAAeI,SAEjBJ,EAAe7E,KAAKwE,IAEf,CACLF,QAASO,O,EAKfK,OAAS,SAAClL,GACR,EAAKO,UAAS,SAAAmK,GACZ,MAAO,CACLJ,QAASI,EAAcJ,QAAQa,QAAO,SAAAX,GAAM,OAAIA,EAAOxK,MAAQA,U,uDArCrE,WACE,IAAMU,EAAQD,KAAKC,MACf0K,EAAiB1K,EAAM0K,eAI3B,OAHKA,GAAkB1K,EAAM2K,YAC3BD,EAAc,UAAM1K,EAAMiI,UAAZ,YAAyBjI,EAAM2K,YAExCD,I,oBAoCT,WAAU,IAAD,OACD1K,EAAQD,KAAKC,MACX4J,EAAY7J,KAAKpB,MAAjBiL,QACFgB,EAAchB,EAAQjE,KAAI,SAACmE,EAAQe,GACvC,IAAM1B,EAAS2B,QAAQD,IAAUjB,EAAQ/F,OAAS,GAAKiG,EAAOQ,WACxDhL,EAAMwK,EAAOQ,UAAYR,EAAOQ,UAAYR,EAAOxK,IACnDoH,EA9EZ,WACE,IAAMqE,EAAO,GAAGC,MAAMC,KAAKC,UAAW,GACtC,OAAoB,IAAhBH,EAAKlH,OACAkH,EAAK,GAGP,WACL,IAAK,IAAII,EAAI,EAAGA,EAAIJ,EAAKlH,OAAQsH,IAC3BJ,EAAKI,IAAMJ,EAAKI,GAAGC,OACrBL,EAAKI,GAAGC,MAAMrL,KAAMmL,YAqENG,CAAsB,EAAKb,OAAOc,KAAK,EAAMxB,EAAOxK,KAAMwK,EAAOpD,SACjF,OAAQ,kBAAC,EAAD,eACNuB,UAAWjI,EAAMiI,WACb6B,EAFE,CAGNxK,IAAKA,EACL6J,OAAQA,EACRzC,QAASA,EACTtB,QAAS0E,EAAO1E,QAChBmG,UAAWvL,EAAMuL,YAEhBzB,EAAO0B,YAGZ,OACE,yBAAKrE,UAAS,UAAKnH,EAAMiI,UAAX,YAAwBjI,EAAMmH,WAAahI,MAAOa,EAAMb,OACpE,yBAAKgI,UAAWpH,KAAK0L,qBAAsBb,Q,GA1ExB3K,IAAMC,WAA3ByJ,EAEG+B,aAAe,CACpBzD,UAAW,kBACX0C,UAAW,QA2EfhB,EAAagC,YAAc,SAAiCC,EAAYC,GAAW,IAAD,EAC7CD,GAAc,GAAzCE,EADwE,EACxEA,aAAiB9L,EADuD,gCAE1E+L,EAAMC,SAASC,cAAc,OAC/BH,EACWA,IACRI,YAAYH,GAEjBC,SAASG,KAAKD,YAAYH,GAE5B,IAAIK,GAAS,EAoBbC,SAAgB,kBAAC,EAAD,iBAAkBrM,EAAlB,CAAyBsM,IAnBzC,SAAaC,GACPH,IAGJA,GAAS,EACTP,EAAS,CACP/B,OADO,SACA0C,GACLD,EAAa1C,IAAI2C,IAEnBC,aAJO,SAIMnN,GACXiN,EAAa/B,OAAOlL,IAEtBoN,UAAWH,EACXI,QARO,WASLN,yBAAgCN,GAChCA,EAAIa,WAAWC,YAAYd,WAIsBA,IAG1CpC,QCnITmD,EAAuB,GACvBC,EAAc,CAClBC,QAAS,UACTC,QAAS,UACTC,KAAM,OACNC,MAAO,WAGLC,EAAkB,IAClBC,EAAa,OACbC,EAAgB,OAChBC,EAAmB,cACnBC,EAAsB,KAqB1B,IAAMC,EAAoB,SAACC,GACzB,IAAIvO,EACJ,OAAQuO,GACN,IAAK,UACHvO,EAAQ,CACNwO,KAAM,EACNC,IAAKP,EACLQ,OAAQ,QAEV,MACF,IAAK,WACH1O,EAAQ,CACN2O,MAAO,EACPF,IAAKP,EACLQ,OAAQ,QAEV,MACF,IAAK,aACH1O,EAAQ,CACNwO,KAAM,EACNC,IAAK,OACLC,OAAQP,GAEV,MACF,QACEnO,EAAQ,CACN2O,MAAO,EACPF,IAAK,OACLC,OAAQP,GAId,OAAOnO,GAgFHwK,EAAe,CACnBnD,KA3Da,SAACxG,GACd,IAAM+N,EAAiB/N,EAAMiI,WAAa,kBACpCA,EAAS,UAAM8F,EAAN,WACTjF,OAA8BrJ,IAAnBO,EAAM8I,SAAyBsE,EAAkBpN,EAAM8I,SA4BpE3J,EAAQ,CAAE6O,WAAY,QACtBhO,EAAMR,OACRL,EAAQ,CAAE6O,WAAYjB,EAAY/M,EAAMR,OACxCL,EAAQa,EAAMb,MAAQ8O,OAAOC,OAAO/O,EAAOa,EAAMb,OAASA,GAE5D,IAAIgP,EAAUnO,EAAMmO,QAAUnO,EAAMmO,QAAUnO,EAAMR,KAAOQ,EAAMR,KAAO,GACpEgM,EACF,yBAAKrE,UAAS,UAAKc,EAAL,iBAAuBjI,EAAMR,OACzC,yBAAK2H,UAAS,UAAKc,EAAL,aACXkG,GAEH,yBAAKhH,UAAS,UAAKc,EAAL,iBAA+BjI,EAAMoO,aAClDpO,EAAMqO,IAAM,0BAAMlH,UAAS,UAAKc,EAAL,SAAuBjI,EAAMqO,KAAc,OA9D7C,SAACpG,GAAuD,IAA5CyF,EAA2C,uDAA/BH,EAAkB1B,EAAa,uCAC/EyC,EAAQ,UAAMrG,EAAN,YAAmByF,GAC7BZ,EAAqBwB,GACvBzC,EAASiB,EAAqBwB,IAIhCC,EAAgB5C,YAAY,CAC1B1D,YACAd,UAAWuG,EAAS,UAAMzF,EAAN,YAAmByF,GAAc,GACrDvO,MAAOsO,EAAkBC,GACzB5B,aAAc0B,EACdjC,UAAW,yBAAKiD,IAAI,yBAAyBC,IAAI,YAChD,SAAClC,GACFO,EAAqBwB,GAAY/B,EACjCV,EAASU,MAkDXmC,CAAwBX,EAAgB/N,EAAM0N,WAAW,SAAAnB,GACvDA,EAAazC,OAAO,CAClB0B,QAASA,EACT1C,WACA6F,UAAU,EAEVrP,IAAKU,EAAMV,IACXH,MAAOA,GAAS,GAChBgI,UAAWnH,EAAMmH,gBAMrBwB,MAFmB,SAEbrJ,GACJ2O,OAAOW,KAAK9B,GACT+B,SAAQ,SAAAP,GAAQ,OAAIxB,EAAqBwB,GAAU7B,aAAanN,OAErEc,OAzIF,SAA+BD,GAAU,IAC/B2I,EAAmD3I,EAAnD2I,SAAU+E,EAAyC1N,EAAzC0N,OAAQH,EAAiCvN,EAAjCuN,UAAWE,EAAsBzN,EAAtByN,IAAK9B,EAAiB3L,EAAjB2L,kBACzBrM,IAAbqJ,IACFsE,EAAkBtE,QAEFrJ,IAAdiO,IACFH,EAAmBG,QAENjO,IAAXoO,IACFP,EAAgBO,QAENpO,IAARmO,IACFP,EAAaO,QAEMnO,IAAjBqM,IACF0B,EAAsB1B,IA2HxBa,QAPmB,WAQjBsB,OAAOW,KAAK9B,GAAsB+B,SAAQ,SAAAP,GACxCxB,EAAqBwB,GAAU3B,iBACxBG,EAAqBwB,QAKlC,CAAC,UAAW,OAAQ,UAAW,SAASO,SAAQ,SAACrP,GAC/CmK,EAAanK,GAAQ,SAACQ,GAAD,OAAW2J,EAAanD,KAAb,2BAC3BxG,GAD2B,IAE9BR,cAIWmK,QCrKTmF,EAAW,CACb,IAAO,eACP,IAAO,mBACP,IAAO,gBAoCLC,EAAc,GAGdC,GAAc3M,IAAM2M,YACtBC,GAAU,GAGd5M,IAAM6M,SAASC,QAAQC,KAAK,gBAAkB,iCAE9C/M,IAAMgN,aAAaC,QAAQC,KAAI,SAACnP,GAC5B,IAAMkP,EAAU5N,KAAK8N,UAAUpP,EAAO8F,KAAOxE,KAAK8N,UAAUpP,EAAOqC,MAYnE,OAVArC,EAAOqP,YAAc,IAAIT,IAAY,SAACU,GAClCT,GAAQK,GAAWI,KAGnBX,EAAYY,SAASL,GACrBL,GAAQK,GAAS,yBAEjBP,EAAYzJ,KAAKgK,GAGdlP,KACR,SAAC+M,GACA,OAAOyC,QAAQC,OAAO1C,MAG1B9K,IAAMgN,aAAaS,SAASP,KAAI,SAACO,GAC7B,IAAMR,EAAU5N,KAAK8N,UAAUM,EAAS1P,OAAO8F,KAAOxE,KAAK8N,UAAUM,EAAS1P,OAAOqC,MAErF,OADAsM,EAAY1E,OAAO0E,EAAYgB,WAAU,SAAAC,GAAI,OAAIA,IAASV,KAAU,GAC7DQ,KACR,SAAC3C,GACA,GAAI9K,IAAM4N,SAAS9C,GACf,MAAM,IAAI9K,IAAM6N,OAAO,kBAEvB,IAAMJ,EAAW3C,EAAM2C,SACjBR,EAAU5N,KAAK8N,UAAUM,EAAS1P,OAAO8F,KAAOxE,KAAK8N,UAAUM,EAAS1P,OAAOqC,MAGzF,OAFIsM,EAAY1E,OAAO0E,EAAYgB,WAAU,SAAAC,GAAI,OAAIA,IAASV,KAAU,GAEjEM,QAAQC,OAAO1C,MAG1B,IAAMmC,GAAU,SAACpJ,EAAKiK,EAAQC,EAAQC,GAAtB,OAAmCvO,IAAYwO,UAAU/N,MAAK,SAAArB,GAK1E,OAJIA,IAEAmB,IAAM6M,SAASC,QAAf,cAA+B,UAAYjO,EAAKqP,cAE7CnO,IAAWG,MAAK,SAACiO,GAEpB,OADAnO,IAAM6M,SAASsB,QAAUA,EAClBnO,IAAM8N,GAAQjK,EAAKkK,EAAQnC,OAAOC,OAAO,GAAImC,IAAWI,OAAM,SAAAtD,GAGjE,OArFQ,SAACuD,EAAD,GAA6B,IAAlBC,EAAiB,EAAjBA,WACvB9P,OAAOS,SAASsP,KAAKjB,SAAS,mBAAqB9O,OAAOS,SAASsP,KAAKjB,SAAS,qBAGhFgB,GAAiC,MAAnBE,OAAOH,IACtB/G,EAAawD,MAAM,CACfgB,QAAS,QACTC,YAAaU,EAAS4B,IAAW,sBAI1B,MAAXA,GACA1H,YAAW,WACPnI,OAAOS,SAAS+F,OAASxG,OAAOS,SAASsP,KACzC/P,OAAOS,SAAW,iBAClBzC,aAAauC,UACd,KAGQ,MAAXsP,GACA1H,YAAW,WAEPnK,aAAauC,QACbP,OAAOS,SAAS+F,OAASxG,OAAOS,SAASsP,KACzC/P,OAAOS,SAAW,mBACnB,MA2DCwP,CAAY3D,GAASA,EAAM2C,UAAY3C,EAAM2C,SAASY,OAAQL,GACvDT,QAAQC,OAAO1C,aAyBnB4D,GAnBI,CACf3B,KAAM,SAAClJ,EAAKkK,GAA2B,IAAnBC,EAAkB,uDAAP,GAC3B,OAAOf,GAAQpJ,EAAK,OAAQkK,EAAQC,IAGxC/N,IAAK,SAAC4D,EAAKkK,GAA2B,IAAnBC,EAAkB,uDAAP,GAC1B,OAAOf,GAAQpJ,EAAK,MAAOkK,EAAQC,IAGvCW,OAAQ,SAAC9K,EAAKkK,GAA2B,IAAnBC,EAAkB,uDAAP,GAC7B,OAAOf,GAAQpJ,EAAK,SAAUkK,EAAQC,IAG1CY,IAAK,SAAC/K,EAAKkK,GAA2B,IAAnBC,EAAkB,uDAAP,GAC1B,OAAOf,GAAQpJ,EAAK,MAAOkK,EAAQC,KClH9Ba,GAAU,uCAAG,WAAO/E,EAAMgF,GAAb,SAAAC,EAAA,sEACTL,GAAW3B,KAAK,oBAAqBjD,EAAMgF,GADlC,mFAAH,wDAIVE,GAAW,uCAAG,WAAOlF,EAAMgF,GAAb,SAAAC,EAAA,sEACVL,GAAW3B,KAAK,qBAAsBjD,EAAMgF,GADlC,mFAAH,wDAIXG,GAAW,uCAAG,WAAOC,EAAQpF,EAAMgF,GAArB,SAAAC,EAAA,sEACVL,GAAW3B,KAAX,yBAAkCmC,EAAlC,gBAAwDpF,EAAMgF,GADpD,mFAAH,0DAQXK,GAAoB,SAAAD,GAAM,OAAIR,GAAWzO,IAAX,yBAAiCiP,EAAjC,cAAqD,GAAI,CAAEZ,YAAY,K,uCCL5Gc,GAAW,CACbC,YAAa,cACbC,SAAU,WACVC,KAAM,QAGJC,GAAc,SAAC,GAA2C,IAAzCC,EAAwC,EAAxCA,mBAAoBC,EAAoB,EAApBA,cAAoB,EACrBC,mBAAS,GADY,mBACpDC,EADoD,KACvCC,EADuC,OAEzBF,oBAAS,GAFgB,mBAEpDG,EAFoD,KAEzCC,EAFyC,KAIrDC,EAAO,WACT,IAAIF,EAAJ,CACA,IAAMG,EAAYL,IAAgBH,EAAmBjO,OAAS,EAAI,EAAIoO,EAAc,EACpFC,EAAeI,KAGbC,EAAW,WACb,IAAIJ,EAAJ,CACA,IAAMG,EAA4B,IAAhBL,EAAoBH,EAAmBjO,OAAS,EAAIoO,EAAc,EACpFC,EAAeI,KAGbE,EAAY,SAACC,GACXN,GACJD,EAAeO,IAEbC,EAAkB,SAAA1C,GAAI,OAAI,yBAAK7I,UAAWwL,KAAOC,aACnD,yBAAKzL,UAAW0L,KAAGF,KAAOG,eAAgB,YAAa3T,MAAO,CAAE4T,gBAAgB,OAAD,OAAS/C,EAAKgD,SAAd,QAC/E,yBAAK7L,UAAWwL,KAAOM,aACnB,uBAAGjM,MAAOgJ,EAAKhJ,OAAQgJ,EAAKhJ,OAC5B,2BAAIgJ,EAAKkD,cACT,uBAAGC,OAAO,SAASC,IAAI,sBAAsBxC,KAAMZ,EAAK9J,KACpD,0BAAMiB,UAAWwL,KAAOU,aAAxB,kBAINC,EAASxB,EAAmBnM,KAAI,SAACqK,GACnC,OACI,kBAACuD,EAAA,EAAD,CACIpM,UAAWwL,KAAOa,SAClBC,UAAW,kBAAMrB,GAAa,IAC9BpK,SAAU,kBAAMoK,GAAa,IAC7B9S,IAAG,kBAAa0Q,EAAK5J,KAErB,kBAACsM,EAAqB1C,OAoBlC,OACI+B,EACI,kBAAC,IAAD,CAAMzK,KAAK,QAjBQwK,EAAmBjO,OAAS,EACnD,kBAAC8N,EAAA,EAAD,CACIM,YAAaA,EACbI,KAAMA,EACNE,SAAUA,EACVmB,KAAM,WACNC,SAAU,KAEV,kBAACC,EAAA,EAAD,CAAoBC,MAAO/B,EAAoBG,YAAaA,EAAa6B,eAAgBtB,IACxFc,EACD,kBAACS,EAAA,EAAD,CAAiBC,UAAU,OAAOC,cAAc,WAAWH,eAAgBvB,IAC3E,kBAACwB,EAAA,EAAD,CAAiBC,UAAU,OAAOC,cAAc,OAAOH,eAAgBzB,KAEzE,kBAACK,EAAqBZ,EAAmB,KAO7CoC,GAAe,SAAC/I,GAClB,IAAMgJ,EAAa,wCACbpB,EAAkB5H,EAAEiJ,aAAe,CAAErB,gBAAgB,OAAD,OAAS5H,EAAEiJ,aAAX,MAA8B,CAAErB,gBAAiB,+CAE3G,OACI,4BAAQ5L,UAAWwL,KAAO0B,cACtB,uBAAGlN,UAAWwL,KAAO2B,gBAAiBnV,MAAO4T,EAAiBnC,KAAMzF,EAAEhF,UAAWgN,OAAO,SAASC,IAAI,uBACjG,yBACI3E,IAAI,eACJD,IAAKrD,EAAEoJ,gBAAkBJ,EACzBK,QAAS,SAAC/L,GAAQA,EAAE0K,OAAOqB,QAAU,KAAM/L,EAAE0K,OAAO3E,IAAM2F,MAElE,oCACI,6BACI,uBAAGnN,MAAOmE,EAAEsJ,UAAYtJ,EAAEhG,MAAOgG,EAAEsJ,UAAYtJ,EAAEhG,MACjD,uBAAGgC,UAAWwL,KAAO+B,mBAAoBvV,MAAO,CAAEwV,QAAS,SAA3D,iEAIJ,0BAAMxN,UAAWwL,KAAOiC,mBAAoBzV,MAAO,CAAEwV,QAAS,SAA9D,qBAMVE,GAAmB,SAAC,GAAyC,IAAD,IAAtClQ,iBAAsC,MAA1B,GAA0B,EAAtBmQ,EAAsB,EAAtBA,gBAElCC,EAAoBC,iBAAO,MAF6B,EAGxBhD,mBAAS,GAHe,mBAGvDC,EAHuD,KAG1CC,EAH0C,OAI9BF,mBAAS,GAJqB,mBAIvDiD,EAJuD,KAI7CC,EAJ6C,OAKpBlD,mBAAS,IALW,mBAKvDtM,EALuD,KAKxCyP,EALwC,KAOxDC,EAA0BC,uBAAY,WACxC,IAAM3P,EAAgB,GACtBf,EAAUkK,SAAQ,SAAC1D,EAAGN,GAClB,IAAIyK,EAASC,SAAS1K,EAAQoK,GAC9BvP,EAAc4P,GAAU5P,EAAc4P,GAAd,sBAA4B5P,EAAc4P,IAA1C,CAAmDnK,IAAK,CAACA,MAErFgK,EAAiBzP,KAClB,CAACuP,EAAUtQ,IAER6Q,EAAe,SAAC3K,GACdA,IAAUoD,OAAOW,KAAKlJ,GAAe7B,QAGzCqO,EAAerH,IAGnB4K,qBAAU,WAGN,OAFA5U,OAAO6U,iBAAiB,SAAUC,GAClCA,IACO,WACH9U,OAAO+U,oBAAoB,SAAUD,MAE1C,IAEH,IAAMA,EAAiB,WACnB,GAAKZ,EAAkBc,QAGvB,IACI,IAAIC,EAAcjV,OAAOkV,WACrBC,EAAyBjB,EAAkBc,QAAQI,YAEnDhB,EAAWM,SAASS,GADAF,EAAc,IAAM,IAAM,MAElDZ,EAAYD,GAAY,EAAI,EAAIA,GAClC,MAAO9H,GACL+H,EAAY,KAQpB,OALAO,qBAAU,WACNL,IACAlD,EAAe,KAChB,CAAC+C,EAAUG,IAGV,yBAAK9I,IAAKyI,EAAmB5N,UAAWwL,KAAOuD,kBAC3C,uBAAG/O,UAAWwL,KAAOwD,WAArB,iBACErB,IACGnQ,EAAUd,OACP,oCACI,yBAAKsD,UAAWwL,KAAOyD,uBAClB1Q,EAAcuM,IAAgBvM,EAAcuM,GAAatM,KAAI,SAACwF,EAAGN,GAAJ,OAAe,kBAAC,GAAD,eAAcvL,IAAKuL,GAAWM,QAG3G8C,OAAOW,KAAKlJ,GAAe7B,OAAS,GACpC,yBAAKsD,UAAWwL,KAAO0D,YAClBpI,OAAOW,KAAKlJ,GAAeC,KAAI,SAACwF,EAAGN,GAAJ,OAAe,0BAAMvL,IAAKuL,EAAOzF,QAAS,SAACqD,GAAD,OAAO+M,EAAa3K,IAAW1D,UAAW0L,KAAG,eAAGF,KAAO2D,OAASrE,IAAgBpH,KAAWA,EAAQ,MAC7K,0BAAM1D,UAAW0L,KAAG,eAAGF,KAAO4D,SAAWtE,IAAgBhE,OAAOW,KAAKlJ,GAAe7B,OAAS,IAAMuB,QAAS,SAAAqD,GAAC,OAAI+M,EAAavD,EAAc,QAItJ,uBAAG9K,UAAWwL,KAAOxE,SAArB,wIAMhBqI,GAAY,SAAArL,GACd,OACI,4BAAQhE,UAAWwL,KAAO8D,WACtB,uBAAGtP,UAAWwL,KAAO+D,aAAcvD,OAAO,SAASC,IAAI,sBAAsBxC,KAAMzF,EAAEjF,KACjF,yBAAKiB,UAAWwL,KAAOgE,SAAUxX,MAAO,CAAE4T,gBAAgB,OAAD,OAAS5H,EAAE6H,SAAX,SAE7D,oCACI,2BAAI7H,EAAEnE,UAKhB4P,GAAgB,SAAC,GAAwC,IAAtCC,EAAqC,EAArCA,gBACrB,OAD0D,EAApB9E,eAElC,+BACO8E,EAAgBhT,QAAU,uBAAGsD,UAAWwL,KAAOwD,WAArB,uBAC7B,yBAAKhP,UAAWwL,KAAOmE,oBAClBD,EAAgBlR,KAAI,SAACwF,EAAGN,GAAJ,OAAc,kBAAC,GAAD,iBAAeM,EAAf,CAAkB7L,IAAKuL,WAsE3DkM,GAlEK,SAAC,GAA+D,IAAD,IAA5DpS,iBAA4D,MAAhD,GAAgD,MAA5CqS,gBAA4C,MAAjC,GAAiC,MAA7BlC,uBAA6B,SACvE5T,EAAS+V,qBAAWzP,KAApBtG,KADuE,EAEjC8Q,mBAAS,IAFwB,mBAExE6E,EAFwE,KAEvDK,EAFuD,OAG3BlF,mBAAS,IAHkB,mBAGxEF,EAHwE,KAGpDqF,EAHoD,OAIvCnF,mBAAS,IAJ8B,mBAIxEoF,EAJwE,KAI5DC,EAJ4D,OAKrCrF,oBAAS,GAL4B,mBAKxED,EALwE,KAKzDuF,EALyD,KAsC/E,OAhBA7B,qBAAU,WD3MgB,IAAC8B,EAAKpG,ECuN5B,OAXIjQ,EAAKU,SD3MNmP,GAAWzO,IAAX,wBAAwCiV,EAAKpG,GC4M3B5O,MAAK,YAAe,IAC7BiV,EAD4B,EAAX/U,KACNgV,MAAK,SAACrG,EAAGsG,GAAJ,OAAWtG,EAAEuG,MAAQD,EAAEC,SAC3C1J,OAAO2J,OAAOnG,IAAU5C,SAAQ,SAAArP,IApBrB,SAACA,EAAMiD,GAC1B,IAAI+U,EAAM/U,EAAKgI,QAAO,SAAAU,GAAC,OAAIA,EAAE0M,WAAarY,KAC1C,OAAQA,GACJ,KAAKiS,GAASC,YACVwF,EAAmBM,GACnB,MACJ,KAAK/F,GAASE,SACVwF,EAAsBK,GACtB,MACJ,KAAK/F,GAASG,KACVyF,EAAkBG,IAWdM,CAAetY,EAAMgY,MAEzBF,GAAiB,MAClB7G,OAAM,WACL6G,GAAiB,MAGlB,eAER,CAACpW,IAGA,yBAAKiG,UAAWwL,KAAOoF,WACnB,4BAAQ5Q,UAAWwL,KAAOqF,QACtB,gCACI,yBAAK7Q,UAAWwL,KAAOsF,IAAKzJ,IAAI,mCAAmCC,IAAI,SACvE,yBAAKtH,UAAWwL,KAAOuF,MAAO1J,IAAI,wCAAwCC,IAAI,UAElF,8BACMsD,GACE,wBAAI5K,UAAWwL,KAAOwF,IACjBf,EAAWzR,KAAI,SAAAwF,GAAC,OAAK,wBAAI7L,IAAK6L,EAAE/E,IAAI,uBAAGwK,KAAMzF,EAAEjF,IAAKiN,OAAO,SAASC,IAAI,uBAAuBjI,EAAEnE,cAKlH,uBAAGG,UAAWwL,KAAO3L,OAArB,wBAA8CgQ,EAA9C,MACA,yBAAK7P,UAAWwL,KAAOnH,SACnB,yBAAKrE,UAAWwL,KAAOyF,SACnB,kBAAC,GAAD,CAAkBzT,UAAWA,EAAWmQ,gBAAiBA,IACzD,kBAAC,GAAD,CAAe+B,gBAAiBA,EAAiB9E,cAAeA,KAEpE,yBAAK5K,UAAWwL,KAAO0F,UACnB,kBAAC,GAAD,CAAavG,mBAAoBA,EAAoBC,cAAeA,QC/PlFuG,G,4JACF,WAAU,IAAD,EACsCvY,KAAKwE,QAA1CY,EADD,EACCA,KAAMR,EADP,EACOA,UAAWmQ,EADlB,EACkBA,gBASvB,OARAnQ,EAAYA,EAAUgB,KAAI,SAAAwF,GACtB,IAAIrF,EAASqF,EAAErF,QAAUqF,EAAErF,OAAO,GAC9BE,EAAkBmF,EAAEnF,gBACpBuO,EAAiBzO,GAAUA,EAAOI,IAAMJ,EAAOI,IAAMF,EAEzD,OADAmF,EAAEoJ,eAAiBA,EACZpJ,KAIP,kBAAC,IAAMoN,SAAP,KACI,kBAAC,GAAD,CAAa5T,UAAWA,EAAWqS,SAAU7R,EAAM2P,gBAAiBA,S,GAbjE5U,aAkBnBoY,GAAK/Q,YAAcC,IACJC,mBAAWhJ,YAAiB6Z,K,uCCN5BE,G,4JAdX,WAAU,IAAD,EACmCzY,KAAKC,MAArCsW,EADH,EACGA,OAAQmC,EADX,EACWA,SAAUC,EADrB,EACqBA,UAC1B,OACI,yBAAKvR,UAAWwL,KAAOgG,cACnB,yBAAKxR,UAAWwL,KAAOiG,UAClBtC,GAAU,0BAAMnP,UAAWwL,KAAO2D,UAEtC,yBAAKnP,UAAWwL,KAAOkG,KAAM1Z,MAAO,CAAE2Z,MAAM,GAAD,OAAKL,EAAWC,EAAY,EAA5B,SAC3C3Y,KAAKC,MAAMsI,UAAY,yBAAKnB,UAAWwL,KAAOoG,UAAWhZ,KAAKC,MAAMsI,e,GAV9DpI,aC6CR8Y,G,4MAzCXC,WAAa,WAIT,IAJgB,IAAD,EACuC,EAAKjZ,MAAnDkZ,EADO,EACPA,QAASC,EADF,EACEA,UAAWC,EADb,EACaA,WACtBV,GAFS,EACyBW,UACT,GAAKH,IAAYA,EAAU,GACtDI,EAAQ,GACHnO,EAAI,EAAGA,EAAI+N,EAAS/N,IAAK,CAC9B,IAAM6E,EAAO,kBAAC,GAAD,CAAU1Q,IAAK6L,EAAGmL,OAAuB,QAAf8C,GAA8BjO,IAAMiO,EAAa,EAAGX,SAAUtN,IAAM+N,EAAU,EAAGR,UAAWA,GAC9HS,GAAaA,EAAUhO,IAE5BmO,EAAMhU,KAAK0K,GAEf,OACI,yBAAK7I,UAAWwL,KAAO4G,UAClBD,I,4CAKb,WAAU,IAAD,EACiCvZ,KAAKC,MAAnCwZ,EADH,EACGA,UAAWC,EADd,EACcA,eACnB,OACI,kBAAC,IAAMlB,SAAP,KACKiB,GAAa,yBAAKrS,UAAWwL,KAAO6G,WAAYA,GAChDzZ,KAAKkZ,aACLQ,GAAkB,yBAAKtS,UAAWwL,KAAO8G,gBAAiBA,Q,GAzBxDvZ,a,UCEbwZ,G,4JACF,WACI,IAAMtV,EAAYvF,aAAaC,QAAQ,iBACjCqa,EAAY,CACd,oDACA,yDACA,yDACA,qDACJ,OACI,kBAAC,IAAMZ,SAAP,KACI,yBAAKpR,UAAU,eACX,wCACA,uBAAGA,UAAWwL,KAAOgH,MAArB,yCAEJ,yBAAKxS,UAAU,eACX,uBAAGA,UAAWwL,KAAOzF,MAArB,+BACA,uBAAG/F,UAAWwL,KAAOzF,MAArB,gEACA,uBAAG/F,UAAW0L,KAAGF,KAAOzF,KAAMyF,KAAOgH,OAArC,kJAGJ,yBAAKxS,UAAWwL,KAAO4G,UACnB,kBAAC,GAAD,CAAMF,UAAW,IAAKH,QAAS,EAAGC,UAAWA,KAEjD,yBAAKhS,UAAWwL,KAAOiH,cACnB,kBAACC,GAAA,EAAD,CACIra,KAAK,SACLJ,MAAM,UACNkI,KAAK,KACLlC,QAASrF,KAAKC,MAAM8Z,cAJxB,gBASJ,yBAAK3S,UAAU,eACX,uBAAGA,UAAWwL,KAAOoH,QAArB,2BACI,kBAAC,IAAD,CAAM3S,GAAI,CACN7F,SAAU,iBACV8F,OAAQjD,IAFZ,mB,GAnCIlE,aA+CbuH,eAAWiS,I,mEClDbM,I,MAAmB,SAACC,GAC/B,IAAIC,EAAe,iBACjBC,EAAQ,QACRC,EAAQ,QACRC,EAAS,QACTC,EAAU,yCAERC,GAAQ,EACRpM,EAAU,GACd,OAAI+L,EAAaM,KAAKP,IACpBE,EAAMK,KAAKP,IACXG,EAAMI,KAAKP,IACXI,EAAOG,KAAKP,IACZK,EAAQE,KAAKP,KAKbM,GAAQ,EACHL,EAAaM,KAAKP,GAGbE,EAAMK,KAAKP,GAGXG,EAAMI,KAAKP,GAGXI,EAAOG,KAAKP,GAGZK,EAAQE,KAAKP,KACrB9L,EAAU,kDAHVA,EAAU,yCAHVA,EAAU,oDAHVA,EAAU,qDAHVA,EAAU,gEALL,CAAEoM,QAAOpM,aAuBPsM,GAAgB,SAACC,GAC5B,IACIH,EADK,0IACMC,KAAKG,OAAOD,GAAOjX,eAElC,MAAO,CAAE8W,QAAOpM,QADFoM,EAAQ,GAAK,8BAIhBK,GAAsB,SAACC,GAA6C,IAAxCC,EAAuC,wDAArBC,EAAqB,uDAAf,EAAGC,EAAY,uDAAN,EACxEC,EAAQ,IACR,IAAIC,GAAU,EACVC,EAAe,GAGnB,OADAN,EAAMA,EAAIO,OACNN,GAA2B,IAAfD,EAAIhX,OAGX,CAAE0W,MAFTW,GAAU,EAEeC,aADzBA,EAAe9c,gBAAaf,eAI1Byd,EAAM,GAAKF,EAAIhX,OAASkX,EAGnB,CAAER,MAFTW,GAAU,EAEeC,aADzBA,EAAe9c,gBAAagB,aAAahB,gBAAab,aAAcud,IAIlEC,EAAM,GAAKH,EAAIhX,OAASmX,EAGnB,CAAET,MAFTW,GAAU,EAEeC,aADzBA,EAAe9c,gBAAagB,aAAahB,gBAAad,aAAcyd,IAI/D,CAAET,MAAOW,EAASC,aAAcA,IAyP5BE,GAAsB,SAACC,GAClC,IAAIf,GAAQ,EACRpM,EAAU,GAGd,MADmB,kCACJqM,KAAKc,GAGX,CAAEf,MAFTA,GAAQ,EAEQpM,QADhBA,EAAU,oFACe3O,KAAM,YALrB,yGAOHgb,KAAKc,KACZf,GAAQ,EACRpM,EAAU,6BAEL,CAAEoM,QAAOpM,aC9ULoN,GAAqB,SAACb,EAAOvJ,GACtC,OAAOJ,GAAWzO,IAAX,iCAAyCoY,GAAS,GAAIvJ,IAIpDqK,GAA4B,SAACd,EAAOvJ,GAC7C,OAAOJ,GAAWzO,IAAX,yCAAiDoY,GAAS,GAAIvJ,IAG5DsK,GAAuB,SAACtW,EAAMgM,GACvC,OAAOJ,GAAWzO,IAAX,mCAA2C6C,GAAQ,GAAIgM,IAGrDuK,GAA8B,SAACvK,GACxC,OAAOJ,GAAWzO,IAAI,wBAAyB,GAAI6O,IAG1CwK,GAAsB,SAACxK,GAChC,OAAOJ,GAAWzO,IAAI,mBAAoB,GAAI6O,IAGrCyK,GAAoB,SAACC,EAAW1K,GACzC,OAAOJ,GAAWzO,IAAX,mBAA2BuZ,EAA3B,UAA8C,GAAI1K,IAOhD2K,GAAgB,SAAC3P,EAAMgF,GAChC,OAAOJ,GAAW3B,KAAK,iBAAkBjD,EAAMgF,IAOtC4K,GAAsB,SAAC5P,EAAMgF,GACtC,OAAOJ,GAAWE,IAAI,gCAAiC9E,EAAMgF,IAGpD6K,GAAwB,SAAChF,EAAU7F,GAC5C,OAAOJ,GAAW3B,KAAX,yBAAkC4H,GAAY,GAAI7F,IAGhD8K,GAA+B,SAACjF,EAAUkF,EAAaC,EAAiBhL,GACjF,OAAOJ,GAAW3B,KAAX,oCAA6C4H,EAA7C,YAAyDkF,EAAzD,4BAAwFC,GAAmB,GAAIhL,IAG7GiL,GAA+B,SAAC1B,EAAOvJ,GAChD,OAAOJ,GAAW3B,KAAX,iCAA0CsL,GAAS,GAAIvJ,IAGrDkL,GAAiC,SAAC3B,EAAOvJ,GAClD,OAAOJ,GAAWzO,IAAX,kCAA0CoY,GAAS,GAAIvJ,IAGrDmL,GAA2C,SAACC,EAAapQ,EAAMgF,GACxE,OAAOJ,GAAW3B,KAAX,mDAA4DmN,GAAepQ,EAAMgF,IC3DtFqL,GAAS,CACbxP,QAAS,iCACTE,KAAM,mBAUOuP,GARD,SAACzc,GAAD,OACZ,yBAAKmH,UAAS,qCAAgCnH,EAAMmH,YAClD,6BAAK,yBAAKqH,IAAKgO,GAAOxc,EAAMR,MAAOiP,IAAI,SACvC,yBAAKtH,UAAU,kBACb,yBAAKA,UAAU,YAAYhI,MAAOa,EAAM0c,WAAY1c,EAAMmO,YCDjDwO,GALM,GCafC,G,4MACFje,MAAQ,CACJke,qBAAsB,GACtBC,WAAW,EACXpC,MAAOiC,GAAajC,OAAS,GAC7BD,iBAAgB,EAAKza,MAAM+c,qBAA8Dtd,IAA5C,EAAKO,MAAM+c,eAAetC,gBAA+B,EAAKza,MAAM+c,eAAetC,cAChIuC,iBAAkB,GAClBC,wBAAwB,EACxBC,aAAcP,GAAaO,cAAgB,GAC3CC,wBAAuB,EAAKnd,MAAM+c,qBAAqEtd,IAAnD,EAAKO,MAAM+c,eAAeI,uBAAsC,EAAKnd,MAAM+c,eAAeI,qBAC9IC,wBAAyB,GACzBC,SAAUV,GAAaW,cAAgB,GACvCC,kBAAkB,EAClBC,iBAAkB,GAClBC,2BAA2B,EAC3BC,iBAAkBf,GAAagB,sBAAwB,KACvDC,UAAWjB,GAAaiB,WAAa,GACrCC,mBAAmB,EACnBC,SAAUnB,GAAamB,UAAY,GACnCC,kBAAkB,EAClBC,SAAU,EACVC,yBAAyB,EACzBC,mBAAmB,EACnBC,mBAAkB,EAAKne,MAAM+c,qBAAgEtd,IAA9C,EAAKO,MAAM+c,eAAeoB,kBAAiC,EAAKne,MAAM+c,eAAeoB,gBACpIC,eAAiB,EAAKpe,MAAM+c,gBAAkB,EAAK/c,MAAM+c,eAAeqB,eAAkB,EAAKpe,MAAM+c,eAAeqB,eAAiB,GACrIC,kBAAiB,EAAKre,MAAM+c,qBAA+Dtd,IAA7C,EAAKO,MAAM+c,eAAesB,iBAAgC,EAAKre,MAAM+c,eAAesB,eAClIC,gBAAgB,EAChBC,6BAA6B,EAC7BC,gBAAiB,EAAKxe,MAAM+c,qBAA+Dtd,IAA7C,EAAKO,MAAM+c,eAAeyB,gBAAgC,EAAKxe,MAAM+c,eAAeyB,eAClIC,qBAAsB,EAAKze,MAAM+c,qBAAoEtd,IAAlD,EAAKO,MAAM+c,eAAe0B,qBAAqC,EAAKze,MAAM+c,eAAe0B,qB,EAQhJ/C,4B,sBAA8B,4BAAAtK,EAAA,+EAEJsK,GAA4B,CAAE/K,YAAY,IAFtC,QAEhBnO,EAFgB,SAGXA,EAAIC,MACX,EAAK5C,SAAS,CAAEgd,qBAAsBra,EAAIC,KAAMyb,mBAAmB,IAJjD,gDAOtB,EAAKre,SAAS,CAAEqe,mBAAmB,IAPb,yD,EAY9BQ,UAAY,YACJ/B,GAAajC,OAAW,EAAK1a,MAAM+c,qBAAgEtd,IAA9C,EAAKO,MAAM+c,eAAeoB,iBAC/E,EAAK1D,cAAckC,GAAajC,OAEhCiC,GAAaW,cACb,EAAKqB,cAAchC,GAAaW,e,EAKxCsB,OAAS,WACL,GAAM,EAAKjgB,MAAM8b,eAAiB,EAAK9b,MAAM4e,mBAAqB,EAAK5e,MAAMwf,gBAA7E,CAIA,GAAI,EAAKxf,MAAM8f,oBAGX,OAFA,EAAKI,uBACL,EAAK7e,MAAM8e,aAAa,EAAKngB,MAAMqf,UAGvC,EAAKne,SAAS,CAAE2e,gBAAgB,IAChC,EAAKO,+BAA+B,EAAKpgB,MAAM+b,S,EAGnDsE,cAAgB,SAACvW,GACb,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAE6a,MAAOY,EAAO0C,SAAU,EAAGvD,eAAe,IAAS,WAC/Da,GAAS,EAAKb,cAAca,O,EAKpCb,cAAgBwE,qBAAS,SAAC3D,GACtB,IAAM4D,EAAczE,GAAca,GAC9B6D,EAAO,yBAAKhY,UAAW,kBAAmBmU,GAAS4D,EAAY/Q,SACnE,EAAKtO,SAAS,CAAEmd,iBAAkBmC,EAAK1E,eAAe,EAAOwC,wBAAyBiC,EAAY3E,OAAlG,sBAA2G,8BAAAnJ,EAAA,0DACnG8N,EAAY3E,MADuF,wBAEhG,EAAK5b,MAAMue,aAAa9B,QACvB,EAAKgE,kBAAkB9D,EAAM,EAAK3c,MAAMue,cAHuD,SAKhE,EAAKmC,uBAAuB/D,GALoC,kCAO/F6D,EAAO,kBAAC,GAAD,CAAO3f,KAAK,OAAO2O,QAAS,+LACnC,EAAKtO,SAAS,CAAE4a,eAAe,EAAMuC,iBAAkBmC,EAAKnB,SAAU,EAAGf,wBAAwB,EAAOwB,qBAAqB,IAR9B,+BAU/F,EAAK5e,SAAS,CAAEoe,yBAAyB,EAAMQ,qBAAqB,IAV2B,UAW3E,EAAKa,gBAAgBhE,GAXsD,QAWzFf,EAXyF,OAY/F,EAAK1a,SAAS,CAAEoe,yBAAyB,IACpC1D,EAQD,EAAK1a,SAAS,CAAE4a,eAAe,EAAMwC,wBAAwB,KAPzD7Y,EAAYvF,aAAaC,QAAQ,iBACrCqgB,EAAO,kBAAC,GAAD,CAAO3f,KAAK,UAAU2O,QAAU,iGAA4D,kBAAC,IAAD,CAAM/G,GAAI,CACzG7F,SAAU,iBACV8F,OAAQjD,IAFuF,oBAInG,EAAKvE,SAAS,CAAE4a,eAAe,EAAOuC,iBAAkBmC,EAAKlC,wBAAwB,KAnBM,+CA6B5G,K,EAEHqC,gB,uCAAkB,WAAOhE,GAAP,eAAAlK,EAAA,+EAEMmK,GAAmBD,EAAO,CAAE3K,YAAY,IAF9C,YAENnO,EAFM,SAGgB,MAAfA,EAAIkO,OAHL,0CAIC,GAJD,iCAMC,GAND,mFASH,GATG,0D,wDAclBqO,+B,uCAAiC,WAAOzD,GAAP,eAAAlK,EAAA,+EAETiL,GAA+Bf,EAAO,CAAE3K,YAAY,IAF3C,QAErBnO,EAFqB,SAGC,MAAfA,EAAIkO,OACX,EAAK7Q,SAAS,CAAEse,iBAAiB,IAAQ,WAAQ,EAAKU,qBAEtD,EAAKhf,SAAS,CAAEse,iBAAiB,IAAS,WAAQ,EAAKoB,cANlC,gDASrB,KAAIzP,UAAoC,MAAxB,KAAIA,SAASY,OAC7B,EAAK7Q,SAAS,CAAEse,iBAAiB,IAAS,WAAQ,EAAKoB,cAEvD,EAAK1f,SAAS,CAAEse,iBAAiB,IAAQ,WAAQ,EAAKU,qBAZjC,yD,wDAkBjCW,gBAAkB,SAAC/W,GACf,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAEqd,aAAc5B,IAC9B,IAAM4D,EAAczE,GAAca,EAAMF,QACxC,GAAI8D,EAAY3E,MAIZ,EAAK1a,SAAS,CAACsd,sBAAqB,EAAKC,wBAAwB,KAAI,WAC9D9B,EAAMF,QACL,EAAKgE,kBAAkB9D,EAAM,EAAK3c,MAAM+b,cAN7B,CACvB,IAAMyE,EAAO,yBAAKhY,UAAW,kBAAmB+X,EAAY/Q,SACxD,EAAKtO,SAAS,CAACsd,sBAAqB,EAAMC,wBAAwB+B,M,EAW1EC,kBAAoB,SAACK,EAAOC,GACxB,GAAID,EAAOrE,SAAWsE,EAAOtE,OAAQ,CACjC,IAAM+D,EAAO,yBAAKhY,UAAW,kBAAhB,iDACb,EAAKtH,SAAS,CAAEsd,sBAAsB,EAAOC,wBAAyB+B,SAEtE,EAAKtf,SAAS,CAAEsd,sBAAsB,EAAMC,wBAAyB,KAAM,WAAQ,EAAKvd,SAAS,CAAEse,iBAAiB,EAAOE,gBAAgB,EAAOG,gBAAgB,Q,EAK1Ka,uB,uCAAyB,WAAO/D,GAAP,eAAAlK,EAAA,+EAEDoK,GAA0BF,EAAO,CAAE3K,YAAY,IAF9C,YAEbnO,EAFa,UAGNA,EAAIC,KAHE,qBAITD,EAAIC,KAAKkd,eAJA,0CAKF,GALE,iCAOF,GAPE,oH,wDAgBzBC,cAAgB,SAACnX,GACb,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAEwd,SAAU/B,EAAOiC,kBAAkB,IAAS,WACxDjC,GAAS,EAAKqD,cAAcrD,O,EAIpCqD,cAAgBM,qBAAS,SAAC3D,GACtB,IAAI6D,EACED,EAAc7D,GAAoBC,GAClCuE,EAAU,uDAAkB,0BAAM1Y,UAAWwL,KAAOmN,WAAxB,KAAlB,KAA+D,0BAAM3Y,UAAWwL,KAAOmN,WAAxB,KAA/D,KAA4G,0BAAM3Y,UAAWwL,KAAOmN,WAAxB,OAA5G,IAA0J,0BAAM3Y,UAAWwL,KAAOmN,WAAxB,KAA1J,WAA6M,0BAAM3Y,UAAWwL,KAAOmN,WAAxB,UAA7M,6CAEZX,GADqB,YAArBD,EAAY1f,MAGL8b,GAAS4D,EAAY/Q,UAFtB,kBAAC,GAAD,CAAO3O,KAAK,UAAU2O,QAAS0R,IAIrCX,EAAY3E,QACZoC,GAAaW,aAAehC,GAGhC,EAAKzb,SAAS,CAAE2d,iBAAkB2B,EAAK5B,iBAAkB2B,EAAY3E,MAAOkD,2BAA4ByB,EAAY3E,UACrH,K,EAEHwF,kBAAoB,SAACtX,GACjB,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAE+d,UAAWtC,K,EAG/B0E,iBAAmB,SAACvX,GAChB,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAEie,SAAUxC,K,EAG9B2E,yBAA2B,SAACjQ,GACxB2M,GAAagB,qBAAuB3N,EACpC,EAAKnQ,SAAS,CAAE6d,iBAAkB1N,K,EAGtC6O,gBAAkB,WACdlC,GAAajC,MAAQ,EAAK/b,MAAM+b,MAAMU,OACtCuB,GAAaO,aAAe,EAAKve,MAAMue,aAAa9B,OACpDuB,GAAaiB,UAAY,EAAKjf,MAAMif,UAAUxC,OAC9CuB,GAAamB,SAAW,EAAKnf,MAAMmf,SAAS1C,Q,EAGhD8E,oC,uCAAsC,WAAOzX,GAAP,uBAAA2I,EAAA,yDAClC3I,EAAE0X,iBAEkB,uCADhBC,EAAc3X,EAAE0K,OAAO/M,IAEvB,EAAKvG,SAAS,CAAE0e,6BAA6B,IAE7C,EAAK1e,SAAS,CAAEye,gBAAgB,IAG9B,EAAK3f,MAAM0f,gBAAmB,EAAK1f,MAAMyf,eAAehD,QAA2B,4BAAhBgF,EATvC,wDAa9BC,EAAc,CACd,QAAW,EAAK1hB,MAAMmf,SAAS1C,OAC/B,UAAa,EAAKzc,MAAMif,UAAUxC,OAClC,MAAS,EAAKzc,MAAM+b,MAAMU,OAC1B,qBAAwB,EAAKzc,MAAM+e,iBAAiB4C,KACpD,OAAU,EAAK3hB,MAAM0e,SAASjC,OAC9B,cAAiB,EAAKzc,MAAMyf,eAAehD,QAnBb,kBAuBZkB,GAAyC8D,EAAaC,EAAa,CAAE1P,YAAY,IAvBrE,QAuBxBnO,EAvBwB,SAwBJ,MAAfA,EAAIkO,SAEX6P,EAA6B,sCAAhBH,EAAsD,4EAC7D,yEAEN,EAAKvgB,SAAS,CAACye,gBAAgB,EAAK3f,MAAMyf,iBAAkB,EAAKzf,MAAMyf,eAAehD,OAClFmD,6BAA6B,IAAS,WAEtC,EAAKve,MAAM8e,aAAa,EAAGyB,EAC3B,CACIpC,gBAAiB,EAAKxf,MAAMwf,gBAC5BC,eAAgB,EAAKzf,MAAMyf,eAC3BC,eAAgB,EAAK1f,MAAM0f,eAC3BG,eAAgB,EAAK7f,MAAM6f,eAC3BrB,qBAAsB,EAAKxe,MAAMwe,qBACjC1C,cAAe,EAAK9b,MAAM8b,cAC1BgE,oBAAqB,EAAK9f,MAAM8f,0BAxCd,kDA8C9B3P,EAAW,MAAO,KAAIgB,UAAoC,MAAxB,KAAIA,SAASY,OAAiB,0IAC1D,6EACN/G,EAAawD,MAAM,CACfgB,QAAS,gBACTC,YAAaU,IAlDa,0D,wDAuDtCyQ,SAAW,WACP,EAAKV,kBACL,EAAK7e,MAAM8e,aAAa,EAAKngB,MAAMqf,W,EAGvCwC,eAAiB,WACb,IAAMC,EAAgBzU,SAAS0U,eAAe,cAC1CD,GACAA,EAAcE,gBAAe,I,EAIrCC,kB,uCAAoB,WAAOnY,GAAP,SAAA2I,EAAA,sDAChB3I,EAAE0X,iBACF,EAAKtgB,SAAS,CAAEwe,gBAAiB,EAAK1f,MAAM0f,iBAAkB,WACvD,EAAK1f,MAAM0f,gBACV,EAAKmC,oBAJG,2C,wDASpBK,uBAAyB,SAACpY,GACtB,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAEue,eAAgB9C,IAC5BA,EAAMF,OACN,EAAKvb,SAAS,CAAEye,gBAAgB,IAGhC,EAAKze,SAAS,CAAEye,gBAAgB,K,uDA9RxC,WACIve,KAAK2e,YACL3e,KAAK2b,gC,oBAgST,WACI,IAAMoF,IACF/gB,KAAKpB,MAAM8b,eACR1a,KAAKpB,MAAMwe,sBACXpd,KAAKpB,MAAMif,UAAUxC,QACrBrb,KAAKpB,MAAMmf,SAAS1C,QACpBrb,KAAKpB,MAAM4e,kBACXxd,KAAKpB,MAAM+e,mBACV3d,KAAKpB,MAAMwf,iBAEb4C,IACFhhB,KAAKpB,MAAM8b,eACR1a,KAAKpB,MAAMwe,sBACXpd,KAAKpB,MAAMif,UAAUxC,QACrBrb,KAAKpB,MAAMmf,SAAS1C,QACpBrb,KAAKpB,MAAM4e,kBACXxd,KAAKpB,MAAM+e,kBACX3d,KAAKpB,MAAMwf,kBACVpe,KAAKpB,MAAM4f,6BAEbyC,IACFjhB,KAAKpB,MAAM8b,eACR1a,KAAKpB,MAAMwe,sBACXpd,KAAKpB,MAAMif,UAAUxC,QACrBrb,KAAKpB,MAAMmf,SAAS1C,QACpBrb,KAAKpB,MAAM4e,kBACXxd,KAAKpB,MAAM+e,kBACX3d,KAAKpB,MAAMwf,iBACXpe,KAAKpB,MAAMyf,iBACVre,KAAKpB,MAAM2f,gBAEnB,OACI,kBAAC,IAAM/F,SAAP,KACI,yBAAKpR,UAAWwL,KAAO4G,UACnB,kBAAC,GAAD,CAAMC,UAAW,sBAAuBH,UAAW,IAAKH,QAAS,EAAGE,WAAY,EAAGK,eAAgB,+CAAoB,0BAAMta,MAAO,CAAE8hB,WAAY,SAA3B,YAE3H,yBAAK9Z,UAAWwL,KAAOuO,KACnB,kBAACC,GAAA,EAAD,CAAWha,UAAWwL,KAAOyO,eACzB,kBAACC,GAAA,EAAD,CAAOC,IAAI,QAAQna,UAAWwL,KAAOlN,OAArC,cACM1F,KAAKpB,MAAM+b,MAAMU,QAAU,0BAAMjU,UAAU,WAAhB,MAEhCpH,KAAKpB,MAAMsf,yBAA2B,kBAACsD,GAAA,EAAD,CAASpa,UAAWwL,KAAO6O,QAASla,KAAK,KAAKlI,MAAM,SAC3F,kBAACqiB,GAAA,EAAD,CAAOnG,MAAOvb,KAAKpB,MAAM+b,MAAOgH,SAAU3hB,KAAKif,gBAC9Cjf,KAAKpB,MAAMqe,kBAEhB,kBAACmE,GAAA,EAAD,CAAWha,UAAWwL,KAAOyO,eACzB,kBAACC,GAAA,EAAD,CAAOC,IAAI,QAAQna,UAAWwL,KAAOlN,OAArC,iBACM1F,KAAKpB,MAAMue,aAAa9B,QAAU,0BAAMjU,UAAU,WAAhB,MAExC,kBAACsa,GAAA,EAAD,CAAOnG,MAAOvb,KAAKpB,MAAMue,aAAcwE,SAAU3hB,KAAKyf,gBAAiBmC,QAAS,SAAClZ,GAAD,OAAOA,EAAE0X,oBACxFpgB,KAAKpB,MAAMye,yBAEhB,kBAAC+D,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,YAAYna,UAAWwL,KAAOlN,OAAzC,cACE1F,KAAKpB,MAAMif,UAAUxC,QAAU,0BAAMjU,UAAU,WAAhB,MAEjC,kBAACsa,GAAA,EAAD,CAAOnG,MAAOvb,KAAKpB,MAAMif,UAAW8D,SAAU3hB,KAAKggB,kBAAmB6B,UAAU,QAEpF,kBAACT,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,WAAWna,UAAWwL,KAAOlN,OAAxC,aACE1F,KAAKpB,MAAMmf,SAAS1C,QAAU,0BAAMjU,UAAU,WAAhB,MAEhC,kBAACsa,GAAA,EAAD,CAAOnG,MAAOvb,KAAKpB,MAAMmf,SAAU4D,SAAU3hB,KAAKigB,iBAAkB4B,UAAU,QAElF,kBAACT,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,mBAAmBna,UAAWwL,KAAOlN,OAAhD,sBACE1F,KAAKpB,MAAM+e,kBAAoB,0BAAOvW,UAAU,WAAjB,MAEjC,kBAAC,IAAD,CACI0a,YAAa,GACbC,UAAU,EACVC,aAAc,SAAA5W,GAAC,MAAK,CAChB1F,MAAM,KAAD,OAAO0F,EAAEmV,KAAT,YAAiBnV,EAAEhG,KAAnB,MACLmW,MAAOnQ,EAAE6W,UACTC,QAAS9W,EAAE+W,UAEf5G,MAAOvb,KAAKpB,MAAM+e,iBAClBvd,QAASJ,KAAKpB,MAAMke,qBACpB6E,SAAU3hB,KAAKkgB,yBACfkC,UAAWpiB,KAAKpB,MAAMuf,kBACtBkE,WAAYriB,KAAKpB,MAAMuf,qBAG/B,kBAACiD,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,WAAWna,UAAWwL,KAAOlN,OAAxC,uBACM1F,KAAKpB,MAAM0e,UAAY,0BAAOlW,UAAU,WAAjB,MAE7B,kBAACsa,GAAA,EAAD,CAAOnG,MAAOvb,KAAKpB,MAAM0e,SAAUuE,UAAU,KAAKF,SAAU3hB,KAAK6f,gBAChE7f,KAAKpB,MAAM6e,kBAEfzd,KAAKpB,MAAMwf,iBAAmB,yBAAKhX,UAAWwL,KAAOxS,SAClD,yIAEA,yBAAKgH,UAAWwL,KAAO0P,mBACnB,kBAAC,IAAD,CAAMjb,GAAG,IAAIhB,GAAG,oBAAoBhB,QAASrF,KAAK6gB,mBAAlD,+BACA,kBAAC/G,GAAA,EAAD,CAAQzT,GAAG,oCAAoCmQ,SAAUwK,EAA6B3b,QAASrF,KAAKmgB,oCAAqC9gB,MAAM,UAAUkI,KAAK,MAA9J,oBAGPvH,KAAKpB,MAAM0f,gBAAkB,kBAAC8C,GAAA,EAAD,KAC1B,kBAACE,GAAA,EAAD,CAAOC,IAAI,iBAAiBna,UAAWwL,KAAOlN,OAA9C,WACM1F,KAAKpB,MAAMyf,eAAehD,QAAU,0BAAMjU,UAAU,WAAhB,MAE1C,6BACI,kBAACsa,GAAA,EAAD,CAAOta,UAAWwL,KAAO2P,SAAU9iB,KAAK,WAAW4G,GAAG,aAAawb,UAAU,MAAMV,IAAI,IAAI5F,MAAOvb,KAAKpB,MAAMyf,eAAgBsD,SAAU3hB,KAAK8gB,2BAGpJ,yBAAK1Z,UAAWwL,KAAO4P,aAClBxiB,KAAKpB,MAAM0f,gBAAkB,kBAACxE,GAAA,EAAD,CAAQtD,SAAUyK,EAAiB5a,GAAG,0BAA0BhB,QAASrF,KAAKmgB,oCAAqC9gB,MAAM,UAAUkI,KAAK,MAAxI,SAC5BvH,KAAKpB,MAAM0f,gBAAkBte,KAAKpB,MAAM6f,gBAAkB,kBAAC3E,GAAA,EAAD,CAAQtD,SAAUuK,EAAiB1b,QAASrF,KAAK6e,OAAQxf,MAAM,UAAUkI,KAAK,MAA9E,e,GA9anDpH,aAsblBuH,eAAWmV,I,8BCjcpB4F,G,4MACL7jB,MAAQ,CACP8jB,QAAQ,EACRC,cAAe,EAAK1iB,MAAMsb,OAAS,I,EAGpCqH,eAAiB,WAChB,EAAK9iB,SAAS,CAAE4iB,QAAS,EAAK9jB,MAAM8jB,U,EAGrCG,qBAAuB,SAACna,GACvBA,EAAEoa,UACF,IAAMhI,EAAMpS,EAAE0K,OAAOmI,MAAMF,OAC3B,EAAKvb,SAAS,CAAE6iB,cAAe7H,IAC9B,WACK,EAAK7a,MAAM0hB,UAEd,EAAK1hB,MAAM0hB,SAASjZ,O,wDAKxB,SAAmBA,GAClB,IAAMoS,EAAMpS,EAAE0K,OAAOmI,MACjBvb,KAAKC,MAAM8iB,QACd/iB,KAAKC,MAAM8iB,OAAOjI,K,oBAIpB,WACC,IAAMkI,EACL,0BAAM3d,QAASrF,KAAK4iB,eAAgBxb,UAAW6b,KAAWjjB,KAAKC,MAAMmH,UAAW,CAAE,mBAAoBpH,KAAKC,MAAMijB,uBAAyB,CAAE,4CAA6CljB,KAAKC,MAAMijB,yBAClMljB,KAAKpB,MAAM8jB,QACX,yBAAKtjB,MAAO,CAAE2Z,MAAO,QAAUtK,IAAI,kBAAkBC,IAAI,SAExD1O,KAAKpB,MAAM8jB,QACZ,yBAAKtjB,MAAO,CAAE2Z,MAAO,QAAUtK,IAAI,uBAAuBC,IAAI,cAIjE,OACC,kBAAC,IAAM8J,SAAP,KACC,yBAAKpR,UAAW6b,KAAWjjB,KAAKC,MAAMmH,UAAW,CAAE,cAAepH,KAAKC,MAAMijB,uBAAyB,CAAE,6BAA8BljB,KAAKC,MAAMijB,wBAA0B7c,GAAG,sBAE7K,kBAACqb,GAAA,EAAD,CAAOjiB,KAAMO,KAAKpB,MAAM8jB,OAAS,WAAa,OAAQtb,UAAW6b,KAAWjjB,KAAKC,MAAMmH,UAAW,CAAE,aAAcpH,KAAKC,MAAMijB,wBAC5H9d,KAAMpF,KAAKC,MAAMkjB,UACjBrB,YAAa9hB,KAAKC,MAAMmjB,YACxBC,cAAY,WACZC,aAActjB,KAAKpB,MAAM+jB,cACzBhB,SAAU3hB,KAAK6iB,qBACfE,OAAQ/iB,KAAKujB,mBAAmBhY,KAAKvL,MACrCwjB,QAASxjB,KAAKC,MAAMujB,UAEpBxjB,KAAKC,MAAMijB,uBACX,yBAAK9b,UAAU,sBAAsB4b,IAEpChjB,KAAKC,MAAMijB,uBACZ,kBAAC,IAAM1K,SAAP,KAAiBwK,IAGlBhjB,KAAKC,MAAMwjB,cAAgB,kBAACC,GAAA,EAAD,KAAW1jB,KAAKC,MAAMmb,mB,GA5D3Bjb,aA+E3BsiB,GAAa9W,aAAe,CAC3BvE,UAAW,GACX8b,uBAAuB,EACvBE,YAAa,YAGCX,UC7ETrH,GAAe,0BAAMhU,UAAWwL,KAAO+Q,aACzC,iEACA,4BACI,yDACA,6DACA,6DACA,mDACA,gEAGFC,G,4MAMFhlB,MAAQ,CACJilB,WAAY,KACZzI,aAAcA,GACdlB,SAAU0C,GAAa1C,UAAY,GACnC4J,eAAgBlH,GAAakH,gBAAkB,GAC/CC,cAAc,EACdC,UAAWpH,GAAaoH,YAAa,EACrCC,eAAe,EACfC,WAAW,G,EAEfvC,SAAW,SAAAjZ,GAAM,IAAD,IACUA,EAAE0K,OAAlBhO,EADM,EACNA,KAAMmW,EADA,EACAA,MACZ,EAAKzb,UAAL,mBACKsF,EAAOmW,GADZ,8BAEkB,GAFlB,IAGG,WACC,EAAK4I,eAAe/e,EAAMmW,O,EAGlC6I,QAAU,SAAA1b,GAAM,IAAD,EACaA,EAAE0K,OAApBhO,EADK,EACLA,KAAMif,EADD,EACCA,QACZ,EAAKvkB,SAAL,eAAiBsF,EAAOif,IACxBzH,GAAaoH,UAAYK,G,EAE7BF,eAAiBjF,qBAAS,SAAC9Z,EAAMmW,GAC7B,IAAI+I,EACJ,OAAQlf,GACJ,IAAK,YACDkf,EAAcrK,GAAiBsB,IACnBnN,QAAUgN,GAClBkJ,EAAY9J,OAAS,EAAK5b,MAAMklB,iBAChCQ,EAAc,EAAKC,gBAAgBhJ,EAAO,EAAK3c,MAAMklB,iBAEzD,MACJ,IAAK,kBACDQ,EAAcrK,GAAiBsB,IACnBnN,QAAUgN,GAClBkJ,EAAY9J,QACZ8J,EAAc,EAAKC,gBAAgB,EAAK3lB,MAAMsb,SAAUqB,IAMpE,EAAKzb,SAAS,CACV+jB,YAAaS,EAAY9J,MACzBY,aAAckJ,EAAYlW,QAC1B2V,cAAcO,EAAY9J,SAAU,EAAK5b,MAAMklB,gBAAkB,EAAKllB,MAAMsb,cAEjF,K,EACHqK,gBAAkB,SAACrK,EAAU4J,GAKzB,MAJkB,CACdtJ,MAAON,IAAa4J,EACpB1V,QAAS8L,IAAa4J,EAAiB,GAAK,8D,EAKpDU,KAAO,WACH5H,GAAa1C,SAAW,EAAKtb,MAAMsb,SACnC0C,GAAakH,eAAiB,EAAKllB,MAAMklB,eACzC,EAAK7jB,MAAM8e,aAAa,I,EAG5BF,O,sBAAS,8BAAAxN,EAAA,6DACL,EAAKvR,SAAS,CAAEmkB,eAAe,EAAMF,cAAc,EAAMG,WAAW,IACpEtH,GAAa1C,SAAW,EAAKtb,MAAMsb,SACnC0C,GAAakH,eAAiB,EAAKllB,MAAMklB,eACzChlB,aAAae,QAAQ,UAAW+c,GAAa6H,kBACvC/hB,EAAO,CACT,QAAWka,GAAamB,SACxB,UAAanB,GAAaiB,UAC1B,MAASjB,GAAajC,MACtB,qBAAwBiC,GAAagB,qBAAqB2C,KAC1D,8BAAiC3D,GAAagB,qBAAqBqE,UACnE,OAAUrF,GAAaW,aACvB,SAAYX,GAAa1C,SACzB,QAAW0C,GAAa6H,iBACxB,WAAc7H,GAAa8H,oBAC3B,gBAAmB9H,GAAa+H,wBAChC,iBAAoB/H,GAAagI,oBACjC,QAAWhI,GAAaiI,iBACxB,mBAAsBjI,GAAakI,kBAAoBlI,GAAakI,kBAAkB1f,KAAO,GAC7F,qBAAwBwX,GAAakI,kBAAoBlI,GAAakI,kBAAkB7C,UAAY,GACpG,WAAcrF,GAAamI,oBAAoBC,YAC/C,UAAapI,GAAamI,oBAAoBE,UAC9C,aAAgBrI,GAAamI,oBAAoB9C,UACjD,oBAAuBrF,GAAasI,6BAA6B3E,KACjE,6BAAgC3D,GAAasI,6BAA6BjD,UAC1E,eAAkBrF,GAAauI,wBAC/B,SAAiD,cAArCrmB,aAAaC,QAAQ,YAA8BD,aAAaC,QAAQ,YAAc,IA1BjG,kBA6BiBgd,GAAcrZ,EAAM,CAAEkO,YAAY,IA7BnD,QA6BKnO,EA7BL,SA8ByB,MAAfA,EAAIkO,SACX,EAAK7Q,SAAS,CAAEmkB,eAAe,IAC/B,EAAKhkB,MAAM8e,aAAa,GACxBnC,GAAawI,UAAY3iB,EAAIC,KAAK0iB,UAClCtmB,aAAae,QAAQ,YAAa4C,EAAIC,KAAK0iB,YAlC9C,kDAsCD,EAAKtlB,SAAS,CAAEmkB,eAAe,IAC/Bra,EAAawD,MAAM,CACfgB,QAAS,QACTC,YAAa,kBAzChB,0D,uDArET,WACQuO,GAAa1C,UACbla,KAAKmkB,eAAe,WAAYvH,GAAa1C,Y,oBAkHrD,WAEI,OACI,kBAAE,IAAM1B,SAAR,KACI,yBAAKpR,UAAWwL,KAAO4G,UACnB,kBAAC,GAAD,CAAMC,UAAW,wBAAyBH,UAAW,IAAKH,QAAS,EAAGE,WAAY,EAAGK,eAAgB,0CAAe,0BAAMta,MAAO,CAAE8hB,WAAY,SAA3B,6BAExH,yBAAK9Z,UAAWwL,KAAOuO,KACnB,kBAACC,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,WAAWna,UAAWwL,KAAOlN,OAAxC,WACK1F,KAAKpB,MAAMilB,YAAc,0BAAMzc,UAAU,WAAhB,MAE9B,kBAAC,GAAD,CACImU,MAAOvb,KAAKpB,MAAMsb,SAClBiJ,UAAU,WACV/b,UAAS,UAdX,MAcW,SACTgc,YAAY,IACZzB,SAAU3hB,KAAK2hB,WAEnB,kBAAC0D,GAAA,EAAD,OAGJ,kBAACjE,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,kBAAkBna,UAAWwL,KAAOlN,OAA/C,kBACK1F,KAAKpB,MAAMilB,YAAc,0BAAMzc,UAAU,WAAhB,MAE9B,kBAAC,GAAD,CACImU,MAAOvb,KAAKpB,MAAMklB,eAClBX,UAAU,iBACV/b,UAAS,UA5BX,MA4BW,SACTgc,YAAY,IACZzB,SAAU3hB,KAAK2hB,WAEnB,kBAAC0D,GAAA,EAAD,OAEHrlB,KAAKpB,MAAMilB,YAAc,kBAAC,GAAD,CAAOpkB,KAAK,UAAU2O,QAASpO,KAAKpB,MAAMwc,eAEpE,kBAACgG,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOliB,MAAO,CAAEwV,QAAS,OAAQ0Q,aAAc,UAC3C,kBAACC,GAAA,EAAD,CACIlf,GAAG,YACH5G,KAAK,WACL2H,UAAS,UAzCf,MAyCe,SACThC,KAAK,YACLif,QAASrkB,KAAKpB,MAAMolB,UACpBrC,SAAU3hB,KAAKokB,UACnB,0BAAMhd,UAAWwL,KAAO4S,WAAxB,iCAAiE,uBAAGpS,OAAO,SAASC,IAAI,sBAAsBxC,KAAK,mCAAlD,wBAAjE,0EAGR,yBAAKzJ,UAAWwL,KAAO4P,aACnB,kBAAC1I,GAAA,EAAD,CAAQzU,QAASrF,KAAKwkB,KAAMhO,UAAWxW,KAAKpB,MAAMslB,UAAWuB,SAAO,EAACle,KAAK,MAA1E,QACA,kBAACuS,GAAA,EAAD,CAAQzU,QAASrF,KAAK6e,OAAQrI,UAAWxW,KAAKpB,MAAMolB,WAAahkB,KAAKpB,MAAMmlB,aAAc1kB,MAAM,UAAUkI,KAAK,MAAMvH,KAAKpB,MAAMqlB,eAAiB,kBAACzC,GAAA,EAAD,CAASja,KAAK,KAAKlI,MAAM,SAA1K,wB,GAxKMc,aAgLfuH,eAAWkc,IC1LpB8B,G,4MACF9mB,MAAQ,CACJ+mB,YAAa,GACb7I,qBAAsB,GACtB8I,UAAW,GACXC,SAAU,GACVC,gBAAgB,EAChBrB,iBAAkB7H,GAAa6H,kBAAoB,GACnDsB,2BAA2B,EAC3BC,iBAAiB,EACjBC,cAAc,EACdC,mBAAoB,GACpBhB,6BAA8BtI,GAAasI,8BAAgC,KAC3EC,wBAAyBvI,GAAauI,yBAA2B,GACjET,oBAAqB9H,GAAa8H,qBAAuB,GACzDyB,6BAA6B,EAC7BC,QAASxJ,GAAamI,qBAAuB,KAC7CH,oBAAqBhI,GAAagI,qBAAuB,GACzDyB,6BAA6B,EAC7BxB,iBAAkBjI,GAAaiI,kBAAoB,GACnDyB,0BAA0B,EAC1B1nB,MAAOge,GAAakI,mBAAqB,KACzCH,wBAAyB/H,GAAa+H,yBAA2B,GACjE4B,iBAAiB,EACjBC,kBAAkB,EAClBC,gBAAgB,EAChBhJ,iBAAkB,GAClBiJ,qBAAqB,EACrBC,oBAAoB,EACpBxI,mBAAmB,G,EAYvBQ,UAAY,WACJ/B,GAAauI,yBACb,EAAKvG,cAAchC,GAAauI,yBAEhCvI,GAAa6H,kBACb,EAAKmC,yBAAyBhK,GAAa6H,mB,EAInDoC,6B,sBAA+B,4BAAAxV,EAAA,6DAC3B,EAAKvR,SAAS,CAAEqe,mBAAmB,IADR,kBAGL0I,GAA6B,CAAEjW,YAAY,IAHtC,QAGjBnO,EAHiB,SAIZA,EAAIC,MACX,EAAK5C,SAAS,CAAEgd,qBAAsBra,EAAIC,KAAMyb,mBAAmB,IALhD,gDAQvB,EAAKre,SAAS,CAAEqe,mBAAmB,IARZ,yD,EAY/BvC,oB,sBAAsB,4BAAAvK,EAAA,6DAClB,EAAKvR,SAAS,CAAE6mB,oBAAoB,IADlB,kBAGI/K,GAAoB,CAAEhL,YAAY,IAHtC,QAGRnO,EAHQ,SAIHA,EAAIC,MAAQD,EAAIC,KAAKoB,QAC5B,EAAKhE,SAAS,CAAE6lB,YAAaljB,EAAIC,KAAMikB,oBAAoB,IALjD,gDAQd,EAAK7mB,SAAS,CAAE6mB,oBAAoB,IARtB,yD,EAYtB9K,kB,uCAAoB,WAAOC,GAAP,eAAAzK,EAAA,6DAChB,EAAKvR,SAAS,CAAE4mB,qBAAqB,IADrB,kBAGM7K,GAAkBC,EAAW,CAAElL,YAAY,IAHjD,QAGNnO,EAHM,SAIDA,EAAIC,MAAQD,EAAIC,KAAKoB,QAC5B,EAAKhE,SAAS,CAAE8lB,UAAWnjB,EAAIC,KAAM6jB,iBAAiB,EAAMG,qBAAqB,IALzE,gDAQZ,EAAK5mB,SAAS,CAAE4mB,qBAAqB,IARzB,yD,wDAapBI,yBAA2B,SAACpe,GACxB,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAE2kB,iBAAkBlJ,EAAOyK,iBAAiB,IAC1DzK,EAAMF,QAAU,EAAKuL,yBAAyBrL,EAAMF,S,EAGxDuL,yBAA2B1H,oBAAQ,uCAAC,WAAO3D,GAAP,mBAAAlK,EAAA,6DAChC,EAAKvR,SAAS,CAAEimB,4BAA6B,EAAKnnB,MAAM6lB,mBADxB,kBAGP/I,GAAqBH,EAAO,CAAE3K,YAAY,IAHnC,gBAGtBlO,EAHsB,EAGtBA,KACFwjB,EAAqBxjB,GAAS,8RAClC,EAAK5C,SAAS,CACVkmB,iBAAkBtjB,EAAMwjB,qBAAoBH,2BAA2B,EAAOE,aAAcvjB,IANpE,kDASxB,KAAMqN,UAAsC,MAA1B,KAAMA,SAASY,OACjC,EAAK7Q,SAAS,CACVkmB,iBAAiB,EAAME,mBAAoB,GAAIH,2BAA2B,EAAOE,cAAc,IAGnG,EAAKnmB,SAAS,CACVkmB,iBAAiB,EAAOE,mBAAoB,gBAAiBH,2BAA2B,EAAOE,cAAc,IAfzF,0DAAD,sDAoBhC,K,EAEHc,gCAAkC,SAACre,GAC/B,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvBqB,GAAauI,wBAA0B5J,EACvC,EAAKzb,SAAS,CAAEqlB,wBAAyB5J,EAAOiL,kBAAkB,IAAS,WACvEjL,GAAS,EAAKqD,cAAcrD,O,EAIpCqD,cAAgBM,qBAAS,SAAC3D,GACtB,IAAI6D,EACED,EAAc7D,GAAoBC,GAClCuE,EAAU,uDAAkB,0BAAM1Y,UAAWwL,KAAOmN,WAAxB,KAAlB,KAA+D,0BAAM3Y,UAAWwL,KAAOmN,WAAxB,KAA/D,KAA4G,0BAAM3Y,UAAWwL,KAAOmN,WAAxB,OAA5G,IAA0J,0BAAM3Y,UAAWwL,KAAOmN,WAAxB,KAA1J,WAA6M,0BAAM3Y,UAAWwL,KAAOmN,WAAxB,UAA7M,6CAGZX,GAFqB,YAArBD,EAAY1f,MAIL8b,GAAS4D,EAAY/Q,UAFtB,kBAAC,GAAD,CAAO3O,KAAK,UAAU2O,QAAS0R,IAKrCX,EAAY3E,QACZoC,GAAauI,wBAA0B5J,GAG3C,EAAKzb,SAAS,CAAE2d,iBAAkB2B,EAAKoH,iBAAkBrH,EAAY3E,MAAOiM,gBAAiBtH,EAAY3E,UAC1G,K,EAGHwM,4BAA8B,SAACte,GAC3B,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAE4kB,oBAAqBnJ,EAAO4K,6BAA6B,K,EAI7Ec,gCAAkC,SAACve,GAC/B,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAE6kB,wBAAyBpJ,K,EAG7C2L,4BAA8B,SAACxe,GAC3B,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAE8kB,oBAAqBrJ,EAAO8K,6BAA6B,K,EAG7Ec,yBAA2B,SAACze,GACxB,IAAM6S,EAAQ7S,EAAE0K,OAAOmI,MACvB,EAAKzb,SAAS,CAAE+kB,iBAAkBtJ,EAAO+K,0BAA0B,K,EAIvEzH,OAAS,WACL,EAAK5e,MAAM8e,aAAa,GACxB,EAAKD,mB,EAITsI,OAAS,WACL,EAAKnnB,MAAM8e,aAAa,GACxB,EAAKD,mB,EAGTA,gBAAkB,WACdlC,GAAa6H,iBAAmB,EAAK7lB,MAAM6lB,iBAAiBpJ,OAC5DuB,GAAa8H,oBAAsB,EAAK9lB,MAAM8lB,oBAAoBrJ,OAClEuB,GAAa+H,wBAA0B,EAAK/lB,MAAM+lB,wBAAwBtJ,OAC1EuB,GAAagI,oBAAsB,EAAKhmB,MAAMgmB,oBAAoBvJ,OAClEuB,GAAaiI,iBAAmB,EAAKjmB,MAAMimB,iBAAiBxJ,Q,EAGhEgM,yBAA2B,SAACpX,GACxB,EAAKnQ,SAAS,CAAEolB,6BAA8BjV,IAAQ,WAClD2M,GAAasI,6BAA+BjV,M,EAKpDqX,gBAAkB,SAACrX,GACf,EAAKnQ,SAAS,CAAEsmB,QAASnW,EAAMrR,MAAO,KAAM2nB,iBAAiB,IAAS,WAClE3J,GAAamI,oBAAsB9U,EACnC,EAAK4L,kBAAkB5L,EAAKgS,e,EAIpCsF,cAAgB,SAACtX,GACb,EAAKnQ,SAAS,CAAElB,MAAOqR,IAAQ,WAC3B2M,GAAakI,kBAAoB7U,M,EAKzCuX,YAAc,WAEV,OAAO,EAAK5oB,MAAM6lB,iBAAiBpJ,QAC5B,EAAKzc,MAAMonB,iBACX,EAAKpnB,MAAMsmB,8BACX,EAAKtmB,MAAM4nB,kBACX,EAAK5nB,MAAM8lB,oBAAoBrJ,QAC/B,EAAKzc,MAAMwnB,SACX,EAAKxnB,MAAMgmB,oBAAoBvJ,QAC/B,EAAKzc,MAAMimB,kBACX,EAAKjmB,MAAMimB,iBAAiBxJ,Q,uDAtLvC,WACIrb,KAAK6mB,+BACL7mB,KAAK4b,sBACDgB,GAAamI,qBACb/kB,KAAK6b,kBAAkBe,GAAamI,oBAAoB9C,WAE5DjiB,KAAK2e,c,oBAqLT,WACI,IAAM8I,GAAgBznB,KAAKwnB,cAC3B,OACI,kBAAC,IAAMhP,SAAP,KACI,yBAAKpR,UAAWwL,KAAO4G,UACnB,kBAAC,GAAD,CAAMC,UAAW,2BAA4BH,UAAW,IAAKH,QAAS,EAAGE,WAAY,EAAGK,eAAgB,oDAAyB,0BAAMta,MAAO,CAAE8hB,WAAY,SAA3B,cAAzB,QAE5G,yBAAK9Z,UAAWwL,KAAOuO,KACnB,kBAACC,GAAA,EAAD,CAAWha,UAAWwL,KAAOyO,eACzB,kBAACC,GAAA,EAAD,CAAOC,IAAI,mBAAmBna,UAAWwL,KAAOlN,OAAhD,qBACM1F,KAAKpB,MAAM6lB,iBAAiBpJ,QAAU,0BAAMjU,UAAU,WAAhB,MAE3CpH,KAAKpB,MAAMmnB,2BAA6B,kBAACvE,GAAA,EAAD,CAASpa,UAAWwL,KAAO6O,QAASla,KAAK,KAAKlI,MAAM,SAC7F,kBAACqiB,GAAA,EAAD,CAAO4B,aAAc1G,GAAa6H,kBAAoB,GAAIlJ,MAAOvb,KAAKpB,MAAM6lB,iBAAkB9C,SAAU3hB,KAAK8mB,2BAC5G9mB,KAAKpB,MAAMsnB,oBAAsB,kBAAC,GAAD,CAAOzmB,KAAK,UAAU2O,QAASpO,KAAKpB,MAAMsnB,sBAGhF,kBAAC9E,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,mBAAmBna,UAAWwL,KAAOlN,OAAhD,sBACE1F,KAAKpB,MAAMsmB,8BAAgC,0BAAM9d,UAAU,WAAhB,MAE7C,kBAAC,IAAD,CACI0a,YAAa,GACbC,UAAU,EACVC,aAAc,SAAA5W,GAAC,MAAK,CAChB1F,MAAM,KAAD,OAAO0F,EAAEmV,KAAT,YAAiBnV,EAAEhG,KAAnB,MACLmW,MAAOnQ,EAAE6W,UACTC,QAAS9W,EAAE+W,UAEfE,WAAYriB,KAAKpB,MAAMuf,kBACvBiE,UAAWpiB,KAAKpB,MAAMuf,kBACtB5C,MAAOvb,KAAKpB,MAAMsmB,6BAClB9kB,QAASJ,KAAKpB,MAAMke,qBACpB6E,SAAU3hB,KAAKqnB,4BAGvB,kBAACjG,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,0BAA0Bna,UAAWwL,KAAOlN,OAAvD,6BACM1F,KAAKpB,MAAMumB,wBAAwB9J,QAAU,0BAAMjU,UAAU,WAAhB,MAEnD,kBAACsa,GAAA,EAAD,CAAO4B,aAAc1G,GAAauI,yBAA2B,GAAI5J,MAAOvb,KAAKpB,MAAMumB,wBAAyBxD,SAAU3hB,KAAK+mB,gCAAiClF,UAAU,OACrK7hB,KAAKpB,MAAM6e,kBAEhB,kBAAC2D,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,uBAAuBna,UAAWwL,KAAOlN,OAApD,wBACM1F,KAAKpB,MAAM8lB,oBAAoBrJ,QAAU,0BAAMjU,UAAU,WAAhB,MAE/C,kBAACsa,GAAA,EAAD,CAAO4B,aAAc1G,GAAa8H,qBAAuB,GAAInJ,MAAOvb,KAAKpB,MAAM8lB,oBAAqB/C,SAAU3hB,KAAKgnB,4BAA6BnF,UAAU,QAE9J,kBAACT,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,cAAcna,UAAWwL,KAAOlN,OAA3C,6BAEA,kBAACgc,GAAA,EAAD,CAAO4B,aAAc1G,GAAa+H,yBAA2B,GAAIpJ,MAAOvb,KAAKpB,MAAM+lB,wBAAyBhD,SAAU3hB,KAAKinB,gCAAiCpF,UAAU,QAE1K,kBAACT,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,UAAUna,UAAWwL,KAAOlN,OAAvC,WACE1F,KAAKpB,MAAMwnB,SAAW,0BAAMhf,UAAU,WAAhB,MAExB,kBAAC,IAAD,CACI0a,YAAa,GACbC,UAAU,EACVC,aAAc,SAAA5W,GAAC,MAAK,CAChB1F,MAAO0F,EAAE4Z,YACTzJ,MAAOnQ,EAAE6W,UACTC,QAAS9W,EAAE+W,UAEfE,WAAYriB,KAAKpB,MAAM+nB,mBACvBvE,UAAWpiB,KAAKpB,MAAM+nB,mBACtBpL,MAAOvb,KAAKpB,MAAMwnB,QAClBhmB,QAASJ,KAAKpB,MAAM+mB,YACpBhE,SAAU3hB,KAAKsnB,mBAEvB,kBAAClG,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,QAAQna,UAAWwL,KAAOlN,OAArC,oBAGA,kBAAC,IAAD,CACIoc,YAAa,GACbE,aAAc,SAAA5W,GAAC,MAAK,CAAE1F,MAAO0F,EAAEhG,KAAMmW,MAAOnQ,EAAE6W,YAC9CG,UAAWpiB,KAAKpB,MAAM8nB,oBACtBrE,YAAariB,KAAKpB,MAAM2nB,gBACxBhL,MAAOvb,KAAKpB,MAAMA,MAClBwB,QAASJ,KAAKpB,MAAMgnB,UACpBjE,SAAU3hB,KAAKunB,iBAEvB,kBAACnG,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,OAAOna,UAAWwL,KAAOlN,OAApC,QACE1F,KAAKpB,MAAMimB,iBAAiBxJ,QAAU,0BAAMjU,UAAU,WAAhB,MAExC,kBAACsa,GAAA,EAAD,CAAO4B,aAAc1G,GAAaiI,kBAAoB,GAAIlD,SAAU3hB,KAAKmnB,yBAA0BtF,UAAU,QAEjH,kBAACT,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,UAAUna,UAAWwL,KAAOlN,OAAvC,0BACE1F,KAAKpB,MAAMgmB,oBAAoBvJ,QAAU,0BAAMjU,UAAU,WAAhB,MAE3C,kBAACsa,GAAA,EAAD,CAAO4B,aAAc1G,GAAagI,qBAAuB,GAAIrJ,MAAOvb,KAAKpB,MAAMgmB,oBAAqBjD,SAAU3hB,KAAKknB,4BAA6BrF,UAAU,QAE9J,yBAAKza,UAAWwL,KAAO4P,aACnB,kBAAC1I,GAAA,EAAD,CAAQzU,QAASrF,KAAKonB,OAAQ3B,SAAO,EAACle,KAAK,MAA3C,QACA,kBAACuS,GAAA,EAAD,CAAQtD,SAAUiR,EAAcpiB,QAASrF,KAAK6e,OAAQxf,MAAM,UAAUkI,KAAK,MAA3E,yB,GA9TgBpH,aAsUzBuH,eAAWge,IC5UpBgC,G,4MACFN,OAAS,WACL,EAAKnnB,MAAM8e,aAAa,I,EAG5BF,OAAS,WACL,EAAK5e,MAAM8e,aAAa,I,4CAG5B,WACI,OACI,kBAAC,IAAMvG,SAAP,KACI,yBAAKpR,UAAWwL,KAAO4G,UACnB,kBAAC,GAAD,CAAMC,UAAW,2BAA4BH,UAAW,IAAKH,QAAS,EAAGE,WAAY,EAAGK,eAAgB,qDAA0B,0BAAMta,MAAO,CAAE8hB,WAAY,SAA3B,aAA1B,QAE5G,uBAAG9Z,UAAWwL,KAAO+U,KAArB,+FAGA,6BACI,6BACI,kBAACrG,GAAA,EAAD,CAAOla,UAAWwL,KAAOlN,OAAzB,cACA,uBAAG0B,UAAWwL,KAAOzF,MAArB,UAA+ByP,GAAaiB,UAA5C,YAAyDjB,GAAamB,YAE1E,6BACI,kBAACuD,GAAA,EAAD,CAAOla,UAAWwL,KAAOlN,OAAzB,SACA,uBAAG0B,UAAWwL,KAAOzF,MAAOyP,GAAajC,QAE7C,6BACI,kBAAC2G,GAAA,EAAD,CAAOla,UAAWwL,KAAOlN,OAAzB,uBACA,uBAAG0B,UAAWwL,KAAOzF,MAArB,YAAiCyP,GAAagB,sBAAwBhB,GAAagB,qBAAqB2C,KAAxG,cAAkH3D,GAAaW,gBAEnI,6BACI,kBAAC+D,GAAA,EAAD,CAAOla,UAAWwL,KAAOlN,OAAzB,qBACA,uBAAG0B,UAAWwL,KAAOzF,MAAOyP,GAAa6H,mBAE7C,6BACI,kBAACnD,GAAA,EAAD,CAAOla,UAAWwL,KAAOlN,OAAzB,6BACA,uBAAG0B,UAAWwL,KAAOzF,MAArB,YAAiCyP,GAAasI,8BAAgCtI,GAAasI,6BAA6B3E,KAAxH,cAAkI3D,GAAauI,2BAEnJ,6BACI,kBAAC7D,GAAA,EAAD,CAAOla,UAAWwL,KAAOlN,OAAzB,yBACA,uBAAG0B,UAAWwL,KAAOzF,MAArB,UAA+ByP,GAAa8H,oBAA5C,YAAmE9H,GAAa+H,wBAA0B/H,GAAa+H,wBAA0B,IAAM,GAAvJ,YAA6J/H,GAAaiI,iBAA1K,aAA+LjI,GAAakI,kBAAoBlI,GAAakI,kBAAkB1f,KAAO,KAAO,IAA7Q,OAAkRwX,GAAagI,oBAA/R,YAAsThI,GAAamI,qBAAuBnI,GAAamI,oBAAoBC,gBAKnY,yBAAK5d,UAAWwL,KAAO4P,aACnB,kBAAC1I,GAAA,EAAD,CAAQzU,QAASrF,KAAKonB,OAAQ3B,SAAO,EAACle,KAAK,MAA3C,QACA,kBAACuS,GAAA,EAAD,CAAQzU,QAASrF,KAAK6e,OAAQxf,MAAM,UAAUkI,KAAK,MAAnD,c,GAhDYpH,aAuDjBuH,eAAWggB,ICrDpBE,G,4MACFhpB,MAAQ,CACJipB,QAAS,GACTC,QAAS,GACTC,QAAS,GACTC,QAAS,GACTC,QAAS,GACTC,QAAS,GACTrE,YAAY,EACZsE,aAAa,EACb9O,WAAY,EACZK,eAAgB,8CAAS,0BAAMta,MAAO,CAAE8hB,WAAY,SAA3B,gBACzBkH,eAAe,EACfC,mBAAmB,G,EAkBvBxJ,OAAS,WACLxC,GAA6B,EAAKpc,MAAM0a,MAAQ,EAAK1a,MAAM0a,MAAQiC,GAAajC,MAAO,CAAE/J,YAAY,IACrG,EAAK3Q,MAAM8e,aAAa,I,EAG5BuJ,W,sBAAa,8BAAAjX,EAAA,6DACL+K,EAA8D,cAA5Ctd,aAAaC,QAAQ,mBAAqCD,aAAaC,QAAQ,mBAAqB,GAC1H,EAAKe,SAAS,CAAEuoB,mBAAmB,IAF1B,SAGSnM,GAA6B,EAAKjc,MAAM0a,MAAQ,EAAK1a,MAAM0a,MAAQiC,GAAajC,MAAO,GAAI4N,mBAAmBnM,GAAkB,CAAExL,YAAY,IAHvJ,QAGHnO,EAHG,SAKiB,MAAfA,EAAIkO,QACX,EAAK7Q,SAAS,CAAEuoB,mBAAmB,IAN9B,2C,EASb1G,SAAW,SAAAjZ,GAAM,IAAD,IACUA,EAAE0K,OAAlBhO,EADM,EACNA,KAAMmW,EADA,EACAA,MACRA,EAAMzX,OAAS,IAGnByX,EAAQA,EAAMiN,QAAQ,UAAW,IACjC,EAAK1oB,UAAL,mBACKsF,EAAOmW,GADZ,6BAEiB,GAFjB,4BAGgB,GAHhB,IAIG,WACC,IAAIkN,EAAMjT,SAASpQ,EAAKsjB,OAAOtjB,EAAKtB,OAAS,EAAG,IAAM,EAClD4d,EAAQzV,SAAS0c,kBAAT,gBAAoCF,IAAO,GACvDlN,GAASmG,GAASA,EAAMkH,QAExB,EAAKC,kB,EAIbC,UAAY,SAAApgB,GAAM,IAAD,EACSA,EAAE0K,OAAlBmI,EADO,EACPA,MAAOnW,EADA,EACAA,KACb,GAAkB,IAAdsD,EAAEqgB,UAAkBxN,EAAxB,CACI,IAAIkN,EAAMjT,SAASpQ,EAAKsjB,OAAOtjB,EAAKtB,OAAS,EAAG,IAAM,EAClD4d,EAAQzV,SAAS0c,kBAAT,gBAAoCF,IAAO,GACvD/G,GAASA,EAAMkH,U,EAMvBC,W,sBAAa,0CAAAxX,EAAA,2DACsD,EAAKzS,MAA9DipB,EADG,EACHA,QAASC,EADN,EACMA,QAASC,EADf,EACeA,QAASC,EADxB,EACwBA,QAASC,EADjC,EACiCA,QAASC,EAD1C,EAC0CA,UAC/CL,GAAWC,GAAWC,GAAWC,GAAWC,GAAWC,GAFlD,wBAGL,EAAKpoB,SAAS,CAAEsoB,eAAe,IAC3B1lB,EAAO,CACP0Q,OAAQ,EAAKnT,MAAM0a,MAAQ,EAAK1a,MAAM0a,MAAQiC,GAAajC,MAC3D4F,KAAK,GAAD,OAAKsH,GAAL,OAAeC,GAAf,OAAyBC,GAAzB,OAAmCC,GAAnC,OAA6CC,GAA7C,OAAuDC,IAN1D,kBASKlM,GAAoBtZ,EAAM,CAAEkO,YAAY,IAT7C,uBAUKqL,GAAsB,EAAKhc,MAAM0a,MAAQ,EAAK1a,MAAM0a,MAAQiC,GAAajC,OAV9E,OAWD,EAAK7a,SAAS,CAAEqoB,aAAa,EAAMtE,YAAY,IAX9C,kDAaD,EAAK/jB,SAAS,CAAE+jB,YAAY,IAb3B,QAeL,EAAK/jB,SAAS,CAAEsoB,eAAe,IAf1B,0D,uDA5Db,WAAqB,IAAD,OAChBtnB,OAAO6U,iBAAiB,WAAW,SAACjN,GACd,KAAdA,EAAEqgB,SAAkBrgB,EAAEsgB,SACtBC,UAAUC,UAAUC,WAAW3mB,MAAK,SAAA4mB,GAChC,IAAMC,EAAUD,EAAKZ,QAAQ,OAAQ,IACd,IAAnBa,EAAQvlB,SACIulB,EAAQxlB,MAAM,IACtBiL,SAAQ,SAACmB,EAAM7E,GACf,EAAKtL,SAAL,+BAA0BsL,EAAI,GAAM6E,OAExC,EAAK4Y,sB,oBAqEzB,WACI,OACI,kBAAC,IAAMrQ,SAAP,KACI,yBAAKpR,UAAWwL,KAAO4G,UACnB,kBAAC,GAAD,CAAMC,UAAW,sBAAuBH,UAAW,IAAKH,QAAS,EAAGE,WAAYrZ,KAAKpB,MAAMya,WAAYK,eAAgB1Z,KAAKpB,MAAM8a,kBAE3G,IAA1B1Z,KAAKpB,MAAMya,WAAmB,yBAAKjS,UAAWwL,KAAOuO,KAClD,4HACA,wGACA,uBAAG/hB,MAAO,CAAEkmB,aAAc,SAA1B,qBACA,yBAAKle,UAAS,UAAKwL,KAAO,uBAEtB,0BAAMxL,UAAWwL,KAAO0W,cAAxB,IAAwC,kBAAC5H,GAAA,EAAD,CAAOtc,KAAK,UAAUmkB,UAAU,YAAYhO,MAAOvb,KAAKpB,MAAMipB,QAASlG,SAAU3hB,KAAK2hB,YAC9H,0BAAMva,UAAWwL,KAAO0W,cAAxB,IAAwC,kBAAC5H,GAAA,EAAD,CAAOtc,KAAK,UAAUmW,MAAOvb,KAAKpB,MAAMkpB,QAASnG,SAAU3hB,KAAK2hB,SAAUmH,UAAW9oB,KAAK8oB,aAClI,0BAAM1hB,UAAWwL,KAAO0W,cAAxB,IAAwC,kBAAC5H,GAAA,EAAD,CAAOtc,KAAK,UAAUmW,MAAOvb,KAAKpB,MAAMmpB,QAASpG,SAAU3hB,KAAK2hB,SAAUmH,UAAW9oB,KAAK8oB,aAClI,0BAAM1hB,UAAWwL,KAAO0W,cAAxB,IAAwC,kBAAC5H,GAAA,EAAD,CAAOtc,KAAK,UAAUmW,MAAOvb,KAAKpB,MAAMopB,QAASrG,SAAU3hB,KAAK2hB,SAAUmH,UAAW9oB,KAAK8oB,aAClI,0BAAM1hB,UAAWwL,KAAO0W,cAAxB,IAAwC,kBAAC5H,GAAA,EAAD,CAAOtc,KAAK,UAAUmW,MAAOvb,KAAKpB,MAAMqpB,QAAStG,SAAU3hB,KAAK2hB,SAAUmH,UAAW9oB,KAAK8oB,aAClI,kBAACpH,GAAA,EAAD,CAAOtc,KAAK,UAAUmW,MAAOvb,KAAKpB,MAAMspB,QAASvG,SAAU3hB,KAAK2hB,SAAUmH,UAAW9oB,KAAK8oB,aAE7F9oB,KAAKpB,MAAMilB,YAAc,kBAAC,GAAD,CAAOzc,UAAS,UAAKwL,KAAO,iBAAmBnT,KAAK,UAAU2O,QAAQ,8CAEhG,yBAAKhH,UAAWwL,KAAO4W,aACnB,0BAAMnkB,QAASrF,KAAKsoB,YAApB,IAAkCtoB,KAAKpB,MAAMypB,mBAAqB,kBAAC7G,GAAA,EAAD,CAASpiB,MAAO,CAAEqqB,YAAa,QAAUliB,KAAK,KAAKlI,MAAM,SAA3H,eACA,kBAACya,GAAA,EAAD,CAAQzU,QAASrF,KAAK6e,OAAQxf,MAAM,UAAUkI,KAAK,KAAKiP,UAAWxW,KAAKpB,MAAMupB,aAAcnoB,KAAKpB,MAAMwpB,eAAiB,kBAAC5G,GAAA,EAAD,CAASpiB,MAAO,CAAEqqB,YAAa,QAAUliB,KAAK,KAAKlI,MAAM,SAAjL,cAEC,yBAAK+H,UAAWwL,KAAOuO,KACxB,oHAAyF,6BAAzF,yFAGA,wJACA,uBAAGtQ,KAAK,6BAA6BuC,OAAO,SAASC,IAAI,uBAAzD,8B,GA5HIlT,aAmIbuH,eAAWkgB,ICtIpB8B,G,4MACF9qB,MAAQ,CACJ8a,eAAgB,oCAAE,0BAAMta,MAAO,CAAE8hB,WAAY,SAA3B,YAAF,IAAwDtE,GAAa6H,kBAAoB3lB,aAAaC,QAAQ,YAAc,K,EAGhJ4qB,SAAW,WACP,IAAMvE,EAAYxI,GAAawI,WAAatmB,aAAaC,QAAQ,aAC7DqmB,EACAtkB,OAAOS,SAASinB,QAAQpD,GAExB,EAAKnlB,MAAMqF,QAAQC,KAAK,CAAE/D,SAAU,oB,4CAI5C,WACI,OACI,kBAAC,IAAMgX,SAAP,KACI,yBAAKpR,UAAWwL,KAAO4G,UACnB,kBAAC,GAAD,CAAMC,UAAW,aAAcH,UAAW,IAAKH,QAAS,EAAGE,WAAY,MAAOK,eAAgB1Z,KAAKpB,MAAM8a,kBAE7G,yBAAKtS,UAAWwL,KAAOuO,KACnB,yMACA,yBAAK/Z,UAAWwL,KAAO4W,aACnB,uBAAGpW,OAAO,SAASC,IAAI,sBAAsBxC,KAAK,8BAAlD,wBACA,kBAACiJ,GAAA,EAAD,CAAQzU,QAASrF,KAAK2pB,SAAUtqB,MAAM,UAAUkI,KAAK,MAArD,kB,GAxBIpH,aAgCbuH,eAAWgiB,ICjCpBA,G,4MACF9qB,MAAQ,CACJ8a,eAAgB,wCAAG,0BAAMta,MAAO,CAAE8hB,WAAY,SAA3B,UAAH,KAAwDtE,GAAajC,OAAS,GAA9E,M,EAEpByM,OAAS,WACL,EAAKnnB,MAAM8e,aAAa,I,4CAE5B,WACI,OACI,kBAAC,IAAMvG,SAAP,KACI,yBAAKpZ,MAAO,CAAEwqB,UAAW,SACrB,uBAAGxqB,MAAO,CAAEyqB,SAAU,SAAUvE,aAAc,OAAQwE,OAAQ,OAAQC,WAAY,WAAlF,gCACA,uBAAG3qB,MAAO,CAAEkmB,aAAc,SAAWtlB,KAAKpB,MAAM8a,iBAEpD,yBAAKtS,UAAWwL,KAAOuO,KACnB,yIACA,uKACA,yBAAK/Z,UAAWwL,KAAO4W,aACnB,uBAAG3Y,KAAK,uCAAuCuC,OAAO,SAAtD,iCACA,kBAAC0G,GAAA,EAAD,CAAQzU,QAASrF,KAAKonB,OAAQ3B,SAAO,EAACle,KAAK,MAA3C,e,GAnBIpH,aCStB6pB,GAAoB,CACtBC,EAAGpN,GACHqN,EAAGxE,GACHyE,EAAGzC,GACH0C,EAAGxG,GACHyG,EAAGzC,GACH0C,EAAGZ,GACHa,EDWW7iB,YAAWgiB,ICVtBc,E,4MChBA5rB,MAAQ,CACJoe,eAAgB,I,EAGpByN,aAAe,WACX,EAAKxqB,MAAM8e,aAAa,EAAG,GAAI,EAAKngB,MAAMoe,iB,EAQ9C0N,oBAAsB,WAClB,IAAMrmB,EAAYvF,aAAaC,QAAQ,iBACnCsF,EACAvD,OAAOS,SAASinB,QAAhB,wBAAyCnkB,IAEzCvD,OAAOS,SAAW,kB,uDAV1B,WACI,IAAIyb,EAAiBhd,KAAKC,MAAM+c,eAChChd,KAAKF,SAAS,CAAEkd,eAAgBA,M,oBAYpC,WACI,OACI,kBAAC,IAAMxE,SAAP,KACI,yBAAKpR,UAAWwL,KAAO+X,kBAAvB,cACA,yBAAKvjB,UAAWwL,KAAOgY,OAAQ5qB,KAAKC,MAAMmO,SAC1C,yBAAKhH,UAAWwL,KAAOiY,oBACnB,uBAAGzX,OAAO,SAASC,IAAI,sBAAsBxC,KAAK,8BAAlD,wBACA,kBAACiJ,GAAA,EAAD,CAAQzU,QAASrF,KAAK0qB,oBAAqBrrB,MAAM,UAAUkI,KAAK,MAAhE,YAEJ,yBAAKH,UAAWwL,KAAOkY,YAAY,kBAAC,IAAD,CAAMzjB,GAAG,IAAIhC,QAASrF,KAAKyqB,cAA3B,qC,GAhCEtqB,cDqB/C4qB,G,4MACFnsB,MAAQ,CACJosB,cAAehB,GAAkB,GACjCiB,cAAe,GACf7c,QAAS,GACT4O,eAAgB,I,EAGpBkO,kBAAoB,WACDpsB,aAAaC,QAAQ,aAEhCgE,IAAgBP,MAAK,SAAA2oB,GACjBrsB,aAAae,QAAQ,WAAYsrB,MAIrC,EAAKlrB,MAAMmrB,aAAe,EAAKnrB,MAAMmrB,YAAc,GACnD,EAAKtrB,SAAS,CACVkrB,cAAehB,GAAkB,EAAK/pB,MAAMmrB,eAIhD,EAAKnrB,MAAM0a,OACX,EAAK7a,SAAS,CACVmrB,cAAe,EAAKhrB,MAAM0a,S,EAKtCoE,aAAe,SAACsM,GAA6C,IAAvCjd,EAAsC,uDAA5B,GAAI4O,EAAwB,uDAAP,GACjD,EAAKld,SAAS,CAAEkrB,cAAehB,GAAkBqB,GAAOjd,QAASA,EAAS4O,eAAgBA,K,4CAK9F,WACI,OACI,kBAAC,IAAMxE,SAAP,KACI,uBAAM5Z,MAAMosB,cAAZ,CAA0BjM,aAAc/e,KAAK+e,aAAcpE,MAAO3a,KAAKpB,MAAMqsB,cAAe7c,QAASpO,KAAKpB,MAAMwP,QAAS4O,eAAgBhd,KAAKpB,MAAMoe,sB,GAtCxI7c,aA4CbuH,eAAWqjB,IE9DpBO,G,4MACJvR,aAAe,WACb,EAAK9Z,MAAMqF,QAAQC,KAAnB,UAA2B,EAAKtF,MAAMsrB,MAAMplB,IAA5C,oB,4CAGF,WAAU,IAAD,OACDolB,EAAQvrB,KAAKC,MAAMsrB,MACnBC,EAA2C,oBAAjCxrB,KAAKC,MAAMsB,SAASC,SACpC,OACE,yBAAK4F,UAAS,UAAKwL,KAAO,oBACxB,yBAAKxL,UAAWwL,KAAO6Y,cACrB,yBAAKrkB,UAAWwL,KAAO8Y,oBAEzB,yBAAKtkB,UAAWwL,KAAO+Y,kBACvB,yBAAKvkB,UAAWwL,KAAO/L,cACrB,yBAAKO,UAAW0L,KAAGF,KAAOgZ,aAAcJ,GAAW5Y,KAAOiZ,YACxD,yBAAKzkB,UAAU,eACb,yBACEA,UAAWwL,KAAOkZ,KAClBrd,IAAI,mCACJC,IAAI,MAIP1O,KAAKC,MAAMmrB,aAAeprB,KAAKC,MAAMmrB,YAAc,EAClD,kBAAC,GAAD,CACEA,YAAaprB,KAAKC,MAAMmrB,YACxBzQ,MAAO3a,KAAKC,MAAM0a,QAGpB,oCACE,kBAAC,IAAD,CACEoR,OAAK,EACLC,KAAI,UAAKT,EAAMplB,IAAX,UACJ8lB,OAAQ,WACN,OAAO,kBAAC,GAAD,CAAelS,aAAc,EAAKA,kBAG7C,kBAAC,IAAD,CACEgS,OAAK,EACLC,KAAI,UAAKT,EAAMplB,IAAX,kBACJwG,UAAWoe,a,GAzCN5qB,aAoDRuH,eAAWhJ,YAAiB4sB,KCzDtBY,G,uKAEjB,WACIlsB,KAAKmd,iB,iEAGT,8BAAA9L,EAAA,6DACQ8a,EAASnsB,KAAKosB,YAAY,UAC1BC,EAAQrsB,KAAKosB,YAAY,SAFjC,Sd0B8BhgB,EcvBW,CAAE+f,SAAQE,SduBfjb,OcvBbkb,EdwBhBtb,GAAW3B,KAAK,0BAA2BjD,EAAMgF,Gc3BxD,OAI0B,MAJ1B,OAIeT,QACP4b,MAAM,4BALd,iCd0B6B,IAACngB,EAAMgF,Ic1BpC,Y,+EASA,SAAYhM,GACR,IAAIonB,EAAM,IAAIC,OAAO,QAAUrnB,EAAO,iBAClCS,EAAI/E,OAAOS,SAAS+F,OAAOohB,OAAO,GAAG6C,MAAMiB,GAC/C,OAAS,MAAL3mB,EAAkB6mB,SAAS7mB,EAAE,IAAY,O,oBAGjD,WACI,OAAO,S,GAtB2B3F,IAAMC,W,4DCC1CwsB,G,kDACF,WAAY1sB,GAAQ,IAAD,8BACf,cAAMA,IAKVrB,MAAQ,CACJguB,MAAM,GAPS,EAkBnBC,YAAc,SAACnkB,GACX,IAAMokB,EAAO,EAAKvgB,IAAIuJ,QAChB1C,EAAS1K,EAAE0K,OAEZ0Z,IAIAA,EAAKC,SAAS3Z,IACZ0Z,IAAS1Z,GACZ,EAAKtT,SAAS,CAAE8sB,MAAM,MA5BX,EAiCnBI,QAAU,WACN,EAAKltB,SAAS,CACV8sB,MAAO,EAAKhuB,MAAMguB,QAnCP,EAuCnBjmB,QAAU,WACN,EAAK7G,SAAS,CACV8sB,MAAM,KAtCV,EAAKrgB,IAAMrM,IAAM+sB,YAHF,E,qDAUnB,WACInsB,OAAO6U,iBAAiB,QAAS3V,KAAK6sB,e,kCAG1C,WACI5gB,SAAS4J,oBAAoB,QAAS7V,KAAK6sB,e,oBA8B/C,WAAU,IACED,EAAS5sB,KAAKpB,MAAdguB,KADH,EAE2C5sB,KAAKC,MAA7CwL,EAFH,EAEGA,QAASkC,EAFZ,EAEYA,UAAWoL,EAFvB,EAEuBA,MAAOxQ,EAF9B,EAE8BA,SAGnC,OACI,yBAAKnB,UAAWwL,KAAO,gBAAiBrG,IAAKvM,KAAKuM,KAC7CqgB,GAAQ,yBAAKxlB,UAAWwL,KAAO,eAAD,OAAgBjF,IAAcvO,MAAO,CAAE2Z,MAAM,GAAD,OAAKA,KAC3EtN,EACD,yBAAKrE,UAAWwL,KAAO,SAAD,OAAUjF,MAChC,0BAAMtI,QAASrF,KAAK2G,QAASS,UAAWwL,KAAM,OAAW,kBAAC,KAAD,CAAWrL,KAAK,SAE7E,0BAAMlC,QAASrF,KAAKgtB,SACfzkB,Q,GA3DCpI,aAkEtBwsB,GAAQhhB,aAAe,CACnBF,QAAS,GACTkC,UAAW,MACXuf,oBAAoB,GAITP,U,4DC1ETQ,GACI,KADJA,GAEQ,SAuECC,G,kDAnEb,WAAYntB,GAAQ,IAAD,8BACjB,cAAMA,IAKRotB,OAAS,WACP,EAAKptB,MAAMotB,OAAO,EAAKzuB,MAAM0uB,UAPZ,EASnBC,SAAW,SAAA7kB,GACT,IAAM8kB,EAAO,EAAKvtB,MAAMutB,KACpBA,GACFA,EAAK9kB,EAAG,EAAK9J,MAAM0uB,UAZJ,EAenBG,aAAe,SAAA/kB,GACb,IAAMglB,EAAW,EAAKztB,MAAMytB,SACxBA,GACFA,EAAShlB,EAAG,EAAK9J,MAAM0uB,UAhBzB,EAAK1uB,MAAQ,CACX0uB,QAASrtB,EAAMqtB,SAHA,E,mDAqBnB,WAEE,OAAO,kBAACK,GAAA,EAAD,KAAY3tB,KAAKC,MAAMsI,Y,+BAEhC,WAAqB,IAAD,EACqCvI,KAAKC,MAApD2tB,EADU,EACVA,OAAQC,EADE,EACFA,OAAQC,EADN,EACMA,WAAYC,EADlB,EACkBA,eAC9BC,EACJ,kBAACC,GAAA,EAAD,KACE,kBAACnU,GAAA,EAAD,eACEza,MAAM,YACNgG,QAASrF,KAAKytB,cACVztB,KAAKC,MAAMiuB,mBAEdJ,GAAcX,IAEjB,kBAACrT,GAAA,EAAD,eACEza,MAAM,UACNI,KAAMouB,EACNM,QAASJ,EACT1oB,QAASrF,KAAKutB,UACVvtB,KAAKC,MAAMmuB,eAEdR,GAAUT,KAUjB,YALwBztB,IAAtBM,KAAKC,MAAMouB,OACTL,EAEE,kBAACC,GAAA,EAAD,KAAcjuB,KAAKC,MAAMouB,U,oBAIjC,WACE,IAAMnmB,EAAYlI,KAAKC,MAAMiI,WAAa,MAC1C,OACE,kBAAComB,GAAA,EAAD,iBAAWtuB,KAAKC,MAAhB,CAAuBmH,UAAS,UAAKc,EAAL,gBAC9B,kBAACqmB,GAAA,EAAD,CAAalB,OAAQrtB,KAAKqtB,QAASrtB,KAAKC,MAAMgH,OAC7CjH,KAAKwuB,kBACLxuB,KAAKyuB,yB,GA9DYvuB,IAAMC,WCL1BgtB,GACI,KADJA,GAEQ,SAERuB,GAAgB,SAAAzuB,GACpB,IAAMiI,EAAYjI,EAAMiI,WAAa,MAC/B0lB,EAAS3tB,EAAM2tB,OAAS3tB,EAAM2tB,OAAST,GACvCW,EAAa7tB,EAAM6tB,WAAa7tB,EAAM6tB,WAAaX,GACnDwB,IAAY1uB,EAAM0uB,UAAW1uB,EAAM0uB,SAyBzC,OACE,kBAACL,GAAA,EAAD,iBAAWruB,EAAX,CAAkBmH,UAAS,UAAKc,EAAL,gBACzB,kBAACqmB,GAAA,EAAD,CAAalB,OAXF,WACb,IAAM1mB,EAAU1G,EAAM0G,QAClBA,GACFA,IAGF1G,EAAM2I,UAK0B3I,EAAMgH,OACpC,kBAAC0mB,GAAA,EAAD,KAAY1tB,EAAMwL,SAClB,kBAACwiB,GAAA,EAAD,KACGU,GAAY,kBAAC7U,GAAA,EAAD,CAAQza,MAAM,YAAYgG,QAtBxB,SAACqD,GACpB,IAAMglB,EAAWztB,EAAMytB,SACnBA,GACFA,EAAShlB,GAGXzI,EAAM2I,UAiBCklB,GAEH,kBAAChU,GAAA,EAAD,CAAQza,MAAM,UAAUgG,QAhCb,SAACqD,GAChB,IAAM8kB,EAAOvtB,EAAMutB,KACfA,GACFA,EAAK9kB,GAEPzI,EAAM2I,UA4BCglB,MAMI,SAASgB,GAAQ3uB,GAC9B,IAAM+L,EAAMC,SAASC,cAAc,OACnCD,SAASG,KAAKD,YAAYH,GAC1B,IAAI6iB,EAAY,2BAAQ5uB,GAAR,IAAe6uB,QAAQ,EAAMlmB,MAC7C,WAKEqjB,EAJA4C,EAAY,2BACPA,GADO,IAEVC,QAAQ,KAMYxiB,yBAAgCN,IACjCA,EAAIa,YACvBb,EAAIa,WAAWC,YAAYd,MAI/B,SAASigB,EAAOhsB,GACdqM,SAAgB,kBAAC,GAAkBrM,GAAW+L,GAEhDigB,EAAO4C,GCtETP,GAAMnhB,KAAO,SAAUlN,GAOrB,OAAO2uB,GANK,aACVnvB,KAAM,OACNsvB,SAAU,cACVJ,UAAU,GACP1uB,KAKPquB,GAAMphB,QAAU,SAAUjN,GAOxB,OAAO2uB,GANK,aACVnvB,KAAM,UACNsvB,SAAU,eACVJ,UAAU,GACP1uB,KAKPquB,GAAMlhB,MAAQ,SAAUnN,GAOtB,OAAO2uB,GANK,aACVnvB,KAAM,QACNsvB,SAAU,eACVJ,UAAU,GACP1uB,KAKPquB,GAAMrhB,QAAUqhB,GAAMU,KAAO,SAAU/uB,GAOrC,OAAO2uB,GANK,aACVnvB,KAAM,UACNsvB,SAAU,qBACVJ,UAAU,GACP1uB,KAKPquB,GAAMM,QAAU,SAAU3uB,GAMxB,OAAO2uB,GALK,aACVnvB,KAAM,UACNkvB,UAAU,GACP1uB,KAKQquB,UClCTW,G,kDACJ,aAAe,IAAD,8BACZ,gBAoBF/D,kBAAoB,WAClB,IAAIgE,EACEC,KAAmBvtB,MAAM,EAAK3B,MAAMsB,SAAS+F,QAAQ8nB,WAAa,GACxEtwB,aAAae,QAAQ,gBAArB,qBAAoD0oB,mBAAmB2G,KACvE,IAAIG,EAAYF,KAAmBvtB,MAAMstB,GACrCI,EACDD,EAAUE,cACTF,EAAUE,aACP/G,QAAQ,YAAa,IACrBA,QAAQ,UAAW,KACxB,GACF1pB,aAAae,QAAQ,kBAAmByvB,GACxC,IAAM9uB,EAAY6uB,EAAU,yCAExB7uB,EACF1B,aAAae,QAAQ,WAAYW,GAEjCuC,IAAgBP,MAAK,SAAA2oB,GACnBrsB,aAAae,QAAQ,WAAYsrB,MAIrC,EAAKrrB,SAAS,CAAEovB,cAEhBlrB,cAA+BxB,MAAK,SAAA2oB,GAClC,EAAKrrB,SAAS,CAAE0vB,6BAA8BrE,OAGhD7nB,IAAcd,MAAK,SAAA2oB,GACf,EAAKrrB,SAAS,CAAEwD,cAAe6nB,OAGnC3nB,IAA2BhB,MAAK,SAAA2oB,GAC5B,EAAKrrB,SAAS,CAAE0D,2BAA4B2nB,OAGhDjoB,IAAyBV,MAAK,SAAA2oB,GAC1B/nB,IAA6BZ,MAAK,SAAAitB,GACZ,wBAAdjvB,GAAoE,SAA7BivB,EAAW/rB,eAClD,EAAKgsB,8BAA8BvE,UA5DnC,EAiEdwE,kBAAoB,SAAAC,GAClB,IAAMxc,EAASwc,EAAMxc,OACfmI,EAAQnI,EAAOmI,MACfnW,EAAOgO,EAAOhO,KAEpB,EAAKtF,SAAL,eAEKsF,EAAOmW,IAEV,WACE,EAAK4I,qBA3EG,EA+EdA,eAAiB,WACf,IAAM0L,EAAqBhV,GACzB,EAAKjc,MAAMqY,UACX,EACA,EACA,KAEI6Y,EAAqBjV,GACzB,EAAKjc,MAAMsb,UACX,EACA,EACA,KAGIM,EAAQqV,EAAmBrV,OAASsV,EAAmBtV,MAW7D,OATA,EAAK1a,SAAS,CACZiwB,UAAWvV,EACXwV,iBAAkBH,EAAmBrV,MACrCyV,iBAAkBH,EAAmBtV,MACrC0V,qBAAsBL,EAAmBzU,aACzC+U,qBAAsBL,EAAmB1U,aACzCgV,aAAa,IAGR5V,GAxGK,EA4GZkV,8BAAgC,SAACvE,EAAQqC,EAAME,GAC3C,IAAMjiB,EACF,mEACsC,6BADtC,sFAEuF,6BAFvF,iBAGmB,IACf,uBACI2H,OAAO,SACPC,IAAI,sBACJxC,KAAMsa,GAET,IALD,2BAOK,IAXT,gGAeJmD,GAAMnhB,KAAK,CACP1B,UACAmiB,OAAQ,KACRJ,KAAM,WACFA,GAAQA,KAEZ7mB,QAAS,WACL+mB,GAAYA,QApIZ,EAyId2C,mBAAqB,SAAC7C,EAAME,GAC1B,IAAMjiB,EACJ,6DAC+B,IAC7B,uBACE2H,OAAO,SACPC,IAAI,sBACJxC,KAAK,mCAEJ,IALH,wBAOK,IATP,uEAaFyd,GAAMnhB,KAAK,CACT1B,UACAmiB,OAAQ,QACRJ,KAAM,WACJA,GAAQA,KAEV7mB,QAAS,WACP+mB,GAAYA,QA/JJ,EAoKdrxB,WAAa,SAAAqM,GACX,EAAK5I,SAAS,CACZwwB,cAAe,EAAK1xB,MAAM0xB,gBAtKhB,EA0KdC,MA1Kc,uCA0KN,WAAM7nB,GAAN,2BAAA2I,EAAA,sDACN3I,EAAE0X,iBACIoQ,EAAe,EAAKrM,iBAC1B,EAAKrkB,SAAS,CAAE+jB,YAAY,EAAMkM,WAAW,IACzCS,IAAe,EACuC,EAAK5xB,MAArDqY,EADQ,EACRA,SAAUiD,EADF,EACEA,SAAUoW,EADZ,EACYA,aAAcpB,EAD1B,EAC0BA,UACtCuB,EACF,oCACE,8BAAO,EAAKxwB,MAAMF,UAAU,wBAC5B,0BAAMqH,UAAWwL,KAAO8d,aACtB,uBAAG7f,KAAK,wBACL,EAAK5Q,MAAMF,UAAU,mBAG1B,8BAAO,EAAKE,MAAMF,UAAU,gBAC5B,0BAAMqH,UAAWwL,KAAO8d,aACtB,uBACEtd,OAAO,SACPC,IAAI,sBACJxC,KAAK,oCAEJ,EAAK5Q,MAAMF,UAAU,yBAK9BoR,GACE,CACEwf,SAAU1Z,EACViD,WACA0W,cAAeN,EACfpB,aAEF,CAAEte,YAAY,IAEbpO,MAAK,SAAAC,GACJ,IAAMouB,EAAe,WACnB,GAAIpuB,EAAIC,KAAKkC,UAAW,CACtB,IAAIA,EAAYnC,EAAIC,KAAKkC,WAAa,GACtC9F,aAAae,QAAQ,gBAAiB8B,KAAK8N,UAAU7K,IAGvD9F,aAAae,QAAQ,YAAY,GACjC,IAAIixB,EAAiB5B,EACjBzsB,EAAIC,KAAKquB,kBAAoBtuB,EAAIC,KAAKsuB,oBACxCF,EAAiBruB,EAAIC,KAAKsuB,mBAExBF,GAAqC,MAAnBA,EAEpBhwB,OAAOS,SAASinB,QAAQsI,IAGpB,EAAK7wB,MAAMsB,SAAS0vB,iBACtBnyB,aAAae,QACX,wBACA,EAAKI,MAAMsB,SAAS0vB,iBAGxBlvB,IAAY9F,WAIZwG,EAAIC,KAAKvB,OACPsB,EAAIC,KAAKvB,KAAK+vB,iBAChBL,IAEA,EAAKR,oBACH,WACE9e,GAAY9O,EAAIC,KAAKvB,KAAKkF,IAAI7D,MAAK,WACjCquB,UAGJ,WACE,EAAK/wB,SAAS,CACZ+jB,YAAY,EACZkM,WAAW,EACXK,aAAa,WAOxB1f,OAAM,SAAAtD,GACL,IAAIuD,EACFvD,EAAM2C,UAAY3C,EAAM2C,SAASY,OAC7BvD,EAAM2C,SAASY,OACf,KACFwgB,EAAc/jB,EAAM2C,SAASX,QAAQ,gBACzC,OAAQuB,GACN,KAAK,IACiB,QAAhBwgB,EACFV,EACE,oCACE,uGAEiB,KAEjB,0BAAMrpB,UAAWwL,KAAO8d,aACtB,uBACEtd,OAAO,SACPC,IAAI,sBACJxC,KAAK,oCAHP,gCADF,MAYqB,QAAhBsgB,EACTV,EACE,oCACE,8BAAO,EAAKxwB,MAAMF,UAAU,wBAC5B,8BAAO,EAAKE,MAAMF,UAAU,gBAC5B,0BAAMqH,UAAWwL,KAAO8d,aACtB,uBACEtd,OAAO,SACPC,IAAI,sBACJxC,KAAK,oCAEJ,EAAK5Q,MAAMF,UAAU,yBAKL,QAAhBoxB,EACTV,EACE,oCACE,8BACG,EAAKxwB,MAAMF,UAAU,4BAExB,8BAAO,EAAKE,MAAMF,UAAU,gBAC5B,0BAAMqH,UAAWwL,KAAO8d,aACtB,uBACEtd,OAAO,SACPC,IAAI,sBACJxC,KAAK,oCAEJ,EAAK5Q,MAAMF,UAAU,yBAKL,QAAhBoxB,IACTV,EACE,oCACE,8BACG,EAAKxwB,MAAMF,UAAU,2BAExB,8BAAO,EAAKE,MAAMF,UAAU,gBAC5B,0BAAMqH,UAAWwL,KAAO8d,aACtB,uBACEtd,OAAO,SACPC,IAAI,sBACJxC,KAAK,oCAEJ,EAAK5Q,MAAMF,UAAU,0BAOhC,EAAKD,SAAS,CACZswB,aAAa,EACbL,WAAW,EACX3hB,QAASqiB,IAEX,MACF,QACE,EAAK3wB,SAAS,CACZswB,aAAa,EACbL,WAAW,EACX3hB,QAASqiB,SA9Kf,2CA1KM,wDA+VdW,uBAAyB,SAAA1oB,GACnB,EAAK9J,MAAMswB,WACbpwB,aAAae,QACX,gBADF,qBAEgB0oB,mBAAmB,EAAK3pB,MAAMswB,aAGhD,EAAKjvB,MAAMqF,QAAQC,KAAK,oBApWxB,EAAK3G,MAAQ,CACXwxB,aAAa,EACbJ,iBAAiB,EACjBE,qBAAsB,GACtBD,iBAAiB,EACjBE,qBAAsB,GACtBtM,YAAY,EACZkM,WAAW,EACX9Y,SAAU,GACViD,SAAU,GACVoW,cAAc,EACdliB,QAAS,GACT8gB,UAAW,GACXM,8BAA8B,EAC9BlsB,cAAe,GACfE,4BAA4B,GAjBlB,E,0CAyWd,WAAU,IAAD,OAEDiI,EACJ,yIAGE,6BACA,6BAJF,4CASF,OACE,kBAAC,IAAM+M,SAAP,KACE,yBAAKpR,UAAS,UAAKwL,KAAO,uBACxB,yBAAKxL,UAAWwL,KAAO6Y,cACrB,yBAAKrkB,UAAWwL,KAAO8Y,oBAEzB,yBAAKtkB,UAAWwL,KAAO+Y,kBACvB,yBAAKvkB,UAAWwL,KAAO/L,cACrB,yBAAKO,UAAU,eACb,yBACEA,UAAWwL,KAAOrM,IAClBkI,IAAI,mCACJC,IAAI,UAGR,wBAAItH,UAAU,eAAd,YACA,kBAACiqB,GAAA,EAAD,CAAMC,SAAUtxB,KAAKuwB,OACnB,kBAACnP,GAAA,EAAD,KACE,kBAACE,GAAA,EAAD,CAAOC,IAAI,YAAX,QAEGvhB,KAAKpB,MAAMilB,YAAc7jB,KAAKpB,MAAMoxB,iBACnC,0BAAM5oB,UAAU,WAAhB,MAGJ,kBAACsa,GAAA,EAAD,CACE6H,UAAU,YACV9pB,KAAK,OACL2F,KAAK,WACLiB,GAAG,WACHkV,MAAOvb,KAAKpB,MAAMqY,SAClB7P,UAAS,UAzCL,MAyCK,SACTua,SAAU3hB,KAAK2vB,qBAInB,kBAACvO,GAAA,EAAD,KACE,kBAACE,GAAA,EAAD,CAAOC,IAAI,YAAX,WAEGvhB,KAAKpB,MAAMilB,YAAc7jB,KAAKpB,MAAMqxB,iBACnC,0BAAM7oB,UAAU,WAAhB,MAGJ,kBAAC,GAAD,CACE+b,UAAU,WACV/b,UAAS,UAvDL,MAuDK,SACTgc,YAAY,IACZzB,SAAU,SAAAjZ,GAAC,OAAI,EAAKinB,kBAAkBjnB,IACtC0S,aAAcpb,KAAKpB,MAAMuxB,wBAI7B,yBAAK/oB,UAAS,UAAKwL,KAAO,kBACxB,yBAAKxL,UAAWwL,KAAO2e,UACrB,kBAAChM,GAAA,EAAD,CACE9lB,KAAK,WACL2F,KAAK,aACLiB,GAAG,aACHX,MAAM,oBACN0B,UAAS,UArEP,MAqEO,SACTid,QAASrkB,KAAKpB,MAAM0xB,aACpB3O,SAAU3hB,KAAK3D,aAEjB,kBAAC,GAAD,CAAS0c,MAAO,QAAStN,QAASA,GAChC,8BACE,kBAAC,KAAD,CAAUrE,UAAS,UAAKwL,KAAO,mBAIrC,kBAACkH,GAAA,EAAD,CACEra,KAAK,SACLJ,MAAM,UACNkI,KAAK,KACLiP,UAAWxW,KAAKpB,MAAMmxB,WAJxB,YASF,kBAAC,IAAD,CAAM1oB,GAAG,wBAAT,kBACCrH,KAAKpB,MAAM4E,4BACT,yBAAK4D,UAAWwL,KAAO4e,oBACpB,6BACI,yBAAKpqB,UAAWwL,KAAO6e,QACnB,yBAAKhjB,IAAI,iCAAiCC,IAAI,MAAMtH,UAAWwL,KAAO8e,YAE1E,yBAAKtqB,UAAWwL,KAAO+e,WAAvB,aACA,yBAAKvqB,UAAWwL,KAAOgf,WACnB,uBACIxe,OAAO,SACPC,IAAI,sBACJxC,KAAM7Q,KAAKpB,MAAM0E,eAHrB,gBAOR,yEAELtD,KAAKpB,MAAMwxB,aACV,kBAAC,GAAD,CAAO3wB,KAAK,UAAU2O,QAASpO,KAAKpB,MAAMwP,WAI7CpO,KAAKpB,MAAM4wB,8BACV,yBAAKpoB,UAAS,UAAKwL,KAAOif,UAAZ,iBACZ,uBAAGzqB,UAAWwL,KAAOoH,QAArB,sCAGA,0BACE5S,UAAWwL,KAAO8d,YAClBrrB,QAASrF,KAAKoxB,wBAFhB,6B,GA/dIjxB,aA8eLuH,eAAWhJ,YAAiBuwB,K,8BC1f9B6C,GAAkB,uCAAG,WAAOnX,EAAOyB,GAAd,SAAA/K,EAAA,sEACjBL,GAAWE,IAAX,yBAAiCyJ,EAAjC,2CAAyE4N,mBAAmBnM,KAD3E,mFAAH,wDCKV2V,G,kDACjB,aAAe,IAAD,8BACV,gBAGJnzB,MAAQ,CACJ+b,MAAO,GACPqX,YAAY,EACZC,iBAAkB,GAClBC,WAAW,EACXC,kBAAkB,EAClB/V,gBAAiB,GACjBgM,eAAe,GAXL,EAsCdgK,eAAiB,SAAA1pB,GACbA,EAAEoa,UACF,EAAKpI,cAAc,QAAShS,EAAE0K,OAAOmI,QAxC3B,EA2Cd+V,SAAW,SAAC5oB,GACR,EAAK5I,SAAS,CAAEsoB,eAAe,IAC/B,IAAIhM,EAA8D,cAA5Ctd,aAAaC,QAAQ,mBAAqCD,aAAaC,QAAQ,mBAAqB,GAC1H2J,EAAE0X,iBACE,EAAKxhB,MAAMozB,YACXF,GAAmB,EAAKlzB,MAAM+b,MAAOyB,GAChC5Z,MAAK,SAAAC,GACE,CAAC,IAAK,KAAKmN,SAASnN,EAAIkO,UACxB,EAAK7Q,SAAS,CAAEsoB,eAAe,IAC/B,EAAKnoB,MAAMqF,QAAQC,KAAK,4BAG/BmL,OAAM,SAAAtD,GAAWilB,QAAQC,IAAIllB,GAAQ,EAAKtN,SAAS,CAAEsoB,eAAe,QArD7E,EAAK1N,cAAgBwE,oBAAS,EAAKxE,cAAe,KAFxC,E,iDAcd,SAAcnb,EAAKgc,GACfA,EAAQA,EAAMF,OADQ,MAEGX,GAAca,GAAjCf,EAFgB,EAEhBA,MAAOpM,EAFS,EAETA,QACbpO,KAAKuyB,gBAAgB,CAAEhzB,MAAKgc,QAAOf,QAAOpM,c,6BAG9C,YAAiD,IAAD,EAA9B7O,EAA8B,EAA9BA,IAAKgc,EAAyB,EAAzBA,MAAOf,EAAkB,EAAlBA,MAAOpM,EAAW,EAAXA,QAC7BoM,EACAxa,KAAKF,SAAS,CACVqyB,kBAAkB,IAGtBnyB,KAAKF,SAAS,CACVqyB,kBAAkB,IAG1BnyB,KAAKF,UAAL,mBACKP,EAAMgc,GADX,cAEKhc,EAAM,QAAUib,GAFrB,2BAGgBA,GAHhB,cAIKjb,EAAM,cAAgB6O,GAJ3B,M,oBA6BJ,WACI,IAAM/J,EAAYvF,aAAaC,QAAQ,iBAEvC,OACI,kBAAC,IAAMyZ,SAAP,KACI,yBAAKpR,UAAWwL,KAAOqF,QAAvB,kBACA,yBAAK7Q,UAAWwL,KAAOgY,OAAvB,yFACA,kBAACyG,GAAA,EAAD,CAAMC,SAAUtxB,KAAKsxB,UACjB,kBAAClQ,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,cACA,kBAACI,GAAA,EAAD,CAAOta,UAAS,UARd,MAQc,SAAuBua,SAAU3hB,KAAKoyB,kBAE1D,yBAAKhrB,UAAS,UAAKwL,KAAO4W,YAAZ,YAA2B5W,KAAO,2BAC5C,kBAAC,IAAD,CAAMvL,GAAI,CACN7F,SAAU,iBACV8F,OAAQjD,IAFZ,qBAMA,kBAACyV,GAAA,EAAD,CACIra,KAAK,SACLJ,MAAM,UACNkI,KAAK,KACLiP,SAAUxW,KAAKpB,MAAMuzB,kBAAoBnyB,KAAKpB,MAAMwpB,cACpDhhB,UAAWwL,KAAO4P,aACjBxiB,KAAKpB,MAAMwpB,eAAiB,kBAAC5G,GAAA,EAAD,CAASpa,UAAWwL,KAAO6O,QAASla,KAAK,KAAKlI,MAAM,SANrF,YAYJW,KAAKpB,MAAMszB,WAAa,kBAAC,GAAD,CAAOzyB,KAAK,UAAU2O,QAASpO,KAAKpB,MAAMqzB,wB,GA3FtC9xB,aCP3BqyB,G,4JACjB,WACI,IAAMnuB,EAAYvF,aAAaC,QAAQ,iBACvC,OACI,kBAAC,IAAMyZ,SAAP,KACI,yBAAKpR,UAAWwL,KAAOqF,QAAvB,cACA,yBAAK7Q,UAAWwL,KAAOgY,OAAvB,8FACA,yBAAKxjB,UAAWwL,KAAO4W,aACnB,kBAAC,IAAD,CAAMniB,GAAI,CACN7F,SAAU,iBACV8F,OAAQjD,IAFZ,2B,GAR4BlE,aCA3BsyB,G,4JACjB,WACI,IAAMrtB,EAAO+pB,KAAmBvtB,MAAM5B,KAAKC,MAAMsB,SAAS+F,QAAQlC,KAC5DkqB,EAAkBH,KAAmBvtB,MAAM5B,KAAKC,MAAMsB,SAAS+F,QAAQgoB,gBAC7E,MAAa,kBAATlqB,EAEI,kBAAC,IAAMoT,SAAP,KACI,yBAAKpR,UAAWwL,KAAOqF,QAAvB,+BACA,yBAAK7Q,UAAWwL,KAAOgY,OAAvB,yDACA,yBAAKxjB,UAAWwL,KAAO4W,aACnB,uBAAG3Y,KAAOye,GAAuC,OAApBA,GAAgD,cAApBA,EAAmCA,EAAkB,iBAAkBloB,UAAS,UAAKwL,KAAO8f,UAAZ,YAAyB9f,KAAO7E,QAAzK,uBAMH,kBAAT3I,EAEI,kBAAC,IAAMoT,SAAP,KACI,yBAAKpR,UAAWwL,KAAOqF,QAAvB,kCACA,yBAAK7Q,UAAWwL,KAAOgY,OAAvB,4DACA,yBAAKxjB,UAAWwL,KAAO4W,aACnB,uBAAG3Y,KAAOye,GAAuC,OAApBA,GAAgD,cAApBA,EAAmCA,EAAkB,iBAAkBloB,UAAS,UAAKwL,KAAO8f,UAAZ,YAAyB9f,KAAO7E,QAAzK,uBAMH,uBAAT3I,EAEI,kBAAC,IAAMoT,SAAP,KACI,yBAAKpR,UAAWwL,KAAOqF,QAAvB,qCACA,yBAAK7Q,UAAWwL,KAAOgY,OAAvB,+DACA,yBAAKxjB,UAAWwL,KAAO4W,aACnB,uBAAG3Y,KAAOye,GAAuC,OAApBA,GAAgD,cAApBA,EAAmCA,EAAkB,iBAAkBloB,UAAS,UAAKwL,KAAO8f,UAAZ,YAAyB9f,KAAO7E,QAAzK,uBAML,S,GAxC+B5N,aCK5CwyB,G,4JACF,WACI,IAAIpH,EAAQvrB,KAAKC,MAAMsrB,MACvB,OACI,kBAAC,IAAM/S,SAAP,KACI,6BACI,kBAACoa,GAAA,EAAD,CAAWxrB,UAAWwL,KAAOigB,KAAO,uBAChC,yBAAKzrB,UAAU,qDACX,yBAAKA,UAAWwL,KAAOkZ,KAAMrd,IAAI,mCAAmCC,IAAI,UAG5E,kBAAC,IAAD,CAAOqd,OAAK,EAACC,KAAI,UAAKT,EAAMplB,IAAX,UAAwBwG,UAAWolB,KACpD,kBAAC,IAAD,CAAOhG,OAAK,EAACC,KAAI,UAAKT,EAAMplB,IAAX,UAAwBwG,UAAW6lB,KACpD,kBAAC,IAAD,CAAOzG,OAAK,EAACC,KAAI,UAAKT,EAAMplB,IAAX,YAA0BwG,UAAW8lB,Y,GAblDtyB,aAqBbuH,eAAWirB,I,8BCEXG,OA5Bf,YAAkC,IAAV7yB,EAAS,EAATA,MAOtB,OACE,yBAAKmH,UAAS,6BAAwBwL,KAAOmgB,eAC3C,sEAAmD,6BAAM,6BAAM,6BAC/D,+CACmB,6BADnB,kBAEiB,6BAFjB,sBAGqB,6BAHrB,gBAIe,6BAJf,oBAKmB,6BALnB,oBAMmB,6BAAM,8BAEzB,yBAAK3rB,UAAU,iBACb,kBAACga,GAAA,EAAD,KACE,kBAACtH,GAAA,EAAD,CAAQra,KAAK,SAAS4F,QAnBL,aAmBgC+B,UAAS,oBAAewL,KAAOogB,eAAiB/yB,EAAMF,UAAU,UACjH,kBAAC+Z,GAAA,EAAD,CAAQra,KAAK,SAAS4F,QAjBK,aAiBgC+B,UAAWwL,KAAOogB,cAAe/yB,EAAMF,UAAU,wBChBhHkzB,G,kDACJ,WAAYhzB,GAAQ,IAAD,8BACjB,cAAMA,IAsBRizB,UAAY,WACV,EAAKpzB,SAAS,CACZqzB,cAAe,GACfC,oBAAoB,EACpBC,mBAAoB,GACpBC,aAAc,GACdC,mBAAmB,EACnBC,kBAAmB,GACnBC,QAAS,GACTC,cAAc,EACdC,aAAc,GACdvlB,QAAS,GACTwlB,cAAc,EACdC,aAAc,GACdhQ,YAAY,EACZiQ,SAAS,EACTC,cAAe,GACfC,UAAW,MAxCI,EA4CnBhU,kBAAoB,SAACtX,GACnB,IAAMoS,EAAMpS,EAAE0K,OAAOmI,MACrB,EAAKzb,SAAS,CACZqzB,cAAerY,IACd,WAAQ,EAAKmZ,wBAhDC,EAmDnBA,kBAAoB,WAClB,IAAMC,EAAsBrZ,GAAoB,EAAKjc,MAAMu0B,eAAe,EAAM,EAAG,KAMnF,OALA,EAAKrzB,SAAS,CACZszB,mBAAoBc,EAAoB1Z,MACxC6Y,mBAAoBa,EAAoB9Y,eAGnC8Y,EAAoB1Z,OA1DV,EA6DnByF,iBAAmB,SAACvX,GAClB,IAAMoS,EAAMpS,EAAE0K,OAAOmI,MACrB,EAAKzb,SAAS,CACZwzB,aAAcxY,IACb,WAAQ,EAAKqZ,uBAjEC,EAoEnBA,iBAAmB,WACjB,IAAMC,EAAqBvZ,GAAoB,EAAKjc,MAAM00B,cAAc,EAAM,EAAG,KAMjF,OALA,EAAKxzB,SAAS,CACZyzB,kBAAmBa,EAAmB5Z,MACtCgZ,kBAAmBY,EAAmBhZ,eAGjCgZ,EAAmB5Z,OA3ET,EA8EnB6Z,gBAAkB,SAAC3rB,GACjB,IAAMoS,EAAMpS,EAAE0K,OAAOmI,MACrB,EAAKzb,SAAS,CACZ2zB,QAAS3Y,IACR,WAAQ,EAAKwZ,sBAlFC,EAqFnBA,gBAAkB,WAChB,IAAMC,EAAoB1Z,GAAoB,EAAKjc,MAAM60B,SAAS,EAAM,EAAG,KAM3E,OALA,EAAK3zB,SAAS,CACZ4zB,aAAca,EAAkB/Z,MAChCmZ,aAAcY,EAAkBnZ,eAG3BmZ,EAAkB/Z,OA5FR,EA+FnBga,gBAAkB,SAAC9rB,GACjB,IAAMoS,EAAMpS,EAAE0K,OAAOmI,MACrB,EAAKzb,SAAS,CACZsO,QAAS0M,IACR,WAAQ,EAAK2Z,sBAnGC,EAsGnBA,gBAAkB,WAChB,IAAMC,EAAoB7Z,GAAoB,EAAKjc,MAAMwP,SAAS,EAAM,EAAG,KAM3E,OALA,EAAKtO,SAAS,CACZ8zB,aAAcc,EAAkBla,MAChCqZ,aAAca,EAAkBtZ,eAG3BsZ,EAAkBla,OA7GR,EAgHnBma,aAAe,SAACjsB,KAhHG,EAmJnBksB,UAAY,WACV,EAAK90B,SAAS,CAAEg0B,SAAS,KAjJzB,EAAKl1B,MAAQ,CACXu0B,cAAe,GACfC,oBAAoB,EACpBC,mBAAoB,GACpBC,aAAc,GACdC,mBAAmB,EACnBC,kBAAmB,GACnBC,QAAS,GACTC,cAAc,EACdC,aAAc,GACdvlB,QAAS,GACTwlB,cAAc,EACdC,aAAc,GACdhQ,YAAY,EACZiQ,SAAS,EACTC,cAAe,GACfC,UAAW,IAnBI,E,0CAuJnB,WACE,OACE,kBAACpB,GAAA,EAAD,KACE,0BAAMxrB,UAAWwL,KAAOiiB,YAAavD,SAAUtxB,KAAK20B,cAClD,yBAAKvtB,UAAS,wBAAmBwL,KAAOkiB,eACtC,4BAAI,4BAAQ1tB,UAAU,kBAAkBpH,KAAKC,MAAMF,UAAU,cAE/D,yBAAKqF,KAAK,aAAagC,UAAU,YAE/B,yBAAKhC,KAAK,cAAcgC,UAAU,YAChC,kBAAC,KAAD,CAAO/H,MAAOW,KAAKpB,MAAMo1B,UAAWlF,OAAQ9uB,KAAKpB,MAAMk1B,QAASzG,OAAQrtB,KAAK40B,WAC1E50B,KAAKpB,MAAMm1B,eAEd,yBAAK3sB,UAAU,gCACb,kBAACga,GAAA,EAAD,CAAWha,UAAU,YACnB,kBAACka,GAAA,EAAD,CAAOla,UAAWwL,KAAOmiB,aAAcxT,IAAI,iBAAiBvhB,KAAKC,MAAMF,UAAU,cACjF,kBAAC2hB,GAAA,EAAD,CACEjiB,KAAK,OACL2F,KAAK,gBACLiB,GAAG,gBACHe,UAAWwL,KAAOoiB,eAClBzZ,MAAOvb,KAAKpB,MAAMu0B,cAClBrR,YAAa9hB,KAAKC,MAAMF,UAAU,kBAClC4hB,SAAU3hB,KAAKggB,kBACfwD,QAASxjB,KAAKpB,MAAMilB,aAAe7jB,KAAKpB,MAAMw0B,qBAC/CpzB,KAAKpB,MAAMilB,aAAe7jB,KAAKpB,MAAMw0B,oBACpC,kBAAC/N,GAAA,EAAD,KAAerlB,KAAKpB,MAAMy0B,qBAG9B,kBAACjS,GAAA,EAAD,CAAWha,UAAU,sBACnB,kBAACka,GAAA,EAAD,CAAOla,UAAWwL,KAAOmiB,aAAcxT,IAAI,gBAAgBvhB,KAAKC,MAAMF,UAAU,aAChF,kBAAC2hB,GAAA,EAAD,CACEjiB,KAAK,OACL2F,KAAK,eACLiB,GAAG,eACHe,UAAWwL,KAAOoiB,eAClBzZ,MAAOvb,KAAKpB,MAAM00B,aAClBxR,YAAa9hB,KAAKC,MAAMF,UAAU,iBAClC4hB,SAAU3hB,KAAKigB,iBACfuD,QAASxjB,KAAKpB,MAAMilB,aAAe7jB,KAAKpB,MAAM20B,oBAC/CvzB,KAAKpB,MAAMilB,aAAe7jB,KAAKpB,MAAM20B,mBACpC,kBAAClO,GAAA,EAAD,KAAerlB,KAAKpB,MAAM40B,qBAIhC,yBAAKpsB,UAAU,YACb,kBAACga,GAAA,EAAD,CAAWha,UAAU,aACnB,kBAACka,GAAA,EAAD,CAAOla,UAAWwL,KAAOmiB,aAAcxT,IAAI,WAAWvhB,KAAKC,MAAMF,UAAU,YAC3E,kBAAC2hB,GAAA,EAAD,CACEjiB,KAAK,OACL2F,KAAK,UACLiB,GAAG,UACHe,UAAWwL,KAAOoiB,eAClBzZ,MAAOvb,KAAKpB,MAAM60B,QAClB3R,YAAa9hB,KAAKC,MAAMF,UAAU,gBAClC4hB,SAAU3hB,KAAKq0B,gBACf7Q,QAASxjB,KAAKpB,MAAMilB,aAAe7jB,KAAKpB,MAAM80B,eAC/C1zB,KAAKpB,MAAMilB,aAAe7jB,KAAKpB,MAAM80B,cACpC,kBAACrO,GAAA,EAAD,KAAerlB,KAAKpB,MAAM+0B,gBAIhC,yBAAKvsB,UAAU,YACb,kBAACga,GAAA,EAAD,CAAWha,UAAU,aACnB,kBAACka,GAAA,EAAD,CAAOla,UAAWwL,KAAOmiB,aAAcxT,IAAI,WAAWvhB,KAAKC,MAAMF,UAAU,YAC3E,kBAAC2hB,GAAA,EAAD,CACEjiB,KAAK,WACLw1B,KAAK,IACL7vB,KAAK,UACLiB,GAAG,UACHkV,MAAOvb,KAAKpB,MAAMwP,QAClBhH,UAAWwL,KAAOoiB,eAClBlT,YAAa9hB,KAAKC,MAAMF,UAAU,gBAClC4hB,SAAU3hB,KAAKw0B,gBACfhR,QAASxjB,KAAKpB,MAAMilB,aAAe7jB,KAAKpB,MAAMg1B,eAC/C5zB,KAAKpB,MAAMilB,aAAe7jB,KAAKpB,MAAMg1B,cACpC,kBAACvO,GAAA,EAAD,KAAerlB,KAAKpB,MAAMi1B,gBAIhC,yBAAKzsB,UAAU,YACb,kBAACga,GAAA,EAAD,CAAWha,UAAU,aACnB,kBAAC0S,GAAA,EAAD,CAAQra,KAAK,SAASJ,MAAM,UAAUkI,KAAK,MAAMvH,KAAKC,MAAMF,UAAU,cAM5E,yBAAKqF,KAAK,wBAAwBgC,UAAS,mBAAcwL,KAAOsiB,yBAGhE,kBAAC,GAAD,CAAcj1B,MAAOD,KAAKC,e,GAnPdE,aA2PTuH,eAAWhJ,YAAiBu0B,K,qBC7PrCkC,G,kDAEF,aAAe,IAAD,8BACV,gBASJlzB,QAVc,sBAUJ,8BAAAoP,EAAA,sDACF+jB,EAAsBjG,KAAmBvtB,MAAM,EAAK3B,MAAMsB,SAAS+F,QACnE+tB,EAAWD,EAAoBC,SAInC/jB,GAHkB,CACd+jB,SAAUA,GAEW,CAAEzkB,YAAY,IAAQpO,MAAK,SAAAC,GAC5CA,IACA3D,aAAaw2B,WAAW,YACxB,EAAKx1B,SAAS,CACVy1B,YAAa9yB,EAAI2M,QAAQ,gBACzBomB,aAAc,WACf,WACKH,GAAY5yB,EAAI2M,QAAQ,kBACzBtO,OAAOS,SAAWkB,EAAI2M,QAAQ,wBAK1CsB,OAAM,SAAAtD,GAEL,OADaA,EAAM2C,UAAY3C,EAAM2C,SAASY,OAASvD,EAAM2C,SAASY,OAAS,MAE3E,KAAK,IACD7R,aAAaw2B,WAAW,YACxB,EAAKx1B,SAAS,CACV01B,aAAc,WAElB,MACJ,QACI,WA7BN,2CARN,EAAK52B,MAAQ,CACT22B,YAAa,GACbC,aAAc,aAJR,E,qDAOd,WACIx1B,KAAKiC,Y,oBAmCT,WACI,IAAMmM,EAAU,CACZqnB,UAAW,CACPxuB,MAAO,cACPwE,QAAS,8CAEbiqB,OAAQ,CACJzuB,MAAO,SACPwE,SAASzL,KAAKpB,MAAM22B,YAAc,+BAG1C,OACI,6BACiC,WAA5Bv1B,KAAKpB,MAAM42B,eAA8Bx1B,KAAKpB,MAAM22B,aAAe,yBAAKnuB,UAAS,UAAKwL,KAAO,uBAC1F,yBAAKnE,IAAI,mCAAmCC,IAAI,SAChD,4BAAKN,EAAQpO,KAAKpB,MAAM42B,cAAnB,OACL,uBAAGpuB,UAAS,UAAKwL,KAAO,oBAAsBxE,EAAQpO,KAAKpB,MAAM42B,cAAnB,SAC9C,6BACI,uBAAG3kB,KAAK,iBAAiBzJ,UAAS,UAAKwL,KAAO7E,QAA9C,4B,GA/DH5N,aAwENuH,eAAWhJ,YAAiBy2B,K,UCvE9BQ,GAAb,4MAEIC,gBAAkB,SAACz0B,EAAM00B,GACjB10B,GACA00B,EAAW10B,GAEf,IAAI20B,EAAwBh3B,aAAaC,QAAQ,yBAC7C+2B,GACAh3B,aAAaw2B,WAAW,yBACxB,EAAKr1B,MAAMqF,QAAQC,KAAKuwB,IAExB,EAAK71B,MAAMqF,QAAQC,KAAK,UAXpC,4CAgBI,WAAU,IAAD,OACL,OACI,kBAAC,IAAD,MACK,gBAAGswB,EAAH,EAAGA,WAAH,OACG,kBAAC,2BAAD,CACI9zB,YAAaA,IAAYg0B,QACzB7zB,WAAY,WACZ0zB,gBAAiB,SAACz0B,GAAD,OAAU,EAAKy0B,gBAAgBz0B,EAAM00B,KACtD,kBAAC,IAAD,CAAMtuB,KAAK,gBAxBnC,GAAoCpH,aAgCvB61B,GAAb,4MAEIJ,gBAAkB,SAACz0B,EAAM00B,GACjB10B,GACA00B,EAAW10B,GAEf,EAAKlB,MAAMqF,QAAQC,KAAK,UANhC,4CASI,WAAU,IAAD,OACL,OACI,kBAAC,IAAD,MACK,gBAAGswB,EAAH,EAAGA,WAAH,OACG,kBAAC,mCAAD,CACI9zB,YAAaA,IAAYg0B,QACzBH,gBAAiB,SAACz0B,GAAD,OAAU,EAAKy0B,gBAAgBz0B,EAAM00B,KACtD,kBAAC,IAAD,CAAMtuB,KAAK,gBAhBnC,GAA4CpH,a,oBCtC/B81B,GAAoB,uCAAG,WAAOC,EAAS9kB,GAAhB,eAAAC,EAAA,6DAC5BhB,EAAS,CAAE6lB,QAASA,GADQ,SAEnBllB,GAAWzO,IAAX,YAA4B,CAAE8N,UAAUe,GAFrB,mFAAH,wD,SCS3B+kB,G,kDAEF,WAAYl2B,GAAQ,IAAD,8BACf,cAAMA,IASVirB,kBAAoB,WAChB,IAAIgL,EAAU/G,KAAmBvtB,MAAM,EAAK3B,MAAMsB,SAAS+F,QAAQ4uB,QAE9B,WAAjCp1B,OAAO+M,IAAItM,SAASC,WACpBV,OAAO+M,IAAItM,SAASsP,KAApB,UAA8B/P,OAAO+M,IAAItM,SAAS60B,OAAlD,0BAA0EF,IAG1EA,IACA,EAAKp2B,SAAS,CACVu2B,kBAAkB,IAGtBJ,GAAqBC,EAAS,CAAEtlB,YAAY,IAAQpO,MAAK,SAAAC,GAClC,MAAfA,EAAIkO,QACJ,EAAK7Q,SAAS,CACVw2B,UAAW7zB,EAAIC,OAIvB,EAAK5C,SAAS,CACVu2B,kBAAkB,OAEvB3lB,OAAM,SAAA6lB,GACL,EAAKz2B,SAAS,CACVu2B,kBAAkB,SA/B9B,EAAKz3B,MAAQ,CACTy3B,kBAAkB,EAClBC,UAAW,KACXE,UAAW,EAAKv2B,MAAMw2B,MANX,E,0CAwCnB,WACI,OACI,kBAAC,IAAMje,SAAP,KACI,kBAACoa,GAAA,EAAD,CAAWxrB,UAAU,oBACjB,kBAACsvB,GAAA,EAAD,KACI,kBAACC,GAAA,EAAD,CAAKC,GAAG,MACJ,sCAKR,8BAEK52B,KAAKpB,MAAMy3B,kBAAoBr2B,KAAKpB,MAAM43B,YAAcK,KAAUC,WACnE,kBAACJ,GAAA,EAAD,KACI,kBAACC,GAAA,EAAD,CAAKC,GAAG,MACJ,2CAOX52B,KAAKpB,MAAMy3B,kBAAoB,kBAAC,IAAD,CAAM9uB,KAAK,SAGtCvH,KAAKpB,MAAMy3B,kBAAoBr2B,KAAKpB,MAAM03B,WAC3C,oCACI,6CACA,6BACA,kBAACI,GAAA,EAAD,KACI,kBAACC,GAAA,EAAD,CAAKC,GAAG,KACJ,2CAIJ,kBAACD,GAAA,EAAD,CAAKC,GAAG,KACH52B,KAAKpB,MAAM03B,UAAUS,WAG9B,kBAACL,GAAA,EAAD,KACI,kBAACC,GAAA,EAAD,CAAKC,GAAG,KACJ,uCAIJ,kBAACD,GAAA,EAAD,CAAKC,GAAG,KACH52B,KAAKpB,MAAM03B,UAAUlpB,QAG9B,kBAACspB,GAAA,EAAD,KACI,kBAACC,GAAA,EAAD,CAAKC,GAAG,KACJ,mDAIJ,kBAACD,GAAA,EAAD,CAAKC,GAAG,KACH52B,KAAKpB,MAAM03B,UAAUU,mBAG9B,kBAACN,GAAA,EAAD,KACI,kBAACC,GAAA,EAAD,CAAKC,GAAG,KACJ,2CAIJ,kBAACD,GAAA,EAAD,CAAKC,GAAG,KACH52B,KAAKpB,MAAM03B,UAAUW,cAOjCj3B,KAAKpB,MAAMy3B,mBAAqBr2B,KAAKpB,MAAM03B,YAAct2B,KAAKpB,MAAM43B,WACrE,kBAACE,GAAA,EAAD,KACI,kBAACC,GAAA,EAAD,CAAKC,GAAG,MACJ,kDAQP52B,KAAKpB,MAAMy3B,kBACZ,kBAACK,GAAA,EAAD,KACI,kBAACC,GAAA,EAAD,CAAKC,GAAG,MACJ,6BACA,kBAAC,IAAD,CAAMvvB,GAAG,KAAT,oC,GAnIZlH,aA8ILuH,eAAWhJ,YAAiBy3B,KCzF5Be,GApDA,CACX,CACIlL,KAAM,YACNrf,UAAW,kBAAM,kBAAC,GAAD,QAErB,CACIqf,KAAM,gBACNrf,UAAW,kBAAM,kBAAC,GAAD,QAErB,CACIqf,KAAM,iBACNrf,UAAW,kBAAM,kBAAC,GAAD,QAErB,CACIqf,KAAM,iBACNrf,UAAW,kBAAM,kBAAC,GAAD,QAErB,CACIqf,KAAM,WACNrf,UAAW,kBAAM,kBAAC,GAAD,QAErB,CACIqf,KAAM,kBACNrf,UAAW,kBAAM,kBAAC,GAAD,QAErB,CACIqf,KAAM,QACNmL,cAAc,EACdxqB,UAAW,kBAAM,kBAAC,GAAD,QAErB,CACIqf,KAAM,gCACNmL,cAAc,EACdxqB,UAAWyqB,gBAAK,kBAAM,kCAE1B,CACIpL,KAAM,mBACNmL,cAAc,EACdxqB,UAAWyqB,gBAAK,kBAAM,kCAE1B,CACIpL,KAAM,YACNrf,UAAWgpB,IACZ,CACC3J,KAAM,UACNrf,UAAWqpB,IACZ,CACChK,KAAM,SACNrf,UAAWwpB,KC1DNkB,GAAsB,uCAAG,WAAOC,EAAOlmB,GAAd,SAAAC,EAAA,sEACrBL,GAAWzO,IAAX,wBAAgC+0B,GAAS,KAAMlmB,GAD1B,mFAAH,wDAItBmmB,GAAkB,uCAAG,WAAOC,EAAIpmB,GAAX,SAAAC,EAAA,sEACjBL,GAAWE,IAAX,+BAA+CsmB,EAAIpmB,GADlC,mFAAH,wDAIlBqmB,GAAoB,uCAAG,WAAOC,EAAItmB,GAAX,SAAAC,EAAA,sEACnBL,GAAWE,IAAX,0BAA0CwmB,EAAItmB,GAD3B,mFAAH,wD,oBCI3BumB,G,kDACF,aAAe,IAAD,8BACV,gBAsBJzM,kBAAoB,WAChB,IAAIoM,EAAQ,GAUZ,IARInI,KAAmBvtB,MAAM,EAAK3B,MAAMsB,SAAS+F,QAAQgwB,OAASnI,KAAmBvtB,MAAM,EAAK3B,MAAMsB,SAAS+F,QAAQ+kB,SAE/GiL,EADAnI,KAAmBvtB,MAAM,EAAK3B,MAAMsB,SAAS+F,QAAQgwB,MAC7CnI,KAAmBvtB,MAAM,EAAK3B,MAAMsB,SAAS+F,QAAQgwB,MAErDnI,KAAmBvtB,MAAM,EAAK3B,MAAMsB,SAAS+F,QAAQ+kB,OAIjEiL,EAAO,CACP,IAAIM,EAAerP,mBAAmB+O,GACtCD,GAAuBO,EAAc,CAAEhnB,YAAY,IAC9CpO,MAAK,SAAAC,GACF,EAAK3C,SAAS,CACV+3B,kBAAmBp1B,EAAIC,KACvB40B,MAAOM,OAGdlnB,OAAM,SAAAtD,GACCA,EAAM2C,UAAsC,MAA1B3C,EAAM2C,SAASY,QACjC,EAAK7Q,SAAS,CACVg4B,iBAAkB1qB,EAAM2C,SAASrN,OAIzC,EAAK5C,SAAS,CACV+3B,kBAAmB,GACnBP,MAAOM,IAEXvF,QAAQC,IAAIllB,QAtDd,EA4Dd2qB,mBAAqB,SAAArvB,GACjBA,EAAE0X,iBAEF,EAAKtgB,SAAS,CACVk4B,UAAU,EACVC,qBAAqB,IAGzB,IAAIC,EAAU,CACVZ,MAAO,EAAK14B,MAAM04B,MAClBa,YAAa,EAAKv5B,MAAMsb,SACxBke,qBAAsB,EAAKx5B,MAAM2lB,iBAEjC+K,EAAkB,EAAK1wB,MAAMi5B,kBAAkBQ,YAAc9P,mBAAmB,EAAK3pB,MAAMi5B,kBAAkBQ,aAAe,GAEhId,GAAmBW,EAAS,CAAEtnB,YAAY,IACrCpO,MAAK,SAAAC,GACF,EAAK3C,SAAS,CAAEm4B,qBAAqB,EAAOK,eAAe,IACZ,kBAA3C,EAAK15B,MAAMi5B,kBAAkBU,UAC7B,EAAKt4B,MAAMqF,QAAQC,KAAnB,oEAAqF+pB,IAErF,EAAKrvB,MAAMqF,QAAQC,KAAnB,yEAA0F+pB,OAGjG5e,OAAM,SAAAtD,GACH,EAAKtN,SAAS,CAAEw4B,eAAe,EAAMN,UAAU,EAAO9d,SAAU,GAAIqK,gBAAiB,GAAI0T,qBAAqB,QArF5G,EAyFdO,aAAe,SAACpzB,EAAMmW,GAAW,IAAD,IACHtB,GAAiBsB,GAApCf,EADsB,EACtBA,MAAOpM,EADe,EACfA,QAEA,aAAThJ,GAAuBoV,IACnBe,IAAU,EAAK3c,MAAM2lB,iBACrB/J,GAAQ,EACJ,EAAK5b,MAAM2lB,gBACXnW,EAAU,YAEVA,EAAU,GACV,EAAKtO,SAAS,CAAE24B,wBAAyB,OAG7C,EAAK34B,SAAS,CAAE44B,sBAAsB,KAIjC,oBAATtzB,GAA8BoV,IAC1Be,IAAU,EAAK3c,MAAMsb,UACrBM,GAAQ,EACJ,EAAK5b,MAAMsb,SACX9L,EAAU,YAEVA,EAAU,GACV,EAAKtO,SAAS,CAAE64B,iBAAkB,OAGtC,EAAK74B,SAAS,CAAE84B,eAAe,KAKvC,EAAK94B,UAAL,6BACQsF,EADR,SACsBoV,GADtB,wBAEQpV,EAFR,YAEyBgJ,GAFzB,KAzHU,EA+HduhB,kBAAoB,SAACC,GAAW,IAAD,EACrBxc,EAASwc,EAAMxc,OACfmI,EAAQnI,EAAOmI,MACfnW,EAAOgO,EAAOhO,KAIpB,EAAKtF,UAAL,mBACKsF,EAAOmW,GADZ,+BAEmB,GAFnB,IAGG,WACC,EAAKid,aAAapzB,EAAMmW,OA1IlB,EA8Idsd,gBAAkB,SAAAnwB,GACdA,EAAE0X,iBAEF,EAAKtgB,SAAS,CAAEm4B,qBAAqB,IAErC,IAAIa,EAAU,CACVxB,MAAO,EAAK14B,MAAM04B,MAClB9lB,OAAQ,EAAK5S,MAAMi5B,kBAAkBrmB,OACrCyF,SAAU,EAAKrY,MAAMi5B,kBAAkB5gB,UAEvCqY,EAAkB,EAAK1wB,MAAMi5B,kBAAkBQ,YAAc9P,mBAAmB,EAAK3pB,MAAMi5B,kBAAkBQ,aAAe,GAEhIZ,GAAqBqB,EAAS,CAAEloB,YAAY,IACvCpO,MAAK,SAAAC,GACF,EAAK3C,SAAS,CAAEm4B,qBAAqB,EAAOc,0BAA0B,IACtE,EAAK94B,MAAMqF,QAAQC,KAAnB,oEAAqF+pB,OAExF5e,OAAM,SAAAtD,GACH,EAAKtN,SAAS,CAAEm4B,qBAAqB,EAAOc,0BAA0B,QAhKpE,EAoKdC,SApKc,uCAoKH,WAAMtwB,GAAN,iBAAA2I,EAAA,6DACP3I,EAAE0X,iBAEF,EAAKtgB,SAAS,CAAEm4B,qBAAqB,SAEXv4B,KADtBu5B,EAAoB,EAAKr6B,MAAMi5B,kBAAkBQ,cACQ,SAAtBY,IACnCA,EAAoB,IANjB,SAQW/c,GAA6B,EAAKtd,MAAMi5B,kBAAkB5gB,SAAU,EAAKrY,MAAMi5B,kBAAkBxxB,GAAI4yB,EAAmB,CAAEroB,YAAY,IARjJ,QAQDnO,EARC,SAUmB,MAAfA,EAAIkO,OACX,EAAK7Q,SAAS,CAAEm4B,qBAAqB,EAAOiB,yBAAyB,IAErE,EAAKp5B,SAAS,CAAEm4B,qBAAqB,EAAOK,eAAe,IAbxD,2CApKG,sDAEV,EAAK15B,MAAQ,CACT04B,MAAO,GACPO,kBAAmB,GACnB3d,SAAU,GACV0e,eAAe,EACfD,iBAAkB,GAClBpU,gBAAiB,GACjBmU,sBAAsB,EACtBD,wBAAyB,GAEzBT,UAAU,EACVC,qBAAqB,EACrBc,0BAA0B,EAE1BT,eAAe,EAEfY,yBAAyB,EACzBpB,iBAAkB,IAnBZ,E,mDAqLd,WACI,IAAI1c,EA0BJ,OAzBKpb,KAAKpB,MAAM05B,cAoBZld,EAAgB,yBAAKhU,UAAWwL,KAAOumB,OAAvB,kEACmD,uBAAG/lB,OAAO,SAASC,IAAI,sBAAsBxC,KAAK,oCAAlD,gCADnD,OAnBV7Q,KAAKpB,MAAMg6B,eAAiB54B,KAAKpB,MAAM+5B,mBAAuB34B,KAAKpB,MAAM85B,sBAAwB14B,KAAKpB,MAAM65B,2BAE1Grd,EADuC,aAAvCpb,KAAKpB,MAAM65B,yBAA0E,aAAhCz4B,KAAKpB,MAAM+5B,iBAChD,yBAAKvxB,UAAWwL,KAAOumB,OAAvB,oEAIA,yBAAK/xB,UAAWwL,KAAOumB,OAAvB,qCACZ,4BACI,yDACA,6DACA,6DACA,mDACA,iEAYb/d,I,oBAIX,WAAU,IAAD,OACCA,EAAepb,KAAKo5B,kBACpBC,IAAqBr5B,KAAKpB,MAAMg6B,eAAiB54B,KAAKpB,MAAMsb,WAAela,KAAKpB,MAAM85B,sBAAwB14B,KAAKpB,MAAM2lB,kBAAqBnJ,GAAiBpb,KAAKpB,MAAM05B,cAE1KR,EAAoD,KAAhC93B,KAAKpB,MAAMk5B,uBAA2Dp4B,IAAhCM,KAAKpB,MAAMk5B,kBAAkE,SAAhC93B,KAAKpB,MAAMk5B,iBACpH,iBAAmB93B,KAAKpB,MAAMk5B,iBAElC,OAAI93B,KAAKpB,MAAM04B,MACPt3B,KAAKpB,MAAMi5B,kBACoC,uBAA3C73B,KAAKpB,MAAMi5B,kBAAkBU,WACc,kBAA3Cv4B,KAAKpB,MAAMi5B,kBAAkBU,WACc,+BAA3Cv4B,KAAKpB,MAAMi5B,kBAAkBU,UAEzB,kBAAC,IAAM/f,SAAP,KACI,yBAAKpR,UAAWwL,KAAO0mB,YACnB,yBAAKlyB,UAAWwL,KAAO2mB,WACnB,yBAAKnyB,UAAWwL,KAAOkZ,KAAMrd,IAAI,mCAAmCC,IAAI,SACxE,yBAAKtH,UAAWwL,KAAOqF,QAAoD,kBAA3CjY,KAAKpB,MAAMi5B,kBAAkBU,UAAgC,iBAAmB,uBAChH,kBAAClH,GAAA,EAAD,CAAMC,SAAU,SAAC5oB,GAAD,OAAO,EAAKqvB,mBAAmBrvB,KAC3C,kBAAC0Y,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,YAAX,gBAAoCvhB,KAAKpB,MAAMsb,UAAY,0BAAM9S,UAAWwL,KAAO4mB,MAAxB,MAC3D,kBAAC,GAAD,CAEI/5B,KAAK,WACL0jB,UAAU,WACVC,YAAa,GACb7H,MAAOvb,KAAKpB,MAAMsb,SAClByH,SAAU3hB,KAAK2vB,qBAKvB,kBAACvO,GAAA,EAAD,KACI,kBAACE,GAAA,EAAD,CAAOC,IAAI,mBAAX,mBAA8CvhB,KAAKpB,MAAM2lB,iBAAmB,0BAAMnd,UAAWwL,KAAO4mB,MAAxB,MAC5E,kBAAC,GAAD,CAEI/5B,KAAK,WACL0jB,UAAU,kBACV5H,MAAOvb,KAAKpB,MAAM2lB,gBAClBnB,YAAa,GACbzB,SAAU3hB,KAAK2vB,qBAKvB,yBAAKvoB,UAAWwL,KAAO6mB,SACnB,kBAAC3f,GAAA,EAAD,CACItD,UAAWxW,KAAKpB,MAAMg6B,gBAAkB54B,KAAKpB,MAAM85B,sBAAwB14B,KAAKpB,MAAMo5B,SACtFv4B,KAAK,SACLJ,MAAM,UACNkI,KAAK,MAEDvH,KAAKpB,MAAMq5B,qBAAuB,0BAAM7wB,UAAWwL,KAAO8mB,eAAe,kBAAClY,GAAA,EAAD,CAASja,KAAK,QAN/F,YAYJ8xB,GAAkB,kBAAC,GAAD,CAAO55B,KAAK,UAAU2O,QAASgN,OAS1B,yBAA3Cpb,KAAKpB,MAAMi5B,kBAAkBU,UAEzB,kBAAC,IAAM/f,SAAP,KACI,yBAAKpR,UAAWwL,KAAO0mB,YACnB,yBAAKlyB,UAAWwL,KAAO2mB,WACnB,yBAAKnyB,UAAWwL,KAAOkZ,KAAMrd,IAAI,mCAAmCC,IAAI,SACxE,kBAAC2iB,GAAA,EAAD,CAAMC,SAAU,SAAC5oB,GAAD,OAAO,EAAKmwB,gBAAgBnwB,KACxC,yBAAKtB,UAAWwL,KAAO+mB,eACnB,kBAAC7f,GAAA,EAAD,CACIra,KAAK,SACL+W,SAAUxW,KAAKpB,MAAMm6B,yBACrB15B,MAAM,UACNkI,KAAK,MAEDvH,KAAKpB,MAAMq5B,qBAAuB,0BAAM7wB,UAAWwL,KAAOgnB,qBAAqB,kBAACpY,GAAA,EAAD,CAASja,KAAK,QANrG,qBAQuBvH,KAAKpB,MAAMi5B,kBAAkB5gB,eASjC,6BAA3CjX,KAAKpB,MAAMi5B,kBAAkBU,UACrB,kBAAC,GAAD,CAAUnN,YAAY,IAAIzQ,MAAO3a,KAAKpB,MAAMi5B,kBAAkB5gB,WAG3B,qBAA3CjX,KAAKpB,MAAMi5B,kBAAkBU,UAEzB,kBAAC,IAAM/f,SAAP,MACMxY,KAAKpB,MAAMs6B,yBACT,yBAAK9xB,UAAWwL,KAAO0mB,YACnB,yBAAKlyB,UAAWwL,KAAO2mB,WACnB,yBAAKnyB,UAAWwL,KAAOkZ,KAAMrd,IAAI,mCAAmCC,IAAI,SACxE,kBAAC2iB,GAAA,EAAD,CAAMC,SAAU,SAAC5oB,GAAD,OAAO,EAAKswB,SAAStwB,KACjC,yBAAKtB,UAAWwL,KAAO+mB,eACnB,kBAAC7f,GAAA,EAAD,CACIra,KAAK,SACL+W,SAAUxW,KAAKpB,MAAMm6B,yBACrB15B,MAAM,UACNkI,KAAK,MAEDvH,KAAKpB,MAAMq5B,qBAAuB,0BAAM7wB,UAAWwL,KAAOgnB,qBAAqB,kBAACpY,GAAA,EAAD,CAASja,KAAK,QANrG,iBAQmBvH,KAAKpB,MAAMi5B,kBAAkB5gB,cAOhEjX,KAAKpB,MAAMs6B,yBACX,yBAAK9xB,UAAWwL,KAAO0mB,YACnB,yBAAKlyB,UAAWwL,KAAO2mB,WACnB,yBAAKnyB,UAAWwL,KAAOkZ,KAAMrd,IAAI,mCAAmCC,IAAI,SAExE,yBAAKtH,UAAWwL,KAAOqF,QAAvB,UACA,yBAAK7Q,UAAWwL,KAAOgY,OAAvB,uDA9BxB,EAwCI,yBAAKxjB,UAAWwL,KAAO0mB,YACnB,yBAAKlyB,UAAWwL,KAAO2mB,WACnB,yBAAKnyB,UAAWwL,KAAOkZ,KAAMrd,IAAI,mCAAmCC,IAAI,SACxE,yBAAKtH,UAAWwL,KAAOqF,QAAvB,QACA,yBAAK7Q,UAAWwL,KAAOgY,OAAvB,wCACA,uBAAG/Z,KAAMinB,GAAT,uBAUZ,kBAAC,IAAMtf,SAAP,KACI,yBAAKpR,UAAWwL,KAAOinB,UACnB,kBAACrY,GAAA,EAAD,Y,GA9WHrhB,aAuXNuH,eAAWhJ,YAAiBi5B,KCjYrCmC,G,4JACL,WACC,IAAMC,EAAQ,CACb,CAAE30B,KAAMpF,KAAKC,MAAMF,UAAU,SAAUi6B,KAAM,mEAC7C,CAAE50B,KAAMpF,KAAKC,MAAMF,UAAU,SAAUi6B,KAAM,mCAC7C,CAAE50B,KAAMpF,KAAKC,MAAMF,UAAU,WAAYi6B,KAAM,2DAC/C,CAAE50B,KAAMpF,KAAKC,MAAMF,UAAU,WAAYi6B,KAAM,2DAC/C,CAAE50B,KAAMpF,KAAKC,MAAMF,UAAU,WAAYi6B,KAAM,yCAE1Ch9B,EAAS,WAAO,IAAI0M,MAAQuwB,cAAnB,YAAoCj6B,KAAKC,MAAMF,UAAU,cAClEm6B,EAAU35B,eAAexB,QAAQ,cACvC,OACC,kBAAC,IAAD,CAAWg7B,MAAOA,EAAOG,QAASA,EAASl9B,UAAWA,Q,GAZpCmD,aAiBNzB,eAAiBo7B,I,uCCfjB,SAASK,GAAOl6B,GAAQ,IAqDdR,EApDf2H,EAAiGnH,EAAjGmH,UAAWhI,EAAsFa,EAAtFb,MAAOg7B,EAA+En6B,EAA/Em6B,OAAQnzB,EAAuEhH,EAAvEgH,MAAOoH,EAAgEpO,EAAhEoO,YAAagsB,EAAmDp6B,EAAnDo6B,UAAW1zB,EAAwC1G,EAAxC0G,QAAS2zB,EAA+Br6B,EAA/Bq6B,WAAYC,EAAmBt6B,EAAnBs6B,eAClFC,EAAgB,GACdC,EAmDCC,GADgBj7B,EAlDO66B,GAmDAI,GAAej7B,GAAQi7B,GAAeC,QA7BpE,OArBIP,IACFI,EACE,yBACEpzB,UAAW6b,KACTrQ,KAAOgoB,OACPxzB,EACAqzB,EAAaI,WAHM,eAKhBjoB,KAAOkoB,UAA+B,QAAnBP,IAGxBn7B,MAAOA,GAEP,yBAAKgI,UAAWwL,KAAOmoB,MACpBN,EAAaM,MAEhB,4BAAK9zB,GACL,2BAAIoH,GACHgsB,GAAa,0BAAMjzB,UAAWwL,KAAOhK,MAAOvD,QAAS,SAAAqD,GAAC,OAAI/B,EAAQ+B,QAGlE8xB,EAGT,IAAME,GAAiB,CACrBvtB,KAAM,CACJ4tB,KAAM,kBAAC,KAAD,MACNF,WAAYjoB,KAAOzF,MAErB6tB,QAAS,CACPD,KAAM,kBAAC,KAAD,MACNF,WAAYjoB,KAAOzF,MAErBF,QAAS,CACP8tB,KAAM,kBAAC,KAAD,MACNF,WAAYjoB,KAAO3F,SAErBguB,UAAW,CACTF,KAAM,kBAAC,KAAD,MACNF,WAAYjoB,KAAOzF,MAErBwtB,QAAS,CACPI,KAAM,kBAAC,KAAD,MACNF,WAAYjoB,KAAOzF,OAIjB+tB,GAAiBhtB,OAAOW,KAAK6rB,IAMnCP,GAAOxuB,aAAe,CACpB0uB,WAAW,EACX1zB,QAAS,cAGXwzB,GAAOgB,UAAY,CACjB/zB,UAAWg0B,KAAUC,OACrBj8B,MAAOg8B,KAAUE,OACjBlB,OAAQgB,KAAUG,KAAKC,WACvBv0B,MAAOm0B,KAAUC,OACjBhtB,YAAa+sB,KAAUtO,KACvByN,eAAgBa,KAAUK,MAAM,CAAC,QACjCnB,WAAYc,KAAUK,MAAMP,IAC5Bb,UAAWe,KAAUG,KACrB50B,QAASy0B,KAAUM,MCzErB,IAqBeC,GArBkB,SAAC17B,GAChC,IAAMoO,EAAc/P,gBAAagB,aAC/BhB,gBAAaV,sBACb,uBAAGiT,KAAK,uIAAuIuC,OAAO,SAASC,IAAI,uBAChK/U,gBAAaZ,OAIlB,OACE,kBAACy8B,GAAD,CACE/yB,UAAW,cACXgzB,QAAQ,EACRC,WAAW,EACXpzB,MAAO3I,gBAAaX,wBACpB0Q,YAAaA,EACbksB,eAAgB,MAChBD,WAAY,aCHZsB,GAAc,CAAC,YAAa,iBAAkB,kBAC9CC,GAAOC,eACPC,GAAW,iBACbC,IAAc,EACZC,G,kDACF,WAAYh8B,GAAQ,IAAD,uBACf,cAAMA,IAgDVi8B,gBAAkB,WACd,IAAM16B,EAAWV,OAAOS,SAASC,SAC3B26B,EAAejF,GAAOkF,MAAK,SAAAhxB,GAC7B,IAAMixB,EAAajxB,EAAE4gB,KAAKnoB,MAAM,KAAK,GACrC,OAAOrC,EAASoO,SAASysB,IAAe,UAAG76B,EAAH,KAAeoO,SAASysB,MAGpE,OADqBF,GAAgBA,EAAahF,cAvDnC,EA0DnBmF,UA1DmB,sBA0DP,8BAAAjrB,EAAA,yDACa,EAAK6qB,kBADlB,iEAMJ,EAAKp8B,SAAS,CAAEy8B,kBAAkB,IAN9B,SAOax6B,IAAYwO,UAPzB,cAOApP,EAPA,iBAQqBY,IAAYg0B,QAAQyG,qBARzC,QAQAC,EARA,OASAt7B,GACA,EAAK00B,WAAW10B,GAChB,EAAKu7B,eAAev7B,GACpB,EAAKw7B,gBAAgBx7B,GACrB,EAAKrB,SAAS,CAAEy8B,kBAAkB,KAC3BE,IAAiBt7B,EACxBY,IAAY9F,UAEZ,EAAK6D,SAAS,CAAEy8B,kBAAkB,IAClCz9B,aAAauC,QACb,EAAKpB,MAAMqF,QAAQC,KAAK,mBAnBxB,kDAsBJ,EAAKzF,SAAS,CAAEy8B,kBAAkB,IAClCz9B,aAAauC,QACb,EAAKpB,MAAMqF,QAAQC,KAAK,kBAxBpB,0DA1DO,EAuFnBm3B,eAvFmB,uCAuFF,WAAOv7B,GAAP,2BAAAkQ,EAAA,sEAEDxP,EAAYV,EAAZU,QAFC,S5C/Fc2P,E4CkGoB3P,EAAQtC,I5CjGpDyR,GAAWzO,IAAX,yBAAiCiP,EAAjC,aAAoD,GAAI,CAAEZ,YAAY,I4C8F5D,gBAGDlO,EAHC,EAGDA,KACAk6B,EAA+Bl6B,EAA/Bk6B,OAAQl4B,EAAuBhC,EAAvBgC,UAAWm4B,EAAYn6B,EAAZm6B,QAEvBl4B,EAAYi4B,GAAUA,EAAOz2B,IACjC,EAAKrG,SAAS,CAAE4E,YAAWD,WAAYo4B,EAASl4B,YAAWm4B,KAAMj7B,EAAQi7B,KAAM/1B,QAASlF,EAAQmF,QAAS5B,KAAMvD,EAAQuD,OAP9G,kDASTitB,QAAQna,IAAR,MATS,kC5C/Fc,IAAA1G,I4C+Fd,qBAvFE,wDAmGnBurB,kBAAoB,SAACC,GAAgB,IAAD,EACP,EAAKp+B,MAAMuC,KAA5BU,eADwB,MACd,GADc,EAEhC,EAAKg0B,WAAW,CAAEh0B,QAAQ,2BAAMA,GAAYm7B,MArG7B,EAuGnBC,gBAAkB,WAAO,IACb97B,EAAS,EAAKvC,MAAduC,KADY,EAEKA,EAAjBU,eAFY,MAEF,GAFE,EAGdq7B,EAAyB7+B,iCACzB8+B,EAAqBjvB,OAAOW,KAAKquB,GAAwBt3B,KAAI,SAAAhG,GAAC,MAAK,CAAE8F,MAAOvH,YAASyB,GAAI2b,MAAO3b,MAChGw9B,EAAuBv7B,EAAQw7B,MAAQ,KACvCx+B,EAAkBs+B,EAAmBf,MAAK,SAACnsB,GAAD,OAAUA,EAAKsL,QAAU6hB,KACnEh9B,EAAU,CACZk9B,SAAU,WAAQ,OAAOn8B,GAAQA,EAAKqP,cACtC+sB,YAAa,CACTC,aAAc,CACVL,qBACAt+B,oBAGRM,YAAa,SAAA8Q,GAAI,OAAIA,GAAQ,EAAKhQ,MAAMd,YAAY8Q,EAAKsL,QACzDkiB,oBAAqB,SAAC/6B,GAAU,IACTg7B,EAAqCh7B,EAAhDgC,UAAgCi5B,EAAgBj7B,EAAzBm6B,QAC/B,EAAKE,kBAAkB,CAAEW,aAAYC,cAAav4B,KAAM,UAAG1C,EAAKgC,UAAR,YAAqBhC,EAAKm6B,SAAUxhB,UAEhGuiB,oBAAqB,SAACC,GAClB,EAAKd,kBAAkB,CACnBe,OAAQD,KAGhBE,oBAAqB,WACjB,EAAKhB,kBAAkB,CACnBe,OAAQ,OAIpBE,IAAYpR,KAAKxsB,GAAS,WACtBtB,aAAae,QAAQ,cAAc,OAvIxB,EA0InB88B,gBA1ImB,uCA0ID,WAAOx7B,GAAP,qBAAAkQ,EAAA,0DACVvS,aAAaC,QAAQ,mBAAoB4C,KAAKC,MAAM9C,aAAaC,QAAQ,kBAAkB+E,OADjF,uBAEJc,EAAYjD,KAAKC,MAAM9C,aAAaC,QAAQ,kBAClD,EAAKe,SAAS,CAAE8E,cAAa,WACzB,EAAK9E,SAAS,CAAEiV,iBAAiB,OAJ3B,0CAScvD,EAAarQ,EAA7BU,QAAWtC,IATT,SAUsBkS,GAAkBD,GAVxC,gBAUE5M,EAVF,EAUJlC,KACN,EAAK5C,SAAS,CAAE8E,cAAa,WACzB,EAAK9E,SAAS,CAAEiV,iBAAiB,OAZ3B,kDAeV,EAAKjV,SAAS,CAAE8E,UAAW,GAAImQ,iBAAiB,IAftC,0DA1IC,sDAEf,EAAK8gB,WAAa,SAAC10B,GACf,GAAIA,EAAKU,QAAS,CAAC,IAAD,EACsEV,EAAKU,QAArE6C,EADN,EACNg5B,WAAoCj5B,EAD9B,EACiBk5B,YAAiCh5B,EADlD,EAC0Cm5B,OAAmB14B,EAD7D,EAC6DA,KAC3E,EAAKtF,SAAS,CAAE4E,YAAWD,aAAYE,YAAWxD,OAAMiE,WAGhE,EAAKxG,MAAQ,CACTuC,KAAM,GACNuD,UAAW,GACXD,WAAY,GACZE,UAAW,GACXS,KAAM,QACNywB,WAAY,EAAKA,WACjB0G,kBAAkB,EAClB33B,UAAW,GACXmQ,iBAAiB,GAjBN,MAoBc9U,EAAMsB,SAA3BC,EApBO,EAoBPA,SAAU8F,EApBH,EAoBGA,OApBH,OAsBX9F,IAAau6B,IAAYz0B,GACzBxI,aAAaw2B,WAAW,YAvBb,E,qDA2BnB,WACIt1B,KAAKs8B,c,gCAET,SAAmBnzB,EAAW80B,GACtBA,EAAUv5B,YAAc1E,KAAKpB,MAAM8F,WAC/B1E,KAAKpB,MAAMuC,KAAKU,SAAmD,IAAxC7B,KAAKpB,MAAMuC,KAAKU,QAAQq8B,cAAsBp/B,aAAaC,QAAQ,eAC9FiB,KAAKi9B,kBAHwB,IAOnBkB,EAAoBn+B,KAAKC,MAAMsB,SAAzCC,SACU48B,EAAiBj1B,EAAU5H,SAArCC,SAIR,GAHI1C,aAAaC,QAAQ,aAAeq/B,IAAiBrC,IAAgC,UAApBoC,GACjEn+B,KAAKs8B,YAEY,cAAjB8B,IAAiCpC,GAAa,CAAC,IACvC76B,EAASnB,KAAKpB,MAAduC,KACRnB,KAAK28B,gBAAgBx7B,GACrB66B,IAAc,K,oBAiHtB,WACI,IAAIx6B,EAAWxB,KAAKC,MAAMsB,SAASC,SAC7BqD,EAAU/F,aAAaC,QAAQ,YAE/Bs/B,EAAaxC,IAAQD,GAAY0C,MAAK,SAAAtS,GAAI,OAAIuS,YAAU/8B,EAAUwqB,MAExE,OACI,kBAAC,IAAMxT,SAAP,KACI,kBAAC,IAAD,CAAcqd,WAAY71B,KAAK61B,WAAY2I,UAAWx+B,KAAKpB,OACtDy/B,GAAc,kBAAC,GAAD,MACf,kBAAC,EAAD,CAAQv5B,aAAc9E,KAAKk8B,oBAC3B,yBAAK90B,UAAW,kBACXpH,KAAKpB,MAAM29B,kBAAoB,yBAAKn1B,UAAU,gBAAe,kBAAC,IAAD,CAAMG,KAAK,SACzE,kBAAC,IAAD,KACK2vB,GAAOtxB,KAAI,SAAC64B,EAAO3zB,GAAR,OAGR,kBAAC,IAAD,CACIvL,IAAKuL,EACLkhB,KAAMyS,EAAMzS,KACZD,MAAO0S,EAAM1S,MACbE,OAAQ,SAAChsB,GACL,OAAKw+B,EAAMtH,cAAgBtyB,EACnB45B,EAAMzS,OAAS+P,IAAYl3B,EACpB,kBAAC,IAAD,CAAUwC,GAAI,CAAE7F,SAAU,WAE9B,kBAACi9B,EAAM9xB,UAAP,iBAAqB1M,EAArB,CAA4Bw+B,MAAOA,KAEnC,kBAAC,IAAD,CAAUp3B,GAAI,CAAE7F,SAAUu6B,GAAU9K,gBAAiBhxB,EAAMsB,SAASC,kBAK3F,kBAAC,IAAD,CAAOwqB,KAAK,UAAUrf,UAAWgrB,KACjC,kBAAC,IAAD,CAAU5L,OAAO,EAAMC,KAAK,IAAI3kB,GAAI,CAAE7F,SAAU,WAEhD,kBAAC,IAAD,CAAO+G,SAAU,kBAAC,GAAD,CAAOkuB,KAAMI,KAAUC,gBAGhD,yBAAK1vB,UAAU,UACX,kBAAC,GAAD,a,GAvMHjH,aA+MNuH,eAAWhJ,YAAiBu9B,KCrN5ByC,G,4JATb,WACE,OACE,kBAAC,WAAD,CAAUC,SAAU,kBAAC,IAAD,CAAMp3B,KAAK,SAC7B,kBAAC,GAAD,W,GAJUpH,aCgBlBkC,IAAWG,MAAK,YATD,WACX,IAAMo8B,EACF,kBAAC,IAAD,KACI,kBAAC,GAAD,OAIRtyB,IAAS2f,OAAO2S,EAAK3yB,SAAS0U,eAAe,SAG7CsL,O,+LCpBSxkB,EAAcvH,IAAM2+B,cADZ,CAAE19B,KAAM,GAAI00B,WAAY,eAEhCiJ,EAAer3B,EAAYs3B,SAEnBC,E,4JACjB,WAAU,IAAD,EAC6Bh/B,KAAKC,MAA/Bu+B,EADH,EACGA,UAAW3I,EADd,EACcA,WACnB,OACI,kBAACpuB,EAAYw3B,SAAb,CAAsB1jB,MAAK,2BAAOijB,GAAP,IAAkB3I,gBAAe71B,KAAKC,MAAMsI,c,GAJzCrI,IAAMC,Y,mBCJhD3B,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,SAAW,uBAAuB,UAAY,wBAAwB,eAAiB,6BAA6B,SAAW,uBAAuB,OAAS,qBAAqB,SAAW,uBAAuB,KAAO,qB,mBCApWD,EAAOC,QAAU,CAAC,eAAiB,UAAU,UAAY,UAAU,kBAAoB,UAAU,oBAAsB,cAAgB,gBAAkB,kCAAkC,IAAM,sBAAsB,cAAgB,gCAAgC,KAAO,uBAAuB,OAAS,yBAAyB,KAAO,uBAAuB,MAAQ,wBAAwB,UAAY,4BAA4B,QAAU,0BAA0B,KAAO,yB,gCCDxd,sGAAO,IAAMq9B,EAAW,WACpB,IAAMoD,EAAKp+B,OAAOmoB,UAAUkW,UACtBC,EAAOF,EAAG36B,QAAQ,SAClB86B,EAAUH,EAAG36B,QAAQ,YAC3B,OAAQ66B,EAAO,GAAKC,EAAU,GAGrB5+B,EAAiB,WAEtB,MAAOmD,oCAUFizB,EAAY,CACrBC,UAAW,e","file":"static/js/main.830641f9.chunk.js","sourcesContent":["export const en = {\r\n // Header\r\n fullTitle: 'HxGN SFx',\r\n shortTitle: 'HxGN SFx',\r\n signIn: 'Sign in',\r\n\r\n // Home\r\n smartFactoryAssetManagement: 'HxGN SFx',\r\n minimizeDowntimeMaximizeEfficiency: 'Minimize downtime. Maximize efficiency.',\r\n landingPageDescription: \"Managing your measurement systems is critical to maximizing the value of your investment. Asset management begins immediately after a system enters service. You want to be sure that any anomalies in its operation are immediately known and addressed. You also want to know that the asset is in use during scheduled operating hours and that you have the proper tools to optimize its utilization over time. Finally, you want to be prepared for maintenance, so that service needs do not interrupt your scheduled operations. Use HxGN SFx | Asset Management from the start to take control of your measurement system’s performance and overall effectiveness.\",\r\n\r\n // Login\r\n rememberMe: 'Remember Me',\r\n loginFailedResponse: 'Sorry, the email and/or password you entered is incorrect. Please try again or ',\r\n authorizationFailed: 'Sorry, your account is not authorized for this application. Please contact your administrator. ',\r\n userSubscriptionExpired: 'Sorry, your subscription has expired. Please contact your administrator. ',\r\n userSubscriptionLacked: 'Sorry, your account is not authorized for lacking of subscription. Please contact your administrator. ',\r\n resetPassword: 'reset your password. ',\r\n haveTrouble: \"If you're still having trouble, please \",\r\n loginFailedContact: 'contact our customer service.',\r\n userDisabledResponseStart: 'Sorry, this email account has been disabled. Please contact your ',\r\n userDisabledResponseEnd: 'or refer to the disabled account help pages for more information.',\r\n userDisabledContact: 'Hexagon support ',\r\n // Footer\r\n copyright: 'Hexagon AB and/or its subsidiaries.',\r\n contactUs: 'Contact Us',\r\n about: 'About',\r\n legal: 'Legal',\r\n privacy: \"Privacy\",\r\n cookies: \"Cookies\",\r\n contact: 'Contact',\r\n errorRequired: 'Field is not allowed to be empty',\r\n errorMaxChar: 'Exceed field max length {0}',\r\n errorMinChar: 'Exceed field min length {0}',\r\n // Banner\r\n here: 'here',\r\n unsupportedBrowserTitle: 'Warning',\r\n unsupportedBrowserDes:'It looks like you are using an unsupported browser and the site may not function properly. Please use a supported browser found {0}.'\r\n}","export const es = {\r\n // Header\r\n fullTitle: 'HxGN SFx',\r\n shortTitle: 'HxGN SFx',\r\n signIn: 'Sign in',\r\n\r\n // Home\r\n smartFactoryAssetManagement: 'HxGN SFx',\r\n minimizeDowntimeMaximizeEfficiency: 'Minimize downtime. Maximize efficiency.',\r\n landingPageDescription: \"Managing your measurement systems is critical to maximizing the value of your investment. Asset management begins immediately after a system enters service. You want to be sure that any anomalies in its operation are immediately known and addressed. You also want to know that the asset is in use during scheduled operating hours and that you have the proper tools to optimize its utilization over time. Finally, you want to be prepared for maintenance, so that service needs do not interrupt your scheduled operations. Use HxGN SFx | Asset Management from the start to take control of your measurement system’s performance and overall effectiveness.\",\r\n\r\n // Login\r\n rememberMe: 'Remember Me',\r\n loginFailedResponse: 'Sorry, the email and/or password you entered is incorrect. Please try again or ',\r\n authorizationFailed: 'Sorry, your account is not authorized for this application. Please contact your administrator. ',\r\n userSubscriptionExpired: 'Sorry, your subscription has expired. Please contact your administrator. ',\r\n userSubscriptionLacked: 'Sorry, your account is not authorized for lacking of subscription. Please contact your administrator. ',\r\n resetPassword: 'reset your password. ',\r\n haveTrouble: \"If you're still having trouble, please \",\r\n loginFailedContact: 'contact our customer service.',\r\n userDisabledResponseStart: 'Sorry, this email account has been disabled. Please contact your ',\r\n userDisabledResponseEnd: 'or refer to the disabled account help pages for more information.',\r\n userDisabledContact: 'Hexagon support ',\r\n // Footer\r\n copyright: 'Hexagon AB and/or its subsidiaries.',\r\n contactUs: 'Contact Us',\r\n about: 'About',\r\n legal: 'Legal',\r\n privacy: \"Privacy\",\r\n cookies: \"Cookies\",\r\n contact: 'Contact',\r\n errorRequired: 'Field is not allowed to be empty',\r\n errorMaxChar: 'Exceed field max length {0}',\r\n errorMinChar: 'Exceed field min length {0}',\r\n // Banner\r\n here: 'here',\r\n unsupportedBrowserTitle: 'Warning',\r\n unsupportedBrowserDes:'It looks like you are using an unsupported browser and the site may not function properly. Please use a supported browser found {0}.'\r\n}","export const de = {\r\n // Header\r\n fullTitle: 'HxGN SFx',\r\n shortTitle: 'HxGN SFx',\r\n signIn: 'Sign in',\r\n\r\n // Home\r\n smartFactoryAssetManagement: 'HxGN SFx',\r\n minimizeDowntimeMaximizeEfficiency: 'Minimize downtime. Maximize efficiency.',\r\n landingPageDescription: \"Managing your measurement systems is critical to maximizing the value of your investment. Asset management begins immediately after a system enters service. You want to be sure that any anomalies in its operation are immediately known and addressed. You also want to know that the asset is in use during scheduled operating hours and that you have the proper tools to optimize its utilization over time. Finally, you want to be prepared for maintenance, so that service needs do not interrupt your scheduled operations. Use HxGN SFx | Asset Management from the start to take control of your measurement system’s performance and overall effectiveness.\",\r\n\r\n // Login\r\n rememberMe: 'Remember Me',\r\n loginFailedResponse: 'Sorry, the email and/or password you entered is incorrect. Please try again or ',\r\n authorizationFailed: 'Sorry, your account is not authorized for this application. Please contact your administrator. ',\r\n userSubscriptionExpired: 'Sorry, your subscription has expired. Please contact your administrator. ',\r\n userSubscriptionLacked: 'Sorry, your account is not authorized for lacking of subscription. Please contact your administrator. ',\r\n resetPassword: 'reset your password. ',\r\n haveTrouble: \"If you're still having trouble, please \",\r\n loginFailedContact: 'contact our customer service.',\r\n userDisabledResponseStart: 'Sorry, this email account has been disabled. Please contact your ',\r\n userDisabledResponseEnd: 'or refer to the disabled account help pages for more information.',\r\n userDisabledContact: 'Hexagon support ',\r\n // Footer\r\n copyright: 'Hexagon AB and/or its subsidiaries.',\r\n contactUs: 'Contact Us',\r\n about: 'About',\r\n legal: 'Legal',\r\n privacy: \"Privacy\",\r\n cookies: \"Cookies\",\r\n contact: 'Contact',\r\n errorRequired: 'Field is not allowed to be empty',\r\n errorMaxChar: 'Exceed field max length {0}',\r\n errorMinChar: 'Exceed field min length {0}',\r\n // Banner\r\n here: 'here',\r\n unsupportedBrowserTitle: 'Warning',\r\n unsupportedBrowserDes:'It looks like you are using an unsupported browser and the site may not function properly. Please use a supported browser found {0}.'\r\n}","export const it = {\r\n // Header\r\n fullTitle: 'HxGN SFx',\r\n shortTitle: 'HxGN SFx',\r\n signIn: 'Sign in',\r\n\r\n // Home\r\n smartFactoryAssetManagement: 'HxGN SFx',\r\n minimizeDowntimeMaximizeEfficiency: 'Minimize downtime. Maximize efficiency.',\r\n landingPageDescription: \"Managing your measurement systems is critical to maximizing the value of your investment. Asset management begins immediately after a system enters service. You want to be sure that any anomalies in its operation are immediately known and addressed. You also want to know that the asset is in use during scheduled operating hours and that you have the proper tools to optimize its utilization over time. Finally, you want to be prepared for maintenance, so that service needs do not interrupt your scheduled operations. Use HxGN SFx | Asset Management from the start to take control of your measurement system’s performance and overall effectiveness.\",\r\n\r\n // Login\r\n rememberMe: 'Remember Me',\r\n loginFailedResponse: 'Sorry, the email and/or password you entered is incorrect. Please try again or ',\r\n authorizationFailed: 'Sorry, your account is not authorized for this application. Please contact your administrator. ',\r\n userSubscriptionExpired: 'Sorry, your subscription has expired. Please contact your administrator. ',\r\n userSubscriptionLacked: 'Sorry, your account is not authorized for lacking of subscription. Please contact your administrator. ',\r\n resetPassword: 'reset your password. ',\r\n haveTrouble: \"If you're still having trouble, please \",\r\n loginFailedContact: 'contact our customer service.',\r\n userDisabledResponseStart: 'Sorry, this email account has been disabled. Please contact your ',\r\n userDisabledResponseEnd: 'or refer to the disabled account help pages for more information.',\r\n userDisabledContact: 'Hexagon support ',\r\n // Footer\r\n copyright: 'Hexagon AB and/or its subsidiaries.',\r\n contactUs: 'Contact Us',\r\n about: 'About',\r\n legal: 'Legal',\r\n privacy: \"Privacy\",\r\n cookies: \"Cookies\",\r\n contact: 'Contact',\r\n errorRequired: 'Field is not allowed to be empty',\r\n errorMaxChar: 'Exceed field max length {0}',\r\n errorMinChar: 'Exceed field min length {0}',\r\n // Banner\r\n here: 'here',\r\n unsupportedBrowserTitle: 'Warning',\r\n unsupportedBrowserDes:'It looks like you are using an unsupported browser and the site may not function properly. Please use a supported browser found {0}.'\r\n}","export const ja = {\r\n // Header\r\n fullTitle: 'HxGN SFx',\r\n shortTitle: 'HxGN SFx',\r\n signIn: 'Sign in',\r\n\r\n // Home\r\n smartFactoryAssetManagement: 'HxGN SFx',\r\n minimizeDowntimeMaximizeEfficiency: 'Minimize downtime. Maximize efficiency.',\r\n landingPageDescription: \"Managing your measurement systems is critical to maximizing the value of your investment. Asset management begins immediately after a system enters service. You want to be sure that any anomalies in its operation are immediately known and addressed. You also want to know that the asset is in use during scheduled operating hours and that you have the proper tools to optimize its utilization over time. Finally, you want to be prepared for maintenance, so that service needs do not interrupt your scheduled operations. Use HxGN SFx | Asset Management from the start to take control of your measurement system’s performance and overall effectiveness.\",\r\n\r\n // Login\r\n rememberMe: 'Remember Me',\r\n loginFailedResponse: 'Sorry, the email and/or password you entered is incorrect. Please try again or ',\r\n authorizationFailed: 'Sorry, your account is not authorized for this application. Please contact your administrator. ',\r\n userSubscriptionExpired: 'Sorry, your subscription has expired. Please contact your administrator. ',\r\n userSubscriptionLacked: 'Sorry, your account is not authorized for lacking of subscription. Please contact your administrator. ',\r\n resetPassword: 'reset your password. ',\r\n haveTrouble: \"If you're still having trouble, please \",\r\n loginFailedContact: 'contact our customer service.',\r\n userDisabledResponseStart: 'Sorry, this email account has been disabled. Please contact your ',\r\n userDisabledResponseEnd: 'or refer to the disabled account help pages for more information.',\r\n userDisabledContact: 'Hexagon support ',\r\n // Footer\r\n copyright: 'Hexagon AB and/or its subsidiaries.',\r\n contactUs: 'Contact Us',\r\n about: 'About',\r\n legal: 'Legal',\r\n privacy: \"Privacy\",\r\n cookies: \"Cookies\",\r\n contact: 'Contact',\r\n errorRequired: 'Field is not allowed to be empty',\r\n errorMaxChar: 'Exceed field max length {0}',\r\n errorMinChar: 'Exceed field min length {0}',\r\n // Banner\r\n here: 'here',\r\n unsupportedBrowserTitle: 'Warning',\r\n unsupportedBrowserDes:'It looks like you are using an unsupported browser and the site may not function properly. Please use a supported browser found {0}.'\r\n}","export const zh = {\r\n // Header\r\n fullTitle: 'HxGN SFx',\r\n shortTitle: 'HxGN SFx',\r\n signIn: 'Sign in',\r\n\r\n // Home\r\n smartFactoryAssetManagement: 'HxGN SFx',\r\n minimizeDowntimeMaximizeEfficiency: 'Minimize downtime. Maximize efficiency.',\r\n landingPageDescription: \"Managing your measurement systems is critical to maximizing the value of your investment. Asset management begins immediately after a system enters service. You want to be sure that any anomalies in its operation are immediately known and addressed. You also want to know that the asset is in use during scheduled operating hours and that you have the proper tools to optimize its utilization over time. Finally, you want to be prepared for maintenance, so that service needs do not interrupt your scheduled operations. Use HxGN SFx | Asset Management from the start to take control of your measurement system’s performance and overall effectiveness.\",\r\n\r\n // Login\r\n rememberMe: 'Remember Me',\r\n loginFailedResponse: 'Sorry, the email and/or password you entered is incorrect. Please try again or ',\r\n authorizationFailed: 'Sorry, your account is not authorized for this application. Please contact your administrator. ',\r\n userSubscriptionExpired: 'Sorry, your subscription has expired. Please contact your administrator. ',\r\n userSubscriptionLacked: 'Sorry, your account is not authorized for lacking of subscription. Please contact your administrator. ',\r\n resetPassword: 'reset your password. ',\r\n haveTrouble: \"If you're still having trouble, please \",\r\n loginFailedContact: 'contact our customer service.',\r\n userDisabledResponseStart: 'Sorry, this email account has been disabled. Please contact your ',\r\n userDisabledResponseEnd: 'or refer to the disabled account help pages for more information.',\r\n userDisabledContact: 'Hexagon support ',\r\n // Footer\r\n copyright: 'Hexagon AB and/or its subsidiaries.',\r\n contactUs: 'Contact Us',\r\n about: 'About',\r\n legal: 'Legal',\r\n privacy: \"Privacy\",\r\n cookies: \"Cookies\",\r\n contact: 'Contact',\r\n errorRequired: 'Field is not allowed to be empty',\r\n errorMaxChar: 'Exceed field max length {0}',\r\n errorMinChar: 'Exceed field min length {0}',\r\n // Banner\r\n here: 'here',\r\n unsupportedBrowserTitle: 'Warning',\r\n unsupportedBrowserDes:'It looks like you are using an unsupported browser and the site may not function properly. Please use a supported browser found {0}.'\r\n}","export const zht = {\r\n // Header\r\n fullTitle: 'HxGN SFx',\r\n shortTitle: 'HxGN SFx',\r\n signIn: 'Sign in',\r\n\r\n // Home\r\n smartFactoryAssetManagement: 'HxGN SFx',\r\n minimizeDowntimeMaximizeEfficiency: 'Minimize downtime. Maximize efficiency.',\r\n landingPageDescription: \"Managing your measurement systems is critical to maximizing the value of your investment. Asset management begins immediately after a system enters service. You want to be sure that any anomalies in its operation are immediately known and addressed. You also want to know that the asset is in use during scheduled operating hours and that you have the proper tools to optimize its utilization over time. Finally, you want to be prepared for maintenance, so that service needs do not interrupt your scheduled operations. Use HxGN SFx | Asset Management from the start to take control of your measurement system’s performance and overall effectiveness.\",\r\n\r\n // Login\r\n rememberMe: 'Remember Me',\r\n loginFailedResponse: 'Sorry, the email and/or password you entered is incorrect. Please try again or ',\r\n authorizationFailed: 'Sorry, your account is not authorized for this application. Please contact your administrator. ',\r\n userSubscriptionExpired: 'Sorry, your subscription has expired. Please contact your administrator. ',\r\n userSubscriptionLacked: 'Sorry, your account is not authorized for lacking of subscription. Please contact your administrator. ',\r\n resetPassword: 'reset your password. ',\r\n haveTrouble: \"If you're still having trouble, please \",\r\n loginFailedContact: 'contact our customer service.',\r\n userDisabledResponseStart: 'Sorry, this email account has been disabled. Please contact your ',\r\n userDisabledResponseEnd: 'or refer to the disabled account help pages for more information.',\r\n userDisabledContact: 'Hexagon support ',\r\n // Footer\r\n copyright: 'Hexagon AB and/or its subsidiaries.',\r\n contactUs: 'Contact Us',\r\n about: 'About',\r\n legal: 'Legal',\r\n privacy: \"Privacy\",\r\n cookies: \"Cookies\",\r\n contact: 'Contact',\r\n errorRequired: 'Field is not allowed to be empty',\r\n errorMaxChar: 'Exceed field max length {0}',\r\n errorMinChar: 'Exceed field min length {0}',\r\n // Banner\r\n here: 'here',\r\n unsupportedBrowserTitle: 'Warning',\r\n unsupportedBrowserDes:'It looks like you are using an unsupported browser and the site may not function properly. Please use a supported browser found {0}.'\r\n}","import LocalizedStrings from 'react-localization';\r\nimport { en } from './lang/en';\r\nimport { es } from './lang/es';\r\nimport { de } from './lang/de';\r\nimport { it } from './lang/it';\r\nimport { ja } from './lang/ja';\r\n// import { xx } from './lang/xx';\r\nimport { zh } from './lang/zh-chs';\r\nimport { zht } from './lang/zh-cht';\r\n\r\nexport const langDict = {\r\n en: \"English\",\r\n es: \"Español\",\r\n de: \"Deutsch\",\r\n it: \"Italiano\",\r\n ja: \"日本語\",\r\n zh: \"中文简体\",\r\n zht: \"中文繁體\",\r\n xx: \"Test\"\r\n}\r\n\r\nexport const getLocalizedStrings = () => {\r\n let stringsObj = {\r\n en: en,\r\n es: es,\r\n de: de,\r\n it: it,\r\n ja: ja,\r\n zh: zh,\r\n zht: zht\r\n }\r\n\r\n //const prod = (process.env.REACT_APP_PROD && process.env.REACT_APP_PROD === 'true') ? true : false;\r\n //if(!prod) {\r\n // stringsObj = { ...stringsObj, xx: xx };\r\n //} \r\n\r\n return stringsObj;\r\n}\r\n\r\nexport const translations = new LocalizedStrings(getLocalizedStrings());","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"toolTip-wrap\":\"toolTip_toolTip-wrap__NWVgf\",\"toolTip-box-top\":\"toolTip_toolTip-box-top__1_Dnv\",\"close\":\"toolTip_close__S_G2i\",\"arrow-top\":\"toolTip_arrow-top__2tRZL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"account-Container\":\"account_account-Container__232_-\",\"button-group\":\"account_button-group__u0KyT\",\"servicelink\":\"account_servicelink__Ks_lZ\",\"logout-message\":\"account_logout-message__1ORsQ\",\"right\":\"account_right__17V7H\",\"remember\":\"account_remember__3PYI4\",\"help-icon\":\"account_help-icon__3aEma\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"actionWrap\":\"action_actionWrap__2ewcY\",\"formPanel\":\"action_formPanel__1p2RL\",\"logo\":\"action_logo__2xVjS\",\"header\":\"action_header__23NHZ\",\"btnArea\":\"action_btnArea__1D7m9\",\"errorTip\":\"action_errorTip__1ORKO\",\"buttonSpinner\":\"action_buttonSpinner__1Z9Bp\",\"actionButtonSpinner\":\"action_actionButtonSpinner__3tCg4\",\"actionBtnArea\":\"action_actionBtnArea__1ScMu\",\"loadWrap\":\"action_loadWrap__wCKpu\",\"mark\":\"action_mark__etE3w\",\"rules\":\"action_rules__2QC9z\",\"guide\":\"action_guide__1WTPU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"container\":\"landingPage_container__39J0i\",\"header\":\"landingPage_header__2343U\",\"log\":\"landingPage_log__1BaSc\",\"smLog\":\"landingPage_smLog__RoQ6b\",\"ul\":\"landingPage_ul__29FFb\",\"title\":\"landingPage_title__uaHsa\",\"content\":\"landingPage_content__ATVNx\",\"leftBox\":\"landingPage_leftBox__3HLQk\",\"leftTitle\":\"landingPage_leftTitle__2oOX4\",\"solutionCardWrap\":\"landingPage_solutionCardWrap__2K6B8\",\"message\":\"landingPage_message__1y3ll\",\"solutionCardContainer\":\"landingPage_solutionCardContainer__3vKBP\",\"solutionCard\":\"landingPage_solutionCard__1HT4M\",\"solutionImgWrap\":\"landingPage_solutionImgWrap__1wXWU\",\"solutionCardDetail\":\"landingPage_solutionCardDetail__33qOX\",\"solutionCardButton\":\"landingPage_solutionCardButton__1hQR8\",\"pagination\":\"landingPage_pagination__2YKW6\",\"active\":\"landingPage_active__1XiCa\",\"disabled\":\"landingPage_disabled__aX3TE\",\"videoCardContainer\":\"landingPage_videoCardContainer__3nQ42\",\"videoCard\":\"landingPage_videoCard__2ScHD\",\"videoImgWrap\":\"landingPage_videoImgWrap__15Bhl\",\"videoImg\":\"landingPage_videoImg__2vPPs\",\"rightBox\":\"landingPage_rightBox__3bpBw\",\"carouselBox\":\"landingPage_carouselBox__1zhJ3\",\"carouselSingle\":\"landingPage_carouselSingle__ukV7b\",\"rightDetail\":\"landingPage_rightDetail__3V3Ap\",\"rightButton\":\"landingPage_rightButton___0Th7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"auth\":\"resetPassword_auth__17ywV\",\"logo\":\"resetPassword_logo__pS7NF\",\"header\":\"resetPassword_header__1bOVP\",\"guide\":\"resetPassword_guide__1IbLa\",\"buttonGroup\":\"resetPassword_buttonGroup__bvbK2\",\"buttonGroup-flex-wrap\":\"resetPassword_buttonGroup-flex-wrap__19Gk2\",\"right\":\"resetPassword_right__zh-4S\",\"mb25\":\"resetPassword_mb25__3kswg\",\"linkStyle\":\"resetPassword_linkStyle__18wET\",\"spinner\":\"resetPassword_spinner__ksOAm\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"account-Container\":\"login_account-Container__3kjK4\",\"CarouselWrap\":\"login_CarouselWrap__2KkUZ\",\"CarouselWrapMask\":\"login_CarouselWrapMask__2is_O\",\"rightContentBac\":\"login_rightContentBac__2dM7Z\",\"rightContent\":\"login_rightContent__1N9Fa\",\"img\":\"login_img__27M76\",\"font18\":\"login_font18__2VzUn\",\"font16\":\"login_font16__2OMcr\",\"button-group\":\"login_button-group__3Oy5K\",\"serviceLink\":\"login_serviceLink__3fZ48\",\"logout-message\":\"login_logout-message__3hPGL\",\"right\":\"login_right__25-7f\",\"remember\":\"login_remember__1J_s7\",\"help-icon\":\"login_help-icon__1Uq_Z\",\"footerBox\":\"login_footerBox__3I4Yp\",\"nexusMigrationTips\":\"login_nexusMigrationTips__2pkxg\",\"alterImg\":\"login_alterImg__z9EN_\",\"imgdiv\":\"login_imgdiv__2mfxD\",\"attention\":\"login_attention__1tf9d\",\"learnmore\":\"login_learnmore__1J17g\"};","import React from 'react'\r\nimport { translations } from '../../utils/translations';\r\nconst withLocalization = (WrappedContent) => {\r\n class HOC extends React.Component {\r\n state = {\r\n currentLanguage: localStorage.getItem('forcedLanguage') ? localStorage.getItem('forcedLanguage') : translations.getLanguage()\r\n }\r\n\r\n translateString = (s) => {\r\n translations.setLanguage(this.state.currentLanguage);\r\n if (this.state.currentLanguage === 'xx') {\r\n return ([[{translations[s]}]])\r\n } else {\r\n return translations[s] ? translations[s] : s;\r\n }\r\n }\r\n\r\n formatString = (key, vars) => {\r\n const type = typeof vars;\r\n\r\n if (type === 'undefined' || type === undefined) {\r\n return key;\r\n }\r\n\r\n if (type === 'object') {\r\n vars.unshift(translations[key]);\r\n return translations.formatString(...vars);\r\n } else {\r\n return translations.formatString(translations[key], vars);\r\n }\r\n }\r\n\r\n setLanguage = (l) => {\r\n translations.setLanguage(l);\r\n localStorage.setItem('forcedLanguage', l);\r\n this.setState({ currentLanguage: l });\r\n }\r\n\r\n getLanguage = () => {\r\n return this.state.currentLanguage;\r\n }\r\n\r\n render() {\r\n return (\r\n this.translateString(s)}\r\n currentLanguage={this.state.currentLanguage}\r\n setLanguage={(l) => this.setLanguage(l)}\r\n formatString={(key, vars) => this.formatString(key, vars)}\r\n {...this.props}\r\n />\r\n );\r\n }\r\n }\r\n\r\n return HOC;\r\n}\r\n\r\nexport default withLocalization;","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"contactControl\":\"contactUs_contactControl__2pT2Y\",\"contactLabel\":\"contactUs_contactLabel__3l3xU\",\"submitBtn\":\"contactUs_submitBtn__3fsC9\",\"contactForm\":\"contactUs_contactForm__2hpz1\",\"contactTitle\":\"contactUs_contactTitle__35KtK\",\"verticalSeparatorLine\":\"contactUs_verticalSeparatorLine__3EMn5\",\"secondaryBtn\":\"contactUs_secondaryBtn__3ONbu\",\"contactRight\":\"contactUs_contactRight__dRvBW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"page-container\":\"registry_page-container__1mhkZ\",\"registryWrap\":\"registry_registryWrap__1lmiX\",\"startComp\":\"registry_startComp__2A1Az\",\"font16\":\"registry_font16__2anUn\",\"pt20\":\"registry_pt20__348F8\",\"logo\":\"registry_logo__2Vagc\",\"title\":\"registry_title__3Mz4V\",\"stepWrap\":\"registry_stepWrap__2--Sh\",\"row\":\"registry_row__fjsMl\",\"formGroupContainer\":\"registry_formGroupContainer__365NK\",\"buttonMiddle\":\"registry_buttonMiddle__39Xkb\",\"buttonRight\":\"registry_buttonRight__3q42u\",\"tipWrap\":\"registry_tipWrap__xgm6O\",\"icon\":\"registry_icon__2AG4e\",\"tip\":\"registry_tip__wB4LN\",\"textcolor\":\"registry_textcolor__5HqHq\",\"input\":\"registry_input__33y3m\",\"buttonContainer\":\"registry_buttonContainer__32tyV\",\"button\":\"registry_button__1IaDR\",\"info\":\"registry_info__26xVT\",\"label\":\"registry_label__BnSSS\",\"options\":\"registry_options__3GIjP\",\"items\":\"registry_items__1oC19\",\"itemsContent\":\"registry_itemsContent__1sWRJ\",\"invalidFeedback\":\"registry_invalidFeedback__25d6-\",\"formControl\":\"registry_formControl__3VLe9\",\"formCheckLabel\":\"registry_formCheckLabel__qauYD\",\"labelSpan\":\"registry_labelSpan__27p13\",\"noMargin\":\"registry_noMargin__3ieS4\",\"feedback\":\"registry_feedback__pAWAo\",\"select-placeholder\":\"registry_select-placeholder__27-D-\",\"panel\":\"registry_panel__1BT4j\",\"buttonGroup\":\"registry_buttonGroup__OynXe\",\"buttonGroupMargin\":\"registry_buttonGroupMargin__-znhe\",\"textarea\":\"registry_textarea__3zvi-\",\"buttonGroupMargin2\":\"registry_buttonGroupMargin2__2IfxN\",\"contactSFx\":\"registry_contactSFx__372jo\",\"verify-input-wrap\":\"registry_verify-input-wrap__1w0Py\",\"verifyBefore\":\"registry_verifyBefore__2M4aO\",\"alert-margin\":\"registry_alert-margin__FqkeV\",\"formGroupWrap\":\"registry_formGroupWrap__3irqg\",\"spinner\":\"registry_spinner__iWdZJ\",\"pwdErrorTip\":\"registry_pwdErrorTip__28Npy\",\"rightContent\":\"registry_rightContent__2wwia\",\"CarouselWrap\":\"registry_CarouselWrap__1QnF3\",\"CarouselWrapMask\":\"registry_CarouselWrapMask__2Q0mX\",\"rightContentBac\":\"registry_rightContentBac__3UVMs\",\"header\":\"registry_header__1j9Yh\",\"headerTextCenter\":\"registry_headerTextCenter__2Is82\",\"guide\":\"registry_guide__1A4VO\",\"disabledCursor\":\"registry_disabledCursor__je-li\"};","import { Authentication } from '@sfx/authentication';\r\nimport { WebStorageStateStore } from 'oidc-client';\r\nimport { getIdsClientId } from './util';\r\n\r\nconst idsScopes = 'identityserver.full_access';\r\n\r\nconst authority = sessionStorage.getItem('authority');\r\nconst options = {\r\n // Use following setting if bad network quality\r\n // silentRequestTimeout :60000\r\n config: {\r\n authority: authority,\r\n client_id: getIdsClientId(),\r\n scope: `openid profile email platform.${getIdsClientId()} ${idsScopes}`,\r\n userStore: new WebStorageStateStore({ store: window.localStorage }),\r\n automaticSilentRenew: false,\r\n accessTokenExpiringNotificationTime: 180\r\n },\r\n registerEvents: {\r\n onUserLoaded: (user) => {\r\n localStorage.setItem('IDS_Auth', true)\r\n },\r\n onUserUnloaded: () => {\r\n localStorage.clear()\r\n },\r\n onUserSignedOut: () => {\r\n if (window.location.pathname !== '/Account/Login') {\r\n window.location = '/Account/Login';\r\n }\r\n },\r\n onAccessTokenExpiring: () => {\r\n const currentUser = JSON.parse(localStorage.getItem('OIDCUSER'));\r\n if (currentUser && currentUser.profile && currentUser.profile.KeepSignedIn === true) {\r\n userManager.signinSilent();\r\n } else {\r\n userManager.signOut();\r\n }\r\n }\r\n },\r\n signinType: 'redirect'\r\n}\r\nconst userManager = new Authentication(options)\r\n\r\n\r\n\r\nexport default userManager;\r\n","import axios from 'axios';\r\nimport { apiVersionPlaceholder } from './globalConstant'\r\nexport let appConfig = ''\r\nexport const apiBaseUrl = axios.get(process.env.PUBLIC_URL + '/config/app.config.json')\r\n .then(res => res.data)\r\n .then(data => {\r\n appConfig = data\r\n if (!data || !data.APIHostOverride) {\r\n appConfig.APIHostOverride = `${window.location.protocol}//${window.location.hostname}:${window.location.port}`;\r\n }\r\n return appConfig.APIHostOverride;\r\n });\r\n\r\nexport const solutionId = axios.get(process.env.PUBLIC_URL + '/config/app.config.json')\r\n .then(res => res.data)\r\n .then(data => {\r\n return data.SolutionID;\r\n });\r\n\r\nexport const defaultClientId = axios.get(process.env.PUBLIC_URL + '/config/app.config.json')\r\n .then(res => res.data)\r\n .then(data => {\r\n return data.DefaultClientId;\r\n });\r\n\r\nexport const assetManagerDownloadLink = axios.get(process.env.PUBLIC_URL + '/config/app.config.json')\r\n .then(res => res.data)\r\n .then(data => {\r\n return data.AssetManagerDownloadLink;\r\n });\r\n\r\nexport const showLegacySFxDesktopReminder = axios.get(process.env.PUBLIC_URL + '/config/app.config.json')\r\n .then(res => res.data)\r\n .then(data => {\r\n return data.ShowLegacySFxDesktopReminder;\r\n });\r\n\r\nexport const learnmoreLink = axios.get(process.env.PUBLIC_URL + '/config/app.config.json')\r\n .then(res => res.data)\r\n .then(data => {\r\n return data.LearnmoreLink;\r\n });\r\n\r\nexport const showMigrationLoginReminder = axios.get(process.env.PUBLIC_URL + '/config/app.config.json')\r\n .then(res => res.data)\r\n .then(data => {\r\n return data.ShowMigrationLoginReminder.toLowerCase() === 'true' && true;;\r\n });\r\n\r\nexport const uiVersion = GetVersion();\r\n\r\nfunction GetVersion() {\r\n const versionList = process.env.REACT_APP_VERSION.split(\".\");\r\n if (versionList && versionList.length > 2) {\r\n return `${versionList[0]}.${versionList[1]}.${apiVersionPlaceholder}.${versionList[versionList.length - 1]}`;\r\n }\r\n return `1.0.${apiVersionPlaceholder}.0`;\r\n}\r\n\r\n\r\nexport const IsEnableUserSelfRegistration = () => axios.get(process.env.PUBLIC_URL + '/config/app.config.json')\r\n .then(res => res.data)\r\n .then(data => {\r\n return data.EnableUserSelfRegistration === 'true' && true;\r\n });","export const apiVersionPlaceholder = \"#platformAPIVersion#\"","import React, { Component } from 'react';\r\nimport { withRouter, Link } from 'react-router-dom';\r\nimport { Header, SolutionBar, UserDropdownMenu, Button } from '@sfx/react-ui';\r\nimport withLocalization from '../hoc/with-localization.component';\r\n\r\nimport userManager from '../../utils/userManage'\r\nimport { UserContext } from '../userProvider'\r\n\r\nclass HeaderComponent extends Component {\r\n\r\n state = {\r\n openSolutionBar: false,\r\n }\r\n\r\n triggerSolutionBar = () => {\r\n this.setState({ openSolutionBar: !this.state.openSolutionBar })\r\n };\r\n\r\n render() {\r\n const returnURL = localStorage.getItem('IDS_RETURNURL')\r\n const pathname = this.props.location.pathname\r\n const showSign = (pathname.indexOf('Register') > 0) && (pathname !== '/Register/start')\r\n const { familyName, givenName, avatarUrl, user = {}, solutions } = this.context\r\n const { profile } = user\r\n const isLogin = this.props.showUserInfo\r\n\r\n const dropDownMenuOptions = {\r\n avatarUrl,\r\n givenName,\r\n familyName,\r\n showCamera: true,\r\n onSignOut: () => {\r\n userManager.signOut()\r\n },\r\n onCamera: () => { },\r\n preferenceItem: {\r\n name: \"My preferences\",\r\n onClick: () => {\r\n this.props.history.push('/userPreferences')\r\n }\r\n },\r\n };\r\n\r\n const footerMenu = {\r\n accountSetting: {\r\n label: 'Account Settings',\r\n onClick: () => {\r\n this.props.history.push('/accountSettings')\r\n this.triggerSolutionBar()\r\n }\r\n }\r\n }\r\n const solutionsList = solutions.map(r => {\r\n let slnIcon = r.images && r.images[0];\r\n let defaultIconUrl = r.defaultImageUrl;\r\n let solutionIconUrl = (slnIcon && slnIcon.url) ? slnIcon.url : defaultIconUrl;\r\n\r\n return {\r\n url: r.clientUri ? r.clientUri : '/',\r\n id: r.id,\r\n name: r.name,\r\n shortName: r.shortName,\r\n img: solutionIconUrl\r\n };\r\n });\r\n const solutionBarOptions = {\r\n open: this.state.openSolutionBar,\r\n solutions: solutionsList,\r\n language: \"en\",\r\n onClose: this.triggerSolutionBar,\r\n footerMenu\r\n };\r\n\r\n const solutionBar = (\r\n this.state.openSolutionBar && \r\n );\r\n\r\n const rightContent = isLogin && ;\r\n\r\n\r\n return (\r\n <>\r\n {\r\n this.triggerSolutionBar();\r\n }}\r\n solutionBar={solutionBar}\r\n rightContent={rightContent}\r\n />\r\n {showSign &&
\r\n <>\r\n Already have an account?\r\n \r\n \r\n
}\r\n \r\n\r\n )\r\n\r\n }\r\n\r\n}\r\n\r\nHeaderComponent.contextType = UserContext\r\nexport default withLocalization(withRouter(HeaderComponent));","import React, { Component } from 'react';\r\nimport { Fade } from 'reactstrap';\r\nexport default class Animate extends Component {\r\n state = {\r\n fadeinenter: false,\r\n fadeoutenter: false\r\n }\r\n onEnter = () => {\r\n this.setState({ fadeinenter: true })\r\n }\r\n onEntered = () => {\r\n this.setState({ fadeinenter: false })\r\n }\r\n onExit = () => {\r\n this.setState({ fadeoutenter: true })\r\n }\r\n onExited = () => {\r\n this.props.onExited()\r\n this.setState({ fadeoutenter: false })\r\n }\r\n render() {\r\n const prefixCls = this.props.className\r\n const componentClass = `${prefixCls}-fade`\r\n const fadeinenter = this.state.fadeinenter ? `${componentClass}-bouncein-enter` : ''\r\n const fadeoutenter = this.state.fadeoutenter ? `${componentClass}-fadeout` : ''\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}","import React, { Component } from 'react';\r\nimport Animate from './animate.component'\r\nexport default class Notice extends Component {\r\n state = { fadein: true }\r\n componentDidMount() {\r\n this.startCloseTimer();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.duration !== prevProps.duration\r\n || this.props.update) {\r\n this.restartCloseTimer();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.clearCloseTimer();\r\n }\r\n closeHander = (e) => {\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n this.setState(state => ({ fadein: !state.fadein }));\r\n }\r\n close = () => {\r\n this.clearCloseTimer();\r\n this.props.onClose();\r\n }\r\n\r\n startCloseTimer = () => {\r\n if (this.props.duration) {\r\n this.closeTimer = setTimeout(() => {\r\n this.closeHander();\r\n }, this.props.duration * 1000);\r\n }\r\n }\r\n\r\n clearCloseTimer = () => {\r\n if (this.closeTimer) {\r\n clearTimeout(this.closeTimer);\r\n this.closeTimer = null;\r\n }\r\n }\r\n\r\n restartCloseTimer() {\r\n this.clearCloseTimer();\r\n this.startCloseTimer();\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n const componentClass = `${props.prefixCls}-notice`;\r\n return (\r\n \r\n \r\n
{props.children}
\r\n {/* \r\n {props.closeIcon}\r\n */}\r\n \r\n \r\n );\r\n }\r\n}","import React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport Notice from './notice.component'\r\n\r\nfunction createChainedFunction() {\r\n const args = [].slice.call(arguments, 0);\r\n if (args.length === 1) {\r\n return args[0];\r\n }\r\n\r\n return function chainedFunction() {\r\n for (let i = 0; i < args.length; i++) {\r\n if (args[i] && args[i].apply) {\r\n args[i].apply(this, arguments);\r\n }\r\n }\r\n };\r\n}\r\nlet seed = 0;\r\nconst now = Date.now();\r\nfunction getUuid() {\r\n return `rcNotification_${now}_${seed++}`;\r\n}\r\nclass Notification extends React.Component {\r\n\r\n static defaultProps = {\r\n prefixCls: 'IS-notification',\r\n animation: 'fade',\r\n };\r\n\r\n state = {\r\n notices: [],\r\n };\r\n\r\n getTransitionName() {\r\n const props = this.props;\r\n let transitionName = props.transitionName;\r\n if (!transitionName && props.animation) {\r\n transitionName = `${props.prefixCls}-${props.animation}`;\r\n }\r\n return transitionName;\r\n }\r\n\r\n add = (notice) => {\r\n const key = notice.key = notice.key || getUuid();\r\n const { maxCount } = this.props;\r\n this.setState(previousState => {\r\n const notices = previousState.notices;\r\n const noticeIndex = notices.map(v => v.key).indexOf(key);\r\n const updatedNotices = notices.concat();\r\n if (noticeIndex !== -1) {\r\n updatedNotices.splice(noticeIndex, 1, notice);\r\n } else {\r\n if (maxCount && notices.length >= maxCount) {\r\n // XXX, use key of first item to update new added (let React to move exsiting\r\n // instead of remove and mount). Same key was used before for both a) external\r\n // manual control and b) internal react 'key' prop , which is not that good.\r\n notice.updateKey = updatedNotices[0].updateKey || updatedNotices[0].key;\r\n updatedNotices.shift();\r\n }\r\n updatedNotices.push(notice);\r\n }\r\n return {\r\n notices: updatedNotices,\r\n };\r\n });\r\n }\r\n\r\n remove = (key) => {\r\n this.setState(previousState => {\r\n return {\r\n notices: previousState.notices.filter(notice => notice.key !== key),\r\n };\r\n });\r\n }\r\n\r\n render() {\r\n const props = this.props;\r\n const { notices } = this.state;\r\n const noticeNodes = notices.map((notice, index) => {\r\n const update = Boolean(index === notices.length - 1 && notice.updateKey);\r\n const key = notice.updateKey ? notice.updateKey : notice.key;\r\n const onClose = createChainedFunction(this.remove.bind(this, notice.key), notice.onClose);\r\n return (\r\n {notice.content}\r\n );\r\n });\r\n return (\r\n
\r\n
{noticeNodes}
\r\n
\r\n );\r\n }\r\n}\r\nNotification.newInstance = function newNotificationInstance(properties, callback) {\r\n const { getContainer, ...props } = properties || {};\r\n const div = document.createElement('div');\r\n if (getContainer) {\r\n const root = getContainer();\r\n root.appendChild(div);\r\n } else {\r\n document.body.appendChild(div);\r\n }\r\n let called = false;\r\n function ref(notification) {\r\n if (called) {\r\n return;\r\n }\r\n called = true;\r\n callback({\r\n notice(noticeProps) {\r\n notification.add(noticeProps);\r\n },\r\n removeNotice(key) {\r\n notification.remove(key);\r\n },\r\n component: notification,\r\n destroy() {\r\n ReactDOM.unmountComponentAtNode(div);\r\n div.parentNode.removeChild(div);\r\n },\r\n });\r\n }\r\n ReactDOM.render(, div);\r\n};\r\n\r\nexport default Notification;\r\n","import React from \"react\";\r\nimport NotificationApi from \"./notification.component\";\r\n\r\nconst notificationInstance = {};\r\nconst typeToColor = {\r\n warning: '#faad14',\r\n success: '#52c41a',\r\n info: '#fff',\r\n error: '#f5222d'\r\n}\r\n\r\nlet defaultDuration = 4.5;\r\nlet defaultTop = '24px';\r\nlet defaultBottom = '24px';\r\nlet defaultPlacement = 'bottomRight';\r\nlet defaultGetContainer = null;\r\n\r\nfunction setNotificationConfig(options) {\r\n const { duration, bottom, placement, top, getContainer } = options;\r\n if (duration !== undefined) {\r\n defaultDuration = duration;\r\n }\r\n if (placement !== undefined) {\r\n defaultPlacement = placement;\r\n }\r\n if (bottom !== undefined) {\r\n defaultBottom = bottom;\r\n }\r\n if (top !== undefined) {\r\n defaultTop = top;\r\n }\r\n if (getContainer !== undefined) {\r\n defaultGetContainer = getContainer;\r\n }\r\n}\r\n\r\nconst getPlacementStyle = (placement) => {\r\n let style;\r\n switch (placement) {\r\n case 'topLeft':\r\n style = {\r\n left: 0,\r\n top: defaultTop,\r\n bottom: 'auto',\r\n };\r\n break;\r\n case 'topRight':\r\n style = {\r\n right: 0,\r\n top: defaultTop,\r\n bottom: 'auto',\r\n };\r\n break;\r\n case 'bottomLeft':\r\n style = {\r\n left: 0,\r\n top: 'auto',\r\n bottom: defaultBottom,\r\n };\r\n break;\r\n default:\r\n style = {\r\n right: 0,\r\n top: 'auto',\r\n bottom: defaultBottom,\r\n };\r\n break;\r\n }\r\n return style;\r\n}\r\n\r\nconst getNotificationInstance = (prefixCls, placement = defaultPlacement, callback) => {\r\n const cacheKey = `${prefixCls}-${placement}`;\r\n if (notificationInstance[cacheKey]) {\r\n callback(notificationInstance[cacheKey]);\r\n return;\r\n }\r\n\r\n NotificationApi.newInstance({\r\n prefixCls,\r\n className: placement ? `${prefixCls}-${placement}` : '',\r\n style: getPlacementStyle(placement),\r\n getContainer: defaultGetContainer,\r\n closeIcon: close,\r\n }, (notification) => {\r\n notificationInstance[cacheKey] = notification;\r\n callback(notification);\r\n });\r\n}\r\n\r\nconst notice = (props) => {\r\n const outerPrefixCls = props.prefixCls || 'IS-notification';\r\n const prefixCls = `${outerPrefixCls}-notice`;\r\n const duration = props.duration === undefined ? defaultDuration : props.duration;\r\n // let iconNode = null;\r\n // if (props.icon) {\r\n // iconNode = (\r\n // \r\n // {props.icon}\r\n // \r\n // );\r\n // } else if (props.type) {\r\n // const iconType = typeToIcon[props.type];\r\n // iconNode = (\r\n // \r\n // );\r\n // }\r\n\r\n // let content = (\r\n //
\r\n // {iconNode}\r\n //
\r\n // {props.message}\r\n //
\r\n //
{props.description}
\r\n // {props.btn ? {props.btn} : null}\r\n //
\r\n // )\r\n let style = { background: '#FFF' }\r\n if (props.type) {\r\n style = { background: typeToColor[props.type] }\r\n style = props.style ? Object.assign(style, props.style) : style\r\n }\r\n let message = props.message ? props.message : props.type ? props.type : ''\r\n let content = (\r\n
\r\n
\r\n {message}\r\n
\r\n
{props.description}
\r\n {props.btn ? {props.btn} : null}\r\n
\r\n )\r\n getNotificationInstance(outerPrefixCls, props.placement, notification => {\r\n notification.notice({\r\n content: content,\r\n duration,\r\n closable: true,\r\n // onClose: props.onClose,\r\n key: props.key,\r\n style: style || {},\r\n className: props.className,\r\n });\r\n });\r\n}\r\nconst Notification = {\r\n open: notice,\r\n close(key) {\r\n Object.keys(notificationInstance)\r\n .forEach(cacheKey => notificationInstance[cacheKey].removeNotice(key));\r\n },\r\n config: setNotificationConfig,\r\n destroy() {\r\n Object.keys(notificationInstance).forEach(cacheKey => {\r\n notificationInstance[cacheKey].destroy();\r\n delete notificationInstance[cacheKey];\r\n });\r\n },\r\n};\r\n\r\n['success', 'info', 'warning', 'error'].forEach((type) => {\r\n Notification[type] = (props) => Notification.open({\r\n ...props,\r\n type,\r\n });\r\n});\r\n\r\nexport default Notification;\r\n","import axios from 'axios';\r\nimport { apiBaseUrl } from '../config/index'\r\nimport Notification from \"../components/commonComponents/notification\";\r\nimport userManager from '../utils/userManage'\r\n\r\nconst errorMsg = {\r\n '401': 'Unauthorized',\r\n '403': 'Operation denied',\r\n '500': 'Server error'\r\n}\r\n\r\nconst handleError = (status, { catchError }) => {\r\n if (window.location.href.includes('/Account/Login') || window.location.href.includes('/Account/Logout')) {\r\n return\r\n }\r\n if (!catchError && Number(status) !== 404) {\r\n Notification.error({\r\n message: 'error',\r\n description: errorMsg[status] || 'An unknown error!'\r\n })\r\n }\r\n\r\n if (status === 401) {\r\n setTimeout(() => {\r\n window.location.search = window.location.href\r\n window.location = '/Account/Login'\r\n localStorage.clear()\r\n }, 3000)\r\n }\r\n\r\n if (status === 403) {\r\n setTimeout(() => {\r\n // token expired\r\n localStorage.clear()\r\n window.location.search = window.location.href\r\n window.location = '/Account/Login'\r\n }, 3000)\r\n }\r\n}\r\n\r\n// get token\r\nconst AUTH = 'Authorization'\r\n\r\n//request list\r\nconst requestList = [];\r\n\r\n//cancel request list\r\nconst CancelToken = axios.CancelToken;\r\nlet sources = {};\r\n\r\n//global setting\r\naxios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';\r\n// request interceptors\r\naxios.interceptors.request.use((config) => {\r\n const request = JSON.stringify(config.url) + JSON.stringify(config.data);\r\n\r\n config.cancelToken = new CancelToken((cancel) => {\r\n sources[request] = cancel\r\n })\r\n // Determine whether the request already exists in the request list, avoid repeating the request, and add the current request to the request list array;\r\n if (requestList.includes(request)) {\r\n sources[request]('cancel repeat request')\r\n } else {\r\n requestList.push(request)\r\n }\r\n\r\n return config;\r\n}, (error) => {\r\n return Promise.reject(error);\r\n})\r\n\r\naxios.interceptors.response.use((response) => {\r\n const request = JSON.stringify(response.config.url) + JSON.stringify(response.config.data);\r\n requestList.splice(requestList.findIndex(item => item === request), 1);\r\n return response\r\n}, (error) => {\r\n if (axios.isCancel(error)) {\r\n throw new axios.Cancel('cancel request');\r\n } else {\r\n const response = error.response;\r\n const request = JSON.stringify(response.config.url) + JSON.stringify(response.config.data);\r\n requestList.splice(requestList.findIndex(item => item === request), 1);\r\n }\r\n return Promise.reject(error);\r\n})\r\n\r\nconst request = (url, method, params, settings) => userManager.getUser().then(user => {\r\n if (user) {\r\n //Get the token and add it to the request header for the backend to check the permissions\r\n axios.defaults.headers[AUTH] = 'Bearer ' + user.access_token;\r\n }\r\n return apiBaseUrl.then((baseURL) => {\r\n axios.defaults.baseURL = baseURL;\r\n return axios[method](url, params, Object.assign({}, settings)).catch(error => {\r\n // if you need to catch error, set settings value with '{catchError:true}'\r\n handleError(error && error.response && error.response.status, settings);\r\n return Promise.reject(error)\r\n });\r\n })\r\n});\r\n\r\n\r\nconst apiService = {\r\n post: (url, params, settings = {}) => {\r\n return request(url, 'post', params, settings);\r\n },\r\n\r\n get: (url, params, settings = {}) => {\r\n return request(url, 'get', params, settings);\r\n },\r\n\r\n delete: (url, params, settings = {}) => {\r\n return request(url, 'delete', params, settings);\r\n },\r\n\r\n put: (url, params, settings = {}) => {\r\n return request(url, 'put', params, settings);\r\n }\r\n}\r\n\r\n\r\nexport default apiService;\r\n\r\n\r\n","import apiService from '../api.service'\r\n\r\nexport const LoginAsync = async (body, opts) => {\r\n return await apiService.post('api/account/login', body, opts);\r\n};\r\n\r\nexport const LogoutAsync = async (body, opts) => {\r\n return await apiService.post('api/account/logout', body, opts);\r\n};\r\n\r\nexport const AcceptTerms = async (userId, body, opts) => {\r\n return await apiService.post(`/api/user/self/${userId}/acceptterms`, body, opts);\r\n}\r\n\r\nexport const getUserProfileAsync = userId => {\r\n return apiService.get(`/api/user/self/${userId}/profiles`, {}, { catchError: true })\r\n}\r\n\r\nexport const getSolutionsAsync = userId => apiService.get(`/api/user/self/${userId}/solutions`, {}, { catchError: true });\r\n\r\nexport const getSourceAsync = (obj, opts) => {\r\n return apiService.get(`/api/WebElementSource`, obj, opts)\r\n}\r\n","import React, { useState, useEffect, useRef, useCallback, useContext } from 'react';\r\nimport {\r\n Carousel,\r\n CarouselItem,\r\n CarouselControl,\r\n CarouselIndicators,\r\n} from 'reactstrap';\r\nimport { Spin } from '@sfx/react-ui'\r\nimport { UserContext } from '../userProvider'\r\nimport { getSourceAsync } from '../../services/api/account.service'\r\nimport styles from './landingPage.module.scss'\r\nimport cx from 'classnames';\r\n\r\nconst Category = {\r\n Recommended: 'Recommended',\r\n Carousel: 'Carousel',\r\n Link: 'Link'\r\n}\r\n\r\nconst CarouselBox = ({ carouselSourceList, sourceLoading }) => {\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const [animating, setAnimating] = useState(false);\r\n\r\n const next = () => {\r\n if (animating) return;\r\n const nextIndex = activeIndex === carouselSourceList.length - 1 ? 0 : activeIndex + 1;\r\n setActiveIndex(nextIndex);\r\n }\r\n\r\n const previous = () => {\r\n if (animating) return;\r\n const nextIndex = activeIndex === 0 ? carouselSourceList.length - 1 : activeIndex - 1;\r\n setActiveIndex(nextIndex);\r\n }\r\n\r\n const goToIndex = (newIndex) => {\r\n if (animating) return;\r\n setActiveIndex(newIndex);\r\n }\r\n const CarouselContent = item =>
\r\n
\r\n
\r\n

{item.title}

\r\n

{item.description1}

\r\n \r\n LEARN MORE\r\n \r\n
\r\n
\r\n const slides = carouselSourceList.map((item) => {\r\n return (\r\n setAnimating(true)}\r\n onExited={() => setAnimating(false)}\r\n key={`carousel${item.id}`}\r\n >\r\n \r\n \r\n );\r\n });\r\n\r\n const carouselDom = () => (carouselSourceList.length > 1 ?\r\n \r\n \r\n {slides}\r\n \r\n \r\n \r\n : )\r\n\r\n return (\r\n sourceLoading ?\r\n : carouselDom()\r\n );\r\n}\r\nconst SolutionCard = (i) => {\r\n const defaultSRC = '/images/Hexagon_RGB_REVERSED_ICON.png'\r\n const backgroundImage = i.thumbnailUrl ? { backgroundImage: `url(${i.thumbnailUrl})`} : { backgroundImage: 'url(/images/landing-page-style-guide-1.png)' }\r\n \r\n return (\r\n
\r\n \r\n { e.target.onError = null; e.target.src = defaultSRC; }} />\r\n \r\n
\r\n
\r\n

{i.fullName || i.name}

\r\n

\r\n There are Subscriptions that can be upgraded to PRO version.\r\n

\r\n
\r\n Upgrade To PRO\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst SolutionCardList = ({ solutions = [], solutionLoading }) => {\r\n\r\n const solutionContainer = useRef(null);\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const [pageSize, setPageSize] = useState(4);\r\n const [solutionsList, setSolutionsList] = useState({})\r\n\r\n const getSolutionListCallback = useCallback(() => {\r\n const solutionsList = {}\r\n solutions.forEach((i, index) => {\r\n let pageNo = parseInt(index / pageSize)\r\n solutionsList[pageNo] = solutionsList[pageNo] ? [...solutionsList[pageNo], i] : [i]\r\n })\r\n setSolutionsList(solutionsList)\r\n }, [pageSize, solutions])\r\n\r\n const pageNoChange = (index) => {\r\n if (index === Object.keys(solutionsList).length) {\r\n return;\r\n }\r\n setActiveIndex(index)\r\n }\r\n\r\n useEffect(() => {\r\n window.addEventListener('resize', updatePageSize)\r\n updatePageSize()\r\n return () => {\r\n window.removeEventListener('resize', updatePageSize)\r\n }\r\n }, [])\r\n\r\n const updatePageSize = () => {\r\n if (!solutionContainer.current) {\r\n return\r\n }\r\n try {\r\n let windowWidth = window.innerWidth;\r\n let solutionContainerWidth = solutionContainer.current.clientWidth\r\n let solutionCardWidth = windowWidth < 780 ? 240 : 200\r\n let pageSize = parseInt(solutionContainerWidth / solutionCardWidth)\r\n setPageSize(pageSize <= 1 ? 2 : pageSize)\r\n } catch (error) {\r\n setPageSize(4)\r\n }\r\n }\r\n useEffect(() => {\r\n getSolutionListCallback()\r\n setActiveIndex(0)\r\n }, [pageSize, getSolutionListCallback])\r\n\r\n return (\r\n
\r\n

My Solutions

\r\n {!solutionLoading &&\r\n (solutions.length ?\r\n <>\r\n
\r\n {solutionsList[activeIndex] && solutionsList[activeIndex].map((i, index) => ())}\r\n
\r\n {\r\n Object.keys(solutionsList).length > 1 &&\r\n
\r\n {Object.keys(solutionsList).map((i, index) => ( pageNoChange(index, e)} className={cx({ [styles.active]: activeIndex === index })}>{index + 1}))}\r\n pageNoChange(activeIndex + 1)}>\r\n
\r\n }\r\n \r\n :

Seems like you have not been assigned to any Solutions yet, please contact your administrator to assign the Solution&Role to you.

\r\n )}\r\n\r\n
\r\n )\r\n}\r\nconst VideoCard = i => {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n

{i.title}

\r\n
\r\n
\r\n )\r\n}\r\nconst VideoCardList = ({ videoSourceList, sourceLoading }) => {\r\n return (!sourceLoading &&\r\n
\r\n {!!videoSourceList.length &&

Recommended For You

}\r\n
\r\n {videoSourceList.map((i, index) => )}\r\n
\r\n
)\r\n}\r\nconst LandingPage = ({ solutions = [], userName = '', solutionLoading = true }) => {\r\n const { user } = useContext(UserContext)\r\n const [videoSourceList, setVideoSourceList] = useState([]);\r\n const [carouselSourceList, setCarouselSourceList] = useState([]);\r\n const [linkSource, setLinkSourceList] = useState([]);\r\n const [sourceLoading, setSourceLoading] = useState(true);\r\n const initSourceList = (type, data) => {\r\n let ret = data.filter(i => i.category === type)\r\n switch (type) {\r\n case Category.Recommended:\r\n setVideoSourceList(ret)\r\n break;\r\n case Category.Carousel:\r\n setCarouselSourceList(ret)\r\n break;\r\n case Category.Link:\r\n setLinkSourceList(ret)\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n useEffect(() => {\r\n if (user.profile) {\r\n getSourceAsync().then(({ data }) => {\r\n let ret = data.sort((a, b) => (a.order - b.order))\r\n Object.values(Category).forEach(type => {\r\n initSourceList(type, ret)\r\n })\r\n setSourceLoading(false)\r\n }).catch(() => {\r\n setSourceLoading(false)\r\n })\r\n }\r\n return () => {\r\n }\r\n }, [user])\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \"LOGO\"\r\n \"LOGO\"\r\n
\r\n \r\n
\r\n

{`Welcome back, ${userName}!`}

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\nexport default LandingPage","import React, { Component } from 'react'\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport withLocalization from '../hoc/with-localization.component';\r\nimport LandingPage from './landingPage.component'\r\nimport { UserContext } from '../userProvider'\r\nclass Home extends Component {\r\n render() {\r\n let { name, solutions, solutionLoading } = this.context\r\n solutions = solutions.map(i => {\r\n let images = i.images && i.images[0]\r\n let defaultImageUrl = i.defaultImageUrl\r\n let solutionImgUrl = images && images.url ? images.url : defaultImageUrl\r\n i.solutionImgUrl = solutionImgUrl\r\n return i\r\n })\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\nHome.contextType = UserContext\r\nexport default withRouter(withLocalization(Home));","import React, { Component } from 'react';\r\nimport styles from './step.module.scss';\r\n\r\nclass StepItem extends Component {\r\n\r\n render() {\r\n const { active, showLine, lineWidth } = this.props;\r\n return (\r\n
\r\n
\r\n {active && }\r\n
\r\n {
}\r\n {this.props.children &&
{this.props.children}
}\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default StepItem;","import React, { Component } from 'react';\r\nimport styles from './step.module.scss';\r\nimport StepItem from './stepItem.component';\r\nimport PropTypes from 'prop-types';\r\n\r\nclass Step extends Component {\r\n\r\n renderStep = () => {\r\n const { stepNum, stepTexts, stepActive, stepWidth } = this.props;\r\n const lineWidth = (stepWidth - 20 * stepNum) / (stepNum - 1);\r\n let steps = [];\r\n for (let i = 0; i < stepNum; i++) {\r\n const item = \r\n {stepTexts && stepTexts[i]}\r\n ;\r\n steps.push(item);\r\n }\r\n return (\r\n
\r\n {steps}\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n const { stepTitle, stepActiveText } = this.props;\r\n return (\r\n \r\n {stepTitle &&
{stepTitle}
}\r\n {this.renderStep()}\r\n {stepActiveText &&
{stepActiveText}
}\r\n
\r\n )\r\n }\r\n}\r\n\r\nStep.propTypes = {\r\n stepNum: PropTypes.number.isRequired,\r\n stepActive: PropTypes.number,\r\n stepWidth: PropTypes.number,\r\n stepTexts: PropTypes.array,\r\n stepTitle: PropTypes.string,\r\n stepActiveText: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.object\r\n ])\r\n}\r\n\r\nexport default Step;","import React, { Component } from 'react';\r\nimport { Link, withRouter } from 'react-router-dom';\r\nimport cx from 'classnames';\r\nimport styles from './registry.module.scss';\r\nimport Step from '../commonComponents/step';\r\nimport { Button } from 'reactstrap'\r\n\r\nclass RegistryStart extends Component {\r\n render() {\r\n const returnURL = localStorage.getItem('IDS_RETURNURL')\r\n const stepTexts = [\r\n Tell us about you.,\r\n Tell us where you work.,\r\n Set your security info.,\r\n Verify your email.];\r\n return (\r\n \r\n
\r\n

Sign Up

\r\n

Sign Up to try our amazing Solutions

\r\n
\r\n
\r\n

Register a New Organization

\r\n

Welcome to get started with a brand new Hexagon SFx account.

\r\n

Once you have set up your account you can start onboarding assets,\r\n inviting users, and much much more! Get started with the following steps:

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Get Started\r\n \r\n
\r\n
\r\n

Already have an Account?\r\n Sign in\r\n

\r\n
\r\n\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(RegistryStart);\r\n\r\n","import { translations } from './translations';\r\nimport moment from 'moment';\r\n\r\n\r\nexport const validatePassword = (password) => {\r\n var minMaxLength = /^[\\s\\S]{8,32}$/,\r\n upper = /[A-Z]/,\r\n lower = /[a-z]/,\r\n number = /[0-9]/,\r\n special = /[ !\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~]/;\r\n\r\n let valid = true;\r\n let message = '';\r\n if (minMaxLength.test(password) &&\r\n upper.test(password) &&\r\n lower.test(password) &&\r\n number.test(password) &&\r\n special.test(password)\r\n ) {\r\n return { valid, message };\r\n }\r\n else {\r\n valid = false;\r\n if (!minMaxLength.test(password)) {\r\n message = 'The password should be between 8 and 32 characters in length'\r\n }\r\n else if (!upper.test(password)) {\r\n message = 'At least one uppper case letter should be included'\r\n }\r\n else if (!lower.test(password)) {\r\n message = 'At least one lower case letter should be included'\r\n }\r\n else if (!number.test(password)) {\r\n message = 'At least one number should be included'\r\n }\r\n else if (!special.test(password)) {\r\n message = 'At least one special letter should be included'\r\n }\r\n return { valid, message }\r\n }\r\n}\r\n\r\nexport const validateEmail = (email) => {\r\n let re = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/\r\n let valid = re.test(String(email).toLowerCase());\r\n let message = valid ? '' : 'Please input valid email!';\r\n return { valid, message };\r\n}\r\n\r\nexport const validateStringValue = (val, required = false, min = 0, max = 0) => {\r\n require('./translations');\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n val = val.trim();\r\n if (required && val.length === 0) {\r\n isValid = false;\r\n errorMessage = translations.errorRequired;\r\n return { valid: isValid, errorMessage: errorMessage };\r\n }\r\n\r\n if (min > 0 && val.length < min) {\r\n isValid = false;\r\n errorMessage = translations.formatString(translations.errorMinChar, min);\r\n return { valid: isValid, errorMessage: errorMessage };\r\n }\r\n\r\n if (max > 0 && val.length > max) {\r\n isValid = false;\r\n errorMessage = translations.formatString(translations.errorMaxChar, max);\r\n return { valid: isValid, errorMessage: errorMessage };\r\n }\r\n\r\n return { valid: isValid, errorMessage: errorMessage };\r\n}\r\n\r\nexport const validateDuplicateName = (val, currentAssetId, assets) => {\r\n require('./translations');\r\n let isDuplicate = false;\r\n let errorMessage = '';\r\n\r\n /* Find if there are duplicate asset names.\r\n 1. Exclude the asset itseft.\r\n 2. compare the short name under HMISystem property.\r\n 3. If no short name, compare the ObejctID.\r\n */\r\n for (let asset of assets) {\r\n if (asset.ObjectID !== currentAssetId && (val === asset.HMISystem.ShortName || val === asset.ObjectID)) {\r\n isDuplicate = true;\r\n errorMessage = translations.duplicateAssetName;\r\n break;\r\n }\r\n }\r\n\r\n return { duplicate: isDuplicate, errorMessage: errorMessage };\r\n}\r\n\r\nexport const validateDateValue = (val, required = false) => {\r\n let isValid = true;\r\n let thisDate = new Date(val);\r\n let errorMessage = '';\r\n\r\n if ((required || val) && !Date.parse(thisDate)) {\r\n isValid = false;\r\n errorMessage = this.props.translate('invalidDate');\r\n }\r\n\r\n return { isValid, errorMessage };\r\n}\r\n\r\nexport const validateShiftName = (val, required = false, min = 0, max = 0, shiftNamesToCheck = []) => {\r\n //Check shiftName string and if duplicate\r\n require('./translations');\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n val = val.trim();\r\n if (required && val.length === 0) {\r\n isValid = false;\r\n errorMessage = translations.errorRequired;\r\n }\r\n\r\n if (min > 0 && val.length < min) {\r\n isValid = false;\r\n errorMessage = translations.formatString(translations.errorMinChar, min);\r\n }\r\n\r\n if (max > 0 && val.length > max) {\r\n isValid = false;\r\n errorMessage = translations.formatString(translations.errorMaxChar, max);\r\n }\r\n\r\n if (shiftNamesToCheck.find(s => s.ShiftName === val)) {\r\n isValid = false;\r\n errorMessage = translations.errorDuplicateShiftName;\r\n }\r\n\r\n return { valid: isValid, errorMessage: errorMessage };\r\n}\r\n\r\nexport const validateInteger = (val, required = false) => {\r\n require('./translations');\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n val = val.trim();\r\n const re = /^([1-9]\\d*|0)$/;\r\n isValid = re.test(String(val).toLowerCase());\r\n errorMessage = translations.formatString(translations.errorNotInteger, val);\r\n\r\n return { valid: isValid, errorMessage: errorMessage };\r\n}\r\n\r\nexport const validateShiftStartEnd = (startVal, endVal) => {\r\n require('./translations');\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n // Is start or end time blank?\r\n if (startVal !== '' && endVal === '') {\r\n isValid = false;\r\n errorMessage = translations.errorNoEndTime;\r\n }\r\n\r\n if (startVal === '' && endVal !== '') {\r\n isValid = false;\r\n errorMessage = translations.errorNoStartTime;\r\n }\r\n\r\n // Is end time after start time?\r\n if (startVal !== '' && endVal !== '') {\r\n const start = '2019-01-01 ' + startVal;\r\n const end = '2019-01-01 ' + endVal;\r\n let isEndAfterStart = moment(start) < moment(end);\r\n if (!isEndAfterStart) {\r\n isValid = false;\r\n errorMessage = translations.errorStartAfterEnd;\r\n }\r\n }\r\n\r\n return { valid: isValid, errorMessage: errorMessage };\r\n}\r\n\r\nexport const validateBreakValue = (val, startVal, endVal) => {\r\n require('./translations');\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n if (val && startVal && endVal) {\r\n val = val.trim();\r\n const regX = /^([1-9]\\d*|0)$/;\r\n if (!regX.test(String(val).toLowerCase())) {\r\n isValid = false;\r\n errorMessage = translations.formatString(translations.errorNotInteger, val);\r\n }\r\n\r\n if (startVal !== '' && endVal !== '' && val !== '') {\r\n const start = '2019-01-01 ' + startVal;\r\n const end = '2019-01-01 ' + endVal;\r\n var shiftMinutes = moment.duration(moment(end, \"YYYY-MM-DD HH:mm\").diff(moment(start, \"YYYY-MM-DD HH:mm\"))) / 60000;\r\n if (val > shiftMinutes) {\r\n isValid = false;\r\n errorMessage = translations.errorLongDownTime;\r\n }\r\n }\r\n }\r\n\r\n return { valid: isValid, errorMessage: errorMessage };\r\n}\r\n\r\nexport const validateHolidayDate = (val, required = false, holidaysToCheck = [], currentVal = '') => {\r\n require('./translations');\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n if (required && !val) {\r\n isValid = false;\r\n errorMessage = translations.errorRequired;\r\n\r\n return { valid: isValid, errorMessage: errorMessage };\r\n }\r\n\r\n if (currentVal && currentVal !== moment(val).format('YYYY-MM-DD')) {\r\n if (holidaysToCheck.find(h => h.HolidayDate === moment(val).format('YYYY-MM-DD'))) {\r\n isValid = false;\r\n errorMessage = translations.errorHolidayNotUnique;\r\n }\r\n }\r\n\r\n if (!currentVal) {\r\n if (holidaysToCheck.find(h => h.HolidayDate === moment(val).format('YYYY-MM-DD'))) {\r\n isValid = false;\r\n errorMessage = translations.errorHolidayNotUnique;\r\n }\r\n }\r\n\r\n return { valid: isValid, errorMessage: errorMessage };\r\n}\r\n\r\nexport const validateScheduleValue = (val, required = false, min = 0, max = 0, scheduleNamesToCheck = []) => {\r\n //Check scheduleName string and uniqueness\r\n require('./translations');\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n val = val.trim();\r\n if (required && val.length === 0) {\r\n isValid = false;\r\n errorMessage = translations.errorRequired;\r\n }\r\n\r\n if (min > 0 && val.length < min) {\r\n isValid = false;\r\n errorMessage = translations.formatString(translations.errorMinChar, min);\r\n }\r\n\r\n if (max > 0 && val.length > max) {\r\n isValid = false;\r\n errorMessage = translations.formatString(translations.errorMaxChar, max);\r\n }\r\n\r\n if (scheduleNamesToCheck.find(s => s.ObjectName === val)) {\r\n isValid = false;\r\n errorMessage = translations.errorDuplicateScheduleName;\r\n }\r\n\r\n return { valid: isValid, errorMessage: errorMessage };\r\n}\r\n\r\nexport const validateStringUniqueValue = (val, required = false, min = 0, max = 0, namesToCheck = []) => {\r\n require('./translations');\r\n let isValid = true;\r\n let errorMessage = '';\r\n\r\n val = val.trim();\r\n if (required && val.length === 0) {\r\n isValid = false;\r\n errorMessage = translations.errorRequired;\r\n }\r\n\r\n if (min > 0 && val.length < min) {\r\n isValid = false;\r\n errorMessage = translations.formatString(translations.errorMinChar, min);\r\n }\r\n\r\n if (max > 0 && val.length > max) {\r\n isValid = false;\r\n errorMessage = translations.formatString(translations.errorMaxChar, max);\r\n }\r\n\r\n if (namesToCheck.find(s => s.Name === val)) {\r\n isValid = false;\r\n errorMessage = translations.errorDuplicateName;\r\n }\r\n\r\n return { valid: isValid, errorMessage: errorMessage };\r\n}\r\n\r\n\r\n\r\nexport const validateMobile = (mobile) => {\r\n let valid = true;\r\n let message = '';\r\n if (!(/^1[34578]\\d{9}$/.test(mobile))) {\r\n valid = false;\r\n message = 'please input valid mobile';\r\n return { valid, message }\r\n }\r\n return { valid, message }\r\n}\r\n\r\nexport const validateMobileOnlyNumber = (mobile) => {\r\n let valid = true;\r\n let message = '';\r\n if (!(/^[0-9]*$/.test(mobile))) {\r\n valid = false;\r\n message = 'please input valid mobile';\r\n return { valid, message }\r\n }\r\n return { valid, message }\r\n}\r\n\r\nexport const validatePhoneNumber = (value) => {\r\n let valid = true;\r\n let message = '';\r\n const reg = /^(\\+?( |-|\\.)?\\d{1,3}( |-|\\.)?)?(\\(\\+?\\d{1,5}( |-|\\.)?\\d{0,3}\\)|\\d{2,4})( |-|\\.)?(\\d{2,}( |-|\\.)?\\d+)$/;\r\n const regSpecial = /[!\"#$%&'*,:;<=>?@[\\\\\\]^_`{|}~]+/;\r\n if (regSpecial.test(value)) {\r\n valid = false;\r\n message = 'Please only use +, -, ( ), ., and spaces to divide phone numbers in this section.'\r\n return { valid, message, type: 'special' }\r\n }\r\n if (!reg.test(value)) {\r\n valid = false;\r\n message = 'please input valid mobile';\r\n }\r\n return { valid, message }\r\n}","import apiService from '../../services/api.service'\r\n\r\nexport const validateEmailAsync = (email, opts) => {\r\n return apiService.get(`/api/users/check/email/${email}`, {}, opts)\r\n}\r\n\r\n\r\nexport const validateGenericEmailAsync = (email, opts) => {\r\n return apiService.get(`/api/users/check/generic_email/${email}`, {}, opts)\r\n}\r\n\r\nexport const validateOrgNameAsync = (name, opts) => {\r\n return apiService.get(`/api/organizations/check/${name}`, {}, opts)\r\n}\r\n\r\nexport const getCountryPhoneCodeListAsyc = (opts) => {\r\n return apiService.get('/api/geo/callingcodes', {}, opts)\r\n}\r\n\r\nexport const getCountryListAsync = (opts) => {\r\n return apiService.get('/api/geo/country', {}, opts)\r\n}\r\n\r\nexport const getStateListAsync = (countryId, opts) => {\r\n return apiService.get(`/api/geo/${countryId}/state`, {}, opts)\r\n}\r\n\r\nexport const getCityListAsync = (stateId, opts) => {\r\n return apiService.get(`/api/geo/${stateId}/city`, {}, opts)\r\n}\r\n\r\nexport const registerAsync = (body, opts) => {\r\n return apiService.post('/api/user/self', body, opts)\r\n}\r\n\r\nexport const confirmEmailAsync = (body, opts) => {\r\n return apiService.post('/api/users/confirmEmail', body, opts)\r\n}\r\n\r\nexport const consumeCaptchaAsync = (body, opts) => {\r\n return apiService.put('/api/user/self/activatebycode', body, opts)\r\n}\r\n\r\nexport const cleanActionLinksAsync = (userName, opts) => {\r\n return apiService.post(`/api/operation/${userName}`, {}, opts);\r\n}\r\n\r\nexport const resendNewAccountCaptchaAsync = (userName, operationId, clientReturnUri, opts) => {\r\n return apiService.post(`/api/user/self/resendcode/${userName}/${operationId}?clientReturnUri=${clientReturnUri}`, {}, opts);\r\n}\r\n\r\nexport const sendWelcomeNotificationAsync = (email, opts) => {\r\n return apiService.post(`/api/user/self/welcome/${email}`, {}, opts);\r\n}\r\n\r\nexport const checkEmailDomainExistenceAsync = (email, opts) => {\r\n return apiService.get(`/api/users/check/domain/${email}`, {}, opts)\r\n}\r\n\r\nexport const sendAccountRegistrationNotificationAsync = (requesttype, body, opts) => {\r\n return apiService.post(`/api/user/self/accountregistrationaction/${requesttype}`, body, opts);\r\n}","import React from \"react\";\r\nconst imgSrc = {\r\n warning: '../images/alert-outlinesvg.svg',\r\n info: '../images/i.svg'\r\n}\r\nconst Alert = (props) => (\r\n
\r\n
\"ico\"
\r\n
\r\n
{props.message}
\r\n
\r\n
\r\n)\r\nexport default Alert;\r\n","\r\n\r\n\r\nconst registerData = {\r\n}\r\n\r\n\r\n\r\nexport default registerData;","import React, { Component } from 'react';\r\nimport { withRouter, Link } from 'react-router-dom';\r\nimport { FormGroup, Input, Button, Label, Spinner } from 'reactstrap';\r\nimport { debounce } from 'lodash'\r\n\r\nimport styles from '../registry.module.scss';\r\nimport Step from '../../commonComponents/step';\r\nimport { validateEmail, validatePhoneNumber } from '../../../utils/formValidation';\r\nimport { validateEmailAsync, validateGenericEmailAsync, getCountryPhoneCodeListAsyc } from '../register.service';\r\nimport Alert from '../../commonComponents/alert';\r\nimport { Select } from '@sfx/react-ui';\r\nimport { checkEmailDomainExistenceAsync, sendAccountRegistrationNotificationAsync, validateOrgNameAsync } from '../register.service'\r\nimport Notification from \"../../commonComponents/notification\";\r\nimport registerData from '../register-data';\r\n\r\n\r\nclass CreateAccountBasic extends Component {\r\n state = {\r\n countryPhoneCodeList: [],\r\n formValid: false,\r\n email: registerData.email || '',\r\n validateEmail: (this.props.persistedState && this.props.persistedState.validateEmail !== undefined) ? this.props.persistedState.validateEmail : false,\r\n validateEmailMsg: '',\r\n validateEmailShowError: false,\r\n confirmEmail: registerData.confirmEmail || '',\r\n validateConfirmEmail: (this.props.persistedState && this.props.persistedState.validateConfirmEmail !== undefined) ? this.props.persistedState.validateConfirmEmail : false,\r\n validateConfirmEmailMsg: '',\r\n phoneNum: registerData.userPhoneNum || '',\r\n validatephoneNum: false,\r\n validatephoneMsg: '',\r\n validatephoneNumShowError: false,\r\n phoneCountryCode: registerData.userPhoneCountryCode || null,\r\n firstName: registerData.firstName || '',\r\n isFirstNameChange: false,\r\n lastName: registerData.lastName || '',\r\n isLastNameChange: false,\r\n nextStep: 2,\r\n isShowCheckEmailLoading: false,\r\n showNumberLoading: true,\r\n isExistedDomain: (this.props.persistedState && this.props.persistedState.isExistedDomain !== undefined) ? this.props.persistedState.isExistedDomain : false,\r\n messageContent: (this.props.persistedState && this.props.persistedState.messageContent) ? this.props.persistedState.messageContent : '',\r\n showMessageBox: (this.props.persistedState && this.props.persistedState.showMessageBox !== undefined) ? this.props.persistedState.showMessageBox : false,\r\n sendBtnDiabled: false,\r\n requestAccessButtonDisabled: false,\r\n showNextButton: (this.props.persistedState && this.props.persistedState.showNextButton !== undefined) ? this.props.persistedState.showNextButton : true,\r\n isFreeProviderEmail: (this.props.persistedState && this.props.persistedState.isFreeProviderEmail !== undefined) ? this.props.persistedState.isFreeProviderEmail : true,\r\n }\r\n\r\n componentDidMount() {\r\n this.validForm();\r\n this.getCountryPhoneCodeListAsyc();\r\n }\r\n\r\n getCountryPhoneCodeListAsyc = async () => {\r\n try {\r\n const res = await getCountryPhoneCodeListAsyc({ catchError: true });\r\n if (res && res.data) {\r\n this.setState({ countryPhoneCodeList: res.data, showNumberLoading: false });\r\n }\r\n } catch (err) {\r\n this.setState({ showNumberLoading: false })\r\n }\r\n }\r\n\r\n\r\n validForm = () => {\r\n if (registerData.email && (!this.props.persistedState || this.props.persistedState.isExistedDomain === undefined)) {\r\n this.validateEmail(registerData.email);\r\n }\r\n if (registerData.userPhoneNum) {\r\n this.validatePhone(registerData.userPhoneNum);\r\n }\r\n }\r\n\r\n\r\n onNext = () => { \r\n if (!(this.state.validateEmail && this.state.validatephoneNum) || this.state.isExistedDomain) {\r\n return;\r\n }\r\n\r\n if (this.state.isFreeProviderEmail) {\r\n this.setRegisterData();\r\n this.props.onStepChange(this.state.nextStep);\r\n return;\r\n }\r\n this.setState({ showNextButton: false });\r\n this.checkWhetherDomainExistedAsync(this.state.email);\r\n }\r\n\r\n onEmailChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ email: value, nextStep: 2, validateEmail: false }, () => {\r\n value && this.validateEmail(value);\r\n });\r\n\r\n }\r\n\r\n validateEmail = debounce((value) => {\r\n const validateRes = validateEmail(value);\r\n let msg = (
{value && validateRes.message}
);\r\n this.setState({ validateEmailMsg: msg, validateEmail: false, validateEmailShowError: !validateRes.valid }, async () => {\r\n if (validateRes.valid) {\r\n if(this.state.confirmEmail.trim()){\r\n this.checkConfirmEmail(value,this.state.confirmEmail);\r\n }\r\n const validateGenericEmail = await this.checkGenericEmailAsync(value);\r\n if (!validateGenericEmail) {\r\n msg = ();\r\n this.setState({ validateEmail: true, validateEmailMsg: msg, nextStep: 7, validateEmailShowError: false, isFreeProviderEmail: true });\r\n } else {\r\n this.setState({ isShowCheckEmailLoading: true, isFreeProviderEmail: false });\r\n const valid = await this.checkEmailAsync(value);\r\n this.setState({ isShowCheckEmailLoading: false });\r\n if (!valid) {\r\n let returnURL = localStorage.getItem('IDS_RETURNURL')\r\n msg = (Email already in use, do you have an SFx account already? Sign in here.)} />);\r\n this.setState({ validateEmail: false, validateEmailMsg: msg, validateEmailShowError: true });\r\n } else { \r\n this.setState({ validateEmail: true, validateEmailShowError: false });\r\n \r\n };\r\n\r\n }\r\n\r\n }\r\n });\r\n }, 1000)\r\n\r\n checkEmailAsync = async (value) => {\r\n try {\r\n let res = await validateEmailAsync(value, { catchError: true });\r\n if (res && res.status === 204) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n } catch (err) {\r\n return true;\r\n }\r\n\r\n }\r\n\r\n checkWhetherDomainExistedAsync = async (value) => {\r\n try {\r\n let res = await checkEmailDomainExistenceAsync(value, { catchError: true });\r\n if (res && res.status === 200) {\r\n this.setState({ isExistedDomain: true }, () => { this.setRegisterData(); });\r\n } else {\r\n this.setState({ isExistedDomain: false }, () => { this.GoToNext(); });\r\n }\r\n } catch (err) {\r\n if (err.response && err.response.status === 404) {\r\n this.setState({ isExistedDomain: false }, () => { this.GoToNext(); });\r\n } else {\r\n this.setState({ isExistedDomain: true }, () => { this.setRegisterData(); }\r\n );\r\n }\r\n }\r\n }\r\n\r\n onConfirmChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ confirmEmail: value });\r\n const validateRes = validateEmail(value.trim());\r\n if(!validateRes.valid) {\r\n const msg = (
{validateRes.message}
);\r\n this.setState({validateConfirmEmail:false,validateConfirmEmailMsg:msg})\r\n } else {\r\n this.setState({validateConfirmEmail:true,validateConfirmEmailMsg:''},()=>{\r\n if(value.trim()) {\r\n this.checkConfirmEmail(value,this.state.email);\r\n }\r\n })\r\n }\r\n \r\n }\r\n\r\n checkConfirmEmail = (value1,value2) => {\r\n if (value1.trim() !== value2.trim()) {\r\n const msg = (
Those email addresses didn't match.Try again.
);\r\n this.setState({ validateConfirmEmail: false, validateConfirmEmailMsg: msg });\r\n } else {\r\n this.setState({ validateConfirmEmail: true, validateConfirmEmailMsg: '' }, () => { this.setState({ isExistedDomain: false, showMessageBox: false, showNextButton: true }); });\r\n }\r\n }\r\n\r\n\r\n checkGenericEmailAsync = async (value) => {\r\n try {\r\n let res = await validateGenericEmailAsync(value, { catchError: true });\r\n if (res && res.data) {\r\n if (res.data.isFreeProvider) {\r\n return false\r\n } else {\r\n return true\r\n }\r\n }\r\n } catch (err) {\r\n }\r\n\r\n\r\n }\r\n\r\n onPhoneChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ phoneNum: value, validatephoneNum: false }, () => {\r\n value && this.validatePhone(value);\r\n })\r\n }\r\n\r\n validatePhone = debounce((value) => {\r\n let msg;\r\n const validateRes = validatePhoneNumber(value);\r\n const msgDom = (<>Please only use +, -, ( ),. , and spaces to divide phone numbers in this section.)\r\n if (validateRes.type === 'special') {\r\n msg = ;\r\n } else {\r\n msg = (value && validateRes.message && < Alert type='warning' message={msgDom} />);\r\n }\r\n if (validateRes.valid) {\r\n registerData.userPhoneNum = value;\r\n }\r\n\r\n this.setState({ validatephoneMsg: msg, validatephoneNum: validateRes.valid, validatephoneNumShowError: !validateRes.valid });\r\n }, 1000)\r\n\r\n onFirstNameChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ firstName: value });\r\n }\r\n\r\n onLastNameChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ lastName: value })\r\n }\r\n\r\n onPhoneCountryCodeChange = (item) => {\r\n registerData.userPhoneCountryCode = item;\r\n this.setState({ phoneCountryCode: item })\r\n }\r\n\r\n setRegisterData = () => {\r\n registerData.email = this.state.email.trim();\r\n registerData.confirmEmail = this.state.confirmEmail.trim();\r\n registerData.firstName = this.state.firstName.trim();\r\n registerData.lastName = this.state.lastName.trim();\r\n }\r\n\r\n sendAccountRegistrationNotification = async (e) => {\r\n e.preventDefault();\r\n let requestType = e.target.id;\r\n if (requestType === \"USERJOININGINEXISTINGORGANIZATION\") {\r\n this.setState({ requestAccessButtonDisabled: true }); \r\n } else {\r\n this.setState({ sendBtnDiabled: true })\r\n }\r\n\r\n if ((!this.state.showMessageBox || !this.state.messageContent.trim()) && requestType === \"CONTACTSFXFORASSISTANCE\") {\r\n return;\r\n }\r\n\r\n let requestData = {\r\n \"surname\": this.state.lastName.trim(),\r\n \"givenName\": this.state.firstName.trim(),\r\n \"email\": this.state.email.trim(),\r\n \"userPhoneCountryCode\": this.state.phoneCountryCode.code,\r\n \"mobile\": this.state.phoneNum.trim(),\r\n \"reasonMessage\": this.state.messageContent.trim()\r\n }\r\n \r\n try {\r\n const res = await sendAccountRegistrationNotificationAsync(requestType, requestData, { catchError: true })\r\n if (res && res.status === 200) {\r\n let successMsg;\r\n successMsg = requestType === \"USERJOININGINEXISTINGORGANIZATION\" ? 'Email was sent to your account administrators to request for your access!'\r\n : \"Email was sent to SFx Business Development to request for your access!\";\r\n \r\n this.setState({sendBtnDiabled: this.state.messageContent && this.state.messageContent.trim() ? false : true,\r\n requestAccessButtonDisabled: false }, () =>\r\n {\r\n this.props.onStepChange(8, successMsg,\r\n {\r\n isExistedDomain: this.state.isExistedDomain,\r\n messageContent: this.state.messageContent,\r\n showMessageBox: this.state.showMessageBox,\r\n showNextButton: this.state.showNextButton, \r\n validateConfirmEmail: this.state.validateConfirmEmail,\r\n validateEmail: this.state.validateEmail,\r\n isFreeProviderEmail: this.state.isFreeProviderEmail\r\n }) \r\n }) \r\n }\r\n } catch (err) {\r\n let errorMsg ;\r\n errorMsg = err && err.response && err.response.status === 404 ? 'Your Account Administrator might not be Available in the System, Email was not Send, Please Contact SFx Asset Management Administrator!'\r\n : 'Unknown Error Happened, Please Contact SFx Asset Management Administrator!';\r\n Notification.error({\r\n message: 'Unknown Error',\r\n description: errorMsg\r\n })\r\n }\r\n };\r\n\r\n GoToNext = () => {\r\n this.setRegisterData();\r\n this.props.onStepChange(this.state.nextStep)\r\n }\r\n\r\n scrollToAnchor = () => {\r\n const anchorElement = document.getElementById(\"messagebox\");\r\n if (anchorElement) {\r\n anchorElement.scrollIntoView(false);\r\n }\r\n };\r\n\r\n displayMessageBox = async (e) => {\r\n e.preventDefault();\r\n this.setState({ showMessageBox: !this.state.showMessageBox }, () => {\r\n if (this.state.showMessageBox) {\r\n this.scrollToAnchor();\r\n }\r\n }); \r\n }\r\n\r\n onMessageContentChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ messageContent: value });\r\n if (value.trim()) {\r\n this.setState({ sendBtnDiabled: false });\r\n }\r\n else {\r\n this.setState({ sendBtnDiabled: true });\r\n };\r\n }\r\n\r\n render() {\r\n const nextBtnDisabled = !(\r\n this.state.validateEmail\r\n && this.state.validateConfirmEmail\r\n && this.state.firstName.trim()\r\n && this.state.lastName.trim()\r\n && this.state.validatephoneNum\r\n && this.state.phoneCountryCode\r\n && !this.state.isExistedDomain);\r\n\r\n const disabledRequestAccessButton = !(\r\n this.state.validateEmail\r\n && this.state.validateConfirmEmail\r\n && this.state.firstName.trim()\r\n && this.state.lastName.trim()\r\n && this.state.validatephoneNum\r\n && this.state.phoneCountryCode\r\n && this.state.isExistedDomain\r\n && !this.state.requestAccessButtonDisabled);\r\n\r\n const disabledSendBtn = !(\r\n this.state.validateEmail\r\n && this.state.validateConfirmEmail\r\n && this.state.firstName.trim()\r\n && this.state.lastName.trim()\r\n && this.state.validatephoneNum\r\n && this.state.phoneCountryCode\r\n && this.state.isExistedDomain\r\n && this.state.messageContent\r\n && !this.state.sendBtnDiabled);\r\n\r\n return (\r\n \r\n
\r\n Tell us about you.} />\r\n
\r\n
\r\n \r\n \r\n {this.state.isShowCheckEmailLoading && }\r\n \r\n {this.state.validateEmailMsg}\r\n \r\n \r\n \r\n e.preventDefault()}/>\r\n {this.state.validateConfirmEmailMsg}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ({\r\n label: `(+${i.code} ${i.name} )`,\r\n value: i.geonameId,\r\n FlagUrl: i.flagUrl\r\n })}\r\n value={this.state.phoneCountryCode}\r\n options={this.state.countryPhoneCodeList}\r\n onChange={this.onPhoneCountryCodeChange}\r\n isLoading={this.state.showNumberLoading}\r\n isDisabled={this.state.showNumberLoading}\r\n />\r\n \r\n \r\n \r\n \r\n {this.state.validatephoneMsg}\r\n \r\n {this.state.isExistedDomain &&
\r\n <>Good news! Your organization already exists. Click the button to request access from your Admins.\r\n \r\n
\r\n Contact SFx for assistance \r\n \r\n
\r\n
}\r\n {this.state.showMessageBox && \r\n \r\n
\r\n \r\n
\r\n
}\r\n
\r\n {this.state.showMessageBox && }\r\n {!this.state.showMessageBox && this.state.showNextButton && }\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n \r\nexport default withRouter(CreateAccountBasic);","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Input, FormText } from 'reactstrap';\r\nimport classnames from 'classnames';\r\n\r\nclass PasswordMask extends Component {\r\n\tstate = {\r\n\t\tmasked: true,\r\n\t\tpasswordValue: this.props.value || ''\r\n\t}\r\n\r\n\thandleEyeClick = () => {\r\n\t\tthis.setState({ masked: !this.state.masked });\r\n\t}\r\n\r\n\thandlePasswordChange = (e) => {\r\n\t\te.persist();\r\n\t\tconst val = e.target.value.trim();\r\n\t\tthis.setState({ passwordValue: val },\r\n\t\t\t() => {\r\n\t\t\t\tif (this.props.onChange) {\r\n\t\t\t\t\t// return event so this param can be used to debounce\r\n\t\t\t\t\tthis.props.onChange(e);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t}\r\n\r\n\thandlePasswordBlur(e) {\r\n\t\tconst val = e.target.value;\r\n\t\tif (this.props.onBlur) {\r\n\t\t\tthis.props.onBlur(val)\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst innerEye = (\r\n\t\t\t\r\n\t\t\t\t{this.state.masked &&\r\n\t\t\t\t\teye\r\n\t\t\t\t}\r\n\t\t\t\t{!this.state.masked &&\r\n\t\t\t\t\teyeSlash\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t);\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t{this.props.bootstrapDefaultStyle &&\r\n\t\t\t\t\t\t
{innerEye}
\r\n\t\t\t\t\t}\r\n\t\t\t\t\t{!this.props.bootstrapDefaultStyle &&\r\n\t\t\t\t\t\t{innerEye}\r\n\t\t\t\t\t}\r\n\t\t\t\t
\r\n\t\t\t\t{this.props.showErrorMsg && {this.props.errorMessage}}\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n}\r\n\r\nPasswordMask.propTypes = {\r\n\tfieldName: PropTypes.string.isRequired,\r\n\tinvalid: PropTypes.bool,\r\n\thandleChange: PropTypes.func,\r\n\tclassName: PropTypes.string,\r\n\tbootstrapDefaultStyle: PropTypes.bool,\r\n\terrorMessage: PropTypes.oneOfType([\r\n\t\tPropTypes.string,\r\n\t\tPropTypes.element,\r\n\t]),\r\n\tplaceHolder: PropTypes.string\r\n};\r\n\r\nPasswordMask.defaultProps = {\r\n\tclassName: '',\r\n\tbootstrapDefaultStyle: true,\r\n\tplaceHolder: 'Password'\r\n}\r\n\r\nexport default PasswordMask;","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { FormGroup, FormFeedback, Button, Label, CustomInput, Spinner } from 'reactstrap';\r\nimport styles from '../registry.module.scss';\r\nimport Step from '../../commonComponents/step'\r\nimport Alert from '../../commonComponents/alert'\r\nimport PasswordMask from '../../commonComponents/password';\r\nimport Notification from \"../../commonComponents/notification\";\r\nimport { validatePassword } from '../../../utils/formValidation'\r\nimport registerData from '../register-data'\r\nimport { debounce } from 'lodash'\r\nimport { registerAsync } from '../register.service'\r\n\r\nconst errorMessage = \r\n

Password should meet requirements:

\r\n
    \r\n
  • 8-32 characters in length
  • \r\n
  • At least one uppercase letter
  • \r\n
  • At least one lowercase letter
  • \r\n
  • At least one number
  • \r\n
  • At least one special character
  • \r\n
\r\n
\r\nclass CompleteAccount extends Component {\r\n componentDidMount() {\r\n if (registerData.password) {\r\n this.validateFields('password', registerData.password)\r\n }\r\n }\r\n state = {\r\n showErrors: null,\r\n errorMessage: errorMessage,\r\n password: registerData.password || '',\r\n verifyPassword: registerData.verifyPassword || '',\r\n canNotSubmit: true,\r\n readCheck: registerData.readCheck || false,\r\n isShowLoading: false,\r\n canGoback: true\r\n }\r\n onChange = e => {\r\n let { name, value } = e.target\r\n this.setState({\r\n [name]: value,\r\n canNotSubmit: true\r\n }, () => {\r\n this.validateFields(name, value);\r\n })\r\n }\r\n onCheck = e => {\r\n let { name, checked } = e.target\r\n this.setState({ [name]: checked })\r\n registerData.readCheck = checked\r\n }\r\n validateFields = debounce((name, value) => {\r\n let validResult;\r\n switch (name) {\r\n case 'password':\r\n validResult = validatePassword(value);\r\n validResult.message = errorMessage\r\n if (validResult.valid && this.state.verifyPassword) {\r\n validResult = this.confirmPassword(value, this.state.verifyPassword)\r\n }\r\n break;\r\n case 'verifyPassword':\r\n validResult = validatePassword(value);\r\n validResult.message = errorMessage\r\n if (validResult.valid) {\r\n validResult = this.confirmPassword(this.state.password, value)\r\n }\r\n break;\r\n default: break;\r\n }\r\n\r\n this.setState({\r\n showErrors: !validResult.valid,\r\n errorMessage: validResult.message,\r\n canNotSubmit: validResult.valid ? !(this.state.verifyPassword && this.state.password) : true\r\n })\r\n }, 1000)\r\n confirmPassword = (password, verifyPassword) => {\r\n let validResult = {\r\n valid: password === verifyPassword,\r\n message: password === verifyPassword ? '' : 'The passwords you entered do not match. Please try again.'\r\n }\r\n return validResult\r\n }\r\n\r\n back = () => {\r\n registerData.password = this.state.password;\r\n registerData.verifyPassword = this.state.verifyPassword\r\n this.props.onStepChange(3);\r\n }\r\n\r\n onNext = async () => {\r\n this.setState({ isShowLoading: true, canNotSubmit: true, canGoback: false });\r\n registerData.password = this.state.password;\r\n registerData.verifyPassword = this.state.verifyPassword;\r\n localStorage.setItem('orgName', registerData.organizationName);\r\n const data = {\r\n \"surname\": registerData.lastName,\r\n \"givenName\": registerData.firstName,\r\n \"email\": registerData.email,\r\n \"userPhoneCountryCode\": registerData.userPhoneCountryCode.code,\r\n \"userPhoneCountryCodeGeonameId\": registerData.userPhoneCountryCode.geonameId,\r\n \"mobile\": registerData.userPhoneNum,\r\n \"password\": registerData.password,\r\n \"orgName\": registerData.organizationName,\r\n \"orgAddress\": registerData.organizationAddress,\r\n \"orgAddressLine2\": registerData.organizationAddressLine,\r\n \"orgZipOrPostcode\": registerData.organizationZipCode,\r\n \"orgCity\": registerData.organizationCity,\r\n \"orgStateOrProvince\": registerData.organizationState ? registerData.organizationState.name : '',\r\n \"orgStateOrProvinceId\": registerData.organizationState ? registerData.organizationState.geonameId : '',\r\n \"orgCountry\": registerData.organizationCountry.countryName,\r\n \"orgRegion\": registerData.organizationCountry.continent,\r\n \"orgCountryId\": registerData.organizationCountry.geonameId,\r\n \"orgPhoneCountryCode\": registerData.organizationPhoneCountryCode.code,\r\n \"orgPhoneCountryCodeGeonameId\": registerData.organizationPhoneCountryCode.geonameId,\r\n \"orgPhoneNumber\": registerData.organizationPhoneNumber,\r\n \"ClientId\": localStorage.getItem('clientId') !== 'undefined' ? localStorage.getItem('clientId') : ''\r\n }\r\n try {\r\n const res = await registerAsync(data, { catchError: true })\r\n if (res && res.status === 200) {\r\n this.setState({ isShowLoading: false });\r\n this.props.onStepChange(5);\r\n registerData.signInURL = res.data.signInURL;\r\n localStorage.setItem('signInURL', res.data.signInURL);\r\n }\r\n\r\n } catch (err) {\r\n this.setState({ isShowLoading: false });\r\n Notification.error({\r\n message: 'error',\r\n description: 'Server error!'\r\n })\r\n }\r\n\r\n }\r\n\r\n render() {\r\n const prefixCls = 'IS-'\r\n return (\r\n < React.Fragment >\r\n
\r\n Set your security information.} />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.state.showErrors && }\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(CompleteAccount);","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { FormGroup, Input, Button, Label, Spinner } from 'reactstrap';\r\nimport { debounce } from 'lodash'\r\n\r\nimport styles from '../registry.module.scss';\r\nimport Step from '../../commonComponents/step';\r\nimport { Select } from '@sfx/react-ui';\r\nimport registerData from '../register-data';\r\nimport { getCountryPhoneCodeListAsyc as getCountryPhoneCodeListAsync, getCountryListAsync, getStateListAsync, validateOrgNameAsync } from '../register.service'\r\nimport { validatePhoneNumber } from '../../../utils/formValidation';\r\nimport Alert from '../../commonComponents/alert';\r\n\r\nclass CreateAccountOrganization extends Component {\r\n state = {\r\n countryList: [],\r\n countryPhoneCodeList: [],\r\n stateList: [],\r\n cityList: [],\r\n cityChangeAble: false,\r\n organizationName: registerData.organizationName || '',\r\n isShowCheckOrgNameLoading: false,\r\n validateOrgName: false,\r\n showOrgError: false,\r\n validateOrgNameMsg: '',\r\n organizationPhoneCountryCode: registerData.organizationPhoneCountryCode || null,\r\n organizationPhoneNumber: registerData.organizationPhoneNumber || '',\r\n organizationAddress: registerData.organizationAddress || '',\r\n isOrganizationAddressChange: false,\r\n country: registerData.organizationCountry || null,\r\n organizationZipCode: registerData.organizationZipCode || '',\r\n isOrganizationZipCodeChange: false,\r\n organizationCity: registerData.organizationCity || '',\r\n isOrganizationCityChange: false,\r\n state: registerData.organizationState || null,\r\n organizationAddressLine: registerData.organizationAddressLine || '',\r\n stateChangeAble: false,\r\n validatePhoneNum: false,\r\n showPhoneError: false,\r\n validatephoneMsg: '',\r\n showProvinceLoading: false,\r\n showCountryLoading: false,\r\n showNumberLoading: false\r\n }\r\n\r\n componentDidMount() {\r\n this.getCountryPhoneCodeListAsync();\r\n this.getCountryListAsync();\r\n if (registerData.organizationCountry) {\r\n this.getStateListAsync(registerData.organizationCountry.geonameId);\r\n }\r\n this.validForm();\r\n }\r\n\r\n validForm = () => {\r\n if (registerData.organizationPhoneNumber) {\r\n this.validatePhone(registerData.organizationPhoneNumber);\r\n }\r\n if (registerData.organizationName) {\r\n this.validateOrganizationName(registerData.organizationName);\r\n }\r\n }\r\n\r\n getCountryPhoneCodeListAsync = async () => {\r\n this.setState({ showNumberLoading: true })\r\n try {\r\n const res = await getCountryPhoneCodeListAsync({ catchError: true });\r\n if (res && res.data) {\r\n this.setState({ countryPhoneCodeList: res.data, showNumberLoading: false });\r\n }\r\n } catch (err) {\r\n this.setState({ showNumberLoading: false })\r\n }\r\n }\r\n\r\n getCountryListAsync = async () => {\r\n this.setState({ showCountryLoading: true })\r\n try {\r\n const res = await getCountryListAsync({ catchError: true });\r\n if (res && res.data && res.data.length) {\r\n this.setState({ countryList: res.data, showCountryLoading: false });\r\n }\r\n } catch (err) {\r\n this.setState({ showCountryLoading: false })\r\n }\r\n }\r\n\r\n getStateListAsync = async (countryId) => {\r\n this.setState({ showProvinceLoading: true })\r\n try {\r\n const res = await getStateListAsync(countryId, { catchError: true });\r\n if (res && res.data && res.data.length) {\r\n this.setState({ stateList: res.data, stateChangeAble: true, showProvinceLoading: false });\r\n }\r\n } catch (err) {\r\n this.setState({ showProvinceLoading: false })\r\n }\r\n\r\n }\r\n\r\n onOrganizationNameChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ organizationName: value, validateOrgName: false });\r\n value.trim() && this.validateOrganizationName(value.trim());\r\n }\r\n\r\n validateOrganizationName = debounce(async (value) => {\r\n this.setState({ isShowCheckOrgNameLoading: !!this.state.organizationName })\r\n try {\r\n let { data } = await validateOrgNameAsync(value, { catchError: true });\r\n let validateOrgNameMsg = data && (<>An SFx account with this organization name already exists. If you think you belong to this account, please ask your account administrator for an invitation to join it. Otherwise, to create new account, please select a different organization name.)\r\n this.setState({\r\n validateOrgName: !data, validateOrgNameMsg, isShowCheckOrgNameLoading: false, showOrgError: data\r\n })\r\n } catch (error) {\r\n if (error.response && error.response.status === 404) {\r\n this.setState({\r\n validateOrgName: true, validateOrgNameMsg: '', isShowCheckOrgNameLoading: false, showOrgError: false\r\n })\r\n } else {\r\n this.setState({\r\n validateOrgName: false, validateOrgNameMsg: 'network wrong', isShowCheckOrgNameLoading: false, showOrgError: true\r\n })\r\n }\r\n\r\n }\r\n }, 1000)\r\n\r\n onOrganizationPhoneNumberChange = (e) => {\r\n const value = e.target.value;\r\n registerData.organizationPhoneNumber = value;\r\n this.setState({ organizationPhoneNumber: value, validatePhoneNum: false }, () => {\r\n value && this.validatePhone(value);\r\n });\r\n }\r\n\r\n validatePhone = debounce((value) => {\r\n let msg;\r\n const validateRes = validatePhoneNumber(value);\r\n const msgDom = (<>Please only use +, -, ( ),. , and spaces to divide phone numbers in this section.)\r\n if (validateRes.type === 'special') {\r\n\r\n msg = ;\r\n } else {\r\n msg = (value && validateRes.message && < Alert type='warning' message={msgDom} />);\r\n }\r\n\r\n if (validateRes.valid) {\r\n registerData.organizationPhoneNumber = value;\r\n }\r\n\r\n this.setState({ validatephoneMsg: msg, validatePhoneNum: validateRes.valid, showPhoneError: !validateRes.valid });\r\n }, 1000)\r\n\r\n\r\n onOrganizationAddressChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ organizationAddress: value, isOrganizationAddressChange: true });\r\n\r\n }\r\n\r\n onOrganizationAddressLineChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ organizationAddressLine: value })\r\n }\r\n\r\n onOrganizationZipCodeChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ organizationZipCode: value, isOrganizationZipCodeChange: true });\r\n }\r\n\r\n onOrganizationCityChange = (e) => {\r\n const value = e.target.value;\r\n this.setState({ organizationCity: value, isOrganizationCityChange: true });\r\n }\r\n\r\n\r\n onNext = () => {\r\n this.props.onStepChange(3);\r\n this.setRegisterData();\r\n\r\n }\r\n\r\n onBack = () => {\r\n this.props.onStepChange(1);\r\n this.setRegisterData();\r\n }\r\n\r\n setRegisterData = () => {\r\n registerData.organizationName = this.state.organizationName.trim();\r\n registerData.organizationAddress = this.state.organizationAddress.trim();\r\n registerData.organizationAddressLine = this.state.organizationAddressLine.trim();\r\n registerData.organizationZipCode = this.state.organizationZipCode.trim();\r\n registerData.organizationCity = this.state.organizationCity.trim();\r\n }\r\n\r\n onChangePhoneCountryCode = (item) => {\r\n this.setState({ organizationPhoneCountryCode: item }, () => {\r\n registerData.organizationPhoneCountryCode = item;\r\n });\r\n\r\n }\r\n\r\n onCountryChange = (item) => {\r\n this.setState({ country: item, state: null, stateChangeAble: false }, () => {\r\n registerData.organizationCountry = item;\r\n this.getStateListAsync(item.geonameId);\r\n });\r\n }\r\n\r\n onStateChange = (item) => {\r\n this.setState({ state: item }, () => {\r\n registerData.organizationState = item;\r\n });\r\n }\r\n\r\n\r\n isFormValid = () => {\r\n\r\n return this.state.organizationName.trim()\r\n && this.state.validateOrgName\r\n && this.state.organizationPhoneCountryCode\r\n && this.state.validatePhoneNum\r\n && this.state.organizationAddress.trim()\r\n && this.state.country\r\n && this.state.organizationZipCode.trim()\r\n && this.state.organizationCity\r\n && this.state.organizationCity.trim();\r\n // && this.state.state\r\n\r\n }\r\n\r\n render() {\r\n const nextDisabled = !this.isFormValid();\r\n return (\r\n \r\n
\r\n Tell us about where you work. } />\r\n
\r\n
\r\n \r\n \r\n {this.state.isShowCheckOrgNameLoading && }\r\n \r\n {this.state.validateOrgNameMsg && }\r\n \r\n\r\n \r\n \r\n ({\r\n label: `(+${i.code} ${i.name} )`,\r\n value: i.geonameId,\r\n FlagUrl: i.flagUrl\r\n })}\r\n isDisabled={this.state.showNumberLoading}\r\n isLoading={this.state.showNumberLoading}\r\n value={this.state.organizationPhoneCountryCode}\r\n options={this.state.countryPhoneCodeList}\r\n onChange={this.onChangePhoneCountryCode} />\r\n \r\n\r\n \r\n \r\n \r\n {this.state.validatephoneMsg}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ({\r\n label: i.countryName,\r\n value: i.geonameId,\r\n FlagUrl: i.flagUrl\r\n })}\r\n isDisabled={this.state.showCountryLoading}\r\n isLoading={this.state.showCountryLoading}\r\n value={this.state.country}\r\n options={this.state.countryList}\r\n onChange={this.onCountryChange} />\r\n \r\n \r\n \r\n ({ label: i.name, value: i.geonameId })}\r\n isLoading={this.state.showProvinceLoading}\r\n isDisabled={!this.state.stateChangeAble}\r\n value={this.state.state}\r\n options={this.state.stateList}\r\n onChange={this.onStateChange} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(CreateAccountOrganization);","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Button, Label } from 'reactstrap';\r\nimport styles from '../registry.module.scss';\r\nimport Step from '../../commonComponents/step';\r\nimport registerData from '../register-data';\r\n\r\nclass CreateAccountInfo extends Component {\r\n onBack = () => {\r\n this.props.onStepChange(2);\r\n }\r\n\r\n onNext = () => {\r\n this.props.onStepChange(4);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n Tell us about where you work. } />\r\n
\r\n

\r\n Look over the information below and make sure it is correct before moving to the next step.\r\n

\r\n
\r\n
\r\n \r\n

{`${registerData.firstName} ${registerData.lastName}`}

\r\n
\r\n
\r\n \r\n

{registerData.email}

\r\n
\r\n
\r\n \r\n

{`(+${registerData.userPhoneCountryCode && registerData.userPhoneCountryCode.code}) ${registerData.userPhoneNum}`}

\r\n
\r\n
\r\n \r\n

{registerData.organizationName}

\r\n
\r\n
\r\n \r\n

{`(+${registerData.organizationPhoneCountryCode && registerData.organizationPhoneCountryCode.code}) ${registerData.organizationPhoneNumber}`}

\r\n
\r\n
\r\n \r\n

{`${registerData.organizationAddress},${registerData.organizationAddressLine ? registerData.organizationAddressLine + ',' : ''} ${registerData.organizationCity}, ${registerData.organizationState ? registerData.organizationState.name + ', ' : ''}${registerData.organizationZipCode} ${registerData.organizationCountry && registerData.organizationCountry.countryName}`}

\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(CreateAccountInfo);","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Input, Button, Spinner } from 'reactstrap';\r\nimport styles from '../registry.module.scss';\r\nimport Step from '../../commonComponents/step';\r\nimport Alert from '../../commonComponents/alert';\r\nimport { consumeCaptchaAsync, cleanActionLinksAsync, resendNewAccountCaptchaAsync, sendWelcomeNotificationAsync } from '../register.service';\r\nimport registerData from '../register-data';\r\n\r\nclass VerifyAccount extends Component {\r\n state = {\r\n number1: '',\r\n number2: '',\r\n number3: '',\r\n number4: '',\r\n number5: '',\r\n number6: '',\r\n showErrors: false,\r\n canContinue: false,\r\n stepActive: 4,\r\n stepActiveText: <>Verify your email.,\r\n verifyLoading: false,\r\n resendCodeLoading: false\r\n }\r\n componentDidMount() {\r\n window.addEventListener('keydown', (e) => {\r\n if (e.keyCode === 86 && e.ctrlKey) {\r\n navigator.clipboard.readText().then(text => {\r\n const textVal = text.replace(/\\s*/g, \"\");\r\n if (textVal.length === 6) {\r\n const arr = textVal.split('');\r\n arr.forEach((item, i) => {\r\n this.setState({ [`number${i + 1}`]: item })\r\n });\r\n this.VerifyCode()\r\n }\r\n })\r\n }\r\n });\r\n }\r\n onNext = () => {\r\n sendWelcomeNotificationAsync(this.props.email ? this.props.email : registerData.email, { catchError: true });\r\n this.props.onStepChange(6);\r\n\r\n }\r\n resendCode = async () => {\r\n let clientReturnUri = localStorage.getItem('clientReturnUrl') !== 'undefined' ? localStorage.getItem('clientReturnUrl') : '';\r\n this.setState({ resendCodeLoading: true })\r\n const res = await resendNewAccountCaptchaAsync(this.props.email ? this.props.email : registerData.email, '', encodeURIComponent(clientReturnUri), { catchError: true });\r\n\r\n if (res && res.status === 200) {\r\n this.setState({ resendCodeLoading: false })\r\n }\r\n }\r\n onChange = e => {\r\n let { name, value } = e.target\r\n if (value.length > 1) {\r\n return;\r\n }\r\n value = value.replace(/[^0-9]/g, '')\r\n this.setState({\r\n [name]: value,\r\n canContinue: false,\r\n showErrors: false\r\n }, () => {\r\n let num = parseInt(name.substr(name.length - 1, 1)) + 1\r\n let Input = document.getElementsByName(`number${num}`)[0]\r\n value && Input && Input.focus()\r\n\r\n this.VerifyCode()\r\n })\r\n\r\n }\r\n onKeyDown = e => {\r\n let { value, name } = e.target\r\n if (e.keyCode === 8 && !value) {\r\n let num = parseInt(name.substr(name.length - 1, 1)) - 1\r\n let Input = document.getElementsByName(`number${num}`)[0]\r\n Input && Input.focus()\r\n } else {\r\n return;\r\n }\r\n }\r\n // verify code\r\n VerifyCode = async () => {\r\n let { number1, number2, number3, number4, number5, number6 } = this.state\r\n if (number1 && number2 && number3 && number4 && number5 && number6) {\r\n this.setState({ verifyLoading: true })\r\n let data = {\r\n target: this.props.email ? this.props.email : registerData.email,\r\n code: `${number1}${number2}${number3}${number4}${number5}${number6}`\r\n };\r\n try {\r\n await consumeCaptchaAsync(data, { catchError: true })\r\n await cleanActionLinksAsync(this.props.email ? this.props.email : registerData.email)\r\n this.setState({ canContinue: true, showErrors: false });\r\n } catch (error) {\r\n this.setState({ showErrors: true });\r\n }\r\n this.setState({ verifyLoading: false })\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n \r\n
\r\n {this.state.stepActive === 4 ?
\r\n

You should receive an email with a verification code to finish creating your account shortly.

\r\n

Please enter the code here, or follow the link you receive in your email.

\r\n

Verification Code

\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {this.state.showErrors && }\r\n\r\n
\r\n {this.state.resendCodeLoading && }Resend Code\r\n \r\n
\r\n
:
\r\n

Thank you for completing your information. We will attempt to match you to the correct
\r\n organization and send your request for approval by your organization's administrator.\r\n

\r\n

You'll get an email soon letting you know if your account is approved or if you must contact Hexagon for further support.

\r\n Learn More About SFx\r\n
}\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(VerifyAccount);","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Button, } from 'reactstrap';\r\nimport styles from '../registry.module.scss';\r\nimport Step from '../../commonComponents/step';\r\nimport registerData from '../register-data';\r\nclass InviteSuccess extends Component {\r\n state = {\r\n stepActiveText: <>Company: {registerData.organizationName || localStorage.getItem('orgName') || ''}\r\n }\r\n\r\n onSignIn = () => {\r\n const signInURL = registerData.signInURL || localStorage.getItem('signInURL');\r\n if (signInURL) {\r\n window.location.replace(signInURL);\r\n } else {\r\n this.props.history.push({ pathname: '/account/login' });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n

You have successfully completed the registration process for your organization's Hexagon SFx account! As soon as you receive your confirmation email, you can get started!

\r\n
\r\n Learn More About SFx\r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(InviteSuccess);","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { Button, } from 'reactstrap';\r\nimport styles from '../registry.module.scss';\r\nimport registerData from '../register-data';\r\nclass InviteSuccess extends Component {\r\n state = {\r\n stepActiveText: <> Email: {registerData.email || ''} ,\r\n }\r\n onBack = () => {\r\n this.props.onStepChange(1);\r\n }\r\n render() {\r\n return (\r\n \r\n
\r\n

Manual Registration Required

\r\n

{this.state.stepActiveText}

\r\n
\r\n
\r\n

We cannot match your SFx user account to an organization because you have registered with a generic email.

\r\n

Please contact your orgnization's administrator for an invitation, or contact Hexagon Support for assistance in setting up your account.

\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(InviteSuccess);","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport CreateAccountBasic from './registry-create-user-account.component';\r\nimport CompleteAccount from './registry-complete-account.component'\r\nimport CreateAccountOrganization from './registry-create-orgnization.component';\r\nimport CreateAccountInfo from './registry-information.component';\r\nimport VerifyAccount from './registry-verify-account.component'\r\nimport InviteSuccess from './registry-invite-success.component'\r\nimport MatchEmailError from './registry-match-email-error.component'\r\nimport SendNotificationSuccess from './registry-sendnotification-success.component'\r\n\r\nimport { defaultClientId } from '../../../config';\r\n\r\nconst stepComponentEnum = {\r\n 1: CreateAccountBasic,\r\n 2: CreateAccountOrganization,\r\n 3: CreateAccountInfo,\r\n 4: CompleteAccount,\r\n 5: VerifyAccount,\r\n 6: InviteSuccess,\r\n 7: MatchEmailError,\r\n 8: SendNotificationSuccess\r\n\r\n};\r\n\r\nclass CreateAccount extends Component {\r\n state = {\r\n showComponent: stepComponentEnum[1],\r\n passedInEmail: '',\r\n message: '',\r\n persistedState: {}\r\n }\r\n\r\n componentDidMount = () => {\r\n let clientId = localStorage.getItem('clientId');\r\n if (!clientId) {\r\n defaultClientId.then(result => {\r\n localStorage.setItem('clientId', result);\r\n });\r\n }\r\n\r\n if (this.props.initialStep && this.props.initialStep > 0) {\r\n this.setState({\r\n showComponent: stepComponentEnum[this.props.initialStep]\r\n });\r\n }\r\n\r\n if (this.props.email) {\r\n this.setState({\r\n passedInEmail: this.props.email\r\n });\r\n }\r\n };\r\n\r\n onStepChange = (step, message = '', persistedState = {}) => {\r\n this.setState({ showComponent: stepComponentEnum[step], message: message, persistedState: persistedState });\r\n \r\n }\r\n\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(CreateAccount);\r\n","import React, { Component } from 'react'\r\nimport styles from '../registry.module.scss';\r\nimport { Link } from 'react-router-dom';\r\nimport { Button } from 'reactstrap';\r\n\r\nexport default class SendNotificationSuccess extends Component {\r\n state = {\r\n persistedState: {}\r\n }\r\n\r\n goToPrevious = () => {\r\n this.props.onStepChange(1, '', this.state.persistedState);\r\n }\r\n\r\n componentDidMount() {\r\n let persistedState = this.props.persistedState;\r\n this.setState({ persistedState: persistedState })\r\n }\r\n\r\n onSignInButtonClick = () => {\r\n const returnURL = localStorage.getItem('IDS_RETURNURL');\r\n if (returnURL) {\r\n window.location.replace(`/Account/Login${returnURL}`)\r\n } else {\r\n window.location = '/Account/Login';\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
Thank you!
\r\n
{this.props.message}
\r\n
\r\n Learn More About SFx\r\n \r\n
\r\n
Contact SFx for assistance
\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { withRouter, Route } from 'react-router-dom';\r\nimport cx from 'classnames';\r\nimport styles from './registry.module.scss';\r\nimport withLocalization from '../hoc/with-localization.component';\r\nimport RegistryStart from './registry-start.component';\r\nimport CreateAccount from './registry-create-account';\r\n\r\nclass Register extends Component {\r\n onGetStarted = () => {\r\n this.props.history.push(`${this.props.match.url}/createAccount`);\r\n };\r\n\r\n render() {\r\n const match = this.props.match;\r\n const isStart = this.props.location.pathname === '/Register/start';\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n {this.props.initialStep && this.props.initialStep > 0 ? (\r\n \r\n ) : (\r\n <>\r\n {\r\n return ;\r\n }}\r\n />\r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(withLocalization(Register));\r\n","import React from 'react'\r\nimport { confirmEmailAsync } from './register.service'\r\n\r\nexport default class ConfirmEmail extends React.Component {\r\n\r\n componentDidMount() {\r\n this.confirmEmail()\r\n }\r\n\r\n async confirmEmail() {\r\n let Userid = this.getUrlParam('userid');\r\n let Token = this.getUrlParam('token');\r\n let result = await confirmEmailAsync({ Userid, Token });\r\n if (result.status === 200) {\r\n alert('activate account success')\r\n }\r\n }\r\n\r\n getUrlParam(name) {\r\n var reg = new RegExp(\"(^|&)\" + name + \"=([^&]*)(&|$)\");\r\n var r = window.location.search.substr(1).match(reg);\r\n if (r != null) return unescape(r[2]); return null;\r\n }\r\n\r\n render() {\r\n return null\r\n }\r\n}","import React, { Component } from 'react';\r\nimport { IconClose } from '@sfx/icons'\r\nimport styles from './toolTip.module.scss';\r\n\r\nclass ToolTip extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.ref = React.createRef();\r\n }\r\n\r\n state = {\r\n show: false\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('click', this.handleClick)\r\n }\r\n\r\n componentWillUnmount() {\r\n document.removeEventListener('click', this.handleClick);\r\n }\r\n\r\n handleClick = (e) => {\r\n const node = this.ref.current;\r\n const target = e.target;\r\n\r\n if (!node) {\r\n return;\r\n }\r\n\r\n if (!node.contains(target)\r\n && node !== target) {\r\n this.setState({ show: false });\r\n }\r\n\r\n }\r\n\r\n trigger = () => {\r\n this.setState({\r\n show: !this.state.show\r\n })\r\n }\r\n\r\n onClose = () => {\r\n this.setState({\r\n show: false\r\n })\r\n }\r\n\r\n render() {\r\n const { show } = this.state;\r\n const { content, placement, width, children } = this.props;\r\n\r\n\r\n return (\r\n
\r\n {show &&
\r\n {content}\r\n
\r\n \r\n
}\r\n \r\n {children}\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nToolTip.defaultProps = {\r\n content: '',\r\n placement: 'top',\r\n arrowPointAtCenter: true\r\n\r\n}\r\n\r\nexport default ToolTip;","import React from \"react\";\r\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from \"reactstrap\";\r\n\r\nconst ModalLocale = {\r\n okText: \"ok\",\r\n cancelText: \"cancel\"\r\n};\r\n\r\nclass CommonModal extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n ModalId: props.ModalId\r\n };\r\n }\r\n toggle = () => {\r\n this.props.toggle(this.state.ModalId);\r\n };\r\n handleOk = e => {\r\n const onOk = this.props.onOk;\r\n if (onOk) {\r\n onOk(e, this.state.ModalId);\r\n }\r\n };\r\n handleCancel = e => {\r\n const onCancel = this.props.onCancel;\r\n if (onCancel) {\r\n onCancel(e, this.state.ModalId);\r\n }\r\n };\r\n renderModalBody() {\r\n // const attributes = omit(this.props, propsToOmit);\r\n return {this.props.children};\r\n }\r\n renderModalFooter() {\r\n const { okText, okType, cancelText, confirmLoading } = this.props;\r\n const defaultFooter = (\r\n \r\n \r\n {cancelText || ModalLocale.cancelText}\r\n \r\n \r\n {okText || ModalLocale.okText}\r\n \r\n \r\n );\r\n const footer =\r\n this.props.footer === undefined ? (\r\n defaultFooter\r\n ) : (\r\n {this.props.footer}\r\n );\r\n return footer;\r\n }\r\n render() {\r\n const prefixCls = this.props.prefixCls || 'IS-';\r\n return (\r\n \r\n {this.props.title}\r\n {this.renderModalBody()}\r\n {this.renderModalFooter()}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default CommonModal;\r\n","import React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from \"reactstrap\";\r\nconst ModalLocale = {\r\n okText: \"ok\",\r\n cancelText: \"cancel\"\r\n};\r\nconst ConfirmDialog = props => {\r\n const prefixCls = props.prefixCls || 'IS-';\r\n const okText = props.okText ? props.okText : ModalLocale.okText;\r\n const cancelText = props.cancelText ? props.cancelText : ModalLocale.cancelText;\r\n const okCancel = !props.okCancel ? props.okCancel : true\r\n const handleOk = (e) => {\r\n const onOk = props.onOk;\r\n if (onOk) {\r\n onOk(e);\r\n }\r\n props.close()\r\n }\r\n const handleCancel = (e) => {\r\n const onCancel = props.onCancel;\r\n if (onCancel) {\r\n onCancel(e);\r\n\r\n }\r\n props.close()\r\n }\r\n const toggle = ()=>{\r\n const onClose = props.onClose;\r\n if (onClose) {\r\n onClose();\r\n\r\n }\r\n props.close()\r\n\r\n }\r\n return (\r\n \r\n {props.title}\r\n {props.content}\r\n \r\n {okCancel && }\r\n \r\n \r\n \r\n );\r\n};\r\nexport default function confirm(props) {\r\n const div = document.createElement(\"div\");\r\n document.body.appendChild(div);\r\n let currentProps = { ...props, isOpen: true, close };\r\n function close() {\r\n currentProps = {\r\n ...currentProps,\r\n isOpen: false\r\n };\r\n render(currentProps);\r\n destroy(currentProps)\r\n }\r\n function destroy() {\r\n const unmountResult = ReactDOM.unmountComponentAtNode(div);\r\n if (unmountResult && div.parentNode) {\r\n div.parentNode.removeChild(div);\r\n }\r\n }\r\n\r\n function render(props) {\r\n ReactDOM.render(, div);\r\n }\r\n render(currentProps);\r\n}\r\n","import Modal from \"./modal.component\";\r\nimport confirm from \"./confirm-modal.component\";\r\n\r\nModal.info = function (props) {\r\n const config = {\r\n type: \"info\",\r\n iconType: \"info-circle\",\r\n okCancel: false,\r\n ...props\r\n };\r\n return confirm(config);\r\n};\r\n\r\nModal.success = function (props) {\r\n const config = {\r\n type: \"success\",\r\n iconType: \"check-circle\",\r\n okCancel: false,\r\n ...props\r\n };\r\n return confirm(config);\r\n};\r\n\r\nModal.error = function (props) {\r\n const config = {\r\n type: \"error\",\r\n iconType: \"close-circle\",\r\n okCancel: false,\r\n ...props\r\n };\r\n return confirm(config);\r\n};\r\n\r\nModal.warning = Modal.warn = function (props) {\r\n const config = {\r\n type: \"warning\",\r\n iconType: \"exclamation-circle\",\r\n okCancel: false,\r\n ...props\r\n };\r\n return confirm(config);\r\n};\r\n\r\nModal.confirm = function (props) {\r\n const config = {\r\n type: \"confirm\",\r\n okCancel: true,\r\n ...props\r\n };\r\n return confirm(config);\r\n};\r\n\r\nexport default Modal;\r\n","import React, { Component } from 'react';\r\nimport { withRouter, Link } from 'react-router-dom';\r\nimport { Button, FormGroup, Input, CustomInput, Form, Label } from 'reactstrap';\r\n\r\nimport queryStringHandler from 'query-string';\r\nimport userManager from '../../utils/userManage';\r\nimport withLocalization from '../hoc/with-localization.component';\r\nimport PasswordMask from '../commonComponents/password';\r\nimport Alert from '../commonComponents/alert';\r\nimport ToolTip from '../commonComponents/toolTip';\r\nimport styles from './login.module.scss';\r\nimport { validateStringValue } from '../../utils/formValidation';\r\nimport { LoginAsync, AcceptTerms } from '../../services/api/account.service';\r\nimport Modal from '../commonComponents/modal';\r\nimport { IconInfo } from '@sfx/icons';\r\n\r\nimport { IsEnableUserSelfRegistration, defaultClientId, assetManagerDownloadLink, showLegacySFxDesktopReminder, learnmoreLink, showMigrationLoginReminder } from '../../config';\r\n\r\nclass Login extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n loginFailed: false,\r\n userNameInvalid: false,\r\n userNameErrorMessage: '',\r\n passwordInvalid: false,\r\n passwordErrorMessage: '',\r\n showErrors: false,\r\n canSubmit: true,\r\n userName: '',\r\n password: '',\r\n rememberFlag: false,\r\n message: '',\r\n returnUrl: '',\r\n isEnableUserSelfRegistration: false,\r\n learnmoreLink: '',\r\n showMigrationLoginReminder: false\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n let returnUrl =\r\n queryStringHandler.parse(this.props.location.search).ReturnUrl || '';\r\n localStorage.setItem('IDS_RETURNURL', `?ReturnUrl=${encodeURIComponent(returnUrl)}`);\r\n let clientUrl = queryStringHandler.parse(returnUrl);\r\n let clientReturnUrl =\r\n (clientUrl.redirect_uri &&\r\n clientUrl.redirect_uri\r\n .replace('/callback', '')\r\n .replace('/silent', '')) ||\r\n '';\r\n localStorage.setItem('clientReturnUrl', clientReturnUrl);\r\n const client_id = clientUrl['/connect/authorize/callback?client_id'];\r\n\r\n if (client_id) {\r\n localStorage.setItem('clientId', client_id);\r\n } else {\r\n defaultClientId.then(result => {\r\n localStorage.setItem('clientId', result);\r\n });\r\n }\r\n\r\n this.setState({ returnUrl });\r\n\r\n IsEnableUserSelfRegistration().then(result => {\r\n this.setState({ isEnableUserSelfRegistration: result });\r\n });\r\n\r\n learnmoreLink.then(result => {\r\n this.setState({ learnmoreLink: result });\r\n })\r\n\r\n showMigrationLoginReminder.then(result => {\r\n this.setState({ showMigrationLoginReminder: result });\r\n })\r\n\r\n assetManagerDownloadLink.then(result => {\r\n showLegacySFxDesktopReminder.then(showResult => {\r\n if (client_id === \"SFxConnectorService\" && showResult.toLowerCase() === 'true') {\r\n this.showSfxDesktopDeprecatedModal(result);\r\n }\r\n }) \r\n });\r\n };\r\n handleInputChange = event => {\r\n const target = event.target;\r\n const value = target.value;\r\n const name = target.name;\r\n\r\n this.setState(\r\n {\r\n [name]: value\r\n },\r\n () => {\r\n this.validateFields();\r\n }\r\n );\r\n };\r\n validateFields = () => {\r\n const userNameValidCheck = validateStringValue(\r\n this.state.userName,\r\n true,\r\n 1,\r\n 255\r\n );\r\n const passwordValidCheck = validateStringValue(\r\n this.state.password,\r\n true,\r\n 1,\r\n 255\r\n );\r\n\r\n const valid = userNameValidCheck.valid && passwordValidCheck.valid;\r\n\r\n this.setState({\r\n canSubmit: valid,\r\n userNameInvalid: !userNameValidCheck.valid,\r\n passwordInvalid: !passwordValidCheck.valid,\r\n userNameErrorMessage: userNameValidCheck.errorMessage,\r\n passwordErrorMessage: passwordValidCheck.errorMessage,\r\n loginFailed: false\r\n });\r\n\r\n return valid;\r\n };\r\n\r\n\r\n showSfxDesktopDeprecatedModal = (result, onOk, onCancel) => {\r\n const content = (\r\n \r\n There is a new Version available!

\r\n The current SFx desktop version is only available for provisioning Calipri devices.

\r\n Please visit {' '}\r\n \r\n {' '}\r\n Metrology Asset Manager\r\n {' '}\r\n to download the latest version of Metrology Connector and provision other metrology devices.\r\n
\r\n );\r\n Modal.info({\r\n content,\r\n okText: 'Ok',\r\n onOk: () => {\r\n onOk && onOk();\r\n },\r\n onClose: () => {\r\n onCancel && onCancel();\r\n }\r\n });\r\n };\r\n\r\n showAgreeTermModal = (onOk, onCancel) => {\r\n const content = (\r\n \r\n I have read and agree to the{' '}\r\n \r\n {' '}\r\n Terms and Conditions\r\n {' '}\r\n of the Hexagon Manufacturing Intelligence Cloud Services Agreement.\r\n \r\n );\r\n Modal.info({\r\n content,\r\n okText: 'Agree',\r\n onOk: () => {\r\n onOk && onOk();\r\n },\r\n onClose: () => {\r\n onCancel && onCancel();\r\n }\r\n });\r\n };\r\n\r\n rememberMe = e => {\r\n this.setState({\r\n rememberFlag: !this.state.rememberFlag\r\n });\r\n };\r\n\r\n login = async e => {\r\n e.preventDefault();\r\n const shouldSubmit = this.validateFields();\r\n this.setState({ showErrors: true, canSubmit: false });\r\n if (shouldSubmit) {\r\n const { userName, password, rememberFlag, returnUrl } = this.state;\r\n let html = (\r\n <>\r\n {this.props.translate('loginFailedResponse')}\r\n \r\n \r\n {this.props.translate('resetPassword')}\r\n \r\n \r\n {this.props.translate('haveTrouble')}\r\n \r\n \r\n {this.props.translate('loginFailedContact')}\r\n \r\n \r\n \r\n );\r\n LoginAsync(\r\n {\r\n username: userName,\r\n password,\r\n rememberLogin: rememberFlag,\r\n returnUrl\r\n },\r\n { catchError: true }\r\n )\r\n .then(res => {\r\n const loginProcess = () => {\r\n if (res.data.solutions) {\r\n let solutions = res.data.solutions || [];\r\n localStorage.setItem('IDS_solutions', JSON.stringify(solutions));\r\n }\r\n\r\n localStorage.setItem('IDS_Auth', true);\r\n let IDSRedirectURL = returnUrl;\r\n if (res.data.isRedirectClient && res.data.redirectClientUri) {\r\n IDSRedirectURL = res.data.redirectClientUri;\r\n }\r\n if (IDSRedirectURL && IDSRedirectURL !== '/') {\r\n // If there is a returnUrl, then redirect to the returnUrl after login\r\n window.location.replace(IDSRedirectURL);\r\n } else {\r\n // If login the IDS, call OIDC to complete SSO after login\r\n if (this.props.location.currentLocation) {\r\n localStorage.setItem(\r\n 'currentIDSRedirectURL',\r\n this.props.location.currentLocation\r\n );\r\n }\r\n userManager.signIn();\r\n }\r\n };\r\n\r\n if (res.data.user) {\r\n if (res.data.user.hasAcceptedTerms) {\r\n loginProcess();\r\n } else {\r\n this.showAgreeTermModal(\r\n () => {\r\n AcceptTerms(res.data.user.id).then(() => {\r\n loginProcess();\r\n });\r\n },\r\n () => {\r\n this.setState({\r\n showErrors: true,\r\n canSubmit: true,\r\n loginFailed: false\r\n });\r\n }\r\n );\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n let status =\r\n error.response && error.response.status\r\n ? error.response.status\r\n : '-1';\r\n let eventResult = error.response.headers['event-result'];\r\n switch (status) {\r\n case 403:\r\n if (eventResult === '0x5') {\r\n html = (\r\n <>\r\n \r\n Sorry, 20 consecutive logins failed and the account was\r\n locked. Please{' '}\r\n \r\n \r\n \r\n contact our customer service\r\n \r\n .\r\n \r\n \r\n );\r\n } else if (eventResult === '0x4') {\r\n html = (\r\n <>\r\n {this.props.translate('authorizationFailed')}\r\n {this.props.translate('haveTrouble')}\r\n \r\n \r\n {this.props.translate('loginFailedContact')}\r\n \r\n \r\n \r\n );\r\n } else if (eventResult === '0x8') {\r\n html = (\r\n <>\r\n \r\n {this.props.translate('userSubscriptionExpired')}\r\n \r\n {this.props.translate('haveTrouble')}\r\n \r\n \r\n {this.props.translate('loginFailedContact')}\r\n \r\n \r\n \r\n );\r\n } else if (eventResult === '0x9') {\r\n html = (\r\n <>\r\n \r\n {this.props.translate('userSubscriptionLacked')}\r\n \r\n {this.props.translate('haveTrouble')}\r\n \r\n \r\n {this.props.translate('loginFailedContact')}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n this.setState({\r\n loginFailed: true,\r\n canSubmit: true,\r\n message: html\r\n });\r\n break;\r\n default:\r\n this.setState({\r\n loginFailed: true,\r\n canSubmit: true,\r\n message: html\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n clickCreateAccountLink = e => {\r\n if (this.state.returnUrl) {\r\n localStorage.setItem(\r\n 'IDS_RETURNURL',\r\n `?ReturnUrl=${encodeURIComponent(this.state.returnUrl)}`\r\n );\r\n }\r\n this.props.history.push('/Register/start');\r\n };\r\n\r\n render() {\r\n const prefixCls = 'IS-';\r\n const content = (\r\n <>\r\n Selecting \"Keep me signed in\" reduces the number of times you are asked\r\n to sign in on this device.\r\n
\r\n
\r\n Use this option only on a secure device.\r\n \r\n );\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Sign In

\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.handleInputChange(e)}\r\n errorMessage={this.state.passwordErrorMessage}\r\n />\r\n \r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Sign In\r\n \r\n
\r\n Reset Password\r\n {this.state.showMigrationLoginReminder &&\r\n (
\r\n
\r\n
\r\n \"ico\"\r\n
\r\n
Attention
\r\n
\r\n Learn More\r\n \r\n
\r\n
\r\n
SFx Asset Management has moved to Nexus
\r\n
)} \r\n {this.state.loginFailed && (\r\n \r\n )}\r\n \r\n\r\n {this.state.isEnableUserSelfRegistration && (\r\n
\r\n

\r\n New to SFx? Create a free account.\r\n

\r\n \r\n Create an account\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(withLocalization(Login));\r\n","import apiService from '../../services/api.service'\r\n\r\nexport const validateEmailAsync = async (email, opts) => {\r\n return await apiService.get('/api/users/check/email/' + email, {}, opts);\r\n}\r\n\r\nexport const sendResetLinkAsync = async (email, clientReturnUri) => {\r\n return await apiService.put(`/api/user/self/${email}/resetpassword/?clientReturnUri=${encodeURIComponent(clientReturnUri)}`);\r\n}\r\n\r\nexport const resetPasswordAsync = async (pu, opts) => {\r\n return await apiService.put(`api/user/self/resetpassword/`, pu, opts);\r\n};","import React, { Component } from 'react'\r\nimport { Link } from 'react-router-dom';\r\nimport { Form, FormGroup, Label, Input, Button, Spinner } from 'reactstrap'\r\nimport { debounce } from 'lodash'\r\n\r\nimport Alert from '../commonComponents/alert'\r\nimport { validateEmail } from '../../utils/formValidation'\r\nimport { sendResetLinkAsync } from './resetPassword.service'\r\nimport styles from './index.module.scss'\r\n\r\n\r\nexport default class ResetPasswordStep1 extends Component {\r\n constructor() {\r\n super();\r\n this.validateEmail = debounce(this.validateEmail, 1000);\r\n }\r\n state = {\r\n email: '',\r\n emailValid: false,\r\n emailValidateMsg: '',\r\n showAlert: false,\r\n isSubmitDisabled: true,\r\n clientReturnUri: '',\r\n verifyLoading: false\r\n }\r\n\r\n validateEmail(key, value) {\r\n value = value.trim();\r\n let { valid, message } = validateEmail(value);\r\n this.afterValidation({ key, value, valid, message });\r\n }\r\n\r\n afterValidation({ key, value, valid, message }) {\r\n if (valid) {\r\n this.setState({\r\n isSubmitDisabled: false\r\n })\r\n } else {\r\n this.setState({\r\n isSubmitDisabled: true\r\n })\r\n }\r\n this.setState({\r\n [key]: value,\r\n [key + 'Valid']: valid,\r\n showAlert: !valid,\r\n [key + 'ValidateMsg']: message\r\n })\r\n }\r\n\r\n debounceHandle = e => {\r\n e.persist();\r\n this.validateEmail('email', e.target.value);\r\n };\r\n\r\n onSubmit = (e) => {\r\n this.setState({ verifyLoading: true })\r\n let clientReturnUri = localStorage.getItem('clientReturnUrl') !== 'undefined' ? localStorage.getItem('clientReturnUrl') : '';\r\n e.preventDefault();\r\n if (this.state.emailValid) {\r\n sendResetLinkAsync(this.state.email, clientReturnUri)\r\n .then(res => {\r\n if ([200, 204].includes(res.status)) {\r\n this.setState({ verifyLoading: false })\r\n this.props.history.push('/ResetPassword/step2');\r\n }\r\n })\r\n .catch(error => { console.dir(error); this.setState({ verifyLoading: false }) });\r\n }\r\n }\r\n\r\n render() {\r\n const returnURL = localStorage.getItem('IDS_RETURNURL')\r\n const prefixCls = 'IS-'\r\n return (\r\n \r\n
Reset Password
\r\n
Please enter your account email to receive a link allowing you to reset your password
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Return to Sign In\r\n \r\n \r\n {this.state.verifyLoading && }\r\n Submit\r\n \r\n
\r\n
\r\n {\r\n this.state.showAlert && \r\n }\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react'\r\nimport { Link } from 'react-router-dom';\r\nimport styles from './index.module.scss'\r\n\r\nexport default class ResetPasswordStep2 extends Component {\r\n render() {\r\n const returnURL = localStorage.getItem('IDS_RETURNURL')\r\n return (\r\n \r\n
Thank you!
\r\n
If your email account entered is correct, you will receive further instructions via email.
\r\n
\r\n \r\n Return to Sign In\r\n \r\n
\r\n
\r\n )\r\n }\r\n}","import React, { Component } from 'react'\r\nimport styles from './index.module.scss'\r\nimport queryStringHandler from 'query-string';\r\n\r\nexport default class ResetPasswordSuccess extends Component {\r\n render() {\r\n const name = queryStringHandler.parse(this.props.location.search).name;\r\n const clientReturnUrl = queryStringHandler.parse(this.props.location.search).clientReturnUrl;\r\n if (name === 'resetPassword') {\r\n return (\r\n \r\n
Reset password successfully
\r\n
Dear user, you have reset your password successfully.
\r\n \r\n
\r\n )\r\n }\r\n\r\n if (name === 'activeAccount') {\r\n return (\r\n \r\n
Activated account successfully
\r\n
Dear user, you have activated your account successfully.
\r\n \r\n
\r\n )\r\n }\r\n\r\n if (name === 'initializePassword') {\r\n return (\r\n \r\n
Initialized password successfully
\r\n
Dear user, you have initialized your password successfully.
\r\n \r\n
\r\n )\r\n }\r\n else {\r\n return null\r\n }\r\n\r\n }\r\n}","import React, { Component } from 'react'\r\nimport { Container } from 'reactstrap'\r\nimport { withRouter, Route } from 'react-router-dom'\r\nimport styles from './index.module.scss'\r\nimport ResetPasswordStep1 from './resetPassword-step1.component'\r\nimport ResetPasswordStep2 from './resetPassword-step2.component'\r\nimport ResetPasswordSuccess from './resetPassword-success.component'\r\n\r\n\r\nclass ResetPassword extends Component {\r\n render() {\r\n let match = this.props.match;\r\n return (\r\n \r\n
\r\n \r\n
\r\n \"LOGO\"\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(ResetPassword)","import React from 'react'\r\nimport { Button, FormGroup } from 'reactstrap';\r\nimport styles from './contactUs.module.scss';\r\n\r\nfunction ContactRight({ props }) {\r\n const handleSalesClick = () => {\r\n\r\n }\r\n const handleCustomerServiceClick = () => {\r\n\r\n }\r\n return (\r\n
\r\n Hexagon Manufacturing Intelligence


\r\n

\r\n 250 Circuit Drive
\r\n North Kingstown
\r\n Rhode Island, 02852
\r\n United States
\r\n T:+1 401,886,2000
\r\n F:+1 401.886.2727

\r\n

\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default ContactRight\r\n","import React, { Component } from 'react';\r\nimport { Alert, Container, Button, FormGroup, Label, Input, FormFeedback } from 'reactstrap';\r\nimport { withRouter } from 'react-router-dom';\r\nimport withLocalization from '../hoc/with-localization.component';\r\n// import { callWrapper } from '../../services/api.service';\r\nimport styles from './contactUs.module.scss';\r\nimport ContactRight from './contactRight.component';\r\nimport { validateStringValue } from '../../utils/formValidation';\r\n\r\nclass ContactUs extends Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n userFirstName: '',\r\n userFirstNameValid: false,\r\n userFirstNameError: '',\r\n userLastName: '',\r\n userLastNameValid: false,\r\n userLastNameError: '',\r\n subject: '',\r\n subjectValid: false,\r\n subjectError: '',\r\n message: '',\r\n messageValid: false,\r\n messageError: '',\r\n showErrors: false,\r\n visible: false,\r\n promptMessage: '',\r\n alertType: '',\r\n }\r\n }\r\n\r\n resetForm = () => {\r\n this.setState({\r\n userFirstName: '',\r\n userFirstNameValid: false,\r\n userFirstNameError: '',\r\n userLastName: '',\r\n userLastNameValid: false,\r\n userLastNameError: '',\r\n subject: '',\r\n subjectValid: false,\r\n subjectError: '',\r\n message: '',\r\n messageValid: false,\r\n messageError: '',\r\n showErrors: false,\r\n visible: false,\r\n promptMessage: '',\r\n alertType: '',\r\n })\r\n }\r\n\r\n onFirstNameChange = (e) => {\r\n const val = e.target.value;\r\n this.setState({\r\n userFirstName: val\r\n }, () => { this.validateFirstName(); })\r\n }\r\n\r\n validateFirstName = () => {\r\n const firstNameValidCheck = validateStringValue(this.state.userFirstName, true, 1, 255);\r\n this.setState({\r\n userFirstNameValid: firstNameValidCheck.valid,\r\n userFirstNameError: firstNameValidCheck.errorMessage\r\n });\r\n\r\n return firstNameValidCheck.valid;\r\n }\r\n\r\n onLastNameChange = (e) => {\r\n const val = e.target.value;\r\n this.setState({\r\n userLastName: val\r\n }, () => { this.validateLastName(); })\r\n }\r\n\r\n validateLastName = () => {\r\n const lastNameValidCheck = validateStringValue(this.state.userLastName, true, 1, 255);\r\n this.setState({\r\n userLastNameValid: lastNameValidCheck.valid,\r\n userLastNameError: lastNameValidCheck.errorMessage\r\n });\r\n\r\n return lastNameValidCheck.valid;\r\n }\r\n\r\n onSubjectChange = (e) => {\r\n const val = e.target.value;\r\n this.setState({\r\n subject: val\r\n }, () => { this.validateSubject(); })\r\n }\r\n\r\n validateSubject = () => {\r\n const subjectValidCheck = validateStringValue(this.state.subject, true, 1, 255);\r\n this.setState({\r\n subjectValid: subjectValidCheck.valid,\r\n subjectError: subjectValidCheck.errorMessage\r\n });\r\n\r\n return subjectValidCheck.valid;\r\n }\r\n\r\n onMessageChange = (e) => {\r\n const val = e.target.value;\r\n this.setState({\r\n message: val\r\n }, () => { this.validateMessage(); })\r\n }\r\n\r\n validateMessage = () => {\r\n const messageValidCheck = validateStringValue(this.state.message, true, 1, 4000);\r\n this.setState({\r\n messageValid: messageValidCheck.valid,\r\n messageError: messageValidCheck.errorMessage\r\n });\r\n\r\n return messageValidCheck.valid;\r\n }\r\n\r\n handleSubmit = (e) => {\r\n // e.preventDefault()\r\n // this.setState({ showErrors: true });\r\n // const validFirstName = this.validateFirstName();\r\n // const validLastName = this.validateLastName();\r\n // const validSubject = this.validateSubject();\r\n // const validMessage = this.validateMessage();\r\n\r\n // if (validFirstName && validLastName && validSubject && validMessage) {\r\n // const formData = {\r\n // FirstName: this.state.userFirstName,\r\n // LastName: this.state.userLastName,\r\n // Subject: this.state.subject,\r\n // Message: this.state.message,\r\n // }\r\n // //todo: use real API replace below fake API\r\n // callWrapper('/api/contact/AddContact', true, '', 'post', JSON.stringify(formData))\r\n // .then(res => {\r\n // this.setState({\r\n // visible: true,\r\n // alertType: 'sucess',\r\n // promptMessage: 'Contact info sent successfully',\r\n // });\r\n // this.resetForm();\r\n // })\r\n // .catch(error => {\r\n // this.setState({\r\n // visible: true,\r\n // alertType: 'danger',\r\n // promptMessage: 'Contact info sent failed',\r\n // });\r\n // })\r\n // }\r\n };\r\n\r\n onDismiss = () => {\r\n this.setState({ visible: false });\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n
\r\n
{this.props.translate('contact')}
\r\n
\r\n
\r\n {/* Contact Left */}\r\n
\r\n \r\n {this.state.promptMessage}\r\n \r\n
\r\n \r\n \r\n \r\n {this.state.showErrors && !this.state.userFirstNameValid &&\r\n {this.state.userFirstNameError}\r\n }\r\n \r\n \r\n \r\n \r\n {this.state.showErrors && !this.state.userLastNameValid &&\r\n {this.state.userLastNameError}\r\n }\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {this.state.showErrors && !this.state.subjectValid &&\r\n {this.state.subjectError}\r\n }\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {this.state.showErrors && !this.state.messageValid &&\r\n {this.state.messageError}\r\n }\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Vertical Separator Line */}\r\n
\r\n\r\n {/* Contact Right */}\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(withLocalization(ContactUs));","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport queryStringHandler from 'query-string';\r\nimport styles from '../../styles/account.module.scss';\r\nimport withLocalization from '../hoc/with-localization.component';\r\nimport { LogoutAsync } from '../../services/api/account.service';\r\nclass Logout extends Component {\r\n\r\n constructor() {\r\n super();\r\n this.state = {\r\n redirectUrl: '',\r\n messageIndex: 'logingout'\r\n }\r\n }\r\n componentDidMount() {\r\n this.signOut()\r\n }\r\n signOut = async () => {\r\n let originalQueryString = queryStringHandler.parse(this.props.location.search);\r\n let logoutId = originalQueryString.logoutId;\r\n let logoutModel = {\r\n logoutId: logoutId\r\n };\r\n LogoutAsync(logoutModel, { catchError: true }).then(res => {\r\n if (res) {\r\n localStorage.removeItem('IDS_Auth')\r\n this.setState({\r\n redirectUrl: res.headers[\"redirect-url\"],\r\n messageIndex: 'logged'\r\n }, () => {\r\n if (logoutId && res.headers[\"redirect-url\"]) {\r\n window.location = res.headers[\"redirect-url\"];\r\n }\r\n });\r\n }\r\n\r\n }).catch(error => {\r\n let status = error.response && error.response.status ? error.response.status : '-1'\r\n switch (status) {\r\n case 401:\r\n localStorage.removeItem('IDS_Auth')\r\n this.setState({\r\n messageIndex: 'logged'\r\n });\r\n break;\r\n default:\r\n return;\r\n }\r\n })\r\n };\r\n render() {\r\n const message = {\r\n logingout: {\r\n title: 'Logging Out',\r\n content: 'You are being logging out, please wait ...'\r\n },\r\n logged: {\r\n title: 'Logout',\r\n content: this.state.redirectUrl ? 'You have been logged out.' : 'You have been logged out.'\r\n }\r\n }\r\n return (\r\n
\r\n {this.state.messageIndex === 'logged' && !this.state.redirectUrl &&
\r\n \"LOGO\"\r\n

{message[this.state.messageIndex]['title']}

\r\n

{message[this.state.messageIndex]['content']}

\r\n \r\n
}\r\n
\r\n )\r\n }\r\n\r\n}\r\n\r\nexport default withRouter(withLocalization(Logout))\r\n\r\n","import React, { Component } from 'react';\r\nimport { Spin } from '@sfx/react-ui'\r\nimport { UserConsumer } from '../userProvider'\r\n\r\nimport { SigninCallbackComponent, SilentRedirectCallbackComponent } from '@sfx/authentication';\r\nimport userManager from '../../utils/userManage';\r\n\r\n\r\nexport class SigninCallback extends Component {\r\n\r\n successCallback = (user, updateUser) => {\r\n if (user) {\r\n updateUser(user)\r\n }\r\n let currentIDSRedirectURL = localStorage.getItem('currentIDSRedirectURL');\r\n if (currentIDSRedirectURL) {\r\n localStorage.removeItem('currentIDSRedirectURL');\r\n this.props.history.push(currentIDSRedirectURL)\r\n } else {\r\n this.props.history.push(\"/home\")\r\n }\r\n\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {({ updateUser }) => (\r\n this.successCallback(user, updateUser)} >\r\n \r\n )}\r\n \r\n )\r\n }\r\n}\r\n\r\n\r\nexport class SilentRedirectCallback extends Component {\r\n\r\n successCallback = (user, updateUser) => {\r\n if (user) {\r\n updateUser(user)\r\n }\r\n this.props.history.push(\"/home\")\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {({ updateUser }) => (\r\n this.successCallback(user, updateUser)} >\r\n \r\n )}\r\n \r\n )\r\n }\r\n}\r\n\r\n","import apiService from '../../services/api.service'\r\n\r\nexport const readErrorInformation = async (errorId, opts) => {\r\n let params = { errorId: errorId };\r\n return await apiService.get(`api/error`, { params }, opts);\r\n};","import React, { Component } from 'react'\r\nimport { Row, Col, Container } from 'reactstrap';\r\nimport { withRouter, Link } from 'react-router-dom';\r\nimport queryStringHandler from 'query-string';\r\n\r\nimport { Spin } from '@sfx/react-ui'\r\n\r\nimport withLocalization from '../hoc/with-localization.component';\r\nimport { readErrorInformation } from \"./error.service\";\r\nimport { ErrorCase } from '../../utils/util';\r\n\r\nclass Error extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loadingErrorInfo: false,\r\n errorInfo: null,\r\n errorCase: this.props.case\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n let errorId = queryStringHandler.parse(this.props.location.search).errorId;\r\n\r\n if (window.top.location.pathname !== '/error') {\r\n window.top.location.href = `${window.top.location.origin}/error?errorId=${errorId}`;\r\n }\r\n\r\n if (errorId) {\r\n this.setState({\r\n loadingErrorInfo: true\r\n });\r\n\r\n readErrorInformation(errorId, { catchError: true }).then(res => {\r\n if (res.status === 200) {\r\n this.setState({\r\n errorInfo: res.data\r\n });\r\n }\r\n\r\n this.setState({\r\n loadingErrorInfo: false\r\n });\r\n }).catch(err => {\r\n this.setState({\r\n loadingErrorInfo: false\r\n });\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n

\r\n Oops\r\n

\r\n \r\n
\r\n
\r\n {\r\n !this.state.loadingErrorInfo && this.state.errorCase === ErrorCase.NOT_FOUND &&\r\n \r\n \r\n

\r\n Not Found\r\n

\r\n \r\n
\r\n }\r\n\r\n {this.state.loadingErrorInfo && }\r\n\r\n {\r\n !this.state.loadingErrorInfo && this.state.errorInfo &&\r\n <>\r\n

Error Details

\r\n
\r\n \r\n \r\n
\r\n Client Id:\r\n
\r\n \r\n \r\n {this.state.errorInfo.clientId}\r\n \r\n
\r\n \r\n \r\n
\r\n Error:\r\n
\r\n \r\n \r\n {this.state.errorInfo.error}\r\n \r\n
\r\n \r\n \r\n
\r\n Error Description:\r\n
\r\n \r\n \r\n {this.state.errorInfo.errorDescription}\r\n \r\n
\r\n \r\n \r\n
\r\n RequestId:\r\n
\r\n \r\n \r\n {this.state.errorInfo.requestId}\r\n \r\n
\r\n \r\n }\r\n\r\n {\r\n !this.state.loadingErrorInfo && !this.state.errorInfo && !this.state.errorCase &&\r\n \r\n \r\n

\r\n Unknown problem\r\n

\r\n \r\n
\r\n }\r\n\r\n {\r\n !this.state.loadingErrorInfo &&\r\n \r\n \r\n
\r\n Go back to the home page\r\n \r\n
\r\n }\r\n\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(withLocalization(Error));","import React, { lazy } from 'react'\r\n\r\nimport Home from '../components/home'\r\nimport Register from '../components/register'\r\nimport ConfirmEmail from '../components/register/confirm-email.component'\r\nimport Login from '../components/login'\r\nimport ResetPassword from '../components/resetPassword'\r\nimport Contact from '../components/contact'\r\nimport Logout from '../components/logout'\r\nimport { SigninCallback, SilentRedirectCallback } from '../components/callback'\r\nimport Error from '../components/error';\r\n\r\nconst routes = [\r\n {\r\n path: '/Register',\r\n component: () => \r\n },\r\n {\r\n path: '/ConfirmEmail',\r\n component: () => \r\n },\r\n {\r\n path: '/Account/Login',\r\n component: () => \r\n },\r\n {\r\n path: '/ResetPassword',\r\n component: () => \r\n },\r\n {\r\n path: '/Contact',\r\n component: () => \r\n },\r\n {\r\n path: '/Account/Logout',\r\n component: () => \r\n },\r\n {\r\n path: '/home',\r\n requiresAuth: true, // need to login first \r\n component: () => \r\n },\r\n {\r\n path: '/accountSettings/:activeMenu?',\r\n requiresAuth: true, // need to login first \r\n component: lazy(() => import('../components/accountSettings'))\r\n },\r\n {\r\n path: '/userPreferences',\r\n requiresAuth: true,\r\n component: lazy(() => import('../components/userPreferences'))\r\n },\r\n {\r\n path: '/callback',\r\n component: SigninCallback\r\n }, {\r\n path: '/silent',\r\n component: SilentRedirectCallback\r\n }, {\r\n path: '/error',\r\n component: Error\r\n }\r\n]\r\n\r\nexport default routes","import apiService from '../../services/api.service'\r\n\r\nexport const RetrieveOperationAsync = async (token, opts) => {\r\n return await apiService.get(`api/operation/${token}`, null, opts);\r\n};\r\n\r\nexport const ResetPasswordAsync = async (pu, opts) => {\r\n return await apiService.put(`api/user/self/resetpassword/`, pu, opts);\r\n};\r\n\r\nexport const ActivateAccountAsync = async (aa, opts) => {\r\n return await apiService.put(`api/user/self/activate/`, aa, opts);\r\n};","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport queryStringHandler from 'query-string';\r\nimport { Button, FormGroup, Spinner, Form, Label } from 'reactstrap';\r\n\r\nimport withLocalization from '../hoc/with-localization.component';\r\nimport { validatePassword } from '../../utils/formValidation'\r\nimport { RetrieveOperationAsync, ResetPasswordAsync, ActivateAccountAsync } from './action.service';\r\nimport Alert from '../commonComponents/alert'\r\nimport styles from './action.module.scss'\r\nimport PasswordMask from '../commonComponents/password';\r\nimport Register from '../register';\r\nimport { resendNewAccountCaptchaAsync } from '../register/register.service';\r\n\r\nclass Action extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n token: '',\r\n operationInstance: '',\r\n password: '',\r\n passwordValid: false,\r\n passwordValidMsg: '',\r\n confirmPassword: '',\r\n confirmPasswordValid: false,\r\n confirmPasswordValidMsg: '',\r\n\r\n isSubmit: false,\r\n isShowSubmitLoading: false,\r\n isActivateButtonDisabled: false,\r\n\r\n isSubmitError: false,\r\n\r\n sentCaptchaSuccessfully: false,\r\n clientRediretUri: ''\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n let token = '';\r\n\r\n if (queryStringHandler.parse(this.props.location.search).token || queryStringHandler.parse(this.props.location.search).Token) {\r\n if (queryStringHandler.parse(this.props.location.search).token) {\r\n token = queryStringHandler.parse(this.props.location.search).token;\r\n } else {\r\n token = queryStringHandler.parse(this.props.location.search).Token;\r\n }\r\n }\r\n\r\n if (token) {\r\n let encodedToken = encodeURIComponent(token);\r\n RetrieveOperationAsync(encodedToken, { catchError: true })\r\n .then(res => {\r\n this.setState({\r\n operationInstance: res.data,\r\n token: encodedToken\r\n });\r\n })\r\n .catch(error => {\r\n if (error.response && error.response.status === 404) {\r\n this.setState({\r\n clientRediretUri: error.response.data\r\n });\r\n }\r\n\r\n this.setState({\r\n operationInstance: '',\r\n token: encodedToken\r\n })\r\n console.dir(error);\r\n });\r\n }\r\n };\r\n\r\n\r\n resetPasswordAsync = e => {\r\n e.preventDefault();\r\n\r\n this.setState({\r\n isSubmit: true,\r\n isShowSubmitLoading: true\r\n })\r\n\r\n let puModel = {\r\n token: this.state.token,\r\n newPassword: this.state.password,\r\n confirmedNewPassword: this.state.confirmPassword,\r\n };\r\n let clientReturnUrl = this.state.operationInstance.redirectUri ? encodeURIComponent(this.state.operationInstance.redirectUri) : '';\r\n\r\n ResetPasswordAsync(puModel, { catchError: true })\r\n .then(res => {\r\n this.setState({ isShowSubmitLoading: false, isSubmitError: false })\r\n if (this.state.operationInstance.operation === 'PasswordReset') {\r\n this.props.history.push(`/ResetPassword/success?name=resetPassword&clientReturnUrl=${clientReturnUrl}`);\r\n } else {\r\n this.props.history.push(`/ResetPassword/success?name=initializePassword&clientReturnUrl=${clientReturnUrl}`);\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({ isSubmitError: true, isSubmit: false, password: '', confirmPassword: '', isShowSubmitLoading: false });\r\n });\r\n };\r\n\r\n formValidate = (name, value) => {\r\n let { valid, message } = validatePassword(value);\r\n\r\n if (name === 'password' && valid) {\r\n if (value !== this.state.confirmPassword) {\r\n valid = false;\r\n if (this.state.confirmPassword) {\r\n message = 'notMatch';\r\n } else {\r\n message = '';\r\n this.setState({ confirmPasswordValidMsg: '' });\r\n }\r\n } else {\r\n this.setState({ confirmPasswordValid: true })\r\n }\r\n }\r\n\r\n if (name === 'confirmPassword' && valid) {\r\n if (value !== this.state.password) {\r\n valid = false;\r\n if (this.state.password) {\r\n message = 'notMatch';\r\n } else {\r\n message = '';\r\n this.setState({ passwordValidMsg: '' });\r\n }\r\n } else {\r\n this.setState({ passwordValid: true });\r\n }\r\n\r\n }\r\n\r\n this.setState({\r\n [`${name}Valid`]: valid,\r\n [`${name}ValidMsg`]: message,\r\n })\r\n }\r\n\r\n handleInputChange = (event) => {\r\n const target = event.target;\r\n const value = target.value;\r\n const name = target.name;\r\n\r\n\r\n\r\n this.setState({\r\n [name]: value,\r\n isSubmitError: false\r\n }, () => {\r\n this.formValidate(name, value);\r\n });\r\n }\r\n\r\n activateAccount = e => {\r\n e.preventDefault();\r\n\r\n this.setState({ isShowSubmitLoading: true })\r\n\r\n let aaModel = {\r\n token: this.state.token,\r\n userId: this.state.operationInstance.userId,\r\n userName: this.state.operationInstance.userName\r\n };\r\n let clientReturnUrl = this.state.operationInstance.redirectUri ? encodeURIComponent(this.state.operationInstance.redirectUri) : '';\r\n\r\n ActivateAccountAsync(aaModel, { catchError: true })\r\n .then(res => {\r\n this.setState({ isShowSubmitLoading: false, isActivateButtonDisabled: true })\r\n this.props.history.push(`/ResetPassword/success?name=activeAccount&clientReturnUrl=${clientReturnUrl}`);\r\n })\r\n .catch(error => {\r\n this.setState({ isShowSubmitLoading: false, isActivateButtonDisabled: true })\r\n });\r\n };\r\n\r\n sendCode = async e => {\r\n e.preventDefault();\r\n\r\n this.setState({ isShowSubmitLoading: true });\r\n let clientRedirectUri = this.state.operationInstance.redirectUri;\r\n if (clientRedirectUri === undefined || clientRedirectUri === 'null') {\r\n clientRedirectUri = '';\r\n }\r\n const res = await resendNewAccountCaptchaAsync(this.state.operationInstance.userName, this.state.operationInstance.id, clientRedirectUri, { catchError: true });\r\n\r\n if (res && res.status === 200) {\r\n this.setState({ isShowSubmitLoading: false, sentCaptchaSuccessfully: true });\r\n } else {\r\n this.setState({ isShowSubmitLoading: false, isSubmitError: true });\r\n }\r\n };\r\n\r\n getErrorMessage() {\r\n let errorMessage;\r\n if (!this.state.isSubmitError) {\r\n if ((!this.state.passwordValid && this.state.passwordValidMsg) || (!this.state.confirmPasswordValid && this.state.confirmPasswordValidMsg)) {\r\n if (this.state.confirmPasswordValidMsg === 'notMatch' || this.state.passwordValidMsg === 'notMatch') {\r\n errorMessage = (
\r\n Sorry, the passwords you entered do not match. Please try again.\r\n
);\r\n } else {\r\n errorMessage = (
Password should meet requirements:\r\n
    \r\n
  • 8-32 characters in length
  • \r\n
  • At least one uppercase letter
  • \r\n
  • At least one lowercase letter
  • \r\n
  • At least one number
  • \r\n
  • At least one special character
  • \r\n
\r\n
);\r\n }\r\n }\r\n\r\n } else {\r\n errorMessage = (
\r\n Sorry, failed to submit your request.Please try again later or contact our customer service.\r\n
);\r\n }\r\n\r\n return errorMessage;\r\n }\r\n\r\n\r\n render() {\r\n const errorMessage = this.getErrorMessage();\r\n const isShowErrorMsg = (((!this.state.passwordValid && this.state.password) || (!this.state.confirmPasswordValid && this.state.confirmPassword)) && errorMessage) || this.state.isSubmitError;\r\n\r\n const clientRediretUri = (this.state.clientRediretUri === '' || this.state.clientRediretUri === undefined || this.state.clientRediretUri === 'null') ?\r\n '/Account/Login' : this.state.clientRediretUri;\r\n\r\n if (this.state.token) {\r\n if (this.state.operationInstance) {\r\n if (this.state.operationInstance.operation === 'UserCreatedByAdmin' ||\r\n this.state.operationInstance.operation === 'PasswordReset' ||\r\n this.state.operationInstance.operation === 'UserCreatedByCustomerAdmin') {\r\n return (\r\n \r\n
\r\n
\r\n \"LOGO\"\r\n
{this.state.operationInstance.operation === 'PasswordReset' ? \"Reset Password\" : \"Initialize Password\"}
\r\n
this.resetPasswordAsync(e)}>\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n {\r\n this.state.isShowSubmitLoading && \r\n }\r\n Submit\r\n
\r\n
\r\n {\r\n isShowErrorMsg && \r\n }\r\n\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (this.state.operationInstance.operation === 'UserSelfRegistration') {\r\n return (\r\n \r\n
\r\n
\r\n \"LOGO\"\r\n
this.activateAccount(e)}>\r\n
\r\n \r\n {\r\n this.state.isShowSubmitLoading && \r\n }\r\n Activate Account: {this.state.operationInstance.userName}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (this.state.operationInstance.operation === 'ApplyCatchaForNewAccount') {\r\n return ();\r\n }\r\n\r\n if (this.state.operationInstance.operation === 'CaptchaGenerated') {\r\n return (\r\n \r\n {!this.state.sentCaptchaSuccessfully &&\r\n
\r\n
\r\n \"LOGO\"\r\n
this.sendCode(e)}>\r\n
\r\n \r\n {\r\n this.state.isShowSubmitLoading && \r\n }\r\n Send code to: {this.state.operationInstance.userName}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n {\r\n this.state.sentCaptchaSuccessfully &&\r\n
\r\n
\r\n \"LOGO\"\r\n\r\n
Thanks
\r\n
New CAPTCHA has been sent out successfully.
\r\n
\r\n
\r\n }\r\n
\r\n );\r\n }\r\n\r\n } else {\r\n return (\r\n
\r\n
\r\n \"LOGO\"\r\n
Oops
\r\n
Your link is not available any more!
\r\n Return to Sign In\r\n
\r\n
\r\n // \r\n // Invalid action request\r\n // \r\n );\r\n }\r\n } else {\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n }\r\n\r\n}\r\n\r\nexport default withRouter(withLocalization(Action))\r\n\r\n","import React, { Component } from 'react';\r\nimport withLocalization from '../hoc/with-localization.component';\r\nimport { Footer as ComFooter } from '@sfx/react-ui';\r\n\r\nclass Footer extends Component {\r\n\trender() {\r\n\t\tconst links = [\r\n\t\t\t{ name: this.props.translate('about'), link: 'https://www.hexagonmi.com/en-US/products/software/sfx-solutions' },\r\n\t\t\t{ name: this.props.translate('legal'), link: 'https://www.hexagonmi.com/terms' },\r\n\t\t\t{ name: this.props.translate('privacy'), link: 'https://www.hexagonmi.com/en-US/about-us/privacy-policy' },\r\n\t\t\t{ name: this.props.translate('cookies'), link: 'https://www.hexagonmi.com/en-US/about-us/privacy-policy' },\r\n\t\t\t{ name: this.props.translate('contact'), link: 'https://www.hexagonmi.com/contact-us' },\r\n\t\t];\r\n\t\tconst copyright = `${(new Date()).getFullYear()} ${this.props.translate('copyright')}`;\r\n\t\tconst version = sessionStorage.getItem('appVersion');\r\n\t\treturn (\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport default withLocalization(Footer);\r\n\r\n","import React from 'react';\r\nimport classnames from 'classnames';\r\nimport styles from './BannerUI.module.scss';\r\nimport PropTypes from 'prop-types';\r\nimport { IconBullhorn, IconClock, IconUpgrade, IconLightning } from '@sfx/icons';\r\n\r\nexport default function Banner(props) {\r\n const { className, style, isShow, title, description, showClose, onClose, bannerType, bannerPosition } = props;\r\n let renderContent = '';\r\n const bannerConfig = typeHash(bannerType);\r\n if (isShow) {\r\n renderContent = (\r\n \r\n
\r\n {bannerConfig.icon}\r\n
\r\n

{title}

\r\n

{description}

\r\n {showClose && onClose(e)} />}\r\n )\r\n }\r\n return renderContent;\r\n}\r\n\r\nconst bannerTypeDict = {\r\n info: {\r\n icon: ,\r\n colorClass: styles.info,\r\n },\r\n upgrade: {\r\n icon: ,\r\n colorClass: styles.info,\r\n },\r\n warning: {\r\n icon: ,\r\n colorClass: styles.warning,\r\n },\r\n subUpdate: {\r\n icon: ,\r\n colorClass: styles.info,\r\n },\r\n default: {\r\n icon: ,\r\n colorClass: styles.info,\r\n }\r\n};\r\n\r\nconst bannerTypeEnum = Object.keys(bannerTypeDict);\r\n\r\nexport function typeHash(type) {\r\n return bannerTypeDict[type] ? bannerTypeDict[type] : bannerTypeDict.default\r\n}\r\n\r\nBanner.defaultProps = {\r\n showClose: true,\r\n onClose: () => { }\r\n}\r\n\r\nBanner.propTypes = {\r\n className: PropTypes.string,\r\n style: PropTypes.object,\r\n isShow: PropTypes.bool.isRequired,\r\n title: PropTypes.string,\r\n description: PropTypes.node,\r\n bannerPosition: PropTypes.oneOf(['top']),\r\n bannerType: PropTypes.oneOf(bannerTypeEnum),\r\n showClose: PropTypes.bool,\r\n onClose: PropTypes.func\r\n}\r\n","import React from 'react';\r\nimport Banner from '../commonComponents/banner';\r\nimport { translations } from '../../utils/translations';\r\n\r\nconst UnsupportedBrowserBanner = (props) => {\r\n const description = translations.formatString(\r\n translations.unsupportedBrowserDes,\r\n \r\n {translations.here}\r\n \r\n )\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default UnsupportedBrowserBanner;","import React, { Component } from 'react';\r\nimport { Route, withRouter, matchPath, Redirect, Switch } from 'react-router-dom';\r\nimport { UserProfile, Spin } from '@sfx/react-ui'\r\nimport Header from '../header'\r\nimport withLocalization from '../hoc/with-localization.component';\r\nimport UserProvider from '../userProvider'\r\nimport routes from '../../router/router'\r\nimport Action from '../action';\r\nimport userManager from '../../utils/userManage'\r\nimport { detectIE } from '../../utils/util';\r\nimport { getLocalizedStrings, langDict } from '../../utils/translations';\r\nimport Footer from '../footer';\r\nimport UnsupportedBrowserBanner from './NonSupportBrowser';\r\nimport { getUserProfileAsync, getSolutionsAsync } from '../../services/api/account.service'\r\nimport { ErrorCase } from '../../utils/util';\r\nimport Error from '../error';\r\n\r\nconst bannerPaths = ['/Register', '/Account/Login', '/ResetPassword'];\r\nconst isIE = detectIE();\r\nconst authPath = '/Account/Login'\r\nlet hasSolution = false\r\nclass Layout extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.updateUser = (user) => {\r\n if (user.profile) {\r\n const { given_name: givenName, family_name: familyName, Avatar: avatarUrl, name } = user.profile\r\n this.setState({ givenName, familyName, avatarUrl, user, name })\r\n }\r\n }\r\n this.state = {\r\n user: {},\r\n givenName: '',\r\n familyName: '',\r\n avatarUrl: '',\r\n name: 'Admin',\r\n updateUser: this.updateUser,\r\n checkUserLoading: false,\r\n solutions: [],\r\n solutionLoading: true\r\n }\r\n\r\n const { pathname, search } = props.location\r\n // when user change password or first login , the 'IDS_Auth' flag should be cleaned up.\r\n if (pathname === authPath && search) {\r\n localStorage.removeItem('IDS_Auth')\r\n }\r\n\r\n }\r\n componentDidMount() {\r\n this.checkUser()\r\n }\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.givenName !== this.state.givenName) {\r\n if (this.state.user.profile && this.state.user.profile.TotalSignIn === 1 && !localStorage.getItem('firstLogin')) {\r\n this.showUserProfile()\r\n }\r\n }\r\n // when user logged and direct access to Login\r\n const { pathname: currentPathName } = this.props.location\r\n const { pathname: prevPathName } = prevProps.location\r\n if (localStorage.getItem('IDS_Auth') && prevPathName === authPath && currentPathName === '/home') {\r\n this.checkUser()\r\n }\r\n if (prevPathName === '/callback' && !hasSolution) {\r\n const { user } = this.state\r\n this.getSolutionList(user)\r\n hasSolution = true\r\n }\r\n\r\n }\r\n getRequiresAuth = () => {\r\n const pathname = window.location.pathname\r\n const currentRoute = routes.find(i => {\r\n const routerRath = i.path.split(':')[0]\r\n return pathname.includes(routerRath) || `${pathname}/`.includes(routerRath)\r\n })\r\n const requiresAuth = currentRoute && currentRoute.requiresAuth\r\n return requiresAuth\r\n }\r\n checkUser = async () => {\r\n const RequiresAuth = this.getRequiresAuth()\r\n if (!RequiresAuth) {\r\n return\r\n }\r\n try {\r\n this.setState({ checkUserLoading: true })\r\n let user = await userManager.getUser()\r\n let sessionExist = await userManager.userMgr.querySessionStatus()\r\n if (user) {\r\n this.updateUser(user)\r\n this.getUserProfile(user)\r\n this.getSolutionList(user)\r\n this.setState({ checkUserLoading: false })\r\n } else if (sessionExist && !user) {\r\n userManager.signIn()\r\n } else {\r\n this.setState({ checkUserLoading: false })\r\n localStorage.clear()\r\n this.props.history.push('/Account/Login')\r\n }\r\n } catch (error) {\r\n this.setState({ checkUserLoading: false })\r\n localStorage.clear()\r\n this.props.history.push('/Account/Login')\r\n }\r\n\r\n\r\n }\r\n getUserProfile = async (user) => {\r\n try {\r\n const { profile } = user\r\n const { data } = await getUserProfileAsync(profile.key)\r\n const { avatar, givenName, surname } = data\r\n\r\n let avatarUrl = avatar && avatar.url\r\n this.setState({ givenName, familyName: surname, avatarUrl, role: profile.role, orgName: profile.OrgName, name: profile.name })\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n updateUserProfile = (profileObj) => {\r\n const { profile = {} } = this.state.user\r\n this.updateUser({ profile: { ...profile, ...profileObj } })\r\n }\r\n showUserProfile = () => {\r\n const { user } = this.state\r\n const { profile = {} } = user\r\n const supportedLanguagesList = getLocalizedStrings()\r\n const supportedLanguages = Object.keys(supportedLanguagesList).map(l => ({ label: langDict[l], value: l }))\r\n const currentLanguageValue = profile.Lang || 'en'\r\n const currentLanguage = supportedLanguages.find((item) => item.value === currentLanguageValue);\r\n const options = {\r\n getToken: () => { return user && user.access_token },\r\n initialData: {\r\n staticSource: {\r\n supportedLanguages,\r\n currentLanguage\r\n },\r\n },\r\n setLanguage: item => item && this.props.setLanguage(item.value),\r\n saveSuccessCallback: (data) => {\r\n const { givenName: given_name, surname: family_name } = data\r\n this.updateUserProfile({ given_name, family_name, name: `${data.givenName} ${data.surname}`.trim() });\r\n },\r\n uploadAvatarSuccess: (imgUrl) => {\r\n this.updateUserProfile({\r\n Avatar: imgUrl\r\n });\r\n },\r\n deleteAvatarSuccess: () => {\r\n this.updateUserProfile({\r\n Avatar: ''\r\n });\r\n },\r\n };\r\n UserProfile.show(options, () => {\r\n localStorage.setItem('firstLogin', false)\r\n })\r\n }\r\n getSolutionList = async (user) => {\r\n if (localStorage.getItem('IDS_solutions') && JSON.parse(localStorage.getItem('IDS_solutions')).length) {\r\n const solutions = JSON.parse(localStorage.getItem('IDS_solutions'))\r\n this.setState({ solutions }, () => {\r\n this.setState({ solutionLoading: false })\r\n })\r\n return\r\n }\r\n try {\r\n const { profile: { key: userId } } = user\r\n let { data: solutions } = await getSolutionsAsync(userId)\r\n this.setState({ solutions }, () => {\r\n this.setState({ solutionLoading: false })\r\n })\r\n } catch (error) {\r\n this.setState({ solutions: [], solutionLoading: false })\r\n }\r\n }\r\n\r\n\r\n render() {\r\n let pathname = this.props.location.pathname\r\n const isLogin = localStorage.getItem('IDS_Auth')\r\n\r\n const showBanner = isIE && bannerPaths.some(path => matchPath(pathname, path));\r\n\r\n return (\r\n \r\n \r\n {showBanner && }\r\n
\r\n
\r\n {this.state.checkUserLoading &&
}\r\n \r\n {routes.map((route, index) => (\r\n // Render more s with the same paths as\r\n // above, but different components this time.\r\n {\r\n if (!route.requiresAuth || isLogin) {\r\n if (route.path === authPath && isLogin) {\r\n return \r\n }\r\n return \r\n } else {\r\n return \r\n }\r\n }}\r\n />\r\n ))}\r\n \r\n \r\n {/* */}\r\n } />\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n )\r\n }\r\n}\r\n\r\nexport default withRouter(withLocalization(Layout));","import React, { Component, Suspense } from 'react';\r\nimport './styles/index.scss';\r\nimport Layout from './components/layout'\r\nimport { Spin } from '@sfx/react-ui'\r\n\r\nclass App extends Component {\r\n render() {\r\n return (\r\n }>\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import \"core-js/stable\";\r\nimport \"regenerator-runtime/runtime\";\r\nimport 'react-app-polyfill/ie11';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './styles/index.scss';\r\nimport App from './App';\r\nimport { apiBaseUrl } from './config'\r\n//import registerServiceWorker from './registerServiceWorker';\r\n\r\nimport { BrowserRouter } from 'react-router-dom';\r\n\r\nconst render = () => {\r\n const app = (\r\n \r\n \r\n \r\n )\r\n\r\n ReactDOM.render(app, document.getElementById('root'));\r\n}\r\napiBaseUrl.then(() => {\r\n render()\r\n})\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\n//registerServiceWorker();\r\n","import React from 'react'\r\nconst defaultValue = { user: {}, updateUser: () => { } }\r\nexport const UserContext = React.createContext(defaultValue)\r\nexport const UserConsumer = UserContext.Consumer;\r\n\r\nexport default class UserProvider extends React.Component {\r\n render() {\r\n const { userState, updateUser } = this.props\r\n return (\r\n {this.props.children}\r\n )\r\n }\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"stepWrap\":\"step_stepWrap__2QEJE\",\"stepTitle\":\"step_stepTitle__2q7Yl\",\"stepActiveText\":\"step_stepActiveText__PZrP_\",\"stepItem\":\"step_stepItem__2fXVB\",\"active\":\"step_active__2iEgV\",\"stepText\":\"step_stepText__2L9mp\",\"line\":\"step_line__11eAN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"highlightColor\":\"#0097ba\",\"darkColor\":\"#2c6d7c\",\"inputPrimaryColor\":\"#1b3c44\",\"fontFamilySansSerif\":\"\\\"Open Sans\\\"\",\"bannerContainer\":\"BannerUI_bannerContainer__1Rqzq\",\"top\":\"BannerUI_top__3f2fy\",\"bannerControl\":\"BannerUI_bannerControl__1n5gS\",\"hide\":\"BannerUI_hide__1Z5i4\",\"banner\":\"BannerUI_banner__1c-yp\",\"icon\":\"BannerUI_icon__17UB8\",\"close\":\"BannerUI_close__1HEQU\",\"topBanner\":\"BannerUI_topBanner__2anEb\",\"warning\":\"BannerUI_warning__2-W1j\",\"info\":\"BannerUI_info__2KHtN\"};","export const detectIE = () => {\r\n const ua = window.navigator.userAgent;\r\n const msie = ua.indexOf('MSIE '); // IE 10 or older\r\n const trident = ua.indexOf('Trident/'); //IE 11\r\n return (msie > 0 || trident > 0);\r\n}\r\n\r\nexport const getIdsClientId = () => {\r\n if (process.env.REACT_APP_CLIENT_ID) {\r\n return process.env.REACT_APP_CLIENT_ID;\r\n } else {\r\n if (process.env.NODE_ENV === 'development') {\r\n return \"0089ad3237424efdb50f5fd39a0ee52f\";\r\n } else {\r\n return \"702bf0adf39e4434a31472614967013d\";\r\n }\r\n }\r\n};\r\n\r\nexport const ErrorCase = {\r\n NOT_FOUND: 'NOT FOUND'\r\n};"],"sourceRoot":""}