{"version":3,"sources":["webpack:///./src/constants/subscription.ts","webpack:///./src/constants/frozenObjects.ts","webpack:///./src/services/Token/Token.ts","webpack:///./src/services/Token/index.ts","webpack:///./src/constants/alerts.ts","webpack:///./src/constants/user.ts","webpack:///./src/constants/auth.ts","webpack:///./src/shared/utils/error.ts","webpack:///./src/localization lazy ^\\.\\/.*\\.json$ namespace object","webpack:///./src/redux-app/selectors/user.ts","webpack:///./src/api/client/actions/user.ts","webpack:///./src/constants/localization.ts","webpack:///./src/api/client/actions/settings.ts","webpack:///./src/redux-app/modules/alerts.ts","webpack:///./src/redux-app/utils/api.ts","webpack:///./src/redux-app/modules/form.ts","webpack:///./src/redux-app/modules/modals.ts","webpack:///./src/constants/dates.ts","webpack:///./src/shared/utils/date.ts","webpack:///./src/redux-app/utils/localization.ts","webpack:///./src/api/client/actions/contacts.ts","webpack:///./src/redux-app/modules/contacts.ts","webpack:///./src/redux-app/utils/loadingWrapper.ts","webpack:///./src/env/dev.ts","webpack:///./src/env/qa.ts","webpack:///./src/env/stg.ts","webpack:///./src/env/prod.ts","webpack:///./src/env/index.ts","webpack:///./src/api/client/actions/auth.ts","webpack:///./src/redux-app/modules/auth.ts","webpack:///./src/redux-app/modules/pageScroller.ts","webpack:///./src/redux-app/selectors/localization.ts","webpack:///./src/redux-app/modules/user.ts","webpack:///./src/redux-app/modules/subscriptions.ts","webpack:///./src/redux-app/utils/subscription.ts","webpack:///./src/services/Analytics/constants.ts","webpack:///./src/services/Analytics/utils.ts","webpack:///./src/services/Analytics/Analytics.ts","webpack:///./src/services/Analytics/services/TealiumUTag/TealiumUTag.ts","webpack:///./src/services/Analytics/services/TealiumUTag/utils.ts","webpack:///./src/services/Analytics/services/TealiumUTag/index.ts","webpack:///./src/services/Analytics/index.ts","webpack:///./src/shared/utils/user.ts","webpack:///./src/api/client/actions/country.ts","webpack:///./src/constants/routes.ts","webpack:///./src/redux-app/utils/reducer.ts","webpack:///./src/shared/utils/location.ts","webpack:///./src/redux-app/selectors/subscription.ts","webpack:///./src/constants/apiTypes.ts","webpack:///./src/api/client/actions/languages.ts","webpack:///./src/redux-app/modules/localization.ts","webpack:///./src/api/client/actions/card.ts","webpack:///./src/constants/errors.ts","webpack:///./src/redux-app/selectors/auth.ts","webpack:///./src/redux-app/actionCreators/auth.ts"],"names":["SUBSCRIPTION_STATUS","SUBSCRIPTION_PLAN_TYPE","__webpack_require__","d","__webpack_exports__","EMPTY_OBJECT","EMPTY_ARRAY","Object","freeze","Token","token","arguments","length","undefined","expirationDate","this","getExpirationDate","valueOf","Date","payload","getTokenPayload","date","setUTCSeconds","exp","split","base64Url","base64","replace","JSON","parse","decodeURIComponent","encodeURIComponent","window","atob","e","tokenService","TokenService","ALERTS","ALERT_TYPES","DEFAULT_ALERTS_TIME_IN_MILLISECONDS","ALERT_PARTS","ALERTS_CONFIG","_ALERTS_CONFIG","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default","error","name","type","danger","success","warning","info","successBillingInfoChanged","successChangeSubscription","successResendConfirmEmail","billingAddressIsNotValid","shippingAddressIsNotValid","successUpdateCard","profileShippingFormError","profileBillingFormError","profileCreditCardIssue","successEmailConfirmed","successChangeEmailConfirmed","successMessageSent","successLeaveEmail","successPaymentDetailsChanged","successChangePassword","successBusinessDetailsChanged","passwordUsedBefore","noAgreement","signUpSuccesfull","USER_ROLES","USER_STATUSES","USER_LOGOUT_ACTION","REGISTRATION_STEPS","getErrorCodes","result","_get","Array","isArray","errorCodes","reduce","acc","_ref","code","details","localizationErrorCode","concat","map","item","_compact","propertyKeysByCode","mapAlertParamsByErrorCode","_mapAlertParamsByErro","ERROR_CODES","emailIsNotConfirmed","resendConfirmEmailUrl","ROUTES","auth","resendConfirmEmail","userIsInPendingState","getNormalizedValidationErrors","normalizedResult","_ref2","message","key","getTextCreator","text","alertPart","sentValues","_ref3","errorCode","propertiesKeys","getPropertyKeysByCode","localizeText","_objectSpread","_pick","getParamsForText","headline","getAlertTexts","_ref4","getHeadline","getMessage","validationErrors","res","validationError","join","headlines","getFormErrorMessages","_ref5","./en-US.json","webpackAsyncContext","req","o","Promise","resolve","then","Error","ids","id","t","keys","module","exports","getUserDetails","isPlanAcceptedMessageShown","getUserSubscription","getUserFutureSubscription","getShippingHistory","getPaymentHistory","getUserId","isUserContractExpired","isChangeSubscriptionAllowed","isEnrollAvailable","isUserNeedsToRenewSubscription","isCardExpired","isCaptchaRequiredForCreditCardChange","isCookieAccepted","isUserAbleToOpenProfile","isUserConfirmedEmail","isUserAbleToChangeSubscription","isUserAbleToCancelSubscription","getSubscriptionStatus","isUserUnableToUpdateInfo","getUserActivePlanId","isPrinterWillBeSentSoon","getSubscriptionName","isRenewalProcessAvailable","isSubscriptionRenewed","getActivePlan","getActivePlanPrice","getActiveSubscriptionId","getActiveSubscriptionContractId","lodash_get__WEBPACK_IMPORTED_MODULE_0__","lodash_get__WEBPACK_IMPORTED_MODULE_0___default","n","constants_user__WEBPACK_IMPORTED_MODULE_1__","constants_subscription__WEBPACK_IMPORTED_MODULE_2__","constants_frozenObjects__WEBPACK_IMPORTED_MODULE_3__","redux_app_selectors_subscription__WEBPACK_IMPORTED_MODULE_4__","utils_date__WEBPACK_IMPORTED_MODULE_5__","state","user","userDetails","value","getUserCardInfo","getUserStatus","isContractExpired","isUserSubscriptionCanceledOrWaitingForPrinter","subscriptionStatus","canceled","waitingForPrinter","cancellationReason","isUserSubscriptionCanceledByAdmin","_getUserCardInfo","expirationMonth","expirationYear","checkIsCardExpired","_getUserCardInfo2","isAdditionalProtectionRequired","pending","active","subscription","termsAccepted","shippingAddress","status","activated","pendingConfirmation","getSubscriptionPlans","find","activationFee","price","meta","apiAction","hostname","env","api","url","headers","method","toString","data","paging","DEFAULT_LANGUAGE","DEBUG_LANGUAGE","getAppConfig","getRecaptchaWhiteListConfig","env__WEBPACK_IMPORTED_MODULE_0__","createAction","createModuleAction","createLocal","remove","removeAll","onShowError","dispatch","getState","texts","getCurrentTexts","createAlert","messageParams","restProps","_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default","startPath","alertTexts","uuid","alert","timeout","ACTION_HANDLERS","_ACTION_HANDLERS","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default","items","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default","filter","createReducer","entityConstructor","getURLSearchParams","URLSearchParams","formValues","entries","forEach","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_0___default","append","sendDataToServerInProgress","sendDataToServerFinished","onSendDataToServer","onFinishSendDataToServer","isSendingInProgress","OPEN_MODAL","CLOSE_MODAL","openModal","closeModal","_ref3$payload","_ref3$payload$data","isOpen","DATE_FORMATS","getYearsDuration","addedYears","moment","start","year","end","add","getPrintedDateLocal","utc","local","format","getCurrentYearNumber","getCurrentMonthIndex","month","currentDate","isSameOrAfter","isDateAfter","dateA","dateB","isAfter","contractEndDate","currentDateTime","tz","contractDateTime","startOf","variableTemplate","replacedVariableTemplate","_ref$texts","path","params","mergeTexts","fallbackTexts","newTexts","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default","getContacts","onGetContacts","catch","defineProperty_default","loadingWrapper","handlePromiseActions","contacts","loadingObjects","loading","loaded","handlers","handler","index","action","newState","_isFunction","mapper","dev","paymetric","analytics","account","profile","environment","isDebugInfo","qa","stg","prod","ENVS","getEnvConfig","config","devConfig","qaConfig","stgConfig","prodConfig","login","logout","refresh","signUp","forgotPassword","resendForgotPassword","resetPassword","confirmEmail","resendEmail","checkChangePasswordLink","completeInitialSubscription","confirmChangeEmail","leaveEmail","addMeToWaitlist","redux_app_utils_api__WEBPACK_IMPORTED_MODULE_1__","username","password","googleRecaptchaResponse","authToken","noAuth","refreshToken","refresh_token","email","subscriptionPlanId","_ref6","_ref7","_ref8","_ref10","_ref11","userId","billingAddress","company","creditCard","_ref12","planId","_ref13","captcha","update","updateUserRole","updateRegistrationStep","clearError","onLogin","accessToken","access_token","_tokenService$getToke","role","emailConfirmed","getSignInStep","contentType","PAGE_CONTENT_TYPES","isEmailConfirmed","userDetailsState","verifyCurrentCard","history","push","renewPlan","root","view","create","onSignUp","body","getSelectedPlanId","onForgotPassword","onResetPassword","onSaveInitialSubscription","onCompleteInitialSubscription","terms","_ref9","access","registrationStep","setScrollElementId","getData","localization","getLang","lang","getLinksValue","getLoadedTextsValue","isTextsLoading","createSelector","localTexts","links","loadedTexts","acceptCookie","onShowNewPlanAcceptedMessage","onHideNewPlanAcceptedMessage","initialState","subscriptionHistory","paymentHistory","plans","setRenewalPlans","selectPlan","subscriptionPlans","renewalPlans","selectedPlanId","isPlanAvailable","isInventoryForChangePlanAvailable","plan","VIEW_PAYLOAD_KEYS","LINK_PAYLOAD_KEYS","CUSTOMER_STATUSES","PAGE_TEMPLATE_NAMES","SITE_SECTIONS","SITE_TYPE","getPageName","pageContentType","pathname","sectionType","getPageNameParams","_ref2$pathname","location","_ref2$sectionType","home","logIn","checkout","contactUs","contact","orderConfirmation","changePlan","settings","newPlanAccepted","accepted","enrollPlan","renewAndchangeAccepted","some","routePath","myAccount","getFirstOrSecondCreator","predicate","first","second","getNormalizedStringValue","toLowerCase","getNormalizedLang","getNormalizedActivePlanName","getNormalizedSelectedPlanName","getSelectedPlanName","Analytics","analyticsService","_this","classCallCheck_default","getValueForAuthorized","isUserAuthorizated","customerId","customerStatus","loggedIn","notLoggedIn","customerSubscriptionPlanType","languageCode","siteCurrency","siteRegion","siteType","subscriptionPlanName","subscriptionPlanListPrice","subscriptionPlanNetPrice","subscriptionId","subscriptionContractId","orderCouponCode","orderCurrency","orderDiscount","orderId","orderPaymentType","orderSubtotal","orderTax","orderTotal","eventName","eventType","init","_objectSpread2","getPayloadForOtherPage","pageName","pageTemplateName","siteSection","_objectSpread3","_objectSpread4","_objectSpread5","_objectSpread6","getPayloadForCheckoutPage","getSelectedPlanPrice","_objectSpread7","paymentAndShipping","_objectSpread8","reviewTerms","_objectSpread9","congratulations","_objectSpread10","getPayloadForOrderConfirmationPage","_objectSpread11","destinationUrl","_objectSpread12","getInitialPayload","link","errorDisplayType","errorType","errorMessages","showError","_this$analyticsServic","_ref14","_this$analyticsServic2","_this$analyticsServic3","isAuthorized","_objectSpread13","_ref15","array","isSelectedPlanAvailable","fee","activationFeeCheckbox","_this$analyticsServic4","planName","_ref16","upgradePlan","_this$analyticsServic5","_ref17","downgradePlan","_this$analyticsServic6","_ref18","renewalTerm","contract","extendPlan","_this$analyticsServic7","_ref19","_this$analyticsServic8","_this$analyticsServic9","sectionName","_ref20","_this$analyticsServic10","TealiumUTag","track","utag_cfg_ovrd","noview","utag_data","reject","script","document","createElement","async","src","onload","onerror","head","appendChild","utag","console","tealiumUTag","getCurrencySymbol","getPostalCodeFormatted","constants_auth__WEBPACK_IMPORTED_MODULE_0__","userData","payment","congrats","currency","postalCode","slice","getCountryByCountryIdState","countryId","menu","alreadyActivated","changePassword","new","noAvailablePrinter","passwordExpired","loginMaxAttempted","resend","renewAndChangePlan","lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__","lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default","hasOwnProperty","promiseTypeSuffixes","reducerMap","flatMap","actionType","reducerValue","promiseActionReducer","promiseTypeSuffixIndex","actionCreator","finalName","currentActionCreator","apply","getApiUrl","getPathWithParams","getQueryFromSearch","query_string__WEBPACK_IMPORTED_MODULE_0__","query_string__WEBPACK_IMPORTED_MODULE_0___default","lodash_get__WEBPACK_IMPORTED_MODULE_1__","lodash_get__WEBPACK_IMPORTED_MODULE_1___default","env__WEBPACK_IMPORTED_MODULE_2__","queryToStringParams","query","queryString","stringify","_ref$pathname","host","resPath","paramRegExp","replacedValue","search","substr","setHistory","routerHistory","createHistory","getSubscriptionPlansForRenew","getSelectedPlan","getSelectedPlanForRenew","redux_app_utils_subscription__WEBPACK_IMPORTED_MODULE_1__","subscriptions","API_TYPES","NOT_SECURE_API_TYPES","languages","appConfig","recaptchaWhiteList","getTexts","updated","mock","setLanguageLocal","updateLocalTexts","setLanguage","isLangChanged","onLoadTexts","debugTexts","locale","all","slicedToArray_default","default","warn","response","metadata","updatePaymentDetails","updateBillingAddress","getToken","getRegistrationStep","getAccessToken","getUserRole","getAuthHeaders","Authorization","subscriptionUser","onStartLogout","onStartLogoutWithRedirect","onCheckAuth","onRefreshToken","services_Token__WEBPACK_IMPORTED_MODULE_1__","services_Analytics__WEBPACK_IMPORTED_MODULE_2__","constants_user__WEBPACK_IMPORTED_MODULE_3__","constants_routes__WEBPACK_IMPORTED_MODULE_4__","api_client_actions_auth__WEBPACK_IMPORTED_MODULE_5__","redux_app_modules_auth__WEBPACK_IMPORTED_MODULE_6__","redux_app_selectors_auth__WEBPACK_IMPORTED_MODULE_7__","utils_location__WEBPACK_IMPORTED_MODULE_8__","isRedirectToLogin","onFinishLogout","isTokenExpired"],"mappings":";6FAKO,IAAKA,EAaAC,EAlBZC,EAAAC,EAAAC,EAAA,sBAAAJ,IAAAE,EAAAC,EAAAC,EAAA,sBAAAH,aAKYD,0TAaAC,iGClBZC,EAAAC,EAAAC,EAAA,sBAAAC,IAAAH,EAAAC,EAAAC,EAAA,sBAAAE,IAKO,IAAMD,EAAeE,OAAOC,WACtBF,EAAcC,OAAOC,8HCIbC,2FACwB,IAApBC,EAAoBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAJ,GACrC,IAAKD,EACH,OAAO,EAET,IAAMI,EAAuBC,KAAKC,kBAAkBN,GACpD,OAAOI,EAAeG,YAAa,IAAIC,MAAOD,oDAGtBP,GACxB,IAAMS,EAAUJ,KAAKK,gBAAgBV,GAC/BW,EAAO,IAAIH,KAAK,GAItB,OAFAG,EAAKC,cAAcH,EAAQI,KAEpBF,0CAGeX,GACtB,GAAIA,GAAqC,IAA5BA,EAAMc,MAAM,KAAKZ,OAC5B,IACE,IAAMa,EAAYf,EAAMc,MAAM,KAAK,GAC7BE,EAASD,EAAUE,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC1D,OAAOC,KAAKC,MACVC,mBAAmBC,mBAAmBC,OAAOC,KAAKP,MAEpD,MAAOQ,GACP,iBC9BKC,EAAe,IAAIC,6KCApBC,EA2BPC,uBA7BQC,EAAsC,cAEvCF,wjCA2BPC,uFAOE,IA+FKE,EA/FCC,GAAaC,KAAAC,IAAAD,EACvBL,EAAOO,OACNC,KAAMR,EAAOO,MACbE,KAAMR,EAAYS,SAHIJ,IAAAD,EAKvBL,EAAOW,SACNH,KAAMR,EAAOW,QACbF,KAAMR,EAAYU,UAPIL,IAAAD,EASvBL,EAAOY,SACNJ,KAAMR,EAAOY,QACbH,KAAMR,EAAYW,UAXIN,IAAAD,EAavBL,EAAOa,MACNL,KAAMR,EAAOa,KACbJ,KAAMR,EAAYY,OAfIP,IAAAD,EAiBvBL,EAAOc,2BACNN,KAAMR,EAAOc,0BACbL,KAAMR,EAAYU,UAnBIL,IAAAD,EAqBvBL,EAAOe,2BACNP,KAAMR,EAAOe,0BACbN,KAAMR,EAAYU,UAvBIL,IAAAD,EAyBvBL,EAAOgB,2BACNR,KAAMR,EAAOgB,0BACbP,KAAMR,EAAYU,UA3BIL,IAAAD,EA6BvBL,EAAOiB,0BACNT,KAAMR,EAAOiB,yBACbR,KAAMR,EAAYS,SA/BIJ,IAAAD,EAiCvBL,EAAOkB,2BACNV,KAAMR,EAAOkB,0BACbT,KAAMR,EAAYS,SAnCIJ,IAAAD,EAqCvBL,EAAOmB,mBACNX,KAAMR,EAAOmB,kBACbV,KAAMR,EAAYU,UAvCIL,IAAAD,EAyCvBL,EAAOoB,0BACNZ,KAAMR,EAAOO,MACbE,KAAMR,EAAYS,SA3CIJ,IAAAD,EA6CvBL,EAAOqB,yBACNb,KAAMR,EAAOO,MACbE,KAAMR,EAAYS,SA/CIJ,IAAAD,EAiDvBL,EAAOsB,wBACNd,KAAMR,EAAOO,MACbE,KAAMR,EAAYS,SAnDIJ,IAAAD,EAqDvBL,EAAOuB,uBACNf,KAAMR,EAAOuB,sBACbd,KAAMR,EAAYU,UAvDIL,IAAAD,EAyDvBL,EAAOwB,6BACNhB,KAAMR,EAAOwB,4BACbf,KAAMR,EAAYU,UA3DIL,IAAAD,EA6DvBL,EAAOyB,oBACNjB,KAAMR,EAAOyB,mBACbhB,KAAMR,EAAYU,UA/DIL,IAAAD,EAiEvBL,EAAO0B,mBACNlB,KAAMR,EAAO0B,kBACbjB,KAAMR,EAAYU,UAnEIL,IAAAD,EAqEvBL,EAAO2B,8BACNnB,KAAMR,EAAO2B,6BACblB,KAAMR,EAAYU,UAvEIL,IAAAD,EAyEvBL,EAAO4B,uBACNpB,KAAMR,EAAO4B,sBACbnB,KAAMR,EAAYU,UA3EIL,IAAAD,EA6EvBL,EAAO6B,+BACNrB,KAAMR,EAAO6B,8BACbpB,KAAMR,EAAYU,UA/EIL,IAAAD,EAiFvBL,EAAO8B,oBACNtB,KAAMR,EAAO8B,mBACbrB,KAAMR,EAAYS,SAnFIJ,IAAAD,EAqFvBL,EAAO+B,aACNvB,KAAMR,EAAO+B,YACbtB,KAAMR,EAAYS,SAvFIJ,IAAAD,EAyFvBL,EAAOgC,kBACNxB,KAAMR,EAAOgC,iBACbvB,KAAMR,EAAYY,OA3FIR,aA+FdF,8FCnIL,IAAK8B,EAIAC,EATZrE,EAAAC,EAAAC,EAAA,sBAAAkE,IAAApE,EAAAC,EAAAC,EAAA,sBAAAmE,IAAArE,EAAAC,EAAAC,EAAA,sBAAAoE,aAKYF,kDAIAC,+FAOL,IAAMC,EAAqB,wDChB3B,IAAKC,EAAZvE,EAAAC,EAAAC,EAAA,sBAAAqE,aAAYA,u7BCYL,IAAMC,EAAgB,SAAA9B,GAC3B,IAAI+B,EAASC,IAAKhC,EAAO,UAEzB,IAAK+B,EACH,SAGGE,MAAMC,QAAQH,KACjBA,GAAUA,IAGZ,IAAMI,EAAaJ,EAAOK,OAAO,SAACC,EAADC,GAAmD,IAA3CC,EAA2CD,EAA3CC,KAAMC,EAAqCF,EAArCE,QAASC,EAA4BH,EAA5BG,sBACtD,MAAa,eAATF,EACEN,MAAMC,QAAQM,GACTH,EAAIK,OAAOF,EAAQG,IAAI,SAAAC,GAAI,OAAIA,EAAKL,QAEtCF,EAAIK,OAAOF,EAAQD,MAErBF,EAAIK,OAAOD,QAGpB,OAAOI,IAASV,IAGZW,KAQAC,GAAyBC,KAAAjD,IAAAiD,EAC5BC,IAAYC,qBACXC,sBAAuBC,IAAOC,KAAKC,qBAFRvD,IAAAiD,EAI5BC,IAAYM,sBACXJ,sBAAuBC,IAAOC,KAAKC,qBALRN,GAWlBQ,EAAgC,SAAAzB,GAC3C,IAAI0B,EAAmB1B,EAEvB,OAAK0B,GAIAxB,MAAMC,QAAQuB,KACjBA,GAAoB1B,IAGf0B,EAAiBrB,OAAO,SAACC,EAADqB,GAA4D,IAApDnB,EAAoDmB,EAApDnB,KAAMC,EAA8CkB,EAA9ClB,QAASC,EAAqCiB,EAArCjB,sBAAuBkB,EAAcD,EAAdC,QAC3E,MAAa,eAATpB,EACEN,MAAMC,QAAQM,GACTH,EAAIK,OAAOF,EAAQG,IAAI,SAAAC,GAAI,OAChCL,KAAMK,EAAKL,KACXoB,QAASf,EAAKe,QACdC,IAAKhB,EAAKgB,QAGPvB,EAAIK,QAASH,KAAMC,EAAQD,KAAMoB,QAASnB,EAAQmB,QAASC,IAAKpB,EAAQoB,MAE1EvB,EAAIK,QAASH,KAAME,EAAuBkB,sBAIxCE,EAAiB,SAACC,EAAMC,GAAP,IAAkBC,EAAlBjG,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,aAAsC,SAAAkG,GAAuB,IA5BzDC,EA4BqC3B,EAAoB0B,EAApB1B,KAAMoB,EAAcM,EAAdN,QACrEQ,EA1CsB,SAAA5B,GAAI,OAAIO,EAAmBP,GA0ChC6B,CAAsB7B,GACvC8B,EAAeP,EAAI,cAAApB,OAAeH,EAAf,KAAAG,OAAuBqB,GAAvBO,OAzCF,SAACH,EAAgBH,GAAjB,OAAgCO,IAAMP,EAAYG,GA0CpEK,CAAiBL,EAAgBH,KA/BNE,EAgCD3B,EAhCcQ,EAA0BmB,UAmCvE,OAAIH,IAAcnE,IAAY6E,SACrBJ,EAGFA,GAAgBV,IAGZe,EAAgB,SAAC1E,EAAY8D,EAAME,GAC9C,IAEkDW,EAF5C5C,EAASC,IAAKhC,EAAO,UAE3B,IAAK+B,GAA0C,IAAhCD,EAAc9B,GAAOhC,OAClC,OAAA2G,KAAA5E,IAAA4E,EACG/E,IAAY6E,SAAWX,EAAK,0BAD/B/D,IAAA4E,EAEG/E,IAAY+D,QAAUG,EAAK,yBAF9Ba,EAMF,IAAMC,EAAcf,EAAeC,EAAMlE,IAAY6E,SAAUT,GACzDa,EAAahB,EAAeC,EAAMlE,IAAY+D,QAASK,GACvDc,EAAmBtB,EAA8BzB,GACjDgD,EAAWhF,OACdH,IAAY+D,QAAUmB,EAAiBnC,IAAI,SAAAqC,GAAe,OAAIH,EAAWG,KAAkBC,KAAK,OAE7FC,EAAYJ,EAAiBnC,IAAI,SAAAqC,GAAe,OAAIJ,EAAYI,KAMtE,OAJInC,IAASqC,GAAWlH,OAAS,IAC/B+G,EAAInF,IAAY6E,UAAYS,EAAUD,KAAK,OAGtCF,GAGII,EAAuB,SAACnF,EAAO8D,GAC1C,IAAM/B,EAASC,IAAKhC,EAAO,UAE3B,IAAK+B,GAA0C,IAAhCD,EAAc9B,GAAOhC,OAClC,OAAQ8F,EAAK,yBAGf,IAAMgB,EAAmBtB,EAA8BzB,GAEvD,OAAO+C,EAAiBnC,IAAI,SAAAyC,GAAA,IAAG7C,EAAH6C,EAAG7C,KAAMoB,EAATyB,EAASzB,QAAT,OAAuBG,EAAI,cAAApB,OAAeH,EAAf,cAAkCoB,2BCjI3F,IAAAhB,GACA0C,gBACA,OACA,KAGA,SAAAC,EAAAC,GACA,IAAAjI,EAAAkI,EAAA7C,EAAA4C,GACA,OAAAE,QAAAC,UAAAC,KAAA,WACA,IAAArG,EAAA,IAAAsG,MAAA,uBAAAL,EAAA,KAEA,MADAjG,EAAAiD,KAAA,mBACAjD,IAIA,IAAAuG,EAAAlD,EAAA4C,GAAAO,EAAAD,EAAA,GACA,OAAAvI,EAAAgC,EAAAuG,EAAA,IAAAF,KAAA,WACA,OAAArI,EAAAyI,EAAAD,EAAA,KAGAR,EAAAU,KAAA,WACA,OAAArI,OAAAqI,KAAArD,IAEA2C,EAAAQ,GAAA,OACAG,EAAAC,QAAAZ,qCCxBAhI,EAAAC,EAAAC,EAAA,sBAAA2I,IAAA7I,EAAAC,EAAAC,EAAA,sBAAA4I,IAAA9I,EAAAC,EAAAC,EAAA,sBAAA6I,IAAA/I,EAAAC,EAAAC,EAAA,sBAAA8I,IAAAhJ,EAAAC,EAAAC,EAAA,sBAAA+I,IAAAjJ,EAAAC,EAAAC,EAAA,sBAAAgJ,IAAAlJ,EAAAC,EAAAC,EAAA,sBAAAiJ,IAAAnJ,EAAAC,EAAAC,EAAA,sBAAAkJ,IAAApJ,EAAAC,EAAAC,EAAA,sBAAAmJ,IAAArJ,EAAAC,EAAAC,EAAA,sBAAAoJ,IAAAtJ,EAAAC,EAAAC,EAAA,sBAAAqJ,IAAAvJ,EAAAC,EAAAC,EAAA,sBAAAsJ,IAAAxJ,EAAAC,EAAAC,EAAA,sBAAAuJ,IAAAzJ,EAAAC,EAAAC,EAAA,sBAAAwJ,IAAA1J,EAAAC,EAAAC,EAAA,sBAAAyJ,IAAA3J,EAAAC,EAAAC,EAAA,sBAAA0J,IAAA5J,EAAAC,EAAAC,EAAA,sBAAA2J,IAAA7J,EAAAC,EAAAC,EAAA,sBAAA4J,IAAA9J,EAAAC,EAAAC,EAAA,sBAAA6J,IAAA/J,EAAAC,EAAAC,EAAA,sBAAA8J,IAAAhK,EAAAC,EAAAC,EAAA,sBAAA+J,IAAAjK,EAAAC,EAAAC,EAAA,sBAAAgK,IAAAlK,EAAAC,EAAAC,EAAA,sBAAAiK,IAAAnK,EAAAC,EAAAC,EAAA,sBAAAkK,IAAApK,EAAAC,EAAAC,EAAA,sBAAAmK,IAAArK,EAAAC,EAAAC,EAAA,sBAAAoK,IAAAtK,EAAAC,EAAAC,EAAA,sBAAAqK,IAAAvK,EAAAC,EAAAC,EAAA,sBAAAsK,IAAAxK,EAAAC,EAAAC,EAAA,sBAAAuK,IAAA,IAAAC,EAAA1K,EAAA,QAAA2K,EAAA3K,EAAA4K,EAAAF,GAAAG,EAAA7K,EAAA,QAAA8K,EAAA9K,EAAA,QAAA+K,EAAA/K,EAAA,QAAAgL,EAAAhL,EAAA,QAAAiL,EAAAjL,EAAA,QAYa6I,EAAiB,SAAAqC,GAAK,OAAIA,EAAMC,KAAKC,YAAYC,OACjDvC,EAA6B,SAAAoC,GAAK,OAAIA,EAAMC,KAAKrC,4BACjDC,EAAsB,SAAAmC,GAAK,OAAIxG,IAAKmE,EAAeqC,GAAQ,eAAgB/K,MAC3E6I,EAA4B,SAAAkC,GAAK,OAAIxG,IAAKmE,EAAeqC,GAAQ,qBAAsB/K,MACvFmL,EAAkB,SAAAJ,GAAK,OAAIxG,IAAKmE,EAAeqC,GAAQ,aAAc/K,MACrE8I,EAAqB,SAAAiC,GAAK,OAAIxG,IAAKwG,GAAQ,OAAQ,sBAAuB,SAAU9K,MACpF8I,EAAoB,SAAAgC,GAAK,OAAIxG,IAAKwG,GAAQ,OAAQ,iBAAkB,SAAU9K,MAC9E+I,EAAY,SAAA+B,GAAK,OAAIxG,IAAKmE,EAAeqC,GAAQ,WACjDK,EAAgB,SAAAL,GAAK,OAAIxG,IAAKmE,EAAeqC,GAAQ,WACrD9B,EAAwB,SAAA8B,GAAK,OACtBM,YAAkB9G,IAAKmE,EAAeqC,GAAQ,+BAOrDO,EAAgD,SAAAP,GAC3D,IAAMQ,EAAqB3B,EAAsBmB,GACjD,OAAOQ,IAAuB5L,IAAoB6L,UAAYD,IAAuB5L,IAAoB8L,mBAE9FvC,EAA8B,SAAA6B,GAAK,OAAIxG,IAAKmE,EAAeqC,GAAQ,sDACnE5B,EAAoB,SAAA4B,GAAK,OAAI9B,EAAsB8B,KAXf,SAAAA,GAC/C,IACMW,EAAqBnH,IAAKmE,EAAeqC,GAAQ,qCAEvD,OAASO,EAA8CP,IAHvB,GAGkCW,EAOQC,CAAkCZ,IAAUO,EAA8CP,IACzJ3B,EAAiC,SAAA2B,GAAK,OAAIxG,IAAKmE,EAAeqC,GAAQ,2CACtE1B,EAAgB,SAAA0B,GAAS,IAAAa,EACQT,EAAgBJ,GAApDc,EAD4BD,EAC5BC,gBAAiBC,EADWF,EACXE,eACzB,OAAOC,YAAmBF,EAAiBC,IAEhCxC,EAAuC,SAAAyB,GAAU,IAAAiB,EACjBb,EAAgBJ,GAAnDkB,EADoDD,EACpDC,+BACR,OAAOA,GAEI1C,EAAmB,SAAAwB,GAAK,OAAIA,EAAMC,KAAKzB,kBACvCC,EAA0B,SAAAuB,GACrC,IAAME,EAAcvC,EAAeqC,GACnC,QAAKE,KAIAG,EAAcL,KAAW7G,IAAcgI,SACvCd,EAAcL,KAAW7G,IAAciI,SACpClB,EAAYmB,aAAaC,gBACzBpB,EAAYqB,kBAMT7C,EAAuB,SAAAsB,GAAK,OAAIxG,IAAKmE,EAAeqC,GAAQ,mBAG5DrB,EAAiC,SAAAqB,GAC5C,IAAMwB,EAAS3C,EAAsBmB,GACrC,OAAOwB,IAAW5M,IAAoB6M,WAAaD,IAAW5M,IAAoB8M,qBAEvE9C,EAAiC,SAAAoB,GAAK,OAAIxG,IAAKqE,EAAoBmC,GAAQ,iCAC3EnB,EAAwB,SAAAmB,GAAK,OAAIxG,IAAKqE,EAAoBmC,GAAQ,WAElElB,EAA2B,SAAAkB,GACtC,IAAMwB,EAAS3C,EAAsBmB,GACrC,OAASwB,IAAW5M,IAAoB6L,UAAYe,IAAW5M,IAAoB8L,qBAAuBxC,GAE/Fa,EAAsB,SAAAiB,GAAK,OAAIxG,IAAKqE,EAAoBmC,GAAQ,WAChEhB,EAA0B,SAAAgB,GAAK,OAAIxG,IAAKqE,EAAoBmC,GAAQ,4BACpEf,EAAsB,SAAAe,GAAK,OAAIxG,IAAKqE,EAAoBmC,GAAQ,WAAY,SAC5Ed,EAA4B,SAAAc,GAAK,OAAIxG,IAAKqE,EAAoBmC,GAAQ,8BACtEb,EAAwB,SAAAa,GAAK,OAAIxG,IAAKqE,EAAoBmC,GAAQ,0BAElEZ,EAAgB,SAAAY,GAAK,OAAI2B,YAAqB3B,GACxD4B,KAAK,SAAAxH,GAAI,OAAIA,EAAKkD,KAAOyB,EAAoBiB,MACnCX,EAAqB,SAAAW,GAChC,IAAM6B,EAAgBrI,IAAK4F,EAAcY,GAAQ,iBAC3C8B,EAAQtI,IAAK4F,EAAcY,GAAQ,SAEzC,OAAK6B,EAIEA,EAAgBC,EAHdA,GAKExC,EAA0B,SAAAU,GAAK,OAAIxG,IAAKqE,EAAoBmC,GAAQ,OACpET,EAAkC,SAAAS,GAAK,OAAIxG,IAAKqE,EAAoBmC,GAAQ,mbCtFlF,IAAMrC,EAAiB,SAACoE,GAAD,OAC5BrK,KAAM,4BACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAG,4BACHC,WACAC,OAAQ,QAGZP,kWAAIjG,IACCiG,KAGPpE,EAAe4E,SAAW,iBAAM,6BAEzB,IAAMzH,EAAqB,kBAChCpD,KAAM,gCACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAG,uCACHC,WACAC,OAAQ,SAGZP,UAEFjH,EAAmByH,SAAW,iBAAM,iCAE7B,IAAMxE,EAAqB,kBAChCrG,KAAM,iCACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAG,6CACHI,MAAQC,OAAQ,MAChBJ,WACAC,OAAQ,SAGZP,UAEFhE,EAAmBwE,SAAW,iBAAM,kCAE7B,IAAMvE,EAAoB,kBAC/BtG,KAAM,4BACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,4CACLI,MAAQC,OAAQ,MAChBJ,WACAC,OAAQ,SAGZP,UAEF/D,EAAkBuE,SAAW,iBAAM,gECjEnCzN,EAAAC,EAAAC,EAAA,sBAAA0N,IAAA5N,EAAAC,EAAAC,EAAA,sBAAA2N,IAKO,IAAMD,EAAmB,QAEnBC,EAAiB,6CCP9B7N,EAAAC,EAAAC,EAAA,sBAAA4N,IAAA9N,EAAAC,EAAAC,EAAA,sBAAA6N,IAAA,IAAAC,EAAAhO,EAAA,QAOa8N,EAAe,SAACb,GAAD,OAC1BrK,KAAM,wBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,gBACLE,OAAQ,QAGZP,SAEFa,EAAaL,SAAW,iBAAM,yBAEvB,IAAMM,EAA8B,SAACd,GAAD,OACzCrK,KAAM,+BACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,+BACLE,OAAQ,QAGZP,SAEFc,EAA4BN,SAAW,iBAAM,o3BClB7C,IAAMQ,EAAeC,YAAmB,UAElCC,EAA2BF,EAAa,UACjCG,EAAiBH,EAAa,UAC9BI,EAAuBJ,EAAa,cAEpCK,EAAc,SAAC5L,EAAYgE,GAAb,OAA6B,SAAC6H,EAAUC,GACjE,GAAqB,MAAjB9L,EAAMgK,OAAV,CAGA,IAAM+B,EAAQC,YAAgBF,KAC9BD,EAASI,EAAW3H,GAClBrE,KAAMR,IAAOO,OACV0E,YAAc1E,EAAO8D,aAAOiI,UAAU/H,SAIhCiI,EAA2B,SAAA3J,GAAA,IAAGrC,EAAHqC,EAAGrC,KAAMiM,EAAT5J,EAAS4J,cAAkBC,EAA3BC,IAAA9J,GAAA,gCAA2C,SAACuJ,EAAUC,GAC5F,IAAM/F,EAAIjC,aAAOiI,MAAOC,YAAgBF,KAAaO,UAAS,UAAA3J,OAAYzC,KACpEqM,GACJ7H,SAAUsB,EAAE,aAAe,WAC3BpC,QAASoC,EAAE,UAAWmG,IAAkB,gBAEpCpG,EAAKyG,MACLC,EAAKlI,OACTwB,MACGwG,OACHG,QAAS9M,KACNE,IAAcI,QACjBA,QACGkM,GAGL,OADAN,EAASJ,EAAYe,IACd1G,IAGH4G,GAAeC,KAAAC,IAAAD,EAClBlB,EAAYV,WAAa,SAACvC,EAAD9E,GAAA,IAAUnF,EAAVmF,EAAUnF,QAAV,OAAA+F,OACrBkE,OACHqE,SAAKnK,OAAAoK,IACAtE,EAAMqE,QADNvI,GAGDwB,GAAIvH,EAAQuH,IACTvH,SAPUqO,IAAAD,EAWlBjB,EAAOX,WAAa,SAACvC,EAADvE,GAAA,IAAqB6B,EAArB7B,EAAU1F,QAAWuH,GAArB,OAAAxB,OAChBkE,OACHqE,MAAOrE,EAAMqE,MAAME,OAAO,SAAAnK,GAAI,OAAIA,EAAKkD,KAAOA,QAb7B8G,IAAAD,EAelBhB,EAAUZ,WAAa,SAAAvC,GAAK,OAAAlE,OACxBkE,OACHqE,aAjBiBF,GAyBNK,iBAHbH,UAGyCH,0ECjELO,uBASzBC,GATyBD,EAS0BE,gBATL,SAACC,GAC1D,IAAMpC,EAAO,IAAIiC,EAKjB,OAHAtP,OAAO0P,QAAQD,GAAYE,QAAQ,SAAAhL,GAAkB,IAAAoB,EAAA6J,IAAAjL,EAAA,GAAhBsB,EAAgBF,EAAA,GAAXiF,EAAWjF,EAAA,GACnDsH,EAAKwC,OAAO5J,EAAK+E,KAEZqC,ysBCRT,IAAMO,EAAeC,YAAmB,YAClCiC,EAA6BlC,EAAa,mCAC1CmC,EAA2BnC,EAAa,gCAEjCoC,EAAqB,kBAAM,SAAA9B,GACtC,OAAOA,EAAS4B,OAGLG,EAA2B,kBAAM,SAAA/B,GAC5C,OAAOA,EAAS6B,OAGZhB,GAAeC,KAAA5M,IAAA4M,EAClBc,EAA2B1C,WAAa,SAAAvC,GAAK,OAAAlE,OACzCkE,OACHqF,qBAAqB,MAHJ9N,IAAA4M,EAKlBe,EAAyB3C,WAAa,SAAAvC,GAAK,OAAAlE,OACvCkE,OACHqF,qBAAqB,MAPJlB,GAeNK,iBAHba,qBAAqB,GAGoBnB,wsBC3B3C,IAEaoB,EAAU,GAAApL,OAFH,QAEG,eACVqL,EAAW,GAAArL,OAHJ,QAGI,gBAEXsL,EAAY,SAAA1L,GAAA,IAAGrC,EAAHqC,EAAGrC,KAAM+K,EAAT1I,EAAS0I,KAAT,OACvB9K,KAAM4N,EACNvP,SAAW0B,OAAM+K,UAGNiD,EAAa,SAAAvK,GAAA,IAAGzD,EAAHyD,EAAGzD,KAAH,OACxBC,KAAM6N,EACNxP,SAAW0B,UAGPyM,GAAeC,KAAA5M,IAAA4M,EAClBmB,EAAa,SAACtF,EAADvE,GAAA,IAAAiK,EAAAjK,EAAU1F,QAAW0B,EAArBiO,EAAqBjO,KAArBkO,EAAAD,EAA2BlD,YAA3B,IAAAmD,OAAA,OAAA7J,OACTkE,MADSzI,OAEXE,GACCmO,QAAQ,EACRpD,YALejL,IAAA4M,EAQlBoB,EAAc,SAACvF,EAAD7D,GAAA,IAAqB1E,EAArB0E,EAAUpG,QAAW0B,KAArB,OAAAqE,OACVkE,MADUzI,OAEZE,GACCmO,QAAQ,EACRpD,aAZe2B,GAmBNK,mBAA4BN,+RCpC9B2B,EACF,aCEEC,EAAmB,SAAAC,GAC9B,IAAM9P,EAAO+P,MACPC,EAAQhQ,EAAKiQ,OACbC,EAAMlQ,EAAKmQ,IAAIL,EAAY,SAASG,OAC1C,OACED,EACAE,IAgBSE,EAAsB,SAAApQ,GACjC,OAAO+P,IAAOM,IAAIrQ,GAAMsQ,QAAQC,OAAOX,IAO5BY,EAAuB,kBAAMT,MAASE,QAEtCQ,EAAuB,kBAAMV,MAASW,SAEtC3F,EAAqB,SAACF,EAAiBC,GAClD,IAAMrL,EAAiBsQ,IAAM,KAAA9L,OAAM6G,EAAN,KAAA7G,OAAwB4G,EAAxB,OACvB8F,EAAcZ,MAIpB,OAFAtQ,EAAe0Q,IAAI,EAAG,UAEfQ,EAAYC,cAAcnR,IAGtBoR,EAAc,SAACC,EAAOC,GACjC,OAAOhB,IAAOe,GAAOE,QAAQjB,IAAOgB,KAGzB1G,EAAoB,SAAC4G,GAEhC,IAAKA,EACH,OAAO,EAGT,IAAIC,EAAkBnB,MAASoB,GAAG,uBAAuBZ,SAErDa,EAAmBrB,IAAOkB,GAAiBE,GAAG,uBAAuBE,QAAQ,OAAOlB,IAAI,EAAG,QAAQI,SAEvG,OAAOM,EAAYK,EAAiBE,quBC1DtC,IAAME,EAAmB,yBACnBC,EAA2B,WAOpBlM,EAAO,SAAAxB,GAAA,IAAA2N,EAAA3N,EAAGyJ,aAAH,IAAAkE,OAAe5D,EAAf/J,EAAe+J,UAAf,OAA4C,WAAqC,IAApC6D,EAAoCnS,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAArB,GAAIoS,EAAiBpS,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAC7F6F,EAAO9B,IAAK+J,EAAD,GAAArJ,OAAW2J,EAAX,KAAA3J,OAAwBwN,GAAQlO,IAAK+J,EAAOmE,EAAM,KACnE,IAAKC,EACH,OAAOrM,EAET,IAAM/B,EAAS+B,EAAK/E,QAAQgR,EAAkB,SAAApH,GAC5C,IAAM/E,EAAM+E,EAAM5J,QAAQiR,EAA0B,IACpD,OAAOhO,IAAKmO,EAAQvM,KAEtB,OAAO7B,IAGIqO,EAAa,WAAuC,IAAtCC,EAAsCtS,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,MAAlBuS,EAAkBvS,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,MAC/D,OAAOJ,OAAO0P,QAAP/I,OAAoB+L,GAAkBC,IAAYlO,OAAO,SAACC,EAADqB,GAAA,IAAAO,EAAAsJ,IAAA7J,EAAA,GAAOE,EAAPK,EAAA,GAAY0E,EAAZ1E,EAAA,UAAAK,OAC3DjC,MAD2DkO,OAE7D3M,EAAM+E,GAAgB0H,EAAczM,2IC5B5B4M,EAAc,kBACzBtQ,KAAM,mBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,wBACLC,WACAC,OAAQ,QAGZP,UAGFiG,EAAYzF,SAAW,iBAAM,oCCVhB0F,EAAgB,kBAAM,SAAA5E,GACjC,OAAOA,EAAS2E,KACbE,MAAM,SAAA1Q,GAEL,MADA6L,EAASD,YAAY5L,IACfA,MAIN0M,EAAkBiE,OACrBH,EAAYzF,WAAa6F,YAAe,YACvC,KACA,SAACpI,EAADlG,GAAA,IAAqBP,EAArBO,EAAU/D,QAAWwD,OAArB,OAAoCA,GACpC,QAQW8O,gBAAqBnE,GAHlCoE,0rBCfF,IAAMC,IAEFC,SAAS,EACTC,QAAQ,IAGRD,SAAS,EACTC,QAAQ,IAGRD,SAAS,EACTC,QAAQ,IAkBCL,EAAiB,SAAChN,EAAKsN,GAAN,OAAmBA,EAASvO,IAd3C,SAAAiB,GAAG,OAAI,SAACuN,EAASC,GAAV,OAAoB,SAAC5I,EAAO6I,GAChD,IAAMC,EAAQhN,OACTkE,MADSzI,OAEX6D,EAFWU,OAGPkE,EAAM5E,IACNmN,EAAeK,MAMtB,OAHIG,IAAYJ,KACdG,EAAS1N,GAAK+E,MAAQwI,EAAQ3I,EAAO6I,EAAQ7I,EAAM5E,GAAK+E,QAEnD2I,IAGqDE,CAAO5N,iECpCtD6N,GACb9G,IAAK,yCACL+G,UAAW,8BACXC,WACEC,QAAS,QACTC,QAAS,eACTC,YAAa,OAEfC,aAAa,GCRAC,GACbrH,IAAK,gCACLgH,WACEC,QAAS,QACTC,QAAS,eACTC,YAAa,MAEfC,aAAa,GCPAE,GACbtH,IAAK,iCACLgH,WACEC,QAAS,QACTC,QAAS,eACTC,YAAa,MAEfC,aAAa,GCPAG,GACbvH,IAAK,6BACL+G,UAAW,yBACXC,WACEC,QAAS,QACTC,QAAS,eACTC,YAAa,QAEfC,aAAa,8jBCHf,IAAMI,EACC,MADDA,EAEA,KAFAA,EAGC,MAHDA,EAIE,OA0COC,IA3BM,WAA0B,IAAzB1H,EAAyB3M,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAnBoU,EACpBE,EAASC,EAEf,OAAI5H,IAAQyH,EACV7N,OACK+N,GACAE,GAIH7H,IAAQyH,EACV7N,OACK+N,GACAG,GAIH9H,IAAQyH,EACV7N,OACK+N,GACAI,GAIAJ,EAGMD,CAAahT,OAAOsL,wCCnDnCpN,EAAAC,EAAAC,EAAA,sBAAAkV,IAAApV,EAAAC,EAAAC,EAAA,sBAAAmV,IAAArV,EAAAC,EAAAC,EAAA,sBAAAoV,IAAAtV,EAAAC,EAAAC,EAAA,sBAAAqV,IAAAvV,EAAAC,EAAAC,EAAA,sBAAAsV,IAAAxV,EAAAC,EAAAC,EAAA,sBAAAuV,IAAAzV,EAAAC,EAAAC,EAAA,sBAAAwV,IAAA1V,EAAAC,EAAAC,EAAA,sBAAAyV,IAAA3V,EAAAC,EAAAC,EAAA,sBAAA0V,IAAA5V,EAAAC,EAAAC,EAAA,sBAAA2V,IAAA7V,EAAAC,EAAAC,EAAA,sBAAA4V,IAAA9V,EAAAC,EAAAC,EAAA,sBAAA6V,IAAA/V,EAAAC,EAAAC,EAAA,sBAAA8V,IAAAhW,EAAAC,EAAAC,EAAA,sBAAA+V,IAAA,IAAAjI,EAAAhO,EAAA,QAAAkW,EAAAlW,EAAA,QAQaoV,EAAQ,SAAApQ,GAAA,IAAGmR,EAAHnR,EAAGmR,SAAUC,EAAbpR,EAAaoR,SAAUC,EAAvBrR,EAAuBqR,wBAAyBC,EAAhDtR,EAAgDsR,UAAhD,OACnB1T,KAAM,aACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,kBACLI,MACEyI,WACAC,WACAC,0BACAC,aAEF/I,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZnB,EAAM3H,SAAW,iBAAM,cAEhB,IAAM4H,EAAS,SAAAjP,GAAA,IAAGkQ,EAAHlQ,EAAGkQ,UAAWE,EAAdpQ,EAAcoQ,aAAd,OACpB5T,KAAM,cACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,mBACLI,MACE4I,YACAE,gBAEFjJ,WACAC,OAAQ,SAGZP,UAEFoI,EAAO5H,SAAW,iBAAM,eAEjB,IAAM6H,EAAU,SAAA3O,GAAA,IAAG8P,EAAH9P,EAAG8P,cAAH,OACrB7T,KAAM,qBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,kBACLI,MACE8I,aAAcC,GAEhBlJ,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZjB,EAAQ7H,SAAW,iBAAM,sBAElB,IAAM8H,EAAS,SAAAlO,GAAA,IACpBqP,EADoBrP,EACpBqP,MACAN,EAFoB/O,EAEpB+O,SACAC,EAHoBhP,EAGpBgP,wBACAM,EAJoBtP,EAIpBsP,mBAJoB,OAMpB/T,KAAM,eACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,gBACLI,MACEgJ,QACAN,WACAC,0BACAM,sBAEFpJ,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZhB,EAAO9H,SAAW,iBAAM,gBAEjB,IAAM+H,EAAiB,SAAA1N,GAAA,IAAG4O,EAAH5O,EAAG4O,MAAOL,EAAVvO,EAAUuO,wBAAV,OAC5BzT,KAAM,uBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,+BACLI,MACEgJ,QACAL,2BAEF9I,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZf,EAAe/H,SAAW,iBAAM,wBAEzB,IAAMgI,EAAuB,SAAAjV,GAAK,OACvCoC,KAAM,8BACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,sCACLI,MACElN,SAEF+M,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZd,EAAqBhI,SAAW,iBAAM,+BAE/B,IAAMiI,EAAgB,SAAAkB,GAAA,IAC3BR,EAD2BQ,EAC3BR,SACA5V,EAF2BoW,EAE3BpW,MAF2B,OAI3BoC,KAAM,sBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,gCACLI,MACE0I,WACA5V,SAEF+M,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZb,EAAcjI,SAAW,iBAAM,uBAExB,IAAMkI,EAAe,SAAAkB,GAAA,IAAGrW,EAAHqW,EAAGrW,MAAH,OAC1BoC,KAAM,qBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,qCACLI,MACElN,SAEF+M,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZZ,EAAalI,SAAW,iBAAM,sBAEvB,IAAMmI,EAAc,SAAAkB,GAAA,IAAGtW,EAAHsW,EAAGtW,MAAH,OACzBoC,KAAM,oBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,oCACLI,MACElN,SAEF+M,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZX,EAAYnI,SAAW,iBAAM,qBAEtB,IAsBMoI,EAA0B,SAAAkB,GAAA,IAAG9R,EAAH8R,EAAG9R,KAAH,OACrCrC,KAAM,kCACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAG,mDAAAlI,OAAqDwK,aAAqB3K,UAC7EsI,WACAC,OAAQ,QAGZP,MACEsJ,QAAQ,KAGZV,EAAwBpI,SAAW,iBAAM,mCAElC,IAAMqI,EAA8B,SAAAkB,GAAA,IACzCC,EADyCD,EACzCC,OACAC,EAFyCF,EAEzCE,eACAC,EAHyCH,EAGzCG,QACA1K,EAJyCuK,EAIzCvK,gBACA2K,EALyCJ,EAKzCI,WALyC,OAOzCxU,KAAM,8BACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,6BACLI,MACEuJ,SACAC,iBACAC,UACA1K,kBACA2K,cAEF7J,WACAC,OAAQ,QAGZP,MACEsJ,QAAQ,KAGZT,EAA4BrI,SAAW,iBAAM,+BAEtC,IAAMsI,EAAqB,SAAAsB,GAAA,IAAG7W,EAAH6W,EAAG7W,MAAH,OAChCoC,KAAM,4BACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,8BACLI,MACElN,SAEF+M,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZR,EAAmBtI,SAAW,iBAAM,6BAE7B,IAAMuI,EAAa,SAACsB,EAADC,GAAA,IAAW5U,EAAX4U,EAAW5U,KAAM+T,EAAjBa,EAAiBb,MAAgBL,EAAjCkB,EAAwBC,QAAxB,OACxB5U,KAAM,mBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAG,2BAAAlI,OAA6BkS,EAA7B,cACH5J,MACE/K,OACA+T,QACAL,2BAEF9I,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZP,EAAWvI,SAAW,iBAAM,oBAErB,IAAMwI,EAAkB,SAAAqB,GAAM,OACnC1U,KAAM,0BACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAG,2BAAAlI,OAA6BkS,EAA7B,iBACH/J,WACAC,OAAQ,SAGZP,UAEFgJ,EAAgBxI,SAAW,iBAAM,wkCCxRjC,IAAMQ,EAAeC,YAAmB,QAElCuJ,EAASxJ,EAAa,UACfyJ,EAAiBzJ,EAAa,oBAC9B0J,EAAyB1J,EAAa,4BAC7C2J,EAAa3J,EAAa,eAEnB4J,EAAU,SAAA7S,GAAA,IAAG0R,EAAH1R,EAAG0R,MAAON,EAAVpR,EAAUoR,SAAUoB,EAApBxS,EAAoBwS,QAApB,OAAkC,SAACjJ,EAAUC,GAClE,IAAMsB,GAAeqG,SAAUO,EAAON,WAAUC,wBAAyBmB,GACzE,OAAOjJ,EAAS6G,YAAMtF,IACnBzH,KAAK,SAAAjC,GAA0D,IAAtB0R,EAAsB1R,EAAvDiF,MAAS5G,OAAUsT,aAAoCC,EAC7C/V,IAAaf,gBAAgB4W,GAAtCG,EADsDD,EACtDC,KAER,OAAO1J,EAAS1F,eACbR,KAAK,SAAA1B,GAAwC,IAApByE,EAAoBzE,EAArC0E,MAAS5G,OAEhB,IAAK2G,EAAY8M,eAEf,OAAO9M,EAGTmD,EAASoJ,EAAuBQ,YAAc/M,KAE9CiJ,IAAUe,OAAQ6B,OAAQ7L,EAAY6L,OAAQmB,YAAaC,IAAmBjD,QAC9E7G,EAASkJ,GACPjX,OACEyX,eAKT5P,KAAK,WAEJ,IAAIiQ,EAAmBC,YAAiB/J,KAAY0J,eAChDI,IAEE/O,YAA+BiF,KACjCD,EAASiK,eAAqBnQ,KAAK,SAAAhB,GAA2BA,EAAxBgE,MAAS5G,OAC7CgU,IAAQC,KAAK5S,IAAOyO,QAAQoE,UAAUC,QAGvCxF,MAAM,SAAA1Q,GACL4L,YAAY5L,KAGPiH,YAAwB6E,KAC/BiK,IAAQC,KAAK5S,IAAOyO,QAAQsE,MAE5BJ,IAAQC,KAAK5S,IAAOyO,QAAQuE,aAMzBC,EAAW,SAAAjR,GAAA,IACrB4O,EADqB5O,EACrB4O,MACAN,EAFqBtO,EAErBsO,SACAoB,EAHqB1P,EAGrB0P,QAHqB,OAKxB,SAACjJ,EAAUC,GACT,IAAMtD,EAAQsD,IACRwK,GACJtC,QACAN,WACAC,wBAAyBmB,EACzBb,mBAAoBsC,YAAkB/N,IAExC,OAAOqD,EAASgH,YAAOyD,IACpB3Q,KAAK,SAAAuO,GAA2BA,EAAxBvL,MAAS5G,WAITyU,EAAmB,SAAArC,GAAA,IAAGH,EAAHG,EAAGH,MAAOc,EAAVX,EAAUW,QAAV,OAC5B,SAAAjJ,GAAQ,OAAIA,EAASiH,aAAiBkB,QAAOL,wBAAyBmB,OAE7D2B,EAAkB,SAAArJ,GAAU,OAAI,SAAAvB,GAAQ,OAAIA,EAASmH,YAAc5F,MAEnEsJ,EAA4B,SAAAtC,GAAA,IACvCG,EADuCH,EACvCG,OACAC,EAFuCJ,EAEvCI,eACAC,EAHuCL,EAGvCK,QACA1K,EAJuCqK,EAIvCrK,gBACA2K,EALuCN,EAKvCM,WALuC,OAMnC,SAAA7I,GACJ,OAAOA,EAASuH,aACdmB,SACAC,iBACAC,UACA1K,kBACA2K,kBAISiC,EAAgC,kBAAM,SAAA9K,GACjD,OAAOA,EAAS1F,eAAkBR,KAAK,WACrCkG,EAASoJ,EAAuBpT,IAAmB+U,YAIjDlK,GAAeC,KAAA5M,IAAA4M,EAClBoI,EAAS,SAACvM,EAADqO,GAAA,IAAUtY,EAAVsY,EAAUtY,QAAV,OAAA+F,OACLkE,OACH1K,MAAKwG,OACAkE,EAAM1K,WACT6K,MAAKrE,OACAkE,EAAM1K,MAAM6K,OACZpK,EAAQT,aAPEiC,IAAA4M,EAWlBiG,IAAQ7H,WAAa6F,YAAe,SACnC,KACA,SAACpI,EAAD6L,GAAA,IAAqBtS,EAArBsS,EAAU9V,QAAWwD,OAArB,OACE+U,OAAQ/U,EAAOsT,aACfzC,QAAS7Q,EAAOgS,gBAElB,SAAAvL,GAAK,OAAAlE,OACAkE,EAAM1K,MAAM6K,WACfmO,OAAQ,KACRlE,QAAS,KACT2C,KAAM,WArBSxV,IAAA4M,EAwBlB+F,IAAM3H,WAAa6F,YAAe,SACjC,KACA,SAACpI,EAAD8L,GAAA,IAAqBvS,EAArBuS,EAAU/V,QAAWwD,OAArB,OACE+U,OAAQ/U,EAAOsT,aACfzC,QAAS7Q,EAAOgS,gBAElB,SAAAvL,GAAK,OAAAlE,OACAkE,EAAM1K,MAAM6K,WACfmO,OAAQ,KACRlE,QAAS,KACT2C,KAAM,WAlCSxV,IAAA4M,EAqClBqI,EAAejK,WAAa,SAACvC,EAADmM,GAAA,IAAUpW,EAAVoW,EAAUpW,QAAV,OAAA+F,OACxBkE,OACH1K,MAAKwG,OACAkE,EAAM1K,WACT6K,MAAKrE,OACAkE,EAAM1K,MAAM6K,WACf4M,KAAMhX,UA3COwB,IAAA4M,EA+ClB/K,IAAqB,SAAA4G,GAAK,OAAAlE,OACtBkE,OACH1K,OACEmT,QAAQ,EACRD,SAAS,EACTrI,MAAO,MAEToO,iBAAkB,SAtDDhX,IAAA4M,EAwDlBuI,EAAa,SAAA1M,GAAK,OAAAlE,OACdkE,OACHxI,MAAO,SA1DUD,IAAA4M,EA4DlBsI,EAAuBlK,WAAa,SAACvC,EAADqM,GAAA,IAAUtW,EAAVsW,EAAUtW,QAAV,OAAA+F,OAChCkE,OACHuO,iBAAkBxY,MA9DDoO,GA4ENkE,gBAAqBnE,GATlC5O,OACE6K,OACE4M,KAAM,OAGVvV,MAAO,KACP+W,iBAAkB,+GCtMdxL,EAAeC,YAAmB,iBAE3BwL,EAAqBzL,EAAa,yBAEzCmB,EAAkB3M,OACrBiX,EAAmBjM,WAAa,SAACvC,EAADlG,GAAA,IAAU/D,EAAV+D,EAAU/D,QAAV,OAAwBA,IAK5CyO,gBAFM,KAEsBN,uwBCNpC,IAAMuK,EAAwC,SAAAzO,GAAK,OAAIA,EAAM0O,cACvDC,EAAU,SAAA3O,GAAK,OAAIyO,EAAQzO,GAAO4O,MAClCC,EAAgB,SAAA7O,GAAK,OAAIxG,IAAKiV,EAAQzO,IAAS,QAAS,SAAU/K,MAIlE6Z,EAAsB,SAAA9O,GAAK,OAAIxG,IAAKiV,EAAQzO,IAAS,cAAe,SAAU/K,MAG9E8Z,EAAiB,SAAA/O,GAAK,OAAIxG,IAAKiV,EAAQzO,IAAS,cAAe,YAAY,IAE3EwD,EAAkBwL,yBANF,SAAAhP,GAAK,OAAIyO,EAAQzO,GAAOiP,YAGvB,SAAAjP,GAAK,OAAIxG,IAAKsV,EAAoB9O,GAAQ,QAAS/K,MAJzD,SAAA+K,GAAK,OAAI6O,EAAc7O,GAAOkP,OAASja,KAW7D,SAACga,EAAYE,EAAaD,GAA1B,OAAApT,SACKqT,GACAF,OACHC,qzBCfJ,IAAMnM,EAAeC,YAAmB,QAE3BoM,EAAerM,EAAa,iBAC5BsM,EAA+BtM,EAAa,yBAC5CuM,EAA+BvM,EAAa,yBAEnDmB,GAAeC,KAAA5M,IAAA4M,EAClBxG,IAAe4E,WAAa6F,YAAe,eAC1C,KACA,SAACpI,EAADlG,GAAA,IAAqBP,EAArBO,EAAU/D,QAAWwD,OAArB,OAAoCA,GACpC,QAJiBhC,IAAA4M,EAMlBiL,EAAa7M,WAAa,SAAAvC,GAAK,OAAAlE,OAC3BkE,OACHxB,kBAAkB,MARDjH,IAAA4M,EAUlBkL,EAA6B9M,WAAa,SAAAvC,GAAK,OAAAlE,OAC3CkE,OACHpC,4BAA4B,MAZXrG,IAAA4M,EAclBmL,EAA6B/M,WAAa,SAAAvC,GAAK,OAAAlE,OAC3CkE,OACHpC,4BAA4B,MAhBXrG,IAAA4M,EAkBlB/K,IAAqB,SAAA4G,GAAK,OAAAlE,OACtByT,OACH/Q,iBAAkBwB,EAAMxB,qBApBPjH,IAAA4M,EAsBlBpG,IAAmBwE,WAAa6F,YAAe,uBAC9C,KACA,SAACpI,EAAD9E,GAAA,IAAqB3B,EAArB2B,EAAUnF,QAAWwD,OAArB,OAAoCA,GACpC,QAzBiBhC,IAAA4M,EA2BlBnG,IAAkBuE,WAAa6F,YAAe,kBAC7C,KACA,SAACpI,EAADvE,GAAA,IAAqBlC,EAArBkC,EAAU1F,QAAWwD,OAArB,OAAoCA,GACpC,QA9BiB4K,GAkCRoL,GACXrP,eACA1B,kBAAkB,EAClBgR,qBACErP,UAEFsP,gBACEtP,UAEFvC,4BAA4B,GAGfyK,gBAAqBnE,EAAiBqL,wuBC3DrD,IAAMxM,EAAeC,YAAmB,iBAE3B0M,EAAQ3M,EAAa,SACrB4M,EAAkB5M,EAAa,iBAC/B6M,EAAa7M,EAAa,eAEjCmB,GAAeC,KAAA5M,IAAA4M,EAClBuL,EAAMnN,WAAa,SAACvC,EAADlG,GAAA,IAAU/D,EAAV+D,EAAU/D,QAAV,OAAA+F,OACfkE,OACH6P,kBAAmB9Z,MAHFwB,IAAA4M,EAKlBwL,EAAgBpN,WAAa,SAACvC,EAAD9E,GAAA,IAAUnF,EAAVmF,EAAUnF,QAAV,OAAA+F,OACzBkE,OACH8P,aAAc/Z,MAPGwB,IAAA4M,EASlByL,EAAWrN,WAAa,SAACvC,EAADvE,GAAA,IAAU1F,EAAV0F,EAAU1F,QAAV,OAAA+F,OACpBkE,OACH+P,eAAgBha,MAXCoO,GAqBNK,iBALbqL,qBACAC,gBACAC,eAAgB,MAGyB7L,sCClC3CpP,EAAAC,EAAAC,EAAA,sBAAAgb,IAAAlb,EAAAC,EAAAC,EAAA,sBAAAib,IAAA,IAAAzQ,EAAA1K,EAAA,QAAA2K,EAAA3K,EAAA4K,EAAAF,GAEawQ,EAAkB,SAAAE,GAAI,OAAI1W,IAAK0W,EAAM,uBAAuB,IAC5DD,EAAoC,SAAAC,GAAI,OAAI1W,IAAK0W,EAAM,6BAA6B,2ICHrFC,EAkCAC,EAkBAC,EAKAlD,mJAzDAgD,+lCAkCAC,4kBAkBAC,6EAKAlD,4LAUL,IAEKmD,EAaAC,EAfCC,EAAY,+BAEbF,0SAaAC,2aC/EL,IAAME,EAAc,SAAA3W,GAAA,IAAG4W,EAAH5W,EAAG4W,gBAAiBC,EAApB7W,EAAoB6W,SAAUC,EAA9B9W,EAA8B8W,YAA9B,SAAA1W,OACtBsW,EADsB,KAAAtW,OACTwW,EADS,KAAAxW,OACUyW,EADV,KAAAzW,OACsB0W,IAEpCC,EAAoB,WAAoE,IAAA3V,EAAA3F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,MAAAub,EAAA5V,EAAjEyV,gBAAiE,IAAAG,EAAtDla,OAAOma,SAASJ,SAAsCG,EAAAE,EAAA9V,EAA5B0V,mBAA4B,IAAAI,EAAd,GAAcA,EACnG,OAAIL,IAAa/V,IAAOqW,KAAKC,OAEzBR,gBAAiBvD,EAAmBjD,MACpCyG,WACAC,YAAaA,GAAeL,EAAcrG,OAG1CyG,IAAa/V,IAAOqW,KAAKA,MAEzBP,gBAAiBvD,EAAmB8D,KACpCN,WACAC,YAAaA,GAAeL,EAAcU,MAG1CN,IAAa/V,IAAOqW,KAAK5G,QAEzBqG,gBAAiBvD,EAAmBgE,SACpCR,WACAC,YAAaA,GAAeL,EAAclG,QAG1CsG,IAAa/V,IAAOqW,KAAKG,WAEzBV,gBAAiBvD,EAAmBkE,QACpCV,WACAC,YAAaA,GAAeL,EAAcc,SAG1CV,IAAa/V,IAAOyO,QAAQuE,QAE5B8C,gBAAiBvD,EAAmBgE,SACpCR,WACAC,eAGAD,IAAa/V,IAAOqW,KAAKxG,aAAaiD,MAEtCgD,gBAAiBvD,EAAmBmE,kBACpCX,WACAC,YAAaL,EAAc9F,eAK3B7P,IAAOyO,QAAQsE,KACf/S,IAAOyO,QAAQkI,WAAW7D,KAC1B9S,IAAOyO,QAAQmI,SACf5W,IAAOyO,QAAQkI,WAAWE,gBAC1B7W,IAAOyO,QAAQoE,UAAUC,KACzB9S,IAAOyO,QAAQoE,UAAUW,MACzBxT,IAAOyO,QAAQoE,UAAUiE,SACzB9W,IAAOyO,QAAQsI,WAAWjE,KAC1B9S,IAAOyO,QAAQsI,WAAWvD,MAC1BxT,IAAOyO,QAAQsI,WAAWD,SAC1B9W,IAAOyO,QAAQsI,WAAWC,wBAC1BC,KAAK,SAAAC,GAAS,OAAIA,IAAcnB,KAGhCD,gBAAiBvD,EAAmB4E,UACpCpB,WACAC,YAAaA,GAAeL,EAAcwB,WAG1CpB,IAAa/V,IAAOqW,KAAK3G,gBAEzBoG,gBAAiBvD,EAAmB7C,eACpCqG,WACAC,YAAaA,GAAeL,EAAcjG,iBAK5CoG,gBAAiB,GACjBC,WACAC,gBAISoB,EAA0B,SAAAC,GAAS,OAAI,SAACC,GAAuB,IAAhBC,EAAgB5c,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAP,GACnE,OAAO0c,EAAYC,EAAQC,IAGhBC,EAA2B,eAACjS,EAAD5K,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAS,GAAT,OAAgB4K,EAAMkS,cAAc9b,QAAQ,IAAK,6kBCtDzF,IAAM+b,EAAoB,SAAAtS,GAAK,OAAIoS,EAAyBzD,YAAQ3O,KAC9DuS,EAA8B,SAAAvS,GAAK,OAAIoS,EAAyBnT,YAAoBe,KACpFwS,EAAgC,SAAAxS,GAAK,OAAIoS,EAAyBK,YAAoBzS,KAEtF0S,aAIJ,SAAAA,EAAaC,GAAqC,IAAAC,EAAAjd,KAAAkd,IAAAld,KAAA+c,GAAAvK,IAAAxS,KAAA,mBAHK,MAGLwS,IAAAxS,KAAA,WAF/B,MAE+BwS,IAAAxS,KAAA,yBAajB,WAAM,IAAAmE,EAC/BgZ,EAAwBd,EAAwBe,YAAmBH,EAAKtP,aAC9E,OAAAxJ,KAAAqO,IAAArO,EACGqW,EAAkB6C,WAAaF,EAAsB7U,YAAU2U,EAAKtP,cADvE6E,IAAArO,EAEGqW,EAAkB8C,eACjBH,EAAsBzC,EAAkB6C,SAAU7C,EAAkB8C,cAHxEhL,IAAArO,EAIGqW,EAAkBiD,6BACjBN,EAAsBP,EAA4BK,EAAKtP,cAL3D6E,IAAArO,EAMGqW,EAAkBkD,aAAef,EAAkBM,EAAKtP,aAN3D6E,IAAArO,EAOGqW,EAAkBmD,aAAe,OAPpCnL,IAAArO,EAQGqW,EAAkBoD,WAAa,MARlCpL,IAAArO,EASGqW,EAAkBqD,SAAWhD,GAThC1W,IAfgDqO,IAAAxS,KAAA,4BA4Bd,WAAM,IAAAuF,EAClC4X,EAAwBd,EAAwBe,YAAmBH,EAAKtP,aAC9E,OAAApI,KAAAiN,IAAAjN,EACGiV,EAAkB6C,WAAaF,EAAsB7U,YAAU2U,EAAKtP,cADvE6E,IAAAjN,EAEGiV,EAAkB8C,eACjBH,EAAsBzC,EAAkB6C,SAAU7C,EAAkB8C,cAHxEhL,IAAAjN,EAIGiV,EAAkBiD,6BACjBN,EAAsBP,EAA4BK,EAAKtP,cAL3D6E,IAAAjN,EAMGiV,EAAkBkD,aAAef,EAAkBM,EAAKtP,aAN3D6E,IAAAjN,EAOGiV,EAAkBmD,aAAe,OAPpCnL,IAAAjN,EAQGiV,EAAkBoD,WAAa,MARlCpL,IAAAjN,EASGiV,EAAkBqD,SAAWhD,GAThCrI,IAAAjN,EAUGiV,EAAkBsD,qBACjBX,EAAsBP,EAA4BK,EAAKtP,cAX3D6E,IAAAjN,EAYGiV,EAAkB1E,mBAAqBqH,EAAsB/T,YAAoB6T,EAAKtP,cAZzF6E,IAAAjN,EAaGiV,EAAkBuD,0BAA4BZ,EAAsBzT,YAAmBuT,EAAKtP,cAb/F6E,IAAAjN,EAcGiV,EAAkBwD,yBAA2Bb,EAAsBzT,YAAmBuT,EAAKtP,cAd9F6E,IAAAjN,EAeGiV,EAAkByD,eAAiBd,EAAsBxT,YAAwBsT,EAAKtP,cAfzF6E,IAAAjN,EAgBGiV,EAAkB0D,uBACjBf,EAAsBvT,YAAgCqT,EAAKtP,cAjB/DpI,IA9BgDiN,IAAAxS,KAAA,qCAmDL,WAAM,IAAA8F,EAC3CqX,EAAwBd,EAAwBe,YAAmBH,EAAKtP,aAC9E,OAAA7H,KAAA0M,IAAA1M,EACG0U,EAAkB6C,WAAaF,EAAsB7U,YAAU2U,EAAKtP,cADvE6E,IAAA1M,EAEG0U,EAAkB8C,eACjBH,EAAsBzC,EAAkB6C,SAAU7C,EAAkB8C,cAHxEhL,IAAA1M,EAIG0U,EAAkBiD,6BACjBN,EAAsBP,EAA4BK,EAAKtP,cAL3D6E,IAAA1M,EAMG0U,EAAkBkD,aAAef,EAAkBM,EAAKtP,aAN3D6E,IAAA1M,EAOG0U,EAAkB2D,gBAAkB,IAPvC3L,IAAA1M,EAQG0U,EAAkB4D,cAAgB,OARrC5L,IAAA1M,EASG0U,EAAkB6D,cAAgB,IATrC7L,IAAA1M,EAUG0U,EAAkB8D,QAAUnB,EAAsBxT,YAAwBsT,EAAKtP,cAVlF6E,IAAA1M,EAWG0U,EAAkB+D,iBAAmB,IAXxC/L,IAAA1M,EAYG0U,EAAkBgE,cAAgB,IAZrChM,IAAA1M,EAaG0U,EAAkBiE,SAAW,IAbhCjM,IAAA1M,EAcG0U,EAAkBkE,WAAa,IAdlClM,IAAA1M,EAeG0U,EAAkBmD,aAAe,OAfpCnL,IAAA1M,EAgBG0U,EAAkBoD,WAAa,MAhBlCpL,IAAA1M,EAiBG0U,EAAkBqD,SAAWhD,GAjBhCrI,IAAA1M,EAkBG0U,EAAkBsD,qBACjBX,EAAsBP,EAA4BK,EAAKtP,cAnB3D6E,IAAA1M,EAoBG0U,EAAkB1E,mBAAqBqH,EAAsB/T,YAAoB6T,EAAKtP,cApBzF6E,IAAA1M,EAqBG0U,EAAkBuD,0BAA4BZ,EAAsBzT,YAAmBuT,EAAKtP,cArB/F6E,IAAA1M,EAsBG0U,EAAkBwD,yBAA2Bb,EAAsBzT,YAAmBuT,EAAKtP,cAtB9F6E,IAAA1M,EAuBG0U,EAAkByD,eAAiBd,EAAsBxT,YAAwBsT,EAAKtP,cAvBzF6E,IAAA1M,EAwBG0U,EAAkB0D,uBACjBf,EAAsBvT,YAAgCqT,EAAKtP,cAzB/D6E,IAAA1M,EA0BG0U,EAAkBmE,UAAY,cA1BjCnM,IAAA1M,EA2BG0U,EAAkBoE,UAAY,gCA3BjC9Y,IApDA9F,KAAKgd,iBAAmBA,2CAGbrP,GAEX,OADA3N,KAAK2N,SAAWA,EACT3N,KAAKgd,iBAAiB6B,MAC3BpL,QAASlH,IAAIiH,UAAUC,QACvBC,QAASnH,IAAIiH,UAAUE,QACvBC,YAAapH,IAAIiH,UAAUG,sDA4EP,IAAAmL,EACtB9e,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAK+e,8BADVD,KAAAtM,IAAAsM,EAEGtE,EAAkBO,gBAAkBvD,EAAmBjD,OAF1D/B,IAAAsM,EAGGtE,EAAkBwE,SAAWlE,EAAYI,MAH5C1I,IAAAsM,EAIGtE,EAAkByE,iBAAmBtE,EAAoBpG,OAJ5D/B,IAAAsM,EAKGtE,EAAkB0E,YAActE,EAAcrG,OALjDuK,+CASwB,IAAAK,EACxBnf,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAK+e,8BADVI,KAAA3M,IAAA2M,EAEG3E,EAAkBO,gBAAkBvD,EAAmBkE,SAF1DlJ,IAAA2M,EAGG3E,EAAkBwE,SAAWlE,EAAYI,MAH5C1I,IAAA2M,EAIG3E,EAAkByE,iBAAmBtE,EAAoBc,WAJ5DjJ,IAAA2M,EAKG3E,EAAkB0E,YAActE,EAAcc,SALjDyD,4CASqB,IAAAC,EACrBpf,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAK+e,8BADVK,KAAA5M,IAAA4M,EAEG5E,EAAkBO,gBAAkBvD,EAAmB8D,MAF1D9I,IAAA4M,EAGG5E,EAAkBwE,SAAWlE,EAAYI,MAH5C1I,IAAA4M,EAIG5E,EAAkByE,iBAAmBtE,EAAoBW,MAJ5D9I,IAAA4M,EAKG5E,EAAkB0E,YAActE,EAAcU,MALjD8D,iDAS0B,IAAAC,EAC1Brf,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAK+e,8BADVM,KAAA7M,IAAA6M,EAEG7E,EAAkBO,gBAAkBvD,EAAmB4E,WAF1D5J,IAAA6M,EAGG7E,EAAkBwE,SAAWlE,EAAYI,MAH5C1I,IAAA6M,EAIG7E,EAAkByE,iBAAmBtE,EAAoByB,WAJ5D5J,IAAA6M,EAKG7E,EAAkB0E,YAActE,EAAcwB,WALjDiD,8CASuB,IAAAC,EACvBtf,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAKuf,iCADVD,KAAA9M,IAAA8M,EAEG9E,EAAkBO,gBAAkBvD,EAAmBgE,UAF1DhJ,IAAA8M,EAGG9E,EAAkBwE,SAAWlE,EAAYI,MAH5C1I,IAAA8M,EAIG9E,EAAkByE,iBAAmBtE,EAAoBjG,QAJ5DlC,IAAA8M,EAKG9E,EAAkB0E,YAActE,EAAclG,QALjDlC,IAAA8M,EAMG9E,EAAkB1E,mBAAqBsC,YAAkBpY,KAAK2N,aANjE6E,IAAA8M,EAOG9E,EAAkBsD,qBAAuBjB,EAA8B7c,KAAK2N,aAP/E6E,IAAA8M,EAQG9E,EAAkBuD,0BAA4ByB,YAAqBxf,KAAK2N,aAR3E6E,IAAA8M,EASG9E,EAAkBwD,yBAA2BwB,YAAqBxf,KAAK2N,aAT1E2R,gEAayC,IAAAG,EACzCzf,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAKuf,iCADVE,KAAAjN,IAAAiN,EAEGjF,EAAkBO,gBAAkBvD,EAAmBgE,UAF1DhJ,IAAAiN,EAGGjF,EAAkBwE,SAAWlE,EAAYI,GAAoBD,YAAaL,EAAc8E,uBAH3FlN,IAAAiN,EAIGjF,EAAkByE,iBAAmBtE,EAAoB+E,oBAJ5DlN,IAAAiN,EAKGjF,EAAkB0E,YAActE,EAAc8E,oBALjDD,yDASkC,IAAAE,EAClC3f,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAKuf,iCADVI,KAAAnN,IAAAmN,EAEGnF,EAAkBO,gBAAkBvD,EAAmBgE,UAF1DhJ,IAAAmN,EAGGnF,EAAkBwE,SAAWlE,EAAYI,GAAoBD,YAAaL,EAAcgF,gBAH3FpN,IAAAmN,EAIGnF,EAAkByE,iBAAmBtE,EAAoBiF,aAJ5DpN,IAAAmN,EAKGnF,EAAkB0E,YAActE,EAAcgF,aALjDD,6DASsC,IAAAE,EACtC7f,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAKuf,iCADVM,KAAArN,IAAAqN,EAEGrF,EAAkBO,gBAAkBvD,EAAmBgE,UAF1DhJ,IAAAqN,EAGGrF,EAAkBwE,SAAWlE,EAAYI,GAAoBD,YAAaL,EAAckF,oBAH3FtN,IAAAqN,EAIGrF,EAAkByE,iBAAmBtE,EAAoBmF,iBAJ5DtN,IAAAqN,EAKGrF,EAAkB0E,YAActE,EAAckF,iBALjDD,2DASoC,IAAAE,EACpC/f,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAKggB,0CADVD,KAAAvN,IAAAuN,EAEGvF,EAAkBO,gBAAkBvD,EAAmBmE,mBAF1DnJ,IAAAuN,EAGGvF,EAAkBwE,SAAWlE,EAAYI,MAH5C1I,IAAAuN,EAIGvF,EAAkByE,iBAAmBtE,EAAoB7F,cAJ5DtC,IAAAuN,EAKGvF,EAAkB0E,YAActE,EAAc9F,cALjDiL,mDAS2B,IAAAE,EAC3BjgB,KAAKgd,iBAAiBhF,KAAtB7R,OACKnG,KAAK+e,8BADVkB,KAAAzN,IAAAyN,EAEGzF,EAAkBoE,UAAY,SAFjCpM,IAAAyN,EAGGzF,EAAkBmE,UAAY,yBAHjCnM,IAAAyN,EAIGzF,EAAkB0F,eAAiB,gDAJtC1N,IAAAyN,EAKGzF,EAAkBO,gBAAkBvD,EAAmB8D,MAL1D9I,IAAAyN,EAMGzF,EAAkBwE,SAAWlE,EAAYI,MAN5C1I,IAAAyN,EAOGzF,EAAkByE,iBAAmBtE,EAAoBW,MAP5D9I,IAAAyN,EAQGzF,EAAkB0E,YAActE,EAAcU,MARjD2E,0CAYiF,IAAAE,EAA9DlF,EAA8DzU,EAA9DyU,YAAagE,EAAiDzY,EAAjDyY,iBAAkBlE,EAA+BvU,EAA/BuU,gBAAiB/W,EAAcwC,EAAdxC,WAC/Doc,EAAoBpgB,KAAK+e,uBACzBhE,IAAoBvD,EAAmBgE,SACzC4E,EAAoBpgB,KAAKuf,0BAChBxE,IAAoBvD,EAAmBmE,oBAChDyE,EAAoBpgB,KAAKggB,oCAE3BhgB,KAAKgd,iBAAiBqD,KAAtBla,OACKia,SADLD,KAAA3N,IAAA2N,EAEG3F,EAAkBO,gBAAkBA,GAFvCvI,IAAA2N,EAGG3F,EAAkBwE,SAAWlE,EAAYI,GAAoBD,kBAHhEzI,IAAA2N,EAIG3F,EAAkByE,iBAAmBA,GAJxCzM,IAAA2N,EAKG3F,EAAkB0E,YAAcjE,GALnCzI,IAAA2N,EAMG3F,EAAkB8F,iBAAmB,eANxC9N,IAAA2N,EAOG3F,EAAkB+F,UAAY,yBAPjC/N,IAAA2N,EAQG3F,EAAkBgG,cAAgBxc,EAAW8C,KAAK,MARrDqZ,+CAYqC,IAAdnc,EAAciD,EAAdjD,WACvBhE,KAAKygB,WACHxF,YAAazD,EAAmBjD,MAChC0K,iBAAkBtE,EAAoBpG,MACtCwG,gBAAiBvD,EAAmBjD,MACpCvQ,0DAIoC,IAAdA,EAAc+R,EAAd/R,WACxBhE,KAAKygB,WACHxF,YAAazD,EAAmBgE,SAChCyD,iBAAkBtE,EAAoBjG,OACtCqG,gBAAiBvD,EAAmBgE,SACpCxX,6DAIuC,IAAdA,EAAcgS,EAAdhS,WAC3BhE,KAAKygB,WACHxF,YAAazD,EAAmBkE,QAChCuD,iBAAkBtE,EAAoBc,UACtCV,gBAAiBvD,EAAmBkE,QACpC1X,sEAIgD,IAAdA,EAAciS,EAAdjS,WACpChE,KAAKygB,WACHxF,YAAazD,EAAmBgE,SAChCyD,iBAAkBtE,EAAoB+E,mBACtC3E,gBAAiBvD,EAAmBgE,SACpCxX,+DAIyC,IAAdA,EAAc0U,EAAd1U,WAC7BhE,KAAKygB,WACHxF,YAAazD,EAAmBgE,SAChCyD,iBAAkBtE,EAAoBiF,YACtC7E,gBAAiBvD,EAAmBgE,SACpCxX,mEAI6C,IAAdA,EAAckS,EAAdlS,WACjChE,KAAKygB,WACHxF,YAAazD,EAAmBgE,SAChCyD,iBAAkBtE,EAAoBmF,gBACtC/E,gBAAiBvD,EAAmBgE,SACpCxX,6DAIoD,IAA3BA,EAA2BmS,EAA3BnS,WAAYiX,EAAe9E,EAAf8E,YACvCjb,KAAKygB,WACHxF,YAAazD,EAAmB4E,UAChC6C,iBAAkBtE,EAAoByB,UACtCrB,gBAAiBE,EACjBjX,gEAI0C,IAAdA,EAAcwS,EAAdxS,WAC9BhE,KAAKygB,WACHxF,YAAazD,EAAmBmE,kBAChCsD,iBAAkBtE,EAAoB7F,aACtCiG,gBAAiBH,EAAc9F,aAC/B9Q,kEAI4C,IAAdA,EAAc0S,EAAd1S,WAChChE,KAAKygB,WACHxF,YAAazD,EAAmB7C,eAChCsK,iBAAkBtE,EAAoBhG,eACtCoG,gBAAiBH,EAAcjG,eAC/B3Q,gDAKmC,IAAA0c,EAAvBtK,EAAuBuK,EAAvBvK,OAAQmB,EAAeoJ,EAAfpJ,YAClByH,EAAW,KACXzH,IAAgBC,EAAmBjD,MACrCyK,EAAWlE,GACTC,gBAAiBvD,EAAmBjD,MACpCyG,SAAU/V,IAAOqW,KAAKC,MACtBN,YAAaL,EAAcrG,QAEpBgD,IAAgBC,EAAmBgE,WAC5CwD,EAAWlE,GACTC,gBAAiBvD,EAAmBgE,SACpCR,SAAU/V,IAAOqW,KAAK5G,OACtBuG,YAAaL,EAAclG,UAG/B1U,KAAKgd,iBAAiBqD,MAAtBK,KAAAlO,IAAAkO,EACGjG,EAAkBmE,UAAY,UADjCpM,IAAAkO,EAEGjG,EAAkBkE,UAAY,aAFjCnM,IAAAkO,EAGGjG,EAAkBuE,SAAWA,GAHhCxM,IAAAkO,EAIGjG,EAAkB4C,WAAajH,GAJlCsK,qCAQe,IAAAE,EACf5gB,KAAKgd,iBAAiBqD,MAAtBO,KAAApO,IAAAoO,EACGnG,EAAkBmE,UAAY,UADjCpM,IAAAoO,EAEGnG,EAAkBkE,UAAY,YAFjCnM,IAAAoO,EAGGnG,EAAkBuE,SAAWlE,EAAYI,MAH5C1I,IAAAoO,EAIGnG,EAAkB4C,WAAa/U,YAAUtI,KAAK2N,aAJjDiT,sCAQgB,IAAAC,EACVC,EAAe1D,YAAmBpd,KAAK2N,YAC7C3N,KAAKgd,iBAAiBqD,MAAtBQ,KAAArO,IAAAqO,EACGpG,EAAkBmE,UAAY,cADjCpM,IAAAqO,EAEGpG,EAAkBkE,UAAY,gBAFjCnM,IAAAqO,EAGGpG,EAAkBuE,SAAWlE,EAAYI,MAH5C1I,IAAAqO,EAIGpG,EAAkB4C,WAAayD,EAAexY,YAAUtI,KAAK2N,YAAc,IAJ9EkT,8CAQwC,IAAAE,EAAjB7U,EAAiB8U,EAAjB9U,cAEnB+U,EAAK9a,OACJnG,KAAK+e,8BADDgC,KAAAvO,IAAAuO,EAENtG,EAAkBmE,UAAY,eAFxBpM,IAAAuO,EAGNtG,EAAkBkE,WAAyD,IAA7CuC,YAAwBlhB,KAAK2N,YAAuB,gBAAkB,aAH9F6E,IAAAuO,EAINtG,EAAkB3E,mBAAqBsC,YAAkBpY,KAAK2N,aAJxD6E,IAAAuO,EAKNtG,EAAkBqD,qBAAuBjB,EAA8B7c,KAAK2N,aALtE6E,IAAAuO,EAMNtG,EAAkBsD,0BAA4ByB,YAAqBxf,KAAK2N,aANlE6E,IAAAuO,EAONtG,EAAkBuD,yBAA2BwB,YAAqBxf,KAAK2N,aAPjE6E,IAAAuO,EAQNvG,EAAkBO,gBAAkBvD,EAAmB8D,MARjD9I,IAAAuO,EASNvG,EAAkBwE,SAAWlE,EAAYI,MATnC1I,IAAAuO,EAUNvG,EAAkByE,iBAAmBtE,EAAoBW,MAVnD9I,IAAAuO,EAWNvG,EAAkB0E,YAActE,EAAcU,MAXxCyF,IAcT,GAAsB,OAAlB7U,EACJ,CACE,IAAIiV,EAAM3O,OAAEiI,EAAkB2G,sBAAwBlV,EAAgB,EAAI,MAAQ,MAClF+U,EAAK9a,OAAO8a,GAAUE,GAGxBnhB,KAAKgd,iBAAiBqD,KAAKY,0CAGK,IAAAI,EAAZC,EAAYC,EAAZD,SACpBthB,KAAKgd,iBAAiBqD,MAAtBgB,KAAA7O,IAAA6O,EACG5G,EAAkBmE,UAAY,cADjCpM,IAAA6O,EAEG5G,EAAkBkE,UAAY,6BAFjCnM,IAAA6O,EAGG5G,EAAkB+G,YAAc/E,EAAyB6E,IAH5D9O,IAAA6O,EAIG5G,EAAkBuE,SAAWlE,EAAYI,MAJ5C1I,IAAA6O,EAKG5G,EAAkB4C,WAAa/U,YAAUtI,KAAK2N,aALjD0T,6CASkC,IAAAI,EAAZH,EAAYI,EAAZJ,SACtBthB,KAAKgd,iBAAiBqD,MAAtBoB,KAAAjP,IAAAiP,EACGhH,EAAkBmE,UAAY,cADjCpM,IAAAiP,EAEGhH,EAAkBkE,UAAY,+BAFjCnM,IAAAiP,EAGGhH,EAAkBkH,cAAgBlF,EAAyB6E,IAH9D9O,IAAAiP,EAIGhH,EAAkBuE,SAAWlE,EAAYI,MAJ5C1I,IAAAiP,EAKGhH,EAAkB4C,WAAa/U,YAAUtI,KAAK2N,aALjD8T,yCAS4C,IAAAG,EAA1BN,EAA0BO,EAA1BP,SAAU7I,EAAgBoJ,EAAhBpJ,MAAOtM,EAAS0V,EAAT1V,MACnCnM,KAAKgd,iBAAiBqD,MAAtBuB,KAAApP,IAAAoP,EACGnH,EAAkBmE,UAAY,cADjCpM,IAAAoP,EAEGnH,EAAkBkE,UAAY,yBAFjCnM,IAAAoP,EAGGnH,EAAkBqH,YAAcrJ,IAAUvZ,IAAuB6iB,SAAW,SAAW,WAH1FvP,IAAAoP,EAIGnH,EAAkB3E,mBAAqBsC,YAAkBpY,KAAK2N,aAJjE6E,IAAAoP,EAKGnH,EAAkBqD,qBAAuBrB,EAAyB6E,IALrE9O,IAAAoP,EAMGnH,EAAkBsD,0BAA4B5R,GANjDqG,IAAAoP,EAOGnH,EAAkBuD,yBAA2B7R,GAPhDqG,IAAAoP,EAQGnH,EAAkBuH,WAAavF,EAAyB6E,IAR3D9O,IAAAoP,EASGnH,EAAkBuE,SAAWlE,EAAYI,MAT5C1I,IAAAoP,EAUGnH,EAAkB4C,WAAa/U,YAAUtI,KAAK2N,aAVjDiU,0CAc+B,IAAAK,EAAZX,EAAYY,EAAZZ,SACnBthB,KAAKgd,iBAAiBqD,MAAtB4B,KAAAzP,IAAAyP,EACGxH,EAAkBmE,UAAY,cADjCpM,IAAAyP,EAEGxH,EAAkBkE,UAAY,4BAFjCnM,IAAAyP,EAGGxH,EAAkBuB,WAAaS,EAAyB6E,IAH3D9O,IAAAyP,EAIGxH,EAAkB3E,mBAAqBsC,YAAkBpY,KAAK2N,aAJjE6E,IAAAyP,EAKGxH,EAAkBqD,qBAAuBjB,EAA8B7c,KAAK2N,aAL/E6E,IAAAyP,EAMGxH,EAAkBsD,0BAA4ByB,YAAqBxf,KAAK2N,aAN3E6E,IAAAyP,EAOGxH,EAAkBuD,yBAA2BwB,YAAqBxf,KAAK2N,aAP1E6E,IAAAyP,EAQGxH,EAAkBuE,SAAWlE,EAAYI,MAR5C1I,IAAAyP,EASGxH,EAAkB4C,WAAa/U,YAAUtI,KAAK2N,aATjDsU,iDAa2B,IAAAE,EAC3BniB,KAAKgd,iBAAiBqD,MAAtB8B,KAAA3P,IAAA2P,EACG1H,EAAkBmE,UAAY,cADjCpM,IAAA2P,EAEG1H,EAAkBkE,UAAY,uBAFjCnM,IAAA2P,EAGG1H,EAAkBuE,SAAWlE,EAAYI,MAH5C1I,IAAA2P,EAIG1H,EAAkB4C,WAAa/U,YAAUtI,KAAK2N,aAJjDwU,2CAQmC,IAAAC,EAAfC,EAAeC,EAAfD,YACpBriB,KAAKgd,iBAAiBqD,MAAtB+B,KAAA5P,IAAA4P,EACG3H,EAAkBmE,UAAY,cADjCpM,IAAA4P,EAEG3H,EAAkBkE,UAFrB,gBAAApa,OAEiD8d,IAFjD7P,IAAA4P,EAGG3H,EAAkBuE,SAAWlE,EAAYI,GAAoBD,YAAaoH,MAH7E7P,IAAA4P,EAIG3H,EAAkB4C,WAAa/U,YAAUtI,KAAK2N,aAJjDyU,6CAQuB,IAAAG,EACvBviB,KAAKgd,iBAAiBqD,MAAtBkC,KAAA/P,IAAA+P,EACG9H,EAAkBmE,UAAY,SADjCpM,IAAA+P,EAEG9H,EAAkBkE,UAAY,mBAFjCnM,IAAA+P,EAGG9H,EAAkBuE,SAAWlE,EAAYI,MAH5C1I,IAAA+P,EAIG9H,EAAkB4C,WAAa/U,YAAUtI,KAAK2N,aAJjD4U,aASWxF,IC9dTyF,aACJ,SAAAA,IAAe,IAAAvF,EAAAjd,KAAAkd,IAAAld,KAAAwiB,GAAAhQ,IAAAxS,KAAA,OAiBD,SAACI,GAAD,OAAsB6c,EAAKwF,MAAM,OAAQriB,KAjBxCoS,IAAAxS,KAAA,OAmBD,SAACI,GAAD,OAAsB6c,EAAKwF,MAAM,OAAQriB,KAlBrDa,OAAOyhB,eAAkBC,QAAS,GAClC1hB,OAAO2hB,yDAGuC,ICRxBnW,EDQTgH,EAAiCtP,EAAjCsP,QAASC,EAAwBvP,EAAxBuP,QAASC,EAAexP,EAAfwP,YAC/B,OCTsBlH,EDSL,gCAAAlI,OAAiCkP,EAAjC,KAAAlP,OAA4CmP,EAA5C,KAAAnP,OAAuDoP,EAAvD,YCRZ,IAAIrM,QAAQ,SAACC,EAASsb,GAC3B,IAAMC,EAASC,SAASC,cAAc,UACtCF,EAAO/gB,KAAO,kBACd+gB,EAAOG,OAAQ,EACfH,EAAOI,IAAMzW,EACbqW,EAAOK,OAAS5b,EAChBub,EAAOM,QAAUP,EACjBE,SAASM,KAAKC,YAAYR,mCDIb/gB,EAAM3B,GACda,OAAOsiB,KAIZtiB,OAAOsiB,KAAKd,MAAM1gB,EAAM3B,GAHtBojB,QAAQ3hB,MAAM,uCAWL2gB,IEvBFiB,EAAc,IAAIjB,ECElBhP,EAAY,IAAIuJ,EAAU0G,sCCJvCtkB,EAAAC,EAAAC,EAAA,sBAAAiY,IAAAnY,EAAAC,EAAAC,EAAA,sBAAAqkB,IAAAvkB,EAAAC,EAAAC,EAAA,sBAAAskB,IAAA,IAAAC,EAAAzkB,EAAA,QAGamY,EAAgB,SAAAuM,GAC3B,OAAKA,GAIAA,EAASjY,kBACLiY,EAAStN,YAAesN,EAAStN,aAAesN,EAAStN,WAAWF,gBACtEwN,EAAStN,WAAWhL,+BAElB7H,IAAmBogB,QAGxBD,EAASjY,iBACRiY,EAAStN,aACRsN,EAASnY,aAAaC,cAEnBjI,IAAmB+U,MAGxBoL,EAASnY,aAAaC,cACjBjI,IAAmBqgB,cAD5B,EAjBSrgB,IAAmBuU,QAsBjByL,EAAoB,SAAAM,GAO/B,MAAO,KAGIL,EAAyB,SAACM,GACrC,OAAIA,EAAWpkB,OAAS,EACtB,GAAA0E,OAAU0f,EAAWC,MAAM,EAAG,GAA9B,KAAA3f,OAAoC0f,EAAWC,MAAM,IAEhDD,sCCzCT9kB,EAAAC,EAAAC,EAAA,sBAAA8kB,IAAA,IAAAhX,EAAAhO,EAAA,QAiCaglB,EAA6B,SAAAhgB,EAAgBiI,GAAhB,IAAGgY,EAAHjgB,EAAGigB,UAAH,OACxCriB,KAAM,8CACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAG,kBAAAlI,OAAoB6f,EAApB,WACHzX,OAAQ,QAGZP,SAEF+X,EAA2BvX,SAAW,iBAAM,kFC5C5CzN,EAAAC,EAAAC,EAAA,sBAAA4F,IAKO,IAAMA,GACXqW,MACEvD,KAAM,IACNuD,KAAM,QACN+I,KAAM,cACN3P,OAAQ,UACR6G,MAAO,SACP5G,eAAgB,UAChBG,cACEiD,KAAM,WACNuM,iBAAkB,8BAEpBpP,mBAAoB,qBACpBqP,gBACExM,KAAM,SACNyM,IAAK,cAEP/I,UAAW,cACXtG,WAAY,eACZsP,mBAAoB,yBAGtBvf,MACEqP,MAAO,cACPmQ,gBAAiB,yBACjBC,kBAAmB,wBACnBxf,mBAAoB,8BAGtBuO,SACEqE,KAAM,IACNE,OAAQ,kBACR2M,OAAQ,kBACR5M,KAAM,gBACN4D,YACE7D,KAAM,uBACNU,MAAO,6BACPqD,gBAAiB,yCACjB2I,mBAAoB,6CAEtB3M,WACEC,KAAM,sBACNU,MAAO,4BACPsD,SAAU,gCAEZC,YACEjE,KAAM,uBACNU,MAAO,6BACPsD,SAAU,gCACV0I,mBAAoB,6CAEtBI,oBACE9I,SAAU,2CAEZF,SAAU,yDC3Dd1c,EAAAC,EAAAC,EAAA,sBAAAwP,IAAA1P,EAAAC,EAAAC,EAAA,sBAAAqT,IAAAvT,EAAAC,EAAAC,EAAA,sBAAAgO,IAAA,IAAAyX,EAAA3lB,EAAA,QAAA4lB,EAAA5lB,EAAA4K,EAAA+a,GAQajW,EAAgB,SAAC+K,EAAc7G,GAC1C,OAAO,WAAgD,IAA9B1I,EAA8BzK,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAtBga,EAAc1G,EAAQtT,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACrD,OAAOiT,EAASiS,eAAe9R,EAAOnR,MAAQgR,EAASG,EAAOnR,MAAMsI,EAAO6I,GAAU7I,IAI5E4a,GAAuB,UAAW,YAAa,YAE/CvS,EAAuB,SAACwS,EAAYtL,GAC/C,IAAMuL,KAiBN,OAfA3lB,OAAOqI,KAAKqd,GAAY/V,QAAQ,SAAAiW,GAC9B,IAAMC,EAAeH,EAAWE,GAE5BthB,MAAMC,QAAQshB,GAChBA,EAAanB,MAAM,EAAGe,EAAoBplB,QAAQsP,QAAQ,SAACmW,EAAsBC,GAC1EnS,IAAYkS,KAGjBH,EAAO,GAAA5gB,OAAI6gB,EAAJ,KAAA7gB,OAAkB0gB,EAAoBM,KAA6BD,KAG5EH,EAAQC,GAAcC,IAInBxW,EAAc+K,EAAcuL,IAKxB9X,EAAqB,SAACvF,GAAD,OAAoB,SAAChG,EAAc0jB,GACnE,IAH4BzjB,EAGtB0jB,EAAS,GAAAlhB,OAAMuD,EAAN,KAAAvD,OAAgBzC,GAC3B4jB,EAAuBF,EACtBE,IALuB3jB,EAMkB0jB,EAA5CC,EANmD,SAACtlB,GAAD,IAAgBgM,EAAhBxM,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,aAAsCmC,OAAM3B,UAASgM,UAQ1G,IAAMxI,EAAc,WAClB,IAAMsP,EAAcwS,EAAoBC,WAApB,EAAA/lB,WAEpB,OADAsT,EAAOnR,KAAO0jB,EACPvS,GAGT,OADAtP,EAAOgJ,SAAW,kBAAM6Y,GACjB7hB,uCCnDTzE,EAAAC,EAAAC,EAAA,sBAAAumB,IAAAzmB,EAAAC,EAAAC,EAAA,sBAAAwmB,IAAA1mB,EAAAC,EAAAC,EAAA,sBAAAymB,IAAA3mB,EAAAC,EAAAC,EAAA,sBAAAuY,IAAA,IAAAmO,EAAA5mB,EAAA,QAAA6mB,EAAA7mB,EAAA4K,EAAAgc,GAAAE,EAAA9mB,EAAA,QAAA+mB,EAAA/mB,EAAA4K,EAAAkc,GAAAE,EAAAhnB,EAAA,QASMinB,EAAsB,eAACC,EAADzmB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,aAAgB0mB,IAAYC,UAAUF,IAWrDT,EAAY,SAAA5T,GAAM,OATf7N,EAS2B6N,EATawU,EAAAriB,EAArC6W,gBAAqC,IAAAwL,EAA1B,GAA0BA,EAAtBH,EAAsBliB,EAAtBkiB,MAAO/Z,EAAenI,EAAfmI,SACjCma,EAAOna,GAAsBC,IAAIC,IACjCka,EAAO,GAAAniB,OAAMkiB,GAANliB,OAA6B,MAAhByW,EAAS,GAAa,GAAK,KAAxCzW,OAA8CyW,GAEpDqL,EAAK,GAAA9hB,OACLmiB,EADK,KAAAniB,OACM6hB,EAAoBC,IAClCK,EANU,IAAAviB,EAAwCqiB,EAArCxL,EAAeqL,EAAO/Z,EACjCma,EACAC,GASFC,EAAc,iBACPd,EAAoB,SAAC9T,EAAMC,GAAP,OAAkBD,EAAKnR,QAAQ+lB,EAAa,SAAAC,GAC3E,OAAO/iB,IAAKmO,EAAQ4U,EAAchmB,QAAQ,IAAK,QAKpCklB,EAAqB,eAACe,EAADjnB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAU,GAAV,OAAiB0mB,IAAYxlB,MAAM+lB,EAAOC,OAAO,KAatElP,EAXS,WACpB,IAAIA,KACJ,OACEmP,WAAY,SAAAC,GACVpP,EAAUoP,GAEZpmB,QAAS,SAAAoa,GAAQ,OAAIpD,EAAQhX,QAAQoa,IACrCnD,KAAM,SAAAmD,GAAQ,OAAIpD,EAAQC,KAAKmD,KAIZiM,sCC1CvB9nB,EAAAC,EAAAC,EAAA,sBAAA2M,IAAA7M,EAAAC,EAAAC,EAAA,sBAAA6nB,IAAA/nB,EAAAC,EAAAC,EAAA,sBAAA+Y,IAAAjZ,EAAAC,EAAAC,EAAA,sBAAA8nB,IAAAhoB,EAAAC,EAAAC,EAAA,sBAAA+nB,IAAAjoB,EAAAC,EAAAC,EAAA,sBAAAyd,IAAA3d,EAAAC,EAAAC,EAAA,sBAAAmgB,IAAArgB,EAAAC,EAAAC,EAAA,sBAAA6hB,IAAA,IAAArX,EAAA1K,EAAA,QAAA2K,EAAA3K,EAAA4K,EAAAF,GAAAwd,EAAAloB,EAAA,QAQa2Z,EAAU,SAAAzO,GAAK,OAAIA,EAAMid,eACzBtb,EAAuB,SAAA3B,GAAK,OAAIyO,EAAQzO,GAAO6P,mBAC/CgN,EAA+B,SAAA7c,GAAK,OAAIyO,EAAQzO,GAAO8P,cACvD/B,EAAoB,SAAA/N,GAAK,OAAIyO,EAAQzO,GAAO+P,gBAC5C+M,EAAkB,SAAA9c,GAAK,OAAI2B,EAAqB3B,GAC5D4B,KAAK,SAAAxH,GAAI,OAAIA,EAAKkD,KAAOyQ,EAAkB/N,MAC/B+c,EAA0B,SAAA/c,GAAK,OAAI6c,EAA6B7c,GAC1E4B,KAAK,SAAAxH,GAAI,OAAIA,EAAKkD,KAAOyQ,EAAkB/N,MACjCyS,EAAsB,SAAAzS,GAAK,OAAIxG,IAAKsjB,EAAgB9c,GAAQ,SAC5DmV,EAAuB,SAAAnV,GAClC,IAAM6B,EAAgBrI,IAAKsjB,EAAgB9c,GAAQ,iBAC7C8B,EAAQtI,IAAKsjB,EAAgB9c,GAAQ,SAE3C,OAAK6B,EAIEA,EAAgBC,EAHdA,GAKE+U,EAA0B,SAAA7W,GAAK,OAAIgQ,YAAgB8M,EAAgB9c,wCCrBzE,IAAKkd,EANZpoB,EAAAC,EAAAC,EAAA,sBAAAkoB,IAAApoB,EAAAC,EAAAC,EAAA,sBAAAmoB,aAMYD,ueAgBL,IAAMC,GACXD,EAAUE,UACVF,EAAUG,UACVH,EAAUI,uOCjBCC,EAAW,SAAAzjB,GAAA,IAAGC,EAAHD,EAAGC,KAAMyjB,EAAT1jB,EAAS0jB,QAAT,OACtB9lB,KAAM,gBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAG,qBAAAlI,OAAuB+hB,IAAYC,WAAYniB,OAAMyjB,aACxDnb,WACAC,OAAQ,QAGZP,MACEsJ,QAAQ,EACRoS,MAAM,KAGVF,EAAShb,SAAW,iBAAM,koBCL1B,IAAMQ,EAAeC,YAAmB,gBAElC0a,EAAmB3a,EAAa,gBACzB4a,EAAmB5a,EAAa,sBAEhC6a,EAAc,SAAA7jB,GAAI,OAAI,SAACsJ,EAAUC,GAC5C,IAAMtD,EAAQsD,IACRsL,EAAOD,YAAQ3O,GACf6d,EAAgBjP,IAAS7U,EAM/B,GAJAsJ,EAASqa,GACP9O,KAAM7U,KAGJA,IAAS4I,IASbU,EAASya,EAAYD,QATrB,CACE,IAAME,EAAa5oB,OAAOqI,KAAKgG,YAAgBxD,IAAQpG,OAAO,SAACC,EAAKuB,GAAN,OAAAU,OACzDjC,MADyDsO,OAE3D/M,EAAMA,SAETiI,EAASsa,EAAiBI,OAOjBD,EAAc,SAAAD,GAAa,OAAI,SAACxa,EAAUC,GACrD,IAAMtD,EAAQsD,IACRsL,EAAOD,YAAQ3O,GAMrB,OADAgG,IAAOgY,OAAOpP,GACP3R,QAAQghB,KAGbnpB,EAAA,OAAAA,CAAO,KAAAoF,OAAgB0U,EAAvB,YAECzR,KAAK,SAAArD,GAAc,IAAAoB,EAAAgjB,IAAApkB,EAAA,GAAZ2D,EAAYvC,EAAA,GAClBmI,EAASsa,EAAiBlgB,EAAO0gB,YAElCjW,MAAM,WAELiR,QAAQiF,KAAR,gBAAAlkB,OAA6B0U,QAI7B1K,GAAeC,KAAAgE,IAAAhE,EAClBuZ,EAAiBnb,WAAa,SAACvC,EAADvE,GAAA,IAAyCmT,EAAzCnT,EAA8B1F,QAAW6Y,KAAzC,OAAA9S,OAC1BkE,OACH4O,WAHiBzG,IAAAhE,EAKlBoZ,EAAShb,WAAa6F,YAAe,eACpC,KACA,SAACpI,EAAD7D,GAA8E,IAA7BkiB,EAA6BliB,EAAhDpG,QAAWwD,OAAsB4G,EAAe5K,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,MAC5E,IAAK8oB,GAAgC,IAApBA,EAAS7oB,OACxB,OAAO2K,EAFmE,IAAAvD,EAI9CyhB,EAAS,OAA/BC,EAJoE1hB,EAIpE0hB,SAAUvoB,EAJ0D6G,EAI1D7G,QAElB,OACEgM,KAAIjG,OACCqE,EAAM4B,MACNuc,GAEL/a,MAAOqE,YAAWzH,EAAMoD,MAAOxN,KAGnC,QArBiBoS,IAAAhE,EAuBlBwZ,EAAiBpb,WAAa,SAACvC,EAAD0L,GAA4C,IAAd3V,EAAc2V,EAAd3V,QAC3D,OAAA+F,OACKkE,OACHiP,WAAYlZ,MA1BGoO,GA+BfoL,GACJX,KAAMlM,IACNuM,cACAE,aACEhP,UAEF+O,OACE/O,WAIWkI,gBAAqBnE,EAAiBqL,sCC5GrDza,EAAAC,EAAAC,EAAA,sBAAAupB,IAAAzpB,EAAAC,EAAAC,EAAA,sBAAAwpB,IAAA1pB,EAAAC,EAAAC,EAAA,sBAAAsY,IAAA,IAAAxK,EAAAhO,EAAA,QAEaypB,EAAuB,SAAA/b,GAAI,OACtC9K,KAAM,wBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,qBACLI,OACAH,WACAC,OAAQ,QAGZP,MACEsJ,QAAQ,KAGZkT,EAAqBhc,SAAW,iBAAM,yBAE/B,IAAMic,EAAuB,SAACxS,GAAD,OAClCtU,KAAM,mCACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,qCACLI,MACEwJ,kBAEF3J,WACAC,OAAQ,QAGZP,MACEsJ,QAAQ,KAGZmT,EAAqBjc,SAAW,iBAAM,oCAE/B,IAAM+K,EAAoB,kBAC/B5V,KAAM,wBACN3B,SACEiM,WACEC,SAAUC,IAAIC,IACdC,IAAK,4BACLI,QAEAH,WACAC,OAAQ,SAGZP,MACEsJ,QAAQ,KAGZiC,EAAkB/K,SAAW,iBAAM,4DCjD5B,IAAK9H,EALZ3F,EAAAC,EAAAC,EAAA,sBAAAyF,aAKYA,y6CCLZ3F,EAAAC,EAAAC,EAAA,sBAAAypB,IAAA3pB,EAAAC,EAAAC,EAAA,sBAAA0pB,IAAA5pB,EAAAC,EAAAC,EAAA,sBAAA2pB,IAAA7pB,EAAAC,EAAAC,EAAA,sBAAA4pB,IAAA9pB,EAAAC,EAAAC,EAAA,sBAAA6pB,IAAA/pB,EAAAC,EAAAC,EAAA,sBAAA+d,IAAA,IAAAvT,EAAA1K,EAAA,QAAA2K,EAAA3K,EAAA4K,EAAAF,GAAAG,EAAA7K,EAAA,QAQa2Z,EAAU,SAAAzO,GAAK,OAAIA,EAAMnF,MACzB4jB,EAAW,SAAAze,GAAK,OAAIyO,EAAQzO,GAAO1K,MAAM6K,OACzCue,EAAsB,SAAA1e,GAAK,OAAIyO,EAAQzO,GAAOuO,kBAC9CoQ,EAAiB,SAAA3e,GAAK,OAAIxG,IAAKilB,EAASze,GAAQ,WAChD4e,EAAc,SAAA5e,GAAK,OAAIxG,IAAKilB,EAASze,GAAQ,SAC7C6e,EAAiB,SAAA7e,GAAK,OACjC8e,cAAa,UAAA5kB,OAAYykB,EAAe3e,MAG7B+S,EAAqB,SAAA/S,GAChC,IAAM+M,EAAO6R,EAAY5e,GACzB,OAAO+M,IAAS7T,IAAW6lB,qDCnB7BjqB,EAAAC,EAAAC,EAAA,sBAAAgqB,IAAAlqB,EAAAC,EAAAC,EAAA,sBAAAiqB,IAAAnqB,EAAAC,EAAAC,EAAA,sBAAAkqB,IAAApqB,EAAAC,EAAAC,EAAA,sBAAAmqB,IAAA,IAAA3f,EAAA1K,EAAA,QAAA2K,EAAA3K,EAAA4K,EAAAF,GAAA4f,EAAAtqB,EAAA,QAAAuqB,EAAAvqB,EAAA,QAAAwqB,EAAAxqB,EAAA,QAAAyqB,EAAAzqB,EAAA,QAAA0qB,EAAA1qB,EAAA,QAAA2qB,EAAA3qB,EAAA,QAAA4qB,EAAA5qB,EAAA,QAAA6qB,EAAA7qB,EAAA,QAeakqB,EAAgB,eAAAllB,EAAAvE,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,IAA2BqqB,mBAAmB,GAA3CA,EAAH9lB,EAAG8lB,kBAAH,OAA0D,SAACvc,EAAUC,GAEhG,IAAMsJ,EAAcpT,IAAKilB,YAASnb,KAAa,UACzCgI,EAAe9R,IAAKilB,YAASnb,KAAa,WAEhDD,EAAS8G,aAASiB,UAAWwB,EAAatB,aAAcA,KAExDjI,EAASwc,GAAiBD,yBAGfC,EAAiB,SAAA3kB,GAAA,IAAG0kB,EAAH1kB,EAAG0kB,kBAAH,OAA2B,SAAAvc,GACvD8F,IAAUgB,SACV9G,GACE3L,KAAM0B,MAGJwmB,GACFrS,IAAQC,KAAK5S,IAAOqW,KAAKC,SAIhB+N,EAA4B,kBAAM,SAAA5b,GAAQ,OAAIA,EAAS2b,GAAgBY,mBAAmB,OAE1FV,EAAc,kBAAM,SAAC7b,EAAUC,GAC1C,IAAMsJ,EAAcpT,IAAKilB,YAASnb,KAAa,UACzCgI,EAAe9R,IAAKilB,YAASnb,KAAa,WAEhD,OAAIgI,GAAgBvU,IAAa+oB,eAAelT,GACvCvJ,EAAS8b,KAEXliB,QAAQC,QAAQ0P,KAGZuS,EAAiB,kBAAM,SAAC9b,EAAUC,GAC7C,IAAMgI,EAAe9R,IAAKilB,YAASnb,KAAa,WAEhD,OAAKgI,EAIEjI,EAAS+G,aAAUmB,cAAeD,KACtCnO,KAAK,SAAA1B,GAA0D,IAAtBmR,EAAsBnR,EAAvD0E,MAAS5G,OAAUsT,aAAoCC,EAC7C/V,IAAaf,gBAAgB4W,GAAtCG,EADsDD,EACtDC,KAER,OADA1J,EAASmJ,YAAeO,IACjBH,IAPF3P,QAAQub,OAAO,IAAIpb,MAAM","file":"2.81ca6acc585dad24102d.js","sourcesContent":["/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nexport enum SUBSCRIPTION_STATUS {\r\n activated = 'activated',\r\n pendingPayment = 'pendingPayment',\r\n waitingForPrinter = 'waitingForPrinter',\r\n pendingLocked = 'pendingLocked',\r\n pendingConfirmation = 'pendingConfirmation',\r\n canceled = 'canceled',\r\n locked = 'locked',\r\n locking = 'locking',\r\n pendingUnlocked = 'pendingUnlocked',\r\n renewed = 'renewed',\r\n}\r\n\r\nexport enum SUBSCRIPTION_PLAN_TYPE {\r\n contract = 'yearly',\r\n monthToMonth = 'monthly',\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nexport const EMPTY_OBJECT = Object.freeze({})\r\nexport const EMPTY_ARRAY = Object.freeze([])\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\ninterface ITokenPayload {\r\n exp: number,\r\n [key: string]: any,\r\n}\r\n\r\nexport default class Token {\r\n public isTokenExpired (token: string = '') {\r\n if (!token) {\r\n return true\r\n }\r\n const expirationDate: Date = this.getExpirationDate(token)\r\n return expirationDate.valueOf() <= new Date().valueOf()\r\n }\r\n\r\n public getExpirationDate (token: string) {\r\n const payload = this.getTokenPayload(token)\r\n const date = new Date(0)\r\n\r\n date.setUTCSeconds(payload.exp)\r\n\r\n return date\r\n }\r\n\r\n public getTokenPayload (token: string): ITokenPayload {\r\n if (token && token.split('.').length === 3) {\r\n try {\r\n const base64Url = token.split('.')[1]\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\r\n return JSON.parse(\r\n decodeURIComponent(encodeURIComponent(window.atob(base64))),\r\n )\r\n } catch (e) {\r\n return undefined\r\n }\r\n }\r\n }\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport TokenService from './Token'\r\n\r\nexport const tokenService = new TokenService()\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nexport const DEFAULT_ALERTS_TIME_IN_MILLISECONDS = 5000\r\n\r\nexport enum ALERTS {\r\n error = 'error',\r\n success = 'success',\r\n info = 'info',\r\n warning = 'warning',\r\n successBillingInfoChanged = 'successBillingInfoChanged',\r\n successBusinessDetailsChanged = 'successBusinessDetailsChanged',\r\n successPaymentDetailsChanged = 'successPaymentDetailsChanged',\r\n successChangeSubscription = 'successChangeSubscription',\r\n successResendConfirmEmail = 'successResendConfirmEmail',\r\n billingAddressIsNotValid = 'billingAddressIsNotValid',\r\n shippingAddressIsNotValid = 'shippingAddressIsNotValid',\r\n successUpdateCard = 'successUpdateCard',\r\n addressIsNotValid = 'addressIsNotValid',\r\n profileShippingFormError = 'profileShippingFormError',\r\n profileBillingFormError = 'profileBillingFormError',\r\n profileCreditCardIssue = 'profileCreditCardIssue',\r\n successEmailConfirmed = 'successEmailConfirmed',\r\n successChangeEmailConfirmed = 'successChangeEmailConfirmed',\r\n successMessageSent = 'successMessageSent',\r\n successLeaveEmail = 'successLeaveEmail',\r\n successChangePassword = 'successChangePassword',\r\n passwordUsedBefore = 'passwordUsedBefore',\r\n noAgreement = 'noAgreement',\r\n signUpSuccesfull = 'signUpSuccesfull',\r\n}\r\n\r\nenum ALERT_TYPES {\r\n success = 'success',\r\n info = 'info',\r\n warning = 'warning',\r\n danger = 'danger',\r\n}\r\n\r\nexport const ALERTS_CONFIG = {\r\n [ALERTS.error]: {\r\n name: ALERTS.error,\r\n type: ALERT_TYPES.danger,\r\n },\r\n [ALERTS.success]: {\r\n name: ALERTS.success,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.warning]: {\r\n name: ALERTS.warning,\r\n type: ALERT_TYPES.warning,\r\n },\r\n [ALERTS.info]: {\r\n name: ALERTS.info,\r\n type: ALERT_TYPES.info,\r\n },\r\n [ALERTS.successBillingInfoChanged]: {\r\n name: ALERTS.successBillingInfoChanged,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.successChangeSubscription]: {\r\n name: ALERTS.successChangeSubscription,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.successResendConfirmEmail]: {\r\n name: ALERTS.successResendConfirmEmail,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.billingAddressIsNotValid]: {\r\n name: ALERTS.billingAddressIsNotValid,\r\n type: ALERT_TYPES.danger,\r\n },\r\n [ALERTS.shippingAddressIsNotValid]: {\r\n name: ALERTS.shippingAddressIsNotValid,\r\n type: ALERT_TYPES.danger,\r\n },\r\n [ALERTS.successUpdateCard]: {\r\n name: ALERTS.successUpdateCard,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.profileShippingFormError]: {\r\n name: ALERTS.error,\r\n type: ALERT_TYPES.danger,\r\n },\r\n [ALERTS.profileBillingFormError]: {\r\n name: ALERTS.error,\r\n type: ALERT_TYPES.danger,\r\n },\r\n [ALERTS.profileCreditCardIssue]: {\r\n name: ALERTS.error,\r\n type: ALERT_TYPES.danger,\r\n },\r\n [ALERTS.successEmailConfirmed]: {\r\n name: ALERTS.successEmailConfirmed,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.successChangeEmailConfirmed]: {\r\n name: ALERTS.successChangeEmailConfirmed,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.successMessageSent]: {\r\n name: ALERTS.successMessageSent,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.successLeaveEmail]: {\r\n name: ALERTS.successLeaveEmail,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.successPaymentDetailsChanged]: {\r\n name: ALERTS.successPaymentDetailsChanged,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.successChangePassword]: {\r\n name: ALERTS.successChangePassword,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.successBusinessDetailsChanged]: {\r\n name: ALERTS.successBusinessDetailsChanged,\r\n type: ALERT_TYPES.success,\r\n },\r\n [ALERTS.passwordUsedBefore]: {\r\n name: ALERTS.passwordUsedBefore,\r\n type: ALERT_TYPES.danger,\r\n },\r\n [ALERTS.noAgreement]: {\r\n name: ALERTS.noAgreement,\r\n type: ALERT_TYPES.danger,\r\n },\r\n [ALERTS.signUpSuccesfull]: {\r\n name: ALERTS.signUpSuccesfull,\r\n type: ALERT_TYPES.info,\r\n },\r\n}\r\n\r\nexport enum ALERT_PARTS {\r\n headline = 'headline',\r\n message = 'message',\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nexport enum USER_ROLES {\r\n subscriptionUser = 'User',\r\n}\r\n\r\nexport enum USER_STATUSES {\r\n pending = 'pending',\r\n active = 'active',\r\n inactive = 'inactive',\r\n deleted = 'deleted',\r\n}\r\n\r\nexport const USER_LOGOUT_ACTION = 'USER_LOGOUT_ACTION'\r\n","export enum REGISTRATION_STEPS {\r\n create = 'create',\r\n payment = 'payment',\r\n terms = 'terms',\r\n congrats = 'congrats',\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport _get from 'lodash/get'\r\nimport _pick from 'lodash/pick'\r\nimport _compact from 'lodash/compact'\r\nimport { ALERT_PARTS } from 'constants/alerts'\r\nimport { ERROR_CODES } from 'constants/errors'\r\nimport { ROUTES } from 'constants/routes'\r\n\r\nexport const getErrorCodes = error => {\r\n let result = _get(error, 'result')\r\n\r\n if (!result) {\r\n return []\r\n }\r\n\r\n if (!Array.isArray(result)) {\r\n result = [result]\r\n }\r\n\r\n const errorCodes = result.reduce((acc, { code, details, localizationErrorCode }) => {\r\n if (code === 'Validation') {\r\n if (Array.isArray(details)) {\r\n return acc.concat(details.map(item => item.code))\r\n }\r\n return acc.concat(details.code)\r\n }\r\n return acc.concat(localizationErrorCode)\r\n }, [])\r\n\r\n return _compact(errorCodes)\r\n}\r\n\r\nconst propertyKeysByCode = {\r\n // 5001: ['email'],\r\n}\r\n\r\nconst getPropertyKeysByCode = code => propertyKeysByCode[code]\r\n\r\nconst getParamsForText = (propertiesKeys, sentValues) => _pick(sentValues, propertiesKeys)\r\n\r\nconst mapAlertParamsByErrorCode = {\r\n [ERROR_CODES.emailIsNotConfirmed]: {\r\n resendConfirmEmailUrl: ROUTES.auth.resendConfirmEmail,\r\n },\r\n [ERROR_CODES.userIsInPendingState]: {\r\n resendConfirmEmailUrl: ROUTES.auth.resendConfirmEmail,\r\n },\r\n}\r\n\r\nconst getAlertParamsByErrorCode = errorCode => mapAlertParamsByErrorCode[errorCode] || {}\r\n\r\nexport const getNormalizedValidationErrors = result => {\r\n let normalizedResult = result\r\n\r\n if (!normalizedResult) {\r\n return []\r\n }\r\n\r\n if (!Array.isArray(normalizedResult)) {\r\n normalizedResult = [result]\r\n }\r\n\r\n return normalizedResult.reduce((acc, { code, details, localizationErrorCode, message }) => {\r\n if (code === 'Validation') {\r\n if (Array.isArray(details)) {\r\n return acc.concat(details.map(item => ({\r\n code: item.code,\r\n message: item.message,\r\n key: item.key,\r\n })))\r\n }\r\n return acc.concat({ code: details.code, message: details.message, key: details.key })\r\n }\r\n return acc.concat({ code: localizationErrorCode, message })\r\n }, [])\r\n}\r\n\r\nexport const getTextCreator = (text, alertPart, sentValues = {}) => ({ code, message }) => {\r\n const propertiesKeys = getPropertyKeysByCode(code)\r\n const localizeText = text(`alertCodes.${code}.${alertPart}`, {\r\n ...getParamsForText(propertiesKeys, sentValues),\r\n ...getAlertParamsByErrorCode(code),\r\n })\r\n\r\n if (alertPart === ALERT_PARTS.headline) {\r\n return localizeText\r\n }\r\n\r\n return localizeText || message\r\n}\r\n\r\nexport const getAlertTexts = (error: any, text, sentValues?: any) => {\r\n const result = _get(error, 'result')\r\n\r\n if (!result || getErrorCodes(error).length === 0) {\r\n return {\r\n [ALERT_PARTS.headline]: text('alerts.error.headline'),\r\n [ALERT_PARTS.message]: text('alerts.error.message'),\r\n }\r\n }\r\n\r\n const getHeadline = getTextCreator(text, ALERT_PARTS.headline, sentValues)\r\n const getMessage = getTextCreator(text, ALERT_PARTS.message, sentValues)\r\n const validationErrors = getNormalizedValidationErrors(result)\r\n const res: any = {\r\n [ALERT_PARTS.message]: validationErrors.map(validationError => getMessage(validationError)).join('\\n'),\r\n }\r\n const headlines = validationErrors.map(validationError => getHeadline(validationError))\r\n\r\n if (_compact(headlines).length > 0) {\r\n res[ALERT_PARTS.headline] = headlines.join(', ')\r\n }\r\n\r\n return res\r\n}\r\n\r\nexport const getFormErrorMessages = (error, text) => {\r\n const result = _get(error, 'result')\r\n\r\n if (!result || getErrorCodes(error).length === 0) {\r\n return [text('alerts.error.message')]\r\n }\r\n\r\n const validationErrors = getNormalizedValidationErrors(result)\r\n\r\n return validationErrors.map(({ code, message }) => text(`alertCodes.${code}.message`) || message)\r\n}\r\n","var map = {\n\t\"./en-US.json\": [\n\t\t\"4mHK\",\n\t\t13\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 3);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"ILqs\";\nmodule.exports = webpackAsyncContext;","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport _get from 'lodash/get'\r\nimport { USER_STATUSES } from 'constants/user'\r\nimport { SUBSCRIPTION_STATUS } from 'constants/subscription'\r\nimport { EMPTY_OBJECT, EMPTY_ARRAY } from 'constants/frozenObjects'\r\nimport { getSubscriptionPlans } from 'redux-app/selectors/subscription'\r\nimport { checkIsCardExpired, isContractExpired } from 'utils/date'\r\n\r\nexport const getUserDetails = state => state.user.userDetails.value\r\nexport const isPlanAcceptedMessageShown = state => state.user.isPlanAcceptedMessageShown\r\nexport const getUserSubscription = state => _get(getUserDetails(state), 'subscription', EMPTY_OBJECT)\r\nexport const getUserFutureSubscription = state => _get(getUserDetails(state), 'futureSubscription', EMPTY_OBJECT)\r\nexport const getUserCardInfo = state => _get(getUserDetails(state), 'creditCard', EMPTY_OBJECT)\r\nexport const getShippingHistory = state => _get(state, ['user', 'subscriptionHistory', 'value'], EMPTY_ARRAY)\r\nexport const getPaymentHistory = state => _get(state, ['user', 'paymentHistory', 'value'], EMPTY_ARRAY)\r\nexport const getUserId = state => _get(getUserDetails(state), 'userId')\r\nexport const getUserStatus = state => _get(getUserDetails(state), 'status')\r\nexport const isUserContractExpired = state =>\r\n isContractExpired(_get(getUserDetails(state), 'subscription.termsEndDate'))\r\nexport const isUserSubscriptionCanceledByAdmin = state => {\r\n const adminCancellationReason = 6\r\n const cancellationReason = _get(getUserDetails(state), 'subscription.cancellationReasonId')\r\n\r\n return ((isUserSubscriptionCanceledOrWaitingForPrinter(state)) && cancellationReason == adminCancellationReason)\r\n}\r\nexport const isUserSubscriptionCanceledOrWaitingForPrinter = state => {\r\n const subscriptionStatus = getSubscriptionStatus(state)\r\n return subscriptionStatus === SUBSCRIPTION_STATUS.canceled || subscriptionStatus === SUBSCRIPTION_STATUS.waitingForPrinter\r\n}\r\nexport const isChangeSubscriptionAllowed = state => _get(getUserDetails(state), 'subscription.isChangeSubscriptionProcessAvailable')\r\nexport const isEnrollAvailable = state => isUserContractExpired(state) || (!isUserSubscriptionCanceledByAdmin(state) && isUserSubscriptionCanceledOrWaitingForPrinter(state))\r\nexport const isUserNeedsToRenewSubscription = state => _get(getUserDetails(state), 'subscription.isRenewalProcessAvailable')\r\nexport const isCardExpired = state => {\r\n const { expirationMonth, expirationYear } = getUserCardInfo(state)\r\n return checkIsCardExpired(expirationMonth, expirationYear)\r\n}\r\nexport const isCaptchaRequiredForCreditCardChange = state => {\r\n const { isAdditionalProtectionRequired } = getUserCardInfo(state)\r\n return isAdditionalProtectionRequired\r\n}\r\nexport const isCookieAccepted = state => state.user.isCookieAccepted\r\nexport const isUserAbleToOpenProfile = state => {\r\n const userDetails = getUserDetails(state)\r\n if (!userDetails) {\r\n return false\r\n }\r\n\r\n if ((getUserStatus(state) === USER_STATUSES.pending ||\r\n getUserStatus(state) === USER_STATUSES.active)\r\n && userDetails.subscription.termsAccepted \r\n && userDetails.shippingAddress) {\r\n return true\r\n }\r\n\r\n return false;\r\n}\r\nexport const isUserConfirmedEmail = state => _get(getUserDetails(state), 'emailConfirmed')\r\nexport const isCancelSubscriptionWithFee = state => _get(getUserSubscription(state), 'hasCancellationFee')\r\nexport const getSubscriptionCancellationFee = state => _get(getUserSubscription(state), 'cancellationFee')\r\nexport const isUserAbleToChangeSubscription = state => {\r\n const status = getSubscriptionStatus(state)\r\n return status === SUBSCRIPTION_STATUS.activated || status === SUBSCRIPTION_STATUS.pendingConfirmation\r\n}\r\nexport const isUserAbleToCancelSubscription = state => _get(getUserSubscription(state), 'canCancelCurrentSubscription')\r\nexport const getSubscriptionStatus = state => _get(getUserSubscription(state), 'status')\r\nexport const getFutureSubscriptionStatus = state => _get(getUserFutureSubscription(state), 'status', EMPTY_OBJECT)\r\nexport const isUserUnableToUpdateInfo = state => {\r\n const status = getSubscriptionStatus(state)\r\n return ((status === SUBSCRIPTION_STATUS.canceled || status === SUBSCRIPTION_STATUS.waitingForPrinter) && !isUserContractExpired)\r\n}\r\nexport const getUserActivePlanId = state => _get(getUserSubscription(state), 'planId')\r\nexport const isPrinterWillBeSentSoon = state => _get(getUserSubscription(state), 'isPrinterWillBeSentSoon')\r\nexport const getSubscriptionName = state => _get(getUserSubscription(state), 'planName', 'none')\r\nexport const isRenewalProcessAvailable = state => _get(getUserSubscription(state), 'isRenewalProcessAvailable')\r\nexport const isSubscriptionRenewed = state => _get(getUserSubscription(state), 'isSubscriptionRenewed')\r\n\r\nexport const getActivePlan = state => getSubscriptionPlans(state)\r\n .find(item => item.id === getUserActivePlanId(state))\r\nexport const getActivePlanPrice = state => {\r\n const activationFee = _get(getActivePlan(state), 'activationFee')\r\n const price = _get(getActivePlan(state), 'price')\r\n\r\n if (!activationFee) {\r\n return price\r\n }\r\n\r\n return activationFee + price\r\n}\r\nexport const getActiveSubscriptionId = state => _get(getUserSubscription(state), 'id')\r\nexport const getActiveSubscriptionContractId = state => _get(getUserSubscription(state), 'contractId')\r\nexport const isChangeSubscriptionWithFee = state => _get(getUserSubscription(state), 'hasSubscriptionPlanChangeFee')\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport env from 'env'\r\n\r\nexport const getUserDetails = (meta?: any) => ({\r\n type: 'api/user/GET_USER_DETAILS',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/accounts/me/detailed`,\r\n headers: {},\r\n method: 'GET',\r\n },\r\n },\r\n meta: {\r\n ...meta,\r\n },\r\n})\r\ngetUserDetails.toString = () => 'api/user/GET_USER_DETAILS'\r\n\r\nexport const resendConfirmEmail = () => ({\r\n type: 'api/user/RESEND_CONFIRM_EMAIL',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/accounts/me/registration/resend`,\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {},\r\n})\r\nresendConfirmEmail.toString = () => 'api/user/RESEND_CONFIRM_EMAIL'\r\n\r\nexport const getShippingHistory = () => ({\r\n type: 'api/user/SUBSCRIPTIONS/HISTORY',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/subscriptions/current/shipments/query`,\r\n data: { paging: null },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {},\r\n})\r\ngetShippingHistory.toString = () => 'api/user/SUBSCRIPTIONS/HISTORY'\r\n\r\nexport const getPaymentHistory = () => ({\r\n type: 'api/user/PAYMENTS/HISTORY',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/subscriptions/current/invoices/query',\r\n data: { paging: null },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {},\r\n})\r\ngetPaymentHistory.toString = () => 'api/user/PAYMENTS/HISTORY'\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nexport const DEFAULT_LANGUAGE = 'en-US'\r\n\r\nexport const DEBUG_LANGUAGE = 'DEBUG'\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport env from 'env'\r\n\r\nexport const getAppConfig = (meta?: any) => ({\r\n type: 'api/CONFIG/GET_CONFIG',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/settings',\r\n method: 'GET',\r\n },\r\n },\r\n meta,\r\n})\r\ngetAppConfig.toString = () => 'api/CONFIG/GET_CONFIG'\r\n\r\nexport const getRecaptchaWhiteListConfig = (meta?: any) => ({\r\n type: 'api/WHITELIST/GET_WHITE_LIST',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/configuration/whitelist',\r\n method: 'GET',\r\n },\r\n },\r\n meta,\r\n})\r\ngetRecaptchaWhiteListConfig.toString = () => 'api/WHITELIST/GET_WHITE_LIST'\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport uuid from 'uuid'\r\nimport { ALERTS_CONFIG, ALERTS, DEFAULT_ALERTS_TIME_IN_MILLISECONDS } from 'constants/alerts'\r\nimport { CreateLocal, Remove, RemoveAll, IState, CreateAlert } from 'redux-app/types/alerts'\r\nimport { getCurrentTexts } from 'redux-app/selectors/localization'\r\nimport { createModuleAction, createReducer } from 'redux-app/utils/reducer'\r\nimport { text } from 'redux-app/utils/localization'\r\nimport { getAlertTexts } from 'utils/error'\r\n\r\nconst createAction = createModuleAction('ALERTS')\r\n\r\nconst createLocal: CreateLocal = createAction('CREATE')\r\nexport const remove: Remove = createAction('REMOVE')\r\nexport const removeAll: RemoveAll = createAction('REMOVE_ALL')\r\n\r\nexport const onShowError = (error: any, sentValues?) => (dispatch, getState) => {\r\n if (error.status === 401) {\r\n return\r\n }\r\n const texts = getCurrentTexts(getState())\r\n dispatch(createAlert({\r\n name: ALERTS.error,\r\n ...getAlertTexts(error, text({ texts }), sentValues),\r\n }))\r\n}\r\n\r\nexport const createAlert: CreateAlert = ({ name, messageParams, ...restProps }) => (dispatch, getState) => {\r\n const t = text({ texts: getCurrentTexts(getState()), startPath: `alerts.${name}` })\r\n const alertTexts = {\r\n headline: t('headline') || 'Headline',\r\n message: t('message', messageParams) || 'Message text',\r\n }\r\n const id = uuid()\r\n const alert = {\r\n id,\r\n ...alertTexts,\r\n timeout: DEFAULT_ALERTS_TIME_IN_MILLISECONDS,\r\n ...ALERTS_CONFIG[name],\r\n name,\r\n ...restProps,\r\n }\r\n dispatch(createLocal(alert))\r\n return id\r\n}\r\n\r\nconst ACTION_HANDLERS = {\r\n [createLocal.toString()]: (state, { payload }) => ({\r\n ...state,\r\n items: [\r\n ...state.items,\r\n {\r\n id: payload.id,\r\n ...payload,\r\n },\r\n ],\r\n }),\r\n [remove.toString()]: (state, { payload: { id } }) => ({\r\n ...state,\r\n items: state.items.filter(item => item.id !== id),\r\n }),\r\n [removeAll.toString()]: state => ({\r\n ...state,\r\n items: [],\r\n }),\r\n}\r\n\r\nconst initialState: IState = {\r\n items: [],\r\n}\r\n\r\nexport default createReducer(initialState, ACTION_HANDLERS)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\ninterface IParams {\r\n [key: string]: any,\r\n}\r\n\r\nconst formValuesToFormObjectCreator = entityConstructor => (formValues: IParams) => {\r\n const data = new entityConstructor()\r\n\r\n Object.entries(formValues).forEach(([key, value]) => {\r\n data.append(key, value)\r\n })\r\n return data\r\n}\r\n\r\nexport const getURLSearchParams = formValuesToFormObjectCreator(URLSearchParams)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport { createReducer, createModuleAction } from 'redux-app/utils/reducer'\r\n\r\nconst createAction = createModuleAction('formUtil')\r\nconst sendDataToServerInProgress = createAction('SEND_DATA_TO_SERVER_IN_PROGRESS')\r\nconst sendDataToServerFinished = createAction('SEND_DATA_TO_SERVER_FINISHED')\r\n\r\nexport const onSendDataToServer = () => dispatch => {\r\n return dispatch(sendDataToServerInProgress())\r\n}\r\n\r\nexport const onFinishSendDataToServer = () => dispatch => {\r\n return dispatch(sendDataToServerFinished())\r\n}\r\n\r\nconst ACTION_HANDLERS = {\r\n [sendDataToServerInProgress.toString()]: state => ({\r\n ...state,\r\n isSendingInProgress: true,\r\n }),\r\n [sendDataToServerFinished.toString()]: state => ({\r\n ...state,\r\n isSendingInProgress: false,\r\n }),\r\n}\r\n\r\nconst initialState = {\r\n isSendingInProgress: false,\r\n}\r\n\r\nexport default createReducer(initialState, ACTION_HANDLERS)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport { createReducer } from 'redux-app/utils/reducer'\r\n\r\nconst MODULE_NAME = 'modal'\r\n\r\nexport const OPEN_MODAL = `${MODULE_NAME}/OPEN_MODAL`\r\nexport const CLOSE_MODAL = `${MODULE_NAME}/CLOSE_MODAL`\r\n\r\nexport const openModal = ({ name, data }: { name: string, data?: any }) => ({\r\n type: OPEN_MODAL,\r\n payload: { name, data },\r\n})\r\n\r\nexport const closeModal = ({ name }) => ({\r\n type: CLOSE_MODAL,\r\n payload: { name },\r\n})\r\n\r\nconst ACTION_HANDLERS = {\r\n [OPEN_MODAL]: (state, { payload: { name, data = {} } }) => ({\r\n ...state,\r\n [name]: {\r\n isOpen: true,\r\n data,\r\n },\r\n }),\r\n [CLOSE_MODAL]: (state, { payload: { name } }) => ({\r\n ...state,\r\n [name]: {\r\n isOpen: false,\r\n data: {},\r\n },\r\n }),\r\n}\r\n\r\nconst initialState = {}\r\n\r\nexport default createReducer(initialState, ACTION_HANDLERS)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nexport const DATE_FORMATS = {\r\n printed: 'MM/DD/YYYY',\r\n printedWithTime: 'MM/DD/YYYY H:mm A',\r\n printedWithTime12H: 'MM/DD/YYYY hh:mm A',\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport moment from 'moment-timezone'\r\nimport { DATE_FORMATS } from 'constants/dates'\r\n\r\nexport const getYearsDuration = addedYears => {\r\n const date = moment()\r\n const start = date.year()\r\n const end = date.add(addedYears, 'years').year()\r\n return [\r\n start,\r\n end,\r\n ]\r\n}\r\n\r\nexport const getPrintedDateWithTime = date => {\r\n return moment.utc(date).format(DATE_FORMATS.printedWithTime)\r\n}\r\n\r\nexport const getPrintedDate = date => {\r\n return moment.utc(date).format(DATE_FORMATS.printed)\r\n}\r\n\r\nexport const getPrintedDateWithTimeLocal = date => {\r\n return moment.utc(date).local().format(DATE_FORMATS.printedWithTime)\r\n}\r\n\r\nexport const getPrintedDateLocal = date => {\r\n return moment.utc(date).local().format(DATE_FORMATS.printed)\r\n}\r\n\r\nexport const getEndCurrentDayTimestamp = () => moment.utc().endOf('day').valueOf()\r\n\r\nexport const getUtcOffset = () => moment.utc().utcOffset()\r\n\r\nexport const getCurrentYearNumber = () => moment().year()\r\n\r\nexport const getCurrentMonthIndex = () => moment().month()\r\n\r\nexport const checkIsCardExpired = (expirationMonth, expirationYear) => {\r\n const expirationDate = moment(`20${expirationYear}-${expirationMonth}-1`)\r\n const currentDate = moment()\r\n\r\n expirationDate.add(1, 'months')\r\n\r\n return currentDate.isSameOrAfter(expirationDate)\r\n}\r\n\r\nexport const isDateAfter = (dateA, dateB) => {\r\n return moment(dateA).isAfter(moment(dateB))\r\n}\r\n\r\nexport const isContractExpired = (contractEndDate) => {\r\n\r\n if (!contractEndDate) {\r\n return false\r\n }\r\n \r\n let currentDateTime = moment().tz('America/Los_Angeles').format()\r\n // contract expires at 12 AM next day\r\n let contractDateTime = moment(contractEndDate).tz('America/Los_Angeles').startOf('day').add(1, 'days').format()\r\n\r\n return isDateAfter(currentDateTime, contractDateTime)\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport _get from 'lodash/get'\r\n\r\nconst variableTemplate = /[%][{][A-Za-z0-9]+[}]/g\r\nconst replacedVariableTemplate = /(%|{|})/g\r\n\r\ninterface ITextParams {\r\n texts: object,\r\n startPath?: string,\r\n}\r\n\r\nexport const text = ({ texts = {}, startPath }: ITextParams) => (path: string = '', params?: any) => {\r\n const text = _get(texts, `${startPath}.${path}`, _get(texts, path, ''))\r\n if (!params) {\r\n return text\r\n }\r\n const result = text.replace(variableTemplate, value => {\r\n const key = value.replace(replacedVariableTemplate, '')\r\n return _get(params, key)\r\n })\r\n return result\r\n}\r\n\r\nexport const mergeTexts = (fallbackTexts = {}, newTexts = {}) => {\r\n return Object.entries({ ...fallbackTexts, ...newTexts }).reduce((acc, [key, value]) => ({\r\n ...acc,\r\n [key]: value ? value : fallbackTexts[key],\r\n }), {})\r\n}\r\n","import env from 'env'\r\n\r\nexport const getContacts = () => ({\r\n type: 'CONTACTS/SUPPORT',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/contacts/support',\r\n headers: {},\r\n method: 'GET',\r\n },\r\n },\r\n meta: {},\r\n})\r\n\r\ngetContacts.toString = () => 'CONTACTS/SUPPORT'\r\n","import { handlePromiseActions } from 'redux-app/utils/reducer'\r\nimport { onShowError } from 'redux-app/modules/alerts'\r\nimport { getContacts } from 'api/client/actions/contacts'\r\nimport { loadingWrapper } from 'redux-app/utils/loadingWrapper'\r\n\r\nexport const onGetContacts = () => dispatch => {\r\n return dispatch(getContacts())\r\n .catch(error => {\r\n dispatch(onShowError(error))\r\n throw error\r\n })\r\n}\r\n\r\nconst ACTION_HANDLERS = {\r\n [getContacts.toString()]: loadingWrapper('contacts', [\r\n null,\r\n (state, { payload: { result } }) => result,\r\n null,\r\n ]),\r\n}\r\n\r\nconst initialState = {\r\n contacts: [],\r\n}\r\n\r\nexport default handlePromiseActions(ACTION_HANDLERS, initialState)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport _isFunction from 'lodash/isFunction'\r\n\r\nconst loadingObjects = [\r\n {\r\n loading: true,\r\n loaded: false,\r\n },\r\n {\r\n loading: false,\r\n loaded: true,\r\n },\r\n {\r\n loading: false,\r\n loaded: false,\r\n },\r\n]\r\n\r\nconst mapper = key => (handler, index) => (state, action) => {\r\n const newState = {\r\n ...state,\r\n [key]: {\r\n ...state[key],\r\n ...loadingObjects[index],\r\n },\r\n }\r\n if (_isFunction(handler)) {\r\n newState[key].value = handler(state, action, state[key].value)\r\n }\r\n return newState\r\n}\r\n\r\nexport const loadingWrapper = (key, handlers) => handlers.map(mapper(key))\r\n","export default {\r\n api: '//epson-subs-dev-api.azurewebsites.net',\r\n paymetric: '//cert-xiecomm.worldpay.com',\r\n analytics: {\r\n account: 'epson',\r\n profile: 'subscription',\r\n environment: 'dev',\r\n },\r\n isDebugInfo: true,\r\n}\r\n","export default {\r\n api: '//qa-api.readyprint.epson.com',\r\n analytics: {\r\n account: 'epson',\r\n profile: 'subscription',\r\n environment: 'qa',\r\n },\r\n isDebugInfo: true,\r\n}\r\n","export default {\r\n api: '//stg-api.readyprint.epson.com',\r\n analytics: {\r\n account: 'epson',\r\n profile: 'subscription',\r\n environment: 'qa',\r\n },\r\n isDebugInfo: false,\r\n}\r\n","export default {\r\n api: '//api.readyprint.epson.com',\r\n paymetric: '//xiecomm.worldpay.com',\r\n analytics: {\r\n account: 'epson',\r\n profile: 'subscription',\r\n environment: 'prod',\r\n },\r\n isDebugInfo: false,\r\n}\r\n","import devConfig from './dev'\r\nimport qaConfig from './qa'\r\nimport stgConfig from './stg'\r\nimport prodConfig from './prod'\r\n\r\nconst ENVS = {\r\n dev: 'dev',\r\n qa: 'qa',\r\n stg: 'stg',\r\n prod: 'prod',\r\n}\r\n\r\ninterface IEnv {\r\n reCaptchaSiteKey: string,\r\n api: string,\r\n paymetric: string,\r\n analytics: {\r\n account: string,\r\n profile: string,\r\n environment: string,\r\n },\r\n isDebugInfo: boolean,\r\n}\r\n\r\nconst getEnvConfig = (env = ENVS.dev): IEnv => {\r\n const config = devConfig\r\n\r\n if (env === ENVS.qa) {\r\n return {\r\n ...config,\r\n ...qaConfig,\r\n }\r\n }\r\n\r\n if (env === ENVS.stg) {\r\n return {\r\n ...config,\r\n ...stgConfig,\r\n }\r\n }\r\n\r\n if (env === ENVS.prod) {\r\n return {\r\n ...config,\r\n ...prodConfig,\r\n }\r\n }\r\n\r\n return config\r\n}\r\n\r\nexport default getEnvConfig(window.env)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport env from 'env'\r\nimport { getURLSearchParams } from 'redux-app/utils/api'\r\n\r\nexport const login = ({ username, password, googleRecaptchaResponse, authToken }) => ({\r\n type: 'AUTH/LOGIN',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/auth/token',\r\n data: {\r\n username,\r\n password,\r\n googleRecaptchaResponse,\r\n authToken,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nlogin.toString = () => 'AUTH/LOGIN'\r\n\r\nexport const logout = ({ authToken, refreshToken }) => ({\r\n type: 'AUTH/LOGOUT',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/auth/logout',\r\n data: {\r\n authToken,\r\n refreshToken,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {},\r\n})\r\nlogout.toString = () => 'AUTH/LOGOUT'\r\n\r\nexport const refresh = ({ refresh_token }) => ({\r\n type: 'AUTH/REFRESH_TOKEN',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/auth/token',\r\n data: {\r\n refreshToken: refresh_token,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nrefresh.toString = () => 'AUTH/REFRESH_TOKEN'\r\n\r\nexport const signUp = ({\r\n email,\r\n password,\r\n googleRecaptchaResponse,\r\n subscriptionPlanId,\r\n}) => ({\r\n type: 'AUTH/SIGN_UP',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/accounts',\r\n data: {\r\n email,\r\n password,\r\n googleRecaptchaResponse,\r\n subscriptionPlanId,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nsignUp.toString = () => 'AUTH/SIGN_UP'\r\n\r\nexport const forgotPassword = ({ email, googleRecaptchaResponse }) => ({\r\n type: 'AUTH/FORGOT_PASSWORD',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/accounts/password/reset',\r\n data: {\r\n email,\r\n googleRecaptchaResponse,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nforgotPassword.toString = () => 'AUTH/FORGOT_PASSWORD'\r\n\r\nexport const resendForgotPassword = token => ({\r\n type: 'AUTH/RESEND_FORGOT_PASSWORD',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/accounts/password/reset/resend',\r\n data: {\r\n token,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nresendForgotPassword.toString = () => 'AUTH/RESEND_FORGOT_PASSWORD'\r\n\r\nexport const resetPassword = ({\r\n password,\r\n token,\r\n}) => ({\r\n type: 'AUTH/RESET_PASSWORD',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/accounts/password/update',\r\n data: {\r\n password,\r\n token,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nresetPassword.toString = () => 'AUTH/RESET_PASSWORD'\r\n\r\nexport const confirmEmail = ({ token }) => ({\r\n type: 'AUTH/CONFIRM_EMAIL',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/accounts/registration/confirm',\r\n data: {\r\n token,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nconfirmEmail.toString = () => 'AUTH/CONFIRM_EMAIL'\r\n\r\nexport const resendEmail = ({ token }) => ({\r\n type: 'AUTH/RESEND_EMAIL',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/accounts/registration/resend',\r\n data: {\r\n token,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nresendEmail.toString = () => 'AUTH/RESEND_EMAIL'\r\n\r\nexport const setPassword = ({ password, confirmPassword, code, isAcceptedTermsOfService }) => ({\r\n type: 'AUTH/SET_PASSWORD',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/account/set-password',\r\n data: {\r\n code,\r\n password,\r\n confirmPassword,\r\n isAcceptedTermsOfService,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nsetPassword.toString = () => 'AUTH/SET_PASSWORD'\r\n\r\nexport const checkChangePasswordLink = ({ code }) => ({\r\n type: 'AUTH/CHECK_CHANGE_PASSWORD_LINK',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/account/confirmation-link-token/validation?${getURLSearchParams({ code })}`,\r\n headers: {},\r\n method: 'GET',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\ncheckChangePasswordLink.toString = () => 'AUTH/CHECK_CHANGE_PASSWORD_LINK'\r\n\r\nexport const completeInitialSubscription = ({\r\n userId,\r\n billingAddress,\r\n company,\r\n shippingAddress,\r\n creditCard,\r\n}) => ({\r\n type: 'AUTH/COMPLETE_SUBSCRIPTIONS',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/subscriptions/initial',\r\n data: {\r\n userId,\r\n billingAddress,\r\n company,\r\n shippingAddress,\r\n creditCard,\r\n },\r\n headers: {},\r\n method: 'PUT',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\ncompleteInitialSubscription.toString = () => 'AUTH/COMPLETE_SUBSCRIPTIONS'\r\n\r\nexport const confirmChangeEmail = ({ token }) => ({\r\n type: 'AUTH/CONFIRM_CHANGE_EMAIL',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/accounts/email/confirm',\r\n data: {\r\n token,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nconfirmChangeEmail.toString = () => 'AUTH/CONFIRM_CHANGE_EMAIL'\r\n\r\nexport const leaveEmail = (planId, { name, email, captcha: googleRecaptchaResponse }) => ({\r\n type: 'AUTH/LEAVE_EMAIL',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/subscription-plans/${planId}/wait-list`,\r\n data: {\r\n name,\r\n email,\r\n googleRecaptchaResponse,\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nleaveEmail.toString = () => 'AUTH/LEAVE_EMAIL'\r\n\r\nexport const addMeToWaitlist = planId => ({\r\n type: 'AUTH/ADD_ME_TO_WAITLIST',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/subscription-plans/${planId}/wait-list/me`,\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {},\r\n})\r\naddMeToWaitlist.toString = () => 'AUTH/ADD_ME_TO_WAITLIST'\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport { tokenService } from 'services/Token'\r\nimport { analytics, PAGE_CONTENT_TYPES } from 'services/Analytics'\r\nimport { ROUTES } from 'constants/routes'\r\nimport { USER_LOGOUT_ACTION } from 'constants/user'\r\nimport { REGISTRATION_STEPS } from 'constants/auth'\r\nimport { onShowError } from 'redux-app/modules/alerts'\r\nimport { getSelectedPlanId } from 'redux-app/selectors/subscription'\r\nimport {\r\n refresh,\r\n login,\r\n signUp,\r\n forgotPassword,\r\n resetPassword,\r\n completeInitialSubscription,\r\n} from 'api/client/actions/auth'\r\nimport { getUserDetails } from 'api/client/actions/user'\r\nimport { verifyCurrentCard } from 'api/client/actions/card'\r\nimport { IState } from 'redux-app/types/auth'\r\nimport { \r\n isUserAbleToOpenProfile, \r\n isUserNeedsToRenewSubscription, \r\n getUserDetails as userDetailsState \r\n} from 'redux-app/selectors/user'\r\nimport { loadingWrapper } from 'redux-app/utils/loadingWrapper'\r\nimport { handlePromiseActions, createModuleAction } from 'redux-app/utils/reducer'\r\nimport { history } from 'utils/location'\r\nimport { getSignInStep } from 'utils/user'\r\n\r\nconst createAction = createModuleAction('AUTH')\r\n\r\nconst update = createAction('UPDATE')\r\nexport const updateUserRole = createAction('UPDATE_USER_ROLE')\r\nexport const updateRegistrationStep = createAction('UPDATE_REGISTRATION_STEP')\r\nconst clearError = createAction('CLEAR_ERROR')\r\n\r\nexport const onLogin = ({ email, password, captcha }) => (dispatch, getState) => {\r\n const formValues = { username: email, password, googleRecaptchaResponse: captcha }\r\n return dispatch(login(formValues))\r\n .then(({ value: { result: { access_token: accessToken } } }) => {\r\n const { role } = tokenService.getTokenPayload(accessToken)\r\n\r\n return dispatch(getUserDetails())\r\n .then(({ value: { result: userDetails } }) => {\r\n\r\n if (!userDetails.emailConfirmed)\r\n {\r\n return userDetails\r\n }\r\n\r\n dispatch(updateRegistrationStep(getSignInStep(userDetails)))\r\n\r\n analytics.login({ userId: userDetails.userId, contentType: PAGE_CONTENT_TYPES.login })\r\n dispatch(update({\r\n token: {\r\n role,\r\n },\r\n }))\r\n })\r\n })\r\n .then(() => {\r\n\r\n var isEmailConfirmed = userDetailsState(getState()).emailConfirmed\r\n if (isEmailConfirmed)\r\n {\r\n if (isUserNeedsToRenewSubscription(getState())) {\r\n dispatch(verifyCurrentCard()).then(({ value: { result } }) => {\r\n history.push(ROUTES.profile.renewPlan.root)\r\n return\r\n })\r\n .catch(error => {\r\n onShowError(error)\r\n })\r\n }\r\n else if (isUserAbleToOpenProfile(getState())) {\r\n history.push(ROUTES.profile.view)\r\n } else {\r\n history.push(ROUTES.profile.create)\r\n }\r\n }\r\n })\r\n}\r\n\r\nexport const onSignUp = ({\r\n email,\r\n password,\r\n captcha,\r\n}) =>\r\n(dispatch, getState) => {\r\n const state = getState()\r\n const body = {\r\n email,\r\n password,\r\n googleRecaptchaResponse: captcha,\r\n subscriptionPlanId: getSelectedPlanId(state),\r\n }\r\n return dispatch(signUp(body))\r\n .then(({ value: { result } }) => {\r\n })\r\n}\r\n\r\nexport const onForgotPassword = ({ email, captcha }) =>\r\n dispatch => dispatch(forgotPassword({ email, googleRecaptchaResponse: captcha }))\r\n\r\nexport const onResetPassword = formValues => dispatch => dispatch(resetPassword(formValues))\r\n\r\nexport const onSaveInitialSubscription = ({\r\n userId,\r\n billingAddress,\r\n company,\r\n shippingAddress,\r\n creditCard,\r\n}) => dispatch => {\r\n return dispatch(completeInitialSubscription({\r\n userId,\r\n billingAddress,\r\n company,\r\n shippingAddress,\r\n creditCard,\r\n }))\r\n}\r\n\r\nexport const onCompleteInitialSubscription = () => dispatch => {\r\n return dispatch(getUserDetails()).then(() => {\r\n dispatch(updateRegistrationStep(REGISTRATION_STEPS.terms))\r\n })\r\n}\r\n\r\nconst ACTION_HANDLERS = {\r\n [update]: (state, { payload }) => ({\r\n ...state,\r\n token: {\r\n ...state.token,\r\n value: {\r\n ...state.token.value,\r\n ...payload.token,\r\n },\r\n },\r\n }),\r\n [refresh.toString()]: loadingWrapper('token', [\r\n null,\r\n (state, { payload: { result } }) => ({\r\n access: result.access_token,\r\n refresh: result.refresh_token,\r\n }),\r\n state => ({\r\n ...state.token.value,\r\n access: null,\r\n refresh: null,\r\n role: null,\r\n }),\r\n ]),\r\n [login.toString()]: loadingWrapper('token', [\r\n null,\r\n (state, { payload: { result } }) => ({\r\n access: result.access_token,\r\n refresh: result.refresh_token,\r\n }),\r\n state => ({\r\n ...state.token.value,\r\n access: null,\r\n refresh: null,\r\n role: null,\r\n }),\r\n ]),\r\n [updateUserRole.toString()]: (state, { payload }) => ({\r\n ...state,\r\n token: {\r\n ...state.token,\r\n value: {\r\n ...state.token.value,\r\n role: payload,\r\n },\r\n },\r\n }),\r\n [USER_LOGOUT_ACTION]: state => ({\r\n ...state,\r\n token: {\r\n loaded: false,\r\n loading: false,\r\n value: null,\r\n },\r\n registrationStep: null,\r\n }),\r\n [clearError]: state => ({\r\n ...state,\r\n error: null,\r\n }),\r\n [updateRegistrationStep.toString()]: (state, { payload }) => ({\r\n ...state,\r\n registrationStep: payload,\r\n }),\r\n}\r\n\r\nconst initialState: IState = {\r\n token: {\r\n value: {\r\n role: null,\r\n },\r\n },\r\n error: null,\r\n registrationStep: null,\r\n}\r\n\r\nexport default handlePromiseActions(ACTION_HANDLERS, initialState)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport { createModuleAction, createReducer } from 'redux-app/utils/reducer'\r\n\r\nconst createAction = createModuleAction('PAGE_SCROLLER')\r\n\r\nexport const setScrollElementId = createAction('SET_SCROLL_ELEMENT_ID')\r\n\r\nconst ACTION_HANDLERS = {\r\n [setScrollElementId.toString()]: (state, { payload }) => payload,\r\n}\r\n\r\nconst initialState = null\r\n\r\nexport default createReducer(initialState, ACTION_HANDLERS)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport _get from 'lodash/get'\r\nimport { createSelector } from 'reselect'\r\nimport { EMPTY_OBJECT } from 'constants/frozenObjects'\r\nimport { Selector } from 'redux-app/types/selectors'\r\nimport { ILocalizationState } from 'redux-app/types/localization'\r\n\r\nexport const getData: Selector = state => state.localization\r\nexport const getLang = state => getData(state).lang\r\nexport const getLinksValue = state => _get(getData(state), ['links', 'value'], EMPTY_OBJECT)\r\nexport const getLinksUpdated = state => _get(getLinksValue(state), ['meta', 'updated'])\r\nexport const getLinks = state => getLinksValue(state).links || EMPTY_OBJECT\r\nexport const getLocalTexts = state => getData(state).localTexts\r\nexport const getLoadedTextsValue = state => _get(getData(state), ['loadedTexts', 'value'], EMPTY_OBJECT)\r\nexport const getLoadedTextsUpdated = state => _get(getLoadedTextsValue(state), ['meta', 'updated'])\r\nexport const getLoadedTexts = state => _get(getLoadedTextsValue(state), 'texts', EMPTY_OBJECT)\r\nexport const isTextsLoading = state => _get(getData(state), ['loadedTexts', 'loading'], false)\r\n\r\nexport const getCurrentTexts = createSelector(\r\n getLocalTexts,\r\n getLoadedTexts,\r\n getLinks,\r\n (localTexts, loadedTexts, links) => ({\r\n ...loadedTexts,\r\n ...localTexts,\r\n links,\r\n }),\r\n)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport { USER_LOGOUT_ACTION } from 'constants/user'\r\nimport {\r\n getUserDetails,\r\n getShippingHistory,\r\n getPaymentHistory,\r\n} from 'api/client/actions/user'\r\nimport { handlePromiseActions, createModuleAction } from 'redux-app/utils/reducer'\r\nimport { loadingWrapper } from 'redux-app/utils/loadingWrapper'\r\n\r\nconst createAction = createModuleAction('user')\r\n\r\nexport const acceptCookie = createAction('ACCEPT_COOKIE')\r\nexport const onShowNewPlanAcceptedMessage = createAction('SHOW_NEW_PLAN_MESSAGE')\r\nexport const onHideNewPlanAcceptedMessage = createAction('HIDE_NEW_PLAN_MESSAGE')\r\n\r\nconst ACTION_HANDLERS = {\r\n [getUserDetails.toString()]: loadingWrapper('userDetails', [\r\n null,\r\n (state, { payload: { result } }) => result,\r\n null,\r\n ]),\r\n [acceptCookie.toString()]: state => ({\r\n ...state,\r\n isCookieAccepted: true,\r\n }),\r\n [onShowNewPlanAcceptedMessage.toString()]: state => ({\r\n ...state,\r\n isPlanAcceptedMessageShown: true,\r\n }),\r\n [onHideNewPlanAcceptedMessage.toString()]: state => ({\r\n ...state,\r\n isPlanAcceptedMessageShown: false,\r\n }),\r\n [USER_LOGOUT_ACTION]: state => ({\r\n ...initialState,\r\n isCookieAccepted: state.isCookieAccepted,\r\n }),\r\n [getShippingHistory.toString()]: loadingWrapper('subscriptionHistory', [\r\n null,\r\n (state, { payload: { result } }) => result,\r\n null,\r\n ]),\r\n [getPaymentHistory.toString()]: loadingWrapper('paymentHistory', [\r\n null,\r\n (state, { payload: { result } }) => result,\r\n null,\r\n ]),\r\n}\r\n\r\nexport const initialState = {\r\n userDetails: {},\r\n isCookieAccepted: false,\r\n subscriptionHistory: {\r\n value: [],\r\n },\r\n paymentHistory: {\r\n value: [],\r\n },\r\n isPlanAcceptedMessageShown: false,\r\n}\r\n\r\nexport default handlePromiseActions(ACTION_HANDLERS, initialState)\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport { createModuleAction, createReducer } from 'redux-app/utils/reducer'\r\n\r\nconst createAction = createModuleAction('SUBSCRIPTIONS')\r\n\r\nexport const plans = createAction('PLANS')\r\nexport const setRenewalPlans = createAction('RENEWAL_PLANS')\r\nexport const selectPlan = createAction('SELECT_PLAN')\r\n\r\nconst ACTION_HANDLERS = {\r\n [plans.toString()]: (state, { payload }) => ({\r\n ...state,\r\n subscriptionPlans: payload,\r\n }),\r\n [setRenewalPlans.toString()]: (state, { payload }) => ({\r\n ...state,\r\n renewalPlans: payload,\r\n }),\r\n [selectPlan.toString()]: (state, { payload }) => ({\r\n ...state,\r\n selectedPlanId: payload,\r\n }),\r\n}\r\n\r\nconst initialState = {\r\n subscriptionPlans: [],\r\n renewalPlans: [],\r\n selectedPlanId: null,\r\n}\r\n\r\nexport default createReducer(initialState, ACTION_HANDLERS)\r\n","import _get from 'lodash/get'\r\n\r\nexport const isPlanAvailable = plan => _get(plan, 'hasAvailableDevices', true)\r\nexport const isInventoryForChangePlanAvailable = plan => _get(plan, 'hasInventoryForChangePlan', true)\r\n","export enum VIEW_PAYLOAD_KEYS {\r\n customerStatus = 'customer_status',\r\n customerId = 'customer_id',\r\n customerSubscriptionPlanType = 'customer_subscription_plan_type',\r\n errorDisplayType = 'error_display_type',\r\n errorMessages = 'error_messages',\r\n errorType = 'error_type',\r\n languageCode = 'language_code',\r\n orderCouponCode = 'order_coupon_code',\r\n orderCurrency = 'order_currency',\r\n orderDiscount = 'order_discount',\r\n orderId = 'order_id',\r\n orderPaymentType = 'order_payment_type',\r\n orderSubtotal = 'order_subtotal',\r\n orderTax = 'order_tax',\r\n orderTotal = 'order_total',\r\n subscriptionPlanName = 'subscription_plan_name',\r\n subscriptionPlanId = 'subscription_plan_id',\r\n subscriptionPlanListPrice = 'subscription_plan_list_price',\r\n subscriptionPlanNetPrice = 'subscription_plan_net_price',\r\n subscriptionId = 'subscription_id',\r\n subscriptionContractId = 'subscription_contract_id',\r\n pageContentType = 'page_content_type',\r\n pageName = 'page_name',\r\n pageTemplateName = 'page_template_name',\r\n siteCurrency = 'site_currency',\r\n siteRegion = 'site_region',\r\n siteSection = 'site_section',\r\n siteType = 'site_type',\r\n eventType = 'event_type',\r\n eventName = 'event_name',\r\n destinationUrl = 'destination_url',\r\n}\r\n\r\nexport enum LINK_PAYLOAD_KEYS {\r\n eventType = 'event_type',\r\n eventName = 'event_name',\r\n pageName = 'page_name',\r\n customerId = 'customer_id',\r\n upgradePlan = 'upgrade_plan',\r\n downgradePlan = 'downgrade_plan',\r\n enrollPlan = 'enroll_subscription_plan',\r\n extendPlan = 'extend_subscription_plan',\r\n renewalTerm = 'renewal_term',\r\n subscriptionPlanName = 'subscription_plan_name',\r\n subscriptionPlanId = 'subscription_plan_id',\r\n subscriptionPlanListPrice = 'subscription_plan_list_price',\r\n subscriptionPlanNetPrice = 'subscription_plan_net_price',\r\n subscriptionId = 'subscription_id',\r\n activationFeeCheckbox = 'activation_fee_checkbox',\r\n}\r\n\r\nexport enum CUSTOMER_STATUSES {\r\n loggedIn = 'logged_in',\r\n notLoggedIn = 'not_logged_in',\r\n}\r\n\r\nexport enum PAGE_CONTENT_TYPES {\r\n home = 'home',\r\n myAccount = 'my_account',\r\n checkout = 'checkout',\r\n contact = 'contact',\r\n login = 'login',\r\n orderConfirmation = 'order_confirmation',\r\n forgotPassword = 'forgot_password',\r\n}\r\n\r\nexport const SITE_TYPE = 'epson ready ink:us'\r\n\r\nexport enum PAGE_TEMPLATE_NAMES {\r\n home = 'home',\r\n myAccount = 'my_account',\r\n signUp = 'sign_up',\r\n login = 'login',\r\n contactUs = 'contact_us',\r\n paymentAndShipping = 'payment_and_shipping',\r\n reviewTerms = 'review_terms',\r\n congratulations = 'congratulations',\r\n confirmEmail = 'confirm_email',\r\n forgotPassword = 'forgot_password',\r\n}\r\n\r\nexport enum SITE_SECTIONS {\r\n home = 'Home',\r\n login = 'Log in',\r\n signUp = 'Sign up',\r\n contact = 'Contact',\r\n myAccount = 'My account',\r\n paymentAndShipping = 'Payment & shipping',\r\n businessDetails = 'Business details',\r\n paymentDetails = 'Payment details',\r\n shippingAddress = 'Shipping address',\r\n billingAddress = 'Billing address',\r\n reviewTerms = 'Review terms',\r\n congratulations = 'Congratulations',\r\n confirmEmail = 'Confirm email',\r\n forgotPassword = 'Forgot password',\r\n}\r\n","import { ROUTES } from 'constants/routes'\r\nimport { SITE_TYPE, PAGE_CONTENT_TYPES, SITE_SECTIONS } from './constants'\r\n\r\nexport const getPageName = ({ pageContentType, pathname, sectionType }) =>\r\n `${SITE_TYPE}:${pageContentType}:${pathname}:${sectionType}`\r\n\r\nexport const getPageNameParams = ({ pathname = window.location.pathname, sectionType = '' } = {}) => {\r\n if (pathname === ROUTES.home.logIn) {\r\n return {\r\n pageContentType: PAGE_CONTENT_TYPES.login,\r\n pathname,\r\n sectionType: sectionType || SITE_SECTIONS.login,\r\n }\r\n }\r\n if (pathname === ROUTES.home.home) {\r\n return {\r\n pageContentType: PAGE_CONTENT_TYPES.home,\r\n pathname,\r\n sectionType: sectionType || SITE_SECTIONS.home,\r\n }\r\n }\r\n if (pathname === ROUTES.home.signUp) {\r\n return {\r\n pageContentType: PAGE_CONTENT_TYPES.checkout,\r\n pathname,\r\n sectionType: sectionType || SITE_SECTIONS.signUp,\r\n }\r\n }\r\n if (pathname === ROUTES.home.contactUs) {\r\n return {\r\n pageContentType: PAGE_CONTENT_TYPES.contact,\r\n pathname,\r\n sectionType: sectionType || SITE_SECTIONS.contact,\r\n }\r\n }\r\n if (pathname === ROUTES.profile.create) {\r\n return {\r\n pageContentType: PAGE_CONTENT_TYPES.checkout,\r\n pathname,\r\n sectionType,\r\n }\r\n }\r\n if (pathname === ROUTES.home.confirmEmail.root) {\r\n return {\r\n pageContentType: PAGE_CONTENT_TYPES.orderConfirmation,\r\n pathname,\r\n sectionType: SITE_SECTIONS.confirmEmail,\r\n }\r\n }\r\n if (\r\n [\r\n ROUTES.profile.view,\r\n ROUTES.profile.changePlan.root,\r\n ROUTES.profile.settings,\r\n ROUTES.profile.changePlan.newPlanAccepted,\r\n ROUTES.profile.renewPlan.root,\r\n ROUTES.profile.renewPlan.terms,\r\n ROUTES.profile.renewPlan.accepted,\r\n ROUTES.profile.enrollPlan.root,\r\n ROUTES.profile.enrollPlan.terms,\r\n ROUTES.profile.enrollPlan.accepted,\r\n ROUTES.profile.enrollPlan.renewAndchangeAccepted,\r\n ].some(routePath => routePath === pathname)\r\n ) {\r\n return {\r\n pageContentType: PAGE_CONTENT_TYPES.myAccount,\r\n pathname,\r\n sectionType: sectionType || SITE_SECTIONS.myAccount,\r\n }\r\n }\r\n if (pathname === ROUTES.home.forgotPassword) {\r\n return {\r\n pageContentType: PAGE_CONTENT_TYPES.forgotPassword,\r\n pathname,\r\n sectionType: sectionType || SITE_SECTIONS.forgotPassword,\r\n }\r\n }\r\n\r\n return {\r\n pageContentType: '',\r\n pathname,\r\n sectionType,\r\n }\r\n}\r\n\r\nexport const getFirstOrSecondCreator = predicate => (first, second = '') => {\r\n return predicate ? first : second\r\n}\r\n\r\nexport const getNormalizedStringValue = (value = '') => value.toLowerCase().replace(' ', '_')\r\n","import env from 'env'\r\nimport { ROUTES } from 'constants/routes'\r\nimport { getLang } from 'redux-app/selectors/localization'\r\nimport {\r\n getUserId,\r\n getSubscriptionName,\r\n getUserActivePlanId,\r\n getActivePlanPrice,\r\n getActiveSubscriptionId,\r\n getActiveSubscriptionContractId,\r\n} from 'redux-app/selectors/user'\r\nimport { \r\n getSelectedPlanId, \r\n getSelectedPlanPrice, \r\n getSelectedPlanName, \r\n isSelectedPlanAvailable } from 'redux-app/selectors/subscription'\r\nimport { isUserAuthorizated } from 'redux-app/selectors/auth'\r\nimport {\r\n VIEW_PAYLOAD_KEYS,\r\n LINK_PAYLOAD_KEYS,\r\n CUSTOMER_STATUSES,\r\n PAGE_CONTENT_TYPES,\r\n SITE_SECTIONS,\r\n SITE_TYPE,\r\n PAGE_TEMPLATE_NAMES,\r\n} from './constants'\r\nimport { getPageName, getPageNameParams, getFirstOrSecondCreator, getNormalizedStringValue } from './utils'\r\nimport { SUBSCRIPTION_PLAN_TYPE } from 'constants/subscription'\r\n\r\ninterface IAnalyticsService {\r\n init: (params: { account: string, profile: string, environment: string }) => Promise<{}>,\r\n view: (payload: { [key: string]: string }) => void,\r\n link: (payload: { [key: string]: string }) => void,\r\n}\r\n\r\nconst getNormalizedLang = state => getNormalizedStringValue(getLang(state))\r\nconst getNormalizedActivePlanName = state => getNormalizedStringValue(getSubscriptionName(state))\r\nconst getNormalizedSelectedPlanName = state => getNormalizedStringValue(getSelectedPlanName(state))\r\n\r\nclass Analytics {\r\n private readonly analyticsService: IAnalyticsService = null\r\n private getState = null\r\n\r\n constructor (analyticsService: IAnalyticsService) {\r\n this.analyticsService = analyticsService\r\n }\r\n\r\n public init (getState) {\r\n this.getState = getState\r\n return this.analyticsService.init({\r\n account: env.analytics.account,\r\n profile: env.analytics.profile,\r\n environment: env.analytics.environment,\r\n })\r\n }\r\n\r\n private getPayloadForOtherPage = () => {\r\n const getValueForAuthorized = getFirstOrSecondCreator(isUserAuthorizated(this.getState()))\r\n return {\r\n [VIEW_PAYLOAD_KEYS.customerId]: getValueForAuthorized(getUserId(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.customerStatus]:\r\n getValueForAuthorized(CUSTOMER_STATUSES.loggedIn, CUSTOMER_STATUSES.notLoggedIn),\r\n [VIEW_PAYLOAD_KEYS.customerSubscriptionPlanType]:\r\n getValueForAuthorized(getNormalizedActivePlanName(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.languageCode]: getNormalizedLang(this.getState()),\r\n [VIEW_PAYLOAD_KEYS.siteCurrency]: 'usd',\r\n [VIEW_PAYLOAD_KEYS.siteRegion]: 'us',\r\n [VIEW_PAYLOAD_KEYS.siteType]: SITE_TYPE,\r\n }\r\n }\r\n\r\n private getPayloadForCheckoutPage = () => {\r\n const getValueForAuthorized = getFirstOrSecondCreator(isUserAuthorizated(this.getState()))\r\n return {\r\n [VIEW_PAYLOAD_KEYS.customerId]: getValueForAuthorized(getUserId(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.customerStatus]:\r\n getValueForAuthorized(CUSTOMER_STATUSES.loggedIn, CUSTOMER_STATUSES.notLoggedIn),\r\n [VIEW_PAYLOAD_KEYS.customerSubscriptionPlanType]:\r\n getValueForAuthorized(getNormalizedActivePlanName(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.languageCode]: getNormalizedLang(this.getState()),\r\n [VIEW_PAYLOAD_KEYS.siteCurrency]: 'usd',\r\n [VIEW_PAYLOAD_KEYS.siteRegion]: 'us',\r\n [VIEW_PAYLOAD_KEYS.siteType]: SITE_TYPE,\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanName]:\r\n getValueForAuthorized(getNormalizedActivePlanName(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanId]: getValueForAuthorized(getUserActivePlanId(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanListPrice]: getValueForAuthorized(getActivePlanPrice(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanNetPrice]: getValueForAuthorized(getActivePlanPrice(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionId]: getValueForAuthorized(getActiveSubscriptionId(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionContractId]:\r\n getValueForAuthorized(getActiveSubscriptionContractId(this.getState())),\r\n }\r\n }\r\n\r\n private getPayloadForOrderConfirmationPage = () => {\r\n const getValueForAuthorized = getFirstOrSecondCreator(isUserAuthorizated(this.getState()))\r\n return {\r\n [VIEW_PAYLOAD_KEYS.customerId]: getValueForAuthorized(getUserId(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.customerStatus]:\r\n getValueForAuthorized(CUSTOMER_STATUSES.loggedIn, CUSTOMER_STATUSES.notLoggedIn),\r\n [VIEW_PAYLOAD_KEYS.customerSubscriptionPlanType]:\r\n getValueForAuthorized(getNormalizedActivePlanName(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.languageCode]: getNormalizedLang(this.getState()),\r\n [VIEW_PAYLOAD_KEYS.orderCouponCode]: '',\r\n [VIEW_PAYLOAD_KEYS.orderCurrency]: 'usd',\r\n [VIEW_PAYLOAD_KEYS.orderDiscount]: '',\r\n [VIEW_PAYLOAD_KEYS.orderId]: getValueForAuthorized(getActiveSubscriptionId(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.orderPaymentType]: '',\r\n [VIEW_PAYLOAD_KEYS.orderSubtotal]: '',\r\n [VIEW_PAYLOAD_KEYS.orderTax]: '',\r\n [VIEW_PAYLOAD_KEYS.orderTotal]: '',\r\n [VIEW_PAYLOAD_KEYS.siteCurrency]: 'usd',\r\n [VIEW_PAYLOAD_KEYS.siteRegion]: 'us',\r\n [VIEW_PAYLOAD_KEYS.siteType]: SITE_TYPE,\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanName]:\r\n getValueForAuthorized(getNormalizedActivePlanName(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanId]: getValueForAuthorized(getUserActivePlanId(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanListPrice]: getValueForAuthorized(getActivePlanPrice(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanNetPrice]: getValueForAuthorized(getActivePlanPrice(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionId]: getValueForAuthorized(getActiveSubscriptionId(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.subscriptionContractId]:\r\n getValueForAuthorized(getActiveSubscriptionContractId(this.getState())),\r\n [VIEW_PAYLOAD_KEYS.eventName]: 'my account',\r\n [VIEW_PAYLOAD_KEYS.eventType]: 'subscription sign up success',\r\n }\r\n }\r\n\r\n // view\r\n public openLoginPage () {\r\n this.analyticsService.view({\r\n ...this.getPayloadForOtherPage(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.login,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.login,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.login,\r\n })\r\n }\r\n\r\n public openContactPage () {\r\n this.analyticsService.view({\r\n ...this.getPayloadForOtherPage(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.contact,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.contactUs,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.contact,\r\n })\r\n }\r\n\r\n public openHomePage () {\r\n this.analyticsService.view({\r\n ...this.getPayloadForOtherPage(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.home,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.home,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.home,\r\n })\r\n }\r\n\r\n public openMyProfilePage () {\r\n this.analyticsService.view({\r\n ...this.getPayloadForOtherPage(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.myAccount,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.myAccount,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.myAccount,\r\n })\r\n }\r\n\r\n public openSignUpPage () {\r\n this.analyticsService.view({\r\n ...this.getPayloadForCheckoutPage(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.checkout,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.signUp,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.signUp,\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanId]: getSelectedPlanId(this.getState()),\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanName]: getNormalizedSelectedPlanName(this.getState()),\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanListPrice]: getSelectedPlanPrice(this.getState()),\r\n [VIEW_PAYLOAD_KEYS.subscriptionPlanNetPrice]: getSelectedPlanPrice(this.getState()),\r\n })\r\n }\r\n\r\n public openCreatePaymentAndShippingPage () {\r\n this.analyticsService.view({\r\n ...this.getPayloadForCheckoutPage(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.checkout,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams({ sectionType: SITE_SECTIONS.paymentAndShipping })),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.paymentAndShipping,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.paymentAndShipping,\r\n })\r\n }\r\n\r\n public openCreateReviewTermsPage () {\r\n this.analyticsService.view({\r\n ...this.getPayloadForCheckoutPage(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.checkout,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams({ sectionType: SITE_SECTIONS.reviewTerms })),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.reviewTerms,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.reviewTerms,\r\n })\r\n }\r\n\r\n public openCreateCongratulationsPage () {\r\n this.analyticsService.view({\r\n ...this.getPayloadForCheckoutPage(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.checkout,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams({ sectionType: SITE_SECTIONS.congratulations })),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.congratulations,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.congratulations,\r\n })\r\n }\r\n\r\n public openSuccessConfirmEmailPage () {\r\n this.analyticsService.view({\r\n ...this.getPayloadForOrderConfirmationPage(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.orderConfirmation,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.confirmEmail,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.confirmEmail,\r\n })\r\n }\r\n\r\n public viewVideoOnHomePage() {\r\n this.analyticsService.view({\r\n ...this.getPayloadForOtherPage(),\r\n [VIEW_PAYLOAD_KEYS.eventType]: 'video',\r\n [VIEW_PAYLOAD_KEYS.eventName]: 'watch_video_cta_click',\r\n [VIEW_PAYLOAD_KEYS.destinationUrl]: '/videos/40fce31ffc36e04167207ba43f2cfcb1.mp4',\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.home,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.home,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.home,\r\n })\r\n }\r\n\r\n private showError ({ sectionType, pageTemplateName, pageContentType, errorCodes }) {\r\n let getInitialPayload = this.getPayloadForOtherPage\r\n if (pageContentType === PAGE_CONTENT_TYPES.checkout) {\r\n getInitialPayload = this.getPayloadForCheckoutPage\r\n } else if (pageContentType === PAGE_CONTENT_TYPES.orderConfirmation) {\r\n getInitialPayload = this.getPayloadForOrderConfirmationPage\r\n }\r\n this.analyticsService.link({\r\n ...getInitialPayload(),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: pageContentType,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams({ sectionType })),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: pageTemplateName,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: sectionType,\r\n [VIEW_PAYLOAD_KEYS.errorDisplayType]: 'server_side',\r\n [VIEW_PAYLOAD_KEYS.errorType]: 'form_validation_error',\r\n [VIEW_PAYLOAD_KEYS.errorMessages]: errorCodes.join(','),\r\n })\r\n }\r\n\r\n public showLoginError ({ errorCodes }) {\r\n this.showError({\r\n sectionType: PAGE_CONTENT_TYPES.login,\r\n pageTemplateName: PAGE_TEMPLATE_NAMES.login,\r\n pageContentType: PAGE_CONTENT_TYPES.login,\r\n errorCodes,\r\n })\r\n }\r\n\r\n public showSignUpError ({ errorCodes }) {\r\n this.showError({\r\n sectionType: PAGE_CONTENT_TYPES.checkout,\r\n pageTemplateName: PAGE_TEMPLATE_NAMES.signUp,\r\n pageContentType: PAGE_CONTENT_TYPES.checkout,\r\n errorCodes,\r\n })\r\n }\r\n\r\n public showContactUsError ({ errorCodes }) {\r\n this.showError({\r\n sectionType: PAGE_CONTENT_TYPES.contact,\r\n pageTemplateName: PAGE_TEMPLATE_NAMES.contactUs,\r\n pageContentType: PAGE_CONTENT_TYPES.contact,\r\n errorCodes,\r\n })\r\n }\r\n\r\n public showPaymentAndShippingError ({ errorCodes }) {\r\n this.showError({\r\n sectionType: PAGE_CONTENT_TYPES.checkout,\r\n pageTemplateName: PAGE_TEMPLATE_NAMES.paymentAndShipping,\r\n pageContentType: PAGE_CONTENT_TYPES.checkout,\r\n errorCodes,\r\n })\r\n }\r\n\r\n public showReviewTermsError ({ errorCodes }) {\r\n this.showError({\r\n sectionType: PAGE_CONTENT_TYPES.checkout,\r\n pageTemplateName: PAGE_TEMPLATE_NAMES.reviewTerms,\r\n pageContentType: PAGE_CONTENT_TYPES.checkout,\r\n errorCodes,\r\n })\r\n }\r\n\r\n public showCongratulationsError ({ errorCodes }) {\r\n this.showError({\r\n sectionType: PAGE_CONTENT_TYPES.checkout,\r\n pageTemplateName: PAGE_TEMPLATE_NAMES.congratulations,\r\n pageContentType: PAGE_CONTENT_TYPES.checkout,\r\n errorCodes,\r\n })\r\n }\r\n\r\n public showMyAccountError ({ errorCodes, sectionType }) {\r\n this.showError({\r\n sectionType: PAGE_CONTENT_TYPES.myAccount,\r\n pageTemplateName: PAGE_TEMPLATE_NAMES.myAccount,\r\n pageContentType: sectionType,\r\n errorCodes,\r\n })\r\n }\r\n\r\n public showConfirmEmailError ({ errorCodes }) {\r\n this.showError({\r\n sectionType: PAGE_CONTENT_TYPES.orderConfirmation,\r\n pageTemplateName: PAGE_TEMPLATE_NAMES.confirmEmail,\r\n pageContentType: SITE_SECTIONS.confirmEmail,\r\n errorCodes,\r\n })\r\n }\r\n\r\n public showForgotPasswordError ({ errorCodes }) {\r\n this.showError({\r\n sectionType: PAGE_CONTENT_TYPES.forgotPassword,\r\n pageTemplateName: PAGE_TEMPLATE_NAMES.forgotPassword,\r\n pageContentType: SITE_SECTIONS.forgotPassword,\r\n errorCodes,\r\n })\r\n }\r\n\r\n // link\r\n public login ({ userId, contentType }) {\r\n let pageName = null\r\n if (contentType === PAGE_CONTENT_TYPES.login) {\r\n pageName = getPageName({\r\n pageContentType: PAGE_CONTENT_TYPES.login,\r\n pathname: ROUTES.home.logIn,\r\n sectionType: SITE_SECTIONS.login,\r\n })\r\n } else if (contentType === PAGE_CONTENT_TYPES.checkout) {\r\n pageName = getPageName({\r\n pageContentType: PAGE_CONTENT_TYPES.checkout,\r\n pathname: ROUTES.home.signUp,\r\n sectionType: SITE_SECTIONS.signUp,\r\n })\r\n }\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'log in',\r\n [LINK_PAYLOAD_KEYS.eventName]: 'logged in',\r\n [LINK_PAYLOAD_KEYS.pageName]: pageName,\r\n [LINK_PAYLOAD_KEYS.customerId]: userId,\r\n })\r\n }\r\n\r\n public logout () {\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'log in',\r\n [LINK_PAYLOAD_KEYS.eventName]: 'Sign out',\r\n [LINK_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [LINK_PAYLOAD_KEYS.customerId]: getUserId(this.getState()),\r\n })\r\n }\r\n\r\n public contact () {\r\n const isAuthorized = isUserAuthorizated(this.getState())\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'contact us',\r\n [LINK_PAYLOAD_KEYS.eventName]: 'send message',\r\n [LINK_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [LINK_PAYLOAD_KEYS.customerId]: isAuthorized ? getUserId(this.getState()) : '',\r\n })\r\n }\r\n\r\n public homeSelectPlan ({ activationFee }) {\r\n\r\n let array = {\r\n ...this.getPayloadForOtherPage(),\r\n [LINK_PAYLOAD_KEYS.eventType]: 'select_plan',\r\n [LINK_PAYLOAD_KEYS.eventName]: isSelectedPlanAvailable(this.getState()) === true ? 'plan_selected' : 'notify_me',\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanId]: getSelectedPlanId(this.getState()),\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanName]: getNormalizedSelectedPlanName(this.getState()),\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanListPrice]: getSelectedPlanPrice(this.getState()),\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanNetPrice]: getSelectedPlanPrice(this.getState()),\r\n [VIEW_PAYLOAD_KEYS.pageContentType]: PAGE_CONTENT_TYPES.home,\r\n [VIEW_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [VIEW_PAYLOAD_KEYS.pageTemplateName]: PAGE_TEMPLATE_NAMES.home,\r\n [VIEW_PAYLOAD_KEYS.siteSection]: SITE_SECTIONS.home,\r\n }\r\n\r\n if (activationFee !== null)\r\n {\r\n var fee = {[LINK_PAYLOAD_KEYS.activationFeeCheckbox]: activationFee > 0 ? 'yes' : 'no'}\r\n array = {...array, ...fee}\r\n }\r\n\r\n this.analyticsService.link(array)\r\n }\r\n\r\n public upgradePlan ({ planName }) {\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'my account',\r\n [LINK_PAYLOAD_KEYS.eventName]: 'upgrade subscription plan',\r\n [LINK_PAYLOAD_KEYS.upgradePlan]: getNormalizedStringValue(planName),\r\n [LINK_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [LINK_PAYLOAD_KEYS.customerId]: getUserId(this.getState()),\r\n })\r\n }\r\n\r\n public downgradePlan ({ planName }) {\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'my account',\r\n [LINK_PAYLOAD_KEYS.eventName]: 'downgrade subscription plan',\r\n [LINK_PAYLOAD_KEYS.downgradePlan]: getNormalizedStringValue(planName),\r\n [LINK_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [LINK_PAYLOAD_KEYS.customerId]: getUserId(this.getState()),\r\n })\r\n }\r\n\r\n public renewPlan ({ planName, terms, price }) {\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'my account',\r\n [LINK_PAYLOAD_KEYS.eventName]: 'subscription_extended',\r\n [LINK_PAYLOAD_KEYS.renewalTerm]: terms === SUBSCRIPTION_PLAN_TYPE.contract ? '2_year' : 'monthly',\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanId]: getSelectedPlanId(this.getState()),\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanName]: getNormalizedStringValue(planName),\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanListPrice]: price,\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanNetPrice]: price,\r\n [LINK_PAYLOAD_KEYS.extendPlan]: getNormalizedStringValue(planName),\r\n [LINK_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [LINK_PAYLOAD_KEYS.customerId]: getUserId(this.getState()),\r\n })\r\n }\r\n\r\n public enrollPlan ({ planName }) {\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'my account',\r\n [LINK_PAYLOAD_KEYS.eventName]: 'enroll_subscription_plan',\r\n [LINK_PAYLOAD_KEYS.enrollPlan]: getNormalizedStringValue(planName),\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanId]: getSelectedPlanId(this.getState()),\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanName]: getNormalizedSelectedPlanName(this.getState()),\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanListPrice]: getSelectedPlanPrice(this.getState()),\r\n [LINK_PAYLOAD_KEYS.subscriptionPlanNetPrice]: getSelectedPlanPrice(this.getState()),\r\n [LINK_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [LINK_PAYLOAD_KEYS.customerId]: getUserId(this.getState()),\r\n })\r\n }\r\n\r\n public cancelSubscription () {\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'my account',\r\n [LINK_PAYLOAD_KEYS.eventName]: 'cancel subscription',\r\n [LINK_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [LINK_PAYLOAD_KEYS.customerId]: getUserId(this.getState()),\r\n })\r\n }\r\n\r\n public saveChanges ({ sectionName }) {\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'my account',\r\n [LINK_PAYLOAD_KEYS.eventName]: `save changes:${sectionName}`,\r\n [LINK_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams({ sectionType: sectionName })),\r\n [LINK_PAYLOAD_KEYS.customerId]: getUserId(this.getState()),\r\n })\r\n }\r\n\r\n public forgotPassword () {\r\n this.analyticsService.link({\r\n [LINK_PAYLOAD_KEYS.eventType]: 'login',\r\n [LINK_PAYLOAD_KEYS.eventName]: 'forgot password',\r\n [LINK_PAYLOAD_KEYS.pageName]: getPageName(getPageNameParams()),\r\n [LINK_PAYLOAD_KEYS.customerId]: getUserId(this.getState()),\r\n })\r\n }\r\n}\r\n\r\nexport default Analytics\r\n","import { loadScript } from './utils'\r\n\r\nclass TealiumUTag {\r\n constructor () {\r\n window.utag_cfg_ovrd = { noview : true }\r\n window.utag_data = {}\r\n }\r\n\r\n public init ({ account, profile, environment }) {\r\n return loadScript(`https://tags.tiqcdn.com/utag/${account}/${profile}/${environment}/utag.js`)\r\n }\r\n\r\n private track (type, payload) {\r\n if (!window.utag) {\r\n console.error('Utag.js is not initialized')\r\n return\r\n }\r\n window.utag.track(type, payload)\r\n }\r\n\r\n public view = (payload: unknown) => this.track('view', payload)\r\n\r\n public link = (payload: unknown) => this.track('link', payload)\r\n}\r\n\r\nexport default TealiumUTag\r\n","export const loadScript = url => {\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script')\r\n script.type = 'text/javascript'\r\n script.async = true\r\n script.src = url\r\n script.onload = resolve\r\n script.onerror = reject\r\n document.head.appendChild(script)\r\n })\r\n}\r\n","import TealiumUTag from './TealiumUTag'\r\n\r\nexport const tealiumUTag = new TealiumUTag()\r\n","import Analytics from './Analytics'\r\nimport { tealiumUTag } from './services/TealiumUTag'\r\nimport { PAGE_CONTENT_TYPES, SITE_SECTIONS } from './constants'\r\n\r\nexport const analytics = new Analytics(tealiumUTag)\r\n\r\nexport {\r\n PAGE_CONTENT_TYPES,\r\n SITE_SECTIONS,\r\n}\r\n","import { REGISTRATION_STEPS } from 'constants/auth'\r\nimport { USER_STATUSES } from 'constants/user'\r\n\r\nexport const getSignInStep = userData => {\r\n if (!userData) {\r\n return REGISTRATION_STEPS.create\r\n }\r\n\r\n if (!userData.shippingAddress\r\n || (!userData.creditCard || (userData.creditCard && !userData.creditCard.billingAddress\r\n && userData.creditCard.isAdditionalProtectionRequired))\r\n ) {\r\n return REGISTRATION_STEPS.payment\r\n }\r\n\r\n if (userData.shippingAddress\r\n && userData.creditCard\r\n && !userData.subscription.termsAccepted\r\n ) {\r\n return REGISTRATION_STEPS.terms\r\n }\r\n\r\n if (userData.subscription.termsAccepted) {\r\n return REGISTRATION_STEPS.congrats\r\n }\r\n}\r\n\r\nexport const getCurrencySymbol = currency => {\r\n // if (!currency) return '$'\r\n\r\n // cases will be populated in case of adding new currencies\r\n // if (currency === 'USD') {\r\n // return '$'\r\n // }\r\n return '$'\r\n}\r\n\r\nexport const getPostalCodeFormatted = (postalCode: string) => {\r\n if (postalCode.length > 5) {\r\n return `${postalCode.slice(0, 5)}-${postalCode.slice(5)}`\r\n }\r\n return postalCode\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport env from 'env'\r\n\r\nexport const getCountry = (meta?: any) => ({\r\n type: 'api/country/GET_COUNTRY',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/country`,\r\n method: 'GET',\r\n },\r\n },\r\n meta,\r\n})\r\ngetCountry.toString = () => 'api/country/GET_COUNTRY'\r\n\r\nexport const getCountryBilling = (meta?: any) => ({\r\n type: 'api/country/GET_COUNTRY_BILLING',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/country/billing`,\r\n method: 'GET',\r\n },\r\n },\r\n meta,\r\n})\r\ngetCountryBilling.toString = () => 'api/country/GET_COUNTRY_BILLING'\r\n\r\nexport const getCountryByCountryIdState = ({ countryId }, meta?: any) => ({\r\n type: 'api/country/GET_COUNTRY_BY_COUNTRY_ID_STATE',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/countries/${countryId}/states`,\r\n method: 'GET',\r\n },\r\n },\r\n meta,\r\n})\r\ngetCountryByCountryIdState.toString = () => 'api/country/GET_COUNTRY_BY_COUNTRY_ID_STATE'\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nexport const ROUTES = {\r\n home: {\r\n root: '/', // use in email template\r\n home: '/home',\r\n menu: '/home/:menu',\r\n signUp: '/create',\r\n logIn: '/login', // use in email template\r\n forgotPassword: '/forgot',\r\n confirmEmail: {\r\n root: '/confirm',\r\n alreadyActivated: '/confirm/already-activated',\r\n },\r\n confirmChangeEmail: '/new-email/confirm',\r\n changePassword: {\r\n root: '/reset',\r\n new: '/reset/new',\r\n },\r\n contactUs: '/contact-us', // use in email template\r\n leaveEmail: '/leave-email',\r\n noAvailablePrinter: '/no-available-printer',\r\n },\r\n\r\n auth: {\r\n login: '/auth/login',\r\n passwordExpired: '/auth/password-expired',\r\n loginMaxAttempted: '/auth/login-attempted',\r\n resendConfirmEmail: '/auth/resend-confirm-email',\r\n },\r\n\r\n profile: {\r\n root: '/',\r\n create: '/profile/create',\r\n resend: '/profile/resend',\r\n view: '/profile/view',\r\n changePlan: {\r\n root: '/profile/plan-choice',\r\n terms: '/profile/plan-choice/terms',\r\n newPlanAccepted: '/profile/plan-choice/new-plan-accepted',\r\n noAvailablePrinter: '/profile/plan-choice/no-available-printer',\r\n },\r\n renewPlan: {\r\n root: '/profile/plan-renew',\r\n terms: '/profile/plan-renew/terms',\r\n accepted: '/profile/plan-renew/accepted',\r\n },\r\n enrollPlan: {\r\n root: '/profile/plan-enroll',\r\n terms: '/profile/plan-enroll/terms',\r\n accepted: '/profile/plan-enroll/accepted',\r\n noAvailablePrinter: '/profile/plan-enroll/no-available-printer',\r\n },\r\n renewAndChangePlan: {\r\n accepted: '/profile/plan-renew-and-change/accepted',\r\n },\r\n settings: '/profile/settings',\r\n },\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport _isFunction from 'lodash/isFunction'\r\nimport { Action } from 'redux-app/types/actions'\r\n\r\nexport const createReducer = (initialState, handlers) => {\r\n return function reducer (state = initialState, action) {\r\n return handlers.hasOwnProperty(action.type) ? handlers[action.type](state, action) : state\r\n }\r\n}\r\n\r\nexport const promiseTypeSuffixes = ['PENDING', 'FULFILLED', 'REJECTED']\r\n\r\nexport const handlePromiseActions = (reducerMap, initialState) => {\r\n const flatMap = {}\r\n\r\n Object.keys(reducerMap).forEach(actionType => {\r\n const reducerValue = reducerMap[actionType]\r\n\r\n if (Array.isArray(reducerValue)) {\r\n reducerValue.slice(0, promiseTypeSuffixes.length).forEach((promiseActionReducer, promiseTypeSuffixIndex) => {\r\n if (!_isFunction(promiseActionReducer)) {\r\n return\r\n }\r\n flatMap[`${actionType}_${promiseTypeSuffixes[promiseTypeSuffixIndex]}`] = promiseActionReducer\r\n })\r\n } else {\r\n flatMap[actionType] = reducerValue\r\n }\r\n })\r\n\r\n return createReducer(initialState, flatMap)\r\n}\r\n\r\nconst defaultActionCreator = (type: string): Action => (payload?: any, meta: any = {}) => ({ type, payload, meta })\r\n\r\nexport const createModuleAction = (module: string) => (name: string, actionCreator?: Action) => {\r\n const finalName = `${module}/${name}`\r\n let currentActionCreator = actionCreator\r\n if (!currentActionCreator) {\r\n currentActionCreator = defaultActionCreator(finalName)\r\n }\r\n const result: any = (...params) => {\r\n const action: any = currentActionCreator(...params)\r\n action.type = finalName\r\n return action\r\n }\r\n result.toString = () => finalName\r\n return result\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport queryString from 'query-string'\r\nimport _get from 'lodash/get'\r\nimport env from 'env'\r\n\r\nconst queryToStringParams = (query = {}) => queryString.stringify(query)\r\n\r\nconst getPath = ({ pathname = '', query, hostname }) => {\r\n const host = hostname ? hostname : env.api\r\n const resPath = `${host}${pathname[0] === '/' ? '' : '/'}${pathname}`\r\n\r\n return query\r\n ? `${resPath}?${queryToStringParams(query)}`\r\n : resPath\r\n}\r\n\r\nexport const getApiUrl = params => getPath(params)\r\n\r\nconst paramRegExp = /:[A-Za-z0-9]+/g\r\nexport const getPathWithParams = (path, params) => path.replace(paramRegExp, replacedValue => {\r\n return _get(params, replacedValue.replace(':', ''))\r\n})\r\n\r\nexport const getPathWithQuery = (path, query) => `${path}?${queryToStringParams(query)}`\r\n\r\nexport const getQueryFromSearch = (search = '') => queryString.parse(search.substr(1))\r\n\r\nconst createHistory = () => {\r\n let history = {}\r\n return {\r\n setHistory: routerHistory => {\r\n history = routerHistory\r\n },\r\n replace: pathname => history.replace(pathname),\r\n push: pathname => history.push(pathname),\r\n }\r\n}\r\n\r\nexport const history = createHistory()\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport _get from 'lodash/get'\r\nimport { isPlanAvailable } from 'redux-app/utils/subscription'\r\n\r\nexport const getData = state => state.subscriptions\r\nexport const getSubscriptionPlans = state => getData(state).subscriptionPlans\r\nexport const getSubscriptionPlansForRenew = state => getData(state).renewalPlans\r\nexport const getSelectedPlanId = state => getData(state).selectedPlanId\r\nexport const getSelectedPlan = state => getSubscriptionPlans(state)\r\n.find(item => item.id === getSelectedPlanId(state))\r\nexport const getSelectedPlanForRenew = state => getSubscriptionPlansForRenew(state)\r\n .find(item => item.id === getSelectedPlanId(state))\r\nexport const getSelectedPlanName = state => _get(getSelectedPlan(state), 'name')\r\nexport const getSelectedPlanPrice = state => {\r\n const activationFee = _get(getSelectedPlan(state), 'activationFee')\r\n const price = _get(getSelectedPlan(state), 'price')\r\n\r\n if (!activationFee) {\r\n return price\r\n }\r\n\r\n return activationFee + price\r\n}\r\nexport const isSelectedPlanAvailable = state => isPlanAvailable(getSelectedPlan(state))\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\n// note: if not defined schema in ./src/api/client/override/schema need to change value by action response schema\r\nexport enum API_TYPES {\r\n countries = 'CountryResponse',\r\n languages = 'LanguageResponse',\r\n myCompanyDetails = 'MyCompanyDetailsResponse',\r\n glassesDetails = 'GlassesDetailsResponse',\r\n subscriptionPlans = 'subscriptionPlans',\r\n states = 'StateResponse',\r\n myCompanyInfo = 'myCompanyInfo',\r\n companyCountriesResidence = 'CompanyCountryResidenceResponse',\r\n userCountriesResidence = 'UserCountryResidenceResponse',\r\n appConfig = 'appConfig',\r\n cancelationReasons = \"cancelationReasons\",\r\n recaptchaWhiteList = 'recapthcaWhiteList'\r\n}\r\n\r\n// entities which won't be removed after logout\r\nexport const NOT_SECURE_API_TYPES = [\r\n API_TYPES.languages,\r\n API_TYPES.appConfig,\r\n API_TYPES.recaptchaWhiteList,\r\n]\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport queryString from 'querystring'\r\nimport env from 'env'\r\n\r\nexport const getTexts = ({ code, updated }) => ({\r\n type: 'API/GET_TEXTS',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: `/api/localization?${queryString.stringify({ code, updated })}`,\r\n headers: {},\r\n method: 'GET',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n mock: true,\r\n },\r\n})\r\ngetTexts.toString = () => 'API/GET_TEXTS'\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport moment from 'moment'\r\nimport { DEFAULT_LANGUAGE, DEBUG_LANGUAGE } from 'constants/localization'\r\nimport { getTexts } from 'api/client/actions/languages'\r\nimport {\r\n getLang,\r\n // getLoadedTextsUpdated,\r\n getCurrentTexts,\r\n} from 'redux-app/selectors/localization'\r\nimport { createModuleAction, handlePromiseActions } from 'redux-app/utils/reducer'\r\nimport { mergeTexts } from 'redux-app/utils/localization'\r\nimport { loadingWrapper } from 'redux-app/utils/loadingWrapper'\r\nimport { ILocalizationState } from 'redux-app/types/localization'\r\n\r\nconst createAction = createModuleAction('LOCALIZATION')\r\n\r\nconst setLanguageLocal = createAction('SET_LANGUAGE')\r\nexport const updateLocalTexts = createAction('UPDATE_LOCAL_TEXTS')\r\n\r\nexport const setLanguage = code => (dispatch, getState) => {\r\n const state = getState()\r\n const lang = getLang(state)\r\n const isLangChanged = lang !== code\r\n\r\n dispatch(setLanguageLocal({\r\n lang: code,\r\n }))\r\n\r\n if (code === DEBUG_LANGUAGE) {\r\n const debugTexts = Object.keys(getCurrentTexts(state)).reduce((acc, key) => ({\r\n ...acc,\r\n [key]: key,\r\n }), {})\r\n dispatch(updateLocalTexts(debugTexts))\r\n return\r\n }\r\n\r\n dispatch(onLoadTexts(isLangChanged))\r\n}\r\n\r\nexport const onLoadTexts = isLangChanged => (dispatch, getState) => {\r\n const state = getState()\r\n const lang = getLang(state)\r\n // const updated = !isLangChanged\r\n // ? getLoadedTextsUpdated(state)\r\n // : null\r\n\r\n moment.locale(lang)\r\n return Promise.all([\r\n // commented while no i18n\r\n // dispatch(getTexts({ code: lang, updated })),\r\n import(`localization/${lang}.json`),\r\n ])\r\n .then(([module]) => {\r\n dispatch(updateLocalTexts(module.default))\r\n })\r\n .catch(() => {\r\n // dispatch(updateLocalTexts({}))\r\n console.warn(`No texts for ${lang}`)\r\n })\r\n}\r\n\r\nconst ACTION_HANDLERS = {\r\n [setLanguageLocal.toString()]: (state: ILocalizationState, { payload: { lang } }) => ({\r\n ...state,\r\n lang,\r\n }),\r\n [getTexts.toString()]: loadingWrapper('loadedTexts', [\r\n null,\r\n (state: ILocalizationState, { payload: { result: response } }, value = {}) => {\r\n if (!response || response.length === 0) {\r\n return value\r\n }\r\n const { metadata, payload } = response[0] || {}\r\n\r\n return {\r\n meta: {\r\n ...value.meta,\r\n ...metadata,\r\n },\r\n texts: mergeTexts(value.texts, payload),\r\n }\r\n },\r\n null,\r\n ]),\r\n [updateLocalTexts.toString()]: (state: ILocalizationState, { payload }) => {\r\n return {\r\n ...state,\r\n localTexts: payload,\r\n }\r\n },\r\n}\r\n\r\nconst initialState: ILocalizationState = {\r\n lang: DEFAULT_LANGUAGE,\r\n localTexts: {},\r\n loadedTexts: {\r\n value: {},\r\n },\r\n links: {\r\n value: {},\r\n },\r\n}\r\n\r\nexport default handlePromiseActions(ACTION_HANDLERS, initialState)\r\n","import env from 'env'\r\n\r\nexport const updatePaymentDetails = data => ({\r\n type: 'api/cards/UPDATE_CARD',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/cards/current',\r\n data,\r\n headers: {},\r\n method: 'PUT',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nupdatePaymentDetails.toString = () => 'api/cards/UPDATE_CARD'\r\n\r\nexport const updateBillingAddress = (billingAddress) => ({\r\n type: 'api/cards/UPDATE_BILLING_ADDRESS',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/cards/current/billing-address',\r\n data: {\r\n billingAddress,\r\n },\r\n headers: {},\r\n method: 'PUT',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nupdateBillingAddress.toString = () => 'api/cards/UPDATE_BILLING_ADDRESS'\r\n\r\nexport const verifyCurrentCard = () => ({\r\n type: 'api/cards/CARD_VEFIFY',\r\n payload: {\r\n apiAction: {\r\n hostname: env.api,\r\n url: '/api/cards/current/verify',\r\n data: {\r\n },\r\n headers: {},\r\n method: 'POST',\r\n },\r\n },\r\n meta: {\r\n noAuth: true,\r\n },\r\n})\r\nverifyCurrentCard.toString = () => 'api/cards/CARD_VEFIFY'\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nexport enum ERROR_CODES {\r\n userNotFound = 1001,\r\n companyNotFound = 1004,\r\n companyIsInDeletedState = 2002,\r\n passwordExpired = 2019,\r\n userAccountLocked = 2021,\r\n emailIsNotConfirmed = 4002,\r\n userIsInPendingState = 4003,\r\n companyIsInPausedState = 4004,\r\n companyIsInPreRegisteredState = 5039,\r\n paymetricServiceUnavailable = 5063,\r\n companyIsInSuspendedState = 5094,\r\n userAlreadyExist = 'user_already_exists',\r\n invalid_credentials = 'invalid_credentials',\r\n addressIsNotValid = 'addressIsNotValid',\r\n linkInvalid = 'tokenInvalid',\r\n linkExpired = 'tokenExpired',\r\n passwordUsedBefore = 'passwordUsedBefore',\r\n linkUsed = 'tokenAlreadyUsed',\r\n userAlreadyActivated = 'user_already_activated',\r\n changeEmailLinkAlreadyUsed = 'user_email_update_not_found',\r\n subscriptionNoAvailableDevice = 'subscription_no_available_device',\r\n subscriptionPlanHasNoAvailableDevice = 'subscription_plan_has_no_available_devices',\r\n paymentricInvalidAccountNumber = 'paymetric_invalid_account_number',\r\n paymetricAuthorizationFailed = 'paymetric_authorization_failed',\r\n sabrixNotAvailable = 'sabrix_not_available',\r\n userEmailNotConfirmed = 'user_email_not_confirmed',\r\n paymetricCardCheckFailed = 'paymetric_card_check_failed'\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport _get from 'lodash/get'\r\nimport { USER_ROLES } from 'constants/user'\r\n\r\nexport const getData = state => state.auth\r\nexport const getToken = state => getData(state).token.value\r\nexport const getRegistrationStep = state => getData(state).registrationStep\r\nexport const getAccessToken = state => _get(getToken(state), 'access')\r\nexport const getUserRole = state => _get(getToken(state), 'role')\r\nexport const getAuthHeaders = state => ({\r\n Authorization: `Bearer ${getAccessToken(state)}`,\r\n})\r\nexport const isTokenLoading = state => _get(getData(state), ['token', 'loading'])\r\nexport const isUserAuthorizated = state => {\r\n const role = getUserRole(state)\r\n return role === USER_ROLES.subscriptionUser\r\n}\r\n","/*\r\n * Developed for EPSON AMERICA INC. by Softeq Development Corporation\r\n * http://www.softeq.com\r\n */\r\n\r\nimport _get from 'lodash/get'\r\nimport { tokenService } from 'services/Token'\r\nimport { analytics } from 'services/Analytics'\r\nimport { USER_LOGOUT_ACTION } from 'constants/user'\r\nimport { ROUTES } from 'constants/routes'\r\nimport { refresh, logout } from 'api/client/actions/auth'\r\nimport { updateUserRole } from 'redux-app/modules/auth'\r\nimport { getToken } from 'redux-app/selectors/auth'\r\nimport { history } from 'utils/location'\r\n\r\nexport const onStartLogout = ({ isRedirectToLogin } = { isRedirectToLogin: false }) => (dispatch, getState) => {\r\n \r\n const accessToken = _get(getToken(getState()), 'access')\r\n const refreshToken = _get(getToken(getState()), 'refresh')\r\n\r\n dispatch(logout({ authToken: accessToken, refreshToken: refreshToken }))\r\n \r\n dispatch(onFinishLogout({ isRedirectToLogin }))\r\n}\r\n\r\nexport const onFinishLogout = ({ isRedirectToLogin }) => dispatch => {\r\n analytics.logout()\r\n dispatch({\r\n type: USER_LOGOUT_ACTION,\r\n })\r\n\r\n if (isRedirectToLogin) {\r\n history.push(ROUTES.home.logIn)\r\n }\r\n}\r\n\r\nexport const onStartLogoutWithRedirect = () => dispatch => dispatch(onStartLogout({ isRedirectToLogin: true }))\r\n\r\nexport const onCheckAuth = () => (dispatch, getState) => {\r\n const accessToken = _get(getToken(getState()), 'access')\r\n const refreshToken = _get(getToken(getState()), 'refresh')\r\n\r\n if (refreshToken && tokenService.isTokenExpired(accessToken)) {\r\n return dispatch(onRefreshToken())\r\n }\r\n return Promise.resolve(accessToken)\r\n}\r\n\r\nexport const onRefreshToken = () => (dispatch, getState) => {\r\n const refreshToken = _get(getToken(getState()), 'refresh')\r\n\r\n if (!refreshToken) {\r\n return Promise.reject(new Error('no_refresh_token'))\r\n }\r\n\r\n return dispatch(refresh({ refresh_token: refreshToken }))\r\n .then(({ value: { result: { access_token: accessToken } } }) => {\r\n const { role } = tokenService.getTokenPayload(accessToken)\r\n dispatch(updateUserRole(role))\r\n return accessToken\r\n })\r\n}\r\n"],"sourceRoot":""}