{"version":3,"sources":["components/reusable-components/components/AuthContext.tsx","components/Layout.tsx","styles/theme.ts","components/button/index.tsx","components/splash/styles.ts","styles/gutters.ts","components/splash/hero-bg.tsx","components/splash/index.tsx","components/splash-not-logged-in/styles.ts","components/splash-not-logged-in/index.tsx","components/app-chrome/header/styles.ts","pages/home/styles.ts","components/unauthorized/index.tsx","components/reusable-components/components/PrivateRoute.tsx","components/reusable-components/hooks/use-mounted.ts","components/reusable-components/hooks/use-state-while-mounted.ts","components/splash-logged-in/styles.ts","components/reusable-components/hooks/use-authenticated-request.ts","components/spec-table/styles.ts","domain/survey.ts","components/pure-survey/radio-question/styles.ts","components/pure-survey/radio-question/index.tsx","components/number-input/index.tsx","components/pure-survey/slider-question/styles.ts","domain/unit-converstions.ts","components/unit-switcher/styles.ts","components/unit-switcher/index.tsx","components/pure-survey/slider-question/index.tsx","components/pure-survey/drag-question/styles.ts","components/pure-survey/drag-question/icons.tsx","components/pure-survey/drag-question/index.tsx","components/pure-survey/survey-page-header/styles.ts","icons/help-icon-inactive.tsx","icons/help-icon-active.tsx","components/question-button/index.tsx","components/pure-survey/survey-page-header/index.tsx","components/pure-survey/pto-question/styles.ts","components/pure-survey/pto-question/index.tsx","components/survey-shell/styles.ts","domain/transmission.ts","components/default-page/styles.ts","components/default-page/index.tsx","components/app-chrome/footer/styles.ts","components/pure-survey-footer/styles.ts","components/gutter-toolbar/index.tsx","components/pure-survey-footer/index.tsx","components/progress-bar/styles.ts","components/progress-bar/index.tsx","components/alert-dialog/index.tsx","components/survey-shell/pure-survey-shell.tsx","components/survey-shell/survey-shell.tsx","components/transmission-result/index.tsx","components/survey-result/styles.ts","components/transmission-result/styles.ts","components/react-markdown/index.tsx","icons/expand-icon.tsx","components/survey-responses/styles.ts","icons/minimize-icon.tsx","domain/image-mappings.tsx","components/survey-responses/index.tsx","components/pdf-generator/helpers.ts","components/pdf-generator/markdown-pdf.tsx","components/pdf-generator/index.tsx","components/pdf-generator/styles.ts","components/survey/index.tsx","components/rich-text-editor/styles.ts","components/rich-text-editor/index.tsx","components/survey-result/index.tsx","components/pure-survey/index.tsx","components/pure-survey/terrain-question/styles.ts","components/pure-survey/image-question/styles.ts","components/pure-survey/image-question/index.tsx","components/pure-survey/terrain-question/index.tsx","components/pure-survey/checkbox-question/styles.ts","components/pure-survey/checkbox-question/index.tsx","components/pure-survey/maneuvers-question/styles.ts","components/pure-survey/maneuvers-question/index.tsx","components/spec-table/index.tsx","components/snack-bar/index.tsx","components/splash-logged-in/index.tsx","pages/home/index.tsx","components/snack-bar/styles.ts","components/transmission-table/styles.ts","components/transmission-table/pure-transmission-table.tsx","pages/error/Error.tsx","components/transmission-table/index.tsx","components/data-dump/index.tsx","pages/transmission/ListTransmission.tsx","components/pure-transmission-form/styles.ts","components/pure-transmission-form/pure-transmission-form.tsx","components/pure-transmission-form/transmission-form.tsx","components/add-transmission-form/index.tsx","pages/transmission/AddTransmission.tsx","components/edit-transmission-form/index.tsx","pages/transmission/EditTransmission.tsx","pages/survey/Survey.tsx","pages/demo/Demo.tsx","pages/temp/Temp.tsx","components/app-chrome/header/index.tsx","components/app-chrome/footer/index.tsx","components/app-chrome/styles.ts","components/app-chrome/index.tsx","components/help-page/application/styles.ts","components/help-page/application/index.tsx","components/help-page/styles.ts","components/help-page/roads/styles.ts","components/help-page/roads/index.tsx","components/help-page/index.tsx","pages/help/index.tsx","components/create-account/styles.ts","components/email-field/index.tsx","domain/account.ts","domain/vocationCheckList.ts","domain/countryList.ts","components/create-account/pure-email-prompt.tsx","components/create-password-field/styles.ts","icons/dot-icon.tsx","components/create-password-field/index.tsx","components/create-account/pure-verification-code-prompt.tsx","components/create-account/pure-account-information-prompt.tsx","components/create-account/index.tsx","pages/register/index.tsx","components/user-login/styles.ts","components/user-login/index.tsx","pages/login/index.tsx","components/reusable-components/hooks/use-login.ts","components/create-account/pure-account-created-view.tsx","pages/account-created/AccountCreated.tsx","components/reset-password/styles.ts","components/reset-password/index.tsx","pages/reset-password/ResetPassword.tsx","components/forgot-password/styles.ts","components/forgot-password/index.tsx","pages/forgot-password/ForgotPassword.tsx","components/saved-spec/styles.ts","icons/pencil-icon.tsx","components/saved-spec/index.tsx","pages/saved-spec/index.tsx","components/all-specs/styles.ts","components/all-specs/index.tsx","pages/my-specs/MySpecs.tsx","pages/inactive/Inactive.tsx","pages/not-found/NotFound.tsx","App.tsx","index.tsx"],"names":["AuthStatus","Layout","props","children","BaseTheme","PXBThemes","TSPTheme","palette","primary","main","Colors","light","text","grey","background","default","paper","typography","fontWeightBold","overrides","MuiAppBar","colorPrimary","backgroundColor","color","colorSecondary","MuiExpansionPanel","root","rounded","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","MuiExpansionPanelDetails","MuiInputLabel","MuiInput","underline","borderBottom","MuiSlider","rail","borderRadius","height","opacity","track","thumb","boxShadow","marginTop","width","marginLeft","valueLabel","mark","MuiFormLabel","MuiLinearProgress","border","boxSizing","bar","barColorPrimary","MuiIconButton","sizeSmall","padding","MuiTypography","h1","fontWeight","fontSize","h2","h3","h4","subtitle1","lineHeight","subtitle2","letterSpacing","textTransform","StyledButton","withStyles","theme","outlined","borderColor","outlinedSecondary","Button","EatonButton","loadingSpinner","myProps","variant","className","disableRipple","CircularProgress","size","style","position","top","left","EatonLinkButton","component","Link","to","useStyles","makeStyles","mainSplashContainer","minWidth","marginBottom","heroContentContainer","paddingLeft","paddingRight","display","alignContent","maxWidth","marginRight","heroImageContainer","heroTextContainer","heroHeader","heroSubtitle","HeroBg","viewBox","fill","xmlns","preserveAspectRatio","filter","d","id","x","y","filterUnits","colorInterpolationFilters","floodOpacity","result","in","type","values","stdDeviation","mode","in2","dy","operator","k2","k3","x1","y1","x2","y2","gradientUnits","stopColor","offset","AppSplash","classes","src","alt","Typography","data-testid","outerContainer","flexGrow","alignSelf","mainContainer","paddingTop","paddingBottom","splashItemsContainer","textAlign","AppSplashNotLoggedIn","Paper","appBar","headerBar","justifyContent","tabContainer","headerTabText","headerTab","alignItems","activeHeaderTab","logo","logoLink","signIn","userMenuArrowIcon","verticalAlign","userMenucontainer","userMenuMargin","flexDirection","signedOutBg","content","right","zIndex","backgroundSize","AuthStateContext","React","createContext","AuthDispatchContext","useAuthState","context","useContext","Error","useAuthDispatch","reducer","state","action","authenticated","Authenticated","payload","Unauthenticated","userLoggedIn","userInfo","window","localStorage","setItem","email","parseErrorBody","response","a","async","data","JSON","stringify","initialState","AuthContextProvider","useReducer","dispatch","useState","loggingIn","setLoggingIn","history","useHistory","authenticatedRequest","requestInfo","axios","request","headers","Cookie","get","validateStatus","status","ok","body","getItem","post","retryResponse","onUnauthorized","useEffect","url","method","userInfoResponse","silentLogin","logout","removeItem","dispatchHelpers","timeout","push","Provider","value","Unauthorized","PrivateRoute","authState","location","useLocation","set","pathname","loginPath","from","allowedRoles","find","role","privileges","roles","includes","useMounted","mounted","useRef","current","useStateWhileMounted","setState","useCallback","s","loading","recentSpecsContainer","titleText","subtitleText","fontStyle","useAuthenticatedRequest","config","undefined","setData","setIsLoading","requery","setRequery","requestConfig","fetchData","concat","appendFormData","formData","_root","File","append","Array","isArray","i","length","Object","entries","forEach","entry","Application","EngineMake","tableContainer","nameCell","transmissionCell","editedCell","row","specCell","whiteSpace","specCellLink","textDecoration","specCellContents","overflow","textOverflow","editedCellContainer","chevron","headerCell","visuallyHidden","clip","margin","forwardBackIcon","actionButton","noSpecs","Maneuver","EngineMakeToLabelMappings","CumminsDiesel","CumminsNaturalGas","PACCAR","International","Detroit","Other","Pto","RoadType","Terrain","ManeuverToLabelMappings","FastInReverse","Mud","RepeatedLaunches","SlowCreeping","UrbanStopAndGo","NoManeuvers","PreferenceRankingToLabelMappings","acceleration","fuelEconomy","lowSpeedManeuvers","price","tripTime","radioGroupColumns","flexWrap","radioGroupSingle","column","RadioQuestion","flattenedValues","maxInColumn","chunk","map","arr","index","key","v","FormControlLabel","cssClassName","control","Radio","label","labelMapping","startCase","FormControl","RadioGroup","aria-label","name","onChange","event","setValue","Direction","sliderContainer","topContainer","inputContainer","unitLabel","secondary","createStyles","textField","textAlignLast","stepper","stepperIcon","NumberInput","inputRef","other","getInputRef","onValueChange","target","thousandSeparator","isNumericString","onBlur","Unit","FormattedNumberInput","handleChangeInternal","newValue","minMaxHandler","candidateValue","min","max","handleButton","direction","stepValue","Up","step","parseInt","IconButton","disabled","onClick","Down","TextField","parsedValue","replace","isNaN","InputProps","inputComponent","inputProps","remainder","finalValue","dataTestId","ariaLabelledBy","onKeyDown","keyCode","UnitMapping","weight","MakeConverters","imperial","metric","speed","power","torque","factor","toMetric","Math","round","fromMetric","units","unitSwitcher","PureUnitSwitcher","Select","MenuItem","UnitContext","Imperial","setUnits","UnitProvider","existingUnits","Metric","UnitSwitcher","unitContext","SliderQuestion","minValue","maxValue","currValue","setCurrValue","setValues","imperialValue","displayValue","FormLabel","stepSize","Slider","valueLabelFormat","showValueLabels","toLocaleString","onChangeCommitted","getAriaValueText","aria-labelledby","valueLabelDisplay","marks","preferenceColumn","dropZone","columnContainer","columnContents","optionsColumn","description","columnListItem","listsContainer","arrowIcon","preferenceHeader","optionsHeader","draggableOption","draggingDraggable","getContrastText","draggableOptionText","dragIcon","draggingSelectedColumn","preferenceNumberRow","preferenceNumber","DragHandle","white","LeftArrow","DragAndDropQuestion","keys","pickBy","surveyValues","isNull","starterList","setStarterList","applySurveyValues","setSurveyValues","indexOf","sortBy","reorder","listItems","startIndex","endIndex","splice","removed","move","sourceList","destinationList","droppableSource","droppableDestination","sourceClone","destClone","onDragEnd","source","destination","droppableId","items","sourceResult","destinationResult","PreferenceColumn","columnId","title","rankingTitle","number","OptionsColumn","optionsTitle","isDraggingOver","setIsDraggingOver","times","Avatar","provided","snapshot","ref","innerRef","droppableProps","preference","DraggableOption","isDropDisabled","draggableId","isDragDisabled","draggableProvided","isDragging","draggableProps","dragHandleProps","surveyHeaderContainer","containerSmallerMargin","containerTinyMargin","helpIcon","HelpIconInactive","cx","cy","r","HelpIconActive","QuestionButton","icon","setIcon","onMouseEnter","onMouseLeave","SurveyPageHeader","tinyMargin","smallMargin","headerText","helpLink","ptoContainer","topHalfContainer","PTOQuestion","NoPTO","needPto","setNeedPto","needPtoChecked","OnePto","TwoPto","ThreeOrMorePto","SupportValue","TransmissionConstants","header","backButton","buttonProgress","questions","defaultPageContainer","DefaultPage","footer","minHeight","bottom","footerToolbar","footerToolbarItem","footerText","footerLinkList","breakpoints","down","up","footerLink","footerLinkText","contactUs","surveyFooterToolbar","surveyFooter","borderTop","GutterToolbar","Toolbar","PureSurveyFooter","lhs","rhs","progressBarContainer","progressNumber","linearProgress","leftNumber","rightNumber","ProgressBar","progressValue","currentPage","totalPages","LinearProgress","EatonAlertDialogForTransmissionLog","Dialog","open","onClose","aria-describedby","DialogTitle","alertTitle","DialogContent","DialogContentText","alertContent","DialogActions","EatonAlertDialog","onAgree","agreeButtonText","PureSurveyShell","isAlertDialogOpen","setIsAlertDialogOpen","progressCurrent","currentChild","Children","toArray","nextButtonEnabled","isFilled","lhsButtons","onBackClicked","rhsButtons","onNextClicked","SurveyShell","setCurrentPage","count","onSubmit","cancelLink","submissionState","SurveyPage","Supported","NotSupported","Recommended","Date","MatchType","DEFAULT_TRANSMISSION","learnMoreUrl","image","isDisabled","rank","supportedApplications","agriculture","construction","doorToDoorRefuse","fire","heavyHaul","linehaul","logging","mixer","oilField","pickUpAndDelivery","recreational","refuse","rescue","transit","maxSupportedGcw","MIN_WEIGHT","supportedTerrain","flat","hillyRolling","occasionalMountain","frequentMountain","steepGrade","supportedManeuvers","repeatedLaunches","slowCreeping","urbanStopAndGo","mud","fastInReverse","supportedRoadTypes","paved","maintainedGravel","offRoad","maxSupportedCruiseSpeed","MIN_SPEED","maxSupportedMaxSpeed","supportedPto","noPto","onePto","twoPto","threeOrMorePto","supportedEngineMakes","cumminsDiesel","cumminsNaturalGas","detroit","international","paccar","maxSupportedEngineHp","MIN_HP","performanceGoalPoints","axleRatioThresholds","defaultBottom","defaultTop","mediumBottom","mediumTop","highBottom","highTop","extremeBottom","extremeTop","modelTorques","noResultUnitSwitcherContainer","resultTitleContainer","transmissionResult","surveyResponses","contactContainer","specialMessageContainer","emphasisNote","noTransmissionContainer","common","contactHeader","contactSubheader","link","debugText","pdfButton","saveSpecHeaderContainer","flexFlow","saveSpecSubHeader","saveSpecFillerText","saveSpecTopContainer","saveSpecBottomContainer","saveSpecTitleField","saveSpecRichTextEditorContainer","saveSpecRichTextEditorEditorField","errorText","error","transmissionButtonLink","containerTopChoice","containerRunnerUp","runnerUpBorderBox","runnerUpBorderRight","borderRight","imageContainerTopChoice","flex","imageContainerRunnerUp","maxHeight","imagePadding","contentContainer","wordBreak","contentLabel","contentName","contentDescription","contentButton","options","forceBlock","gutterBottom","paragraph","h5","h6","p","ul","child","ol","li","strong","ReactMarkdown","TransmissionResult","transmission","matchType","TopMatch","hideBorder","kebabCase","modelName","axleRatio","href","rel","disableLearnMore","ExpandIcon","panelContainer","panelSummary","responseHeader","panelContent","contentColumn","contentColumnItem","surveyTitle","surveyBody","inlineText","multiPartSubtitle","MinimizeIcon","MountainPassIcon","TerrainToLabelMappings","Flat","subtitle","SteepGrade","HillyRolling","OccasionalMountain","FrequentMountain","RoadTypeToLabelMappings","Paved","MaintainedGravel","OffRoad","Drawer","drawerProps","startExpanded","expanded","setExpanded","ExpansionPanel","ExpansionPanelSummary","ExpansionPanelDetails","SurveyResponses","SimpleSurveyPart","simplePartProps","LabelMappedSurveyPart","Item","itemProps","rawLabel","subtitleMapping","lineItem","MultiSurveyPart","multiPartProps","parts","subTitle","convertAndPrint","unitType","unit","survey","application","maxWeight","terrain","maneuvers","roadTypes","pto","engineHp","engineTorque","engineMake","cruiseSpeed","maxSpeed","findKey","preferenceRanking","n","pixelsToPoints","pixels","formattedDateString","date","padStart","getMonth","getDate","getFullYear","PDFRichText","note","editorState","EditorState","createWithContent","convertFromRaw","markdownToDraft","preserveNewlines","rawContent","convertToRaw","getCurrentContent","redraft","renderers","blockFallback","markdownStyles","StyleSheet","create","fontFamily","list","listItem","blockquote","HeaderTwo","UnorderedList","depth","UnorderedListItem","OrderedList","OrderedListItem","inline","BOLD","ITALIC","UNDERLINE","blocks","join","entities","LINK","Font","register","family","fonts","borderWidth","container","imageNoTransmission","imageContainer","pageMargins","transmissionTitle","learnMore","hr","fileDetails","fileDetail","responsesContainer","responsesContentContainer","responsesTitle","responsesDetails","responsesColumn","detailHeader","detailBody","detailListItem","inRowSurveyItem","footerContainer","specTitleView","specTitleSmallText","specTitleLargeText","notesContainer","getBase64Type","base64ImageString","imageData","split","charAt","PDFTransmissionResult","resultProps","simpleSurveyProps","MessageResultType","PDFSurveyResponse","PDFFooter","rootUrl","origin","TransmissionDoc","headerInfo","notes","runnerUp","surveyDate","testingDate","topChoice","RunnerUp","PDFGenerator","useMemo","document","fileName","blob","editorToolbar","borderLeft","editorWrapper","editorButton","editorContent","RichTextEditor","createEmpty","setEditorState","wrapperId","onEditorStateChange","markdownValue","draftToMarkdown","toolbarClassName","wrapperClassName","editorClassName","readOnly","readonly","toolbar","blockType","inDropdown","SurveyResult","router","viewingEditingState","setViewingEditingState","specTitle","setSpecTitle","specNotes","setSpecNotes","canViewSurveyResult","operations","canEditSurveyResult","hasViewAndEditPermission","saving","setSaving","submitError","setSubmitError","footerLhs","DebugInfo","debug","noTransmissionMessage","cancelButton","saveSpec","trim","version","SavePDFButton","_inTest","StartSaveSpecButton","PureEditSurveyResult","pdfLoading","setPdfLoading","pdfTitle","setPdfTitle","pdfNotes","setPdfNotes","debounceNotes","debounce","trailing","debounceTitle","autoFocus","onFocus","select","JSONPretty","require","EMPTY_SURVEY","MIN_TORQUE","allPreferenceRankingFilled","candidate","reduce","acc","isCompleteSurvey","Disclaimer","setDisplay","SurveyView","showDisclaimer","setShowDisclaimer","message","setMessage","setSurvey","setSubmissionState","sendSurveyData","filledSurvey","resultType","Transmission","NoTransmission","eventName","eventData","category","_satellite","scrollTo","MAX_WEIGHT","terrains","ImageQuestion","MAX_SPEED","MAX_HP","MAX_TORQUE","PureSurvey","terrainOptionContainer","confirmationDialogContainer","confirmationDialogHeader","mountainDialogHeader","confirmationDialogBody","confirmationDialogBodyBold","mountainOption","mountainLabel","optionsContainer","checkmarkBubble","unselectedCheckmarkBubble","selectedCheckmarkBubble","selectedCheckmark","transform","imageOptionContainer","imageOption","iconContainer","selectedOption","selectedTitleText","unselectedTitleText","checked","ImageOption","TerrainQuestion","hilly","mountainPass","mountainSelection","steepGradeConfirmed","mountainPassQuestion","steepGradeConfirmation","Checkbox","CheckboxQuestion","allowNone","noneChecked","setNone","FormGroup","capitalize","handleNone","ManeuversQuestion","slowCreepingChecked","setSlowCreepingChecked","withheldValues","setWithheldValues","slowCreepText","m","string","descendingComparator","b","valueA","valueB","now","valueOf","headCells","EnhancedTableHead","order","orderBy","onRequestSort","TableHead","TableRow","headCell","TableCell","sortDirection","TableSortLabel","active","property","IconComponent","ArrowDropUpIcon","EnhancedTable","rows","setOrder","setOrderBy","page","setPage","rowsPerPage","setRowsPerPage","sortedRows","array","comparator","stabilizedThis","el","sort","stableSort","isDate","getComparator","showRows","paginate","slice","LinkCell","linkCellProps","TableContainer","Table","rowCount","TableBody","rowLink","tabIndex","_test","useUTC","createdAtUTC","format","parseISO","lastEditedUTC","TablePagination","backIconButtonProps","nextIconButtonProps","rowsPerPageOptions","onChangePage","newPage","onChangeRowsPerPage","SnackBarType","PureSpecTable","specs","reverse","spec","toString","limit","actionLink","actionLabel","SpecTable","AppSplashLoggedIn","Home","signedIn","success","dark","iconVariant","spacing","EatonSnackBar","snackbarClass","Success","Snackbar","anchorOrigin","vertical","horizontal","showSnack","autoHideDuration","SnackbarContent","StyledTableCell","head","StyledTableDataRow","paperBody","emptyTableBody","emptyTableLink","emptyTableButton","tableCellActions","tableCellDisableEnable","tableCellId","tableCellName","tableCellRanking","tableCellInactive","tableCellActive","tableCellDisabled","progressBar","PureTransmissionTable","selectedRow","setSelectedRow","openDialog","setOpenDialog","openDialogForRank","setOpenDialogForRank","alertMessage","setAlertMessage","transmissions","transmissionsList","setTransmissions","isDropdownChanged","setDropdownChanged","openSnackbar","setOpenSnackbar","previous","openNewDialog","setOpenNewDialog","dialogContent","setDialogContent","updateLoadingState","isLoading","setRankofTransmissions","duplicateRanks","t","Id","Rank","curr","duplicates","rankings","duplicateNames","val","original","RenderObject","currentObject","previousObject","isRecursiveCall","currentTorquesCount","previousTorquesCount","modelTorqueHeight","currentDescriptionWords","previousDescriptionWords","rowHeightforDescription","currentUrlCharacters","previousUrlCharacters","rowHeightForUrl","formattedKey","capitalizedKey","toUpperCase","previousValue","hasChanged","Fragment","torqueIndex","previousTorque","torqueHasChanged","wordWrap","formattedValue","toDateString","getTransmissionLogs","getTransmissionLog","log","previousTransmissionLog","currentTransmissionLog","Grid","justify","item","xs","md","updatedBy","timeStamp","transmissionModel","square","elevation","deleteFunction","updateTransmissionRanks","tableLayout","Tooltip","toggleTransmissionFunction","updatedTransmissions","handleChange","TableFooter","colSpan","align","ErrorPage","ListTransmissions","showError","setShowError","loadingTransmissions","requeryFunction","transmissionRanks","console","logs","UserDataDump","setLoading","setError","makeCSV","csv","firstName","lastName","organizationType","organizationName","vocationCheckList","countryList","numberSavedSurveys","hiddenElement","createElement","encodeURI","download","click","bodyText","addNewButton","TransmissionData","placement","button","inputField","wrapper","card","largeErrorText","imageButtonContainer","imageButton","UNSAVED_CHANGES_WARNING","MAX_CHARS_ERROR","NUMBER_RANGE_ERROR","fieldName","SUPPORTED_FORMATS","transmissionSchema","yup","shape","required","imageFile","test","MAX_FILE_SIZE_MB","typeError","this","parent","PureTransmissionForm","useForm","validationSchema","reValidateMode","defaultValues","handleSubmit","errors","reset","clearError","formState","getValues","watch","triggerValidation","setName","debounceName","_","setDescription","debounceDescription","setLearnMoreUrl","debounceLearnMoreUrl","nest","flush","setPreviewImage","behavior","_testShowErrors","dirty","handleBeforeunload","returnValue","addEventListener","removeEventListener","previewImage","TransmissionTextField","textFieldProps","e","multiline","maxLength","helperText","when","Card","CardContent","field","as","accept","files","file","reader","FileReader","readAsDataURL","onloadend","defaultValue","labelId","allowNoValue","subfield","valueString","rules","minLength","fieldNameMin","fieldNameMax","defaultMinValue","defaultMaxValue","supportedControlProps","FormField","clearSubmissionState","sliderStyles","SettingSlider","sliderClasses","onChangeHandle","SettingNumberInput","errorMessage","ModelList","transmissionModelName","setTransmissionModelName","transmissionTorque","setTransmissionTorque","canSubmit","add","candidateModel","maxTorque","isDeleted","duplicateModelExists","newModelList","model","List","ListItem","ListItemText","ListItemIcon","without","preventDefault","InputLabelProps","shrink","endAdornment","InputAdornment","AxleRange","axleProps","errorMessageMin","errorMessageMax","InputField","inputFieldProps","labelName","parseFloat","Subtitle","Divider","TransmissionForm","submit","AddTransmissionForm","FormData","transmissionData","AddTransmissionPage","EditTransmissionForm","EditTransmissionPage","match","params","loadingTransmission","disableShrink","DemoPage","TempPage","AppHeader","Tab","RouterLink","handleClose","anchorRef","contains","setOpen","handleListKeyDown","AppBar","aria-controls","aria-haspopup","prevOpen","displayName","Popper","anchorEl","transition","disablePortal","TransitionProps","Grow","transformOrigin","ClickAwayListener","onClickAway","MenuList","autoFocusItem","AppFooter","FooterLink","newTab","StyledToolbar","wholeApp","AppChrome","vehicleType","table","tableData","VehicleApplication","details","descriptionItem","vehicleTypes","typeChunk","fireService","pickUpDelivery","transitCoach","helpTitle","helpContainer","topicContainer","topicTitle","topicLinks","topicLink","helpInfo","dividerLine","basicTextTitle","basicTextTitleNoTopMargin","basicTextBody","roadExamples","RoadTypes","RoadSection","examples","example","HelpPage","divider","BasicTextSection","firstItem","bodyCopy","sleep","milliseconds","Promise","resolve","setTimeout","hash","element","querySelector","scrollIntoView","locationScroll","Help","createAccountHeaderContainer","createAccountHeader","createAccountDescription","createAccountHeading","createAccountSubheading","createAccountSubtext","createAccountSignIn","anotherContainer","createAccountDetailsContainer","createAccountDetails","createAccountField","accountinformationField","verificationCodeContainer","verificationCodeField","emailHeading","disclaimer","submitButton","passwordFieldHeader","philWarning","nameFields","firstNameField","accountCreatedMessage","validateEmail","String","toLowerCase","OrganizationType","VocationCheckList","CountryList","EmailField","showInvalidEmailError","setShowInvalidEmailError","isValidEmail","validEmail","existingError","evt","setEmail","otherErrorText","disable","PureEmailPrompt","onSendVerification","emailSubmissionState","AccountCreationState","EmailExists","SendingEmailVerification","EmailFailed","passwordFieldContainer","passwordField","passwordRegisterError","passwordVerification","passwordVerificationColumn","passwordVerificationRow","passwordVerificationText","unmetPasswordRequirementText","DotIcon","hasLowerCase","password","hasUpperCase","hasNumber","hasSpecialCharacter","hasNineToSixteenCharacters","evaluatePassword","CreatePasswordField","showPassword","setShowPassword","retypePassword","setRetypePassword","handleClickShowPassword","InputLabel","htmlFor","Input","setPassword","setPasswordMatchError","onMouseDown","passwordMatchError","PureVerificationCodePrompt","PasswordPrompt","existingUser","VerificationOrPasswordFailed","verifyCode","InvalidVerificationCode","code","setCode","resendEmail","ResendingCode","AccountAlreadyVerified","SubmittingVerificationAndPassword","back","OtherStates","PureAccountInformationPrompt","sendAccountInfo","setFirstName","setLastName","setOrganizationType","setOrganizationName","setVocationCheckList","setCountryList","SubmittingAccountDetails","AccountDetailsFailed","PureCreateAccountHeader","CreateAccount","AwaitingEmailEntry","componentState","setStateAndExisting","newState","sendEmailVerification","AwaitingVerificationAndPasswordEntry","verificationCode","setVerificationCode","sendVerificationCodeAndPassword","user","AwaitingAccountDetails","getCurrentForm","RegisterPage","loginContainer","loginPage","backgroundImage","backgroundRepeat","backgroundPosition","loginContentContainer","loginFormContainer","loginLogo","loginTitle","loginFormFields","loginFieldMargin","getPaletteColor","loginSubmitButton","loginForgot","loginCreateAccount","backtoHome","defaultValidPassword","UserLogin","errorMessages","setErrorMessages","submitting","setSubmitting","isValidPassword","validPassword","canLogin","fieldsDisabled","submitForm","messages","LoginPage","login","form","useLogin","redirectTo","Cookies","remove","PureAccountCreatedView","AccountCreatedPage","AccountUpdatedPage","resetPasswordRow","PureResetPassword","passwordSet","ResetPassword","search","setPasswordSet","Query","newPassword","ResetPasswordPage","forgotPasswordRow","resetButton","PureForgotPassword","emailSent","ForgotPassword","setEmailSent","ForgotPasswordPage","inputText","PencilIcon","SavedSpecView","parse","savedSpec","originalFields","setOriginalFields","canSave","footerRhs","input","SavedSpecPage","loadingSurvey","setLoadingSurvey","surveyData","setSurveyData","getData","specTableContainer","specTableHeader","newSpecButton","AllSpecs","MySpecsPage","InactivePage","NotFoundPage","withAdobeAnalytics","WrappedComponent","script","appendChild","Component","App","idleTimer","onIdle","_onIdle","bind","Consumer","stateValue","dispatchValue","createMuiTheme","path","CssBaseline","exact","rootElement","getElementById","ReactDOM","render","AuthContext"],"mappings":"gMAeYA,E,uGCbCC,EAAsC,SAACC,GAClD,OAAO,6BAAMA,EAAMC,W,sECCfC,EAAYC,OAELC,EAAQ,eAChBF,EADgB,CAEnBG,QAAQ,eACHH,EAAUG,QADR,CAELC,QAAS,CACPC,KAAMC,OAAY,KAClBC,MAAOD,OAAY,KAErBE,KAAK,eAAD,QAAC,EACAR,EAAUG,eADX,aACC,EAAmBK,KADpB,CAEFJ,QAASE,OAAY,OAEvBG,KAAMH,OACNI,WAAY,CACVC,QAASL,QAAa,IACtBM,MAAON,QAAa,OAGxBO,WAAW,eACNb,EAAUa,WADL,CAERC,eAAgB,MAElBC,UAAU,eACLf,EAAUe,UADN,CAEPC,UAAW,CACTC,aAAc,CACZC,gBAAiBZ,QAAa,IAC9Ba,MAAOb,OAAY,MAErBc,eAAgB,CACdF,gBAAiBZ,OAAY,KAC7Ba,MAAOb,QAAa,MAGxBe,kBAAmB,CACjBC,KAAM,CACJ,YAAa,CACXJ,gBAAiB,gBAGrBK,QAAS,CACP,eAAgB,CACdC,uBAAwB,MACxBC,wBAAyB,OAE3B,gBAAiB,CACfC,oBAAqB,MACrBC,qBAAsB,SAI5BC,yBAA0B,CACxBN,KAAM,CACJJ,gBAAiBZ,QAAa,OAGlCuB,cAAe,CACbP,KAAM,CACJH,MAAOb,OAAY,OAGvBwB,SAAU,CACRR,KAAM,CACJH,MAAOb,QAAa,MAEtByB,UAAW,CACT,YAAa,CACXC,aAAa,aAAD,OAAe1B,OAAY,OAKzC,oBAAqB,CACnB0B,aAAa,aAAD,OAAe1B,OAAY,SAI7C2B,UAAW,CACTC,KAAM,CACJf,MAAOb,OAAY,IACnB6B,aAAc,MACdC,OAAQ,MACRC,QAAS,QAEXC,MAAO,CACLnB,MAAOb,OAAY,KACnB6B,aAAc,MACdC,OAAQ,OAEVG,MAAO,CACLpB,MAAOb,OAAY,KACnBkC,UAAW,kCACXC,UAAW,OACXL,OAAQ,OACRM,MAAO,OACPC,WAAY,OAEdC,WAAY,CACV,KAAQ,OACR,gBAAmB,cACnB,KAAQ,GACR,SAAY,GACZ,MAAO,CACLlC,WAAY,cACZS,MAAO,SAGX0B,KAAM,CACJ3B,gBAAiB,gBAGrB4B,aAAc,CACZxB,KAAM,CACJH,MAAO,YAGX4B,kBAAmB,CACjBzB,KAAM,CACJc,OAAQ,OACRY,OAAO,aAAD,OAAe1C,OAAY,MACjC2C,UAAW,aACXT,UAAW,qCACXL,aAAc,OAEhBe,IAAK,GACLjC,aAAc,CACZC,gBAAiBZ,OAAY,KAE/B6C,gBAAiB,CACfzC,WAAW,0BAAD,OAA4BJ,OAAY,KAAxC,gBAAoDA,OAAY,KAAhE,UACVkC,UAAW,2CAGfY,cAAe,CACbC,UAAW,CACTC,QAAS,QAGbC,cAAe,CACbC,GAAI,CACFrC,MAAOb,QAAa,KACpBmD,WAAY,IACZC,SAAU,QAEZC,GAAI,CACFxC,MAAOb,QAAa,KACpBmD,WAAY,IACZC,SAAU,QAEZE,GAAI,CACFzC,MAAOb,QAAa,KACpBmD,WAAY,IACZC,SAAU,QAEZG,GAAI,CACF1C,MAAOb,QAAa,KACpBmD,WAAY,IACZC,SAAU,QAEZI,UAAW,CACT3C,MAAOb,OAAY,KACnBoD,SAAU,OACVK,WAAY,QAEdC,UAAW,CACTP,WAAY,IACZQ,cAAe,SACfP,SAAU,OACVvC,MAAOb,OAAY,KACnB4D,cAAe,kBCpKjBC,EAAeC,aAAW,SAACC,GAAD,MAAmB,CACjD/C,KAAM,CACJoB,MAAO,cACPe,WAAY,IACZtB,aAAc,OAEhBmC,SAAU,CACRC,YAAaF,EAAMlE,QAAQM,KAAK,MAElC+D,kBAAmB,CACjBD,YAAaF,EAAMlE,QAAQM,KAAK,SAVf2D,CAYjBK,KAESC,EAOT,SAAC5E,GACoCA,EAA/B6E,eADM,IACaC,EADd,YAC0B9E,EAD1B,oBAEb,OACE,gBAACqE,EAAD,iBACMS,EADN,CAEEzD,MAAOrB,EAAMqB,OAAS,UACtB0D,QAAS/E,EAAM+E,SAAW,YAC1BC,UAAS,UAAKhF,EAAMgF,WACpBC,eAAa,IAEZjF,EAAMC,SACND,EAAM6E,gBACL,gBAACK,EAAA,EAAD,CACEC,KAAM,GACNC,MAAO,CACL/D,MAAOjB,EAASC,QAAQC,QAAQC,KAChC8E,SAAU,WACVC,IAAK,MACLC,KAAM,MACN5C,WAAY,GACZE,YAAa,QAQZ2C,EAQT,SAACxF,GACoCA,EAA/B6E,eADM,IACaC,EADd,YAC0B9E,EAD1B,oBAEb,OACE,gBAAC,EAAD,eAEEyF,UAAWC,IACXC,GAAI3F,EAAM2F,IACNb,EAJN,CAKEzD,MAAOrB,EAAMqB,OAAS,UACtB0D,QAAS/E,EAAM+E,SAAW,cAEzB/E,EAAMC,W,SC5EA2F,EAAYC,aAAW,SAACtB,GACnC,MAAO,CACLuB,oBAAqB,CACnBlD,MAAO,QACPmD,SAAU,OACVC,aAAc,QAEhBC,qBAAqB,eCRkB,CACzCC,YAAa,OACbC,aAAc,QDMQ,CAElBC,QAAS,OACTC,aAAc,SACdN,SAAU,QACVO,SAAU,SACVC,YAAa,OACb1D,WAAY,SAEd2D,mBAAoB,CAClB7D,UAAW,OACX4D,YAAa,OACbP,aAAc,SACdX,SAAU,YAEZoB,kBAAmB,CACjB9D,UAAW,OACX2D,SAAU,SAEZI,WAAY,CACVV,aAAc,QAEhBW,aAAc,CACZX,aAAc,YE/BPY,EAAoB,kBAC/B,yBAGEC,QAAQ,eACRC,KAAK,OACLC,MAAM,6BACNC,oBAAoB,iBAEpB,uBAAGC,OAAO,oBACR,0BACEC,EAAE,yBAIFJ,KAAK,yBAGT,8BACE,4BACEK,GAAG,aACHC,EAAE,IACFC,EAAE,IACFzE,MAAM,OACNN,OAAO,MACPgF,YAAY,iBACZC,0BAA0B,QAE1B,6BAASC,aAAa,IAAIC,OAAO,uBACjC,mCACEC,GAAG,cACHC,KAAK,SACLC,OAAO,8CAET,mCACA,oCAAgBC,aAAa,MAC7B,mCACEF,KAAK,SACLC,OAAO,+CAET,6BACEE,KAAK,SACLC,IAAI,qBACJN,OAAO,uBAET,6BACEK,KAAK,SACLJ,GAAG,gBACHK,IAAI,qBACJN,OAAO,UAET,mCACEC,GAAG,cACHC,KAAK,SACLC,OAAO,4CACPH,OAAO,cAET,8BAAUO,GAAG,OACb,iCAAaD,IAAI,YAAYE,SAAS,aAAaC,GAAG,KAAKC,GAAG,MAC9D,mCACER,KAAK,SACLC,OAAO,iEAET,6BAASE,KAAK,SAASC,IAAI,QAAQN,OAAO,yBAE5C,oCACEN,GAAG,gBACHiB,GAAG,IACHC,GAAG,IACHC,GAAG,OACHC,GAAG,MACHC,cAAc,kBAEd,0BAAMC,UAAU,YAChB,0BAAMC,OAAO,IAAID,UAAU,gBCtEtBE,EAAY,WACvB,IAAMC,EAAUhD,IAQhB,OACE,yBAAKZ,UAAW4D,EAAQ9C,qBACtB,yBACEV,MAAO,CACLxE,WAAY,2DAGd,yBAAKoE,UAAW4D,EAAQ3C,sBACtB,yBAAKjB,UAAW4D,EAAQpC,oBACtB,yBACEqC,IAAI,kCACJC,IAAI,kCAGR,yBAAK9D,UAAW4D,EAAQnC,mBACtB,kBAACsC,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQlC,YAtB/B,gCAyBb,kBAACqC,EAAA,EAAD,CAAYhE,QAAQ,YAAYC,UAAW4D,EAAQjC,cAxBvC,wcA2BZ,kBAAC,EAAD,CAAiBhB,GAAG,UAAUqD,cAAY,sBAA1C,kBAMN,kBAAC,EAAD,Q,SCxCOpD,EAAYC,aAAW,SAACtB,GACnC,MAAO,CACL0E,eAAgB,CACd3G,OAAQ,OACR8D,QAAS,OACT8C,SAAU,EACVC,UAAW,UAEbC,cAAe,CACbxG,MAAO,QACPyG,WAAY,OACZnD,YAAa,QACbC,aAAc,QACdzE,uBAAwB,EACxBC,wBAAyB,EACzB2H,cAAe,OACf5G,UACE,yGAEJ6G,qBAAsB,CACpBC,UAAW,UAEb9I,KAAM,CACJsF,aAAc,YCpBPyD,EAAuB,WAClC,IAAMb,EAAUhD,IAIhB,OACE,yBAAKZ,UAAW4D,EAAQK,gBACtB,kBAACS,EAAA,EAAD,CAAO1E,UAAW4D,EAAQQ,eACxB,yBAAKpE,UAAW4D,EAAQW,sBACtB,kBAACR,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQlI,MAPjC,0CAUX,kBAACqI,EAAA,EAAD,CAAYhE,QAAQ,YAAYC,UAAW4D,EAAQlI,MARzD,wMAWM,kBAAC,EAAD,CAAiBiF,GAAG,aAApB,sBCdGC,EAAYC,aAAW,SAACtB,GAAD,MAAmB,CACrDoF,OAAQ,CACNjH,UACE,yEACFR,aAAa,aAAD,OAAeqC,EAAMlE,QAAQM,KAAK,OAEhDiJ,UAAU,eLV+B,CACzC1D,YAAa,OACbC,aAAc,QKQL,CAEPJ,SAAU,QACVO,SAAU,SACVC,YAAa,OACb1D,WAAY,OACZP,OAdwB,OAexBM,MAAO,OACPwD,QAAS,OACTyD,eAAgB,gBAChB3H,aAAc,SAEhB4H,aAAc,CACZxH,OAAQ,OACR8D,QAAS,QAEX2D,cAAe,CACb1I,MAAOkD,EAAMlE,QAAQK,KAAKJ,QAC1BsD,SAAU,QAEZoG,UAAW,CACT1H,OAAQ,OACR8D,QAAS,OACT6D,WAAY,SACZ9D,aAAc,MACdI,YAAa,OACbL,YAAa,MACbmD,WAAY,MACZnH,aAAa,yBAEfgI,gBAAiB,CACfhI,aAAa,aAAD,OAAeqC,EAAMlE,QAAQC,QAAQC,OAEnD4J,KAAM,CACJ7H,OAAQ,MACR6D,aAAc,QAEhBiE,SAAU,CACR9H,OAAQ,OACR8D,QAAS,OACT6D,WAAY,UAEdI,OAAQ,CACNhJ,MAAOkD,EAAMlE,QAAQC,QAAQC,KAC7B6D,cAAe,YACfR,SAAU,OACVD,WAAYY,EAAMxD,WAAWC,gBAE/BsJ,kBAAmB,CACjBC,cAAe,UAEjBC,kBAAmB,CACjB5H,MAAO,QAKPF,UACE,mGACFL,aAAc,OAEhBoI,eAAgB,CACd9H,UAAW,WCtEFiD,EAAYC,aAAW,SAACtB,GACnC,MAAO,CACL6E,cAAe,CACbhD,QAAS,OACTsE,cAAe,SACfxB,SAAU,EACVnD,SAAU,UAEZ4E,YAAa,CACX,YAAa,CACXC,QAAS,KACTrF,KAAM,EACNsF,MAAO,EACPC,QAAS,EACTlI,MAAO,OACPN,OAAO,eAAD,ODfc,OCed,KACN+C,SAAU,WACVzE,WACE,oIACFqG,OAAQ,YACR8D,eAAgB,c,qEXTZjL,O,qCAAAA,I,kCAAAA,M,KA+CL,IAAMkL,EAAmBC,IAAMC,cACpC,MAEWC,EAAsBF,IAAMC,cACvC,MAGK,SAASE,IACd,IAAMC,EAAUJ,IAAMK,WAAWN,GACjC,GAAgB,OAAZK,EACF,MAAM,IAAIE,MAAM,0DAElB,OAAOF,EAGF,SAASG,IACd,IAAMH,EAAUJ,IAAMK,WAAWH,GACjC,GAAgB,OAAZE,EACF,MAAM,IAAIE,MACR,6DAGJ,OAAOF,EAGT,SAASI,EAAQC,EAAyBC,GACxC,OAAQA,EAAOhE,MACb,IAAK,eACH,OAAO,aAAEiE,cAAe9L,EAAW+L,eAAkBF,EAAOG,SAC9D,IAAK,eACH,MAAO,CAAEF,cAAe9L,EAAWiM,iBACrC,QACE,OAAOL,GAIb,SAASM,EAAaC,GAEpB,OADAC,OAAOC,aAAaC,QAAQ,gBAAiBH,EAASI,OAC/C,CAAE1E,KAAM,eAAgBmE,QAASG,GAS1C,SAAeK,EACbC,GADF,SAAAC,EAAAC,OAAA,kFAIWF,EAASG,MAJpB,2DAAAF,EAAA,MAOmBG,KAAKC,UAAUL,EAASG,OAP3C,mGASa,MATb,+DAkBA,IAAMG,GAAiC,CACrCjB,cAAe9L,EAAWiM,iBAqIbe,GAxH8B,SAAC9M,GAAkB,IAAD,EACnCiL,IAAM8B,WAAWtB,EAASoB,IADS,mBACtDnB,EADsD,KAC/CsB,EAD+C,OAE3B/B,IAAMgC,UAAS,GAFY,mBAEtDC,EAFsD,KAE3CC,EAF2C,KAGvDC,EAAUC,cAmBhB,SAAeC,EACbC,GADF,iBAAAf,EAAAC,OAAA,kEAAAD,EAAA,MAGyBgB,IAAMC,QAAN,eAClBF,EADkB,CAErBG,QAAQ,eACHH,EAAYG,QADV,CAEL,oBAAqBC,IAAOC,IAAI,sBAAwB,KAE1DC,eAAgB,kBAAM,OAT1B,aAGQtB,EAHR,QAWeuB,OAAS,KAXxB,yCAYW,CACLC,IAAI,EACJD,OAAQvB,EAASuB,OACjBE,KAAMzB,EAASG,OAfrB,UAkBwB,MAApBH,EAASuB,SACT5B,OAAOC,aAAa8B,QAAQ,iBAnBhC,oCAAAzB,EAAA,MAqBgCgB,IAAMU,KAAN,2CACUhC,OAAOC,aAAa8B,QACtD,kBAEF,GACA,CAAEJ,eAAgB,kBAAM,MA1B9B,WA6BiC,MA7BjC,OA6BsBC,OA7BtB,oCAAAtB,EAAA,MA+BkCgB,IAAMC,QAAN,eACvBF,EADuB,CAE1BM,eAAgB,kBAAM,OAjC9B,eA+BYM,EA/BZ,yBAmCa,CACLJ,IAAI,EACJD,OAAQK,EAAcL,OACtBE,KAAMG,EAAczB,OAtC5B,YA0CQ1M,EAAMoO,eA1Cd,oCAAA5B,EAAA,MA4CYxM,EAAMoO,kBA5ClB,eA+CIpB,EAAS,CAAErF,KAAM,iBA/CrB,kBAiDW,CACLoG,IAAI,EACJD,OAAQvB,EAASuB,OACjBE,KAAM,OApDZ,oBAyDYzB,EAASuB,OAzDrB,YAAAtB,EAAA,MA0DgBF,EAAeC,IA1D/B,8CAwDIwB,IAAI,EACJD,OAzDJ,KA0DIE,KA1DJ,6CAjBAK,qBAAU,WACRlB,GAAa,IACO,mBAAAX,EAAAC,OAAA,kEAAAD,EAAA,MACac,EAA+B,CAC5DgB,IAAK,4BACLC,OAAQ,SAHQ,QACZC,EADY,QAMGT,IACnBf,EAAShB,EAAawC,EAAiBR,OAEzCb,GAAa,GATK,qCAYpBsB,KACC,CAAC/C,EAAME,gBAgEV,IAAM8C,EAAS,oBAAAlC,EAAAC,OAAA,2EAAAD,EAAA,MAELc,EAAqB,CACzBgB,IAAK,sBACLC,OAAQ,YAJC,6DASbvB,GAlIFd,OAAOC,aAAawC,WAAW,iBAC/BzC,OAAOC,aAAawC,WAAW,wBACxB,CAAEhH,KAAM,kBAuHA,wDAiBTiH,EAAkB,CACtB5C,aAAc,SAACC,GAAD,OACZe,EAAShB,EAAaC,KACxBqB,uBACAoB,SACAG,QAVc,oBAAArC,EAAAC,OAAA,gDACdiC,IACAtB,EAAQ0B,KAAK,aAFC,uCAahB,OAAI5B,EAAkB,8BAGpB,kBAAClC,EAAiB+D,SAAlB,CAA2BC,MAAOtD,GAChC,kBAACP,EAAoB4D,SAArB,CAA8BC,MAAOJ,GAClC5O,EAAMC,YYzPR,SAASgP,KACd,OACE,yBAAK7J,MAAO,CAAEzC,UAAW,QAAS6G,UAAW,WAC3C,kBAACT,EAAA,EAAD,CAAYhE,QAAQ,KAAKK,MAAO,CAAEY,aAAc,SAAhD,iBAGA,kBAAC+C,EAAA,EAAD,CAAY3D,MAAO,CAAEY,aAAc,SAAnC,6CAGA,kBAAC,EAAD,CAAiBL,GAAG,KAApB,sBCFN,IA0BeuJ,GA1BuB,SAAClP,GACrC,IAAMmP,EAAY/D,IACZgE,EAAWC,cAEjB,OAAIF,EAAUvD,gBAAkB9L,EAAWiM,iBACzC4B,IAAO2B,IAAI,kBAAmBF,EAASG,UAErC,kBAAC,IAAD,CACE5J,GAAI,CACF4J,SAAUvP,EAAMwP,UAChB9D,MAAO,CAAE+D,KAAMzP,EAAMoP,cAIlBpP,EAAM0P,eACU1P,EAAM0P,aAAaC,MAAK,SAACC,GAAD,OAC/CT,EAAUU,WAAWC,MAAMC,SAASH,MAG7B,kBAACX,GAAD,MAIJ,kBAAC,IAAUjP,IClCpB,IAQegQ,GARI,WACjB,IAAMC,EAAUhF,IAAMiF,QAAO,GAI7B,OAHAjF,IAAMoD,WAAU,kBAAM,WACpB4B,EAAQE,SAAU,KACjB,IACIF,GCkBMG,OAZf,SAAiCvD,GAC/B,IAAMoD,EAAUD,KADuG,EAE7F/E,IAAMgC,SAASJ,GAF8E,mBAEhHnB,EAFgH,KAEzG2E,EAFyG,KASvH,MAAO,CAAC3E,EANkBT,IAAMqF,aAAY,SAACC,GACvCN,EAAQE,SACVE,EAASE,KAEV,CAACF,EAAUJ,MCjBHrK,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLiM,QAAS,CACP5N,MAAO,OACPyD,aAAc,UAEhBoK,qBAAsB,CACpBnH,cAAe,OACfE,UAAW,UAEbD,qBAAsB,GACtBmH,UAAW,CACTtK,QAAS,SACTJ,aAAc,OACdwD,UAAW,QAEbmH,aAAc,CACZ/M,SAAU,OACVD,WAAY,SACZiN,UAAW,SACXvP,MAAOb,QAAa,KACpB0F,YAAa,Y,mHCjBZ,SAAS2K,GAA2BC,GAGD,IAAD,EACf7D,wBAAwB8D,GADT,mBAChCrE,EADgC,KAC1BsE,EAD0B,OAEP/D,oBAAS,GAFF,mBAEhCuD,EAFgC,KAEvBS,EAFuB,OAGThE,oBAAS,GAHA,mBAGhCiE,EAHgC,KAGvBC,EAHuB,KAK/B7D,EAAyB9B,IAAzB8B,qBAqBR,OAnBAe,qBAAU,WACR,IAAgB,IAAZ6C,EAAkB,EACF,mBAAA1E,EAAAC,OAAA,kEAAAD,EAAA,MACOc,EAAwBwD,EAAOM,gBADtC,QACV7E,EADU,QAEHwB,IACXiD,EAAQzE,EAASyB,MACjBmD,GAAW,IACD5E,EAASwB,GAInBkD,GAAa,IAHbD,OAAQD,GACRI,GAAW,IAIbF,GAAa,GAXG,qCAclBI,OAEAP,EAAOI,SAAW,IAAII,OAAOJ,IAC1B,CACLV,EACA9D,EACA,WACEyE,GAAW,KAkBV,SAASI,GACd7E,EACA8E,EACAC,GAEA,IAAMjQ,EAAOiQ,GAAS,GAClBhK,EAAS+J,EACb,GAAI9E,aAAgBgF,KAClBjK,EAAOkK,OAAOnQ,EAAMkL,QACf,GAAIkF,MAAMC,QAAQnF,GACvB,IAAK,IAAIoF,EAAI,EAAGA,EAAIpF,EAAKqF,OAAQD,IAC/BrK,EAAS8J,GAAe7E,EAAKoF,GAAIrK,EAAQjG,EAAO,IAAMsQ,EAAI,SAEnC,kBAATpF,GAAqBA,EACrCsF,OAAOC,QAAQvF,GAAMwF,SAAQ,SAACC,GAE1B1K,EAAS8J,GAAeY,EAAM,GAAI1K,EADvB,KAATjG,EACwC2Q,EAAM,GAEN3Q,EAAO,IAAM2Q,EAAM,OAIpD,OAATzF,GAAiC,qBAATA,GAC1BjF,EAAOkK,OAAOnQ,EAAMkL,GAGxB,OAAOjF,ECjFF,ICoBK2K,MAiBAC,GDrCCzM,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL+N,eAAgB,CAAE9I,UAAW,UAC7BgH,QAAS,CACP7N,UAAW,OACXC,MAAO,OACPyD,aAAc,UAEhBkM,SAAU,CACR3P,MAAO,OAET4P,iBAAkB,CAChB5P,MAAO,OAET6P,WAAY,CACV1M,SAAU,SAEZ2M,IAAK,CACH,UAAW,CAAE9R,WAAY,YAE3B+R,SAAU,CACRrM,SAAU,IACVsM,WAAY,SACZpP,QAAS,KAEXqP,aAAc,CACZC,eAAgB,OAChBzR,MAAOkD,EAAMlE,QAAQK,KAAKJ,SAE5ByS,iBAAkB,CAChBzQ,OAAQ,OACRM,MAAO,OACPY,QAAS,OACTwP,SAAU,SACVC,aAAc,YAEhBC,oBAAqB,CACnB9M,QAAS,OACT6D,WAAY,SACZJ,eAAgB,iBAElBsJ,QAAS,CACPxQ,UAAW,OACXqD,aAAc,OACdO,YAAa,QAEf6M,WAAY,CACV9J,cAAe,IACfnD,aAAc,OACdD,YAAa,OACb0M,WAAY,UAEdpR,KAAM,CACJoB,MAAO,QAETyQ,eAAgB,CACdnQ,OAAQ,EACRoQ,KAAM,gBACNhR,OAAQ,EACRiR,QAAS,EACTP,SAAU,SACVxP,QAAS,EACT6B,SAAU,WACVC,IAAK,GACL1C,MAAO,GAET4Q,gBAAiB,CACf5S,WAAYJ,OAAY,IACxBgD,QAAS,MACTX,WAAY,QAEd4Q,aAAc,CACZ9Q,UAAW,QAEb+Q,QAAS,CACPrK,WAAY,OACZG,UAAW,Y,2CCxDL4I,W,+BAAAA,G,4BAAAA,G,YAAAA,G,sBAAAA,G,oBAAAA,G,kBAAAA,G,cAAAA,G,oBAAAA,G,sCAAAA,G,4BAAAA,G,gBAAAA,G,oCAAAA,G,gBAAAA,G,2BAiBAC,K,8BAAAA,E,sCAAAA,E,gBAAAA,E,8BAAAA,E,kBAAAA,E,eAAAA,Q,KASL,IASKsB,GATCC,GAA6D,CACxEC,cAAe,mBACfC,kBAAmB,wBACnBC,OAAQ,SACRC,cAAe,gBACfC,QAAS,UACTC,MAAO,U,SAGGP,K,8BAAAA,E,UAAAA,E,oCAAAA,E,gCAAAA,E,6BAAAA,Q,KAQL,IAiBKQ,GAOAC,GAMAC,GA9BCC,GAA2E,CACtFC,cAAe,sDACfC,IAAK,4BACLC,iBAAkB,mCAClBC,aAAc,uDACdC,eAAgB,4BAChBC,YAAa,gBAGFC,GAA+E,CAC1FC,aAAc,2BACdC,YAAa,eACbC,kBAAmB,qCACnBC,MAAO,iBACPC,SAAU,sB,SAGAf,K,cAAAA,E,gCAAAA,E,gBAAAA,E,iBAAAA,Q,cAOAC,K,cAAAA,E,oCAAAA,E,mBAAAA,Q,cAMAC,K,YAAAA,E,4BAAAA,E,wCAAAA,E,oCAAAA,E,yBAAAA,Q,qDC9FCzO,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL4Q,kBAAmB,CACjB/O,QAAS,OACTgP,SAAU,OACV1K,cAAe,OAEjB2K,iBAAkB,CAChBjP,QAAS,OACTgP,SAAU,OACV1K,cAAe,UAEjB4K,OAAQ,CACNlP,QAAS,SACTxD,MAAO,QACP2D,YAAa,YCNZ,SAASgP,GAAgCvV,GAQ9C,IAAM4I,EAAUhD,KACV4P,EAAkB5N,kBAAO5H,EAAM4H,QAC/BxB,EAAUpG,EAAMyV,YAClBC,iBAAMF,EAAiBxV,EAAMyV,aAAaE,KAAI,SAACC,EAAKC,GAClD,OACE,yBAAKC,IAAG,iBAAYD,GAAS7Q,UAAW4D,EAAQ0M,QAC7CM,EAAID,KAAI,SAACI,GAAD,OACP,yBAAKD,IAAG,eAAUC,IAChB,kBAACC,GAAA,EAAD,CACEF,IAAKG,GAAaF,GAClB/Q,UAAWiR,GAAaF,GACxB/M,cAAaiN,GAAaF,GAC1B/G,MAAO+G,EACPG,QAAS,kBAACC,GAAA,EAAD,MACTC,MACEpW,EAAMqW,aAAerW,EAAMqW,aAAaN,GAAKO,qBAAUP,aAQrEP,EAAgBG,KAAI,SAACI,GAAD,OAClB,yBAAKD,IAAG,eAAUC,IAChB,kBAACC,GAAA,EAAD,CACEF,IAAKG,GAAaF,GAClB/Q,UAAWiR,GAAaF,GACxB/M,cAAaiN,GAAaF,GAC1B/G,MAAO+G,EACPG,QAAS,kBAACC,GAAA,EAAD,MACTC,MAAOpW,EAAMqW,aAAerW,EAAMqW,aAAaN,GAAKO,qBAAUP,SAKxE,OACE,kBAACQ,GAAA,EAAD,CAAa9Q,UAAU,YACrB,kBAAC+Q,GAAA,EAAD,CACEC,aAAYzW,EAAM0W,KAClBA,KAAMT,GAAajW,EAAM0W,MACzB1H,MAAOhP,EAAMgP,OAAS,GACtB2H,SAAU,SAACC,EAA4C5H,GACrDhP,EAAM6W,SAAU7H,IAElBhK,UACEhF,EAAMyV,YACF7M,EAAQuM,kBACRvM,EAAQyM,kBAGbjP,I,ICKJ0Q,G,sBCzEQlR,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLwS,gBAAiB,CACfnU,MAAO,QACPoD,aAAc,QAEhBgR,aAAc,CACZpU,MAAO,OACPwD,QAAS,OACTyD,eAAgB,gBAChBI,WAAY,WACZjE,aAAc,QAEhBiR,eAAgB,CACd7Q,QAAS,cACT6D,WAAY,WACZ3H,OAAQ,cACRiE,YAAa,SAEf2Q,UAAW,CACTrU,WAAY,MACZoH,WAAY,WACZ5I,MAAOkD,EAAMlE,QAAQK,KAAKyW,WAE5BrU,WAAY,CAEV,KAAQ,GAER,SAAY,GACZ,MAAO,CACLlC,WAAY,cACZS,MAAO,a,oFDzBTuE,GAAYC,aAAW,SAACtB,GAAD,OAC3B6S,aAAa,CACX5V,KAAM,CACJ4E,QAAS,OACT6D,WAAY,YAEdoN,UAAW,CACTzU,MAAO,OACP0U,cAAe,QACfhO,cAAe,KAEjBiO,QAAS,CACPnR,QAAS,OACTsE,cAAe,SACf/H,UAAW,OACX4D,YAAa,MACb0D,WAAY,WACZjE,aAAc,QAEhBwR,YAAa,CACX5U,MAAO,OACPN,OAAQ,aAWRmV,GAAc,SAACzX,GAA6B,IACxC0X,EAAiC1X,EAAjC0X,SAAUf,EAAuB3W,EAAvB2W,SAAagB,EADgB,YACN3X,EADM,yBAG/C,OACE,kBAAC,KAAD,iBACM2X,EADN,CAEEC,YAAaF,EACbG,cAAe,SAACjQ,GACd+O,EAAS,CACPmB,OAAQ,CACN9I,MAAOpH,EAAOoH,UAIpB+I,mBAAiB,EACjBC,iBAAe,EACfC,OAAQjY,EAAMiY,Y,SAmBfnB,O,WAAAA,I,gBAAAA,Q,KAKE,IE3EKoB,GF2ECC,GAAuB,SAACnY,GACnC,IAAM4I,EAAUhD,KAeVwS,EAAuB,SAACC,GAC5BrY,EAAM2W,UAAY3W,EAAM2W,SAAS0B,IAG7BC,EAAgB,SAACC,GACrB,OAAIvY,EAAMwY,KAAOD,EAAiBvY,EAAMwY,IAC/BxY,EAAMwY,IACJxY,EAAMyY,KAAOF,EAAiBvY,EAAMyY,IACtCzY,EAAMyY,IAERF,GAGHG,EAAe,SAACC,GACpB,IAAMC,EACJD,IAAc7B,GAAU+B,GACpB7Y,EAAM8Y,KACJ9Y,EAAM8Y,KACN,EACF9Y,EAAM8Y,MACL9Y,EAAM8Y,MACN,EACPV,EAAqBE,EAAcS,SAAS/Y,EAAMgP,OAAS4J,KAwB7D,OACE,yBAAK5T,UAAW4D,EAAQpH,MACtB,yBAAKwD,UAAW4D,EAAQ2O,SACtB,kBAACyB,GAAA,EAAD,CACEC,SAAUjZ,EAAMiZ,SAChBxC,aAAW,WACXtR,KAAK,QACL+T,QAAS,kBAAMR,EAAa5B,GAAU+B,MAEtC,kBAAC,KAAD,CAAqB7T,UAAW4D,EAAQ4O,eAE1C,kBAACwB,GAAA,EAAD,CACEC,SAAUjZ,EAAMiZ,SAChBxC,aAAW,WACXtR,KAAK,QACL+T,QAAS,kBAAMR,EAAa5B,GAAUqC,QAEtC,kBAAC,KAAD,CAAuBnU,UAAW4D,EAAQ4O,gBAG9C,kBAAC4B,GAAA,EAAD,CACEH,SAAUjZ,EAAMiZ,SAChBjU,UAAS,UAAKhF,EAAMgF,UAAX,YAAwB4D,EAAQyO,WACzCjB,MAAOpW,EAAMoW,MACbpH,MAAOhP,EAAMgP,MACb2H,SApFwB,SAC5BC,GAEA,IAAMyC,EAAcN,SAAQ,OAACnC,QAAD,IAACA,OAAD,EAACA,EAAOkB,OAAO9I,MAAMsK,QAAQ,KAAM,KACnC,MAAnB,OAAL1C,QAAK,IAALA,OAAA,EAAAA,EAAOkB,OAAO9I,QAAgC,OAAhBhP,EAAMgP,MACtCoJ,OAAqBrH,GACZwI,MAAMF,GACfjB,EAAqB,MAErBA,EAAqBiB,IA4EnBG,WAAY,CACVC,eAAgBhC,GAChBiC,WAAY,CACVzB,OAlDK,SAACrB,GACd,IAAM2B,EAAiBQ,SAASnC,EAAMkB,OAAO9I,MAAMsK,QAAQ,KAAM,KACjE,GAA2B,KAAvB1C,EAAMkB,OAAO9I,MACfoJ,EAAqBE,EAAc,SAC9B,GAAItY,EAAM8Y,KAAM,CACrB,IAAMa,EAAYpB,EAAiBvY,EAAM8Y,KACnCc,EACJD,EAAY3Z,EAAM8Y,KAAO,EACrBP,EAAiBoB,EACjBpB,GAAkBvY,EAAM8Y,KAAOa,GACrCvB,EAAqBE,EAAcsB,SAEnCxB,EAAqBE,EAAcC,KAwC7B,MAAS,CAAEjP,cAAe,OAC1B,cAAetJ,EAAM6Z,WACrB,kBAAmB7Z,EAAM8Z,iBAG7BC,UAzCkB,SAACnD,GACD,KAAlBA,EAAMoD,SAAgBtB,EAAa5B,GAAU+B,IAC3B,KAAlBjC,EAAMoD,SAAgBtB,EAAa5B,GAAUqC,Y,SEtIzCjB,K,oBAAAA,E,iBAAAA,Q,KAUL,IAAM+B,GAAc,CACzBC,OAAO,eAAMC,GAAe,SAAtB,CAAiCC,SAAU,MAAOC,OAAQ,OAChEC,MAAM,eAAMH,GAAe,MAAtB,CAA6BC,SAAU,MAAOC,OAAQ,QAC3DE,MAAM,eAAMJ,GAAe,OAAtB,CAA+BC,SAAU,KAAMC,OAAQ,OAC5DG,OAAO,eAAML,GAAe,QAAtB,CAA+BC,SAAU,WAAYC,OAAQ,QAerE,SAASF,GAAmFM,GAC1F,MAAO,CACLC,SAAU,SAAC1L,GAAD,OAA2B2L,KAAKC,MAAM5L,EAAQyL,IACxDI,WAAY,SAAC7L,GAAD,OAAyB2L,KAAKC,MAAM5L,EAAQyL,K,0BCnC/C7U,GAAYC,aAAW,SAACtB,GAAD,MAAmB,CACrDuW,MAAO,CACLlX,SAAU,OACVvC,MAAOkD,EAAMlE,QAAQM,KAAK,KAC1BwF,aAAc,OAEhB4U,aAAc,CAAE3U,QAAS,OAAQsE,cAAe,MAAOT,WAAY,cCFxD+Q,GAAmB,SAAChb,GAI/B,IAAM4I,EAAUhD,KAEhB,OACE,yBAAKZ,UAAW4D,EAAQmS,cACtB,kBAAChS,EAAA,EAAD,CAAY/D,UAAW4D,EAAQkS,OAA/B,yBACA,kBAACG,GAAA,EAAD,CACEjS,cAAY,gBACZgG,MAAOhP,EAAM8H,KACb4R,WAAY,CACV,cAAe,iBAEjB/C,SAAU,SAACC,GACT5W,EAAM2W,SAASC,EAAMkB,OAAO9I,SAG7BgD,OAAOC,QAAQiG,IAAMvC,KAAI,SAACxD,GAAD,OACxB,kBAAC+I,GAAA,EAAD,CAAUlS,cAAamJ,EAAM,GAAI2D,IAAK3D,EAAM,GAAInD,MAAOmD,EAAM,IAC1DA,EAAM,UAQNgJ,GAAcjQ,wBAAc,CACvC4P,MAAO5C,GAAKkD,SACZC,SAAU,SAACrM,OAGAsM,GAAe,SAACtb,GAC3B,IAAMub,EAAgB5N,IAAOC,IAAI,mBADiC,EAExCX,mBACxBsO,IAAkBrD,GAAKsD,OAAStD,GAAKsD,OAAStD,GAAKkD,UAHa,mBAE3DN,EAF2D,KAEpDO,EAFoD,KASlE,OACE,kBAACF,GAAYpM,SAAb,CAAsBC,MAAO,CAAE8L,QAAOO,SALd,SAACrM,GACzBqM,EAASrM,GACTrB,IAAO2B,IAAI,kBAAmBN,MAI3BhP,EAAMC,WAKAwb,GAAe,WAC1B,IAAMC,EAAcpQ,qBAAW6P,IAE/B,OACE,kBAAC,GAAD,CACErT,KAAM4T,EAAYZ,MAClBnE,SAAU+E,EAAYL,YCtDrB,SAASM,GAAe3b,GAU7B,IAAM4I,EAAUhD,KAEV8V,EAAcpQ,qBAAW6P,IAGzBnM,EAA8BhP,EAA9BgP,MAAO4M,EAAuB5b,EAAvB4b,SAAUC,EAAa7b,EAAb6b,SACnBH,EAAYZ,QAAU5C,GAAKsD,SAC7BxM,EAAQA,EAAQiL,GAAYja,EAAM8a,OAAOJ,SAAS1L,GAAS,KAC3D4M,EAAW3B,GAAYja,EAAM8a,OAAOJ,SAASkB,GAC7CC,EAAW5B,GAAYja,EAAM8a,OAAOJ,SAASmB,IAE/C,IAAM3E,EACJwE,EAAYZ,QAAU5C,GAAKkD,SACvBnB,GAAYja,EAAM8a,OAAOV,SACzBH,GAAYja,EAAM8a,OAAOT,OAf9B,EAiBiCpN,mBAChCjN,EAAMgP,OAAShP,EAAM4b,UAlBtB,mBAiBME,EAjBN,KAiBiBC,EAjBjB,KAqBKC,EAAY,SAAC3D,GACjB,IAAM4D,EACJP,EAAYZ,QAAU5C,GAAKkD,SACvB/C,EACA4B,GAAYja,EAAM8a,OAAOD,WAAWxC,GAC1C0D,EAAaE,GACbjc,EAAM6W,SAASoF,IAGXC,EACJR,EAAYZ,QAAU5C,GAAKkD,SACvBU,EACA7B,GAAYja,EAAM8a,OAAOJ,SAASoB,GAExC,OACE,yBAAK9W,UAAW4D,EAAQmO,iBACtB,yBAAK/R,UAAW4D,EAAQoO,cACtB,kBAACmF,GAAA,EAAD,CAAW1W,UAAU,UACnB,kBAACsD,EAAA,EAAD,CAAYhE,QAAQ,MAAM/E,EAAM0W,OAElC,yBAAK1R,UAAW4D,EAAQqO,gBACtB,kBAAC,GAAD,CACEjI,MAAOkN,EACPvF,SAAU,SAAC0B,GAAD,OAAsB2D,EAAU3D,IAC1CS,KAAM9Y,EAAMoc,SACZ5D,IAAKoD,EACLnD,IAAKoD,EACLhC,WAAU,UAAK5D,GAAajW,EAAM0W,MAAxB,UACV1R,UAAS,UAAKiR,GAAajW,EAAM0W,MAAxB,YAEX,yBAAK1R,UAAW4D,EAAQsO,WACtB,kBAACnO,EAAA,EAAD,KAAamO,MAInB,6BACE,kBAACmF,GAAA,EAAD,CACEC,iBACEtc,EAAMuc,gBACF,SAACvN,GAAD,OAAWA,EAAMwN,uBACjBzL,EAEN+H,KAAM9Y,EAAMoc,SACZpN,MAAO+J,SAAS,GAAD,OAAImD,KAAmBN,EACtClF,KAAMT,GAAajW,EAAM0W,MACzB+F,kBAAmB,SAAC7F,EAAO5H,GACzBgN,EAAUhN,IAEZ2H,SAAU,SAACC,EAAO5H,GAChB+M,EACEL,EAAYZ,QAAU5C,GAAKkD,SACtBpM,EACDiL,GAAYja,EAAM8a,OAAOD,WAAW7L,KAG5CwJ,IAAKoD,EACLnD,IAAKoD,EACLa,iBAAkB,SAAC1N,GAAD,gBAAcA,EAAMwN,iBAApB,YAAwCtF,IAC1DyF,kBAAgB,yBAChBC,kBAAmB5c,EAAMuc,gBAAkB,KAAO,MAClDM,MACE7c,EAAMuc,gBACF,CACE,CACEvN,MAAO4M,EACPxF,MAAM,GAAD,OAAKwF,EAASY,iBAAd,YAAkCtF,IAEzC,CACElI,MAAO6M,EACPzF,MAAM,GAAD,OAAKyF,EAASW,iBAAd,YAAkCtF,UAG3CnG,M,yBC3GHnL,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLuY,iBAAkB,CAChBxa,OAAQ,QACRlB,gBAAiBmD,EAAMlE,QAAQC,QAAQG,MACvCyC,OAAO,aAAD,OAAe1C,OAAY,MACjCkC,UAAW,OACXL,aAAc,MACd+D,QAAS,OACTsE,cAAe,UAEjBqS,SAAU,CACRza,OAAQ,OACRM,MAAO,OACPmD,SAAU,QACVO,SAAU,QACV4C,SAAU,GAEZ8T,gBAAiB,CACfpa,MAAO,OACPN,OAAQ,QAEV2a,eAAgB,CACd7W,QAAS,OACT5C,QAAS,OACTlB,OAAQ,QAEV4a,cAAe,CACb5a,OAAQ,QACRM,MAAO,QACPxB,gBAAiBZ,QAAa,KAC9B0C,OAAO,aAAD,OAAeqB,EAAMlE,QAAQM,KAAK,MACxC+B,UAAW,OACXL,aAAc,OAEhB8a,YAAa,CACXva,MAAO,QACP0G,cAAe,QAEjB8T,eAAgB,CACdhX,QAAS,OACT6D,WAAY,YAEdoT,eAAgB,CACdjX,QAAS,OACT6D,WAAY,SACZjE,aAAc,QAEhBsX,UAAW,CACT9Z,QAAS,QAEX+Z,iBAAkB,CAChB3c,WAAY,2BACZyB,aAAc,cACdmB,QAAS,MACTtB,aAAa,aAAD,OAAe1B,OAAY,MACvCgJ,UAAW,UAEbgU,cAAe,CACb5c,WAAY2D,EAAMlE,QAAQM,KAAK,IAC/B0B,aAAc,cACdmB,QAAS,MACTtB,aAAa,aAAD,OAAeqC,EAAMlE,QAAQM,KAAK,MAC9C6I,UAAW,UAEbiU,gBAAiB,CACf,SAAY,EACZ,MAAS,OACT,QAAW,OACX,eAAkB,gBAClB,WAAc,WACd,UAAa,iCACb,QAAW,OACX,WAAcjd,QAAa,KAC3B,aAAgB,MAChB,aAAgB,OAChB,UAAW,CACTkC,UAAW,qGAGfgb,kBAAmB,CACjBtc,gBAAiBmD,EAAMlE,QAAQC,QAAQC,KACvCc,MAAOkD,EAAMlE,QAAQsd,gBAAgBpZ,EAAMlE,QAAQC,QAAQC,OAE7Dqd,oBAAqB,CACnBja,WAAY,KAEdka,SAAU,CACRtX,YAAa,MACb1D,WAAY,QAEdib,uBAAwB,CACtBpb,UAAW,6CAEbqb,oBAAqB,CACnB,QAAW,OACX,WAAc,SACd,OAAU,OACV,aAAgB,OAChB,eAAgB,CACd/X,aAAc,IAGlBgY,iBAAkB,CAChBzX,YAAa,OACb1D,WAAY,QACZD,MAAO,GACPN,OAAQ,GACRsB,SAAU,OACVD,WAAY,OACZ/C,WAAYJ,OAAY,UC/GjByd,GAAa,SAACje,GAAD,OACxB,yBACEgF,UAAWhF,EAAMgF,WAAa,GAC9BpC,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,0BACEG,EAAE,8bACFJ,KAAI,UAAK9G,EAAMke,MAAQ,UAAY,eAK5BC,GAAY,kBACvB,yBACEvb,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,0BACEG,EAAE,yHACFJ,KAAK,cCRJ,SAASsX,GAAoBpe,GAOhC,IAAD,EACqCiN,mBAGpC+E,OAAOqM,KAAKC,kBAAOte,EAAMue,aAAcC,aAJxC,mBACMC,EADN,KACmBC,EADnB,KASKC,EAAoB,SAAC/W,GACzB5H,EAAM4e,gBAAgB,CACpB9J,cACsC,IAApClN,EAAOiX,QAAQ,gBACX,KACAjX,EAAOiX,QAAQ,gBAAkB,EACvC9J,aACqC,IAAnCnN,EAAOiX,QAAQ,eACX,KACAjX,EAAOiX,QAAQ,eAAiB,EACtC7J,mBAC2C,IAAzCpN,EAAOiX,QAAQ,qBACX,KACAjX,EAAOiX,QAAQ,qBAAuB,EAC5C5J,OAC+B,IAA7BrN,EAAOiX,QAAQ,SAAkB,KAAOjX,EAAOiX,QAAQ,SAAW,EACpE3J,UACkC,IAAhCtN,EAAOiX,QAAQ,YACX,KACAjX,EAAOiX,QAAQ,YAAc,KAIjCN,EAAetX,kBACnB6X,kBAAO9M,OAAOC,QAAQjS,EAAMue,eAAe,wDAC3C,+CAA4B,OAA5B,QACA5I,KAAI,mCAAEG,EAAF,iBAAkBA,KA2ClBiJ,EAAU,SACdC,EACAC,EACAC,GAEA,IAAMzX,EAASuX,GAAa,GADzB,EAEevX,EAAO0X,OAAOF,EAAY,GAArCG,EAFJ,oBAIH,OADA3X,EAAO0X,OAAOD,EAAU,EAAGE,GACpB3X,GAGH4X,EAAO,SACXC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAc9N,MAAMnC,KAAK6P,GACzBK,EAAY/N,MAAMnC,KAAK8P,GAF1B,EAGeG,EAAYP,OAAOK,EAAgB3J,MAAO,GAArDuJ,EAHJ,oBAMH,OADAO,EAAUR,OAAOM,EAAqB5J,MAAO,EAAGuJ,GACzC,CAACM,EAAaC,IAGjB/W,EAAUhD,KAEhB,OACE,oCACE,kBAACmD,EAAA,EAAD,CAAY/D,UAAW4D,EAAQuU,aAA/B,iNAKA,kBAAC,KAAD,CAAiByC,UAxEH,SAACnY,GAAwB,IACjCoY,EAAwBpY,EAAxBoY,OAAQC,EAAgBrY,EAAhBqY,YAEhB,GAAKA,EAIL,GAAID,EAAOE,cAAgBD,EAAYC,YACrC,GAVkB,iBAUdF,EAAOE,YAA+B,CACxC,IAAMC,EAAQjB,EAAQR,EAAcsB,EAAOhK,MAAOiK,EAAYjK,OAC9D8I,EAAkBqB,OACb,CACL,IAAMA,EAAQjB,EAAQN,EAAaoB,EAAOhK,MAAOiK,EAAYjK,OAC7D6I,EAAesB,QAGjB,GAlBkB,iBAkBdH,EAAOE,YAA+B,CAAC,IAAD,EACEV,EACxCd,EACAE,EACAoB,EACAC,GALsC,mBACjCG,EADiC,KACnBC,EADmB,KAOxCvB,EAAkBsB,GAClBvB,EAAewB,OACV,CAAC,IAAD,EACqCb,EACxCZ,EACAF,EACAsB,EACAC,GALG,mBACEG,EADF,KACgBC,EADhB,KAOLxB,EAAeuB,GACftB,EAAkBuB,MAwClB,yBAAKlb,UAAW4D,EAAQyU,gBACtB,kBAAC8C,GAAD,CACElH,SAAUjZ,EAAMiZ,SAChBmH,SA9EY,eA+EZxY,OAAQ2W,EACR8B,MAAOrgB,EAAMsgB,aACbC,QAAM,IAER,yBAAKvb,UAAW4D,EAAQ0U,WACtB,kBAAC,GAAD,OAEF,kBAACkD,GAAD,CACEvH,SAAUjZ,EAAMiZ,UAAmC,IAAvBwF,EAAY1M,OACxCqO,SAzFY,eA0FZxY,OAAQ6W,EACR4B,MAAOrgB,EAAMygB,kBAQzB,SAASN,GAAoDngB,GAMzD,IAAD,EAC2CiN,oBAAS,GADpD,mBACMyT,EADN,KACsBC,EADtB,KAGK/X,EAAUhD,KAEhB,OACE,yBAAKZ,UAAW4D,EAAQkU,kBACtB,yBAAK9X,UAAW4D,EAAQ2U,kBACtB,kBAACxU,EAAA,EAAD,CAAYhE,QAAQ,aAAa/E,EAAMqgB,QAEzC,yBACErb,UAAS,UAAK4D,EAAQoU,gBAAb,YACP0D,EAAiB9X,EAAQkV,uBAAyB,KAGpD,yBAAK9Y,UAAW4D,EAAQqU,gBACtB,6BACG2D,iBAAM,GAAG,SAAC9O,GAAD,OACR,yBAAKgE,IAAKhE,EAAG9M,UAAW4D,EAAQmV,qBAC9B,kBAAC8C,GAAA,EAAD,CAAQ7b,UAAW4D,EAAQoV,kBAA3B,UAAiDlM,EAC/C,IAFJ,YAOJ,kBAAC,KAAD,CAAWiO,YAAa/f,EAAMogB,WAC3B,SAACU,EAA6BC,GAE7B,OADAJ,EAAkBI,EAASL,gBAEzB,uCACEM,IAAKF,EAASG,UACVH,EAASI,eAFf,CAGElc,UAAW4D,EAAQmU,WAElB/c,EAAM4H,OAAO+N,KAAI,SAACwL,EAAYrP,GAC7B,OACE,yBAAKgE,IAAKqL,EAAYnc,UAAW4D,EAAQwU,gBACvC,kBAACgE,GAAD,CACEnI,SAAUjZ,EAAMiZ,SAChBpD,MAAO/D,EACP3K,GAAIga,EACJd,MAAOxL,GAAiCsM,gBAelE,SAASX,GAAiDxgB,GAOxD,IAAM4I,EAAUhD,KAChB,OACE,yBAAKZ,UAAW4D,EAAQsU,eACtB,yBAAKlY,UAAW4D,EAAQ4U,eACtB,kBAACzU,EAAA,EAAD,CAAYhE,QAAQ,aAAa/E,EAAMqgB,QAEzC,kBAAC,KAAD,CAAWN,YAAa/f,EAAMogB,SAAUiB,eAAgBrhB,EAAMiZ,WAC3D,SAAC6H,GAAD,OACC,uCACE9b,UAAW4D,EAAQqU,eACnB+D,IAAKF,EAASG,UACVH,EAASI,gBAEY,IAAxBlhB,EAAM4H,OAAOmK,OACZ,kBAAChJ,EAAA,EAAD,uIAKA,yBAAK/D,UAAW4D,EAAQmU,UACrB/c,EAAM4H,OAAO+N,KAAI,SAACwL,EAAYrP,GAAb,OAChB,yBAAKgE,IAAKqL,EAAYnc,UAAW4D,EAAQwU,gBACvC,kBAACgE,GAAD,CACEnI,SAAUjZ,EAAMiZ,SAChBpD,MAAO/D,EACP3K,GAAIga,EACJd,MAAOxL,GAAiCsM,eAa9D,SAASC,GAAgBphB,GAMvB,IAAM4I,EAAUhD,KAChB,OACE,kBAAC,KAAD,CACE0b,YAAathB,EAAMmH,GACnB0O,MAAO7V,EAAM6V,MACb7M,cAAA,UAAgBhJ,EAAMmH,GAAtB,cACAoa,eAAgBvhB,EAAMiZ,WAErB,SAACuI,EAAsCT,GAAvC,OACC,uCACE/b,UAAS,UAAK4D,EAAQ6U,gBAAb,YACPsD,EAASU,WAAa7Y,EAAQ8U,kBAAoB,KAEhD8D,EAAkBE,eAClBF,EAAkBG,gBALxB,CAMEX,IAAKQ,EAAkBP,WAEvB,kBAAClY,EAAA,EAAD,CAAY/D,UAAW4D,EAAQgV,qBAC5B5d,EAAMqgB,OAET,kBAAC,GAAD,CACErb,UAAW4D,EAAQiV,SACnBK,MAAO6C,EAASU,iBCzSrB,IAAM7b,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLqd,sBAAuB,CACrB5b,aAAc,OACdI,QAAS,QAEXyb,uBAAwB,CACtB7b,aAAc,OACdI,QAAS,QAEX0b,oBAAqB,CACnB9b,aAAc,OACdI,QAAS,QAEX2b,SAAU,CACRnf,MAAO,OACPN,OAAQ,OACRO,WAAY,YCjBLmf,GAAmB,SAAChiB,GAAD,OAC9B,yBACEgF,UAAWhF,EAAMgF,UACjBpC,MAAQ5C,EAAM4C,MAAQ5C,EAAM4C,MAAQ,KACpCN,OAAStC,EAAM4C,MAAQ5C,EAAM4C,MAAQ,KACrCiE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,4BAAQkb,GAAG,KAAKC,GAAG,KAAKC,EAAE,KAAKrb,KAAK,YACpC,0BAAMI,EAAE,mxDAAmxDJ,KAAK,cCVvxDsb,GAAiB,SAACpiB,GAAD,OAC5B,yBAAK4C,MAAO5C,EAAM4C,MAAQ5C,EAAM4C,MAAQ,KAAON,OAAQtC,EAAM4C,MAAQ5C,EAAM4C,MAAQ,KAAMiE,QAAQ,YAAYC,KAAK,OAAOC,MAAM,8BAC7H,4BAAQkb,GAAG,KAAKC,GAAG,KAAKC,EAAE,KAAKrb,KAAK,YACpC,0BAAMI,EAAE,mxDAAmxDJ,KAAK,cCQvxDub,GAAiB,SAACriB,GAAkB,IAAD,EACtBiN,mBAAsB,kBAAC,GAAD,CAAkBrK,MAAO5C,EAAM4C,SAD/B,mBACvC0f,EADuC,KACjCC,EADiC,KAI9C,OACE,yBAAKvd,UAAWhF,EAAMgF,UAAWwd,aAHhB,kBAAMD,EAAQ,kBAAC,GAAD,CAAgB3f,MAAO5C,EAAM4C,UAGD6f,aAF3C,kBAAMF,EAAQ,kBAAC,GAAD,CAAkB3f,MAAO5C,EAAM4C,WAG3D,kBAACoW,GAAA,EAAD,CACE/T,eAAa,EACbgU,SAAUjZ,EAAMiZ,SAChB7T,MAAO,CAAE5B,QAAS,GAClBiC,UAAWC,IACXC,GAAI3F,EAAM2F,GACVmS,OAAO,UAENwK,KCfII,GAAmB,SAAC1iB,GAC/B,IAAM4I,EAAUhD,KAChB,OACE,yBACEZ,UACEhF,EAAM2iB,WACF/Z,EAAQkZ,oBACR9hB,EAAM4iB,YACNha,EAAQiZ,uBACRjZ,EAAQgZ,uBAGd,kBAAC7Y,EAAA,EAAD,CAAYhE,QAAQ,MAAM/E,EAAM6iB,cAC7B7iB,EAAM8iB,UAAY,kBAAC,GAAD,CACnB9d,UAAW4D,EAAQmZ,SACnBpc,GAAI3F,EAAM8iB,aCzBLld,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLwe,aAAc,CACZ3c,QAAS,OACTsE,cAAe,UAEjBsY,iBAAkB,CAChBhd,aAAc,YCGb,SAASid,GAAYjjB,GAI1B,IAAM4I,EAAUhD,KADf,EAE6BqH,mBACZ,OAAhBjN,EAAMgP,MAAiB,GAAKhP,EAAMgP,QAAUmF,GAAI+O,OAHjD,mBAEMC,EAFN,KAEeC,EAFf,KAKD,OACE,yBAAKpe,UAAW4D,EAAQma,cACtB,kBAACxM,GAAA,EAAD,CAAa9Q,UAAU,WAAWT,UAAW4D,EAAQoa,kBACnD,kBAACxM,GAAA,EAAD,CACEC,aAAW,WACXC,KAAK,WACL1H,MAAOmU,EACPxM,SAAU,SACRC,EACA5H,GAEA,IAAMqU,EAA2B,SAAVrU,EACvBhP,EAAM6W,SAASwM,EAAiB,KAAOlP,GAAI+O,OAC3CE,EAAWC,KAGb,kBAACrN,GAAA,EAAD,CACEhR,UAAU,SACVgE,cAAY,SACZgG,OAAO,EACPkH,QAAS,kBAACC,GAAA,EAAD,MACTC,MAAM,iBAER,kBAACJ,GAAA,EAAD,CACEhR,UAAU,UACVgE,cAAY,UACZgG,OAAO,EACPkH,QAAS,kBAACC,GAAA,EAAD,MACTC,MAAM,qBAIX+M,GACC,kBAAC5M,GAAA,EAAD,CAAa9Q,UAAU,YACrB,kBAAC,GAAD,CACEod,WAAW,oDACXC,SAAS,YACTF,aAAW,IAEb,kBAACpM,GAAA,EAAD,CACEC,aAAW,cACXC,KAAK,cACL1H,MAAOhP,EAAMgP,OAAS,EACtB2H,SAAU,SACRC,EACA5H,GAEAhP,EAAM6W,SAAU7H,KAGlB,kBAACgH,GAAA,EAAD,CACEhR,UAAU,QACVgE,cAAY,QACZgG,MAAOmF,GAAImP,OACXpN,QAAS,kBAACC,GAAA,EAAD,MACTC,MAAOE,qBAAUnC,GAAImP,UAEvB,kBAACtN,GAAA,EAAD,CACEhR,UAAU,QACVgE,cAAY,QACZgG,MAAOmF,GAAIoP,OACXrN,QAAS,kBAACC,GAAA,EAAD,MACTC,MAAK,UAAKE,qBAAUnC,GAAIoP,QAAnB,OAEP,kBAACvN,GAAA,EAAD,CACEhR,UAAU,QACVgE,cAAY,QACZgG,MAAOmF,GAAIqP,eACXtN,QAAS,kBAACC,GAAA,EAAD,MACTC,MAAO,0BCvFd,IC4BKqN,GA6FAC,GDzHC9d,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLof,OAAQ,CACNvd,QAAS,OACTyD,eAAgB,gBAChBI,WAAY,WACZtH,UAAW,OACXqD,aAAc,QAEhB4d,WAAY,CACV1gB,OAAO,aAAD,OAAeqB,EAAMlE,QAAQM,KAAK,MACxC4F,YAAa,QAEfsd,eAAgB,CACdxiB,MAAOkD,EAAMlE,QAAQC,QAAQC,KAC7B8E,SAAU,WACVC,IAAK,MACLC,KAAM,MACN5C,WAAY,GACZE,YAAa,IAEfihB,UAAW,CAAExa,cAAe,OAAQJ,SAAU,OEpBrCtD,GAAYC,aAAW,SAACtB,GAAD,MAAmB,CACrDwf,qBAAqB,enCFoB,CACzC7d,YAAa,OACbC,aAAc,QmCAM,CAElBJ,SAAU,QACVO,SAAU,SACV1D,MAAO,OACP2D,YAAa,OACb1D,WAAY,aCPHmhB,GAAc,SACzBhkB,GAEA,IAAM4I,EAAUhD,KAChB,OACE,yBACER,MAAOpF,EAAMY,WAAa,CAAEA,WAAYZ,EAAMY,YAAe,GAC7DoE,UAAW4D,EAAQmb,sBAElB/jB,EAAMC,W,mDCPA2F,GAAYC,aAAW,SAACtB,GAAD,YAAmB,CACrD0f,OAAQ,CACNC,UAJwB,OAKxB9iB,gBAAiBmD,EAAMlE,QAAQM,KAAK,KACpCwjB,OAAQ,EACR9e,SAAU,WACVzC,MAAO,QAETwhB,cAAc,erCX2B,CACzCle,YAAa,OACbC,aAAc,QqCSD,CAEX+d,UAZwB,OAaxB7a,WAAY,MACZC,cAAe,MACfvD,SAAU,QACVO,SAAU,SACVC,YAAa,OACb1D,WAAY,OACZxB,MAAOkD,EAAMlE,QAAQsd,gBAAgBpZ,EAAMlE,QAAQM,KAAK,QAE1D0jB,kBAAmB,CACjBje,QAAS,OACTxD,MAAO,OACPqH,WAAY,UAEdqa,WAAY,CACV1gB,SAAU,OACVwC,QAAS,QAEXme,gBAAc,oBACXhgB,EAAMigB,YAAYC,KAAK,MAAQ,CAC9Bte,aAAc,OACdD,YAAa,SAHH,eAKX3B,EAAMigB,YAAYC,KAAK,MAAQ,CAC9Bte,aAAc,OACdD,YAAa,SAPH,eASX3B,EAAMigB,YAAYE,GAAG,MAAQ,CAC5Bve,aAAc,OACdD,YAAa,SAXH,yBAaH,QAbG,GAedye,WAAY,CACVze,YAAa,MACbC,aAAc,OAEhBye,eAAgB,CACdhhB,SAAU,OACVvC,MAAOkD,EAAMlE,QAAQsd,gBAAgBpZ,EAAMlE,QAAQM,KAAK,MACxDmS,eAAgB,YAChBxJ,cAAe,OAEjBub,UAAW,CACTze,QAAS,gBAEX2b,SAAU,CACR5b,aAAc,MACd6M,SAAU,UACVpQ,MAAO,OACPN,OAAQ,YC7DCsD,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLugB,oBAAoB,etCJmB,CACzC5e,YAAa,OACbC,aAAc,QsCEO,CAEjB0D,eAAgB,gBAChBI,WAAY,SACZ3H,OAAQ,OACRyD,SAAU,QACVO,SAAU,SACVC,YAAa,OACb1D,WAAY,OACZxB,MAAOkD,EAAMlE,QAAQsd,gBAAgBpZ,EAAMlE,QAAQM,KAAK,QAE1DokB,aAAc,CACZb,UAAW,OACX7e,SAAU,WACVjE,gBAAiBmD,EAAMlE,QAAQM,KAAK,IACpCwjB,ODlBsB,OCmBtBvhB,MAAO,OACPoiB,UAAU,aAAD,OAAezgB,EAAMlE,QAAQM,KAAK,W,WCpBpCskB,GAAgB3gB,YAAW,CACtC9C,KAAK,evCFoC,CACzC0E,YAAa,OACbC,aAAc,UuCDa7B,CAI1B4gB,MCEUC,GAAmB,SAACnlB,GAC/B,IAAM4I,EAAUhD,KAChB,OACE,oCACE,kBAACqf,GAAD,CAAejgB,UAAW4D,EAAQkc,sBAClC,4BAAQ9f,UAAW4D,EAAQmc,cACzB,kBAACE,GAAD,CAAejgB,UAAW4D,EAAQkc,qBAChC,6BAAM9kB,EAAMolB,KACZ,6BAAMplB,EAAMqlB,S,WCdTzf,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL+gB,qBAAsB,CACpB1iB,MAAO,OACPN,OAAQ,OACR8D,QAAS,cACTyD,eAAgB,SAChBI,WAAY,SACZjE,aAAc,QAEhBuf,eAAgB,CACd5hB,WAAY,IACZC,SAAU,OACVvC,MAAOb,QAAa,KACpBgJ,UAAW,QACX5G,MAAO,QAET4iB,eAAgB,CACd5iB,MAAO,QAET6iB,WAAY,CACVlf,YAAa,OAEfmf,YAAa,CACX7iB,WAAY,WClBL8iB,GAAc,SAAC3lB,GAC1B,IAAM4I,EAAUhD,KACVggB,EAAgBjL,KAAKC,MACxB5a,EAAM6lB,YAAc7lB,EAAM8lB,WAAc,KAE3C,OACE,yBAAK9gB,UAAW4D,EAAQ0c,sBACtB,kBAACvc,EAAA,EAAD,CAAY/D,UAAS,UAAK4D,EAAQ2c,eAAb,YAA+B3c,EAAQ6c,aACzDzlB,EAAM6lB,YADT,IACuB7lB,EAAM8lB,YAE7B,kBAACC,GAAA,EAAD,CACE/gB,UAAW4D,EAAQ4c,eACnBzgB,QAAQ,cACRiK,MAAO4W,IAET,kBAAC7c,EAAA,EAAD,CACE/D,UAAS,UAAK4D,EAAQ2c,eAAb,YAA+B3c,EAAQ8c,cADlD,UAGME,EAHN,Q,uDCAOI,GAAqC,SAAChmB,GACjD,OACE,kBAACimB,GAAA,EAAD,CACEC,KAAMlmB,EAAMkmB,KACZC,QAASnmB,EAAMmmB,QACfxJ,kBAAgB,qBAChByJ,mBAAiB,2BACjB9f,SAAS,MAET,kBAAC+f,GAAA,EAAD,CAAalf,GAAG,sBAAsBnH,EAAMsmB,YAC5C,kBAACC,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,CAAmBrf,GAAG,4BACnBnH,EAAMymB,eAGX,kBAACC,GAAA,EAAD,KACE,kBAAC,EAAD,CACExN,QAASlZ,EAAMmmB,QACfnd,cAAY,sBACZ3H,MAAM,WAHR,SAYKslB,GAAmB,SAAC3mB,GAC/B,OACE,kBAACimB,GAAA,EAAD,CACEC,KAAMlmB,EAAMkmB,KACZC,QAASnmB,EAAMmmB,QACfxJ,kBAAgB,qBAChByJ,mBAAiB,4BAEjB,kBAACC,GAAA,EAAD,CAAalf,GAAG,sBAAsBnH,EAAMsmB,YAC5C,kBAACC,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,CAAmBrf,GAAG,4BACnBnH,EAAMymB,eAGX,kBAACC,GAAA,EAAD,KACE,kBAAC,EAAD,CACExN,QAASlZ,EAAMmmB,QACfnd,cAAY,sBACZ3H,MAAM,WAHR,UAOA,kBAAC,EAAD,CACE6X,QAASlZ,EAAM4mB,QACf5d,cAAY,uBACZ3H,MAAM,WAELrB,EAAM6mB,oBCrDJC,GAAkB,SAAC9mB,GAA+C,IAAD,EAE1BiN,oBAAS,GAFiB,mBAErE8Z,EAFqE,KAElDC,EAFkD,KAGtEpe,EAAUhD,KAEVqhB,EAAkBjnB,EAAM6lB,YAAc,EAEtCqB,EAAejc,IAAMkc,SAASC,QAAQpnB,EAAMC,UAChDD,EAAM6lB,aAEFwB,EAAoBH,EAAalnB,MAAMsnB,SAEvCxB,EAAa9lB,EAAMC,SAAS8R,OAE5B3E,EAASC,cAMTka,EACJ,oCACyB,IAAtBvnB,EAAM6lB,aACL,kBAAC,EAAD,CACE9gB,QAAQ,WACR1D,MAAM,YACN2H,cAAY,cACZhE,UAAW4D,EAAQgb,WACnB1K,QAASlZ,EAAMwnB,cACfvO,SAAUjZ,EAAMwQ,SAEhB,kBAAC,KAAD,CAAiBpL,MAAO,CAAEvC,WAAY,UARxC,QAaF,kBAAC,GAAD,CACEqjB,KAAMa,EACNZ,QAAS,kBAAMa,GAAqB,IACpCJ,QAvBe,WACnBxZ,EAAQ0B,KAAK,MAuBTwX,WAAW,eACXG,aAAa,yGACbI,gBAAgB,aAGlB,kBAAC,EAAD,CACE9hB,QAAQ,WACR1D,MAAM,YACN2D,UAAW4D,EAAQgb,WACnB1K,QAAS,kBAAI8N,GAAqB,IAClC/N,SAAUjZ,EAAMwQ,SALlB,WAYEiX,EACJ,oCACGznB,EAAM6lB,cAAgBC,EAAa,EAClC,kBAAC,EAAD,CACE9c,cAAY,gBACZiQ,UAAWoO,GAAqBrnB,EAAMwQ,QACtC0I,QAASlZ,EAAM0nB,eAHjB,gBAMG1nB,EAAMwQ,SACL,kBAACtL,EAAA,EAAD,CAAkBC,KAAM,GAAIH,UAAW4D,EAAQib,kBAInD,kBAAC,EAAD,CACE7a,cAAY,cACZiQ,UAAWoO,EACXnO,QAASlZ,EAAM0nB,eAHjB,OAME,kBAAC,KAAD,CAAkBtiB,MAAO,CAAEmB,YAAa,YAMhD,OACE,oCACE,kBAAC,GAAD,KACE,yBAAKvB,UAAW4D,EAAQ+a,QACtB,kBAAC5a,EAAA,EAAD,CAAYhE,QAAQ,MAApB,kCACA,kBAAC,GAAD,OAEF,kBAAC,GAAD,CAAa8gB,YAAaoB,EAAiBnB,WAAYA,IACvD,yBACE9gB,UAAW4D,EAAQkb,UACnB9a,cAAA,eAAqBhJ,EAAM6lB,cAE1BqB,IAGL,kBAAC,GAAD,CAAkB9B,IAAKmC,EAAYlC,IAAKoC,MCrHjCE,GAAc,SACzB3nB,GAKI,IAAD,EACmCiN,mBAAiB,GADpD,mBACI4Y,EADJ,KACiB+B,EADjB,KAEG9B,EAAa7a,IAAMkc,SAASU,MAAM7nB,EAAMC,UAI9C,OACE,kBAAC,GAAD,CACE4lB,YAAaA,EACb2B,cANW,kBAAMI,EAAe/B,EAAc,IAO9C6B,cAAe7B,IAAgBC,EAAa,EAAI9lB,EAAM8nB,SAN3C,kBAAMF,EAAe/B,EAAc,IAO9CkC,WAAY/nB,EAAM+nB,WAClBvX,QAAmC,eAA1BxQ,EAAMgoB,iBAEdhoB,EAAMC,WAOAgoB,GAAa,SAACjoB,GAAD,OAA4B,oCAAGA,EAAMC,Y,SXJnDwjB,K,4BAAAA,E,sBAAAA,E,2BAAAA,Q,cA6FAC,O,8BAAAA,I,8BAAAA,I,0BAAAA,I,0BAAAA,I,qBAAAA,I,qBAAAA,I,6BAAAA,I,+BAAAA,Q,KAeED,GAAayE,UACVzE,GAAa0E,aACZ1E,GAAa0E,aACT1E,GAAa0E,aACzB1E,GAAa2E,YACR3E,GAAa2E,YACf3E,GAAa0E,aACf1E,GAAa0E,aACV1E,GAAa0E,aACJ1E,GAAa0E,aAClB1E,GAAa0E,aACnB1E,GAAa0E,aACb1E,GAAa0E,aACZ1E,GAAa0E,aAKhB1E,GAAayE,UACLzE,GAAa0E,aACP1E,GAAa0E,aACf1E,GAAa0E,aACnB1E,GAAa0E,aAIP1E,GAAa0E,aACjB1E,GAAa0E,aACX1E,GAAa0E,aACxB1E,GAAa0E,aACH1E,GAAa0E,aAIrB1E,GAAa0E,aACF1E,GAAa0E,aACtB1E,GAAa0E,aAMf1E,GAAa0E,aACZ1E,GAAa0E,aACb1E,GAAa0E,aACL1E,GAAa0E,aAId1E,GAAa0E,aACT1E,GAAa0E,aACvB1E,GAAa0E,aACP1E,GAAa0E,aACrB1E,GAAa0E,aACZ1E,GAAa0E,aA8BT,IAAIE,KAQJ,IAAIA,KAhGb,IYtHKC,GZmOCC,GAAiD,CAC5D7R,KAAM,GACN8R,aAAc,GACdrL,YAAa,GACbsL,MAAO,KACPC,YAAY,EACXC,KAAK,EACNC,sBAAuB,CACrBC,YAAapF,GAAa0E,aAC1BW,aAAcrF,GAAa0E,aAC3BY,iBAAkBtF,GAAa0E,aAC/Ba,KAAMvF,GAAa0E,aACnBc,UAAWxF,GAAa0E,aACxBe,SAAUzF,GAAa0E,aACvBgB,QAAS1F,GAAa0E,aACtBiB,MAAO3F,GAAa0E,aACpBkB,SAAU5F,GAAa0E,aACvBmB,kBAAmB7F,GAAa0E,aAChCoB,aAAc9F,GAAa0E,aAC3BqB,OAAQ/F,GAAa0E,aACrBsB,OAAQhG,GAAa0E,aACrBuB,QAASjG,GAAa0E,cAExBwB,gBAAiBjG,GAAsBkG,WACvCC,iBAAkB,CAChBC,KAAMrG,GAAa0E,aACnB4B,aAActG,GAAa0E,aAC3B6B,mBAAoBvG,GAAa0E,aACjC8B,iBAAkBxG,GAAa0E,aAC/B+B,WAAYzG,GAAa0E,cAE3BgC,mBAAoB,CAClBC,iBAAkB3G,GAAa0E,aAC/BkC,aAAc5G,GAAa0E,aAC3BmC,eAAgB7G,GAAa0E,aAC7BoC,IAAK9G,GAAa0E,aAClBqC,cAAe/G,GAAa0E,cAE9BsC,mBAAoB,CAClBC,MAAOjH,GAAa0E,aACpBwC,iBAAkBlH,GAAa0E,aAC/ByC,QAASnH,GAAa0E,cAExB0C,wBAAyBnH,GAAsBoH,UAC/CC,qBAAsBrH,GAAsBoH,UAC5CE,aAAc,CACZC,MAAOxH,GAAa0E,aACpB+C,OAAQzH,GAAa0E,aACrBgD,OAAQ1H,GAAa0E,aACrBiD,eAAgB3H,GAAa0E,cAE/BkD,qBAAsB,CACpBC,cAAe7H,GAAa0E,aAC5BoD,kBAAmB9H,GAAa0E,aAChCqD,QAAS/H,GAAa0E,aACtBsD,cAAehI,GAAa0E,aAC5BxQ,MAAO8L,GAAa0E,aACpBuD,OAAQjI,GAAa0E,cAEvBwD,qBAAsBjI,GAAsBkI,OAC5CC,sBAAuB,CACrB/W,aAAc,EACdC,YAAa,EACbC,kBAAmB,EACnBC,MAAO,EACPC,SAAU,GAEZ4W,oBAAqB,CACnBC,cAAe,EACfC,WAAY,EACZC,aAAc,EACdC,UAAW,EACXC,WAAY,EACZC,QAAS,EACTC,cAAe,EACfC,WAAY,GAEdC,aAAc,Ia5TH3mB,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLioB,8BAA+B,CAC7BpmB,QAAS,OACTsE,cAAe,cACf/H,UAAW,QAEb8pB,qBAAsB,CACpBrmB,QAAS,OACTyD,eAAgB,gBAChBI,WAAY,YAEd0Z,OAAQ,CACNhhB,UAAW,OACXqD,aAAc,QAEhB0mB,mBAAoB,CAClB1mB,aAAc,QAEhB2mB,gBAAiB,CACf3mB,aAAc,QAEhB4mB,iBAAkB,CAChBhqB,MAAO,QACPC,WAAY,OACZ0D,YAAa,OACblE,aAAc,MACdjB,gBAAiBZ,OAAY,IAC7BwF,aAAc,QACdxC,QAAS,OACTgG,UAAW,UAEbqjB,wBAAyB,CACvBjqB,MAAO,QACPC,WAAY,OACZ0D,YAAa,OACbP,aAAc,OACd3D,aAAc,MACdjB,gBAAiBZ,SAAc,IAC/BgD,QAAS,OACTgG,UAAW,UAEbsjB,aAAc,CAAEnpB,WAAY,KAC5BopB,wBAAyB,CACvBnqB,MAAO,OACPC,WAAY,OACZ0D,YAAa,OACblE,aAAc,MACdjB,gBAAiBmD,EAAMlE,QAAQ2sB,OAAO9O,MACtChb,OAAO,aAAD,OAAeqB,EAAMlE,QAAQM,KAAK,MACxCqF,aAAc,OACdrD,UAAW,OACXa,QAAS,OACTgG,UAAW,UAEbyjB,cAAe,CACbjnB,aAAc,QAEhBknB,iBAAkB,CAChBlnB,aAAc,MACd3E,MAAOb,QAAa,MAEtB2sB,KAAM,CACJ,YAAa,CACX9rB,MAAOkD,EAAMlE,QAAQC,QAAQC,OAGjC6sB,UAAW,CACTxa,WAAY,WACZ5M,aAAc,QAEhBqnB,UAAW,CACT9mB,YAAa,QAEf+mB,wBAAyB,CACvBlnB,QAAS,OACTmnB,SAAU,UAEZC,kBAAmB,CACjBxnB,aAAc,QAEhBynB,mBAAoB,CAClBznB,aAAc,QAEhB0nB,qBAAqB,aACnBxrB,aAAa,aAAD,OAAe1B,OAAY,KACvCI,WAAYJ,QAAa,K/CxFY,CACzC0F,YAAa,OACbC,aAAc,Q+CoFQ,CAIlBJ,SAAU,QACVO,SAAU,SACV1D,MAAO,OACP2D,YAAa,OACb1D,WAAY,OACZyG,cAAe,SAEjBqkB,wBAAwB,e/CjGe,CACzCznB,YAAa,OACbC,aAAc,Q+C+FW,CAErBJ,SAAU,QACVO,SAAU,SACV1D,MAAO,OACP2D,YAAa,OACb1D,WAAY,OACZwG,WAAY,SAEdukB,mBAAoB,CAClB5nB,aAAc,OACdpD,MAAO,SAETirB,gCAAiC,CAC/BjrB,MAAO,QACP0G,cAAe,QAEjBwkB,kCAAmC,CACjCxrB,OAAQ,SAEVyrB,UAAW,CACT1sB,MAAOkD,EAAMlE,QAAQ2tB,MAAMztB,KAC3B8I,WAAY,MACZC,cAAe,OAEjB2kB,uBAAwB,CACtB5sB,MAAOkD,EAAMlE,QAAQ2sB,OAAO9O,MAC5BpL,eAAgB,YC3HTlN,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL2pB,mBAAoB,CAClB9nB,QAAS,OAET9D,OAAQ,OACR1B,WAAYJ,QAAa,KACzB2C,UAAW,aACXT,UAAW,uCACXQ,OAAO,aAAD,OAAeqB,EAAMlE,QAAQM,KAAK,MACxC0B,aAAc,OAEhB8rB,kBAAmB,CACjB/nB,QAAS,OAET9D,OAAQ,OACR1B,WAAY2D,EAAMlE,QAAQ2sB,OAAO9O,MACjC/a,UAAW,aACXT,UAAW,OACXL,aAAc,OAEhB+rB,kBAAmB,CACjBlrB,OAAO,aAAD,OAAeqB,EAAMlE,QAAQM,KAAK,OAE1C0tB,oBAAqB,CACnBC,YAAY,aAAD,OAAe/pB,EAAMlE,QAAQM,KAAK,OAE/C4tB,wBAAyB,CACvBC,KAAM,OACN5tB,WAAY2D,EAAMlE,QAAQ2sB,OAAO9O,MACjCtb,MAAO,QACPN,OAAQ,OACR+C,SAAU,YAEZopB,uBAAwB,CACtBD,KAAM,OACN5tB,WAAY2D,EAAMlE,QAAQ2sB,OAAO9O,MACjCtb,MAAO,QACPN,OAAQ,OACR+C,SAAU,YAEZojB,MAAO,CACLniB,SAAU,OACVooB,UAAW,OACXrpB,SAAU,WACVC,IAAK,EACL6e,OAAQ,EACR5e,KAAM,EACNsF,MAAO,EACP0I,OAAQ,QAEVob,aAAc,CACZzoB,YAAa,OACbC,aAAc,OACdkD,WAAY,OACZC,cAAe,QAEjBslB,iBAAkB,CAChBhsB,MAAO,OACPN,OAAQ,OACR6D,aAAc,QACdtD,WAAY,OACZF,UAAW,OACXksB,UAAW,cAEbC,aAAc,CACZ9oB,aAAc,OAEhB+oB,YAAa,CACX/oB,aAAc,QAEhBgpB,mBAAoB,CAClBhpB,aAAc,OACdgN,SAAU,UAEZic,cAAe,CACb3sB,OAAQ,OACR0D,aAAc,Y,qBC3EdkpB,GAAU,CACdC,YAAY,EACZluB,UAAW,CACTyC,GAAI,CACF+B,UAAWsD,IACX/I,MAAO,CACLovB,cAAc,EACdrqB,QAAS,OAGblB,GAAI,CAAE4B,UAAWsD,IAAY/I,MAAO,CAAEovB,cAAc,EAAMrqB,QAAS,OACnEjB,GAAI,CAAE2B,UAAWsD,IAAY/I,MAAO,CAAEovB,cAAc,EAAMrqB,QAAS,OACnEhB,GAAI,CACF0B,UAAWsD,IACX/I,MAAO,CAAEovB,cAAc,EAAMrqB,QAAS,KAAMsqB,WAAW,IAEzDC,GAAI,CACF7pB,UAAWsD,IACX/I,MAAO,CAAEovB,cAAc,EAAMrqB,QAAS,YAAasqB,WAAW,IAEhEE,GAAI,CACF9pB,UAAWsD,IACX/I,MAAO,CAAEovB,cAAc,EAAMrqB,QAAS,YAAasqB,WAAW,IAEhEG,EAAG,CAAE/pB,UAAWsD,IAAY/I,MAAO,CAAEqvB,WAAW,IAChD7iB,EAAG,CAAE/G,UAAWC,MAChB+pB,GAAI,CACFhqB,UAAW,SAACzF,GAAD,OACT,wBAAIoF,MAAO,CAAEc,YAAa,QACvB+E,IAAMkc,SAASxR,IAAI3V,EAAMC,UAAU,SAACyvB,GACnC,OACE,kBAAC3mB,EAAA,EAAD,CAAYtD,UAAU,OAAOL,MAAO,CAAEgB,QAAS,SAA/C,gBACmBspB,SAO7BC,GAAI,CACFlqB,UAAW,SAACzF,GAAD,OACT,wBAAIoF,MAAO,CAAEgB,QAAS,OAAQF,YAAa,SACxC+E,IAAMkc,SAASxR,IAAI3V,EAAMC,UAAU,SAACyvB,EAAO7Z,GAC1C,OACE,4BACE,kBAAC9M,EAAA,EAAD,CACE3D,MAAO,CAAEC,SAAU,WAAYe,QAAS,gBACxCX,UAAU,QAETiqB,UAQfE,GAAI,CACFnqB,UAAWsD,KAEb8mB,OAAQ,CACN7vB,MAAO,CAAEoF,MAAO,CAAEzB,WAAY,SAKrB,SAASmsB,GAAc9vB,GACpC,OAAO,kBAAC,KAAD,eAAUkvB,QAASA,IAAalvB,K,SHxD7BsoB,K,qBAAAA,E,sBAAAA,Q,KAYL,IAAMyH,GAAqB,SAAC/vB,GACjC,IACM4I,EAAUhD,KACVunB,EAAOntB,EAAMgwB,aAAaxH,aAEhC,OACE,kBAAC9e,EAAA,EAAD,CACE1E,UAAS,UACPhF,EAAMiwB,YAAc3H,GAAU4H,SAC1BtnB,EAAQslB,mBACRluB,EAAMmwB,WAAN,UACKvnB,EAAQulB,mBADb,UAEKvlB,EAAQulB,kBAFb,YAEkCvlB,EAAQwlB,qBAGhD,yBACEppB,UAAS,UACPhF,EAAMiwB,YAAc3H,GAAU4H,SAC1BtnB,EAAQ2lB,wBACRvuB,EAAMmwB,WAAN,UACKvnB,EAAQ6lB,wBADb,UAEK7lB,EAAQ6lB,uBAFb,YAEuC7lB,EAAQylB,uBAGrD,yBACErlB,cAAA,6BACEhJ,EAAMiwB,YAAc3H,GAAU4H,SAAW,YAAc,cAEzDlrB,UAAS,UAAK4D,EAAQ6f,MAAb,aAAuBzoB,EAAMgwB,aAAavH,OACjD7f,EAAQ+lB,cACV9lB,IACE7I,EAAMgwB,aAAavH,MAAQzoB,EAAMgwB,aAAavH,MA9BjC,kCAgCf3f,IAAK9I,EAAMgwB,aAAatZ,QAG5B,yBAAK1R,UAAW4D,EAAQgmB,kBACtB,kBAAC7lB,EAAA,EAAD,CAAYhE,QAAQ,YAAYC,UAAW4D,EAAQkmB,cAChD9uB,EAAMiwB,WAET,kBAAClnB,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQmmB,aACzC/uB,EAAMgwB,aAAatZ,MAEtB,yBAAK1R,UAAS,UAAKorB,qBAAUpwB,EAAMiwB,WAArB,kBACZ,kBAACH,GAAD,KAAgB9vB,EAAMgwB,aAAa7S,aACnC,kBAACpU,EAAA,EAAD,CACEhE,QAAQ,YACRC,UAAW4D,EAAQomB,oBAEnB,yBAAK5pB,MAAO,CAAEzC,UAAW,QAAzB,wBACoB3C,EAAMgwB,aAAaK,WACrC,6BAFF,6CAGyCrwB,EAAMgwB,aAAaM,cAKhE,uBACEC,KAAMpD,EACNrV,OAAO,SACP0Y,IAAI,sBACJprB,MAAO,CAAE0N,eAAgB,SAEzB,kBAAC,EAAD,CACE9N,UAAW4D,EAAQqmB,cACnBhW,SAAUjZ,EAAMywB,iBAChB1rB,QACE/E,EAAMiwB,YAAc3H,GAAU4H,SAAW,YAAc,YAJ3D,kB,iCIzFGQ,GAAa,SAAC1wB,GAAD,OACxB,yBACEgF,UAAWhF,EAAMgF,UACjBpC,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,4BAAQkb,GAAG,KAAKC,GAAG,KAAKC,EAAE,KAAKrb,KAAK,YACpC,0BAAMI,EAAE,oFAAoFJ,KAAK,cCVxFlB,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLosB,eAAgB,CACdjuB,UAAW,OACXQ,OAAO,aAAD,OAAeqB,EAAMlE,QAAQM,KAAK,MACxCwC,UAAW,cAEbytB,aAAc,CACZtuB,OAAQ,OACR4D,YAAa,OACbxD,UAAU,eAAD,OAAiB6B,EAAMlE,QAAQM,KAAK,OAE/C2hB,KAAM,CACJ/b,YAAa,MACb3D,MAAO,OACPN,OAAQ,QAEVuuB,eAAgB,CACd5mB,WAAY,SACZ7D,QAAS,eAEX0qB,aAAc,CACZznB,WAAY,OACZC,cAAe,MACfnD,aAAc,OACdD,YAAa,OACbE,QAAS,OACTmnB,SAAU,OAEZwD,cAAe,CACb3qB,QAAS,OACTsE,cAAe,SACfvE,aAAc,OACdvD,MAAO,OACPmD,SAAU,eAEZirB,kBAAmB,CACjBhrB,aAAc,QAEhBirB,YAAa,CACXttB,WAAY,IACZqC,aAAc,OAEhBkrB,WAAY,CACVlrB,aAAc,OAEhBmrB,WAAY,CACV/qB,QAAS,cACT6D,WAAY,WACZjE,aAAc,OAEhBorB,kBAAmB,CACjBprB,aAAc,WCpDPqrB,GAAe,SAACrxB,GAAD,OAC1B,yBACEgF,UAAWhF,EAAMgF,UACjBpC,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,4BAAQkb,GAAG,KAAKC,GAAG,KAAKC,EAAE,KAAKrb,KAAK,YACpC,0BAAMI,EAAE,yCAAyCJ,KAAK,cCR7CwqB,GAAmB,SAACjwB,GAAD,OAC9B,yBACEuB,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,0BACEG,EAAE,yPACFJ,KAAMzF,IAER,0BACE6F,EAAE,yMACFJ,KAAMzF,IAER,0BACE6F,EAAE,oWACFJ,KAAMzF,IAER,0BACE6F,EAAE,0QACFJ,KAAMzF,IAER,0BACE6F,EAAE,ocACFJ,KAAMzF,IAER,0BACE6F,EAAE,wTACFJ,KAAMzF,MA8FCkwB,GAAwD,CACnEC,KAAM,CAAEnR,MAAO,OAAQoR,SAAU,mBAAoBnP,KA1F/B,SAACjhB,GAAD,OACtB,yBACEuB,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,0BACEG,EAAE,yiBACFJ,KAAMzF,OAiFVqwB,WAAY,CACVrR,MAAO,uCACPiC,KA3C0B,SAACjhB,GAAD,OAC5B,yBACEuB,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,0BACEG,EAAE,orBACFJ,KAAMzF,IAER,0BACE6F,EAAE,qaACFJ,KAAMzF,IAER,0BACE6F,EAAE,wMACFJ,KAAMzF,IAER,0BACE6F,EAAE,qaACFJ,KAAMzF,IAER,0BACE6F,EAAE,qaACFJ,KAAMzF,IAER,0BACE6F,EAAE,qcACFJ,KAAMzF,OAeVswB,aAAc,CACZtR,MAAO,kBACPoR,SAAU,eACVnP,KAnFqB,SAACjhB,GAAD,OACvB,yBACEuB,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,0BACEG,EAAE,sLACFJ,KAAMzF,IAER,0BACE6F,EAAE,2IACFJ,KAAMzF,IAER,0BACE6F,EAAE,oWACFJ,KAAMzF,IAER,0BACE6F,EAAE,uTACFJ,KAAMzF,IAER,0BACE6F,EAAE,oWACFJ,KAAMzF,IAER,0BACE6F,EAAE,oTACFJ,KAAMzF,OAuDVuwB,mBAAoB,CAClBvR,MAAO,2BACPoR,SAAU,mBACVnP,KAAMgP,IAERO,iBAAkB,CAChBxR,MAAO,oBACPoR,SAAU,kBACVnP,KAAMgP,KAqTGQ,GAA0D,CACrEC,MAAO,CAAE1R,MAAO,kBAAmBiC,KAlTZ,SAACjhB,GAAD,OACvB,yBACEuB,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,0BACEG,EAAE,yiBACFJ,KAAMzF,OAySV2wB,iBAAkB,CAAE3R,MAAO,0BAA2BiC,KApS9B,SAACjhB,GAAD,OACxB,yBACEuB,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,0BACEG,EAAE,sMACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,kNACFJ,KAAMzF,IAER,0BACE6F,EAAE,8LACFJ,KAAMzF,IAER,0BACE6F,EAAE,8LACFJ,KAAMzF,IAER,0BACE6F,EAAE,8LACFJ,KAAMzF,IAER,0BACE6F,EAAE,8LACFJ,KAAMzF,IAER,0BACE6F,EAAE,yLACFJ,KAAMzF,IAER,0BACE6F,EAAE,8LACFJ,KAAMzF,IAER,0BACE6F,EAAE,kNACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,6KACFJ,KAAMzF,IAER,0BACE6F,EAAE,kNACFJ,KAAMzF,IAER,0BACE6F,EAAE,yLACFJ,KAAMzF,IAER,0BACE6F,EAAE,yLACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,yLACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,gLACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kMACFJ,KAAMzF,IAER,0BACE6F,EAAE,8MACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,wLACFJ,KAAMzF,IAER,0BACE6F,EAAE,qMACFJ,KAAMzF,IAER,0BACE6F,EAAE,kNACFJ,KAAMzF,IAER,0BACE6F,EAAE,+LACFJ,KAAMzF,OA2GV4wB,QAAS,CACP5R,MAAO,4CACPiC,KAxGuB,SAACjhB,GAAD,OACzB,yBACEuB,MAAM,KACNN,OAAO,KACPuE,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAEN,0BACEG,EAAE,oQACFJ,KAAMzF,IAER,0BACE6F,EAAE,oWACFJ,KAAMzF,IAER,0BACE6F,EAAE,oTACFJ,KAAMzF,IAER,0BACE6F,EAAE,otHACFJ,KAAMzF,IAER,0BACE6F,EAAE,qdACFJ,KAAMzF,IAER,0BACE6F,EAAE,gXACFJ,KAAMzF,IAER,0BACE6F,EAAE,oPACFJ,KAAMzF,IAER,0BACE6F,EAAE,2PACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,8UACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,iRACFJ,KAAMzF,IAER,0BACE6F,EAAE,uMACFJ,KAAMzF,IAER,0BACE6F,EAAE,uMACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,oQACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,oNACFJ,KAAMzF,IAER,0BACE6F,EAAE,oHACFJ,KAAMzF,IAER,0BACE6F,EAAE,uMACFJ,KAAMzF,IAER,0BACE6F,EAAE,6GACFJ,KAAMzF,QCpaC6wB,GAAS,SACpBC,GAEA,IAAMvpB,EAAUhD,KADb,EAE6BqH,mBAAkBklB,EAAYC,eAF3D,mBAEIC,EAFJ,KAEcC,EAFd,KAQH,OAJAjkB,qBAAU,WACRikB,EAAYH,EAAYC,iBACvB,CAACD,EAAYC,gBAGd,kBAACG,GAAA,EAAD,CACEF,SAAUA,EACV1b,SARa,kBAAM2b,GAAaD,IAShCrtB,UAAW4D,EAAQ+nB,eACnB3nB,cAAA,UAAgBonB,qBAAU+B,EAAYxO,QAAtC,YAEA,kBAAC6O,GAAA,EAAD,CAAuBxtB,UAAW4D,EAAQgoB,cACvCyB,EACC,kBAAC,GAAD,CAAcrtB,UAAW4D,EAAQ0Z,OAEjC,kBAAC,GAAD,CAAYtd,UAAW4D,EAAQ0Z,OAEjC,kBAACvZ,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQioB,gBACzCsB,EAAYxO,SAGjB,kBAAC8O,GAAA,EAAD,CAAuBrtB,MAAO,CAAEgB,QAAS,OAAQmnB,SAAU,WACxD4E,EAAYlyB,YAgBRyyB,GAAkB,SAAC1yB,GAC9B,IAAM4I,EAAUhD,KAEhB,SAAS+sB,EAAiBC,GACxB,OACE,yBAAK5tB,UAAW4D,EAAQooB,mBACtB,kBAACjoB,EAAA,EAAD,CAAY/D,UAAW4D,EAAQqoB,aAC5B2B,EAAgBvS,OAGnB,kBAACtX,EAAA,EAAD,CAAY/D,UAAW4D,EAAQsoB,YAC5B0B,EAAgB5kB,OAMzB,SAAS6kB,EAAwCD,GAM/C,IAAME,EAAO,SAACC,GACZ,IAAMC,EACJJ,EAAgBvc,aAAa0c,EAAU/kB,MACnCoI,EAA4B,kBAAb4c,EACjBA,EACAJ,EAAgBK,gBAAhB,UACKD,EAAS3S,MADd,YACuB2S,EAASvB,UAAY,IAC1CuB,EAAS3S,MACf,OAAO,kBAACtX,EAAA,EAAD,CAAY/D,UAAW4D,EAAQsoB,YAAa9a,IAGrD,OACE,yBAAKpR,UAAW4D,EAAQooB,mBACtB,kBAACjoB,EAAA,EAAD,CAAY/D,UAAW4D,EAAQqoB,aAC5B2B,EAAgBvS,OAElBxO,mBAAQ+gB,EAAgB5kB,MACvB4kB,EAAgB5kB,KAAK2H,KAAI,SAACud,EAAUrd,GAAX,OACvB,kBAACid,EAAD,CAAMhd,IAAG,UAAKod,EAAL,mBAAwBrd,GAAS7H,KAAMklB,OAGlD,kBAACJ,EAAD,CAAM9kB,KAAM4kB,EAAgB5kB,QAMpC,IAAMmlB,EAAkB,SAACC,GAAD,OAKtB,yBAAKpuB,UAAW4D,EAAQooB,mBACtB,kBAACjoB,EAAA,EAAD,CAAY/D,UAAW4D,EAAQqoB,aAC5BmC,EAAe/S,OAEjB+S,EAAeC,MAAM1d,KAAI,SAACud,EAAUrd,GAAX,OACxB,yBAAKC,IAAG,UAAKod,EAAL,kBAAuBrd,IAC7B,yBAAK7Q,UAAW4D,EAAQuoB,YACtB,kBAACpoB,EAAA,EAAD,CACEhE,QAAQ,YACRC,UAAW4D,EAAQwoB,mBAElB8B,EAASI,SAJZ,SAMA,kBAACvqB,EAAA,EAAD,KAAamqB,EAAStoB,UAExB,mCAMF2oB,EAAkB,SAACC,EAAoBxkB,GAC3C,OAAOhP,EAAMyzB,OAASvb,GAAKkD,SAApB,UACApM,EAAMwN,iBADN,YAC0BvC,GAAYuZ,GAAUpZ,UADhD,UAEAH,GAAYuZ,GAAU9Y,SAAS1L,GAAOwN,iBAFtC,YAGDvC,GAAYuZ,GAAUnZ,SAI9B,OACE,kBAAC,GAAD,CAAQsJ,OAAO,iBAAiByO,cAAepyB,EAAMoyB,eACnD,yBAAKhtB,MAAO,CAAEgB,QAAS,OAAQyD,eAAgB,WAAY1D,aAAc,OAAQxD,UAAW,QAC1F,kBAAC,GAAD,OAEF,yBAAKqC,UAAW4D,EAAQkoB,cACtB,yBAAK9rB,UAAW4D,EAAQmoB,eACtB,kBAAC4B,EAAD,CACEtS,MAAM,cACNrS,KAAMsI,qBAAUtW,EAAM0zB,OAAOC,eAE/B,kBAAChB,EAAD,CACEtS,MAAM,UACNrS,KAAMulB,EAAgB,SAAUvzB,EAAM0zB,OAAOE,aAE/C,kBAACf,EAAD,CACExS,MAAM,UACNrS,KAAMhO,EAAM0zB,OAAOG,QACnBxd,aAAckb,GACd0B,iBAAe,KAGnB,yBAAKjuB,UAAW4D,EAAQmoB,eACtB,kBAAC8B,EAAD,CACExS,MAAM,YACNrS,KACEhO,EAAM0zB,OAAOI,UAAU/hB,OAAS,EAC5B/R,EAAM0zB,OAAOI,UACb,cAENzd,aAAc/B,KAEhB,kBAACue,EAAD,CACExS,MAAM,YACNrS,KAAMhO,EAAM0zB,OAAOK,UACnB1d,aAAcyb,KAEhB,kBAACa,EAAD,CAAkBtS,MAAM,OAAOrS,KAAMsI,qBAAUtW,EAAM0zB,OAAOM,QAE9D,yBAAKhvB,UAAW4D,EAAQmoB,eACtB,kBAACoC,EAAD,CACE9S,MAAM,gBACNoT,KAAMzzB,EAAMyzB,KACZJ,MAAO,CACL,CACEC,SAAU,aACV1oB,QAAS2oB,EAAgB,QAASvzB,EAAM0zB,OAAOO,WAEjD,CACEX,SAAU,SACV1oB,QAAS2oB,EAAgB,SAAUvzB,EAAM0zB,OAAOQ,eAElD,CACEZ,SAAU,cACV1oB,QAASgJ,GAA0B5T,EAAM0zB,OAAOS,gBAItD,kBAAChB,EAAD,CACE9S,MAAM,gBACNoT,KAAMzzB,EAAMyzB,KACZJ,MAAO,CACL,CACEC,SAAU,iBACV1oB,QAAS2oB,EAAgB,QAASvzB,EAAM0zB,OAAOU,cAEjD,CACEd,SAAU,MACV1oB,QAAS2oB,EAAgB,QAASvzB,EAAM0zB,OAAOW,eAKvD,yBAAKrvB,UAAW4D,EAAQmoB,eACtB,kBAACoC,EAAD,CACE9S,MAAM,mBACNoT,KAAMzzB,EAAMyzB,KACZJ,MAAO,CACL,CACEC,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAAY,KAG/D,CACElB,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAAY,KAG/D,CACElB,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAAY,KAG/D,CACElB,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAAY,KAG/D,CACElB,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAAY,Y,kDCpQhEC,GAAiB,SAACC,GAAD,MAA0B,IAANA,GAErCC,GAAsB,SAACC,GAAD,gBAC9BC,oBAAS,GAAD,OAAID,EAAKE,WAAa,GAAK,EAAG,KADR,YACgBD,oBAAS,GAAD,OAAID,EAAKG,WAAa,EAAG,KADjD,YACyDH,EAAKI,gBCKpFC,GAAc,SAAC,GAAmB,IAAjBC,EAAgB,EAAhBA,KACtBC,EAAcC,eAAYC,kBAC9BC,0BAAeC,aAAgBL,EAAM,CAAEM,kBAAkB,MAErDC,EAAaC,wBAAaP,EAAYQ,qBAC5C,OAAOC,KAAQH,EAAYI,GAAW,CAAEC,cAAe,cAGnDC,GAAiBC,cAAWC,OAAO,CACvCl1B,WAAY,CACVm1B,WAAY,YACZvyB,WAAY,IACZtC,MAAOb,OAAY,MAErBkD,GAAI,CACFC,WAAY,IACZC,SAAU6wB,GAAe,IACzBpzB,MAAOb,QAAa,MAEtBqD,GAAI,CACFF,WAAY,IACZC,SAAU6wB,GAAe,IACzBpzB,MAAOb,QAAa,MAEtBsD,GAAI,CACFH,WAAY,IACZC,SAAU6wB,GAAe,IACzBpzB,MAAOb,QAAa,MAEtBuD,GAAI,CACFJ,WAAY,IACZC,SAAU6wB,GAAe,IACzBpzB,MAAOb,QAAa,MAEtB8uB,GAAI,CACF3rB,WAAY,IACZC,SAAU6wB,GAAe,IACzBpzB,MAAOb,OAAY,KACnBmC,UAAW8xB,GAAe,GAC1BzuB,aAAcyuB,GAAe,IAE/BlF,GAAI,CACF5rB,WAAY,IACZQ,cAAeswB,GAAe,GAC9B7wB,SAAU6wB,GAAe,IACzBpzB,MAAOb,OAAY,KACnB4D,cAAe,YACfzB,UAAW8xB,GAAe,GAC1BzuB,aAAcyuB,GAAe,IAE/B0B,KAAM,CACJxzB,UAAW,EACXyD,QAAS,OACTsE,cAAe,UAEjB0rB,SAAU,CACRpwB,aAAc,GAEhBqwB,WAAY,CACVxzB,WAAY,MAIHyzB,GAAY,SAACt2B,GAAD,OACvB,kBAAC,QAAD,CAAMoF,MAAK,eAAO2wB,GAAelyB,GAAtB,GAA6B7D,EAAMoF,QAAUpF,EAAMC,WAGnDs2B,GAAgB,SAAC,GAA8B,IAA5Bt2B,EAA2B,EAA3BA,SAA2B,EAAjBu2B,MACxC,OAAO,kBAAC,QAAD,CAAMpxB,MAAO2wB,GAAeI,MAAOl2B,IAE/Bw2B,GAAoB,SAAC,GAAuB,IAArBx2B,EAAoB,EAApBA,SAClC,OACE,kBAAC,QAAD,CAAMmF,MAAO2wB,GAAeK,UAC1B,kBAAC,QAAD,KACE,kBAAC,QAAD,mBAAen2B,MAKjBy2B,GAAc,SAAC,GAA8B,IAA5Bz2B,EAA2B,EAA3BA,SAA2B,EAAjBu2B,MAC/B,OAAO,kBAAC,QAAD,CAAMpxB,MAAO2wB,GAAeI,MAAOl2B,IAEtC02B,GAAkB,SAAC,GAA8B,IAA5B12B,EAA2B,EAA3BA,SAAU4V,EAAiB,EAAjBA,MACnC,OACE,kBAAC,QAAD,CAAMzQ,MAAO2wB,GAAeK,UAC1B,kBAAC,QAAD,KACGvgB,EAAQ,EADX,KACe,kBAAC,QAAD,KAAO5V,MAKtB41B,GAAY,CAChBe,OAAQ,CAENC,KAAM,SAAC52B,EAAD,GAAkC,IAAhB6V,EAAe,EAAfA,IACtB,OACE,kBAAC,QAAD,CAAMA,IAAG,eAAUA,GAAO1Q,MAAO,CAAEzB,WAAY,MAC5C1D,IAIP62B,OAAQ,SAAC72B,EAAD,GAAkC,IAAhB6V,EAAe,EAAfA,IACxB,OAAO,kBAAC,QAAD,CAAMA,IAAG,iBAAYA,GAAO1Q,MAAO,CAAEwL,UAAW,WAAa3Q,IAEtE82B,UAAW,SAAC92B,EAAD,GAAkC,IAAhB6V,EAAe,EAAfA,IAC3B,OAAO,kBAAC,QAAD,CAAMA,IAAG,oBAAeA,IAAQ7V,KAO3C+2B,OAAQ,CACN,SAAY,SAAC/2B,EAAD,GAAmC,IAAjBoe,EAAgB,EAAhBA,KAC5B,OAAOpe,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAC/B,OACE,kBAAC,QAAD,CAAMC,IAAKuI,EAAKxI,IACd,kBAAC,QAAD,CAAMzQ,MAAO2wB,GAAeh1B,YAAa2uB,QAKjD,aAAc,SAACzvB,EAAD,GAAmC,IAAjBoe,EAAgB,EAAhBA,KAC9B,OAAOpe,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAC/B,OACE,kBAAC,QAAD,CAAMzQ,MAAO2wB,GAAeryB,GAAIoS,IAAKuI,EAAKxI,IACvC6Z,OAKT,aAAc,SAACzvB,EAAD,GAAmC,IAAjBoe,EAAgB,EAAhBA,KAC9B,OAAOpe,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAC/B,OAAO,kBAAC,GAAD,CAAWC,IAAKuI,EAAKxI,IAAS6Z,OAGzC,eAAgB,SAACzvB,EAAD,GAAmC,IAAjBoe,EAAgB,EAAhBA,KAChC,OAAOpe,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAC/B,OACE,kBAAC,QAAD,CAAMzQ,MAAO2wB,GAAejyB,GAAIgS,IAAKuI,EAAKxI,IACvC6Z,OAKT,cAAe,SAACzvB,EAAD,GAAmC,IAAjBoe,EAAgB,EAAhBA,KAC/B,OAAOpe,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAC/B,OACE,kBAAC,QAAD,CAAMzQ,MAAO2wB,GAAehyB,GAAI+R,IAAKuI,EAAKxI,IACvC6Z,OAKT,cAAe,SAACzvB,EAAD,GAAmC,IAAjBoe,EAAgB,EAAhBA,KAC/B,OAAOpe,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAC/B,OACE,kBAAC,QAAD,CAAMzQ,MAAO2wB,GAAezG,GAAIxZ,IAAKuI,EAAKxI,IACvC6Z,OAKT,aAAc,SAACzvB,EAAD,GAAmC,IAAjBoe,EAAgB,EAAhBA,KAC9B,OAAOpe,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAC/B,OACE,kBAAC,QAAD,CAAMzQ,MAAO2wB,GAAexG,GAAIzZ,IAAKuI,EAAKxI,IACvC6Z,OAKT,WAAc,SAACzvB,EAAD,GAAmC,IAAjBoe,EAAgB,EAAhBA,KAC9B,OAAOpe,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAC/B,OACE,kBAAC,QAAD,CAAMzQ,MAAO2wB,GAAeM,WAAYvgB,IAAKuI,EAAKxI,IAC/C6Z,OAKT,sBAAuB,SAACzvB,EAAD,GAA0C,IAAxBu2B,EAAuB,EAAvBA,MAAOnY,EAAgB,EAAhBA,KAC9C,OACE,kBAAC,GAAD,CAAevI,IAAKuI,EAAKA,EAAKtM,OAAS,GAAIykB,MAAOA,GAC/Cv2B,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAAb,OACZ,kBAAC,GAAD,CAAmBC,IAAKuI,EAAKxI,IAAS6Z,QAK9C,oBAAqB,SAACzvB,EAAD,GAA0C,IAAxBu2B,EAAuB,EAAvBA,MAAOnY,EAAgB,EAAhBA,KAC5C,OACE,kBAAC,GAAD,CAAavI,IAAKuI,EAAK4Y,KAAK,KAAMT,MAAOA,GACtCv2B,EAAS0V,KAAI,SAAC+Z,EAAY7Z,GAAb,OACZ,kBAAC,GAAD,CAAiBC,IAAKuI,EAAKxI,GAAQA,MAAOA,GACvC6Z,SAUbwH,SAAU,CAERC,KAAM,SAACl3B,EAAeyM,EAAhB,OAA6BoJ,EAA7B,EAA6BA,IAA7B,OACJ,kBAAC,QAAD,CAAMA,IAAKA,EAAKjN,IAAK6D,EAAK4B,KACvBrO,MClLTm3B,QAAKC,SAAS,CACZC,OAAQ,YACRzuB,IAAK,sEACL0uB,MAAO,CACL,CACE1uB,IACE,sEACFlF,WAAY,KAEd,CACEkF,IACE,2FACFlF,WAAY,IACZiN,UAAW,UAEb,CACE/H,IACE,2FACFlF,WAAY,KAEd,CACEkF,IACE,2FACFlF,WAAY,IACZiN,UAAW,UAEb,CACE/H,IACE,2FACFlF,WAAY,KAEd,CACEkF,IACE,2FACFlF,WAAY,IACZiN,UAAW,UAEb,CACE/H,IACE,2FACFlF,WAAY,KAEd,CACEkF,IACE,2FACFlF,WAAY,IACZiN,UAAW,aAKjB,IAAMhI,GC1F2BotB,cAAWC,OAAO,CAC/Cl1B,WAAY,CACVm1B,WAAY,YACZvyB,WAAY,IACZtC,MAAOb,OAAY,KACnBoD,SAAU6wB,GAAe,KAE3BpU,MAAO,CACL1d,UAAW8xB,GAAe,IAC1BzuB,aAAcyuB,GAAe,KAE/BvG,mBAAoB,CAClBzpB,YAAajE,QAAa,KAC1Bg3B,YAAa/C,GAAe,IAE9BgD,UAAW,CACTrxB,QAAS,OACTsE,cAAe,MACfrI,aAAc,EACdO,MAAO6xB,GAAe,MACtBzuB,aAAcyuB,GAAe,KAE/BtG,kBAAmB,CACjB1pB,YAAajE,OAAY,KACzBg3B,YAAa/C,GAAe,IAE9BhM,MAAO,CACL7lB,MAAO6xB,GAAe,KACtBlhB,OAAQ,QAEVmkB,oBAAqB,CACnB90B,MAAO6xB,GAAe,KACtBlhB,OAAQ,OACRlK,WAAYorB,GAAe,IAC3BnrB,cAAemrB,GAAe,KAEhCkD,eAAgB,CACdr1B,OAAQ,OACRoI,cAAe,UAEjBP,KAAM,CACJvH,MAAO6xB,GAAe,MAExBmD,YAAa,CACXzxB,aAAcsuB,GAAe,KAC7BvuB,YAAauuB,GAAe,KAC5BprB,WAAYorB,GAAe,IAC3BnrB,cAAemrB,GAAe,KAEhC7F,iBAAkB,CAChBvlB,WAAYorB,GAAe,IAC3BnrB,cAAemrB,GAAe,IAC9BvuB,YAAauuB,GAAe,IAC5BtuB,aAAcsuB,GAAe,KAC7B7xB,MAAO6xB,GAAe,MAExBoD,kBAAmB,CACjBl0B,WAAY,IACZC,SAAU6wB,GAAe,IACzBxwB,WAAY,IACZ5C,MAAOb,QAAa,KACpBwF,aAAcyuB,GAAe,KAE/BxE,UAAW,CACTtsB,WAAY,IACZC,SAAU6wB,GAAe,IACzBxwB,WAAY,KACZE,cAAeswB,GAAe,GAC9BrwB,cAAe,YACf/C,MAAOb,OAAY,MAErBs3B,UAAW,CACTn1B,UAAW8xB,GAAe,KAE5BsD,GAAI,CACFP,YAAa,GACbl1B,OAAQ,EACRM,MAAO6xB,GAAe,MACtBhwB,YAAajE,OAAY,KACzBmC,UAAW8xB,GAAe,KAE5B9Q,OAAQ,CACNvd,QAAS,OACTxD,MAAO6xB,GAAe,MACtB/pB,cAAe,MACfb,eAAgB,gBAChBI,WAAY,UAEd+tB,YAAa,CACX5xB,QAAS,OACTsE,cAAe,OAEjButB,WAAY,CACVr0B,SAAU6wB,GAAe,IACzBpzB,MAAOb,QAAa,KACpB0F,YAAauuB,GAAe,KAE9ByD,mBAAoB,CAClB9xB,QAAS,OACTsE,cAAe,MACfrI,aAAc,EACdO,MAAO6xB,GAAe,MACtBzuB,aAAcyuB,GAAe,IAC7BhwB,YAAajE,OAAY,KACzBg3B,YAAa/C,GAAe,IAE9B0D,0BAA2B,CACzB9uB,WAAYorB,GAAe,IAC3BvuB,YAAauuB,GAAe,KAE9B2D,eAAgB,CACdz0B,WAAY,IACZC,SAAU6wB,GAAe,IACzBpzB,MAAOb,QAAa,KACpB8I,cAAemrB,GAAe,KAEhC4D,iBAAkB,CAChBjyB,QAAS,OACTsE,cAAe,OAEjB4tB,gBAAiB,CACfnyB,aAAcsuB,GAAe,IAC7B7xB,MAAO6xB,GAAe,MAExB8D,aAAc,CACZ50B,WAAY,IACZtC,MAAOb,QAAa,KACpB8I,cAAemrB,GAAe,IAEhC+D,WAAY,CACVlvB,cAAemrB,GAAe,KAEhCgE,eAAgB,CACdnvB,cAAemrB,GAAe,IAEhCiE,gBAAiB,CACftyB,QAAS,OACTsE,cAAe,MACfT,WAAY,WACZX,cAAemrB,GAAe,IAEhCkE,gBAAiB,CACft2B,aAAc,EACdO,MAAO6xB,GAAe,KACtBhwB,YAAajE,OAAY,KACzBg3B,YAAa/C,GAAe,GAC5BnrB,cAAemrB,GAAe,IAC9BprB,WAAYorB,GAAe,IAC3BvuB,YAAauuB,GAAe,KAC5BtuB,aAAcsuB,GAAe,KAC7BtrB,UAAW,SACXK,UAAW,UAEb8a,WAAY,CACVhb,cAAemrB,GAAe,KAEhCmE,cAAe,CACbvvB,WAAY,OACZjD,QAAS,OACTsE,cAAe,MACfT,WAAY,WACZX,cAAe,QAEjBuvB,mBAAoB,CAClBl1B,WAAY,IACZtC,MAAOb,QAAa,KACpBoD,SAAU6wB,GAAe,IACzBtuB,aAAcsuB,GAAe,GAC7BnrB,cAAemrB,GAAe,IAEhCqE,mBAAoB,CAClBn1B,WAAY,IACZtC,MAAOb,QAAa,KACpBoD,SAAU6wB,GAAe,KAE3BsE,eAAgB,CACdn2B,MAAO6xB,GAAe,KACtBpzB,MAAOb,QAAa,KACpB6I,WAAYorB,GAAe,GAC3BnrB,cAAemrB,GAAe,IAC9BruB,QAAS,OACTsE,cAAe,YDxFjBsuB,GAAgB,SAASC,GAC3B,IAEMC,EAAYD,EAAkBE,MAAM,KAAK,GAC/C,YAAgBpoB,GAAbmoB,EANkB,kCAQK,KAAvBA,EAAUE,OAAO,GAJI,0BAKGF,EANH,yBAQGA,GAGvBG,GAAwB,SAACC,GAAD,OAI5B,kBAAC,QAAD,CACEl0B,MAAK,eACAwD,GAAQ6uB,UADR,GAEA7uB,GAAQ7H,WAFR,GAGCu4B,EAAYrJ,YAAc3H,GAAU4H,SACpCtnB,GAAQslB,mBACRtlB,GAAQulB,oBAGd,kBAAC,QAAD,CAAM/oB,MAAOwD,GAAQ+uB,gBACnB,kBAAC,SAAD,CACEvyB,MACEk0B,EAAYtJ,aAAavH,MACrB7f,GAAQ6f,MACR7f,GAAQ8uB,oBAEd7uB,IACEywB,EAAYtJ,aAAavH,MACrBuQ,GAAcM,EAAYtJ,aAAavH,OApC9B,qCAyCnB,kBAAC,QAAD,CAAMrjB,MAAOwD,GAAQgmB,kBACnB,kBAAC,QAAD,CAAMxpB,MAAOwD,GAAQqnB,WAAYqJ,EAAYrJ,WAC7C,kBAAC,QAAD,CAAM7qB,MAAOwD,GAAQivB,mBAClByB,EAAYtJ,aAAatZ,MAE5B,kBAAC,QAAD,KACGue,GAAY,CAAEC,KAAMoE,EAAYtJ,aAAa7S,cAE9C,kBAAC,GAAD,KACE,kBAAC,GAAD,eACUmc,EAAYtJ,aAAaK,WAEnC,kBAAC,GAAD,oCAC+BiJ,EAAYtJ,aAAaM,aAK5D,kBAAC,QAAD,CAAMlrB,MAAOwD,GAAQkvB,WAArB,uDAOAnF,GAAmB,SAAC4G,GAIxB,OACE,kBAAC,QAAD,KACE,kBAAC,QAAD,CAAMn0B,MAAOwD,GAAQ2vB,cAAegB,EAAkBlZ,OACtD,kBAAC,QAAD,CAAMjb,MAAOwD,GAAQ4vB,YAAae,EAAkBvrB,QAKpDmlB,GAAkB,SAACC,GAAD,OAItB,kBAAC,QAAD,CAAMhuB,MAAOwD,GAAQ4vB,YACnB,kBAAC,QAAD,CAAMpzB,MAAOwD,GAAQ2vB,cAAenF,EAAe/S,OAClD+S,EAAeC,MAAM1d,KAAI,SAACud,EAAUrd,GAAX,OACxB,kBAAC,QAAD,CAAMzQ,MAAOwD,GAAQ8vB,gBAAiB5iB,IAAG,UAAKod,EAAL,kBAAuBrd,IAC9D,kBAAC,QAAD,CAAMzQ,MAAOwD,GAAQqnB,WAAYiD,EAASI,SAA1C,SACA,kBAAC,QAAD,KAAOJ,EAAStoB,eAMxB,SAASioB,GAAwCD,GAM/C,IAAME,EAAO,SAACC,GACZ,IAAMC,EACJJ,EAAgBvc,aAAa0c,EAAU/kB,MACnCoI,EACgB,kBAAb4c,EACHA,EACAJ,EAAgBK,gBAAhB,UACGD,EAAS3S,MADZ,YACqB2S,EAASvB,UAAY,IAC1CuB,EAAS3S,MACf,OAAO,kBAAC,QAAD,CAAMjb,MAAOwD,GAAQ6vB,gBAAiBriB,IAG/C,OACE,kBAAC,QAAD,KACE,kBAAC,QAAD,CAAMhR,MAAOwD,GAAQ2vB,cAAe3F,EAAgBvS,OACpD,kBAAC,QAAD,CAAMjb,MAAOwD,GAAQ4vB,YAClB3mB,mBAAQ+gB,EAAgB5kB,MACvB4kB,EAAgB5kB,KAAK2H,KAAI,SAACud,EAAUrd,GAAX,OACvB,kBAACid,EAAD,CAAMhd,IAAG,UAAKod,EAAL,mBAAwBrd,GAAS7H,KAAMklB,OAGlD,kBAACJ,EAAD,CAAM9kB,KAAM4kB,EAAgB5kB,SAOtC,IEhMYwrB,GFgMNC,GAAoB,SAACz5B,GACzB,IAAMuzB,EAAkB,SAACC,EAAoBxkB,GAC3C,OAAOhP,EAAMyzB,OAASvb,GAAKkD,SAApB,UACApM,EAAMwN,iBADN,YAC0BvC,GAAYuZ,GAAUpZ,UADhD,UAEAH,GAAYuZ,GAAU9Y,SAAS1L,GAAOwN,iBAFtC,YAGDvC,GAAYuZ,GAAUnZ,SAG9B,OACE,kBAAC,QAAD,CAAMjV,MAAOwD,GAAQsvB,oBACnB,kBAAC,QAAD,CAAM9yB,MAAOwD,GAAQuvB,2BACnB,kBAAC,QAAD,CAAM/yB,MAAOwD,GAAQwvB,gBAArB,kBACA,kBAAC,QAAD,CAAMhzB,MAAOwD,GAAQyvB,kBACnB,kBAAC,QAAD,CAAMjzB,MAAOwD,GAAQ0vB,iBACnB,kBAAC,GAAD,CACEjY,MAAM,cACNrS,KAAMsI,qBAAUtW,EAAM0zB,OAAOC,eAE/B,kBAAC,GAAD,CACEtT,MAAM,UACNrS,KAAMulB,EAAgB,SAAUvzB,EAAM0zB,OAAOE,aAE/C,kBAAC,GAAD,CACEvT,MAAM,UACNrS,KAAMhO,EAAM0zB,OAAOG,QACnBxd,aAAckb,GACd0B,iBAAe,KAGnB,kBAAC,QAAD,CAAM7tB,MAAOwD,GAAQ0vB,iBACnB,kBAAC,GAAD,CACEjY,MAAM,YACNrS,KACEhO,EAAM0zB,OAAOI,UAAU/hB,OAAS,EAC5B/R,EAAM0zB,OAAOI,UACb,cAENzd,aAAc/B,KAEhB,kBAAC,GAAD,CACE+L,MAAM,YACNrS,KAAMhO,EAAM0zB,OAAOK,UACnB1d,aAAcyb,KAEhB,kBAAC,GAAD,CACEzR,MAAO,OACPrS,KAAMsI,qBAAUtW,EAAM0zB,OAAOM,QAGjC,kBAAC,QAAD,CAAM5uB,MAAOwD,GAAQ0vB,iBACnB,kBAAC,GAAD,CACEjY,MAAM,gBACNgT,MAAO,CACL,CACEC,SAAU,aACV1oB,QAAS2oB,EAAgB,QAASvzB,EAAM0zB,OAAOO,WAEjD,CACEX,SAAU,SACV1oB,QAAS2oB,EAAgB,SAAUvzB,EAAM0zB,OAAOQ,eAElD,CACEZ,SAAU,cACV1oB,QAASgJ,GAA0B5T,EAAM0zB,OAAOS,gBAItD,kBAAC,GAAD,CACE9T,MAAM,gBACNgT,MAAO,CACL,CACEC,SAAU,MACV1oB,QAAS2oB,EAAgB,QAASvzB,EAAM0zB,OAAOW,WAEjD,CACEf,SAAU,iBACV1oB,QAAS2oB,EAAgB,QAASvzB,EAAM0zB,OAAOU,kBAKvD,kBAAC,QAAD,CAAMhvB,MAAOwD,GAAQ0vB,iBACnB,kBAAC,GAAD,CACEjY,MAAM,mBACNgT,MAAO,CACL,CACEC,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAC7C,KAGN,CACElB,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAC7C,KAGN,CACElB,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAC7C,KAGN,CACElB,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAC7C,KAGN,CACElB,SAAU,IACV1oB,QAAS0L,qBACPge,mBAAQt0B,EAAM0zB,OAAOa,mBAAmB,SAACC,GAAD,OAAa,IAANA,MAC7C,aAYhBkF,GAAY,WAChB,IAAMC,EAAUztB,OAAOkD,SAASwqB,OAChC,OACE,kBAAC,QAAD,CAAMx0B,MAAOwD,GAAQ+vB,iBACnB,kBAAC,QAAD,CAAMvzB,MAAOwD,GAAQivB,mBAArB,qCAGA,kBAAC,QAAD,CAAMzyB,MAAOwD,GAAQ0b,YAArB,oEAEE,kBAAC,QAAD,CAAMzb,IAAG,UAAK8wB,EAAL,qBAAT,iCAIF,kBAAC,QAAD,8HAoBOE,GAAkB,SAAC75B,GAC9B,IAAM85B,EACJ,kBAAC,QAAD,KAEE95B,EAAMqgB,OAASrgB,EAAM+5B,MACrB,kBAAC,QAAD,KACF,kBAAC,QAAD,CAAM30B,MAAOwD,GAAQgwB,eACf,kBAAC,QAAD,CAAMxzB,MAAOwD,GAAQiwB,oBAArB,SAGA,kBAAC,QAAD,CAAMzzB,MAAOwD,GAAQkwB,oBAClB94B,EAAMqgB,QAGb,kBAAC,QAAD,KACE,kBAAC,QAAD,CAAMjb,MAAOwD,GAAQqnB,WAArB,eAGA,kBAAC,QAAD,CAAM7qB,MAAOwD,GAAQmwB,gBAClB9D,GAAY,CAAEC,KAAMl1B,EAAM+5B,WAI9B,kBAAC,GAAD,CAAW30B,MAAOwD,GAAQyX,OAA1B,uCACDrgB,EAAMg6B,SAAW,IAAM,MAK3B,OACE,kBAAC,YAAD,KACE,kBAAC,QAAD,CACE50B,MAAK,eAAOwD,GAAQgvB,YAAf,GAA+BhvB,GAAQ7H,YAC5CoE,KAAM,CAAEvC,MAAO6xB,GAAe,QAE9B,kBAAC,QAAD,CAAMrvB,MAAOwD,GAAQ+a,QACnB,kBAAC,SAAD,CAAO9a,IAAI,0BAA0BzD,MAAOwD,GAAQuB,OACpD,kBAAC,QAAD,CAAM/E,MAAOwD,GAAQovB,aACnB,kBAAC,QAAD,CAAM5yB,MAAOwD,GAAQqvB,YAArB,gBACgBtD,GAAoB30B,EAAMi6B,YAAcj6B,EAAMk6B,aAAe,IAAI7R,OAEjF,kBAAC,QAAD,CAAMjjB,MAAOwD,GAAQqvB,YAArB,eACetD,GAAoB30B,EAAMk6B,aAAe,IAAI7R,SAIhE,kBAAC,QAAD,CAAMjjB,MAAOwD,GAAQmvB,KAClB+B,EACH,kBAAC,QAAD,KACE,kBAAC,GAAD,CACE7J,UAAW3H,GAAU4H,SACrBF,aAAchwB,EAAMm6B,YAErBn6B,EAAMg6B,UACL,kBAAC,GAAD,CACE/J,UAAW3H,GAAU8R,SACrBpK,aAAchwB,EAAMg6B,YAI1B,kBAAC,QAAD,KACE,kBAAC,GAAD,CAAmBtG,OAAQ1zB,EAAM0zB,OAAQD,KAAMzzB,EAAMyzB,QAEvD,kBAAC,QAAD,KACE,kBAAC,GAAD,UAOG4G,GAAe,SAACr6B,GAC3B,IAAiBgF,EA+BjB,OA/BiBA,EA+BFhF,EAAMgF,UA9BnBs1B,mBAAQ,WACN,OACE,kBAAC,mBAAD,CACEl1B,MAAO,CAAE0N,eAAgB,QACzB9N,UAAWA,EACXu1B,SAAU,kBAAC,GAAoBv6B,GAC/Bw6B,SAAS,0BAER,YAAmC,EAAhCC,KAAgC,EAA1BnsB,IAA2B,IAAtBkC,EAAqB,EAArBA,QACb,OADkC,EAAZwd,MAEpB,kBAAC,EAAD,CAAajpB,QAAQ,WAAWkU,SAAUzI,GAAWxQ,EAAMwQ,SAA3D,gBAEIA,GAAWxQ,EAAMwQ,UACjB,kBAACtL,EAAA,EAAD,CACEC,KAAM,GACNC,MAAO,CACLC,SAAU,WACVC,IAAK,MACLC,KAAM,MACN5C,WAAY,GACZE,YAAa,YAS5B,CAAC7C,EAAMyzB,KAAMzzB,EAAMwQ,W,UGneb5K,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLm2B,cAAe,CACbt5B,gBAAiBmD,EAAMlE,QAAQM,KAAK,KACpCuB,aAAa,aAAD,OAAeqC,EAAMlE,QAAQM,KAAK,MAC9CqkB,UAAW,OACX2V,WAAY,OACZrM,YAAa,OACbjsB,aAAc,OAEhBu4B,cAAe,CACb13B,OAAO,aAAD,OAAeqB,EAAMlE,QAAQM,KAAK,MACxC0B,aAAc,OAEhBw4B,aAAc,CACZ3E,WAAY3xB,EAAMxD,WAAWm1B,WAC7BhzB,OAAQ,OACR,uBAAwB,CACtB9B,gBAAiBmD,EAAMlE,QAAQM,KAAK,KACpCuC,OAAO,aAAD,OAAeqB,EAAMlE,QAAQM,KAAK,MACxC+B,UAAU,eAAD,OAAiB6B,EAAMlE,QAAQM,KAAK,OAE/C,wBAAyB,CACvBuC,OAAQ,SAGZ43B,cAAe,CACb50B,YAAa,OACbC,aAAc,OACduoB,UAAW,aCzBJqM,I,QAAiB,SAAC/6B,GAMxB,IAAD,EACkCiL,IAAMgC,SAC1B,OAAhBjN,EAAMgP,MACFomB,eAAYC,kBACVC,0BACEC,aAAgBv1B,EAAMgP,MAAO,CAAEwmB,kBAAkB,MAGrDJ,eAAY4F,eARd,mBACG7F,EADH,KACgB8F,EADhB,KAWJ5sB,qBAAU,WACY,KAAhBrO,EAAMgP,OAERisB,EAAe7F,eAAY4F,iBAE5B,CAAiB,KAAhBh7B,EAAMgP,QAEV,IAAMpG,EAAUhD,GAAU,IAE1B,OACE,yBAAKZ,UAAWhF,EAAMgF,WACpB,kBAAC,UAAD,CACEk2B,UAAW,IACX/F,YAAaA,EACbgG,oBAAqBF,EACrBtkB,SAAU,SAAC3H,GACT,IAAMosB,EAAwBC,aAAgBrsB,GAC1ChP,EAAM2W,UAAU3W,EAAM2W,SAASykB,IAErCE,iBAAkB1yB,EAAQ8xB,cAC1Ba,iBAAkB3yB,EAAQgyB,cAC1BY,gBAAe,UAAK5yB,EAAQkyB,cAAb,YAA8B96B,EAAMw7B,iBACnDxyB,cAAY,mBACZyyB,SAAUz7B,EAAM07B,SAChBC,QAAS,CACPzM,QAAS,CAAC,YAAa,SAAU,OAAQ,OAAQ,WACjD0M,UAAW,CACT52B,UAAW4D,EAAQiyB,aACnBgB,YAAY,EACZ3M,QAAS,CACP,SACA,KACA,KACA,KACA,KACA,KACA,KACA,eAGJ0H,OAAQ,CACN5xB,UAAW4D,EAAQiyB,aACnB3L,QAAS,CAAC,OAAQ,WAEpBiH,KAAM,CACJnxB,UAAW4D,EAAQiyB,aACnB3L,QAAS,CAAC,YAAa,YAEzB/B,KAAM,CACJnoB,UAAW4D,EAAQiyB,cAErBztB,QAAS,CACPpI,UAAW4D,EAAQiyB,oBCxClBiB,GAAe,SAAC97B,GAC3B,IAAM4I,EAAUhD,KACV8V,EAAcpQ,qBAAW6P,IACzB4gB,EAAS1uB,cACT8B,EAAY/D,IACVkC,EAAyB9B,IAAzB8B,qBALoC,EAQUL,mBAEpD,iBAV0C,mBAQrC+uB,EARqC,KAQhBC,EARgB,OAYVhvB,mBAAiB,IAZP,mBAYrCivB,EAZqC,KAY1BC,EAZ0B,OAcVlvB,mBAAiB,IAdP,mBAcrCmvB,EAdqC,KAc1BC,EAd0B,KAgBtCC,EACJntB,EAAUvD,gBAAkB9L,EAAW+L,eACvCsD,EAAUU,WAAW0sB,WAAWxsB,SAAS,mBACrCysB,EACJrtB,EAAUvD,gBAAkB9L,EAAW+L,eACvCsD,EAAUU,WAAW0sB,WAAWxsB,SAAS,oBACrC0sB,EAA2BH,GAAuBE,EAtBZ,EAwBhBvvB,oBAAkB,GAxBF,mBAwBrCyvB,EAxBqC,KAwB7BC,EAxB6B,OAyBN1vB,oBAAkB,GAzBZ,mBAyBrC2vB,EAzBqC,KAyBxBC,EAzBwB,KA2BtCC,EACJ,kBAAC,EAAD,CAAiB/3B,QAAQ,WAAW1D,MAAM,YAAYsE,GAAI3F,EAAM+nB,YAAhE,UAKIgV,EAAY/8B,EAAMg9B,OACtB,kBAAC,GAAD,CAAQrZ,OAAO,yBAAyByO,eAAe,GACrD,kBAACrpB,EAAA,EAAD,CAAYtD,UAAW,OAAQT,UAAW4D,EAAQwkB,WAChD,8EACA,6BACA,6BACCptB,EAAMg9B,QAmCb,GAAIh9B,EAAMi9B,sBACR,OACE,oCACE,kBAAC,GAAD,KACE,yBAAKj4B,UAAW4D,EAAQmkB,yBACtB,kBAAChkB,EAAA,EAAD,CAAY/D,UAAW4D,EAAQskB,kBAC5BltB,EAAMi9B,sBACP,6BAFF,mEAKA,kBAACl0B,EAAA,EAAD,KACE,uBACEwnB,KAAK,iEACLvrB,UAAW4D,EAAQukB,KACnBrV,OAAO,SACP0Y,IAAI,uBAJN,iCAUJ,yBAAKxrB,UAAW4D,EAAQ+jB,iBAEpB,kBAAC,GAAD,CACE+G,OAAQ1zB,EAAM0zB,OACdD,KAAM/X,EAAYZ,MAClBsX,eAAe,IAGlB2K,IAGL,kBAAC,GAAD,CAAkB3X,IAAK0X,EAAWzX,SAAKtU,KAK7C,GAA4B,mBAAxBirB,EACF,OACE,kBAAC,GAAD,iBACMh8B,EADN,CAEEq8B,aAAcA,EACdD,UAAWA,EACXD,aAAcA,EACdD,UAAWA,EACXU,YAAaA,EACb9hB,MAAOY,EAAYZ,MACnB4hB,OAAQA,EACRQ,aAAcJ,EACdK,SA/EW,4BAAA3wB,EAAAC,OAAA,uDACfkwB,GAAU,GADK,oBAAAnwB,EAAA,MAGQc,EAAwC,CAC3DiB,OAAQ,OACRD,IAAI,oBACJ5B,KAAM,CACJqtB,MAAOqC,EACP30B,OAAO,GAAD,OAAKkF,KAAKC,UAAU,CACxButB,UAAWn6B,EAAMm6B,UACjBH,SAAUh6B,EAAMg6B,YAElBtG,OAAO,GAAD,OAAK/mB,KAAKC,UAAU5M,EAAM0zB,SAChCrT,MAAO6b,EAAUkB,OACjBC,QAAS,UAdA,QAGP51B,EAHO,QAiBFqG,OAAS,KACZ3G,EAAMM,EAAOuG,KAA2B7G,GAC9C40B,EAAOjtB,KAAP,gBAAqB3H,MAErBw1B,GAAU,GACVE,GAAe,IAtBJ,gDAyBbF,GAAU,GACVE,GAAe,GA1BF,4DAoFjB,IAAMS,GACHt9B,EAAMu9B,SAAWv9B,EAAMm6B,UACtB,kBAAC,GAAD,CACEzG,OAAQ1zB,EAAM0zB,OACdyG,UAAWn6B,EAAMm6B,UACjBH,SAAUh6B,EAAMg6B,SAChBh1B,UAAW4D,EAAQykB,UACnBoG,KAAM/X,EAAYZ,aAElB/J,EAEAysB,EAAsBx9B,EAAMm6B,UAChC,kBAAC,EAAD,CACEjhB,QAAS,WACP+iB,EAAuB,mBAEzBjzB,cAAY,kBACZ7B,GAAG,mBALL,kBASE4J,EAEE0W,EACJ,oCACE,kBAAC,EAAD,CAAaziB,UAAWy3B,EAA2B7zB,EAAQykB,eAAYtc,GACrE,uBACEwf,KAAK,oEACLzY,OAAO,SACP0Y,IAAI,sBACJxrB,UAAW4D,EAAQqlB,wBAJrB,gCASDwO,GAA4Ba,EAC5Bb,GAA4Be,GAIjC,OACE,oCACE,kBAAC,GAAD,KACE,yBAAKx4B,UAAW4D,EAAQ6jB,sBACrBzsB,EAAMm6B,WACL,kBAACpxB,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQ+a,QACzC3jB,EAAMm6B,WAAan6B,EAAMg6B,SACtB,iCACA,kCAITh6B,EAAMm6B,WACL,yBAAKn1B,UAAW4D,EAAQ8jB,oBACtB,kBAAC,GAAD,CACEuD,UAAW3H,GAAU4H,SACrBF,aAAchwB,EAAMm6B,aAIzBn6B,EAAMg6B,UACL,yBAAKh1B,UAAW4D,EAAQ8jB,oBACtB,kBAAC,GAAD,CACEuD,UAAW3H,GAAU8R,SACrBpK,aAAchwB,EAAMg6B,YAI1B,yBAAKh1B,UAAW4D,EAAQ+jB,iBAEpB,kBAAC,GAAD,CACE+G,OAAQ1zB,EAAM0zB,OACdD,KAAM/X,EAAYZ,MAClBsX,eAAe,IAGlB2K,GAEH,yBAAK/3B,UAAW4D,EAAQgkB,kBACtB,kBAAC7jB,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQqkB,eAA5C,qCAGA,kBAAClkB,EAAA,EAAD,CAAY/D,UAAW4D,EAAQskB,kBAA/B,sDAGA,kBAACnkB,EAAA,EAAD,KACE,uBACEwnB,KAAK,iEACLzY,OAAO,SACP0Y,IAAI,sBACJxrB,UAAW4D,EAAQukB,MAJrB,gCASF,6BACA,kBAACpkB,EAAA,EAAD,CAAY/D,UAAW4D,EAAQskB,kBAA/B,qEAGA,kBAACnkB,EAAA,EAAD,KACE,uBACEwnB,KAAK,mBACLzY,OAAO,SACP0Y,IAAI,sBACJxrB,UAAW4D,EAAQukB,MAJrB,uBAWN,kBAAC,GAAD,CACE/H,IAAK0X,EACLzX,IAAKoC,MAMPgW,GAAuB,SAC3Bz9B,GAYA,IAAM4I,EAAUhD,KADb,EAGiCqH,oBAAkB,GAHnD,mBAGIywB,EAHJ,KAGgBC,EAHhB,OAI6B1wB,mBAAiBjN,EAAMk8B,WAJpD,mBAII0B,EAJJ,KAIcC,EAJd,OAK6B5wB,mBAAiBjN,EAAMo8B,WALpD,mBAKI0B,EALJ,KAKcC,EALd,KAMGC,EAAgBC,oBAASF,EAAa,IAAM,CAAEG,UAAU,IACxDC,EAAgBF,oBAASJ,EAAa,IAAM,CAAEK,UAAU,IAU9D,OARA7vB,qBAAU,WACJyvB,IAAa99B,EAAMo8B,WAAawB,IAAa59B,EAAMk8B,UACrDyB,GAAc,GAEdA,GAAc,KAEf,CAAC39B,EAAMo8B,UAAWp8B,EAAMk8B,UAAW0B,EAAUE,IAG9C,oCACE,yBAAK94B,UAAW4D,EAAQ8kB,sBACtB,yBACE1oB,UAAS,UAAK4D,EAAQ6jB,qBAAb,YAAqC7jB,EAAQ0kB,0BAEtD,kBAACvkB,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQ+a,QAA5C,0BAGA,kBAAC5a,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQ4kB,mBACzCxtB,EAAMm6B,WAAan6B,EAAMg6B,SACtB,+BACA,+BAEN,kBAACjxB,EAAA,EAAD,CAAY/D,UAAW4D,EAAQ6kB,oBAA/B,sHAKDztB,EAAMm6B,WACL,yBAAKn1B,UAAW4D,EAAQ8jB,oBACtB,kBAAC,GAAD,CACEuD,UAAW3H,GAAU4H,SACrBF,aAAchwB,EAAMm6B,aAIzBn6B,EAAMg6B,UACL,yBAAKh1B,UAAW4D,EAAQ8jB,oBACtB,kBAAC,GAAD,CAAQ/I,OAAO,YAAYyO,eAAe,GACxC,kBAAC,GAAD,CACEnC,UAAW3H,GAAU8R,SACrBpK,aAAchwB,EAAMg6B,SACpB7J,YAAY,MAKpB,yBAAKnrB,UAAW4D,EAAQ+jB,iBAEpB,kBAAC,GAAD,CACE+G,OAAQ1zB,EAAM0zB,OACdD,KAAMzzB,EAAM8a,MACZsX,eAAe,MAKvB,yBAAKptB,UAAW4D,EAAQ+kB,yBACtB,kBAACvU,GAAA,EAAD,CACEjS,GAAG,mBACH6B,cAAY,mBACZoN,MAAM,YACNpR,UAAW4D,EAAQglB,mBACnB5e,MAAOhP,EAAMk8B,UACbkC,WAAW,EACXC,QAAS,SAACznB,GACRA,EAAMkB,OAAOwmB,UAEf3nB,SAAU,SAACC,GACT5W,EAAMm8B,aAAavlB,EAAMkB,OAAO9I,OAChCmvB,EAAcvnB,EAAMkB,OAAO9I,UAG/B,kBAAC,GAAD,CACEhG,cAAY,mBACZhE,UAAW4D,EAAQilB,gCACnB2N,gBAAiB5yB,EAAQklB,kCACzB9e,MAAOhP,EAAMo8B,UACbzlB,SAAU,SAAC3H,GACThP,EAAMq8B,aAAartB,GACnBgvB,EAAchvB,MAGjBhP,EAAM48B,aACL,yBAAK53B,UAAW4D,EAAQmlB,WACtB,kBAAChlB,EAAA,EAAD,8DAMN,kBAAC,GAAD,CACEqc,IAAKplB,EAAMk9B,aACX7X,IACE,oCACE,kBAAC,EAAD,CAAargB,UAAW4D,EAAQykB,WAC9B,uBACEkD,KAAK,oEACLzY,OAAO,SACP0Y,IAAI,sBACJxrB,UAAW4D,EAAQqlB,wBAJrB,iCASAjuB,EAAMu9B,SACN,kBAAC,GAAD,CACE7J,OAAQ1zB,EAAM0zB,OACdyG,UAAWn6B,EAAMm6B,UACjBH,SAAUh6B,EAAMg6B,SAChBh1B,UAAW4D,EAAQykB,UACnBoG,KAAMzzB,EAAM8a,MACZuF,MAAOud,EACP7D,MAAO+D,EACPttB,QAASktB,GAAc19B,EAAM08B,SAGjC,kBAAC,EAAD,CACExjB,QAASlZ,EAAMm9B,SACft4B,eAAgB7E,EAAM08B,OACtBzjB,SAAUjZ,EAAM08B,SAAW18B,EAAMk8B,UAAUkB,OAC3Cp0B,cAAY,mBACZ7B,GAAG,oBALL,aHnZNo3B,GAAaC,EAAQ,O,SAafhF,K,4BAAAA,E,gCAAAA,E,eAAAA,Q,KAsCL,IAAMiF,GAAe,CAC1B9K,YAAa,KACbC,UAAWlQ,GAAsBkG,WACjCiK,QAAS,KACTC,UAAW,KACXC,UAAW,KACXK,YAAa1Q,GAAsBoH,UACnCuJ,SAAU3Q,GAAsBoH,UAChCkJ,IAAK,KACLG,WAAY,KACZF,SAAUvQ,GAAsBkI,OAChCsI,aAAcxQ,GAAsBgb,WACpCnK,kBAAmB,CACjBzf,aAAc,KACdC,YAAa,KACbC,kBAAmB,KACnBC,MAAO,KACPC,SAAU,OAIDypB,GAA6B,SACxCC,GADwC,QAGtCA,GACF5sB,OAAOC,QAAQ2sB,GAAWC,QACxB,SAACC,EAAK3sB,GAAN,OAAgB2sB,GAAoB,OAAb3sB,EAAM,MAC7B,IAGS4sB,GAAmB,SAC9BH,GAMA,OAJwB5sB,OAAOC,QAAQ2sB,GAAWC,QAAO,SAACC,EAAK3sB,GAC7D,OAAO2sB,GAAoB,OAAb3sB,EAAM,MACnB,IAGkBwsB,GAA2BC,EAAUrK,oBAI/CyK,GAAa,SAACh/B,GAAD,OACxB,kBAAC,GAAD,KACE,yBAAKoF,MAAO,CAAEzC,UAAW,SACvB,kBAACoG,EAAA,EAAD,CAAYhE,QAAQ,KAAKK,MAAO,CAAEY,aAAc,SAAhD,kCAGA,yBACEZ,MAAO,CAAExC,MAAO,QAASoD,aAAc,OAAQiE,WAAY,aAE3D,yBAAK7E,MAAO,CAAEgB,QAAS,SACrB,kBAAC2C,EAAA,EAAD,yEAEE,uBAAGwnB,KAAK,mBAAmBzY,OAAO,UAAlC,sBAKJ,6BACA,kBAAC/O,EAAA,EAAD,6LAMF,yBAAK3D,MAAO,CAAEY,aAAc,SAC1B,kBAAC,EAAD,CACEZ,MAAO,CAAEmB,YAAa,QACtB2S,QAASlZ,EAAMi/B,WACfj2B,cAAY,sBAHd,uBAOA,kBAAC,EAAD,CAAiBrD,GAAG,IAAIZ,QAAQ,YAAhC,cAQKm6B,GAAa,SAACl/B,GAAkC,IAAD,EACdiN,oBAAkB,GADJ,mBACnDkyB,EADmD,KACnCC,EADmC,OAE5BnyB,wBAAkC8D,GAFN,mBAEnDsuB,EAFmD,KAE1CC,EAF0C,OAG9BryB,mBAAiCwxB,IAHH,mBAGnD/K,EAHmD,KAG3C6L,EAH2C,OAIZtyB,mBAC5C,eALwD,mBAInD+a,EAJmD,KAIlCwX,EAJkC,KAOpDzD,EAAS1uB,cACT8B,EAAY/D,IACVkC,EAAyB9B,IAAzB8B,qBAIFmyB,EAAiB,SACrBC,GADqB,eAAAlzB,EAAAC,OAAA,kEAAAD,EAAA,MAGAc,EAA6B,CAChDiB,OAAQ,OACRD,IAAI,aAAD,OACDa,EAAUvD,gBAAkB9L,EAAW+L,eACvCsD,EAAUU,WAAWC,MAAMC,SAAS,qBAChC,SACA,IAENrD,KAAMgzB,KAXa,YAGfj4B,EAHe,QAaVsG,GAbU,uBAcnBuxB,EAAW,CACTK,WAAY,UACZ/0B,QAASnD,EAAOuG,OAhBC,kBAkBZ,WAlBY,cAoBnBsxB,OAAWvuB,GApBQ,kBAqBZ,QArBY,uCA6CvB,GAA4B,aAAjB,OAAPsuB,QAAO,IAAPA,OAAA,EAAAA,EAASM,aAA4BZ,GAAiBrL,GACxD,OAAQ2L,EAAQz0B,QAAQjD,MACtB,KAAK6xB,GAAkBoG,aACrB,OACE,kBAAC,GAAD,CACE5C,MAAOqC,EAAQz0B,QAAQoyB,MACvBjV,WAAW,IACXoS,UAAS,eACJkF,EAAQz0B,QAAQuvB,WAErBH,SACEqF,EAAQz0B,QAAQovB,SAAhB,eAESqF,EAAQz0B,QAAQovB,eAErBjpB,EAEN2iB,OAAQA,EACR6J,QAASv9B,EAAMu9B,UAGrB,KAAK/D,GAAkBqG,eACrB,OACE,kBAAC,GAAD,CACE7C,MAAOqC,EAAQz0B,QAAQoyB,MACvBjV,WAAW,IACXkV,sBAAuBoC,EAAQz0B,QAAQy0B,QACvC3L,OAAQA,EACR6J,QAASv9B,EAAMu9B,UAIrB,KAAK/D,GAAkBjuB,MACrB,OACE,yBAAKnG,MAAO,CAAE5B,QAAS,SACrB,kBAAC+6B,GAAD,CAAYp3B,GAAG,cAAcuF,KAAM2yB,KAGzC,QACE,MAAM,IAAI9zB,MAAM,uCAEf,GAA4B,UAAjB,OAAP8zB,QAAO,IAAPA,OAAA,EAAAA,EAASM,YAElB,OAAO,kBAAC52B,EAAA,EAAD,gDAGT,OACE,oCACGo2B,EACC,kBAAC,GAAD,CAAYF,WAhGI,kBAAMG,GAAmBD,MAkGzC,kBAAC,GAAD,CACErX,SApES,0BAAAtb,EAAAC,OAAA,oDACXsyB,GAAiBrL,GADN,uBAEb8L,EAAmB,cAFN,WAAAhzB,EAAA,MAGQizB,EAAe/L,IAHvB,OAGPjsB,EAHO,OAIb+3B,EAAmB/3B,GACJ,SAAXA,GACFs0B,EAAOjtB,KAAK,UAXEgxB,EAaL,mBAbwBC,EAaJ,CAC7BC,SAAU,SACVr0B,OAAQ,oBAdLO,OAAe+zB,YACf/zB,OAAe+zB,WAAWz9B,MAAMs9B,EAAWC,GAehD7zB,OAAOg0B,SAAS,CAAE56B,IAAK,IAZV,iCALE,IAACw6B,EAAmBC,MA0E/B/X,gBAAiBA,EACjBD,WAAW,KIjOd,SAAoB/nB,GAAe,IAChC0zB,EAAuC1zB,EAAvC0zB,OAAQ6L,EAA+Bv/B,EAA/Bu/B,UAAWvX,EAAoBhoB,EAApBgoB,gBAE3B,MAAO,CACL,kBAAC,GAAD,CAAYV,WAAYoM,EAAOC,YAAa7d,IAAK,oBAC/C,kBAAC,GAAD,CACE+M,WAAU,qCACVC,SAAS,2BACTF,aAAW,IAEb,kBAACrN,GAAD,CACEvG,MAAO0kB,EAAOC,YACd9c,SAAU,SAAC8c,GACT4L,EAAU,eAAK7L,EAAN,CAAcC,kBAEzBjd,KAAK,cACL9O,OAAQwK,GACRqD,YAAa,KAGjB,kBAAC,GAAD,CAAY6R,WAAYoM,EAAOE,UAAW9d,IAAK,mBAC7C,kBAAC,GAAD,CACE+M,WAAU,kEACVC,SAAS,cAEX,kBAACnH,GAAD,CACE3M,MAAO0kB,EAAOE,UACd/c,SAAU,SAAC+c,GACT2L,EAAU,eAAK7L,EAAN,CAAcE,gBAEzBld,KAAK,UACLkF,SAAU8H,GAAsBkG,WAChC/N,SAAU6H,GAAsByc,WAChCrlB,MAAM,SACNsB,SAAU,OAGd,kBAAC,GAAD,CAAYkL,SAA6B,OAAnBoM,EAAOG,QAAkB/d,IAAK,gBAClD,kBAAC,GAAD,CACE+M,WAAU,wDACVC,SAAS,qBACTH,YAAU,IAEZ,kBAAC,GAAD,CACEyd,SAAU1M,EAAOG,QACjBhd,SAAU,SAACgd,GACT0L,EAAU,eAAK7L,EAAN,CAAcG,iBAI7B,kBAAC,GAAD,CACEvM,WAAYoM,EAAOK,WAAyC,IAA5BL,EAAOK,UAAUhiB,OACjD+D,IAAK,mBAEL,kBAAC,GAAD,CACE+M,WAAU,kDACVC,SAAS,kBACTH,YAAU,IAEZ,kBAAC0d,GAAD,CACE3pB,KAAK,aACL9O,OAAQwM,GACRpF,MAAO0kB,EAAOK,UACdld,SAAU,SAACkd,GACTwL,EAAU,eAAK7L,EAAN,CAAcK,gBAEzB1d,aAAcyb,MAGlB,kBAAC,GAAD,CAAYxK,SAA+B,OAArBoM,EAAOI,UAAoBhe,IAAK,kBACpD,kBAAC,GAAD,CACE+M,WAAU,8CACVF,YAAU,IAEZ,kBAAC,GAAD,CACEmR,UAAWJ,EAAOI,UAClBjd,SAAU,SAACid,GACTyL,EAAU,eAAK7L,EAAN,CAAcI,mBAI7B,kBAAC,GAAD,CACExM,WAAYoM,EAAOU,eAAiBV,EAAOW,SAC3Cve,IAAK,qBAEL,kBAAC/M,EAAA,EAAD,CAAYhE,QAAQ,aAApB,iBACA,kBAAC,GAAD,CACE8d,WAAU,oDACVC,SAAS,wBAEX,kBAACnH,GAAD,CACE3M,MAAO0kB,EAAOU,YACdvd,SAAU,SAACud,GACTmL,EAAU,eAAK7L,EAAN,CAAcU,kBAEzB1d,KAAK,mBACLkF,SAAU8H,GAAsBoH,UAChCjP,SAAU6H,GAAsB4c,UAChClkB,SAAU,EACVtB,MAAM,UAER,kBAAC,GAAD,CACE+H,WAAU,4DACVC,SAAS,wBAEX,kBAACnH,GAAD,CACE3M,MAAO0kB,EAAOW,SACdxd,SAAU,SAACwd,GACTkL,EAAU,eAAK7L,EAAN,CAAcW,eAEzB3d,KAAK,YACLkF,SAAU8H,GAAsBoH,UAChCjP,SAAU6H,GAAsB4c,UAChClkB,SAAU,EACVtB,MAAM,WAGV,kBAAC,GAAD,CAAYwM,WAAYoM,EAAOM,IAAKle,IAAK,YACvC,kBAAC,GAAD,CACE+M,WAAU,oDACVC,SAAS,YACTF,aAAW,IAEb,kBAACK,GAAD,CACEjU,MAAO0kB,EAAOM,IACdnd,SAAU,SAACmd,GACTuL,EAAU,eAAK7L,EAAN,CAAcM,aAI7B,kBAAC,GAAD,CACE1M,WACIoM,EAAOS,cAAgBT,EAAOO,YAAcP,EAAOQ,aAEvDpe,IAAK,eAEL,kBAAC/M,EAAA,EAAD,CAAYhE,QAAQ,aAApB,0BACA,kBAAC,GAAD,CACE8d,WAAU,qCACVD,aAAW,IAEb,kBAACrN,GAAD,CACEvG,MAAO0kB,EAAOS,WACdtd,SAAU,SAACsd,GACToL,EAAU,eAAK7L,EAAN,CAAcS,iBAEzBzd,KAAK,cACL9O,OAAQyK,GACRgE,aAAczC,GACd6B,YAAa,IAEf,yBAAKrQ,MAAO,CAAEiE,WAAY,SACxB,kBAAC,GAAD,CACEwZ,WAAU,gDAEZ,kBAAClH,GAAD,CACE3M,MAAO0kB,EAAOO,SACdpd,SAAU,SAACod,GACTsL,EAAU,eAAK7L,EAAN,CAAcO,eAEzBvd,KAAK,aACLkF,SAAU8H,GAAsBkI,OAChC/P,SAAU6H,GAAsB6c,OAChCnkB,SAAU,EACVtB,MAAM,UAER,kBAACa,GAAD,CACE3M,MAAO0kB,EAAOQ,aACdrd,SAAU,SAACqd,GACTqL,EAAU,eAAK7L,EAAN,CAAcQ,mBAEzBxd,KAAK,SACLkF,SAAU8H,GAAsBgb,WAChC7iB,SAAU6H,GAAsB8c,WAChCpkB,SAAU,GACVtB,MAAM,aAIZ,kBAAC,GAAD,CACEwM,WACIoM,EAAOa,mBACToK,GAA2BjL,EAAOa,mBAEpCze,IAAK,mBAEL,kBAAC,GAAD,CACE+M,WAAW,mCACXF,YAAU,IAEZ,kBAACvE,GAAD,CACEnF,SAA8B,eAApB+O,EACVzJ,aAAcmV,EAAOa,kBACrB3V,gBAAiB,SAAC2V,GAChBgL,EAAU,eAAK7L,EAAN,CAAca,wBAEzB7d,KAAK,qBACL+J,aAAa,UACbH,aAAa,kCJ6BVmgB,CAAW,CAAE/M,SAAQ6L,YAAWvX,uB,WKtQ9BpiB,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLm8B,uBAAwB,CACtBt6B,QAAS,cACTgP,SAAU,QAEZ0Z,aAAc,CACZ9oB,aAAc,OACd3E,MAAOkD,EAAMlE,QAAQK,KAAKJ,SAE5BqgC,4BAA6B,CAC3B36B,aAAc,OACdM,SAAU,QACVF,QAAS,OACTmnB,SAAU,UAEZqT,yBAA0B,CACxB56B,aAAc,QAEhB66B,qBAAsB,CACpB76B,aAAc,QAEhB86B,uBAAwB,CACtB96B,aAAc,OAEhB+6B,2BAA4B,CAC1Bp9B,WAAYY,EAAMxD,WAAWC,gBAE/BggC,eAAgB,CACd/2B,WAAY,QACZjE,aAAc,OAEhBi7B,cAAe,CACb53B,WAAY,OAEdooB,SAAU,CACRzrB,aAAc,WCnCPJ,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL28B,iBAAkB,CAChB96B,QAAS,cACTgP,SAAU,OACVxS,MAAO,QAETksB,aAAc,CACZ9oB,aAAc,OACd3E,MAAOkD,EAAMlE,QAAQK,KAAKJ,SAE5B6gC,gBAAiB,CACfv+B,MAAO,OACPN,OAAQ,OACR+C,SAAU,WACVE,KAAM,SACNsF,MAAO,SACPvF,IAAK,SACL6e,OAAQ,SACRhhB,UAAW,aACXT,UAAW,mCACXL,aAAc,OACda,OAAO,aAAD,OAAe1C,OAAY,MACjCI,WAAYJ,QAAa,MAE3B4gC,0BAA2B,GAC3BC,wBAAyB,CACvBn+B,OAAO,aAAD,OAAe1C,QAAa,KAClCI,WAAY2D,EAAMlE,QAAQC,QAAQC,MAEpC+gC,kBAAmB,CACjBC,UAAW,gBACXr/B,aAAa,aAAD,OAAe1B,QAAa,KACxC8tB,YAAY,aAAD,OAAe9tB,QAAa,KACvC6E,SAAU,WACVzC,MAAO,MACPN,OAAQ,OACRO,WAAY,MACZF,UAAW,OACXsE,OAAQ,iDAEVu6B,qBAAsB,CAAEp7B,QAAS,gBACjCq7B,YAAa,CACXp8B,SAAU,WACVzE,WAAYJ,QAAa,KACzBoC,MAAO,QACPN,OAAQ,QACRiE,YAAa,OACbP,aAAc,OACdtD,UAAW,iCACXL,aAAc,MACd+D,QAAS,OACTsE,cAAe,SACfT,WAAY,SACZJ,eAAgB,SAChBL,UAAW,SACXhG,QAAS,OACT,qCAAsC,CACpCpC,gBAAiBZ,OAAY,IAC7B0C,OAAO,aAAD,OAAe1C,OAAY,OAEnC,UAAW,CACTY,gBAAiBZ,OAAY,IAC7BkC,UAAW,qGAGfg/B,cAAe,CACb/+B,UAAW,OACXuhB,UAAW,OACXwK,UAAW,OACXtoB,QAAS,OACTsE,cAAe,SACfb,eAAgB,UAElB83B,eAAgB,CACdvgC,gBAAiBmD,EAAMlE,QAAQC,QAAQC,KACvCc,MAAOkD,EAAMlE,QAAQsd,gBAAgBpZ,EAAMlE,QAAQC,QAAQC,MAC3DmC,UAAW,qGACX,UAAW,CACTtB,gBAAiBmD,EAAMlE,QAAQC,QAAQC,KACvCmC,UAAW,uGAGfgO,UAAW,CACT/M,WAAY,IACZC,SAAU,OACVK,WAAY,OACZE,cAAe,SACfC,cAAe,YACfzB,UAAW,QAEbi/B,kBAAmB,CACjBvgC,MAAOkD,EAAMlE,QAAQsd,gBAAgBpZ,EAAMlE,QAAQC,QAAQC,OAE7DshC,oBAAqB,CACnBxgC,MAAOb,OAAY,MAErBmQ,aAAc,CACZ/M,SAAU,YCvFT,SAASy8B,GAAgCrgC,GAO9C,IAAM4I,EAAUhD,KAehB,OACE,kBAAC2Q,GAAA,EAAD,CAAa9Q,UAAU,YACrB,kBAAC0W,GAAA,EAAD,KACE,kBAACpT,EAAA,EAAD,CAAY/D,UAAW4D,EAAQkmB,cAA/B,2BAIF,yBAAK9pB,UAAW4D,EAAQs4B,kBACrBlvB,OAAOpK,OAAO5H,EAAM4H,QAAQ+N,KAAI,SAAC3G,GAAD,aAC/B,kBAAC,GAAD,CACE8G,IAAKG,GAAajH,GAClB8yB,SAAS,UAAA9hC,EAAMgP,aAAN,eAAae,SAASf,MAAU,EACzCqR,MAAOrgB,EAAMqW,aAAarH,GAAOqR,MACjCoR,SAAUzxB,EAAMqW,aAAarH,GAAOyiB,SACpCnP,KAAMtiB,EAAMqW,aAAarH,GAAOsT,KAChCpJ,QAAS,WAAO,IAAD,EA5BHxC,KA6BG1H,EA7BS,SAAC8yB,GAAsB,IAAD,EACtD,GAAKA,GAOM,UAAC9hC,EAAMgP,aAAP,aAAC,EAAae,SAAS2G,KAChC1W,EAAM6W,UAAU7W,EAAMgP,OAAS,IAAIsC,OAAOoF,QAR9B,CACZ,IAAM2B,GAAYrY,EAAMgP,OAAS,IAAI/H,QAAO,SAAC+H,GAAD,OAAWA,IAAU0H,KACzC,IAApB2B,EAAStG,OACX/R,EAAM6W,SAAS,MAEf7W,EAAM6W,SAASwB,QAuBW,UAACrY,EAAMgP,aAAP,aAAC,EAAae,SAASf,aAelD,IAAM+yB,GAAc,SACzB/hC,GAKA,IAAM4I,EAAUhD,KAChB,OACE,yBACEZ,UAAS,UAAK4D,EAAQ44B,qBAAb,YAAqCvrB,GAAajW,EAAMqgB,QAAxD,OACPrgB,EAAM8hC,QAAU,WAAa,IAE/B5oB,QAASlZ,EAAMkZ,SAEf,yBACElU,UAAS,UAAK4D,EAAQ64B,YAAb,YACPzhC,EAAM8hC,QAAUl5B,EAAQ+4B,eAAiB,KAG3C,yBACE38B,UAAS,UAAK4D,EAAQu4B,gBAAb,YACPnhC,EAAM8hC,QACFl5B,EAAQy4B,wBACRz4B,EAAQw4B,4BAGbphC,EAAM8hC,SAAW,yBAAK98B,UAAW4D,EAAQ04B,qBAG5C,yBAAKt8B,UAAW4D,EAAQ84B,eACrB1hC,EAAMsiB,KAAKtiB,EAAM8hC,QAAUthC,QAAa,KAAOA,OAAY,OAE9D,kBAACuI,EAAA,EAAD,CACE/D,UAAS,UAAK4D,EAAQ8H,UAAb,YACP1Q,EAAM8hC,QACFl5B,EAAQg5B,kBACRh5B,EAAQi5B,sBAGb7hC,EAAMqgB,OAET,kBAACtX,EAAA,EAAD,CAAY/D,UAAW4D,EAAQ+H,cAC5B3Q,EAAMyxB,aCzEJuQ,GAAkB,SAAChiC,GAGzB,IAAD,gBACE4I,EAAUhD,KADZ,EAGsBqH,mBAAgB,CACxC6c,QAAO,UAAC9pB,EAAMogC,gBAAP,aAAC,EAAgBrwB,SAASsE,GAAQmd,OACzCyQ,SAAQ,UAACjiC,EAAMogC,gBAAP,aAAC,EAAgBrwB,SAASsE,GAAQsd,eAC1CuQ,iBACE,UAAAliC,EAAMogC,gBAAN,eAAgBrwB,SAASsE,GAAQud,uBAAjC,UACA5xB,EAAMogC,gBADN,aACA,EAAgBrwB,SAASsE,GAAQwd,oBAEnCsQ,mBAAmB,UAAAniC,EAAMogC,gBAAN,eAAgBrwB,SAASsE,GAAQud,qBAChDvd,GAAQud,oBACR,UAAA5xB,EAAMogC,gBAAN,eAAgBrwB,SAASsE,GAAQwd,mBACjCxd,GAAQwd,iBACR,KACJ3H,cAAa,UAAClqB,EAAMogC,gBAAP,aAAC,EAAgBrwB,SAASsE,GAAQqd,aAC/C0Q,uBAAsB,UAACpiC,EAAMogC,gBAAP,aAAC,EAAgBrwB,SAASsE,GAAQqd,eAhBtD,mBAGGhmB,EAHH,KAGU2E,EAHV,KAmBJhC,qBAAU,WACR,IAAI+xB,EAAsB,GACtB10B,EAAMoe,OAAMsW,EAAWA,EAAS9uB,OAAO+C,GAAQmd,OAC/C9lB,EAAMu2B,QAAO7B,EAAWA,EAAS9uB,OAAO+C,GAAQsd,eACpB,OAA5BjmB,EAAMy2B,oBACR/B,EAAWA,EAAS9uB,OAAO5F,EAAMy2B,oBAE/Bz2B,EAAMwe,aAAYkW,EAAWA,EAAS9uB,OAAO+C,GAAQqd,aAInC,IAApB0O,EAASruB,QACPrG,EAAMw2B,cAA4C,OAA5Bx2B,EAAMy2B,mBAC5Bz2B,EAAMwe,aAAcxe,EAAM02B,oBAI5BpiC,EAAM6W,SAAS,MAFf7W,EAAM6W,SAASupB,KAKhB,CAAC10B,IAEJ,IAAM22B,EACJ,yBAAKr9B,UAAW4D,EAAQ+3B,6BACtB,kBAAC53B,EAAA,EAAD,CAAYhE,QAAQ,YAAYC,UAAW4D,EAAQ6oB,UAAnD,iBAGA,kBAAC1oB,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQi4B,sBAA5C,2DAGA,kBAACrqB,GAAA,EAAD,CACExH,MAAOtD,EAAMy2B,mBAAqB,GAClCxrB,SAAU,SAACC,EAAO5H,GAChBqB,EAAS,eACJ3E,EADG,CAENy2B,kBAAmBnzB,OAMvB,kBAACgH,GAAA,EAAD,CACEhN,cAAaiN,GAAa5B,GAAQud,oBAClC5sB,UAAS,UAAKiR,GAAa5B,GAAQud,oBAA1B,YACPhpB,EAAQo4B,gBAEVhyB,MAAOqF,GAAQud,mBACf1b,QAAS,kBAACC,GAAA,EAAD,MACTC,MACE,yBAAKpR,UAAW4D,EAAQq4B,eAAxB,+DAEE,6BACA,8GAON,kBAACjrB,GAAA,EAAD,CACEhN,cAAaiN,GAAa5B,GAAQwd,kBAClC7sB,UAAS,UAAKiR,GAAa5B,GAAQwd,kBAA1B,YACPjpB,EAAQo4B,gBAEVhyB,MAAOqF,GAAQwd,iBACf3b,QAAS,kBAACC,GAAA,EAAD,MACTC,MACE,yBAAKpR,UAAW4D,EAAQq4B,eAAxB,4DAEE,6BACA,yGAWNqB,EACJ,yBAAKt9B,UAAW4D,EAAQ+3B,6BACtB,kBAAC53B,EAAA,EAAD,CAAYhE,QAAQ,YAAYC,UAAW4D,EAAQ6oB,UAAnD,eAGA,kBAAC1oB,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQg4B,0BAA5C,0BAGA,kBAAC73B,EAAA,EAAD,CAAY/D,UAAW4D,EAAQk4B,wBAA/B,6JAIA,kBAAC/3B,EAAA,EAAD,CAAY/D,UAAW4D,EAAQm4B,4BAA/B,uEAIA,kBAAC/qB,GAAA,EAAD,CACEhN,cAAa,qBACbhE,UAAW,qBACXgK,MAAOqF,GAAQqd,WACfoQ,QAASp2B,EAAM02B,oBACflsB,QAAS,kBAACqsB,GAAA,EAAD,MACTnsB,MAAO,+CACPO,SAAU,SAACC,EAAOkrB,GAChBzxB,EAAS,eAAK3E,EAAN,CAAa02B,oBAAqBN,SAMlD,OACE,oCACE,kBAAC/4B,EAAA,EAAD,CAAY/D,UAAW4D,EAAQkmB,cAA/B,0BAGA,yBAAK9pB,UAAW4D,EAAQ83B,wBACtB,kBAAC,GAAD,CACErgB,MAAOkR,GAAuBld,GAAQmd,MAAMnR,MAC5CiC,KAAMiP,GAAuBld,GAAQmd,MAAMlP,KAC3CmP,SAAUF,GAAuBld,GAAQmd,MAAMC,SAC/CqQ,QAASp2B,EAAMoe,KACf5Q,QAAS,WACP7I,EAAS,eAAK3E,EAAN,CAAaoe,MAAOpe,EAAMoe,WAItC,kBAAC,GAAD,CACEzJ,MAAOkR,GAAuBld,GAAQsd,cAActR,MACpDiC,KAAMiP,GAAuBld,GAAQsd,cAAcrP,KACnDmP,SAAUF,GAAuBld,GAAQsd,cAAcF,SACvDqQ,QAASp2B,EAAMu2B,MACf/oB,QAAS,WACP7I,EAAS,eAAK3E,EAAN,CAAau2B,OAAQv2B,EAAMu2B,YAGvC,kBAAC,GAAD,CACE5hB,MAAM,gBACNiC,KAAMiP,GAAuBld,GAAQud,oBAAoBtP,KACzDmP,SAAS,gBACTqQ,QAASp2B,EAAMw2B,aACfhpB,QAAS,WACFxN,EAAMw2B,aAOT7xB,EAAS,eACJ3E,EADG,CAENw2B,cAAc,EACdC,kBAAmB,QATrB9xB,EAAS,eACJ3E,EADG,CAENy2B,kBAAmB,KACnBD,cAAc,QAWtB,kBAAC,GAAD,CACE7hB,MAAOkR,GAAuBld,GAAQqd,YAAYrR,MAClDiC,KAAMiP,GAAuBld,GAAQqd,YAAYpP,KACjDmP,SAAUF,GAAuBld,GAAQqd,YAAYD,SACrDqQ,QAASp2B,EAAMwe,WACfhR,QAAS,WACFxN,EAAMwe,WAOT7Z,EAAS,eACJ3E,EADG,CAENwe,YAAY,EACZkY,qBAAqB,KATvB/xB,EAAS,eACJ3E,EADG,CAENwe,YAAY,EACZkY,qBAAqB,SAY9B12B,EAAMw2B,cAAgBG,EAEtB32B,EAAMwe,YAAcoY,I,WC7Od18B,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLuqB,aAAc,CACZ9oB,aAAc,OACd3E,MAAOkD,EAAMlE,QAAQK,KAAKJ,aCOzB,SAASkiC,GAAmCxiC,GAO/C,IAAD,EACK4I,EAAUhD,KADf,EAG8BqH,qBAC7BjN,EAAMyiC,WAAoC,KAAxB,UAAAziC,EAAMgP,aAAN,eAAa+C,SAJhC,mBAGM2wB,EAHN,KAGmBC,EAHnB,KAgCD,OACE,kBAACpsB,GAAA,EAAD,CAAa9Q,UAAU,YACrB,kBAAC0W,GAAA,EAAD,KACE,kBAACpT,EAAA,EAAD,CAAY/D,UAAW4D,EAAQkmB,cAA/B,2BAIF,kBAAC8T,GAAA,EAAD,CAAWnsB,aAAYzW,EAAM0W,MAC1B1E,OAAOpK,OAAO5H,EAAM4H,QAAQ+N,KAAI,SAAC3G,GAAD,MAxBjB0H,EAwBiB,OAC/B,kBAACV,GAAA,EAAD,CACEF,IAAKG,GAAajH,GAClBhG,cAAaiN,GAAajH,GAC1BhK,UAAWiR,GAAajH,GACxBA,MAAOA,EACP8yB,SAAS,UAAA9hC,EAAMgP,aAAN,eAAae,SAASf,MAAU,EACzCkH,QAAS,kBAACqsB,GAAA,EAAD,MACTnsB,MACEpW,EAAMqW,aACFrW,EAAMqW,aAAarH,GACnB6zB,sBAAWvsB,qBAAUtH,IAE3B2H,UArCYD,EAqCW1H,EArCC,SAChC4H,EACAkrB,GACI,IAAD,EACH,GAAKA,GAOM,UAAC9hC,EAAMgP,aAAP,aAAC,EAAae,SAAS2G,KAChC1W,EAAM6W,UAAU7W,EAAMgP,OAAS,IAAIsC,OAAOoF,QAR9B,CACZ,IAAM2B,GAAYrY,EAAMgP,OAAS,IAAI/H,QAAO,SAAC+H,GAAD,OAAWA,IAAU0H,KACzC,IAApB2B,EAAStG,OACX/R,EAAM6W,SAAS,MAEf7W,EAAM6W,SAASwB,MA6BXY,SAAUypB,OAGb1iC,EAAMyiC,WACL,kBAACzsB,GAAA,EAAD,CACEF,IAAI,OACJ9M,cAAY,oBACZhE,UAAU,oBACVgK,MAAM,OACN8yB,QAASY,EACTxsB,QAAS,kBAACqsB,GAAA,EAAD,MACTnsB,MAAM,oBACNO,SAAU,SAACC,EAAOkrB,IA3DT,SAACA,GACdA,EACF9hC,EAAM6W,SAAS,IAEf7W,EAAM6W,SAAS,MAEjB8rB,EAAQb,GAsDEgB,CAAWhB,QCrFlB,IAAMl8B,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLuqB,aAAc,CACZ9oB,aAAc,OACd3E,MAAOkD,EAAMlE,QAAQK,KAAKJ,SAE5BqgC,4BAA6B,CAC3Bh+B,UAAW,OACX2D,SAAU,SAEZs6B,yBAA0B,CACxB56B,aAAc,QAEhB86B,uBAAwB,CACtB96B,aAAc,OAEhB+6B,2BAA4B,CAC1B/6B,aAAc,MACdrC,WAAY,SCZLo/B,GAAoB,SAAC/iC,GAG3B,IAAD,IACE4I,EAAUhD,KAEV8V,EAAcpQ,qBAAW6P,IAH3B,EAKkDlO,mBAAQ,UAC5DjN,EAAM8zB,iBADsD,aAC5D,EAAiB/jB,SAAS4D,GAASe,eANjC,mBAKGsuB,EALH,KAKwBC,EALxB,OAQwCh2B,mBAA4B,MARpE,mBAQGi2B,EARH,KAQmBC,EARnB,KAUEC,EAAgB1nB,EAAYZ,QAAU5C,GAAKsD,OAA3B,yhBAUtB,OACE,oCACE,kBAACgnB,GAAD,CACE9rB,KAAK,YACL9O,OAAQ+L,GACR3E,MAAOk0B,GAAkBljC,EAAM8zB,UAC/Bjd,SAAU,SAACid,GAAkC,IAAD,EAC1CmP,KAAwB,OAACnP,QAAD,IAACA,OAAD,EAACA,EAAW/jB,SAAS4D,GAASe,iBAInD,OAACof,QAAD,IAACA,OAAD,EAACA,EAAW/jB,SAAS4D,GAASe,kBAC/B,UAAC1U,EAAM8zB,iBAAP,aAAC,EAAiB/jB,SAAS4D,GAASe,gBAEpCyuB,EAAkBrP,GAClB9zB,EAAM6W,SAAS,QAEfssB,EAAkB,MAClBnjC,EAAM6W,SAASid,KAGnB2O,WAAS,EACTpsB,aAAc/B,KAEf0uB,GACC,yBAAKh+B,UAAW4D,EAAQ+3B,6BACtB,kBAAC53B,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQg4B,0BAA5C,0BAGA,kBAAC73B,EAAA,EAAD,CAAY/D,UAAW4D,EAAQk4B,wBAC5BsC,GAEH,kBAACr6B,EAAA,EAAD,CAAY/D,UAAW4D,EAAQm4B,4BAA/B,uEAGA,kBAAC/qB,GAAA,EAAD,CACEhN,cAAa,qBACbhE,UAAW,qBACXgK,MAAO2E,GAASe,aAChBotB,WAAU,UAAC9hC,EAAM8zB,iBAAP,aAAC,EAAiB/jB,SAAS4D,GAASe,eAC9CwB,QAAS,kBAACqsB,GAAA,EAAD,MACTnsB,MAAO,+CACPO,SAAU,SAACC,EAAOkrB,GACZA,EACF9hC,EAAM6W,UACH7W,EAAM8zB,WAAa,IACjB7sB,QAAO,SAACo8B,GAAD,OAAOA,IAAM1vB,GAASe,gBAC7BpD,OAAOqC,GAASe,gBAGrByuB,EAAkBD,GAAkBljC,EAAM8zB,WAC1C9zB,EAAM6W,SAAS,aR+JxB,IAAMZ,GAAe,SAACqtB,GAC3B,OAAOlT,qBAAUkT,GAAQhqB,QACvB,wCACA,M,sBSpNJ,SAASiqB,GACP/2B,EACAg3B,GAEC,IACGC,EACAC,EAHJ9O,EACA,wDAYA,OARIA,GACF6O,EAASpb,KAAKsb,MAAQ,IAAItb,KAAK7b,GAAGo3B,UAClCF,EAASrb,KAAKsb,MAAQ,IAAItb,KAAKmb,GAAGI,YAElCH,EAASj3B,EACTk3B,EAASF,GAGPE,EAASD,GACH,EAENC,EAASD,EACJ,EAEF,EA8BT,IAAMI,GAAwB,CAC5B,CACE18B,GAAI,OACJiP,MAAO,QAET,CACEjP,GAAI,eACJiP,MAAO,gBAET,CACEjP,GAAI,eACJiP,MAAO,gBAET,CACEjP,GAAI,gBACJiP,MAAO,gBAeX,SAAS0tB,GAAkB9jC,GAA4B,IAC7C4I,EAA2C5I,EAA3C4I,QAASm7B,EAAkC/jC,EAAlC+jC,MAAOC,EAA2BhkC,EAA3BgkC,QAASC,EAAkBjkC,EAAlBikC,cAOjC,OACE,kBAACC,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,KACGN,GAAUluB,KAAI,SAACyuB,GAAD,OACb,kBAACC,GAAA,EAAD,CACEvuB,IAAKsuB,EAASj9B,GACdm9B,cAAeN,IAAYI,EAASj9B,IAAK48B,EACzC/+B,UAAW4D,EAAQwK,YAEnB,kBAACmxB,GAAA,EAAD,CACEC,OAAQR,IAAYI,EAASj9B,GAC7BwR,UAAWqrB,IAAYI,EAASj9B,GAAK48B,EAAQ,MAC7C7qB,SAlBeurB,EAkBYL,EAASj9B,GAlBG,SACjDyP,GAEAqtB,EAAcrtB,EAAO6tB,KAgBXC,cAAeC,MAEf,kBAAC57B,EAAA,EAAD,CAAYhE,QAAQ,aAAaq/B,EAAShuB,OACzC4tB,IAAYI,EAASj9B,GACpB,0BAAMnC,UAAW4D,EAAQyK,gBACZ,SAAV0wB,EAAmB,oBAAsB,oBAE1C,OA1BU,IAACU,OAmCtB,SAASG,GAAc5kC,GAK1B,IACM6kC,EAAS7kC,EAAT6kC,KACFj8B,EAAUhD,KAFf,EAGyBqF,IAAMgC,SAAgB,OAH/C,mBAGM82B,EAHN,KAGae,EAHb,OAI6B75B,IAAMgC,SAAoB,iBAJvD,mBAIM+2B,EAJN,KAIee,EAJf,OAKuB95B,IAAMgC,SAAS,GALtC,mBAKM+3B,EALN,KAKYC,EALZ,OAMqCh6B,IAAMgC,SAAS,IANpD,mBAMMi4B,EANN,KAMmBC,EANnB,KA4BKC,EAnHR,SAAuBC,EAAYC,GACjC,IAAMC,EAAiBF,EAAM1vB,KAAI,SAAC6vB,EAAI3vB,GAAL,MAAe,CAAC2vB,EAAI3vB,MAMrD,OALA0vB,EAAeE,MAAK,SAACj5B,EAAGg3B,GACtB,IAAMO,EAAQuB,EAAW94B,EAAE,GAAIg3B,EAAE,IACjC,OAAc,IAAVO,EAAoBA,EACjBv3B,EAAE,GAAKg3B,EAAE,MAEX+B,EAAe5vB,KAAI,SAAC6vB,GAAD,OAAQA,EAAG,MA4GlBE,CACjBb,EA9HJ,SACEd,EACAC,EACA2B,GAEA,MAAiB,SAAV5B,EACH,SAACv3B,EAAGg3B,GAAJ,OAAUD,GAAqB/2B,EAAEw3B,GAAUR,EAAEQ,GAAU2B,IACvD,SAACn5B,EAAGg3B,GAAJ,OAAWD,GAAqB/2B,EAAEw3B,GAAUR,EAAEQ,GAAU2B,IAwH1DC,CACE7B,EACAC,EACY,kBAAZA,GAA2C,iBAAZA,IAG7B6B,EAAW7lC,EAAM8lC,SACnBV,EAAWW,MAAMf,EAAOE,EAAaF,EAAOE,EAAcA,GAC1DE,EAEEY,EAAW,SACfC,GADe,OAGf,kBAAC5B,GAAA,EAAD,CACEr/B,UAAW,CAACihC,EAAcjhC,UAAW4D,EAAQ+J,UAAUskB,KAAK,MAE5D,kBAAC,IAAD,CAAMtxB,GAAIsgC,EAActgC,GAAIX,UAAW4D,EAAQiK,cAC7C,yBAAK7N,UAAW4D,EAAQmK,kBAAmBkzB,EAAchmC,aAI/D,OACE,yBAAK+E,UAAW4D,EAAQpH,MACtB,kBAAC0kC,GAAA,EAAD,KACE,kBAACC,GAAA,EAAD,CAAOxpB,kBAAgB,aAAalG,aAAW,kBAC7C,kBAACqtB,GAAD,CACEl7B,QAASA,EACTm7B,MAAOA,EACPC,QAASA,EACTC,cAnDgB,SACxBrtB,EACA6tB,GAGAK,EADcd,IAAYS,GAAsB,QAAVV,EACrB,OAAS,OAC1BgB,EAAWN,IA8CH2B,SAAUvB,EAAK9yB,SAEjB,kBAACs0B,GAAA,EAAD,KACGR,EAASlwB,KAAI,SAACjD,EAAKmD,GAClB,IAAMywB,EAAO,gBAAY5zB,EAAIvL,IAC7B,OACE,kBAACg9B,GAAA,EAAD,CACEn/B,UAAW4D,EAAQ8J,IACnBoD,IAAG,UAAKG,GAAavD,EAAIgE,MAAtB,YAA+Bb,GAClC0wB,UAAW,EACXv9B,cAAahJ,EAAMwmC,WAAQz1B,EAAd,UAA6B2B,EAAIgE,KAAjC,YAAyCb,IAEtD,kBAACmwB,EAAD,CAAUhhC,UAAW4D,EAAQ2J,SAAU5M,GAAI2gC,GACxC5zB,EAAIgE,MAEP,kBAACsvB,EAAD,CAAUrgC,GAAI2gC,EAASthC,UAAW4D,EAAQ4J,kBACvCE,EAAIsd,cAEP,kBAACgW,EAAD,CAAUhhC,UAAW4D,EAAQ+J,SAAUhN,GAAI2gC,GACxCtmC,EAAMymC,OACH/zB,EAAIg0B,aACJC,aAAOC,aAASl0B,EAAIg0B,cAAe,eAEzC,kBAACV,EAAD,CACErgC,GAAI2gC,EACJthC,UAAW,CAAC4D,EAAQ+J,SAAU/J,EAAQ6J,YAAYwkB,KAAK,MAEvD,yBAAKjyB,UAAW4D,EAAQsK,qBACrBlT,EAAMymC,OACH/zB,EAAIm0B,cACJF,aACEC,aAASl0B,EAAIm0B,eACb,oBAEN,kBAAC,KAAD,CACExlC,MAAM,UACN2D,UAAW4D,EAAQuK,mBAUpCnT,EAAM8lC,UACL,kBAACgB,GAAA,EAAD,CACEC,oBAAqB,CACnB1lC,MAAO,UACP2D,UAAW4D,EAAQ4K,iBAErBwzB,oBAAqB,CACnB3lC,MAAO,UACP2D,UAAW4D,EAAQ4K,iBAErByzB,mBAAoB,CAAC,GAAI,GAAI,KAC7BxhC,UAAU,MACVoiB,MAAOgd,EAAK9yB,OACZmzB,YAAaA,EACbF,KAAMA,EACNkC,aAxGiB,SAACtwB,EAAgBuwB,GACxClC,EAAQkC,IAwGFC,oBArGwB,SAC9BxwB,GAEAuuB,EAAepsB,SAASnC,EAAMkB,OAAO9I,MAAO,KAC5Ci2B,EAAQ,OAwGL,ICtRKoC,GDsRCC,GAAgB,SAACtnC,GAQ5B,IAAM4I,EAAUhD,KAEhB,GAA2B,IAAvB5F,EAAMunC,MAAMx1B,OACd,OACE,yBAAK/M,UAAW4D,EAAQ8K,SACtB,kBAAC3K,EAAA,EAAD,sDAGA,kBAAC,EAAD,CACEhE,QAAQ,WACRC,UAAW4D,EAAQ6K,aACnB9N,GAAG,UACHqD,cAAY,4BAJd,2BAYN,IAAM67B,EAAO2C,mBACX1oB,kBACE9e,EAAMunC,MAAM5xB,KAAI,SAAC8xB,GAAD,MAAW,CACzBtgC,GAAIsgC,EAAKtgC,GAAGugC,WACZhxB,KAAM+wB,EAAKpnB,MAEX2P,aAAcyX,EAAKhgC,OAEnBi/B,aAAa,GAAD,OAAKe,EAAKf,aAAV,KACZG,cAAc,GAAD,OAAKY,EAAKZ,cAAV,UAEf,SAACn0B,GAAD,OAASA,EAAIm0B,kBAIjB,OACE,yBAAK7hC,UAAW4D,EAAQ0J,gBACtB,kBAACsyB,GAAD,CACE6B,OAAQzmC,EAAMymC,OACdX,cAA0B/0B,IAAhB/Q,EAAM2nC,MAChB9C,KAAM7kC,EAAM2nC,MAAQ9C,EAAKkB,MAAM,EAAG/lC,EAAM2nC,OAAS9C,EACjD2B,MAAOxmC,EAAMwmC,QAEf,kBAAC,EAAD,CACEx9B,cAAY,yBACZhE,UAAW4D,EAAQ6K,aACnB9N,GAAI3F,EAAM4nC,YAET5nC,EAAM6nC,eAMFC,GAAY,SAAC9nC,GAInB,IAAD,EACqB6Q,GAA6C,CACpEO,cAAe,CACb7C,OAAQ,MACRD,IAAI,uBAJJ,mBACGkC,EADH,KACY+2B,EADZ,KAQE3+B,EAAUhD,KAEhB,OAAI4K,EAEA,yBAAKxL,UAAW4D,EAAQ4H,SACtB,kBAACtL,EAAA,EAAD,OAKD0M,MAAMC,QAAQ01B,GASjB,kBAAC,GAAD,CACEM,YAAa7nC,EAAM6nC,YACnBD,WAAY5nC,EAAM4nC,WAClBD,MAAO3nC,EAAM2nC,MACbJ,MAAOA,IAXP,yBAAKviC,UAAW4D,EAAQ4H,SACtB,kBAACzH,EAAA,EAAD,+CE/WKg/B,GAAoB,WAC/B,IAAMn/B,EAAUhD,KAEhB,OACE,yBAAKZ,UAAW4D,EAAQ6H,sBACtB,0BAAMzL,UAAW4D,EAAQ8H,WACvB,kBAAC3H,EAAA,EAAD,CAAYhE,QAAQ,MAApB,kBAEE,0BAAMC,UAAW4D,EAAQ+H,cAAzB,iDAKJ,kBAAC,GAAD,CAAWi3B,WAAW,QAAQC,YAAY,iBAAiBF,MAAO,MCT3DK,GAAO,WAClB,IAAMp/B,EAAUhD,IAEVqiC,EADoB78B,IAAlBQ,gBAC2B9L,EAAW+L,cAC9C,OACE,yBACE7G,UAAS,UAAK4D,EAAQQ,cAAb,YACP6+B,EAAW,GAAKr/B,EAAQ+B,cAG1B,kBAAC,EAAD,MACCs9B,EACC,kBAAC,GAAD,KACE,kBAAC,GAAD,OAGF,kBAAC,EAAD,Q,SCtBKriC,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL2jC,QAAS,CACP9mC,gBAAiBZ,QAAa,MAEhCwtB,MAAO,CACL5sB,gBAAiBmD,EAAMlE,QAAQ2tB,MAAMma,MAEvCC,YAAa,CACX7lC,QAAS,GACTgE,YAAahC,EAAM8jC,QAAQ,IAE7BhJ,QAAS,CACPj5B,QAAS,OACT6D,WAAY,c,+FHVNo9B,O,qBAAAA,I,kBAAAA,Q,KAYL,IAAMiB,GAAgB,SAACtoC,GAC5B,IAAM4I,EAAUhD,KACV2iC,EACJvoC,EAAM2H,OAAS0/B,GAAamB,QAA5B,UACO5/B,EAAQs/B,QADf,4BAEOt/B,EAAQolB,MAFf,gBAGI1L,EACJtiB,EAAM2H,OAAS0/B,GAAamB,QAC1B,kBAAC,KAAD,CAAiBxjC,UAAW4D,EAAQw/B,cAEpC,kBAAC,KAAD,CAAWpjC,UAAW4D,EAAQw/B,cAGlC,OACE,kBAACK,GAAA,EAAD,CACEC,aAAc,CACZC,SAAU,SACVC,WAAY,QAEd1iB,KAAMlmB,EAAM6oC,UACZC,iBAAkB,IAClB3iB,QAAS,kBAAMnmB,EAAMmmB,YAErB,kBAAC4iB,GAAA,EAAD,CACE/jC,UAAWujC,EACXniB,mBAAiB,kBACjBiZ,QACE,0BAAMl4B,GAAG,kBAAkBnC,UAAW4D,EAAQy2B,SAC3C/c,EACAtiB,EAAMq/B,SAGX1zB,OAAQ,CACN,kBAACqN,GAAA,EAAD,CACElD,IAAI,QACJW,aAAW,QACXpV,MAAM,UACN6X,QAAS,WACPlZ,EAAMmmB,YAGR,kBAAC,KAAD,Y,qHIzDC6iB,GAAkB1kC,aAAW,SAACC,GAAD,MAAmB,CAC3D0kC,KAAM,CACJ7nC,gBAAiBZ,OAAY,KAC7Ba,MAAOkD,EAAMlE,QAAQ2sB,OAAO9O,MAC5Bta,SAAU,GACVD,WAAY,KAEdqK,KAAM,CACJpK,SAAU,GACVa,YAAajE,OAAY,SATE8D,CAW3B+/B,MAES6E,GAAqB5kC,aAAW,SAACC,GAAD,MAAmB,CAC9D/C,KAAM,CACJ,UAAU,CAAEZ,WAAY,WAKxBQ,gBAAiBmD,EAAMlE,QAAQ2sB,OAAO9O,UAPR5Z,CAS9B6/B,MAESv+B,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL4kC,UAAW,CACTtmC,WAAY,OACZ0D,YAAa,QAEf6iC,eAAgB,CACdzmC,UAAW,OACX6G,UAAW,SACX5G,MAAO,OACPwB,cAAe,WAEjBilC,eAAgB,CACdjlC,cAAe,UACfzB,UAAW,QAEb2mC,iBAAkB,CAChB/iC,YAAa,OAEfgjC,iBAAkB,CAChB3mC,MAAO,MACPmD,SAAU,SAEZyjC,uBAAwB,CACtB5mC,MAAO,MACPmD,SAAU,SAEZ0jC,YAAa,CACX7mC,MAAO,MAET8mC,cAAe,CACb9mC,MAAO,MACP0D,SAAU,IACV0M,SAAU,SACVC,aAAc,WACdL,WAAY,UAEd+2B,iBAAkB,CAChB/mC,MAAO,MACPmD,SAAU,SAEZ6jC,kBAAmB,CACjBxoC,gBAAiBmD,EAAMlE,QAAQ2sB,OAAO9O,OAExC2rB,gBAAgB,CAAEjpC,WAAY,WAI9BkpC,kBAAmB,CACjB1oC,gBAAiBZ,OAAY,MAE/BupC,YAAa,CACXnnC,MAAO,OACPN,OAAQ,OACRO,WAAY,MACZF,UAAW,OACXqD,aAAc,YCvCb,SAASgkC,GAAsBhqC,GAAkB,IAAD,EACfiN,wBAA6B8D,GADd,mBAC9Ck5B,EAD8C,KACjCC,EADiC,OAEjBj9B,oBAAkB,GAFD,mBAE9Ck9B,EAF8C,KAElCC,EAFkC,OAGHn9B,oBAAkB,GAHf,mBAG9Co9B,EAH8C,KAG3BC,EAH2B,OAIbr9B,mBAAS,IAJI,mBAI9Cs9B,EAJ8C,KAIhCC,EAJgC,OAKPv9B,mBAASjN,EAAMyqC,eALR,mBAK9CC,EAL8C,KAK3BC,EAL2B,OAML19B,oBAAS,GANJ,mBAM9C29B,EAN8C,KAM3BC,EAN2B,OAOb59B,oBAAS,GAPI,mBAO9C69B,EAP8C,KAOhCC,EAPgC,OAQL99B,mBAAgF,CAAE+9B,SAAU,KAAM76B,QAAS,OARtG,gCASXlD,oBAAkB,IATP,mBAS9Cg+B,EAT8C,KAS/BC,EAT+B,KAU/CtiC,EAAUhD,KAVqC,EAWvBqH,oBAAS,GAXc,mBAW9CuD,EAX8C,aAYXvD,mBAA6B,OAZlB,mBAY9Ck+B,EAZ8C,KAY/BC,EAZ+B,KAc/CC,GAAqB,SAACC,GACtBA,GACFF,EACE,yBAAKhmC,MAAO,CAAEgB,QAAS,OAAQyD,eAAgB,SAAUI,WAAY,SAAU3H,OAAQ,SAErF,kBAAC4C,EAAA,EAAD,SA4BFqmC,GAAyB,WAC7B,IACMC,EADoBd,EAAkB/0B,KAAI,SAAA81B,GAAC,MAAK,CAAEC,GAAID,EAAEtkC,GAAIwkC,KAAMF,EAAE9iB,SACjCkW,QAAO,SAACC,EAAkD8M,GAEjG,OADA9M,EAAI8M,EAAKD,MAAQ7M,EAAI8M,EAAKD,MAAT,uBAAqB7M,EAAI8M,EAAKD,OAA9B,CAAqCC,IAAQ,CAACA,GACxD9M,IACN,IAEG+M,EAAa75B,OAAOpK,OAAO4jC,GAAgBvkC,QAAO,SAAA6kC,GAAQ,OAAIA,EAAS/5B,OAAS,KAEtF,GAAI85B,EAAW95B,OAAS,EAAG,CACzB,IACMg6B,EADyBF,EAAWhN,QAAO,SAACC,EAAKkN,GAAN,OAAclN,EAAIxtB,OAAO06B,KAAM,IAClCr2B,KAAI,SAAAqa,GAChD,IAAMic,EAAWvB,EAAkB/6B,MAAK,SAAA87B,GAAC,OAAIA,EAAEtkC,KAAO6oB,EAAa0b,MACnE,OAAOO,EAAWA,EAASv1B,KAAO,MAEpC8zB,EAAgB,mDAAD,OAAoDuB,EAAe9U,KAAK,MAAxE,oCAEfuT,EAAgB,uDAElBF,GAAqB,IAmBjB4B,GAAe,SAAfA,EAAgB,GAAgK,IAAD,IAA7JC,EAA6J,EAA7JA,cAA6J,IAA9IC,sBAA8I,MAA7H,GAA6H,MAAzHC,uBAAyH,SAC7KC,GAAsB,UAAAH,EAAa,oBAAb,eAA+Bp6B,SAAU,EAC/Dw6B,GAAuB,UAAAH,EAAc,oBAAd,eAAgCr6B,SAAU,EAEjEy6B,EAAsC,OADpB7xB,KAAKlC,IAAI6zB,EAAqBC,GAEhDE,EAA0BN,EAAa,YAAkBA,EAAa,YAAgBhT,MAAM,OAAOpnB,OAAS,EAC5G26B,EAA2BN,EAAc,YAAkBA,EAAc,YAAgBjT,MAAM,OAAOpnB,OAAS,EAE/G46B,EAAgD,KAD1BhyB,KAAKlC,IAAIg0B,EAAyBC,GAExDE,EAAuBT,EAAa,aAAmBA,EAAa,aAAiBp6B,OAAS,EAC9F86B,EAAwBT,EAAc,aAAmBA,EAAc,aAAiBr6B,OAAS,EAEjG+6B,EAAqC,KADlBnyB,KAAKlC,IAAIm0B,EAAsBC,GAOxD,OACE,kBAAC1G,GAAA,EAAD,KACE,kBAACE,GAAA,EAAD,KACGr0B,OAAOC,QAAQk6B,GAAex2B,KAAI,WAAeE,GAAW,IAAD,mBAAvBC,EAAuB,KAAlB9G,EAAkB,KAC1D,GAAY,OAAR8G,GAAwB,qBAARA,GAAsC,UAARA,GAA2B,eAARA,EACnE,OAAO,KAGT,IAAMi3B,EAAej3B,EAAIwD,QAAQ,WAAY,OAAO8jB,OAC9C4P,EAAiBD,EAAa3T,OAAO,GAAG6T,cAAgBF,EAAahH,MAAM,GAC3EmH,EAAgBd,EAAet2B,GACjCq3B,GAAa,EAQjB,GAHEA,IAHEd,GAA4B,SAARv2B,GAA0B,cAARA,UAGT/E,IAAlBm8B,GAA+BA,IAAkBl+B,GAG3C,kBAAVA,GAAgC,OAAVA,EAC/B,MAAY,iBAAR8G,EAEA,kBAAC,IAAMs3B,SAAP,CAAgBt3B,IAAKD,GACnB,kBAACsuB,GAAA,EAAD,CAAU/+B,MAAO,CAAE9C,OAAQkqC,IACzB,kBAACnI,GAAA,EAAD,CAAWj/B,MAAO,CAAEwN,WAAY,WAAY,2BAAIo6B,EAAJ,MAC5C,kBAAC3I,GAAA,EAAD,CAAWj/B,MAAO,CAAEmF,cAAe,QAC/ByE,EAAgB2G,KAAI,SAAC6E,EAAa6yB,GAClC,IA/BS9gB,EAAqB7V,EA+BxB42B,GA/BG/gB,EA+BoC2gB,EA/Bfx2B,EA+B8B8D,EAAO9D,KA9BhF6V,EAAa5c,MAAK,SAAA6K,GAAM,OAAIA,EAAO9D,OAASA,MA+BzB62B,OAAsCx8B,IAAnBu8B,GAAgC3gC,KAAKC,UAAU0gC,KAAoB3gC,KAAKC,UAAU4N,GAC3G,OACE,kBAAC2pB,GAAA,EAAD,CACEn/B,UAAU,iBACV8Q,IAAKu3B,GAEL,kBAAChJ,GAAA,EAAD,CAAWj/B,MAAOmoC,EAAmB,CAAElsC,MAAO,OAAU,IACtD,kBAAC6qC,EAAD,CACEC,cAAe3xB,EACf4xB,eAAgBkB,GAAkB,GAClCjB,iBAAiB,YAYjC,kBAAClI,GAAA,EAAD,CAAUruB,IAAKD,GACb,kBAACwuB,GAAA,EAAD,CAAWj/B,MAAO,CAAEwN,WAAY,WAAY,2BAAIo6B,EAAJ,MAC5C,kBAAC3I,GAAA,EAAD,KAAa,kBAAC6H,EAAD,CAAcC,cAAen9B,EAAOo9B,eAAgBc,MAKvE,GAAY,gBAARp3B,EACF,OACE,kBAACquB,GAAA,EAAD,CAAUruB,IAAKD,EAAOzQ,MAAO,CAAE9C,OAAQqqC,IACrC,kBAACtI,GAAA,EAAD,CAAWj/B,MAAO,CAAEwN,WAAY,WAAY,2BAAIo6B,EAAJ,MAC5C,kBAAC3I,GAAA,EAAD,CAAWj/B,MAAK,eAAO+nC,EAAa,CAAE9rC,MAAO,MAAOuR,WAAY,UAAa,CAAEA,WAAY,UAA3E,CAAuF46B,SAAU,aAAc3e,UAAW,eACtH,kBAAV7f,GAAuC,kBAAVA,EAAqBA,EAAQ,YAInE,GAAY,cAAR8G,EACT,OACE,kBAACquB,GAAA,EAAD,CAAUruB,IAAKD,GACb,kBAACwuB,GAAA,EAAD,CAAWj/B,MAAO,CAAEwN,WAAY,WAAY,2BAAIo6B,EAAJ,MAC5C,kBAAC3I,GAAA,EAAD,CAAWj/B,MAAO+nC,EAAa,CAAE9rC,MAAO,OAAU,IAC/C2N,EAAQ,MAAQ,OAIlB,GAAY,cAAR8G,EAAqB,CAC9B,IAAM23B,EAA+D,oBAA7C,IAAIplB,KAAKrZ,GAAiB0+B,eAAwC,GAAK,IAAIrlB,KAAKrZ,GAAiB0+B,eACzH,OACE,kBAACvJ,GAAA,EAAD,CAAUruB,IAAKD,GACb,kBAACwuB,GAAA,EAAD,CAAWj/B,MAAO,CAAEwN,WAAY,WAAY,2BAAIo6B,EAAJ,MAC5C,kBAAC3I,GAAA,EAAD,KACGoJ,IAIF,MAAY,iBAAR33B,EAEP,kBAACquB,GAAA,EAAD,CAAUruB,IAAKD,EAAOzQ,MAAO0nC,GAAmB,GAAK,CAAExqC,OAAQwqC,GAAoB,CAAExqC,OAAQ,SAC3F,kBAAC+hC,GAAA,EAAD,CAAWj/B,MAAO,CAAEwN,WAAY,WAAY,2BAAIo6B,EAAJ,MAC5C,kBAAC3I,GAAA,EAAD,CAAWj/B,MAAK,eAAO+nC,EAAa,CAAE9rC,MAAO,MAAOuR,WAAY,UAAa,CAAEA,WAAY,UAA3E,CAAuF46B,SAAU,aAAc3e,UAAW,eACtH,kBAAV7f,GAAuC,kBAAVA,EAAqBA,EAAQ,YAMtE,kBAACm1B,GAAA,EAAD,CAAUruB,IAAKD,GACb,kBAACwuB,GAAA,EAAD,CAAWj/B,MAAO,CAAEwN,WAAY,WAAY,2BAAIo6B,EAAJ,MAC5C,kBAAC3I,GAAA,EAAD,CAAWj/B,MAAO+nC,EAAa,CAAE9rC,MAAO,MAAOuR,WAAY,UAAa,CAAEA,WAAY,WAClE,kBAAV5D,EAAqBA,EAAMmqB,MAAM,KAAKlC,KAAK,KAAyB,kBAAVjoB,EAAqBA,EAAQ,kBAY7G2+B,GAAsB,SAAOxmC,GAAP,eAAAqF,EAAAC,OAAA,oDACtBtF,EADsB,uBAExB+jC,GAAiB,GACjBG,IAAmB,GAHK,WAAA7+B,EAAA,MAINxM,EAAM4tC,mBAAmBzmC,IAJnB,QAIlB0mC,EAJkB,QAKhBC,yBAA2BD,EAAIE,uBACrC3C,EACE,kBAAC4C,GAAA,EAAD,CAAMvW,WAAS,EAAC4Q,QAAS,EAAG1vB,UAAU,MAAMs1B,QAAQ,gBAAgBhkC,WAAW,UAAU7E,MAAO,CAAExC,MAAO,OAAQ2Q,OAAQ,WACvH,kBAACy6B,GAAA,EAAD,CAAME,MAAI,EAACC,GAAI,GAAIC,GAAI,EAAGhpC,MAAO,CAAEopB,KAAM,EAAGhrB,QAAS,MAAOL,UAAW,aAAc6P,SAAU,SAC7F,kBAACg7B,GAAA,EAAD,CAAMvW,WAAS,EAAC9e,UAAU,UACvBk1B,EAAIC,wBAAwBO,WAC3B,kBAACtlC,EAAA,EAAD,CAAYtD,UAAU,MAAMV,QAAQ,SAApC,eAAyD8oC,EAAIC,wBAAwBO,WACtFR,EAAIC,wBAAwBQ,WAC3B,kBAACvlC,EAAA,EAAD,CAAYtD,UAAU,MAAMV,QAAQ,SAApC,cACc,IAAIsjB,KAAKwlB,EAAIC,wBAAwBQ,WAAW9xB,mBAGlE,kBAACzT,EAAA,EAAD,CAAYhE,QAAQ,KAAKK,MAAO,CAAEzB,WAAY,SAA9C,kBACCkqC,EAAIE,uBAAuBQ,mBAAqB,kBAACrC,GAAD,CAAcC,cAAe0B,EAAIE,uBAAuBQ,kBAAmBnC,eAAgByB,EAAIC,wBAAwBS,qBAE1K,kBAACP,GAAA,EAAD,CAAME,MAAI,EAACC,GAAI,GAAIC,GAAI,EAAGhpC,MAAO,CAAEopB,KAAM,EAAGhrB,QAAS,MAAOL,UAAW,aAAc6P,SAAU,SAC7F,kBAACg7B,GAAA,EAAD,CAAMvW,WAAS,EAAC9e,UAAU,UACxB,kBAAC5P,EAAA,EAAD,CAAYtD,UAAU,MAAMV,QAAQ,SAApC,QACA,kBAACgE,EAAA,EAAD,CAAYtD,UAAU,MAAMV,QAAQ,SAApC,SAEF,kBAACgE,EAAA,EAAD,CAAYhE,QAAQ,KAAKK,MAAO,CAAEzB,WAAY,SAA9C,mBACCkqC,EAAIC,wBAAwBS,mBAAqB,kBAACrC,GAAD,CAAcC,cAAe0B,EAAIC,wBAAwBS,kBAAmBnC,eAAgByB,EAAIE,uBAAuBQ,uBAK/KnD,EAAiB,kBAACriC,EAAA,EAAD,CAAYhE,QAAQ,MAApB,8BAEnBsmC,IAAmB,GAjCK,sCAoC5B,OACE,kBAAC3hC,EAAA,EAAD,CAAOjE,UAAU,MAAM+oC,QAAQ,EAAOC,UAAW,EAAGzpC,UAAW4D,EAAQugC,WACrE,kBAAC,GAAD,CACEjjB,KAAMikB,EACNhkB,QAAS,WAAQikB,GAAc,GAAQF,OAAen5B,IACtD6V,QAxLgB,oBAAApa,EAAAC,OAAA,oDAChBw9B,EADgB,kCAAAz9B,EAAA,MAEZxM,EAAM0uC,eAAezE,IAFT,OAGlBC,OAAen5B,GAHG,OAKpBq5B,GAAc,GALM,sCAyLhBvjB,gBAAgB,WAChBP,WAAW,iBACXG,aAAa,0EAEf,kBAAC,GAAD,CACEP,KAAMmkB,EACNlkB,QAAS,WAAQmkB,GAAqB,GAAQK,EAAiB,KAC/D/jB,QAAS,WACP0jB,GAAqB,GAzLA,EAAA99B,EAAAC,OAAA,kEAAAD,EAAA,MACrBxM,EAAM2uC,wBAAwBjE,IADT,OAE3BJ,GAAqB,GACrBO,GAAmB,GACnBE,GAAgB,GAJW,sCA4LvBlkB,gBAAgB,WAChBP,WAAW,eACXG,aAAc8jB,IAEhB,kBAAC,GAAD,CACErkB,KAAM+kB,EACN9kB,QAAS,kBAAM+kB,GAAiB,IAChC5kB,WAAW,2BACXG,aACEjW,EACE,kBAACtL,EAAA,EAAD,MACAimC,IAGN,kBAAC,GAAD,CACExjC,KAAM0/B,GAAamB,QACnBnJ,QAAQ,6BACRwJ,UAAWiC,EACX3kB,QAAS,kBAAM4kB,GAAgB,MAEhC/qC,EAAMwQ,SAAW,kBAACtL,EAAA,EAAD,CAAkBF,UAAW4D,EAAQmhC,eACrD/pC,EAAMwQ,SACNxQ,EAAMyqC,eACNzqC,EAAMyqC,cAAc14B,OAAS,IAC5B/R,EAAMwQ,SAzQT,yBAAKpL,MAAO,CAAE5B,QAAS,OAAQgG,UAAW,WACxC,kBAACT,EAAA,EAAD,CAAYhE,QAAQ,MAApB,0BACA,kBAAC,EAAD,CACEY,GAAG,0BACHX,UAAW4D,EAAQygC,gBAEnB,kBAAC,KAAD,CAASrkC,UAAW4D,EAAQ0gC,mBAJ9B,0BAyQAtpC,EAAMwQ,SAAWxQ,EAAMyqC,eAAiBzqC,EAAMyqC,cAAc14B,OAAS,GACrE,kBAACo0B,GAAA,EAAD,CACE/gC,MAAO,CAAEwpC,YAAa,QACtB5pC,UAAU,sBACV2X,kBAAgB,aAChBxX,KAAK,UAEL,kBAAC++B,GAAA,EAAD,KACE,kBAACgF,GAAD,KACE,kBAACF,GAAD,CAAiBhkC,UAAW4D,EAAQ2gC,kBAApC,WAGA,kBAACP,GAAD,CAAiBhkC,UAAW4D,EAAQ4gC,wBAApC,WAGA,kBAACR,GAAD,CAAiBhkC,UAAW4D,EAAQ6gC,aAApC,MAGA,kBAACT,GAAD,CAAiBhkC,UAAW4D,EAAQ8gC,eAApC,QAGA,kBAACV,GAAD,CAAiBhkC,UAAW4D,EAAQ+gC,kBAApC,WAGA,kBAACX,GAAD,CAAiBhkC,UAAW4D,EAAQ+gC,kBAClC,kBAAC,EAAD,CACE1wB,UAAW2xB,EACX1xB,QAAS,oBAAA1M,EAAAC,OAAA,gDACP8+B,KADO,uCAFX,eAWN,kBAAClF,GAAA,EAAD,KACGrmC,EAAMyqC,cAAc90B,KAAI,SAACqa,EAA4Bna,GAA7B,OACvB,kBAACqzB,GAAD,CACEpzB,IAAKka,EAAa7oB,GAClBnC,WAxQSmC,EAyQO6oB,EAAa7oB,GAzQIA,IAAO8iC,EAyQLrhC,EAAQihC,gBAAkBjhC,EAAQghC,kBAAoB,KAAmC,GAA3B5Z,EAAatH,WAAsB9f,EAAQkhC,kBAAoBlhC,EAAQghC,oBAExK5gC,cAAA,2BAAiCiN,GAC/B+Z,EAAatZ,QAGf,kBAACsyB,GAAD,CAAiB5jC,MAAO,CAAEgB,QAAS,OAAQ6D,WAAY,SAAUJ,eAAgB,WAC/E,kBAACglC,GAAA,EAAD,CAASxuB,MAAM,QACb,kBAACrH,GAAA,EAAD,CACEvT,UAAWC,IACXC,GAAE,kCAA6BqqB,EAAa7oB,IAC5C6B,cAAA,UAAgBiN,GAAa+Z,EAAatZ,MAA1C,UAEA,kBAAC,KAAD,QAGJ,kBAACm4B,GAAA,EAAD,CAASxuB,MAAM,UACb,kBAACrH,GAAA,EAAD,CACEE,QAAS,oBAAA1M,EAAAC,OAAA,gDACPy9B,EAAela,EAAa7oB,IAC5BijC,GAAc,GAFP,sCAITphC,cAAA,UAAgBiN,GAAa+Z,EAAatZ,MAA1C,YAEA,kBAAC,KAAD,QAGJ,kBAACm4B,GAAA,EAAD,CAASxuB,MAAM,oBACb,kBAACrH,GAAA,EAAD,CAEEE,QAAS,oBAAA1M,EAAAC,OAAA,gDACPkhC,GAAoB3d,EAAa7oB,IAD1B,uCAKT,kBAAC,KAAD,MAPF,OAWJ,kBAAC6hC,GAAD,KACE,kBAAC6F,GAAA,EAAD,CAASxuB,MAAM,2CACb,kBAACkiB,GAAA,EAAD,CACET,QAAoC,GAA3B9R,EAAatH,WACtB/R,SAAU,oBAAAnK,EAAAC,OAAA,kEAAAD,EAAA,MACFxM,EAAM8uC,2BAA2B9e,EAAa7oB,KAD5C,0CAMhB,kBAAC6hC,GAAD,KAAkBhZ,EAAa7oB,IAC/B,kBAAC6hC,GAAD,CAAiBhkC,UAAW4D,EAAQ8gC,eACjC1Z,EAAatZ,MAEhB,kBAACsyB,GAAD,CAAiBlzB,IAAKD,EAAO7Q,UAAW4D,EAAQ+gC,kBAC9C,kBAAC1uB,GAAA,EAAD,CACEjM,MAAOghB,EAAarH,KACpBhS,SAAU,SAACC,GAAD,OA/VP,SAACA,EAA8Cf,GAClE,IAAIk5B,EAAoB,aAAO/uC,EAAMyqC,eACrCsE,EAAqBl5B,GAAO8S,KAAO/R,EAAMkB,OAAO9I,MAChD27B,EAAiBoE,GACjBlE,GAAmB,GA2VkBmE,CAAap4B,EAAOf,KAExC7V,EAAMyqC,cAAc90B,KAAI,SAACu4B,EAAMr4B,GAAP,OACvB,kBAACqF,GAAA,EAAD,CAAUpF,IAAKD,EAAO7G,MAAO6G,EAAQ,GAClCA,EAAQ,QAKjB,kBAACmzB,GAAD,CAAiBhkC,UAAW4D,EAAQ8gC,iBA1U5B,IAACviC,MA+Uf,kBAAC8nC,GAAA,EAAD,KACE,kBAAC9K,GAAA,EAAD,KACE,kBAAC6E,GAAD,CACEkG,QAAS,EACTC,MAAM,QACNnqC,UAAW4D,EAAQghC,mBAHrB,mBAKe5pC,EAAMyqC,cAAc14B,aCnc1C,IAAMq9B,GAAY,WACvB,OACE,yBAAKhqC,MAAO,CAAEzC,UAAW,QAAS6G,UAAW,WAC3C,kBAACT,EAAA,EAAD,CAAYhE,QAAQ,KAAKK,MAAO,CAAEY,aAAc,SAAhD,+BAGA,kBAAC,EAAD,CAAiBL,GAAG,KAApB,uBCDC,SAAS0pC,KAAqB,IAC3B/hC,EAAyB9B,IAAzB8B,qBAD0B,EAEgBL,oBAAS,GAFzB,mBAE3B8Z,EAF2B,KAERC,EAFQ,OAGM/Z,mBAAS,IAHf,mBAG3Bs9B,EAH2B,aAIAt9B,oBAAkB,IAJlB,mBAI3BqiC,EAJ2B,KAIhBC,EAJgB,OAU9B1+B,GAAwC,CAC1CO,cAAe,CACb7C,OAAQ,MACRD,IAAI,uBAb0B,mBAOhCkhC,EAPgC,KAQhC/E,EARgC,KAShCgF,EATgC,KA0DlC,IAAKD,QAA0Cz+B,IAAlB05B,EAC3B,OAAO,kBAAC,GAAD,MAoBT,OACE,6BACE,kBAAC,GAAD,CACEvkB,KAAMa,EACNZ,QAAS,kBAAMa,GAAqB,IACpCJ,QAAS,WACPI,GAAqB,IAEvBV,WAAW,eACXG,aAAc8jB,EACd1jB,gBAAgB,aAElB,kBAAC,GAAD,CACElf,KAAM0/B,GAAa97B,MACnB8zB,QAAQ,mDACRwJ,UAAWyG,EACXnpB,QAAS,kBAAMopB,GAAa,MAE9B,kBAACvF,GAAD,CACES,cAAeA,GAAiB,GAChCiE,eAlFqB,SAAOvnC,GAAP,SAAAqF,EAAAC,OAAA,kEAAAD,EAAA,MACFc,EAAqB,CAC1CgB,IAAI,oBAAD,OAAsBnH,GACzBoH,OAAQ,YAHe,cAKZT,OAAS,IACpB2hC,IAEAF,GAAa,GARU,sCAmFrB/+B,QAASg/B,EACTV,2BAxE2B,SAAO3nC,GAAP,SAAAqF,EAAAC,OAAA,kEAAAD,EAAA,MACRc,EAAqB,CAC1CgB,IAAI,oBAAD,OAAsBnH,GACzBoH,OAAQ,WAHqB,cAMlBT,OAAS,IACpB2hC,IAEAF,GAAa,GATgB,sCAyE3BZ,wBA5D6B,SAAOjE,GAAP,iBAAAl+B,EAAAC,OAAA,uDAC3BijC,EAAoBhF,EAAkB/0B,KAAI,SAAA81B,GAAC,MAAK,CAAEC,GAAID,EAAEtkC,GAAIwkC,KAAMF,EAAE9iB,SADzC,WAAAnc,EAAA,MAEVc,EAAqB,CAC1CgB,IAAI,8BACJC,OAAQ,MACR7B,KAAMgjC,KALyB,QAE3BnjC,EAF2B,QAQpBuB,OAAS,IACpB2hC,KAEAE,QAAQ3hB,MAAM,yCAA0CzhB,GACxDgjC,GAAa,IAZkB,sCA6D7B3B,mBA1CyB,SAAOzmC,GAAP,qBAAAqF,EAAAC,OAAA,kEAAAD,EAAA,MACNc,EAAqB,CAC1CgB,IAAI,yBAAD,OAA2BnH,GAC9BoH,OAAQ,SAHmB,YACvBhC,EADuB,QAMhBwB,KAAM6D,MAAMC,QAAQtF,EAASyB,MANb,wBAOrB4hC,EAA0BrjC,EAASyB,KACnC+/B,EAAyB6B,EAAK,GAC9B9B,EAA0B8B,EAAK,GATV,kBAWpB,CAAE7B,yBAAwBD,4BAXN,cAa3B6B,QAAQ3hB,MAAM,mCAAoCzhB,GAClDgjC,GAAa,GACP,IAAIhkC,MAAM,mCAfW,0CCtD1B,IAAMskC,GAAe,SAAC7vC,GAAe,IAClCsN,EAAyB9B,IAAzB8B,qBADiC,EAEXL,oBAAkB,GAFP,mBAElCuD,EAFkC,KAEzBs/B,EAFyB,OAGf7iC,oBAAkB,GAHH,mBAGlC+gB,EAHkC,KAG3B+hB,EAH2B,KAyBnCC,EAAU,SAACtjC,GACf,IAAIujC,EAAM,kIAWV,OAVAvjC,EAAKwF,SAAQ,SAACQ,GACZu9B,GAAG,UAAOv9B,EAAIrG,MAAX,KACH4jC,GAAG,UAAOv9B,EAAIw9B,UAAX,KACHD,GAAG,UAAOv9B,EAAIy9B,SAAX,KACHF,GAAG,UAAOv9B,EAAI09B,iBAAX,KACHH,GAAG,WAAQv9B,EAAI29B,iBAAZ,MACHJ,GAAG,UAAOv9B,EAAI49B,kBAAX,KACHL,GAAG,UAAOv9B,EAAI69B,YAAX,KACHN,GAAG,UAAOv9B,EAAI89B,mBAAX,SAEEP,GAET,OACE,oCACE,kBAAC,EAAD,CAAa/2B,QApCM,8BAAA1M,EAAAC,OAAA,uDACrBqjC,GAAW,GACP9hB,GAAO+hB,GAAS,GAFC,WAAAvjC,EAAA,MAGAc,EAAqB,CACxCgB,IAAK,wBACLC,OAAQ,SALW,QAGf9G,EAHe,QAOVqG,OAAS,KACZpB,EAAOsjC,EAAQvoC,EAAOuG,OACtByiC,EAAgBlW,SAASmW,cAAc,MAC/BngB,KAAO,+BAAiCogB,UAAUjkC,GAChE+jC,EAAc34B,OAAS,SACvB24B,EAAcG,SAAW,8BACzBH,EAAcI,SAEdd,GAAS,GAEXD,GAAW,GAjBU,sCAoCmBjrC,eAAgB2L,EAASyI,SAAUzI,EAASxH,cAAY,yBAA9F,iBAIEglB,GACE,kBAAC,GAAD,CACErmB,KAAM0/B,GAAa97B,MACnB8zB,QAAS,sDACTlZ,QAAS,kBAAM4pB,GAAS,IACxBlH,UAAW7a,MCnDjBpoB,GAAYC,aAAW,SAACtB,GAC5B,MAAO,CACLof,OAAQ,CACNngB,QAAS,OACTyG,WAAY,UAEd6mC,SAAU,CACRjuC,WAAY,QAEdkuC,aAAc,CACZxqC,YAAa,YAKZ,SAASyqC,GAAiBhxC,GAC/B,IAAM4I,EAAUhD,KAChB,OACE,kBAAC,GAAD,KACE,yBAAKR,MAAO,CAAEY,aAAc,SAC1B,kBAACgoC,GAAA,EAAD,CACEvW,WAAS,EACT9e,UAAU,MACVs1B,QAAQ,gBACRhkC,WAAW,aACXjF,UAAW4D,EAAQ+a,QAEnB,kBAAC5a,EAAA,EAAD,CAAY/D,UAAW4D,EAAQkoC,SAAU/rC,QAAQ,MAAjD,qBAGA,yBAAKK,MAAO,CAAEmB,YAAa,SACzB,kBAACsoC,GAAA,EAAD,CAASxuB,MAAM,UAAU4wB,UAAU,QACjC,kBAAC,IAAD,CACEtrC,GAAG,0BACHtE,MAAM,YACN2D,UAAW4D,EAAQmoC,cAEnB,kBAAC/3B,GAAA,EAAD,KACE,kBAAC,KAAD,SAIN,kBAAC,GAAD,QAGJ,kBAACq2B,GAAD,Q,oGCzDKzpC,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL2jC,QAAS,CACP9mC,gBAAiBZ,QAAa,MAEhCwtB,MAAO,CACL5sB,gBAAiBmD,EAAMlE,QAAQ2tB,MAAMma,MAEvC7lB,KAAM,CACJ1e,SAAU,IAEZwkC,YAAa,CACX7lC,QAAS,GACTgE,YAAahC,EAAM8jC,QAAQ,IAE7BhJ,QAAS,CACPj5B,QAAS,OACT6D,WAAY,UAEdinC,OAAQ,CACNvuC,UAAW,QAEbwuC,WAAY,CACVnrC,aAAc,OACdpD,MAAO,QAETwuC,QAAS,CACP/rC,SAAU,WACVzC,MAAO,eAETihB,eAAgB,CACdxiB,MAAOb,OAAY,KACnB6E,SAAU,WACVC,IAAK,MACLC,KAAM,MACN5C,WAAY,GACZE,YAAa,IAEfwuC,KAAM,CACJzuC,MAAO,OACPoD,aAAc,QAEhB2d,OAAQ,CACNra,cAAe,QAEjBykB,UAAW,CACT1sB,MAAO,UACPuC,SAAU,UACVoC,aAAc,OAEhBsrC,eAAgB,CACdjwC,MAAO,WAETkwC,qBAAsB,CACpB5uC,UAAW,OACXyD,QAAS,gBAEXorC,YAAa,CACXjrC,YAAa,QAEf2Q,UAAW,CACTrU,WAAY,MACZoH,WAAY,WACZ5I,MAAOkD,EAAMlE,QAAQK,KAAKyW,e,kBCF1Bs6B,GACJ,oEAEIC,GAAkB,SAACj5B,GAAD,oCACCA,EADD,gBAElBk5B,GAAqB,SAACn5B,EAAaC,EAAam5B,GAA3B,gBAEvBA,EAAS,UAAMA,EAAN,WAA2B,QAFb,wCAGOp5B,EAHP,eAGiBC,IAItCo5B,GAAoB,CAAC,YAAa,YAAa,aAAc,aAItDC,GAAqBC,OAAaC,MAAM,CACnDxpB,aAAcupB,OAEXE,SATkB,kBAUlB3jC,IACC,0FAEJ4jC,UAAWH,OAERI,KACC,WAHO,yCATY,EASZ,QAKP,SAACnjC,GAAD,YACY+B,IAAV/B,GACiB,IAAjBA,EAAM+C,QACN/C,EAAM,GAAG7J,MAAQitC,WAEpBD,KACC,WAXO,wDAY0CN,GAAkBl8B,KACjE,SAACgxB,GAAD,OAAYA,EAAOrtB,QAAQ,SAAU,QACrC2d,KAAK,QACP,SAACjoB,GAAD,YACe+B,IAAb/B,EAAM,IACW,IAAjBA,EAAM+C,QACN8/B,GAAkB9hC,SAASf,EAAM,GAAGrH,SAE1C4kB,aAAcwlB,OAAYv5B,IAAI,EAAG,0BACjC9B,KAAMq7B,OAAaE,SAlCE,kBAkCuBx5B,IAAI,IAAKi5B,GAAgB,MACrEv0B,YAAa40B,OAEVE,SArCkB,kBAsClBx5B,IAAI,IAAQi5B,GAAgB,MAC/B7lB,sBAAuBkmB,OAAaC,MAAM,CACxCl9B,aAAci9B,OAEXM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,MAC7Bl5B,IAAI,IAAKk5B,GAAmB,EAAG,MAC/BM,SA7CgB,kBA8CnBl9B,YAAag9B,OAEVM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,MAC7Bl5B,IAAI,IAAKk5B,GAAmB,EAAG,MAC/BM,SAnDgB,kBAoDnBj9B,kBAAmB+8B,OAEhBM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,MAC7Bl5B,IAAI,IAAKk5B,GAAmB,EAAG,MAC/BM,SAzDgB,kBA0DnBh9B,MAAO88B,OAEJM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,MAC7Bl5B,IAAI,IAAKk5B,GAAmB,EAAG,MAC/BM,SA/DgB,kBAgEnB/8B,SAAU68B,OAEPM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,MAC7Bl5B,IAAI,IAAKk5B,GAAmB,EAAG,MAC/BM,SArEgB,oBAuErBnmB,oBAAqBimB,OAAaC,MAAM,CACtCjmB,cAAegmB,OAEZM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,EAAG,YAChCl5B,IAAI,EAAGk5B,GAAmB,EAAG,EAAG,QAChCM,SA7EgB,kBA8EhBE,KACC,sBACA,4CACA,SAAUnjC,GAER,OAAOA,GADYsjC,KAAKC,OAAOvmB,cAIrCA,WAAY+lB,OAETM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,EAAG,YAChCl5B,IAAI,EAAGk5B,GAAmB,EAAG,EAAG,YAChCM,SA3FgB,kBA4FnBhmB,aAAc8lB,OAEXM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,EAAG,YAChCl5B,IAAI,EAAGk5B,GAAmB,EAAG,EAAG,YAChCM,SAjGgB,kBAkGhBE,KACC,qBACA,4CACA,SAAUnjC,GAER,OAAOA,GADYsjC,KAAKC,OAAOrmB,aAIrCA,UAAW6lB,OAERM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,EAAG,YAChCl5B,IAAI,EAAGk5B,GAAmB,EAAG,EAAG,YAChCM,SA/GgB,kBAgHnB9lB,WAAY4lB,OAETM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,EAAG,YAChCl5B,IAAI,EAAGk5B,GAAmB,EAAG,EAAG,YAChCM,SArHgB,kBAsHhBE,KACC,mBACA,4CACA,SAAUnjC,GAER,OAAOA,GADYsjC,KAAKC,OAAOnmB,WAIrCA,QAAS2lB,OAENM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,EAAG,YAChCl5B,IAAI,EAAGk5B,GAAmB,EAAG,EAAG,YAChCM,SAnIgB,kBAoInB5lB,cAAe0lB,OAEZM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,EAAG,YAChCl5B,IAAI,EAAGk5B,GAAmB,EAAG,EAAG,YAChCM,SAzIgB,kBA0IhBE,KACC,sBACA,4CACA,SAAUnjC,GAER,OAAOA,GADYsjC,KAAKC,OAAOjmB,cAIrCA,WAAYylB,OAETM,UAAU,kBACV75B,IAAI,EAAGm5B,GAAmB,EAAG,EAAG,YAChCl5B,IAAI,EAAGk5B,GAAmB,EAAG,EAAG,YAChCM,SAvJgB,sBA2JhB,SAASO,GAAqBxyC,GAAkB,IAAD,MAC9CgwB,EAAehwB,EAAMgwB,cAAgBzH,GADS,EAehDkqB,aAA8B,CAChCC,iBAAkBZ,GAClBa,eAAgB,WAChBC,cAAc,eAAM5iB,EAAP,CAAqBkiB,eAAWnhC,MAf7CsmB,EAHkD,EAGlDA,SACAwb,EAJkD,EAIlDA,aACAC,EALkD,EAKlDA,OACA58B,EANkD,EAMlDA,QACAW,EAPkD,EAOlDA,SACAk8B,EARkD,EAQlDA,MACAC,EATkD,EASlDA,WACAjD,EAVkD,EAUlDA,SACAkD,EAXkD,EAWlDA,UACAC,EAZkD,EAYlDA,UACAC,EAbkD,EAalDA,MACAC,EAdkD,EAclDA,kBAdkD,EAqB5BnmC,oBAAiB,UAAAjN,EAAMgwB,oBAAN,eAAoBtZ,OAAQ,IArBjB,mBAqB7CA,EArB6C,KAqBvC28B,EArBuC,KAsB9CC,EAAeroC,IAAMqF,YACzBijC,KAAEtV,SAASoV,EAAS,IAAM,CAAEnV,UAAU,IACtC,IAxBkD,EA2BdjxB,oBACpC,UAAAjN,EAAMgwB,oBAAN,eAAoB7S,cAAe,IA5Be,mBA2B7CA,EA3B6C,KA2BhCq2B,EA3BgC,KA8B9CC,EAAsBxoC,IAAMqF,YAChCijC,KAAEtV,SAASuV,EAAgB,IAAM,CAC/BtV,UAAU,IAEZ,IAlCkD,EAqCZjxB,oBACtC,UAAAjN,EAAMgwB,oBAAN,eAAoBxH,eAAgB,IAtCc,mBAqC7CA,EArC6C,KAqC/BkrB,EArC+B,KAwC9CC,EAAuB1oC,IAAMqF,YACjCijC,KAAEtV,SAASyV,EAAiB,IAAM,CAAExV,UAAU,IAC9C,IAGI3R,EAAe4mB,EAAM,gBACrBrnB,EAAsBqnB,EAAM,uBAElC9kC,qBAAU,WACsB,YAA1BrO,EAAMgoB,kBACHhoB,EAAMgwB,aAUT+iB,EAAMG,EAAU,CAAEU,MAAM,MATxBb,EAAM,eAAKxqB,GAAN,CAA4B2pB,eAAWnhC,KAC5C0iC,EAAoBI,QACpBP,EAAaO,QACbF,EAAqBE,QACrBR,EAAQ,IACRG,EAAe,IACfE,EAAgB,IAChBI,EAAgB,OAIlB5nC,OAAOg0B,SAAS,CAAE56B,IAAK,EAAGyuC,SAAU,cAErC,CAAC/zC,EAAMgoB,kBAEV3Z,qBAAU,WACS,EAAA7B,EAAAC,OAAA,oDACXzM,EAAMg0C,gBADK,kCAAAxnC,EAAA,MAEP4mC,KAFO,uCAOhB,CAACpzC,EAAMg0C,kBAEV3lC,qBAAU,WACR,OAAO,WAELolC,EAAoBI,QACpBP,EAAaO,QACbF,EAAqBE,YAIzBxlC,qBAAU,WACR,GAAI4kC,EAAUgB,MAAO,CACnB,IAAMC,EAAqB,SAACt9B,GAE1B,OADAA,EAAMu9B,YAAc1C,GACbA,IAKT,OAFAvlC,OAAOkoC,iBAAiB,eAAgBF,GAEjC,WACLhoC,OAAOmoC,oBAAoB,eAAgBH,OAG9C,CAACjB,EAAUgB,QAlGsC,MAoGZhnC,mBAAwB,MApGZ,mBAoG7CqnC,EApG6C,KAoG/BR,EApG+B,KAsG9ClrC,EAAUhD,GAAU,IAuBpB2uC,EAAwB,SAACC,GAAD,OAK5B,kBAACp7B,GAAA,EAAD,CACEnB,OAAQ,SAACw8B,GACPA,EAAE38B,OAAO9I,MAAQylC,EAAE38B,OAAO9I,MAAMouB,QAElCrjB,UAAW,SAAC06B,GACQ,KAAdA,EAAEz6B,UACHy6B,EAAE38B,OAAe9I,MAASylC,EAAE38B,OAAe9I,MAAMouB,SAGtDzmB,SAAU,SAACC,GAKT,MAJ4B,SAAxB49B,EAAe99B,MAAiB48B,EAAa18B,EAAMkB,OAAO9I,OAClC,iBAAxBwlC,EAAe99B,MACjBi9B,EAAqB/8B,EAAMkB,OAAO9I,OAE7B4H,GAETqC,SAAoC,eAA1BjZ,EAAMgoB,gBAChB5R,MAAOm9B,KAAEj9B,UAAUk+B,EAAe99B,MAClCA,KAAM89B,EAAe99B,KACrBvP,GAAIosC,KAAEnjB,UAAUokB,EAAe99B,MAC/B1R,UAAS,uBAAkBwvC,EAAe99B,KAAjC,YAAyC9N,EAAQuoC,YAC1DuD,UAAWF,EAAeG,UAAY,IACtCj9B,SAAU2f,EACV3d,WAAY,CACVi7B,UAAWH,EAAeG,UAC1B,cAAepB,KAAEnjB,UAAUokB,EAAe99B,OAE5CsX,WAGQjd,IAFN+hC,EACE0B,EAAe99B,MAGnBk+B,WACE9B,EACE0B,EAAe99B,OAEhBo8B,EACC0B,EAAe99B,MACA2oB,WA0VvB,OAFAhI,EAAS,CAAE3gB,KAAM,OAGf,6BACE,kBAAC,IAAD,CAAQ2oB,QAASoS,GAAyBoD,KAAM5B,EAAUgB,QAC1D,kBAACa,GAAA,EAAD,CAAM9vC,UAAW4D,EAAQyoC,MACvB,kBAAC0D,GAAA,EAAD,KACE,kBAAChsC,EAAA,EAAD,CAAYhE,QAAQ,KAAK1D,MAAM,UAAU2D,UAAW4D,EAAQ+a,QACzD3jB,EAAM2jB,QAGT,0BAAMmE,SAAU+qB,EAAa7yC,EAAM8nB,WAChC9V,OAAOqM,KAAKkK,IACVthB,QAAO,SAAC6O,GAAD,MAAiB,OAARA,KAChBH,KAAI,SAACG,GAAD,OACH,yBAAKA,IAAKA,GACC,SAARA,GACS,iBAARA,GACQ,gBAARA,GACQ,UAARA,GACE,kBAAC,GAAD,CAAUpV,KAAM6yC,KAAEj9B,UAAUR,GAAM3O,GAAI2O,IAvWxC,SAChBk/B,GACI,IAAD,IACH,OAAQA,GACN,IAAK,OACH,OACE,yBAAK5vC,MAAO,CAAEY,aAAc,QACzBuuC,EAAsB,CAAEI,UAAW,IAAKj+B,KAAMs+B,KAIrD,IAAK,eACH,OACE,yBAAK5vC,MAAO,CAAEY,aAAc,QACzBuuC,EAAsB,CAAEI,UAAW,IAAKj+B,KAAMs+B,KAIrD,IAAK,cACH,OACE,oCACE,yBAAK5vC,MAAO,CAAEY,aAAc,SAC1B,kBAAC,GAAD,CAAUtF,KAAK,cAAcyG,GAAG,gBAChC,6BACC2rC,EAAO31B,aACN,kBAACpU,EAAA,EAAD,CAAY/D,UAAW4D,EAAQmlB,WAC5B+kB,EAAO31B,YAAYkiB,SAGxB,kBAAC,KAAD,CACE4V,GAAI,kBAAC,GAAD,MACJv+B,KAAK,cACLR,QAASA,EACTS,SAAU,SAAC3H,GAET,OADAykC,EAAoBzkC,EAAM,IACnBA,EAAM,OAInB,6BACE,6BACA,kBAAC,GAAD,CAAUtO,KAAK,sBAAsByG,GAAG,YACxC,6BACA,kBAAC4B,EAAA,EAAD,KACE,yCADF,0KAKA,6BACA,kBAAC,GAAD,CACEknB,UAAW3H,GAAU4H,SACrBF,aAAc,CACZvH,OACIqqB,EAAOZ,YACNoC,IACE,UAAAt0C,EAAMgwB,oBAAN,eAAoBvH,QACnBzoB,EAAMgwB,aAAavH,MAAM7d,UAC/B,KACF8L,OACAyG,cACAkT,UACE9D,GAAgBA,EAAaxa,OAAS,EAClCwa,EAAa,GAAG7V,KAChB,OACN4Z,UACExE,EAAoBC,eACpBD,EAAoBE,WADpB,UAEOF,EAAoBC,cAF3B,cAE8CD,EAAoBE,YAC9D,OACNxD,kBAGJ,yBAAKxjB,UAAW4D,EAAQ2oC,sBACtB,kBAAC,EAAD,CAAa9rC,UAAU,QAAQT,UAAW4D,EAAQ4oC,aAChD,2BACE7pC,KAAK,OACL+O,KAAK,YACLiG,kBAAgB,QAChBu4B,OAAM,UAAKrD,GAAkB5a,KAAK,OAClC9vB,GAAG,aACH6Z,IAAKqW,EACLjyB,MAAO,CACLgB,QAAS,QAEXuQ,SAAU,SAAOC,GAAP,iBAAApK,EAAAC,OAAA,uDAENmK,EAAMkB,QACNlB,EAAMkB,OAAOq9B,OACbv+B,EAAMkB,OAAOq9B,MAAMpjC,OAAS,GAEtBqjC,EAAOx+B,EAAMkB,OAAOq9B,MAAM,IAC1BE,EAAS,IAAIC,YACZC,cAAcH,GACrBC,EAAOG,UAAY,SAAUf,GAC3BX,EAAgBuB,EAAO5tC,UAGzBqsC,EAAgB,MAbV,WAAAtnC,EAAA,MAeF4mC,EAAkB,cAfhB,wCAXd,gBA+BCN,EAAOZ,WACN,0BACEltC,UAAW8tC,EAAOZ,UAAYtpC,EAAQ0oC,eAAiB,IAErDwB,EAAOZ,UAAkB7S,YAQzC,IAAK,0BACH,OACE,kBAAC,KAAD,CACEoW,aAAczlB,EAAanF,wBAC3BlU,SAAU,SAAC3H,GACT,OAAOA,EAAM,IAEf0H,KAAMs+B,EACN9+B,QAASA,EACT++B,GACE,kBAAC,GAAD,CACEzkC,QAAmC,eAA1BxQ,EAAMgoB,gBACf0tB,QAASV,EACTt+B,KAAMs+B,EACNv8B,IAAKiL,GAAsB4c,UAC3B9nB,IAAKkL,GAAsBoH,UAC3BhS,KAAM,EACNgC,MAAM,UAKhB,IAAK,uBACH,OACE,kBAAC,KAAD,CACE26B,aAAczlB,EAAarE,qBAC3BhV,SAAU,SAAC3H,GACT,OAAOA,EAAM,IAEf0H,KAAMs+B,EACN9+B,QAASA,EACT++B,GACE,kBAAC,GAAD,CACEzkC,QAAmC,eAA1BxQ,EAAMgoB,gBACf0tB,QAASV,EACTt+B,KAAMs+B,EACNv8B,IAAKiL,GAAsB6c,OAC3B/nB,IAAKkL,GAAsBkI,OAC3B9S,KAAM,EACNgC,MAAM,SAKhB,IAAK,kBACH,OACE,kBAAC,KAAD,CACE26B,aAAczlB,EAAarG,gBAC3BhT,SAAU,SAAC3H,GACT,OAAOA,EAAM,IAEf0H,KAAMs+B,EACN9+B,QAASA,EACT++B,GACE,kBAAC,GAAD,CACEU,cAAc,EACdnlC,QAAmC,eAA1BxQ,EAAMgoB,gBACf0tB,QAASV,EACTt+B,KAAMs+B,EACNv8B,IAAKiL,GAAsByc,WAC3B3nB,IAAKkL,GAAsBkG,WAC3B9Q,KAAM,IACNgC,MAAM,WAKhB,IAAK,uBACH,OACE,kBAAC,KAAD,CACE26B,aAAczlB,EAAajF,qBAC3BpU,SAAU,SAAC3H,GACT,OAAOA,EAAM,IAEf0H,KAAMs+B,EACN9+B,QAASA,EACT++B,GACE,kBAAC,GAAD,CACEzkC,QAAmC,eAA1BxQ,EAAMgoB,gBACf0tB,QAASV,EACTt+B,KAAMs+B,EACNv8B,IAAKiL,GAAsB4c,UAC3B9nB,IAAKkL,GAAsBoH,UAC3BhS,KAAM,EACNgC,MAAM,UAKhB,IAAK,wBAEH,OADAuc,EAAS,CAAE3gB,KAAK,GAAD,OAAKs+B,EAAL,SACRhjC,OAAOqM,KAAKkK,GAAqBsD,uBAAuBlW,KAC7D,SAACigC,GAAD,OACE,yBAAK9/B,IAAK8/B,GACR,kBAAC,KAAD,CACEl/B,KAAI,UAAKs+B,EAAL,YAAcY,GAClB1/B,QAASA,EACTu/B,aACEzlB,EAAanE,sBACX+pB,GAGJj/B,SAAU,SAAC3H,GACT,IAAM6mC,EAAc7mC,EAAM,GAC1B,MAAoB,KAAhB6mC,EACK,GAEF98B,SAAS88B,IAElBZ,GACE,kBAAC,GAAD,CACEzkC,QAAmC,eAA1BxQ,EAAMgoB,gBACf3H,MAAOkzB,KAAEj9B,UAAUs/B,GACnBl/B,KAAI,UAAKs+B,EAAL,YAAcY,GAClB9C,OAAQA,MAId,iCAIR,IAAK,eACH,OACE,kBAAC,KAAD,CACE2C,aAAczlB,EAAazD,aAC3B0oB,GACE,kBAAC,GAAD,CACEzkC,QAAmC,eAA1BxQ,EAAMgoB,gBACfhZ,MAAO,GACPgf,MAAK,UAAG8kB,EAAOvmB,oBAAV,aAAE,EAA8B8S,QACrC2T,WAAY,kBAAMA,EAAWgC,IAC7BjF,SAAUA,EACVl5B,SAAU,SAAO7H,GAAP,SAAAxC,EAAAC,OAAA,kEAAAD,EAAA,MACFqK,EAASm+B,EAAOhmC,IADd,sCAGV0H,KAAMs+B,IAGVc,MAAO,CAAEC,UAAW,GACpBr/B,KAAMs+B,EACN9+B,QAASA,IAGf,IAAK,sBAEH,OADAmhB,EAAS,CAAE3gB,KAAK,GAAD,OAAKs+B,EAAL,SAEb,oCACE,kBAAC,GAAD,CACExkC,QAAmC,eAA1BxQ,EAAMgoB,gBACf3H,MAAM,UACN21B,aAAa,oCACbC,aAAa,iCACbC,gBAAiBlmB,EAAalE,oBAAoBC,cAClDoqB,gBAAiBnmB,EAAalE,oBAAoBE,WAClDxT,IAAK,EACLC,IAAK,EACLvC,QAASA,EACT48B,OAAQA,IAEV,kBAAC,GAAD,CACEtiC,QAAmC,eAA1BxQ,EAAMgoB,gBACf3H,MAAM,SACN21B,aAAa,mCACbC,aAAa,gCACbC,gBAAiBlmB,EAAalE,oBAAoBG,aAClDkqB,gBAAiBnmB,EAAalE,oBAAoBI,UAClD1T,IAAK,EACLC,IAAK,EACLvC,QAASA,EACT48B,OAAQA,IAEV,kBAAC,GAAD,CACEtiC,QAAmC,eAA1BxQ,EAAMgoB,gBACf3H,MAAM,OACN21B,aAAa,iCACbC,aAAa,8BACbC,gBAAiBlmB,EAAalE,oBAAoBK,WAClDgqB,gBAAiBnmB,EAAalE,oBAAoBM,QAClD5T,IAAK,EACLC,IAAK,EACLvC,QAASA,EACT48B,OAAQA,IAEV,kBAAC,GAAD,CACEtiC,QAAmC,eAA1BxQ,EAAMgoB,gBACf3H,MAAM,UACN21B,aAAa,oCACbC,aAAa,iCACbC,gBAAiBlmB,EAAalE,oBAAoBO,cAClD8pB,gBAAiBnmB,EAAalE,oBAAoBQ,WAClD9T,IAAK,EACLC,IAAK,EACLvC,QAASA,EACT48B,OAAQA,KAIhB,IAAK,QACH,OAAO,KACT,QAEE,OADAzb,EAAS,CAAE3gB,KAAK,GAAD,OAAKs+B,EAAL,SACRhjC,OAAOqM,KAAKkK,GAAqBysB,IAAQr/B,KAAI,SAACigC,GAAD,OAClD,yBAAK9/B,IAAK8/B,EAAU5wC,UAAS,UAAKgwC,EAAL,YAAcY,IACzC,kBAACr/B,GAAA,EAAD,CAAanR,MAAO,CAAEiE,WAAY,SAChC,kBAAC8S,GAAA,EAAD,CAAWhV,GAAI8O,GAAa,GAAD,OAAI++B,EAAJ,YAAaY,KACrCrC,KAAEj9B,UAAUs/B,IAEf,kBAAC,KAAD,CACEX,IA1YYmB,EA0YS,CACnB1/B,KAAK,GAAD,OAAKs+B,EAAL,YAAcY,IA1YhC,kBAACp/B,GAAA,EAAD,CACExN,cAAaiN,GAAamgC,EAAsB1/B,MAChDiG,kBAAiB1G,GAAamgC,EAAsB1/B,MACpD++B,aAAchyB,GAAa0E,aAC3BzR,KAAM0/B,EAAsB1/B,MAE3B1E,OAAOpK,OAAO6b,IAAc9N,KAAI,SAAC3G,GAAD,OAC/B,kBAACgH,GAAA,EAAD,CACEiD,SAAoC,eAA1BjZ,EAAMgoB,gBAChBhf,cAAauqC,KAAEnjB,UAAF,UAAegmB,EAAsB1/B,KAArC,YAA6C1H,IAC1DhK,UAAWuuC,KAAEnjB,UAAF,UAAegmB,EAAsB1/B,KAArC,YAA6C1H,IACxD8G,IAAK9G,EACLkH,QAAS,kBAACC,GAAA,EAAD,MACTnH,MAAOA,EACPoH,MAAOm9B,KAAEj9B,UAAUtH,UA8Xb0H,KAAI,UAAKs+B,EAAL,YAAcY,GAClB1/B,QAASA,EACTu/B,aAAchyB,GAAa0E,gBAG/B,8BAlZe,IAACiuB,MA8aTC,CAAUvgC,GACX,iCAIN,yBAAK9Q,UAAW4D,EAAQwoC,QAAShsC,MAAO,CAAEzC,UAAW,SAClDqP,OAAOC,QAAQ6gC,GAAQ/gC,OAAS,GAC/B,kBAAChJ,EAAA,EAAD,CAAY/D,UAAW4D,EAAQ0oC,gBAA/B,kEAIF,kBAAC,EAAD,CACEr4B,SAAoC,eAA1BjZ,EAAMgoB,gBAChBrgB,KAAK,SACLqH,MAAM,SACNhG,cAAY,gBACZhE,UAAW4D,EAAQsoC,QALrB,SAQ6B,eAA1BlxC,EAAMgoB,iBACL,kBAAC9iB,EAAA,EAAD,CACEC,KAAM,GACNH,UAAW4D,EAAQib,sBAQN,YAA1B7jB,EAAMgoB,gBACL,kBAAC,GAAD,CACErgB,KAAM0/B,GAAamB,QACnBnJ,QAAS,mCACTlZ,QAASnmB,EAAMs2C,qBACfzN,UAAqC,YAA1B7oC,EAAMgoB,kBAES,SAA1BhoB,EAAMgoB,gBACR,kBAAC,GAAD,CACErgB,KAAM0/B,GAAa97B,MACnB8zB,QAAS,6BACTlZ,QAASnmB,EAAMs2C,qBACfzN,UAAqC,SAA1B7oC,EAAMgoB,kBAGnB,+BAMR,IAAMuuB,GAAe1wC,aAAW,SAACtB,GAC/B,MAAO,CACL/C,KAAM,CACJoB,MAAO,SAETE,WAAY,CAEVwC,KAAM,GAEN1B,SAAU,GACV,MAAO,CACLhD,WAAY,cACZS,MAAO,aAMTm1C,GAAgB,SAACx2C,GAYrB,IAAMy2C,EAAgBF,KAChB3tC,EAAUhD,KAEViX,EAAQ,CACZ,CACE7N,MAAOhP,EAAMwY,IACbpC,MAAM,GAAD,OAAKpW,EAAMwY,IAAIgE,iBAAf,YAAmCxc,EAAM8a,QAEhD,CACE9L,MAAOhP,EAAMyY,IACbrC,MAAM,GAAD,OAAKpW,EAAMyY,IAAI+D,iBAAf,YAAmCxc,EAAM8a,SAI5C47B,EAAiB,SAACr+B,GACtBrY,EAAM2W,UAAY3W,EAAM2W,SAAS0B,IAGnC,OACE,oCACGrY,EAAM21C,cACL,kBAAC3/B,GAAA,EAAD,CACEE,QACE,kBAACqsB,GAAA,EAAD,CACEvzB,MAAM,gBACN8yB,QAAyB,OAAhB9hC,EAAMgP,MACf2H,SAAU,SAAOC,GAAP,SAAApK,EAAAC,OAAA,gDACRiqC,EAAe9/B,EAAMkB,OAAOgqB,QAAU,KAAO9hC,EAAMwY,KAD3C,wCAKdpC,MAAK,aAAQm9B,KAAEj9B,UAAUtW,EAAM0W,SAGnC,kBAACs3B,GAAA,EAAD,CACEvW,WAAS,EACT9e,UAAU,MACVs1B,QAAQ,aACRhkC,WAAW,SACXo+B,QAAS,EACTjjC,MAAO,CAAEiE,WAAY,SAErB,kBAAC2kC,GAAA,EAAD,CAAME,MAAI,GACR,kBAAC7xB,GAAA,EAAD,CACEpD,SAAUjZ,EAAMwQ,SAA2B,OAAhBxQ,EAAMgP,MACjChK,UAAWuuC,KAAEnjB,UAAF,UAAepwB,EAAM0W,KAArB,YACXC,SAAU,SAACC,EAAO5H,GAChBhP,EAAM2W,UAAY3W,EAAM2W,SAAS3H,IAEnC8J,KAAM9Y,EAAM8Y,KACZ1T,MAAO,CAAEvC,WAAY,OAAQ0D,YAAa,QAC1CyI,MAAOhP,EAAMgP,OAAShP,EAAMwY,IAC5B9B,KAAM1W,EAAM0W,KACZ8B,IAAKxY,EAAMwY,IACXC,IAAKzY,EAAMyY,IACX7P,QAAS6tC,EACT75B,kBAAmC,OAAhB5c,EAAMgP,MAAiB,MAAQ,KAClD6N,MAAuB,OAAhB7c,EAAMgP,WAAiB+B,EAAY8L,KAG9C,kBAACmxB,GAAA,EAAD,CAAME,MAAI,EAAC9oC,MAAO,CAAEgB,QAAS,OAAQ6D,WAAY,aAC/C,kBAAC,GAAD,CACE+E,MAAOhP,EAAMgP,MACb2H,SAAU,SAAC0B,GAAD,OAAsBq+B,EAAer+B,IAC/CS,KAAM9Y,EAAM8Y,KACZN,IAAKxY,EAAMwY,IACXC,IAAKzY,EAAMyY,IACXzP,cAAaiN,GAAajW,EAAM0W,MAChC1R,UAAS,UAAKiR,GAAajW,EAAM0W,MAAxB,UACToD,eAAgB9Z,EAAM01C,QACtB77B,WAAY7Z,EAAM01C,QAClBz8B,SAAUjZ,EAAMwQ,SAA2B,OAAhBxQ,EAAMgP,QAEnC,yBAAKhK,UAAW4D,EAAQsO,WACtB,kBAACnO,EAAA,EAAD,KAAa/I,EAAM8a,YAQzB67B,GAAqB,SAAC32C,GAQrB,IAAD,EACE42C,EACJ52C,EAAM8yC,OAAOjnB,wBAAb,UACA7rB,EAAM8yC,OAAOjnB,sBACX7rB,EAAM0W,KAAKyiB,MAAM,KAAK,WAFxB,aACA,EAEGkG,SAEL,OACE,oCACE,kBAACrpB,GAAA,EAAD,CACEiD,SAAUjZ,EAAMwQ,QAChB4F,MAAOpW,EAAMqgB,MACbjb,MAAO,CAAEzC,UAAW,OAAQE,WAAY,OACxCqT,QACE,kBAACkD,GAAA,EAAD,CACEhU,MAAO,CAAExC,MAAO,OAAQ2D,YAAa,QACrCyI,MAAOhP,EAAMgP,MACbrH,KAAK,SACL3C,UAAWuuC,KAAEnjB,UAAUpwB,EAAM0W,MAC7BvP,GAAIosC,KAAEnjB,UAAUpwB,EAAM0W,MACtBC,SAAU,SAACC,GACT,IAAM5H,EAAQ4H,EAAMkB,OAAO9I,MAC3BhP,EAAM2W,UAAY3W,EAAM2W,SAAS3H,IAEnC0K,WAAY,CACV/R,KAAM,SACN,cAAe4rC,KAAEnjB,UAAUpwB,EAAM0W,OAEnCsX,QAAS4oB,MAIf,kBAAC7tC,EAAA,EAAD,CAAYhE,QAAQ,UAAU1D,MAAM,SACjCu1C,GAAgB,6BAChBA,KAQHC,GAAY,SAAC72C,GAQZ,IAAD,EACsDiN,mBACxD,IAFE,mBACG6pC,EADH,KAC0BC,EAD1B,OAIgD9pC,mBAAiB,IAJjE,mBAIG+pC,EAJH,KAIuBC,EAJvB,KASEC,EACJJ,EAAsB/kC,OAAS,GAAKilC,EAAmBjlC,OAAS,EAE5DolC,EAAM,4BAAA3qC,EAAAC,OAAA,mDACJ2qC,EAAiB,CACrB1gC,KAAMogC,EACNO,UAAWt+B,SAASi+B,GACpBM,WAAW,EACXjJ,UAAU,GACVC,UAAW,IAAIjmB,OAGbkvB,EAAqBH,GATf,gBAURp3C,EAAM+vC,SACJ/vC,EAAM0W,KACN,YACA,oEAbM,4BAgBR0gC,EAAeC,UAtBI,MAuBnBD,EAAeC,UAtBI,KAKX,gBAmBRr3C,EAAM+vC,SACJ/vC,EAAM0W,KACN,UACA,mDAtBM,8BAyBF8gC,EAAex3C,EAAMgP,MAAMsC,OAAO8lC,GAzBhC,YAAA5qC,EAAA,MA0BFxM,EAAM6W,SAAS2gC,IA1Bb,QA2BRx3C,EAAMgzC,aACN+D,EAAyB,IACzBE,EAAsB,IA7Bd,uCAiCNM,EAAuB,SAACE,GAI5B,QAASlE,KAAE5jC,KAAK3P,EAAMgP,OAAO,SAACq0B,GAAD,OAAOA,EAAE3sB,OAAS+gC,EAAM/gC,SAGvD,OACE,yBAAKtR,MAAO,CAAExC,MAAO,SACnB,kBAAC80C,GAAA,EAAD,CAAM1yC,UAAU,qBACbhF,EAAMgP,MAAM+C,OAAS,EACpB/R,EAAMgP,MAAM2G,KAAI,SAAC3G,GACf,OACE,yBAAK8G,IAAG,UAAK9G,EAAM0H,KAAX,SACN,kBAACihC,GAAA,EAAD,CAAU7hC,IAAK9G,EAAM0H,MACnB,kBAACkhC,GAAA,EAAD,CACE9hC,IAAK9G,EAAM0H,KACXpW,QAAO,UAAK0O,EAAM0H,MAClBS,UACE,kBAAC,IAAMi2B,SAAP,CAAgBt3B,IAAG,UAAK9G,EAAM0H,KAAX,cACjB,kBAAC3N,EAAA,EAAD,CACE+M,IAAG,UAAK9G,EAAM0H,KAAX,eACHjR,UAAU,OACVV,QAAQ,UACR1D,MAAM,cACN+D,MAAO,CAAEvC,WAAY,SALvB,YADF,WAUOmM,EAAMqoC,UAVb,eAcJ,kBAACQ,GAAA,EAAD,CAAc/hC,IAAG,UAAK9G,EAAM0H,KAAX,cACf,kBAACm4B,GAAA,EAAD,CACExuB,MAAM,SACN4wB,UAAU,SACVn7B,IAAG,UAAK9G,EAAM0H,KAAX,aAEH,8BACE,kBAACsC,GAAA,EAAD,CACEC,SAAUjZ,EAAMwQ,QAChBiG,aAAA,iBAAsBzH,EAAM0H,MAC5B1N,cAAY,gBACZ8M,IAAG,UAAK9G,EAAM0H,KAAX,eACHwC,QAAS,0BAAA1M,EAAAC,OAAA,uDACD+qC,EAAejE,KAAEuE,QAAQ93C,EAAMgP,MAAOA,GADrC,WAAAxC,EAAA,MAEDxM,EAAM6W,SAAS2gC,IAFd,uCAKT,kBAAC,KAAD,CACEn2C,MAAM,UACNyU,IAAG,UAAK9G,EAAM0H,KAAX,sBAWrB,kBAAC3N,EAAA,EAAD,CAAY/D,UAAU,0BAAtB,2CAKJ,kBAACgpC,GAAA,EAAD,CACEvW,WAAS,EACT9e,UAAU,MACVs1B,QAAQ,eACRhkC,WAAW,WACX7E,MAAO,CAAEzC,UAAW,SAEpB,kBAACyW,GAAA,EAAD,CACEH,SAAUjZ,EAAMwQ,QAChBxL,UAAU,aACVgpB,QAAShuB,EAAMguB,MACf4mB,WAAY50C,EAAMguB,MAClB7mB,GAAG,aACHuP,KAAK,aACLN,MAAM,0BACNhR,MAAO,CAAExC,MAAO,OAChBoM,MAAO8nC,EACPngC,SAAU,SAAChL,GAAD,OAAYorC,EAAyBprC,EAAOmM,OAAO9I,QAC7DiJ,OAAQ,SAACw8B,GACPsC,EAAyBD,EAAsB1Z,SAEjDrjB,UAAW,SAAOnD,GAAP,SAAApK,EAAAC,OAAA,mDACa,KAAlBmK,EAAMoD,QADD,mBAEPpD,EAAMmhC,iBACNhB,EAAyBD,EAAsB1Z,SAC3C8Z,GAA8C,KAAjCJ,EAAsB1Z,OAJhC,kCAAA5wB,EAAA,MAKC2qC,KALD,sCASXz9B,WAAY,CAAE,cAAe,cAC7Bs+B,gBAAiB,CAAEC,QAAQ,KAE7B,kBAAC7+B,GAAA,EAAD,CACEH,SAAUjZ,EAAMwQ,QAChBxL,UAAU,eACVmC,GAAG,eACHuP,KAAK,eACLN,MAAM,SACNs+B,WAAW,EACXtvC,MAAO,CAAExC,MAAO,OAChB+E,KAAK,SACLqH,MAAOgoC,EACPrgC,SAAU,SAAChL,GAAD,OAAYsrC,EAAsB,GAAD,OAAItrC,EAAOmM,OAAO9I,SAC7D+K,UAAW,SAAOnD,GAAP,SAAApK,EAAAC,OAAA,mDACa,KAAlBmK,EAAMoD,QADD,mBAEPpD,EAAMmhC,kBACFb,EAHG,kCAAA1qC,EAAA,MAIC2qC,KAJD,sCAQXz9B,WAAY,CACV,cAAe,eACflB,IAhKa,IAiKbC,IAlKa,MAoKfe,WAAY,CACV0+B,aACE,kBAACC,GAAA,EAAD,CAAgB9yC,SAAS,OAAzB,YAGJ2yC,gBAAiB,CAAEC,QAAQ,GAC3BjqB,QAAShuB,EAAMguB,QAEjB,kBAAC,EAAD,CACEhlB,cAAY,mBACZkQ,QAASi+B,EACTl+B,UAAWi+B,GAAal3C,EAAMwQ,SAHhC,UAYF4nC,GAAY,SAACC,GAWZ,IAAD,IACEC,EACJD,EAAUvF,OAAOhnB,sBAAjB,UACAusB,EAAUvF,OAAOhnB,oBACfusB,EAAUrC,aAAa7c,MAAM,KAAK,WAFpC,aACA,EAIGkG,SACCkZ,EACJF,EAAUvF,OAAOhnB,sBAAjB,UACAusB,EAAUvF,OAAOhnB,oBACfusB,EAAUpC,aAAa9c,MAAM,KAAK,WAFpC,aACA,EAIGkG,SAECmZ,EAAa,SAACC,GAAD,OAMjB,kBAACr/B,GAAA,EAAD,CACEuD,kBAAiB87B,EAAgBC,UACjCtzC,MAAO,CAAExC,MAAO,OAAQ2D,YAAa,QACrCyI,MAAOypC,EAAgBzpC,MACvBrH,KAAK,SACL+R,WAAY,CACVhD,KAAM+hC,EAAgB7G,UACtB94B,KAAM,MACNnR,KAAM,SACN,cAAe4rC,KAAEnjB,UAAUqoB,EAAgB7G,YAE7Cj7B,SAAU,SAACC,GACT,IAAM5H,EAAQ4H,EAAMkB,OAAO9I,MAC3BypC,EAAgB9hC,UAAY8hC,EAAgB9hC,SAAS3H,IAEvDgf,QAASsqB,KAAqBC,KAGlC,OACE,oCACE,kBAACvK,GAAA,EAAD,CACEvW,WAAS,EACT9e,UAAU,MACVs1B,QAAQ,aACRhkC,WAAW,WACX7E,MAAO,CAAEzC,UAAW,KAEpB,kBAACqrC,GAAA,EAAD,CAAME,MAAI,EAAC9oC,MAAO,CAAExC,MAAO,QACzB,kBAACmG,EAAA,EAAD,CAAYhE,QAAQ,YAAYoC,GAAI8O,GAAaoiC,EAAUh4B,QACxDg4B,EAAUh4B,QAGf,kBAAC2tB,GAAA,EAAD,CAAME,MAAI,EAAC9oC,MAAO,CAAEmB,YAAa,KAC/B,kBAAC,KAAD,CACEkvC,aAAc4C,EAAUnC,gBACxBv/B,SAAU,SAAC3H,GACT,IAAM6mC,EAAc7mC,EAAM,GAC1B,MAAoB,KAAhB6mC,EACK,GAEFl7B,KAAKC,MAAgC,GAA1B+9B,WAAW9C,IAAqB,IAEpDn/B,KAAM2hC,EAAUrC,aAChB9/B,QAASmiC,EAAUniC,QACnB++B,GACE,kBAACuD,EAAD,CACEE,UAAWziC,GAAaoiC,EAAUh4B,OAClCuxB,UAAWyG,EAAUrC,kBAK7B,kBAAChI,GAAA,EAAD,CAAME,MAAI,GACR,kBAACnlC,EAAA,EAAD,CAAYhE,QAAQ,aAApB,OAEF,kBAACipC,GAAA,EAAD,CAAME,MAAI,EAAC9oC,MAAO,CAAEvC,WAAY,KAC9B,kBAAC,KAAD,CACE4yC,aAAc4C,EAAUlC,gBACxBx/B,SAAU,SAAC3H,GACT,IAAM6mC,EAAc7mC,EAAM,GAC1B,MAAoB,KAAhB6mC,EACK,GAEFl7B,KAAKC,MAAgC,GAA1B+9B,WAAW9C,IAAqB,IAEpDn/B,KAAM2hC,EAAUpC,aAChB//B,QAASmiC,EAAUniC,QACnB++B,GACE,kBAACuD,EAAD,CACEE,UAAWziC,GAAaoiC,EAAUh4B,OAClCuxB,UAAWyG,EAAUpC,mBAM/B,kBAACltC,EAAA,EAAD,CAAYhE,QAAQ,UAAU1D,MAAM,SACjCi3C,EACAC,GAAmBD,EAAnB,YACQC,GACLA,KAMNK,GAAW,SAAC54C,GAChB,OACE,6BACE,kBAAC+I,EAAA,EAAD,CAAYhE,QAAQ,KAAKoC,GAAInH,EAAMmH,IAChCnH,EAAMU,MAET,kBAACm4C,GAAA,EAAD,CAAS9zC,QAAQ,YAAYK,MAAO,CAAEzC,UAAW,WCnwC1Cm2C,GAAmB,SAAC94C,GAAkB,IAAD,EACFiN,mBAC5C,eAF8C,mBACzC+a,EADyC,KACxBwX,EADwB,KAehD,OACE,kBAACgT,GAAD,CACE1qB,SAZa,SAACpb,GAChB8yB,EAAmB,eACJ,mBAAAhzB,EAAAC,OAAA,kEAAAD,EAAA,MACQxM,EAAM8nB,SAASpb,IADvB,OACPjF,EADO,OAEb+3B,EAAmB/3B,GAFN,qCAKfsxC,IAMEzC,qBAAsB,WACpB9W,EAAmB,gBAErB7b,OAAQ3jB,EAAM2jB,OACdqE,gBAAiBA,EACjBgI,aAAchwB,EAAMgwB,gBC7BnB,SAASgpB,GAAoBh5C,GAAkB,IAC5CsN,EAAyB9B,IAAzB8B,qBAsBR,OACE,oCACE,kBAAC,GAAD,CACEqW,OAAO,mBACPmE,SAxBe,SACnBkI,GADmB,iBAAAxjB,EAAAC,OAAA,uDAGbC,EAAO,IAAIusC,SAEXC,EAAmB3nC,GAAeye,EAActjB,GALnC,WAAAF,EAAA,MAOEc,EAAqB,CACxCgB,IAAK,mBACL5B,KAAMwsC,EACN3qC,OAAQ,UAVS,UAaG,MAbH,OAaRT,OAbQ,yCAcV,WAdU,gCAgBV,QAhBU,uCAyBfkiB,kBAAcjf,K,yBC/Bf,SAASooC,GAAoBn5C,GAClC,OACE,kBAAC,GAAD,KACE,kBAACguC,GAAA,EAAD,CACEvW,WAAS,EACT9e,UAAU,MACVs1B,QAAQ,gBACRhkC,WAAW,aACX7E,MAAO,CAAE5B,QAAS,SAElB,kBAAC,IAAD,CACEmC,GAAG,sBACHP,MAAO,CAAE0N,eAAgB,QACzB9J,cAAY,eAEZ,kBAACrE,EAAA,EAAD,CACEtD,MAAM,YACN+D,MAAO,CAAEhB,cAAe,UAAWvB,WAAY,SAE/C,kBAAC,KAAD,CAAeuC,MAAO,CAAEmB,YAAa,SAJvC,UASJ,kBAACyyC,GAAD,OClBC,SAASI,GAAqBp5C,GAAkB,IAC7CsN,EAAyB9B,IAAzB8B,qBAoBR,OACE,kBAAC,GAAD,CACEqW,OAAO,oBACPmE,SAtBiB,SACnBkI,GADmB,iBAAAxjB,EAAAC,OAAA,uDAGbC,EAAO,IAAIusC,SAEXC,EAAmB3nC,GAAeye,EAActjB,GALnC,WAAAF,EAAA,MAOEc,EAAqB,CACxCgB,IAAI,oBAAD,OAAsBtO,EAAMgwB,aAAa7oB,IAC5CoH,OAAQ,MACR7B,KAAMwsC,KAVW,UAYG,MAZH,OAYRprC,OAZQ,yCAaV,WAbU,gCAeV,QAfU,uCAuBjBkiB,aAAchwB,EAAMgwB,eCzBnB,SAASqpB,GACdr5C,GACC,IAAD,EAC4C6Q,GAE1C,CACAO,cAAe,CACb7C,OAAQ,MACRD,IAAI,oBAAD,OAAsBtO,EAAMs5C,MAAMC,OAAOpyC,OANhD,mBACOqyC,EADP,KAC4BxpB,EAD5B,KA+BA,OACE,kBAAC,GAAD,KACE,kBAACge,GAAA,EAAD,CACEvW,WAAS,EACT9e,UAAU,MACVs1B,QAAQ,gBACRhkC,WAAW,aACX7E,MAAO,CAAE5B,QAAS,SAElB,kBAAC,IAAD,CACEmC,GAAG,sBACHP,MAAO,CAAE0N,eAAgB,QACzB9J,cAAY,eAEZ,kBAACrE,EAAA,EAAD,CACEtD,MAAM,YACN+D,MAAO,CAAEhB,cAAe,UAAWvB,WAAY,SAE/C,kBAAC,KAAD,CAAeuC,MAAO,CAAEmB,YAAa,SAJvC,UASJ,mBA5Ca,WACf,OAAIizC,EAEA,kBAACt0C,EAAA,EAAD,CACEu0C,eAAe,EACfr0C,MAAO,CACLxC,MAAO,OACPN,OAAQ,OACRO,WAAY,MACZF,UAAW,SAMfqtB,EACK,kBAACopB,GAAD,CAAsBppB,aAAcA,IAEtC,0DA0BL,O,oCCjEO/H,GAAa,WACxB,OACE,kBAAC,GAAD,KACE,kBAAC,GAAD,QCLOyxB,GAAW,WACtB,OAAO,iFCAIC,GAAW,SAAC35C,GACvB,OAAO,kBAAC,GAAD,KAAcA,EAAMU,O,2ECmBhBk5C,GAAY,WACvB,IAAMhxC,EAAUhD,IACVwJ,EAAWC,cACXF,EAAY/D,IACVsD,EAAWlD,IAAXkD,OAEFmrC,EAAM,SAAC75C,GAAD,OACV,kBAAC0F,GAAA,EAAD,CACEV,UAAS,UAAK4D,EAAQoB,UAAb,YACPoF,EAASG,SAASQ,SAAS/P,EAAMmtB,MAAQvkB,EAAQsB,gBAAkB,IAErEzE,UAAWq0C,IACX73C,UAAU,OACV0D,GAAI3F,EAAMmtB,KACVnkB,cAAA,UAAgBuqC,aAAYvzC,EAAM0W,MAAlC,UAEA,kBAAC3N,EAAA,EAAD,CAAY/D,UAAW4D,EAAQmB,eAAgB/J,EAAM0W,QAenDqjC,EAAc,SAACnjC,GAEjBojC,EAAU7pC,SACV6pC,EAAU7pC,QAAQ8pC,SAASrjC,EAAMkB,SAKnCoiC,GAAQ,IAvCmB,EA2CLjvC,IAAMgC,UAAS,GA3CV,mBA2CtBiZ,EA3CsB,KA2ChBg0B,EA3CgB,KA4CvBF,EAAY/uC,IAAMiF,OAAuB,MAK/C,SAASiqC,EAAkBvjC,GACP,QAAdA,EAAMd,MACRc,EAAMmhC,iBACNmC,GAAQ,IAIZ,OACE,kBAACE,GAAA,EAAD,CAAQ/0C,SAAU,SAAUL,UAAW4D,EAAQe,QAC7C,kBAACsb,GAAD,CAAejgB,UAAW4D,EAAQgB,WAChC,yBAAK5E,UAAW4D,EAAQkB,cACtB,kBAAC,IAAD,CAAYnE,GAAG,IAAIX,UAAW4D,EAAQwB,UACpC,yBACEpF,UAAW4D,EAAQuB,KACnBtB,IAAI,0BACJG,cAAY,OACZF,IAAI,sCAGR,kBAAC+wC,EAAD,CAAKnjC,KAAK,cAAcyW,KAAK,YAC5Bhe,EAAUvD,gBAAkB9L,EAAW+L,eACtC,kBAACguC,EAAD,CAAKnjC,KAAK,WAAWyW,KAAK,UAE3Bhe,EAAUvD,gBAAkB9L,EAAW+L,eACtCsD,EAAUU,WAAWC,MAAMC,SAAS,sBAClC,kBAAC8pC,EAAD,CAAKnjC,KAAK,QAAQyW,KAAK,wBAG5Bhe,EAAUvD,gBAAkB9L,EAAWiM,gBACtC,mBA1Da,SAAC/L,GAAD,OACnB,kBAAC0F,GAAA,EAAD,CACED,UAAWq0C,IACX73C,UAAU,OACV0D,GAAI3F,EAAMmtB,KACVnkB,cAAA,UAAgBuqC,aAAYvzC,EAAM0W,MAAlC,UAEA,kBAAC3N,EAAA,EAAD,CAAY/D,UAAW4D,EAAQyB,QAASrK,EAAM0W,SAmD1C,CAAcA,KAAK,UAAUyW,KAAK,WAElC,6BACE,yBACEnM,IAAKg5B,EACLK,gBAAen0B,EAAO,sBAAmBnV,EACzCupC,gBAAc,OACdphC,QAxCS,WACnBghC,GAAQ,SAACK,GAAD,OAAeA,MAwCbvxC,cAAY,gBAEZ,kBAACD,EAAA,EAAD,CAAY/D,UAAW4D,EAAQmB,eAC5BoF,EAAUqrC,YAAV,cACUrrC,EAAUqrC,aACjB,UACJ,kBAAC,KAAD,CAAmBx1C,UAAW4D,EAAQ0B,sBAG1C,kBAACmwC,GAAA,EAAD,CACEv0B,KAAMA,EACNw0B,SAAUV,EAAU7pC,QACpBP,UAAMmB,EACN4pC,YAAU,EACVC,eAAa,EACbzzC,GAAG,cACH8pC,UAAU,aACVjsC,UAAW4D,EAAQ6B,iBAElB,gBAAGowC,EAAH,EAAGA,gBAAiB5J,EAApB,EAAoBA,UAApB,OACC,kBAAC6J,GAAA,EAAD,iBACMD,EADN,CAEEz1C,MAAO,CACL21C,gBACgB,WAAd9J,EAAyB,cAAgB,mBAG7C,kBAACvnC,EAAA,EAAD,CAAO1E,UAAW4D,EAAQ4B,mBACxB,kBAACwwC,GAAA,EAAD,CAAmBC,YAAalB,GAC9B,kBAACmB,GAAA,EAAD,CACEC,cAAej1B,EACf/e,GAAG,iBACH4S,UAAWogC,EACX/0C,MAAO,CAAE5B,QAAS,IAElB,kBAAC0X,GAAA,EAAD,CACElS,cAAY,wBACZkQ,QAAS,oBAAA1M,EAAAC,OAAA,gDACPytC,GAAQ,GAERxrC,IAHO,sCAKTtJ,MAAO,CACLxC,MAAO,OACPyG,WAAY,MACZC,cAAe,QAGjB,kBAACP,EAAA,EAAD,6BCpJbqyC,GAAY,WACvB,IAAMxyC,EAAUhD,KACVuJ,EAAY/D,IAEZiwC,EAAa,SAACr7C,GAMlB,OAAIA,EAAMs7C,OAEN,kBAAC51C,GAAA,EAAD,CACE6qB,KAAMvwB,EAAMmtB,KACZrV,OAAO,SACP0Y,IAAI,sBACJxrB,UAAS,UAAK4D,EAAQ+b,WAAb,YAA2B/b,EAAQgc,gBAC5C5b,cAAaonB,qBAAUpwB,EAAM0W,OAE5B1W,EAAM0W,MAKT,kBAAChR,GAAA,EAAD,CACED,UAAWq0C,IACXn0C,GAAI3F,EAAMmtB,KACVnoB,UAAS,UAAMhF,EAAM6kB,UAAiC,GAArBjc,EAAQ+b,WAAhC,YACP/b,EAAQgc,gBAEV5b,cAAaonB,qBAAUpwB,EAAM0W,OAE5B1W,EAAM0W,OAMT6kC,EAAgBj3C,YAAW,CAC/B9C,KAAK,aACH0iB,UzD9CsB,QrCDe,CACzChe,YAAa,OACbC,aAAc,U8F2CQ7B,CAKnB4gB,MAEH,OACE,oCACE,kBAACq2B,EAAD,CAAev2C,UAAW4D,EAAQwb,gBAClC,4BAAQpf,UAAW4D,EAAQqb,QACzB,kBAACs3B,EAAD,CAAev2C,UAAW4D,EAAQwb,eAChC,yBAAKpf,UAAW4D,EAAQyb,mBACtB,kBAACtb,EAAA,EAAD,CAAY/D,UAAW4D,EAAQ0b,YAhDnB,iDAoDd,0BAAMtf,UAAW4D,EAAQ2b,gBACvB,kBAAC82B,EAAD,CAAY3kC,KAAK,iBAAiByW,KAAK,8DAA8DmuB,QAAM,IAC3G,kBAACD,EAAD,CAAY3kC,KAAK,qBAAqByW,KAAK,8DAA8DmuB,QAAM,IAC/G,kBAACD,EAAD,CAAY3kC,KAAK,cAAcyW,KAAK,YAClChe,EAAUvD,gBAAmB9L,EAAW+L,eAAiB,kBAACwvC,EAAD,CAAY3kC,KAAK,WAAWyW,KAAK,WAE9F,yBAAKnoB,UAAW4D,EAAQyb,mBACtB,kBAAC,GAAD,CAAkBrf,UAAW4D,EAAQmZ,WACrC,kBAAChZ,EAAA,EAAD,CACE/D,UAAS,UAAK4D,EAAQ0b,WAAb,YAA2B1b,EAAQic,YAD9C,mBAGmB,IACjB,kBAACw2B,EAAD,CAAY3kC,KAAK,cAAcyW,KAAK,qDAAqDtI,WAAS,EAACy2B,QAAM,UC1E1G11C,GAAYC,aAAW,SAACtB,GAAD,MAAmB,CACrDi3C,SAAU,CACRt3B,UAAW,QACX7e,SAAU,WACVe,QAAS,OACTsE,cAAe,SACf3E,SAAU,UAEZ9F,SAAU,CACRmG,QAAS,OACT8C,SAAU,EACVwB,cAAe,cCRN+wC,GAAY,SAACz7C,GACxB,IAAM4I,EAAUhD,KAChB,OACE,yBAAKZ,UAAW4D,EAAQ4yC,UACtB,kBAAC,GAAD,MACA,yBAAKx2C,UAAW4D,EAAQ3I,UAAWD,EAAMC,UACzC,kBAAC,GAAD,QCTO2F,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLktB,SAAU,CACR9uB,UAAW,QAEb8lB,MAAO,CACL9lB,UAAW,QAEbwa,YAAa,CACXxa,UAAW,OAEb+4C,YAAa,CACX/4C,UAAW,OACXqD,aAAc,QAEhB21C,MAAO,CACL/4C,MAAO,QAETg5C,UAAW,CACTh5C,MAAO,aChBAi5C,GAAqB,WAChC,IAAMjzC,EAAUhD,KAEVwM,EAAc,SAACpS,GAKnB,OACE,6BACE,kBAAC+I,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQ6oB,UACzCzxB,EAAMqgB,OAET,yBAAKxX,IAAK7I,EAAMyoB,MAAOzjB,UAAW4D,EAAQ6f,QAC1C,kBAAC1f,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQuU,aAA5C,0BAGA,6BACE,4BACGnd,EAAM87C,QAAQ3+B,YAAYxH,KAAI,SAAComC,EAAiBlmC,GAC/C,OACE,wBAAIC,IAAG,UAAK9V,EAAMqgB,MAAX,YAAoBxK,IACzB,kBAAC9M,EAAA,EAAD,KACGgzC,SAOb,kBAAChzC,EAAA,EAAD,CAAYhE,QAAQ,MAApB,yBAGA,yBAAKC,UAAW4D,EAAQ8yC,aACtB,2BAAO12C,UAAW4D,EAAQ+yC,OACxB,+BACGjmC,iBAAM1V,EAAM87C,QAAQE,aAAc,GAAGrmC,KAAI,SAACsmC,EAAWpmC,GACpD,OACE,wBAAIC,IAAG,UAAK9V,EAAMqgB,MAAX,sBAA8BxK,IAClComC,EAAUtmC,KAAI,SAAChO,GACd,OACE,wBAAImO,IAAKnO,EAAM3C,UAAW4D,EAAQgzC,WAChC,kBAAC7yC,EAAA,EAAD,KACGpB,gBAe3B,OACE,6BACE,kBAACoB,EAAA,EAAD,CAAYhE,QAAQ,KAAKoC,GAAG,qBAAqBnC,UAAW4D,EAAQ6oB,UAApE,uBAGA,kBAACrf,EAAD,CACEiO,MAAM,cACNoI,MAAM,oCACNqzB,QAASjzB,KAEX,kBAACzW,EAAD,CACEiO,MAAM,eACNoI,MAAM,qCACNqzB,QAAShzB,KAEX,kBAAC1W,EAAD,CACEiO,MAAM,eACNoI,MAAM,qCACNqzB,QAASI,KAEX,kBAAC9pC,EAAD,CACEiO,MAAM,aACNoI,MAAM,mCACNqzB,QAAS7yB,KAEX,kBAAC7W,EAAD,CACEiO,MAAM,WACNoI,MAAM,iCACNqzB,QAAS5yB,KAEX,kBAAC9W,EAAD,CACEiO,MAAM,UACNoI,MAAM,gCACNqzB,QAAS3yB,KAEX,kBAAC/W,EAAD,CACEiO,MAAM,YACNoI,MAAM,kCACNqzB,QAASzyB,KAEX,kBAACjX,EAAD,CACEiO,MAAM,uBACNoI,MAAM,yCACNqzB,QAASK,KAEX,kBAAC/pC,EAAD,CACEiO,MAAM,eACNoI,MAAM,qCACNqzB,QAASvyB,KAEX,kBAACnX,EAAD,CACEiO,MAAM,SACNoI,MAAM,+BACNqzB,QAAStyB,KAEX,kBAACpX,EAAD,CACEiO,MAAM,SACNoI,MAAM,+BACNqzB,QAASryB,KAEX,kBAACrX,EAAD,CACEiO,MAAM,gBACNoI,MAAM,sCACNqzB,QAASM,OAWXD,GAAqC,CACzCh/B,YAAa,CACX,uIACA,0EACA,iEACA,oDACA,qDACA,sCAEF6+B,aAAc,CACZ,iBACA,gBACA,gBACA,qDACA,aACA,kBACA,qBACA,cACA,WACA,eACA,YAIE9yB,GAA+B,CACnC/L,YAAa,CACX,kHACA,uEACA,gJACA,iHAEF6+B,aAAc,CACZ,cACA,cACA,UACA,kBACA,kBACA,mDACA,mBACA,aACA,uBACA,SACA,YAIElzB,GAAmC,CACvC3L,YAAa,CAAC,+CAAD,qeAKb6+B,aAAc,CACZ,gBACA,cACA,kBACA,aACA,gBACA,kBACA,QACA,WACA,gBACA,WACA,aACA,kBAIE/yB,GAAgC,CACpC9L,YAAa,CACX,iJACA,0EACA,kEACA,+CACA,uCAEF6+B,aAAc,CACZ,mBACA,SACA,kBAIE7yB,GAA8B,CAClChM,YAAa,CAAC,0EAAD,uiBAOb6+B,aAAc,CACZ,yBACA,aACA,oBACA,8BAIE3yB,GAA+B,CACnClM,YAAa,CAAC,kFAAD,6LAKb6+B,aAAc,CACZ,oBACA,aACA,YACA,mBACA,0BACA,SACA,gBAIExyB,GAA6B,CACjCrM,YAAa,CAAC,mIAAD,8fAMb6+B,aAAc,CACZ,6BACA,kCACA,oDACA,cACA,0BACA,qBAIEzyB,GAAmC,CACvCpM,YAAa,CACX,qGACA,oBACA,wDACA,sEACA,mDACA,wFACA,0CAEF6+B,aAAc,CACZ,sBACA,yBAIEI,GAAmC,CACvCj/B,YAAa,CACX,wFACA,6DAEF6+B,aAAc,CACZ,sBACA,iBACA,qBAIEnzB,GAAkC,CACtC1L,YAAa,CACX,iJACA,kEAEF6+B,aAAc,CACZ,cACA,+BACA,kBAIEE,GAAkC,CACtC/+B,YAAa,CACX,yEACA,0BAEF6+B,aAAc,CACZ,sBACA,kBACA,YACA,SACA,iBAIEvyB,GAA6B,CACjCtM,YAAa,CACX,wFACA,qCACA,0BAEF6+B,aAAc,CACZ,4BACA,0BACA,oBACA,qCC5USp2C,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL83C,UAAW,CACT15C,UAAW,OACXqD,aAAc,QAEhBs2C,cAAe,CACbl2C,QAAS,QAEXm2C,eAAgB,CACdn7C,gBAAiBmD,EAAMlE,QAAQC,QAAQG,MACvCyF,YAAa,OACbC,aAAc,OACdkD,WAAY,OACZC,cAAe,OACf1G,MAAO,cACPN,OAAQ,cACRiE,YAAa,QAEfi2C,WAAY,CACVx2C,aAAc,QAEhBy2C,WAAY,CACVr2C,QAAS,OACTsE,cAAe,UAEjBgyC,UAAW,CACT12C,aAAc,QAEhB22C,SAAU,CACR/5C,MAAO,eAETg6C,YAAa,CACX53B,UAAW,oBACXpiB,MAAO,SAETi6C,eAAgB,CACdl6C,UAAW,OACXqD,aAAc,QAEhB82C,0BAA2B,CACzB92C,aAAc,QAEhB+2C,cAAe,CACb/2C,aAAc,YC5CPJ,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACLktB,SAAU,CACR9uB,UAAW,QAEb8lB,MAAO,CACL9lB,UAAW,OACXC,MAAO,SAETua,YAAa,CACXxa,UAAW,OAEbq6C,aAAc,CACZh3C,aAAc,YCXPi3C,GAAY,WACvB,IAAMr0C,EAAUhD,KAEVs3C,EAAc,SAACl9C,GACnB,OACE,6BACE,kBAAC+I,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQ6oB,UACzCzxB,EAAMqgB,OAET,yBAAKxX,IAAK7I,EAAMyoB,MAAOzjB,UAAW4D,EAAQ6f,QAC1C,kBAAC1f,EAAA,EAAD,CAAY/D,UAAW4D,EAAQuU,aAC5Bnd,EAAMgO,MAET,yBAAKhJ,UAAW4D,EAAQo0C,cACtB,4BACGh9C,EAAMm9C,SAASxnC,KAAI,SAACynC,EAASvnC,GAC5B,OACE,wBAAIC,IAAG,UAAK9V,EAAMqgB,MAAX,YAAoBxK,IACzB,kBAAC9M,EAAA,EAAD,KACGq0C,WAWnB,OACE,6BACE,kBAACr0C,EAAA,EAAD,CAAYhE,QAAQ,KAAKoC,GAAG,YAAYnC,UAAW4D,EAAQ6oB,UAA3D,cAGA,kBAACyrB,EAAD,CACE78B,MAAM,4BACNrS,KAAK,yIACLmvC,SAAU,CACR,yBACA,cACA,eAEF10B,MAAM,wCAER,kBAACy0B,EAAD,CACE78B,MAAM,wCACNrS,KAAK,uIACLmvC,SAAU,CACR,oBACA,sBACA,iCAEF10B,MAAM,kDAER,kBAACy0B,EAAD,CACE78B,MAAM,8CACNrS,KAAK,iFACLmvC,SAAU,CACR,SACA,eACA,6BAEF10B,MAAM,4CAER,kBAACy0B,EAAD,CACE78B,MAAM,uBACNrS,KAAK,sIACLmvC,SAAU,CACR,4BACA,iBACA,uBAEF10B,MAAM,qCCtED40B,GAAW,WACtB,IAAMz0C,EAAUhD,KAEV03C,EAAU,kBAAM,wBAAIt4C,UAAW4D,EAAQg0C,eAEvCW,EAAmB,SAACv9C,GAMxB,OACE,oCACE,kBAAC+I,EAAA,EAAD,CACEhE,QAAQ,KACRoC,GAAInH,EAAMmH,GACVnC,UACEhF,EAAMw9C,UACF50C,EAAQk0C,0BACRl0C,EAAQi0C,gBAGb78C,EAAMqgB,OAERrgB,EAAMgO,KAAK2H,KAAI,SAAC8nC,EAAU5nC,GAAX,OACd,kBAAC9M,EAAA,EAAD,CACE/D,UAAW4D,EAAQm0C,cACnBjnC,IAAG,UAAK9V,EAAMmH,GAAX,YAAiB0O,IAEnB4nC,QAOLC,EAAQ,SAACC,GACb,OAAO,IAAIC,SAAQ,SAACC,GAAD,OAAaC,WAAWD,EAASF,OAetD,OAZAtvC,qBAAU,YACe,mBAAA7B,EAAAC,OAAA,oDACjBP,OAAOkD,SAAS2uC,KADC,kCAAAvxC,EAAA,MAEbkxC,EAAM,MAFO,QAGbM,EAAUzjB,SAAS0jB,cAAc/xC,OAAOkD,SAAS2uC,QAC1CC,EAAQE,iBAJF,qCAQvBC,KACC,IAGD,kBAAC,GAAD,KACE,kBAACp1C,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQyzC,WAA5C,+BAGA,yBAAKr3C,UAAW4D,EAAQ0zC,eACtB,yBAAKt3C,UAAW4D,EAAQ2zC,gBACtB,kBAACxzC,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQ4zC,YAA5C,eAGA,kBAACzzC,EAAA,EAAD,CAAY/D,UAAW4D,EAAQ6zC,YAC7B,uBAAGlsB,KAAK,mBAAmBvrB,UAAW4D,EAAQ8zC,WAA9C,cAGA,uBAAGnsB,KAAK,2BAA2BvrB,UAAW4D,EAAQ8zC,WAAtD,wBAGA,uBAAGnsB,KAAK,YAAYvrB,UAAW4D,EAAQ8zC,WAAvC,+BAGA,uBAAGnsB,KAAK,qBAAqBvrB,UAAW4D,EAAQ8zC,WAAhD,qBAGA,uBAAGnsB,KAAK,kBAAkBvrB,UAAW4D,EAAQ8zC,WAA7C,cAGA,uBAAGnsB,KAAK,sBAAsBvrB,UAAW4D,EAAQ8zC,WAAjD,kBAGA,uBAAGnsB,KAAK,YAAYvrB,UAAW4D,EAAQ8zC,WAAvC,0BAKJ,yBAAK13C,UAAW4D,EAAQ+zC,UACtB,kBAACY,EAAD,CACEp2C,GAAG,aACHkZ,MAAM,oDACNrS,KAAM,CAAC,wNAAD,2bAKNwvC,WAAS,IAEVF,IACD,kBAAC,GAAD,MACCA,IACD,kBAACC,EAAD,CACEp2C,GAAG,MACHkZ,MAAM,8BACNrS,KAAM,CAAC,0NAIRsvC,IACD,kBAACC,EAAD,CACEp2C,GAAG,eACHkZ,MAAM,oBACNrS,KAAM,CAAC,oUAAD,+LAMPsvC,IACD,kBAAC,GAAD,MACCA,IACD,kBAACC,EAAD,CACEp2C,GAAG,gBACHkZ,MAAM,iBACNrS,KAAM,CAAC,iFAAD,mHAKPsvC,IACD,kBAACC,EAAD,CACEp2C,GAAG,MACHkZ,MAAM,uBACNrS,KAAM,CAAC,2LCxINowC,GAAO,WAClB,OACE,kBAAC,GAAD,OCDSx4C,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL85C,6BAA8B,CAC5Bn8C,aAAa,aAAD,OAAe1B,OAAY,MAEzC89C,oBAAoB,aAClB19C,WAAYJ,QAAa,KxGRY,CACzC0F,YAAa,OACbC,aAAc,QwGKO,CAGjBJ,SAAU,QACVO,SAAU,SACV1D,MAAO,OACP2D,YAAa,OACb1D,WAAY,OACZyG,cAAe,OACflD,QAAS,OACTyD,eAAgB,kBAElB00C,yBAA0B,CACxBj4C,SAAU,SAEZk4C,qBAAsB,CAAEn1C,WAAY,OAAQC,cAAe,OAC3Dm1C,wBAAyB,CACvBn1C,cAAe,QAEjBo1C,qBAAsB,CACpBp1C,cAAe,QAEjBq1C,oBAAqB,CACnB97C,WAAY,OACZD,MAAO,QACPN,OAAQ,QACRlB,gBAAiBZ,OAAY,IAC7B6B,aAAc,MACdmH,UAAW,SACXH,WAAY,OACZC,cAAe,OACf3G,UAAW,QAEbi8C,iBAAkB,CAChBh+C,WAAYJ,QAAa,KACzB0I,SAAU,GAEZ21C,8BAA8B,exG5CS,CACzC34C,YAAa,OACbC,aAAc,QwG0CiB,CAE3BI,YAAa,OACb1D,WAAY,OACZwG,WAAY,OACZC,cAAe,OACfvD,SAAU,QACVO,SAAU,SACV1D,MAAO,OACPsG,SAAU,IAEZ41C,qBAAsB,CACpBl8C,MAAO,SAETm8C,mBAAoB,CAClBn8C,MAAO,QAETo8C,wBAAyB,CACvBr8C,UAAW,QAEbs8C,0BAA2B,CACzBr8C,MAAO,QACPwD,QAAS,OACT6D,WAAY,YAEdi1C,sBAAuB,CACrBh2C,SAAU,EACV3C,YAAa,QAEf44C,aAAc,CACZv7C,SAAU,OACVvC,MAAOb,OAAY,MAErB4+C,WAAY,CACVx7C,SAAU,OACVvC,MAAOb,OAAY,MAErB6+C,aAAc,CACZ18C,UAAW,OACX4D,YAAa,QAEfwnB,UAAW,CACT1sB,MAAOkD,EAAMlE,QAAQ2tB,MAAMztB,MAE7B++C,oBAAqB,CACnB38C,UAAW,QAEb48C,YAAa,CACX58C,UAAW,OACX6G,UAAW,SACX5G,MAAO,QACPhC,WAAYJ,MAAW,MAEzBg/C,WAAY,CACVp5C,QAAS,OACTyD,eAAgB,iBAElB41C,eAAgB,CACdl5C,YAAa,QAEfm5C,sBAAuB,CACrB/8C,UAAW,OACXqD,aAAc,YC/Fb,SAAS25C,GAActzC,GAG5B,MADW,8JACD8lC,KAAKyN,OAAOvzC,GAAOwzC,eAGxB,ICnBKC,GCAAC,GCAAC,GHmBCC,GAAa,SAACjgD,GAAkB,IAAD,EACgBiN,oBAAS,GADzB,mBACnCizC,EADmC,KACZC,EADY,KAEpCC,GAAgBpgD,EAAMqgD,YAAcV,IAAe3/C,EAAMqM,OAEzDi0C,EAAgBJ,GAAyBlgD,EAAMguB,MAErD,OACA,kBAAC5U,GAAA,EAAD,CACEjS,GAAG,QACH6B,cAAY,QACZhE,UAAWhF,EAAMgF,UACjBoR,MAAM,gBACN4X,MAAOsyB,EACPtxC,MAAOhP,EAAMqM,MACbqN,WAAY,CAAEi7B,UAAW,KACzB18B,OAAQ,WACNkoC,GAA0BC,IAE5BzpC,SAAU,SAAC4pC,GACLH,GACFD,GAAyB,GAE3BngD,EAAMwgD,SAASD,EAAIzoC,OAAO9I,QAE5B4lC,WACEsL,EACI,sCACAlgD,EAAMguB,OAAShuB,EAAMygD,eAE3BxnC,SAAUjZ,EAAM0gD,WIxCPC,GAAkB,SAAC3gD,GAM9B,IAAM4I,EAAUhD,KAEhB,OACE,0BACEZ,UAAW4D,EAAQk2C,qBACnBh3B,SAAU,SAAC2sB,GACTA,EAAEsD,iBACF/3C,EAAM4gD,uBAGR,kBAAC73C,EAAA,EAAD,CAAY/D,UAAW4D,EAAQ61C,wBAAyB15C,QAAQ,MAAhE,oBAGA,kBAAC,GAAD,CACEsH,MAAOrM,EAAMqM,MACbm0C,SAAUxgD,EAAMwgD,SAChBxyB,MAAOhuB,EAAM6gD,uBAAyBC,GAAqBC,YAC3DL,QACE1gD,EAAM6gD,uBACNC,GAAqBE,yBAEvBP,eACE,qGACiE,IAC/D,kBAAC/6C,GAAA,EAAD,CAAMD,UAAWq0C,IAAYn0C,GAAG,UAAhC,WAEQ,KAGZX,UAAW4D,EAAQm2C,qBAErB,kBAAC,EAAD,CACEp3C,KAAK,SACLqB,cAAY,eACZiQ,UACG0mC,GAAc3/C,EAAMqM,QACrBrM,EAAM6gD,uBACJC,GAAqBE,yBAEzBh8C,UAAW4D,EAAQy2C,aACnBx6C,eACE7E,EAAM6gD,uBACNC,GAAqBE,0BAXzB,2BAgBA,kBAAC,EAAD,CACEj8C,QAAQ,WACRkU,SACEjZ,EAAM6gD,uBACNC,GAAqBE,yBAEvBr7C,GAAG,IACHX,UAAW4D,EAAQy2C,cAPrB,cAWCr/C,EAAM6gD,uBAAyBC,GAAqBG,aACnD,kBAACl4C,EAAA,EAAD,CAAY/D,UAAW4D,EAAQmlB,WAC7B,6BADF,6C,sBCtEKnoB,GAAYC,aAAW,SAACtB,GACnC,MAAO,CACL28C,uBAAwB,CACtB96C,QAAS,OACTmnB,SAAU,UAEZ4zB,cAAe,CACbx+C,UAAW,OACXC,MAAO,SAETw+C,sBAAuB,CACrB//C,MAAOkD,EAAMlE,QAAQ2tB,MAAMztB,KAC3BqD,SAAU,OACVjB,UAAW,OAEb0+C,qBAAsB,CACpB1+C,UAAW,MACXC,MAAO,QACPwD,QAAS,OACTyD,eAAgB,iBAElBy3C,2BAA4B,CAC1Bl7C,QAAS,gBAEXm7C,wBAAyB,CACvBn7C,QAAS,OACT6D,WAAY,SACZtH,UAAW,OAEb6+C,yBAA0B,CACxB59C,SAAU,OACVsC,YAAa,OAEfu7C,6BAA8B,CAC5BpgD,MAAOb,QAAa,U,0CCnCbkhD,GAAU,SAAC1hD,GAAD,OACrB,yBACE4C,MAAM,IACNN,OAAO,IACPuE,QAAQ,UACRC,KAAK,OACLC,MAAM,8BAEN,4BAAQkb,GAAG,IAAIC,GAAG,IAAIC,EAAE,IAAIrb,KAAM9G,EAAMqB,UCMtCsgD,GAAe,SAACC,GAAD,MAAsB,QAAQzP,KAAKyP,IAClDC,GAAe,SAACD,GAAD,MAAsB,QAAQzP,KAAKyP,IAClDE,GAAY,SAACF,GAAD,MAAsB,QAAQzP,KAAKyP,IAE/CG,GAAsB,SAACH,GAAD,MAE1B,0CAA0CzP,KAAKyP,IAC3CI,GAA6B,SAACJ,GAAD,OACjCA,EAAS7vC,QAAU,GAAK6vC,EAAS7vC,QAAU,IAEhCkwC,GAAmB,SAACL,GAAD,OAC9BE,GAAUF,IACVG,GAAoBH,IACpBC,GAAaD,IACbD,GAAaC,IACbI,GAA2BJ,IAUhBM,GAAsB,SAACliD,GAClC,IAAM4I,EAAUhD,KADmC,EAGXqH,oBAAS,GAHE,mBAG5Ck1C,EAH4C,KAG9BC,EAH8B,OAIPn1C,mBAASjN,EAAM4hD,UAJR,mBAI5CS,EAJ4C,KAI5BC,EAJ4B,KAM7CC,EAA0B,WAC9BH,GAAiBD,IAGnB,OACE,yBAAKn9C,UAAWhF,EAAMgF,WACpB,yBAAKA,UAAW4D,EAAQs4C,wBACtB,kBAAC3qC,GAAA,EAAD,CAAavR,UAAW4D,EAAQu4C,eAC9B,kBAACqB,GAAA,EAAD,CAAYC,QAAQ,YAApB,YACA,kBAACC,GAAA,EAAD,CACEv7C,GAAG,WACH6B,cAAY,WACZrB,KAAMw6C,EAAe,OAAS,WAC9Bn9C,UAAW4D,EAAQu4C,cACnBnyC,MAAOhP,EAAM4hD,SACbjrC,SAAU,SAACC,GACT5W,EAAM2iD,YAAY/rC,EAAMkB,OAAO9I,OAC3B4H,EAAMkB,OAAO9I,QAAUqzC,EACzBriD,EAAM4iD,uBAAsB,GAE5B5iD,EAAM4iD,uBAAsB,IAGhC1K,aACE,kBAACC,GAAA,EAAD,CAAgB9yC,SAAS,OACvB,kBAAC2T,GAAA,EAAD,CACEvC,aAAW,6BACXyC,QAASqpC,EACTM,YAAa,SAACjsC,GACZA,EAAMmhC,mBAGPoK,EAAe,kBAAC,KAAD,MAAiB,kBAAC,KAAD,WAM3C,kBAAC5rC,GAAA,EAAD,CAAavR,UAAW4D,EAAQu4C,eAC9B,kBAACqB,GAAA,EAAD,CAAYC,QAAQ,iBAAiBz0B,MAAOhuB,EAAM8iD,oBAAlD,mBAGA,kBAACJ,GAAA,EAAD,CACEv7C,GAAG,iBACH6B,cAAY,iBACZrB,KAAMw6C,EAAe,OAAS,WAC9BnzC,MAAOqzC,EACP1rC,SAAU,SAACC,GACT0rC,EAAkB1rC,EAAMkB,OAAO9I,OAC3BhP,EAAM4hD,WAAahrC,EAAMkB,OAAO9I,MAClChP,EAAM4iD,uBAAsB,GAE5B5iD,EAAM4iD,uBAAsB,IAGhC50B,MAAOhuB,EAAM8iD,mBACb5K,aACE,kBAACC,GAAA,EAAD,CAAgB9yC,SAAS,OACvB,kBAAC2T,GAAA,EAAD,CACEvC,aAAW,6BACXyC,QAASqpC,EACTM,YAAa,SAACjsC,GACZA,EAAMmhC,mBAGPoK,EAAe,kBAAC,KAAD,MAAiB,kBAAC,KAAD,UAKxCniD,EAAM8iD,oBACL,yBAAK99C,UAAW4D,EAAQw4C,uBAAxB,6BAMN,yBAAKp8C,UAAW4D,EAAQy4C,sBACtB,yBAAKr8C,UAAW4D,EAAQ04C,4BACtB,yBAAKt8C,UAAW4D,EAAQ24C,yBACtB,kBAAC,GAAD,CACElgD,MACEsgD,GAAa3hD,EAAM4hD,UACfphD,OAAY,KACZA,OAAY,OAGpB,kBAACuI,EAAA,EAAD,CACE/D,UAAS,UAAK4D,EAAQ44C,yBAAb,YACPG,GAAa3hD,EAAM4hD,UACf,GACAh5C,EAAQ64C,+BAJhB,4BAUF,yBAAKz8C,UAAW4D,EAAQ24C,yBACtB,kBAAC,GAAD,CACElgD,MACEwgD,GAAa7hD,EAAM4hD,UACfphD,OAAY,KACZA,OAAY,OAGpB,kBAACuI,EAAA,EAAD,CACE/D,UAAS,UAAK4D,EAAQ44C,yBAAb,YACPK,GAAa7hD,EAAM4hD,UACf,GACAh5C,EAAQ64C,+BAJhB,4BAUF,yBAAKz8C,UAAW4D,EAAQ24C,yBACtB,kBAAC,GAAD,CACElgD,MACEygD,GAAU9hD,EAAM4hD,UAAYphD,OAAY,KAAOA,OAAY,OAG/D,kBAACuI,EAAA,EAAD,CACE/D,UAAS,UAAK4D,EAAQ44C,yBAAb,YACPM,GAAU9hD,EAAM4hD,UACZ,GACAh5C,EAAQ64C,+BAJhB,gBAWJ,yBAAKz8C,UAAW4D,EAAQ04C,4BACtB,kBAACzS,GAAA,EAAD,CACEoC,UAAU,QACV5wB,MAAK,0DAEL,yBAAKrb,UAAW4D,EAAQ24C,yBACtB,kBAAC,GAAD,CACElgD,MACE0gD,GAAoB/hD,EAAM4hD,UACtBphD,OAAY,KACZA,OAAY,OAGpB,kBAACuI,EAAA,EAAD,CACE/D,UAAS,UAAK4D,EAAQ44C,yBAAb,YACPO,GAAoB/hD,EAAM4hD,UACtB,GACAh5C,EAAQ64C,+BAJhB,2BAWJ,yBAAKz8C,UAAW4D,EAAQ24C,yBACtB,kBAAC,GAAD,CACElgD,MACE2gD,GAA2BhiD,EAAM4hD,UAC7BphD,OAAY,KACZA,OAAY,OAGpB,kBAACuI,EAAA,EAAD,CACE/D,UAAS,UAAK4D,EAAQ44C,yBAAb,YACPQ,GAA2BhiD,EAAM4hD,UAC7B,GACAh5C,EAAQ64C,+BAJhB,2BC5LCsB,GAA6B,SAAC/iD,GACzC,IAAM4I,EAAUhD,KAD0C,EAGNqH,oBAAS,GAHH,mBAGnD61C,EAHmD,KAG/BF,EAH+B,KAKpDI,EAAiBhjD,EAAMijD,aAAe,KAC1C,oCACE,kBAACl6C,EAAA,EAAD,CAAYhE,QAAQ,KAAKC,UAAW4D,EAAQ02C,qBAA5C,YAGA,kBAAC,GAAD,CACEsC,SAAU5hD,EAAM4hD,SAChBe,YAAa3iD,EAAM2iD,YACnBG,mBAAoBA,EACpBF,sBAAuBA,IAExB5iD,EAAM0L,QAAUo1C,GAAqBoC,8BACpC,kBAACn6C,EAAA,EAAD,CAAY/D,UAAW4D,EAAQmlB,WAC7B,6BADF,4CAQN,OACE,0BACE/oB,UAAW4D,EAAQk2C,qBACnBh3B,SAAU,SAAC2sB,GACTA,EAAEsD,iBACG/3C,EAAMijD,aAGTjjD,EAAMmjD,aAFDL,GAAoB9iD,EAAMmjD,eAMnC,kBAACp6C,EAAA,EAAD,CAAY/D,UAAW4D,EAAQ61C,wBAAyB15C,QAAQ,MAAhE,sBAIA,kBAACgE,EAAA,EAAD,CAAY/D,UAAW4D,EAAQ81C,sBAC5B1+C,EAAMijD,cACL,qKAGE,6BACA,8BANN,uGAYA,yBAAKj+C,UAAW4D,EAAQq2C,2BACtB,kBAAC7lC,GAAA,EAAD,CACE4U,MAAOhuB,EAAM0L,QAAUo1C,GAAqBsC,wBAC5CxO,WACE50C,EAAM0L,QAAUo1C,GAAqBsC,yBACrC,qCAEFp6C,cAAY,mBACZ7B,GAAG,mBACHiP,MAAM,oBACNsD,WAAY,CAAEi7B,UAAW,GACzB3vC,UAAW4D,EAAQs2C,sBACnBlwC,MAAOhP,EAAMqjD,KACb1sC,SAAU,SAACC,GACT5W,EAAMsjD,QAAQ1sC,EAAMkB,OAAO9I,UAG/B,kBAAC,EAAD,CACEkK,QAASlZ,EAAMujD,YACfp8C,GAAG,aACHpC,QAAQ,WACRkU,SAAUjZ,EAAM0L,QAAUo1C,GAAqB0C,cAC/C3+C,eAAgB7E,EAAM0L,QAAUo1C,GAAqB0C,eALvD,gBAUDxjD,EAAM0L,QAAUo1C,GAAqB2C,uBACpC,kBAAC16C,EAAA,EAAD,CAAY/D,UAAW4D,EAAQmlB,WAC7B,6BADF,+DAE+D,IAC7D,kBAACroB,GAAA,EAAD,CAAMD,UAAWq0C,IAAYn0C,GAAG,UAAhC,YAKFq9C,EAEF,8BACE,kBAAC,EAAD,CACE/pC,SACEjZ,EAAM0L,QACNo1C,GAAqB4C,kCAEvB1+C,UAAW4D,EAAQy2C,aACnBt6C,QAAQ,WACRmU,QAASlZ,EAAM2jD,MAPjB,QAWA,kBAAC,EAAD,CACE1qC,WAEmB,KAAfjZ,EAAMqjD,OACLrjD,EAAMijD,cACJjjD,EAAM4hD,SAASxkB,SAAWp9B,EAAM4hD,UAC/BK,GAAiBjiD,EAAM4hD,YACtBkB,KAEP9iD,EAAM0L,QACJo1C,GAAqB4C,kCAEzB16C,cAAY,SACZhE,UAAW4D,EAAQy2C,aACnB13C,KAAK,SACL9C,eACE7E,EAAM0L,QACNo1C,GAAqB4C,mCAjBzB,UAsBA,kBAAC,EAAD,CACE3+C,QAAQ,WACRkU,SACEjZ,EAAM0L,QACNo1C,GAAqB4C,kCAEvB/9C,GAAG,IACHX,UAAW4D,EAAQy2C,cAPrB,kB,SPpJIS,K,wDAAAA,E,2BAAAA,E,0BAAAA,E,4DAAAA,E,cAAAA,E,2BAAAA,E,8DAAAA,E,4BAAAA,E,eAAAA,Q,cCAAC,K,oBAAAA,E,uCAAAA,E,0BAAAA,E,4BAAAA,E,kBAAAA,E,uBAAAA,E,gBAAAA,E,qBAAAA,E,gBAAAA,E,+BAAAA,Q,cCAAC,K,0BAAAA,E,kBAAAA,E,kBAAAA,E,uBAAAA,E,kBAAAA,E,gBAAAA,E,wCAAAA,E,sBAAAA,E,kBAAAA,E,cAAAA,E,sBAAAA,E,kBAAAA,E,wBAAAA,E,kBAAAA,E,kBAAAA,E,wBAAAA,E,oBAAAA,E,kBAAAA,E,kBAAAA,E,gBAAAA,E,cAAAA,E,gBAAAA,E,kBAAAA,E,8CAAAA,E,oBAAAA,E,gBAAAA,E,8CAAAA,E,gBAAAA,E,oBAAAA,E,2BAAAA,E,+BAAAA,E,kBAAAA,E,oBAAAA,E,oBAAAA,E,gBAAAA,E,uBAAAA,E,+BAAAA,E,kDAAAA,E,YAAAA,E,cAAAA,E,cAAAA,E,oBAAAA,E,kBAAAA,E,cAAAA,E,iEAAAA,E,uBAAAA,E,kBAAAA,E,gCAAAA,E,YAAAA,E,kBAAAA,E,gBAAAA,E,+BAAAA,E,kBAAAA,E,oBAAAA,E,oBAAAA,E,uCAAAA,E,uBAAAA,E,kBAAAA,E,cAAAA,E,yBAAAA,E,2BAAAA,E,qCAAAA,E,kBAAAA,E,kBAAAA,E,oBAAAA,E,gBAAAA,E,YAAAA,E,kBAAAA,E,gBAAAA,E,cAAAA,E,gBAAAA,E,kBAAAA,E,kBAAAA,E,cAAAA,E,gBAAAA,E,kBAAAA,E,YAAAA,E,sBAAAA,E,gBAAAA,E,6BAAAA,E,gBAAAA,E,cAAAA,E,kBAAAA,E,oBAAAA,E,kBAAAA,E,kBAAAA,E,cAAAA,E,sBAAAA,E,YAAAA,E,YAAAA,E,kBAAAA,E,gBAAAA,E,cAAAA,E,yBAAAA,E,kBAAAA,E,cAAAA,E,gBAAAA,E,wBAAAA,E,cAAAA,E,oBAAAA,E,0BAAAA,E,0BAAAA,E,gBAAAA,E,wBAAAA,E,YAAAA,E,gBAAAA,E,kBAAAA,E,kBAAAA,E,kBAAAA,E,cAAAA,E,8BAAAA,E,sBAAAA,E,wBAAAA,E,sBAAAA,E,wBAAAA,E,gBAAAA,E,oBAAAA,E,oBAAAA,E,YAAAA,E,cAAAA,E,mCAAAA,E,wBAAAA,E,sBAAAA,E,gBAAAA,E,wBAAAA,E,kBAAAA,E,gBAAAA,E,oBAAAA,E,kBAAAA,E,wBAAAA,E,kBAAAA,E,kBAAAA,E,cAAAA,E,cAAAA,E,yBAAAA,E,sBAAAA,E,cAAAA,E,kBAAAA,E,oDAAAA,E,0CAAAA,E,gBAAAA,E,YAAAA,E,oBAAAA,E,cAAAA,E,uCAAAA,E,gBAAAA,E,kCAAAA,E,o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","file":"static/js/main.20f009d0.chunk.js","sourcesContent":["import React, { useEffect, PropsWithChildren } from \"react\";\nimport axios, { AxiosRequestConfig, AxiosResponse, Method } from \"axios\";\nimport Cookie from \"js-cookie\";\nimport { useHistory } from \"react-router\";\n\n/**\n * Part of the pattern used in this module based on: https://kentcdodds.com/blog/how-to-use-react-context-effectively\n */\n\ntype Action =\n | { type: \"userLoggedIn\"; payload: UserInfo }\n | { type: \"unauthorized\" };\n\ntype AuthContextState = AuthenticatedContextState | UnauthenticatedContextState;\n\nexport enum AuthStatus {\n Unauthenticated,\n Authenticated,\n}\n\ntype AuthenticatedContextState = UserInfo & {\n authenticated: AuthStatus.Authenticated;\n};\n\nexport type UserInfo = {\n email: string;\n privileges: { roles: string[]; operations: string[] };\n displayName: string;\n};\n\ntype UnauthenticatedContextState = {\n authenticated: AuthStatus.Unauthenticated;\n};\n\ntype AuthenticatedSuccess = {\n ok: true;\n status: number;\n body: T;\n};\n\ntype AuthenticatedFailure = {\n ok: false;\n status: number;\n body: object | string | null;\n};\n\ntype AuthenticatedResponse = AuthenticatedSuccess | AuthenticatedFailure;\n\nexport type AuthenticatedRequestConfig = AxiosRequestConfig & {\n url: string;\n method: Method;\n};\n\ntype AuthContextDispatch = {\n userLoggedIn(userInfo: UserInfo): void;\n authenticatedRequest(\n config: AuthenticatedRequestConfig\n ): Promise>;\n logout(): Promise;\n timeout(): Promise;\n};\n\nexport const AuthStateContext = React.createContext(\n null\n);\nexport const AuthDispatchContext = React.createContext(\n null\n);\n\nexport function useAuthState(): AuthContextState {\n const context = React.useContext(AuthStateContext);\n if (context === null) {\n throw new Error(\"useAuthState must be used within a AuthContextProvider\");\n }\n return context;\n}\n\nexport function useAuthDispatch(): AuthContextDispatch {\n const context = React.useContext(AuthDispatchContext);\n if (context === null) {\n throw new Error(\n \"useAuthDispatch must be used within a AuthContextProvider\"\n );\n }\n return context;\n}\n\nfunction reducer(state: AuthContextState, action: Action): AuthContextState {\n switch (action.type) {\n case \"userLoggedIn\":\n return { authenticated: AuthStatus.Authenticated, ...action.payload };\n case \"unauthorized\":\n return { authenticated: AuthStatus.Unauthenticated };\n default:\n return state;\n }\n}\n\nfunction userLoggedIn(userInfo: UserInfo): Action {\n window.localStorage.setItem(\"etn-auth-user\", userInfo.email);\n return { type: \"userLoggedIn\", payload: userInfo };\n}\n\nfunction userLoggedOut(): Action {\n window.localStorage.removeItem(\"etn-auth-user\");\n window.localStorage.removeItem(\"etn-auth-remember-me\");\n return { type: \"unauthorized\" };\n}\n\nasync function parseErrorBody(\n response: AxiosResponse\n): Promise<{} | string | null> {\n try {\n return response.data;\n } catch (err) {\n try {\n return await JSON.stringify(response.data);\n } catch (err2) {\n return null;\n }\n }\n}\n\n// The presence of an email address indicates a previously successful authentication.\n// This will allow a user to get to a \"private route\". If the token has expired they'll\n// end up getting redirected to the login anyway, after an API call fails.\n// const storedUserEmail = window.localStorage.getItem('etn-auth-user');\nconst initialState: AuthContextState = {\n authenticated: AuthStatus.Unauthenticated, //storedUserEmail ? AuthState.Authenticated : AuthState.Unauthenticated,\n};\n\ntype Props = {\n children: React.ReactNode;\n onUnauthorized?: () => Promise;\n};\n\n/**\n * Component that provides authorization functionality for an app. Put this at the top of the component tree.\n * Use the useAuthState and useAuthDispatch hooks to access the contents of the context.\n */\n// export default function AuthContextProvider(props: { children: React.ReactNode, onUnauthorized?: Function }) {\nconst AuthContextProvider: React.FC = (props: Props) => {\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const [loggingIn, setLoggingIn] = React.useState(true);\n const history = useHistory();\n\n useEffect(() => {\n setLoggingIn(true);\n const silentLogin = async () => {\n const userInfoResponse = await authenticatedRequest({\n url: \"/api/security/currentuser\",\n method: \"GET\",\n });\n\n if (userInfoResponse.ok) {\n dispatch(userLoggedIn(userInfoResponse.body));\n }\n setLoggingIn(false);\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n silentLogin();\n }, [state.authenticated]);\n\n async function authenticatedRequest(\n requestInfo: AuthenticatedRequestConfig\n ): Promise> {\n const response = await axios.request({\n ...requestInfo,\n headers: {\n ...requestInfo.headers,\n \"X-CSRF-TOKEN-ETSP\": Cookie.get(\"X-CSRF-TOKEN-ETSP\") || \"\",\n },\n validateStatus: () => true,\n });\n if (response.status < 300) {\n return {\n ok: true,\n status: response.status,\n body: response.data,\n };\n } else if (\n response.status === 401 &&\n window.localStorage.getItem(\"etn-auth-user\")\n ) {\n const renewResponse = await axios.post(\n `api/security/token/refresh?email=${window.localStorage.getItem(\n \"etn-auth-user\"\n )}`,\n {},\n { validateStatus: () => true }\n );\n\n if (renewResponse.status === 200) {\n // Try the initial request again\n const retryResponse = await axios.request({\n ...requestInfo,\n validateStatus: () => true,\n });\n return {\n ok: true,\n status: retryResponse.status,\n body: retryResponse.data,\n };\n }\n // Unable to renew the token. If we have a function to call, call it.\n if (props.onUnauthorized) {\n // This could allow for some additional customization for handling a failed login\n await props.onUnauthorized();\n }\n\n dispatch({ type: \"unauthorized\" });\n\n return {\n ok: false,\n status: response.status,\n body: null,\n };\n }\n return {\n ok: false,\n status: response.status,\n body: await parseErrorBody(response),\n };\n }\n\n const logout = async (): Promise => {\n try {\n await authenticatedRequest({\n url: \"/api/security/token\",\n method: \"DELETE\",\n });\n } catch (err) {\n // console.error(\"Ignoring issue logging out\", err);\n }\n dispatch(userLoggedOut());\n };\n\n const timeout = async (): Promise => {\n logout();\n history.push(\"/inactive\");\n };\n\n const dispatchHelpers = {\n userLoggedIn: (userInfo: UserInfo): void =>\n dispatch(userLoggedIn(userInfo)),\n authenticatedRequest,\n logout,\n timeout,\n };\n\n if (loggingIn) return
;\n\n return (\n \n \n {props.children}\n \n \n );\n};\n\nexport default AuthContextProvider;\n\nexport const MockAuthContextProvider = (\n props: PropsWithChildren<{\n state: AuthContextState;\n dispatch: AuthContextDispatch;\n }>\n) => (\n \n \n {props.children}\n \n \n);\n","import React from 'react';\r\n\r\nexport const Layout: React.FunctionComponent<{}> = (props) => {\r\n return
{props.children}
;\r\n};\r\n","/* eslint-disable quote-props */\nimport * as PXBThemes from '@pxblue/themes/react';\nimport * as Colors from '@pxblue/colors';\n\nconst BaseTheme = PXBThemes.blue;\n\nexport const TSPTheme = {\n ...BaseTheme,\n palette: {\n ...BaseTheme.palette,\n primary: {\n main: Colors.blue[500],\n light: Colors.blue[50],\n },\n text: {\n ...BaseTheme.palette?.text,\n primary: Colors.gray[800],\n },\n grey: Colors.gray,\n background: {\n default: Colors.white[50],\n paper: Colors.white[50],\n },\n },\n typography: {\n ...BaseTheme.typography,\n fontWeightBold: 600,\n },\n overrides: {\n ...BaseTheme.overrides,\n MuiAppBar: {\n colorPrimary: {\n backgroundColor: Colors.white[50],\n color: Colors.gray[800],\n },\n colorSecondary: {\n backgroundColor: Colors.gray[800],\n color: Colors.white[50],\n },\n },\n MuiExpansionPanel: {\n root: {\n '&::before': {\n backgroundColor: 'transparent',\n },\n },\n rounded: {\n '&:last-child': {\n borderBottomLeftRadius: '2px',\n borderBottomRightRadius: '2px',\n },\n '&:first-child': {\n borderTopLeftRadius: '2px',\n borderTopRightRadius: '2px',\n },\n },\n },\n MuiExpansionPanelDetails: {\n root: {\n backgroundColor: Colors.white[100],\n },\n },\n MuiInputLabel: {\n root: {\n color: Colors.gray[600],\n },\n },\n MuiInput: {\n root: {\n color: Colors.black[700],\n },\n underline: {\n '&::before': {\n borderBottom: `1px solid ${Colors.gray[200]}`,\n },\n // & is a reference to the class name\n // more &'s increases specificity to override the three not()\n // '&:hover:not($disabled):not($focused):not($error):before':\n '&&&&:hover:before': {\n borderBottom: `2px solid ${Colors.blue[200]}`,\n },\n },\n },\n MuiSlider: {\n rail: {\n color: Colors.blue[50],\n borderRadius: '1px',\n height: '4px',\n opacity: '100%',\n },\n track: {\n color: Colors.blue[600],\n borderRadius: '1px',\n height: '4px',\n },\n thumb: {\n color: Colors.blue[600],\n boxShadow: '-1px 2px 2px rgba(0, 0, 0, 0.2)',\n marginTop: '-9px',\n height: '22px',\n width: '22px',\n marginLeft: '0px',\n },\n valueLabel: {\n 'left': '-5px',\n 'backgroundColor': 'transparent',\n 'top': -22,\n 'fontSize': 15,\n '& *': {\n background: 'transparent',\n color: '#000',\n },\n },\n mark: {\n backgroundColor: 'transparent',\n },\n },\n MuiFormLabel: {\n root: {\n color: '#556167',\n },\n },\n MuiLinearProgress: {\n root: {\n height: '23px',\n border: `2px solid ${Colors.blue[100]}`,\n boxSizing: 'border-box',\n boxShadow: '0px 0px 10px rgba(0, 54, 94, 0.08)',\n borderRadius: '2px',\n },\n bar: {},\n colorPrimary: {\n backgroundColor: Colors.blue[50],\n },\n barColorPrimary: {\n background: `linear-gradient(90deg, ${Colors.blue[300]} 0%, ${Colors.blue[500]} 100%)`,\n boxShadow: 'inset 1px -1px 10px rgba(0, 0, 0, 0.1)',\n },\n },\n MuiIconButton: {\n sizeSmall: {\n padding: '1px',\n },\n },\n MuiTypography: {\n h1: {\n color: Colors.black[600],\n fontWeight: 600,\n fontSize: '42px',\n },\n h2: {\n color: Colors.black[600],\n fontWeight: 600,\n fontSize: '32px',\n },\n h3: {\n color: Colors.black[600],\n fontWeight: 600,\n fontSize: '24px',\n },\n h4: {\n color: Colors.black[600],\n fontWeight: 600,\n fontSize: '18px',\n },\n subtitle1: {\n color: Colors.gray[800],\n fontSize: '16px',\n lineHeight: '22px',\n },\n subtitle2: {\n fontWeight: 700,\n letterSpacing: '0.07em',\n fontSize: '10px',\n color: Colors.gray[800],\n textTransform: 'uppercase',\n },\n },\n },\n};\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport {\n Button,\n ButtonBaseProps,\n Theme,\n withStyles,\n CircularProgress,\n} from '@material-ui/core';\nimport { TSPTheme } from '../../../src/styles/theme';\n\nconst StyledButton = withStyles((theme: Theme) => ({\n root: {\n width: 'fit-content',\n fontWeight: 600,\n borderRadius: '2px',\n },\n outlined: {\n borderColor: theme.palette.grey[100],\n },\n outlinedSecondary: {\n borderColor: theme.palette.grey[100],\n },\n}))(Button);\n\nexport const EatonButton: React.FunctionComponent<\n ButtonBaseProps & {\n color?: 'inherit' | 'primary' | 'secondary' | 'default';\n variant?: 'text' | 'outlined' | 'contained';\n component?: 'label';\n loadingSpinner?: boolean;\n }\n> = (props) => {\n const { loadingSpinner, ...myProps } = props;\n return (\n \n {props.children}\n {props.loadingSpinner && (\n \n )}\n \n );\n};\n\nexport const EatonLinkButton: React.FunctionComponent<\n ButtonBaseProps & {\n to: string;\n color?: 'inherit' | 'primary' | 'secondary' | 'default';\n variant?: 'text' | 'outlined' | 'contained';\n loadingSpinner?: boolean;\n target?: string;\n }\n> = (props) => {\n const { loadingSpinner, ...myProps } = props;\n return (\n \n {props.children}\n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\nimport { Gutters } from '../../styles/gutters';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n mainSplashContainer: {\n width: '100vw',\n minWidth: '100%',\n marginBottom: '60px',\n },\n heroContentContainer: {\n ...Gutters(theme),\n display: 'flex',\n alignContent: 'center',\n minWidth: '960px',\n maxWidth: '1500px',\n marginRight: 'auto',\n marginLeft: 'auto',\n },\n heroImageContainer: {\n marginTop: '45px',\n marginRight: '65px',\n marginBottom: '-200px',\n position: 'relative',\n },\n heroTextContainer: {\n marginTop: '53px',\n maxWidth: '800px',\n },\n heroHeader: {\n marginBottom: '22px',\n },\n heroSubtitle: {\n marginBottom: '16px',\n },\n };\n});\n","import { Theme } from '@material-ui/core';\n\nexport const Gutters = (theme?: Theme) => ({\n paddingLeft: '80px',\n paddingRight: '80px',\n});\n","import React from 'react';\n\nexport const HeroBg: React.SFC = () => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n","import React from 'react';\nimport { Typography } from '@material-ui/core';\nimport { EatonLinkButton } from '../button';\nimport { useStyles } from './styles';\nimport { HeroBg } from './hero-bg';\n\nexport const AppSplash = () => {\n const classes = useStyles();\n const heroHeaderText = 'Spec the right transmission.';\n const heroSubtitleText = `Each fleet has its own set of goals and challenges,\n and the right transmission spec can make a big difference. Eaton Cummins\n Automated Transmission Technologies has a broad portfolio of transmissions\n to help you get the job done. By answering a short series of questions about\n your truck and your route, we'll give you a couple of recommendations for \n heavy-duty automated transmissions that best fit your fleet's unique needs.`;\n return (\n
\n \n
\n
\n \n
\n
\n \n {heroHeaderText}\n \n \n {heroSubtitleText}\n \n \n Create Spec\n \n
\n
\n
\n \n
\n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n outerContainer: {\n height: '100%',\n display: 'flex',\n flexGrow: 1,\n alignSelf: 'center',\n },\n mainContainer: {\n width: '970px',\n paddingTop: '64px',\n paddingLeft: '150px',\n paddingRight: '150px',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n paddingBottom: '64px',\n boxShadow:\n '0px 11px 15px rgba(0, 0, 0, 0.2), 0px 9px 46px rgba(0, 0, 0, 0.12), 0px 24px 38px rgba(0, 0, 0, 0.14)',\n },\n splashItemsContainer: {\n textAlign: 'center',\n },\n text: {\n marginBottom: '16px',\n },\n };\n});\n","import React from 'react';\nimport { Typography, Paper } from '@material-ui/core';\nimport { EatonLinkButton } from '../button';\nimport { useStyles } from './styles';\n\nexport const AppSplashNotLoggedIn = () => {\n const classes = useStyles();\n const headerText = 'Save your specs. Reference them later.';\n const subtitleText =\n 'Clicking the button below offers the option to save your specs for future access by completing a simple registration. This will also allow creation of a printable pdf form of your recommendations.';\n return (\n
\n \n
\n \n {headerText}\n \n \n {subtitleText}\n \n Create Account\n
\n
\n
\n );\n};\n","/* eslint-disable quote-props */\nimport { makeStyles, Theme } from '@material-ui/core';\nimport { Gutters } from '../../../styles/gutters';\n\nexport const HeaderHeight = '80px';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n appBar: {\n boxShadow:\n '0px 4px 10px rgba(0, 0, 0, 0.15), inset 0px 0px 0px rgba(0, 0, 0, 0.1)',\n borderBottom: `1px solid ${theme.palette.grey[100]}`,\n },\n headerBar: {\n ...Gutters(theme),\n minWidth: '960px',\n maxWidth: '1500px',\n marginRight: 'auto',\n marginLeft: 'auto',\n height: HeaderHeight,\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n borderBottom: 'none',\n },\n tabContainer: {\n height: '100%',\n display: 'flex',\n },\n headerTabText: {\n color: theme.palette.text.primary,\n fontSize: '14px',\n },\n headerTab: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n paddingRight: '5px',\n marginRight: '16px',\n paddingLeft: '5px',\n paddingTop: '4px',\n borderBottom: `4px solid transparent`,\n },\n activeHeaderTab: {\n borderBottom: `4px solid ${theme.palette.primary.main}`,\n },\n logo: {\n height: '72%',\n paddingRight: '47px',\n },\n logoLink: {\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n },\n signIn: {\n color: theme.palette.primary.main,\n textTransform: 'uppercase',\n fontSize: '14px',\n fontWeight: theme.typography.fontWeightBold,\n },\n userMenuArrowIcon: {\n verticalAlign: 'bottom',\n },\n userMenucontainer: {\n width: '270px',\n // paddingTop: '32px',\n // paddingBottom: '32px',\n // paddingLeft: '32px',\n // paddingRight: '32px',\n boxShadow:\n '0px 1px 3px rgba(0, 0, 0, 0.2), 0px 2px 2px rgba(0, 0, 0, 0.12), 0px 0px 2px rgba(0, 0, 0, 0.14)',\n borderRadius: '2px',\n },\n userMenuMargin: {\n marginTop: '9px',\n },\n}));\n","/* eslint-disable quote-props */\nimport { makeStyles, Theme } from '@material-ui/core';\nimport { HeaderHeight } from '../../components/app-chrome/header/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n mainContainer: {\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n minWidth: '1120px',\n },\n signedOutBg: {\n '&::before': {\n content: '\"\"',\n left: 0,\n right: 0,\n zIndex: -1,\n width: '100%',\n height: `calc(100% - ${HeaderHeight})`,\n position: 'absolute',\n background:\n 'linear-gradient(180deg, rgba(255, 255, 255, 0.98) 300px, rgba(255, 255, 255, 0.5) 100%), url(../../../../transmissionspecbg.jpeg)',\n filter: 'blur(2px)',\n backgroundSize: 'cover',\n },\n },\n };\n});\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { Typography } from '@material-ui/core';\nimport { DefaultPage } from '../default-page';\nimport { EatonLinkButton } from '../button';\n\nexport function Unauthorized() {\n return (\n
\n \n Access Denied\n \n \n You are not authorized to view this page.\n \n Take me back home\n
\n );\n}\n","import React from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { RouteProps, Route, useLocation } from 'react-router';\nimport { useAuthState, AuthStatus } from './AuthContext';\nimport { Unauthorized } from '../../unauthorized';\nimport Cookie from 'js-cookie';\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\ninterface Props extends RouteProps {\n allowedRoles?: string[];\n loginPath: string;\n}\n\nconst PrivateRoute: React.FC = (props: Props) => {\n const authState = useAuthState();\n const location = useLocation();\n\n if (authState.authenticated === AuthStatus.Unauthenticated) {\n Cookie.set('etn-destination', location.pathname);\n return (\n \n );\n } else if (props.allowedRoles) {\n const hasAnAllowedRole = props.allowedRoles.find((role) =>\n authState.privileges.roles.includes(role),\n );\n if (!hasAnAllowedRole) {\n return ;\n }\n }\n\n return ;\n};\n\nexport default PrivateRoute;\n","import React from 'react';\n\nconst useMounted = (): React.MutableRefObject => {\n const mounted = React.useRef(true)\n React.useEffect(() => (): void => {\n mounted.current = false;\n }, [])\n return mounted;\n}\n\nexport default useMounted;","import React, { Dispatch, SetStateAction } from 'react';\nimport useMounted from './use-mounted';\n\n/**\n * Prevents the React warning about updating state in a component that has been unmounted.\n * Debatable whether it's worth caring about or not, but since a warning is displayed in the\n * console when it happens, here is a way to avoid it.\n *\n * This can happen when an async function is in flight (a button click handler for example),\n * and the component is unmounted (because the user was redirected to the login page).\n */\nfunction useStateWhileMounted(initialState: S | (() => S)): [S, Dispatch>];\nfunction useStateWhileMounted(): [S, Dispatch>];\nfunction useStateWhileMounted(initialState?: S | (() => S)): [S | undefined, Dispatch>] {\n const mounted = useMounted();\n const [state, setState] = React.useState(initialState);\n const setStateIfMounted = React.useCallback((s: S | ((prevState: S | undefined) => S | undefined) | undefined): void => {\n if (mounted.current) {\n setState(s);\n }\n }, [setState, mounted]);\n\n return [state, setStateIfMounted];\n}\n\nexport default useStateWhileMounted;","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n loading: {\n width: '100%',\n alignContent: 'center',\n },\n recentSpecsContainer: {\n paddingBottom: '64px',\n textAlign: 'center',\n },\n splashItemsContainer: {},\n titleText: {\n display: 'inline',\n marginBottom: '16px',\n textAlign: 'left',\n },\n subtitleText: {\n fontSize: '14px',\n fontWeight: 'normal',\n fontStyle: 'italic',\n color: Colors.black[300],\n paddingLeft: '16px',\n },\n };\n});\n","import { useState, useEffect } from 'react';\nimport {\n AuthenticatedRequestConfig,\n useAuthDispatch,\n} from '../components/AuthContext';\nimport { unflatten } from 'flat';\n\nexport function useAuthenticatedRequest(config: {\n requestConfig: AuthenticatedRequestConfig;\n requery?: any[];\n}): [boolean, T | undefined, () => void] {\n const [data, setData] = useState(undefined);\n const [loading, setIsLoading] = useState(true);\n const [requery, setRequery] = useState(true);\n\n const { authenticatedRequest } = useAuthDispatch();\n\n useEffect(() => {\n if (requery === true) {\n const fetchData = async () => {\n const response = await authenticatedRequest(config.requestConfig);\n if (response.ok) {\n setData(response.body);\n setRequery(false);\n } else if (!response.ok) {\n setData(undefined);\n setRequery(false);\n } else {\n setIsLoading(true);\n }\n setIsLoading(false);\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n fetchData();\n }\n }, (config.requery || []).concat(requery));\n return [\n loading,\n data,\n () => {\n setRequery(true);\n },\n ];\n}\n\nexport function objectFromFormData(formData: FormData) {\n const objData = {};\n formData.forEach((value, key) => {\n let finalValue: any = value;\n if (typeof value === 'string') {\n const number = parseInt(value);\n if (!isNaN(number)) finalValue = number;\n }\n (objData as any)[key] = finalValue;\n });\n return unflatten(objData);\n}\n\nexport function appendFormData(\n data: any,\n formData: FormData,\n _root?: string,\n): FormData {\n const root = _root || '';\n let result = formData;\n if (data instanceof File) {\n result.append(root, data);\n } else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n result = appendFormData(data[i], result, root + '[' + i + ']');\n }\n } else if (typeof data === 'object' && data) {\n Object.entries(data).forEach((entry) => {\n if (root === '') {\n result = appendFormData(entry[1], result, entry[0]);\n } else {\n result = appendFormData(entry[1], result, root + '.' + entry[0]);\n }\n });\n } else {\n if (data !== null && typeof data !== 'undefined') {\n result.append(root, data);\n }\n }\n return result;\n}\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n tableContainer: { textAlign: 'center' },\n loading: {\n marginTop: '32px',\n width: '100%',\n alignContent: 'center',\n },\n nameCell: {\n width: '50%',\n },\n transmissionCell: {\n width: '30%',\n },\n editedCell: {\n minWidth: '200px',\n },\n row: {\n '&:hover': { background: '#F0F9FF' },\n },\n specCell: {\n maxWidth: '0',\n whiteSpace: 'nowrap',\n padding: '0',\n },\n specCellLink: {\n textDecoration: 'none',\n color: theme.palette.text.primary,\n },\n specCellContents: {\n height: '100%',\n width: '100%',\n padding: '16px',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n editedCellContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n chevron: {\n marginTop: '-8px',\n marginBottom: '-8px',\n marginRight: '-8px',\n },\n headerCell: {\n paddingBottom: '0',\n paddingRight: '16px',\n paddingLeft: '16px',\n whiteSpace: 'nowrap',\n },\n root: {\n width: '100%',\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n forwardBackIcon: {\n background: Colors.blue[50],\n padding: '2px',\n marginLeft: '24px',\n },\n actionButton: {\n marginTop: '32px',\n },\n noSpecs: {\n paddingTop: '32px',\n textAlign: 'left',\n },\n };\n});\n","export interface Survey {\n application: Application;\n cruiseSpeed: number;\n engineHp: number;\n engineMake: EngineMake;\n engineTorque: number;\n maneuvers: Maneuver[];\n maxWeight: number;\n maxSpeed: number;\n preferenceRanking: PreferenceRanking;\n pto: Pto;\n roadTypes: RoadType[];\n terrain: Terrain[];\n}\n\nexport interface PreferenceRanking {\n acceleration: number;\n fuelEconomy: number;\n lowSpeedManeuvers: number;\n price: number;\n tripTime: number;\n}\n\nexport enum Application {\n Agriculture = 'Agriculture',\n Construction = 'Construction',\n Fire = 'Fire',\n HeavyHaul = 'HeavyHaul',\n Linehaul = 'Linehaul',\n Logging = 'Logging',\n Mixer = 'Mixer',\n OilField = 'OilField',\n PickUpAndDelivery = 'PickUpAndDelivery',\n Recreational = 'Recreational',\n Refuse = 'Refuse',\n DoorToDoorRefuse = 'DoorToDoorRefuse',\n Rescue = 'Rescue',\n Transit = 'Transit',\n}\n\nexport enum EngineMake {\n CumminsDiesel = 'CumminsDiesel',\n CumminsNaturalGas = 'CumminsNaturalGas',\n Paccar = 'PACCAR',\n International = 'International',\n Detroit = 'Detroit',\n Other = 'Other',\n}\n\nexport const EngineMakeToLabelMappings: { [key in EngineMake]: string } = {\n CumminsDiesel: 'Cummins (Diesel)',\n CumminsNaturalGas: 'Cummins (Natural Gas)',\n PACCAR: 'PACCAR',\n International: 'International',\n Detroit: 'Detroit',\n Other: 'Other',\n};\n\nexport enum Maneuver {\n FastInReverse = 'FastInReverse',\n Mud = 'Mud',\n RepeatedLaunches = 'RepeatedLaunches',\n UrbanStopAndGo = 'UrbanStopAndGo',\n SlowCreeping = 'SlowCreeping',\n}\n\nexport const ManeuverToLabelMappings: { [key in (Maneuver | 'NoManeuvers')]: string } = {\n FastInReverse: 'Drive fast in reverse (greater than 5 mph or 8 kph)',\n Mud: 'Frequent maneuvers in mud',\n RepeatedLaunches: 'Repeated launches or maneuvering',\n SlowCreeping: 'Very slow, sustained creeping (<0.5 mph or <0.8 kph)',\n UrbanStopAndGo: 'Urban stop and go traffic',\n NoManeuvers: 'No Maneuvers',\n};\n\nexport const PreferenceRankingToLabelMappings: { [P in keyof PreferenceRanking]: string } = {\n acceleration: 'Acceleration from a stop',\n fuelEconomy: 'Fuel economy',\n lowSpeedManeuvers: 'Job site low speed maneuverability',\n price: 'Purchase price',\n tripTime: 'Route / trip time',\n};\n\nexport enum Pto {\n NoPTO = 'NoPTO',\n ThreeOrMorePto = 'ThreeOrMorePTO',\n OnePto = 'OnePTO',\n TwoPto = 'TwoPTO',\n}\n\nexport enum RoadType {\n Paved = 'Paved',\n MaintainedGravel = 'MaintainedGravel',\n OffRoad = 'OffRoad',\n}\n\nexport enum Terrain {\n Flat = 'Flat',\n HillyRolling = 'HillyRolling',\n OccasionalMountain = 'OccasionalMountain',\n FrequentMountain = 'FrequentMountain',\n SteepGrade = 'SteepGrade',\n}\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n radioGroupColumns: {\n display: 'flex',\n flexWrap: 'wrap',\n flexDirection: 'row',\n },\n radioGroupSingle: {\n display: 'flex',\n flexWrap: 'wrap',\n flexDirection: 'column',\n },\n column: {\n display: 'inline',\n width: '270px',\n marginRight: '30px',\n },\n };\n});\n","import React from 'react';\nimport {\n FormControl,\n RadioGroup,\n FormControlLabel,\n Radio,\n} from '@material-ui/core';\nimport { cssClassName } from '..';\nimport { startCase, chunk, values } from 'lodash';\nimport { useStyles } from './styles';\n\nexport function RadioQuestion(props: {\n name: string;\n value: T | null;\n values: { [key: string]: T };\n setValue: (value: T) => void;\n maxInColumn?: number;\n labelMapping?: { [key in T]: string };\n}) {\n const classes = useStyles();\n const flattenedValues = values(props.values);\n const display = props.maxInColumn\n ? chunk(flattenedValues, props.maxInColumn).map((arr, index) => {\n return (\n
\n {arr.map((v) => (\n
\n }\n label={\n props.labelMapping ? props.labelMapping[v] : startCase(v)\n }\n />\n
\n ))}\n
\n );\n })\n : flattenedValues.map((v) => (\n
\n }\n label={props.labelMapping ? props.labelMapping[v] : startCase(v)}\n />\n
\n ));\n\n return (\n \n , value) => {\n props.setValue((value as unknown) as T);\n }}\n className={\n props.maxInColumn\n ? classes.radioGroupColumns\n : classes.radioGroupSingle\n }\n >\n {display}\n \n \n );\n}\n","import React from 'react';\nimport NumberFormat from 'react-number-format';\nimport { createStyles, Theme, makeStyles } from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\nimport { IconButton } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n display: 'flex',\n alignItems: 'flex-end',\n },\n textField: {\n width: '75px',\n textAlignLast: 'right',\n paddingBottom: '0',\n },\n stepper: {\n display: 'flex',\n flexDirection: 'column',\n marginTop: 'auto',\n marginRight: '3px',\n alignItems: 'baseline',\n marginBottom: '-5px',\n },\n stepperIcon: {\n width: '15px',\n height: '15px',\n },\n }),\n);\n\ninterface NumberInputProps {\n inputRef: (instance: NumberFormat | null) => void;\n onChange: (event: { target: { value: string } }) => void;\n onBlur?: (event: globalThis.React.FocusEvent) => void;\n}\n\nconst NumberInput = (props: NumberInputProps) => {\n const { inputRef, onChange, ...other } = props;\n\n return (\n {\n onChange({\n target: {\n value: values.value,\n },\n });\n }}\n thousandSeparator\n isNumericString\n onBlur={props.onBlur}\n />\n );\n};\n\ninterface FormattedNumberInputProps {\n onChange?: (value: any) => any;\n value?: any;\n displayValue?: string;\n step?: number;\n min?: number;\n max?: number;\n label?: string;\n className?: string;\n ariaLabelledBy?: string;\n disabled?: boolean;\n dataTestId?: string;\n}\n\nenum Direction {\n Up,\n Down,\n}\n\nexport const FormattedNumberInput = (props: FormattedNumberInputProps) => {\n const classes = useStyles();\n\n const handleChangeTextField = (\n event: React.ChangeEvent,\n ) => {\n const parsedValue = parseInt(event?.target.value.replace(/,/g, ''));\n if (event?.target.value === '' && props.value !== null) {\n handleChangeInternal(undefined);\n } else if (isNaN(parsedValue)) {\n handleChangeInternal(null);\n } else {\n handleChangeInternal(parsedValue);\n }\n };\n\n const handleChangeInternal = (newValue: number | undefined | null) => {\n props.onChange && props.onChange(newValue);\n };\n\n const minMaxHandler = (candidateValue: number): number => {\n if (props.min && candidateValue < props.min) {\n return props.min;\n } else if (props.max && candidateValue > props.max) {\n return props.max;\n }\n return candidateValue;\n };\n\n const handleButton = (direction: Direction) => {\n const stepValue =\n direction === Direction.Up\n ? props.step\n ? props.step\n : 1\n : props.step\n ? -props.step\n : -1;\n handleChangeInternal(minMaxHandler(parseInt(props.value) + stepValue));\n };\n\n const onBlur = (event: globalThis.React.FocusEvent) => {\n const candidateValue = parseInt(event.target.value.replace(/,/g, ''));\n if (event.target.value === '') {\n handleChangeInternal(minMaxHandler(0));\n } else if (props.step) {\n const remainder = candidateValue % props.step;\n const finalValue =\n remainder < props.step / 2\n ? candidateValue - remainder\n : candidateValue + (props.step - remainder);\n handleChangeInternal(minMaxHandler(finalValue));\n } else {\n handleChangeInternal(minMaxHandler(candidateValue));\n }\n };\n\n const handleArrowKeys = (event: React.KeyboardEvent) => {\n if (event.keyCode === 38) handleButton(Direction.Up);\n if (event.keyCode === 40) handleButton(Direction.Down);\n };\n\n return (\n
\n
\n handleButton(Direction.Up)}\n >\n \n \n handleButton(Direction.Down)}\n >\n \n \n
\n \n
\n );\n};\n","import { makeStyles, Theme } from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n sliderContainer: {\n width: '370px',\n marginBottom: '64px',\n },\n topContainer: {\n width: '100%',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-end',\n marginBottom: '24px',\n },\n inputContainer: {\n display: 'inline-flex',\n alignItems: 'flex-end',\n height: 'fit-content',\n marginRight: '-30px',\n },\n unitLabel: {\n marginLeft: '7px',\n alignItems: 'flex-end',\n color: theme.palette.text.secondary,\n },\n valueLabel: {\n // eslint-disable-next-line quote-props\n 'top': -28,\n // eslint-disable-next-line quote-props\n 'fontSize': 15,\n '& *': {\n background: 'transparent',\n color: '#000',\n },\n },\n };\n});\n","interface Flavoring {\n _type?: FlavorT;\n}\nexport type Flavor = T & Flavoring;\n\nexport enum Unit {\n Imperial = 'Imperial',\n Metric = 'Metric',\n}\n\nexport type UnitType = keyof typeof UnitMapping;\n\nexport type ImperialUnit = number;\nexport type MetricUnit = number;\n\nexport const UnitMapping = {\n weight: { ...MakeConverters(0.453592), imperial: 'lbs', metric: 'kg' },\n speed: { ...MakeConverters(1.61), imperial: 'mph', metric: 'kph' },\n power: { ...MakeConverters(0.7457), imperial: 'hp', metric: 'kw' },\n torque: { ...MakeConverters(1.3558), imperial: 'lbs.-ft.', metric: 'Nm' },\n};\n\nexport type Lbs = Flavor;\nexport type Kg = Flavor;\n\nexport type Mph = Flavor;\nexport type Kmph = Flavor;\n\nexport type Hp = Flavor;\nexport type Kw = Flavor;\n\nexport type Ftlb = Flavor;\nexport type Nm = Flavor;\n\nfunction MakeConverters(factor: number) {\n return {\n toMetric: (value: ImperialUnits) => (Math.round(value * factor) as MetricUnits),\n fromMetric: (value: MetricUnits) => (Math.round(value / factor) as ImperialUnits),\n };\n}\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n units: {\n fontSize: '12px',\n color: theme.palette.grey[800],\n paddingRight: '8px',\n },\n unitSwitcher: { display: 'flex', flexDirection: 'row', alignItems: 'center' },\n}));\n","import React, { useContext, createContext, useState } from 'react';\nimport { Typography, MenuItem, Select } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { Unit } from '../../domain/unit-converstions';\nimport Cookie from 'js-cookie';\n\nexport const PureUnitSwitcher = (props: {\n mode: Unit;\n onChange: (value: Unit) => void;\n}) => {\n const classes = useStyles();\n\n return (\n
\n Unit of Measurement: \n {\n props.onChange(event.target.value as Unit);\n }}\n >\n {Object.entries(Unit).map((entry) => (\n \n {entry[1]}\n \n ))}\n \n
\n );\n};\n\nexport const UnitContext = createContext({\n units: Unit.Imperial,\n setUnits: (value: Unit) => {},\n});\n\nexport const UnitProvider = (props: React.PropsWithChildren<{}>) => {\n const existingUnits = Cookie.get('EATON_TSP_UNITS');\n const [units, setUnits] = useState(\n existingUnits === Unit.Metric ? Unit.Metric : Unit.Imperial,\n );\n const setUnitsAndCookie = (value: Unit) => {\n setUnits(value);\n Cookie.set('EATON_TSP_UNITS', value);\n };\n return (\n \n {props.children}\n \n );\n};\n\nexport const UnitSwitcher = () => {\n const unitContext = useContext(UnitContext);\n\n return (\n \n );\n};\n","import React, { useState, useContext } from 'react';\nimport { FormLabel, Slider, Typography } from '@material-ui/core';\nimport { cssClassName } from '..';\nimport { useStyles } from './styles';\nimport { FormattedNumberInput } from '../../number-input';\nimport { Unit, UnitMapping, UnitType } from '../../../domain/unit-converstions';\nimport { UnitContext } from '../../unit-switcher';\n\nexport function SliderQuestion(props: {\n value: number | null;\n setValue: (value: number) => void;\n minValue: number;\n maxValue: number;\n name: string;\n units: UnitType;\n stepSize?: number;\n showValueLabels?: boolean;\n}) {\n const classes = useStyles();\n\n const unitContext = useContext(UnitContext);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let { value, minValue, maxValue } = props;\n if (unitContext.units === Unit.Metric) {\n value = value ? UnitMapping[props.units].toMetric(value) : null;\n minValue = UnitMapping[props.units].toMetric(minValue);\n maxValue = UnitMapping[props.units].toMetric(maxValue);\n }\n const unitLabel =\n unitContext.units === Unit.Imperial\n ? UnitMapping[props.units].imperial\n : UnitMapping[props.units].metric;\n\n const [currValue, setCurrValue] = useState(\n props.value || props.minValue,\n );\n\n const setValues = (newValue: number) => {\n const imperialValue =\n unitContext.units === Unit.Imperial\n ? newValue\n : UnitMapping[props.units].fromMetric(newValue);\n setCurrValue(imperialValue);\n props.setValue(imperialValue);\n };\n\n const displayValue =\n unitContext.units === Unit.Imperial\n ? currValue\n : UnitMapping[props.units].toMetric(currValue);\n\n return (\n
\n
\n \n {props.name}\n \n
\n setValues(newValue)}\n step={props.stepSize}\n min={minValue}\n max={maxValue}\n dataTestId={`${cssClassName(props.name)}-input`}\n className={`${cssClassName(props.name)}-input`}\n />\n
\n {unitLabel}\n
\n
\n
\n
\n value.toLocaleString()\n : undefined\n }\n step={props.stepSize}\n value={parseInt(`${displayValue}`) || minValue}\n name={cssClassName(props.name)}\n onChangeCommitted={(event, value) => {\n setValues(value as number);\n }}\n onChange={(event, value) => {\n setCurrValue(\n unitContext.units === Unit.Imperial\n ? (value as number)\n : UnitMapping[props.units].fromMetric(value as number),\n );\n }}\n min={minValue}\n max={maxValue}\n getAriaValueText={(value) => `${value.toLocaleString()} ${unitLabel}`}\n aria-labelledby=\"discrete-slider-always\"\n valueLabelDisplay={props.showValueLabels ? 'on' : 'off'}\n marks={\n props.showValueLabels\n ? [\n {\n value: minValue,\n label: `${minValue.toLocaleString()} ${unitLabel}`,\n },\n {\n value: maxValue,\n label: `${maxValue.toLocaleString()} ${unitLabel}`,\n },\n ]\n : undefined\n }\n />\n
\n
\n );\n}\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n preferenceColumn: {\n height: '444px',\n backgroundColor: theme.palette.primary.light,\n border: `1px solid ${Colors.blue[100]}`,\n boxShadow: 'none',\n borderRadius: '4px',\n display: 'flex',\n flexDirection: 'column',\n },\n dropZone: {\n height: '100%',\n width: '100%',\n minWidth: '394px',\n maxWidth: '562px',\n flexGrow: 1,\n },\n columnContainer: {\n width: '100%',\n height: '100%',\n },\n columnContents: {\n display: 'flex',\n padding: '32px',\n height: '100%',\n },\n optionsColumn: {\n height: '444px',\n width: '442px',\n backgroundColor: Colors.white[100],\n border: `1px solid ${theme.palette.grey[100]}`,\n boxShadow: 'none',\n borderRadius: '4px',\n },\n description: {\n width: '770px',\n paddingBottom: '32px',\n },\n columnListItem: {\n display: 'flex',\n alignItems: 'baseline',\n },\n listsContainer: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '30px',\n },\n arrowIcon: {\n padding: '28px',\n },\n preferenceHeader: {\n background: 'rgba(255, 255, 255, 0.5)',\n borderRadius: '4px 4px 0 0',\n padding: '8px',\n borderBottom: `1px solid ${Colors.blue[100]}`,\n textAlign: 'center',\n },\n optionsHeader: {\n background: theme.palette.grey[50],\n borderRadius: '4px 4px 0 0',\n padding: '8px',\n borderBottom: `1px solid ${theme.palette.grey[100]}`,\n textAlign: 'center',\n },\n draggableOption: {\n 'flexGrow': 1,\n 'width': '100%',\n 'display': 'flex',\n 'justifyContent': 'space-between',\n 'alignItems': 'baseline',\n 'boxShadow': '0px 1px 5px rgba(0, 0, 0, 0.2)',\n 'padding': '16px',\n 'background': Colors.white[100],\n 'borderRadius': '2px',\n 'marginBottom': '16px',\n '&:hover': {\n boxShadow: '0px 2px 4px rgba(0, 0, 0, 0.14), 0px 3px 4px rgba(0, 0, 0, 0.12), 0px 1px 5px rgba(0, 0, 0, 0.2)',\n },\n },\n draggingDraggable: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.getContrastText(theme.palette.primary.main),\n },\n draggableOptionText: {\n fontWeight: 600,\n },\n dragIcon: {\n marginRight: '8px',\n marginLeft: '16px',\n },\n draggingSelectedColumn: {\n boxShadow: 'inset 1px 1px 20px rgba(0, 123, 193, 0.3)',\n },\n preferenceNumberRow: {\n 'display': 'flex',\n 'alignItems': 'center',\n 'height': '56px',\n 'marginBottom': '16px',\n '&:last-child': {\n marginBottom: 0,\n },\n },\n preferenceNumber: {\n marginRight: '22px',\n marginLeft: '-10px',\n width: 26,\n height: 26,\n fontSize: '16px',\n fontWeight: 'bold',\n background: Colors.blue[400],\n },\n };\n});\n","import React from 'react';\n\nexport const DragHandle = (props: { className?: string; white?: boolean }) => (\n \n \n \n);\n\nexport const LeftArrow = () => (\n \n \n \n);\n","import React, { useState } from 'react';\nimport { NullableSurvey } from '..';\nimport {\n PreferenceRanking,\n PreferenceRankingToLabelMappings,\n} from '../../../domain/survey';\nimport { filter, sortBy, isNull, pickBy, times } from 'lodash';\nimport {\n DropResult,\n DraggableLocation,\n DragDropContext,\n Droppable,\n DroppableProvided,\n Draggable,\n DraggableProvided,\n} from 'react-beautiful-dnd';\nimport { Avatar, Typography } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { DragHandle, LeftArrow } from './icons';\n\nexport function DragAndDropQuestion(props: {\n name: string;\n surveyValues: NullableSurvey;\n setSurveyValues: (value: NullableSurvey) => void;\n optionsTitle: string;\n rankingTitle: string;\n disabled: boolean;\n}) {\n const [starterList, setStarterList] = useState<\n Array\n >(\n Object.keys(pickBy(props.surveyValues, isNull)) as Array<\n keyof PreferenceRanking\n >,\n );\n\n const applySurveyValues = (values: Array) => {\n props.setSurveyValues({\n acceleration:\n values.indexOf('acceleration') === -1\n ? null\n : values.indexOf('acceleration') + 1,\n fuelEconomy:\n values.indexOf('fuelEconomy') === -1\n ? null\n : values.indexOf('fuelEconomy') + 1,\n lowSpeedManeuvers:\n values.indexOf('lowSpeedManeuvers') === -1\n ? null\n : values.indexOf('lowSpeedManeuvers') + 1,\n price:\n values.indexOf('price') === -1 ? null : values.indexOf('price') + 1,\n tripTime:\n values.indexOf('tripTime') === -1\n ? null\n : values.indexOf('tripTime') + 1,\n });\n };\n\n const surveyValues = filter(\n sortBy(Object.entries(props.surveyValues), ([key, value]) => value),\n ([key, value]) => value !== null,\n ).map(([key, value]) => key) as Array;\n\n const startColumnId = 'start-column';\n const finalColumnId = 'final-column';\n\n const onDragEnd = (result: DropResult) => {\n const { source, destination } = result;\n\n if (!destination) {\n return;\n }\n\n if (source.droppableId === destination.droppableId) {\n if (source.droppableId === finalColumnId) {\n const items = reorder(surveyValues, source.index, destination.index);\n applySurveyValues(items);\n } else {\n const items = reorder(starterList, source.index, destination.index);\n setStarterList(items);\n }\n } else {\n if (source.droppableId === finalColumnId) {\n const [sourceResult, destinationResult] = move(\n surveyValues,\n starterList,\n source,\n destination,\n );\n applySurveyValues(sourceResult);\n setStarterList(destinationResult);\n } else {\n const [sourceResult, destinationResult] = move(\n starterList,\n surveyValues,\n source,\n destination,\n );\n setStarterList(sourceResult);\n applySurveyValues(destinationResult);\n }\n }\n };\n\n const reorder = (\n listItems: Array | null,\n startIndex: number,\n endIndex: number,\n ) => {\n const result = listItems || [];\n const [removed] = result.splice(startIndex, 1);\n result.splice(endIndex, 0, removed);\n return result;\n };\n\n const move = (\n sourceList: Array,\n destinationList: Array,\n droppableSource: DraggableLocation,\n droppableDestination: DraggableLocation,\n ) => {\n const sourceClone = Array.from(sourceList);\n const destClone = Array.from(destinationList);\n const [removed] = sourceClone.splice(droppableSource.index, 1);\n\n destClone.splice(droppableDestination.index, 0, removed);\n return [sourceClone, destClone];\n };\n\n const classes = useStyles();\n\n return (\n <>\n \n Drag the rectangles from the “options” list into the “Customer\n Preference Ranking” list to rank what is most important for this\n vehicle. 1 is the highest priority goal. 5 is the lowest.\n \n \n
\n \n
\n \n
\n \n
\n
\n \n );\n}\n\nfunction PreferenceColumn(props: {\n columnId: string;\n values: T[];\n title: string;\n number?: boolean;\n disabled: boolean;\n}) {\n const [isDraggingOver, setIsDraggingOver] = useState(false);\n\n const classes = useStyles();\n\n return (\n
\n
\n {props.title}\n
\n \n
\n
\n {times(5, (i) => (\n
\n {`${i +\n 1}`}\n  \n
\n ))}\n
\n \n {(provided: DroppableProvided, snapshot) => {\n setIsDraggingOver(snapshot.isDraggingOver);\n return (\n \n {props.values.map((preference, i) => {\n return (\n
\n \n
\n );\n })}\n
\n );\n }}\n \n
\n \n \n );\n}\n\nfunction OptionsColumn(props: {\n columnId: string;\n values: T[];\n title: string;\n number?: boolean;\n disabled: boolean;\n}) {\n const classes = useStyles();\n return (\n
\n
\n {props.title}\n
\n \n {(provided: DroppableProvided) => (\n \n {props.values.length === 0 ? (\n \n Great job! Double check the list you’ve created to ensure it\n properly reflects your performance priority for the vehicle.\n \n ) : (\n
\n {props.values.map((preference, i) => (\n
\n \n
\n ))}\n
\n )}\n
\n )}\n \n \n );\n}\n\nfunction DraggableOption(props: {\n title: string;\n id: string;\n disabled: boolean;\n index: number;\n}) {\n const classes = useStyles();\n return (\n \n {(draggableProvided: DraggableProvided, snapshot) => (\n \n \n {props.title}\n \n \n \n )}\n \n );\n}\n","import { makeStyles, Theme } from '@material-ui/core/styles';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n surveyHeaderContainer: {\n marginBottom: '32px',\n display: 'flex',\n },\n containerSmallerMargin: {\n marginBottom: '23px',\n display: 'flex',\n },\n containerTinyMargin: {\n marginBottom: '16px',\n display: 'flex',\n },\n helpIcon: {\n width: '28px',\n height: '28px',\n marginLeft: '16px',\n },\n };\n});\n","import React from 'react';\n\nexport const HelpIconInactive = (props: { className?: string, width?: number }) => (\n \n \n \n \n);\n","import React from 'react';\n\nexport const HelpIconActive = (props: { className?: string, width?: number }) => (\n \n \n \n );\n","import React, { useState } from 'react';\nimport { HelpIconInactive } from '../../icons/help-icon-inactive';\nimport { IconButton } from '@material-ui/core';\nimport { HelpIconActive } from '../../icons/help-icon-active';\nimport { Link } from 'react-router-dom';\n\ntype Props = {\n to: string;\n width?: number;\n disabled?: boolean;\n className?: string;\n}\n\nexport const QuestionButton = (props: Props) => {\n const [icon, setIcon] = useState();\n const enterHover = () => setIcon();\n const exitHover = () => setIcon();\n return (\n
\n \n {icon}\n \n
\n );\n};\n","import React from 'react';\nimport { Typography } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { QuestionButton } from '../../question-button';\n\ntype Props = {\n headerText: string;\n helpLink?: string;\n smallMargin?: boolean;\n tinyMargin?: boolean;\n};\n\nexport const SurveyPageHeader = (props: Props) => {\n const classes = useStyles();\n return (\n \n {props.headerText}\n {!!props.helpLink && }\n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n ptoContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n topHalfContainer: {\n marginBottom: '64px',\n },\n };\n});\n","import React, { useState } from 'react';\nimport { Pto } from '../../../domain/survey';\nimport {\n FormControl,\n RadioGroup,\n FormControlLabel,\n Radio,\n} from '@material-ui/core';\nimport { startCase } from 'lodash';\nimport { SurveyPageHeader } from '../survey-page-header';\nimport { useStyles } from './styles';\n\nexport function PTOQuestion(props: {\n value: Pto | null;\n setValue: (value: Pto | null) => void;\n}) {\n const classes = useStyles();\n const [needPto, setNeedPto] = useState(\n props.value === null ? '' : props.value !== Pto.NoPTO,\n );\n return (\n
\n \n ,\n value: string,\n ) => {\n const needPtoChecked = value === 'true';\n props.setValue(needPtoChecked ? null : Pto.NoPTO);\n setNeedPto(needPtoChecked);\n }}\n >\n }\n label=\"No PTO needs\"\n />\n }\n label=\"Yes, PTO needs\"\n />\n \n \n {needPto && (\n \n \n ,\n value: string,\n ) => {\n props.setValue((value as unknown) as Pto);\n }}\n >\n }\n label={startCase(Pto.OnePto)}\n />\n }\n label={`${startCase(Pto.TwoPto)}s`}\n />\n }\n label={'Three or more PTOs'}\n />\n \n \n )}\n
\n );\n}\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n marginTop: '52px',\n marginBottom: '32px',\n },\n backButton: {\n border: `1px solid ${theme.palette.grey[100]}`,\n marginRight: '16px',\n },\n buttonProgress: {\n color: theme.palette.primary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12,\n },\n questions: { paddingBottom: '32px', flexGrow: 1 },\n };\n});\n","import { number } from \"prop-types\";\n\nexport interface Transmission {\n id: number;\n name: string;\n description: string;\n learnMoreUrl: string;\n supportedApplications: SupportedApplications;\n maxSupportedGcw: number | null;\n supportedTerrain: SupportedTerrain;\n supportedManeuvers: SupportedManeuvers;\n supportedRoadTypes: SupportedRoadTypes;\n maxSupportedCruiseSpeed: number;\n maxSupportedMaxSpeed: number;\n supportedPto: SupportedPto;\n supportedEngineMakes: SupportedEngineMakes;\n maxSupportedEngineHp: number;\n performanceGoalPoints: PerformanceGoalPoints;\n axleRatioThresholds: AxleRatioThresholds;\n modelTorques: ModelTorque[];\n image: { content: string } | null;\n isDisabled: boolean;\n rank:number;\n}\nexport interface LogTransmission {\n transmissionJson: string;\n updatedBy: string;\n timeStamp: Date;\n transmissionModel: Transmission;\n}\nexport enum SupportValue { NotSupported = 'NotSupported', Supported = 'Supported', Recommended = 'Recommended' }\n\nexport interface AxleRatioThresholds {\n id?: number;\n defaultBottom: number;\n defaultTop: number;\n mediumBottom: number;\n mediumTop: number;\n highBottom: number;\n highTop: number;\n extremeBottom: number;\n extremeTop: number;\n}\n\nexport interface ModelTorque {\n name: string;\n maxTorque: number;\n id?: number;\n isDeleted:boolean;\n updatedBy:string;\n timeStamp:Date;\n}\n\nexport interface PerformanceGoalPoints {\n acceleration: number;\n fuelEconomy: number;\n lowSpeedManeuvers: number;\n price: number;\n tripTime: number;\n id?: number;\n}\n\nexport interface SupportedApplications {\n linehaul: SupportValue;\n agriculture: SupportValue;\n construction: SupportValue;\n doorToDoorRefuse: SupportValue;\n fire: SupportValue;\n heavyHaul: SupportValue;\n logging: SupportValue;\n mixer: SupportValue;\n oilField: SupportValue;\n pickUpAndDelivery: SupportValue;\n recreational: SupportValue;\n refuse: SupportValue;\n rescue: SupportValue;\n transit: SupportValue;\n id?: number;\n}\n\nexport interface SupportedEngineMakes {\n cumminsDiesel: SupportValue;\n cumminsNaturalGas: SupportValue;\n detroit: SupportValue;\n international: SupportValue;\n other: SupportValue;\n paccar: SupportValue;\n id?: number;\n}\n\nexport interface SupportedManeuvers {\n repeatedLaunches: SupportValue;\n slowCreeping: SupportValue;\n urbanStopAndGo: SupportValue;\n mud: SupportValue;\n fastInReverse: SupportValue;\n id?: number;\n}\n\nexport interface SupportedPto {\n noPto: SupportValue;\n onePto: SupportValue;\n twoPto: SupportValue;\n threeOrMorePto: SupportValue;\n id?: number;\n}\n\nexport interface SupportedRoadTypes {\n paved: SupportValue;\n maintainedGravel: SupportValue;\n offRoad: SupportValue;\n id?: number;\n}\n\nexport interface SupportedTerrain {\n flat: SupportValue;\n hillyRolling: SupportValue;\n occasionalMountain: SupportValue;\n frequentMountain: SupportValue;\n steepGrade: SupportValue;\n id?: number;\n}\n\nexport enum TransmissionConstants {\n MIN_WEIGHT = 33000,\n MAX_WEIGHT = 250000,\n MIN_SPEED = 45,\n MAX_SPEED = 80,\n MIN_HP = 330,\n MAX_HP = 625,\n MIN_TORQUE = 1000,\n MAX_TORQUE = 2250,\n}\n\nexport const ACCEPTABLE_TRANSMISSION: Transmission = {\n image: null,\n rank:0,\n supportedApplications: {\n linehaul: SupportValue.Supported,\n agriculture: SupportValue.NotSupported,\n construction: SupportValue.NotSupported,\n doorToDoorRefuse: SupportValue.NotSupported,\n fire: SupportValue.Recommended,\n heavyHaul: SupportValue.Recommended,\n logging: SupportValue.NotSupported,\n mixer: SupportValue.NotSupported,\n oilField: SupportValue.NotSupported,\n pickUpAndDelivery: SupportValue.NotSupported,\n recreational: SupportValue.NotSupported,\n refuse: SupportValue.NotSupported,\n rescue: SupportValue.NotSupported,\n transit: SupportValue.NotSupported,\n id: 1,\n },\n maxSupportedGcw: 127000,\n supportedTerrain: {\n flat: SupportValue.Supported,\n hillyRolling: SupportValue.NotSupported,\n occasionalMountain: SupportValue.NotSupported,\n frequentMountain: SupportValue.NotSupported,\n steepGrade: SupportValue.NotSupported,\n id: 1,\n },\n supportedManeuvers: {\n repeatedLaunches: SupportValue.NotSupported,\n slowCreeping: SupportValue.NotSupported,\n urbanStopAndGo: SupportValue.NotSupported,\n mud: SupportValue.NotSupported,\n fastInReverse: SupportValue.NotSupported,\n id: 1,\n },\n supportedRoadTypes: {\n paved: SupportValue.NotSupported,\n maintainedGravel: SupportValue.NotSupported,\n offRoad: SupportValue.NotSupported,\n id: 1,\n },\n maxSupportedCruiseSpeed: 70,\n maxSupportedMaxSpeed: 45,\n supportedPto: {\n noPto: SupportValue.NotSupported,\n onePto: SupportValue.NotSupported,\n twoPto: SupportValue.NotSupported,\n threeOrMorePto: SupportValue.NotSupported,\n id: 1,\n },\n supportedEngineMakes: {\n cumminsDiesel: SupportValue.NotSupported,\n cumminsNaturalGas: SupportValue.NotSupported,\n detroit: SupportValue.NotSupported,\n international: SupportValue.NotSupported,\n other: SupportValue.NotSupported,\n paccar: SupportValue.NotSupported,\n id: 1,\n },\n maxSupportedEngineHp: 485,\n performanceGoalPoints: {\n acceleration: 0,\n fuelEconomy: 1,\n lowSpeedManeuvers: 4,\n price: 0,\n tripTime: 0,\n id: 1,\n },\n axleRatioThresholds: {\n id: 1,\n defaultBottom: 2,\n defaultTop: 2,\n mediumBottom: 2,\n mediumTop: 2,\n highBottom: 2,\n highTop: 2,\n extremeBottom: 2,\n extremeTop: 2,\n },\n modelTorques: [\n {\n maxTorque: 2200,\n name: 'beep',\n id: 60,\n isDeleted:true,\n updatedBy:\"test\",\n timeStamp:new Date()\n },\n {\n maxTorque: 2200,\n name: 'boop',\n id: 61,\n isDeleted:false,\n updatedBy:\"test\",\n timeStamp:new Date()\n },\n ],\n name: 'hey',\n description: 'pal',\n id: 43,\n learnMoreUrl: 'http://learn.more.com',\n isDisabled: false,\n};\n\n/**\n * This object exists for us to grab keys from and to populate the default transmission values.\n */\nexport const DEFAULT_TRANSMISSION: Omit = {\n name: '',\n learnMoreUrl: '',\n description: '',\n image: null,\n isDisabled: false,\n rank:0,\n supportedApplications: {\n agriculture: SupportValue.NotSupported,\n construction: SupportValue.NotSupported,\n doorToDoorRefuse: SupportValue.NotSupported,\n fire: SupportValue.NotSupported,\n heavyHaul: SupportValue.NotSupported,\n linehaul: SupportValue.NotSupported,\n logging: SupportValue.NotSupported,\n mixer: SupportValue.NotSupported,\n oilField: SupportValue.NotSupported,\n pickUpAndDelivery: SupportValue.NotSupported,\n recreational: SupportValue.NotSupported,\n refuse: SupportValue.NotSupported,\n rescue: SupportValue.NotSupported,\n transit: SupportValue.NotSupported,\n },\n maxSupportedGcw: TransmissionConstants.MIN_WEIGHT,\n supportedTerrain: {\n flat: SupportValue.NotSupported,\n hillyRolling: SupportValue.NotSupported,\n occasionalMountain: SupportValue.NotSupported,\n frequentMountain: SupportValue.NotSupported,\n steepGrade: SupportValue.NotSupported,\n },\n supportedManeuvers: {\n repeatedLaunches: SupportValue.NotSupported,\n slowCreeping: SupportValue.NotSupported,\n urbanStopAndGo: SupportValue.NotSupported,\n mud: SupportValue.NotSupported,\n fastInReverse: SupportValue.NotSupported,\n },\n supportedRoadTypes: {\n paved: SupportValue.NotSupported,\n maintainedGravel: SupportValue.NotSupported,\n offRoad: SupportValue.NotSupported,\n },\n maxSupportedCruiseSpeed: TransmissionConstants.MIN_SPEED,\n maxSupportedMaxSpeed: TransmissionConstants.MIN_SPEED,\n supportedPto: {\n noPto: SupportValue.NotSupported,\n onePto: SupportValue.NotSupported,\n twoPto: SupportValue.NotSupported,\n threeOrMorePto: SupportValue.NotSupported,\n },\n supportedEngineMakes: {\n cumminsDiesel: SupportValue.NotSupported,\n cumminsNaturalGas: SupportValue.NotSupported,\n detroit: SupportValue.NotSupported,\n international: SupportValue.NotSupported,\n other: SupportValue.NotSupported,\n paccar: SupportValue.NotSupported,\n },\n maxSupportedEngineHp: TransmissionConstants.MIN_HP,\n performanceGoalPoints: {\n acceleration: 0,\n fuelEconomy: 0,\n lowSpeedManeuvers: 0,\n price: 0,\n tripTime: 0,\n },\n axleRatioThresholds: {\n defaultBottom: 2,\n defaultTop: 2,\n mediumBottom: 2,\n mediumTop: 2,\n highBottom: 2,\n highTop: 2,\n extremeBottom: 2,\n extremeTop: 2,\n },\n modelTorques: [],\n};\n","import { makeStyles, Theme } from '@material-ui/core';\nimport { Gutters } from '../../styles/gutters';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n defaultPageContainer: {\n ...Gutters(theme),\n minWidth: '960px',\n maxWidth: '1500px',\n width: '100%',\n marginRight: 'auto',\n marginLeft: 'auto',\n },\n}));\n","import React from 'react';\nimport { useStyles } from './styles';\n\nexport const DefaultPage = (\n props: React.PropsWithChildren<{ background?: string }>,\n) => {\n const classes = useStyles();\n return (\n \n {props.children}\n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\nimport { Gutters } from '../../../styles/gutters';\n\nexport const FooterHeight = '48px';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n footer: {\n minHeight: FooterHeight,\n backgroundColor: theme.palette.grey[800],\n bottom: 0,\n position: 'absolute',\n width: '100%',\n },\n footerToolbar: {\n ...Gutters(theme),\n minHeight: FooterHeight,\n paddingTop: '8px',\n paddingBottom: '4px',\n minWidth: '960px',\n maxWidth: '1500px',\n marginRight: 'auto',\n marginLeft: 'auto',\n color: theme.palette.getContrastText(theme.palette.grey[800]),\n },\n footerToolbarItem: {\n display: 'flex',\n width: 'auto',\n alignItems: 'center',\n },\n footerText: {\n fontSize: '12px',\n display: 'flex',\n },\n footerLinkList: {\n [theme.breakpoints.down('sm')]: {\n paddingRight: '20px',\n paddingLeft: '20px',\n },\n [theme.breakpoints.down('xs')]: {\n paddingRight: '10px',\n paddingLeft: '10px',\n },\n [theme.breakpoints.up('md')]: {\n paddingRight: '45px',\n paddingLeft: '45px',\n },\n display: 'flex',\n },\n footerLink: {\n paddingLeft: '8px',\n paddingRight: '8px',\n },\n footerLinkText: {\n fontSize: '12px',\n color: theme.palette.getContrastText(theme.palette.grey[800]),\n textDecoration: 'underline',\n paddingBottom: '4px',\n },\n contactUs: {\n display: 'inline-block',\n },\n helpIcon: {\n paddingRight: '4px',\n overflow: 'visible',\n width: '22px',\n height: '22px',\n },\n}));\n","import { makeStyles, Theme } from '@material-ui/core';\nimport { FooterHeight } from '../app-chrome/footer/styles';\nimport { Gutters } from '../../styles/gutters';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n surveyFooterToolbar: {\n ...Gutters(theme),\n justifyContent: 'space-between',\n alignItems: 'center',\n height: '68px',\n minWidth: '960px',\n maxWidth: '1500px',\n marginRight: 'auto',\n marginLeft: 'auto',\n color: theme.palette.getContrastText(theme.palette.grey[800]),\n },\n surveyFooter: {\n minHeight: '68px',\n position: 'absolute',\n backgroundColor: theme.palette.grey[50],\n bottom: FooterHeight,\n width: '100%',\n borderTop: `1px solid ${theme.palette.grey[100]}`,\n }\n };\n});\n","import { withStyles, Toolbar } from '@material-ui/core';\nimport { Gutters } from '../../styles/gutters';\n\nexport const GutterToolbar = withStyles({\n root: {\n ...Gutters(),\n },\n})(Toolbar);\n","import React from 'react';\nimport { useStyles } from './styles';\nimport { GutterToolbar } from '../gutter-toolbar';\n\ntype Props = {\n lhs?: JSX.Element;\n rhs?: JSX.Element;\n};\n\nexport const PureSurveyFooter = (props: Props) => {\n const classes = useStyles();\n return (\n <>\n \n
\n \n
{props.lhs}
\n
{props.rhs}
\n
\n
\n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n progressBarContainer: {\n width: '100%',\n height: '23px',\n display: 'inline-flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginBottom: '48px',\n },\n progressNumber: {\n fontWeight: 700,\n fontSize: '12px',\n color: Colors.black[300],\n textAlign: 'right',\n width: '28px',\n },\n linearProgress: {\n width: '100%',\n },\n leftNumber: {\n marginRight: '8px',\n },\n rightNumber: {\n marginLeft: '8px',\n },\n };\n});\n","import React from 'react';\nimport { Typography, LinearProgress } from '@material-ui/core';\nimport { useStyles } from './styles';\n\ntype Props = {\n currentPage: number;\n totalPages: number;\n};\n\nexport const ProgressBar = (props: Props) => {\n const classes = useStyles();\n const progressValue = Math.round(\n (props.currentPage / props.totalPages) * 100,\n );\n return (\n
\n \n {props.currentPage}/{props.totalPages}\n \n \n \n {`${progressValue}%`}\n \n
\n );\n};\n","import React from 'react';\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogContentText,\n DialogActions,\n} from '@material-ui/core';\nimport { EatonButton } from '../button';\n\ntype Props = {\n open: boolean;\n onClose: () => void;\n alertTitle: string;\n alertContent: string;\n agreeButtonText: string;\n onAgree: () => void;\n};\ntype DialogLogProps={\n open: boolean;\n onClose: () => void;\n alertTitle: string;\n alertContent: React.ReactNode;\n}\nexport const EatonAlertDialogForTransmissionLog = (props: DialogLogProps) => {\n return (\n \n {props.alertTitle}\n \n \n {props.alertContent}\n \n \n \n \n Ok\n \n \n \n );\n};\n\nexport const EatonAlertDialog = (props: Props) => {\n return (\n \n {props.alertTitle}\n \n \n {props.alertContent}\n \n \n \n \n Cancel\n \n \n {props.agreeButtonText}\n \n \n \n );\n};\n","import React, { ReactElement, useState } from 'react';\nimport { useStyles } from './styles';\nimport { Typography, CircularProgress } from '@material-ui/core';\nimport { DefaultPage } from '../default-page';\nimport { EatonButton, EatonLinkButton } from '../button';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\nimport { SurveyPageProps } from './survey-shell';\nimport { PureSurveyFooter } from '../pure-survey-footer';\nimport { ProgressBar } from '../progress-bar';\nimport { UnitSwitcher } from '../unit-switcher';\nimport { EatonAlertDialog } from '../alert-dialog';\nimport { useHistory } from 'react-router-dom';\n\ntype Props = {\n currentPage: number;\n onNextClicked: () => void;\n onBackClicked: () => void;\n cancelLink: string;\n loading: boolean;\n};\n\nexport type PropsWithSurveyPageChildren

= P & {\n children: Array>;\n};\n\nexport const PureSurveyShell = (props: PropsWithSurveyPageChildren) => {\n\n const [isAlertDialogOpen, setIsAlertDialogOpen] = useState(false);\n const classes = useStyles();\n\n const progressCurrent = props.currentPage + 1;\n\n const currentChild = React.Children.toArray(props.children)[\n props.currentPage\n ];\n const nextButtonEnabled = currentChild.props.isFilled;\n\n const totalPages = props.children.length;\n\n const history= useHistory();\n\n const onAgreeHandler=()=>{\n history.push('/');\n }\n\n const lhsButtons = (\n <>\n {props.currentPage !== 0 && (\n \n \n Back\n \n )}\n \n setIsAlertDialogOpen(false)}\n onAgree={onAgreeHandler}\n alertTitle=\"Confirmation\"\n alertContent=\"You have not saved your responses are you sure you want to leave this site? If yes then press Continue\"\n agreeButtonText=\"Continue\"\n />\n\n setIsAlertDialogOpen(true)}\n disabled={props.loading}\n >\n Cancel\n \n \n );\n\n const rhsButtons = (\n <>\n {props.currentPage === totalPages - 1 ? (\n \n See My Result\n {props.loading && (\n \n )}\n \n ) : (\n \n Next\n \n \n )}\n \n );\n\n return (\n <>\n \n

\n Create a New Transmission Spec\n \n
\n \n \n {currentChild}\n \n \n \n \n );\n};\n","import React, { useState } from 'react';\nimport {\n PureSurveyShell,\n PropsWithSurveyPageChildren,\n} from './pure-survey-shell';\nimport { SubmissionState } from '../pure-transmission-form/transmission-form';\n\nexport const SurveyShell = (\n props: PropsWithSurveyPageChildren<{\n onSubmit: () => void;\n cancelLink: string;\n submissionState: SubmissionState;\n }>,\n) => {\n const [currentPage, setCurrentPage] = useState(0);\n const totalPages = React.Children.count(props.children);\n const onBack = () => setCurrentPage(currentPage - 1);\n const onNext = () => setCurrentPage(currentPage + 1);\n\n return (\n \n {props.children}\n \n );\n};\nexport type SurveyPageProps = React.PropsWithChildren<{\n isFilled: boolean;\n}>;\nexport const SurveyPage = (props: SurveyPageProps) => <>{props.children};\n","import React from 'react';\nimport { Paper, Typography } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { EatonButton } from '../button';\nimport ReactMarkdown from '../react-markdown';\nimport { kebabCase } from 'lodash';\n\nexport type TransmissionDisplay = {\n image: string | null;\n name: string;\n description: string;\n modelName: string;\n axleRatio: string;\n learnMoreUrl: string;\n};\n\nexport enum MatchType {\n TopMatch = 'Top Match',\n RunnerUp = 'Runner Up',\n}\n\ntype Props = {\n matchType: MatchType;\n transmission: TransmissionDisplay;\n disableLearnMore?: boolean;\n hideBorder?: boolean;\n};\n\nexport const TransmissionResult = (props: Props) => {\n const placeholderImg = '../../transmission-no-image.png';\n const classes = useStyles();\n const link = props.transmission.learnMoreUrl;\n\n return (\n \n \n \n \n
\n \n {props.matchType}\n \n \n {props.transmission.name}\n \n
\n {props.transmission.description}\n \n
\n {`\\u2022 Model: ${props.transmission.modelName}`}\n
\n {`\\u2022 Suggested Axle Ratio Range: ${props.transmission.axleRatio}`}\n
\n \n
\n\n \n \n Learn More\n \n \n
\n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\nimport { Gutters } from '../../styles/gutters';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n noResultUnitSwitcherContainer: {\n display: 'flex',\n flexDirection: 'row-reverse',\n marginTop: '32px',\n },\n resultTitleContainer: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n },\n header: {\n marginTop: '52px',\n marginBottom: '32px',\n },\n transmissionResult: {\n marginBottom: '32px',\n },\n surveyResponses: {\n marginBottom: '64px',\n },\n contactContainer: {\n width: '770px',\n marginLeft: 'auto',\n marginRight: 'auto',\n borderRadius: '2px',\n backgroundColor: Colors.blue[50],\n marginBottom: '128px',\n padding: '32px',\n textAlign: 'center',\n },\n specialMessageContainer: {\n width: '770px',\n marginLeft: 'auto',\n marginRight: 'auto',\n marginBottom: '64px',\n borderRadius: '2px',\n backgroundColor: Colors.yellow[50],\n padding: '32px',\n textAlign: 'center',\n },\n emphasisNote: { fontWeight: 600 },\n noTransmissionContainer: {\n width: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n borderRadius: '2px',\n backgroundColor: theme.palette.common.white,\n border: `1px solid ${theme.palette.grey[100]}`,\n marginBottom: '32px',\n marginTop: '32px',\n padding: '32px',\n textAlign: 'center',\n },\n contactHeader: {\n marginBottom: '16px',\n },\n contactSubheader: {\n marginBottom: '8px',\n color: Colors.black[600],\n },\n link: {\n '&:visited': {\n color: theme.palette.primary.main,\n },\n },\n debugText: {\n whiteSpace: 'pre-wrap',\n marginBottom: '20px',\n },\n pdfButton: {\n marginRight: '16px',\n },\n saveSpecHeaderContainer: {\n display: 'flex',\n flexFlow: 'column',\n },\n saveSpecSubHeader: {\n marginBottom: '16px',\n },\n saveSpecFillerText: {\n marginBottom: '32px',\n },\n saveSpecTopContainer: {\n borderBottom: `1px solid ${Colors.gray[50]}`,\n background: Colors.white[50],\n ...Gutters(theme),\n minWidth: '960px',\n maxWidth: '1500px',\n width: '100%',\n marginRight: 'auto',\n marginLeft: 'auto',\n paddingBottom: '52px',\n },\n saveSpecBottomContainer: {\n ...Gutters(theme),\n minWidth: '960px',\n maxWidth: '1500px',\n width: '100%',\n marginRight: 'auto',\n marginLeft: 'auto',\n paddingTop: '32px',\n },\n saveSpecTitleField: {\n marginBottom: '32px',\n width: '769px',\n },\n saveSpecRichTextEditorContainer: {\n width: '769px',\n paddingBottom: '32px',\n },\n saveSpecRichTextEditorEditorField: {\n height: '176px',\n },\n errorText: {\n color: theme.palette.error.main,\n paddingTop: '8px',\n paddingBottom: '8px',\n },\n transmissionButtonLink: {\n color: theme.palette.common.white,\n textDecoration: 'none',\n },\n };\n});\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n containerTopChoice: {\n display: 'flex',\n // width: '1170px',\n height: '100%',\n background: Colors.white[200],\n boxSizing: 'border-box',\n boxShadow: '0px 1px 10px rgba(77, 163, 212, 0.5)',\n border: `1px solid ${theme.palette.grey[100]}`,\n borderRadius: '2px',\n },\n containerRunnerUp: {\n display: 'flex',\n // width: '1170px',\n height: '100%',\n background: theme.palette.common.white,\n boxSizing: 'border-box',\n boxShadow: 'none',\n borderRadius: '2px',\n },\n runnerUpBorderBox: {\n border: `1px solid ${theme.palette.grey[100]}`,\n },\n runnerUpBorderRight: {\n borderRight: `1px solid ${theme.palette.grey[100]}`,\n },\n imageContainerTopChoice: {\n flex: 'none',\n background: theme.palette.common.white,\n width: '370px',\n height: 'auto',\n position: 'relative',\n },\n imageContainerRunnerUp: {\n flex: 'none',\n background: theme.palette.common.white,\n width: '370px',\n height: 'auto',\n position: 'relative',\n },\n image: {\n maxWidth: '100%',\n maxHeight: '100%',\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n margin: 'auto',\n },\n imagePadding: {\n paddingLeft: '42px',\n paddingRight: '42px',\n paddingTop: '21px',\n paddingBottom: '21px',\n },\n contentContainer: {\n width: '100%',\n height: '100%',\n paddingRight: '100px',\n marginLeft: '30px',\n marginTop: '32px',\n wordBreak: 'break-word',\n },\n contentLabel: {\n marginBottom: '6px',\n },\n contentName: {\n marginBottom: '16px',\n },\n contentDescription: {\n marginBottom: '32px',\n overflow: 'hidden',\n },\n contentButton: {\n height: '44px',\n marginBottom: '32px',\n },\n };\n});\n","import React, { Props, PropsWithChildren } from 'react';\nimport Markdown from 'markdown-to-jsx';\nimport Typography from '@material-ui/core/Typography';\nimport Link from '@material-ui/core/Link';\n\nconst options = {\n forceBlock: true,\n overrides: {\n h1: {\n component: Typography,\n props: {\n gutterBottom: true,\n variant: 'h1',\n },\n },\n h2: { component: Typography, props: { gutterBottom: true, variant: 'h2' } },\n h3: { component: Typography, props: { gutterBottom: true, variant: 'h3' } },\n h4: {\n component: Typography,\n props: { gutterBottom: true, variant: 'h4', paragraph: true },\n },\n h5: {\n component: Typography,\n props: { gutterBottom: true, variant: 'subtitle1', paragraph: true },\n },\n h6: {\n component: Typography,\n props: { gutterBottom: true, variant: 'subtitle2', paragraph: true },\n },\n p: { component: Typography, props: { paragraph: true } },\n a: { component: Link },\n ul: {\n component: (props: any) => (\n
    \n {React.Children.map(props.children, (child) => {\n return (\n \n {`\\u2022`} {child}\n \n );\n })}\n
\n ),\n },\n ol: {\n component: (props: any) => (\n
    \n {React.Children.map(props.children, (child, index) => {\n return (\n
  1. \n \n {child}\n \n
  2. \n );\n })}\n
\n ),\n },\n li: {\n component: Typography,\n },\n strong: {\n props: { style: { fontWeight: 600 } },\n },\n },\n};\n\nexport default function ReactMarkdown(props: PropsWithChildren) {\n return ;\n}\n","import React from 'react';\n\nexport const ExpandIcon = (props: { className?: string }) => (\n \n \n \n \n);\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n panelContainer: {\n boxShadow: 'none',\n border: `1px solid ${theme.palette.grey[100]}`,\n boxSizing: 'border-box',\n },\n panelSummary: {\n height: '57px',\n paddingLeft: '15px',\n boxShadow: `0px 1px 0px ${theme.palette.grey[100]}`,\n },\n icon: {\n marginRight: '8px',\n width: '28px',\n height: '28px',\n },\n responseHeader: {\n alignItems: 'center',\n display: 'inline-flex',\n },\n panelContent: {\n paddingTop: '16px',\n paddingBottom: '0px',\n paddingRight: '16px',\n paddingLeft: '52px',\n display: 'flex',\n flexFlow: 'row',\n },\n contentColumn: {\n display: 'flex',\n flexDirection: 'column',\n paddingRight: '32px',\n width: '100%',\n minWidth: 'fit-content',\n },\n contentColumnItem: {\n marginBottom: '32px',\n },\n surveyTitle: {\n fontWeight: 600,\n marginBottom: '8px',\n },\n surveyBody: {\n marginBottom: '8px',\n },\n inlineText: {\n display: 'inline-flex',\n alignItems: 'baseline',\n marginBottom: '8px',\n },\n multiPartSubtitle: {\n marginBottom: '6px',\n },\n };\n});\n","import React from 'react';\n\nexport const MinimizeIcon = (props: { className?: string }) => (\n \n \n \n \n);\n","import React from 'react';\nimport { Terrain, RoadType } from './survey';\nimport { ImageQuestionDetails } from '../components/pure-survey/image-question';\n\nexport const MountainPassIcon = (color: string) => (\n \n \n \n \n \n \n \n \n);\n\nexport const FlatIcon = (color: string) => (\n \n \n \n);\n\nexport const HillyIcon = (color: string) => (\n \n \n \n \n \n \n \n \n);\n\nexport const SteepGradeIcon = (color: string) => (\n \n \n \n \n \n \n \n \n);\n\nexport type ImageQuestionMapping = {\n [key in T]: ImageQuestionDetails;\n};\n\nexport const TerrainToLabelMappings: ImageQuestionMapping = {\n Flat: { title: 'Flat', subtitle: '(up to 2% grade)', icon: FlatIcon },\n SteepGrade: {\n title: 'Operation on grades of 20% or larger',\n icon: SteepGradeIcon,\n },\n HillyRolling: {\n title: 'Hilly / Rolling',\n subtitle: '(2-6% grade)',\n icon: HillyIcon,\n },\n OccasionalMountain: {\n title: 'Occasional Mountain Pass',\n subtitle: '(up to 6% grade)',\n icon: MountainPassIcon,\n },\n FrequentMountain: {\n title: 'Frequent Mountain',\n subtitle: '(over 6% grade)',\n icon: MountainPassIcon,\n },\n};\n\nexport const PavedIcon = (color: string) => (\n \n \n \n);\n\nexport const GravelIcon = (color: string) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport const OffRoadIcon = (color: string) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport const RoadTypeToLabelMappings: ImageQuestionMapping = {\n Paved: { title: 'Highway (Paved)', icon: PavedIcon },\n MaintainedGravel: { title: 'Maintained Gravel Roads', icon: GravelIcon },\n OffRoad: {\n title: 'Off Road, Soft Sand, Mud, Fields, 2-Track',\n icon: OffRoadIcon,\n },\n};\n","import React, { useState, useEffect } from 'react';\nimport {\n ExpansionPanel,\n ExpansionPanelSummary,\n Typography,\n ExpansionPanelDetails,\n} from '@material-ui/core';\nimport { ExpandIcon } from '../../icons/expand-icon';\nimport { useStyles } from './styles';\nimport { MinimizeIcon } from '../../icons/minimize-icon';\nimport {\n Survey,\n ManeuverToLabelMappings,\n EngineMakeToLabelMappings,\n Maneuver,\n} from '../../domain/survey';\nimport { isArray, startCase, findKey, kebabCase } from 'lodash';\nimport {\n TerrainToLabelMappings,\n ImageQuestionMapping,\n RoadTypeToLabelMappings,\n} from '../../domain/image-mappings';\nimport { ImageQuestionDetails } from '../pure-survey/image-question';\nimport { UnitSwitcher } from '../unit-switcher';\nimport {\n ImperialUnit,\n UnitType,\n Unit,\n UnitMapping,\n} from '../../domain/unit-converstions';\n\nexport const Drawer = (\n drawerProps: React.PropsWithChildren<{ header: string; startExpanded: boolean }>,\n) => {\n const classes = useStyles();\n const [expanded, setExpanded] = useState(drawerProps.startExpanded);\n const onChange = () => setExpanded(!expanded);\n useEffect(() => {\n setExpanded(drawerProps.startExpanded);\n }, [drawerProps.startExpanded]);\n\n return (\n \n \n {expanded ? (\n \n ) : (\n \n )}\n \n {drawerProps.header}\n \n \n \n {drawerProps.children}\n \n \n );\n};\n\ntype StandardEnum = {\n [id: string]: string;\n};\n\ntype Props = {\n survey: Survey;\n unit: Unit;\n startExpanded: boolean;\n};\n\nexport const SurveyResponses = (props: Props) => {\n const classes = useStyles();\n\n function SimpleSurveyPart(simplePartProps: { title: string; body: string }) {\n return (\n
\n \n {simplePartProps.title}\n \n\n \n {simplePartProps.body}\n \n
\n );\n }\n\n function LabelMappedSurveyPart(simplePartProps: {\n title: string;\n body: T[] | T;\n labelMapping: { [key in T]: string } | ImageQuestionMapping;\n subtitleMapping?: boolean;\n }) {\n const Item = (itemProps: { body: T }) => {\n const rawLabel: ImageQuestionDetails | string =\n simplePartProps.labelMapping[itemProps.body];\n const label = typeof rawLabel === 'string'\n ? rawLabel\n : simplePartProps.subtitleMapping\n ? `${rawLabel.title} ${rawLabel.subtitle || ''}`\n : rawLabel.title;\n return {label};\n };\n\n return (\n
\n \n {simplePartProps.title}\n \n {isArray(simplePartProps.body) ? (\n simplePartProps.body.map((lineItem, index) => (\n \n ))\n ) : (\n \n )}\n
\n );\n }\n\n const MultiSurveyPart = (multiPartProps: {\n title: string;\n parts: Array<{ subTitle: string; content: string | number }>;\n unit: Unit;\n }) => (\n
\n \n {multiPartProps.title}\n \n {multiPartProps.parts.map((lineItem, index) => (\n
\n
\n \n {lineItem.subTitle}: \n \n {lineItem.content}\n
\n
\n
\n ))}\n
\n );\n\n const convertAndPrint = (unitType: UnitType, value: ImperialUnit) => {\n return props.unit === Unit.Imperial\n ? `${value.toLocaleString()} ${UnitMapping[unitType].imperial}`\n : `${UnitMapping[unitType].toMetric(value).toLocaleString()} ${\n UnitMapping[unitType].metric\n }`;\n };\n\n return (\n \n
\n \n
\n
\n
\n \n \n \n
\n
\n \n title=\"Maneuvers\"\n body={\n props.survey.maneuvers.length > 0\n ? props.survey.maneuvers\n : 'NoManeuvers'\n }\n labelMapping={ManeuverToLabelMappings}\n />\n \n \n
\n
\n \n \n
\n
\n n === 1) || '',\n ),\n },\n {\n subTitle: '2',\n content: startCase(\n findKey(props.survey.preferenceRanking, (n) => n === 2) || '',\n ),\n },\n {\n subTitle: '3',\n content: startCase(\n findKey(props.survey.preferenceRanking, (n) => n === 3) || '',\n ),\n },\n {\n subTitle: '4',\n content: startCase(\n findKey(props.survey.preferenceRanking, (n) => n === 4) || '',\n ),\n },\n {\n subTitle: '5',\n content: startCase(\n findKey(props.survey.preferenceRanking, (n) => n === 5) || '',\n ),\n },\n ]}\n />\n
\n
\n
\n );\n};\n","import { padStart } from 'lodash';\n\n// https://stackoverflow.com/questions/139655/convert-pixels-to-points\n// https://stackoverflow.com/questions/44757411/what-is-pixel-width-and-length-for-jspdfs-default-a4-format\nexport const pixelsToPoints = (pixels: number) => pixels * (72 / 96);\n\nexport const formattedDateString = (date: Date): string => (\n `${padStart(`${date.getMonth() + 1}`, 2, '0')}-${padStart(`${date.getDate()}`, 2, '0')}-${date.getFullYear()}`\n);\n","import React from 'react';\nimport * as Colors from '@pxblue/colors';\nimport { Text, View, StyleSheet, Link } from '@react-pdf/renderer';\nimport { markdownToDraft } from 'markdown-draft-js';\nimport {\n EditorState,\n convertToRaw,\n convertFromRaw,\n} from 'draft-js';\nimport redraft from 'redraft';\nimport { pixelsToPoints } from './helpers';\n\nexport const PDFRichText = ({ note }: any) => {\n const editorState = EditorState.createWithContent(\n convertFromRaw(markdownToDraft(note, { preserveNewlines: true })),\n );\n const rawContent = convertToRaw(editorState.getCurrentContent());\n return redraft(rawContent, renderers, { blockFallback: 'unstyled' });\n};\n\nconst markdownStyles = StyleSheet.create({\n typography: {\n fontFamily: 'Open Sans',\n fontWeight: 400,\n color: Colors.gray[800],\n },\n h1: {\n fontWeight: 600,\n fontSize: pixelsToPoints(42),\n color: Colors.black[600],\n },\n h2: {\n fontWeight: 600,\n fontSize: pixelsToPoints(32),\n color: Colors.black[600],\n },\n h3: {\n fontWeight: 600,\n fontSize: pixelsToPoints(24),\n color: Colors.black[600],\n },\n h4: {\n fontWeight: 600,\n fontSize: pixelsToPoints(18),\n color: Colors.black[600],\n },\n h5: {\n fontWeight: 600,\n fontSize: pixelsToPoints(16),\n color: Colors.gray[800],\n marginTop: pixelsToPoints(8),\n marginBottom: pixelsToPoints(8),\n },\n h6: {\n fontWeight: 700,\n letterSpacing: pixelsToPoints(1),\n fontSize: pixelsToPoints(10),\n color: Colors.gray[800],\n textTransform: 'uppercase',\n marginTop: pixelsToPoints(8),\n marginBottom: pixelsToPoints(8),\n },\n list: {\n marginTop: 8,\n display: 'flex',\n flexDirection: 'column',\n },\n listItem: {\n marginBottom: 4,\n },\n blockquote: {\n marginLeft: 25,\n },\n});\n\nexport const HeaderTwo = (props: React.PropsWithChildren<{ style?: any }>) => (\n {props.children}\n);\n\nexport const UnorderedList = ({ children, depth }: any) => {\n return {children};\n};\nexport const UnorderedListItem = ({ children }: any) => {\n return (\n \n \n •  {children}\n \n \n );\n};\nconst OrderedList = ({ children, depth }: any) => {\n return {children};\n};\nconst OrderedListItem = ({ children, index }: any) => {\n return (\n \n \n {index + 1}. {children}\n \n \n );\n};\nconst renderers = {\n inline: {\n // The key passed here is just an index based on rendering order inside a block\n BOLD: (children: any, { key }: any) => {\n return (\n \n {children}\n \n );\n },\n ITALIC: (children: any, { key }: any) => {\n return {children};\n },\n UNDERLINE: (children: any, { key }: any) => {\n return {children};\n },\n },\n /**\n * Blocks receive children and depth\n * Note that children are an array of blocks with same styling,\n */\n blocks: {\n 'unstyled': (children: any, { keys }: any) => {\n return children.map((child: any, index: number) => {\n return (\n \n {child}\n \n );\n });\n },\n 'header-one': (children: any, { keys }: any) => {\n return children.map((child: any, index: number) => {\n return (\n \n {child}\n \n );\n });\n },\n 'header-two': (children: any, { keys }: any) => {\n return children.map((child: any, index: number) => {\n return {child};\n });\n },\n 'header-three': (children: any, { keys }: any) => {\n return children.map((child: any, index: number) => {\n return (\n \n {child}\n \n );\n });\n },\n 'header-four': (children: any, { keys }: any) => {\n return children.map((child: any, index: number) => {\n return (\n \n {child}\n \n );\n });\n },\n 'header-five': (children: any, { keys }: any) => {\n return children.map((child: any, index: number) => {\n return (\n \n {child}\n \n );\n });\n },\n 'header-six': (children: any, { keys }: any) => {\n return children.map((child: any, index: number) => {\n return (\n \n {child}\n \n );\n });\n },\n 'blockquote': (children: any, { keys }: any) => {\n return children.map((child: any, index: number) => {\n return (\n \n {child}\n \n );\n });\n },\n 'unordered-list-item': (children: any, { depth, keys }: any) => {\n return (\n \n {children.map((child: any, index: number) => (\n {child}\n ))}\n \n );\n },\n 'ordered-list-item': (children: any, { depth, keys }: any) => {\n return (\n \n {children.map((child: any, index: number) => (\n \n {child}\n \n ))}\n \n );\n },\n },\n /**\n * Entities receive children and the entity data\n */\n entities: {\n // key is the entity key value from raw\n LINK: (children: any, data: any, { key }: any) => (\n \n {children}\n \n ),\n },\n};\n","import React, { useMemo } from 'react';\nimport { TransmissionDisplay, MatchType } from '../transmission-result';\nimport {\n Survey,\n ManeuverToLabelMappings,\n Maneuver,\n EngineMakeToLabelMappings,\n} from '../../domain/survey';\nimport {\n Page,\n Text,\n View,\n Document,\n Image,\n Font,\n PDFDownloadLink,\n Link,\n} from '@react-pdf/renderer';\nimport {\n PDFRichText,\n UnorderedList,\n UnorderedListItem,\n HeaderTwo,\n} from './markdown-pdf';\nimport { pixelsToPoints, formattedDateString } from './helpers';\nimport { startCase, isArray, findKey } from 'lodash';\nimport {\n UnitType,\n ImperialUnit,\n Unit,\n UnitMapping,\n} from '../../domain/unit-converstions';\nimport {\n ImageQuestionMapping,\n TerrainToLabelMappings,\n RoadTypeToLabelMappings,\n} from '../../domain/image-mappings';\nimport { ImageQuestionDetails } from '../pure-survey/image-question';\nimport { makeClasses } from './styles';\nimport { EatonButton } from '../button';\nimport { CircularProgress } from '@material-ui/core';\nimport { func } from 'prop-types';\n\nFont.register({\n family: 'Open Sans',\n src: 'https://fonts.gstatic.com/s/opensans/v13/IgZJs4-7SA1XX_edsoXWog.ttf',\n fonts: [\n {\n src:\n 'https://fonts.gstatic.com/s/opensans/v13/IgZJs4-7SA1XX_edsoXWog.ttf',\n fontWeight: 400,\n },\n {\n src:\n 'https://fonts.gstatic.com/s/opensans/v13/O4NhV7_qs9r9seTo7fnsVKCWcynf_cDxXwCLxiixG1c.ttf',\n fontWeight: 400,\n fontStyle: 'italic',\n },\n {\n src:\n 'https://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNSi3USBnSvpkopQaUR-2r7iU.ttf',\n fontWeight: 600,\n },\n {\n src:\n 'https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxpZ7xm-Bj30Bj2KNdXDzSZg.ttf',\n fontWeight: 600,\n fontStyle: 'italic',\n },\n {\n src:\n 'https://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzC3USBnSvpkopQaUR-2r7iU.ttf',\n fontWeight: 700,\n },\n {\n src:\n 'https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxne1Pd76Vl7zRpE7NLJQ7XU.ttf',\n fontWeight: 700,\n fontStyle: 'italic',\n },\n {\n src:\n 'https://fonts.gstatic.com/s/opensans/v13/EInbV5DfGHOiMmvb1Xr-hi3USBnSvpkopQaUR-2r7iU.ttf',\n fontWeight: 800,\n },\n {\n src:\n 'https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxg89PwPrYLaRFJ-HNCU9NbA.ttf',\n fontWeight: 800,\n fontStyle: 'italic',\n },\n ],\n});\n\nconst classes = makeClasses();\nconst placeholderImg = '../../transmission-no-image.png';\n\nlet getBase64Type = function(base64ImageString: string) : string {\n const pngBase64Prefix = 'data:image/png;base64,'\n const jpgBase64Prefix = 'data:image/jpeg;base64,'\n const imageData = base64ImageString.split(',')[1];\n if(imageData == undefined)\n return placeholderImg\n if(imageData.charAt(0) == '/') \n return jpgBase64Prefix + imageData\n else\n return pngBase64Prefix + imageData\n}\n\nconst PDFTransmissionResult = (resultProps: {\n matchType: MatchType;\n transmission: TransmissionDisplay;\n}) => (\n \n \n \n \n \n {resultProps.matchType}\n \n {resultProps.transmission.name}\n \n \n {PDFRichText({ note: resultProps.transmission.description })}\n\n \n \n Model: {resultProps.transmission.modelName}\n \n \n Suggested Axle Ratio Range: {resultProps.transmission.axleRatio}\n \n \n \n\n \n Contact your Eaton Representative to learn more.\n \n \n \n);\n\nconst SimpleSurveyPart = (simpleSurveyProps: {\n title: string;\n body: string;\n}) => {\n return (\n \n {simpleSurveyProps.title}\n {simpleSurveyProps.body}\n \n );\n};\n\nconst MultiSurveyPart = (multiPartProps: {\n title: string;\n parts: Array<{ subTitle: string; content: string | number }>;\n}) => (\n \n {multiPartProps.title}\n {multiPartProps.parts.map((lineItem, index) => (\n \n {lineItem.subTitle}: \n {lineItem.content}\n \n ))}\n \n);\n\nfunction LabelMappedSurveyPart(simplePartProps: {\n title: string;\n body: T[] | T;\n labelMapping: { [key in T]: string } | ImageQuestionMapping;\n subtitleMapping?: boolean;\n}) {\n const Item = (itemProps: { body: T }) => {\n const rawLabel: ImageQuestionDetails | string =\n simplePartProps.labelMapping[itemProps.body];\n const label =\n typeof rawLabel === 'string'\n ? rawLabel\n : simplePartProps.subtitleMapping\n ? `${rawLabel.title} ${rawLabel.subtitle || ''}`\n : rawLabel.title;\n return {label};\n };\n\n return (\n \n {simplePartProps.title}\n \n {isArray(simplePartProps.body) ? (\n simplePartProps.body.map((lineItem, index) => (\n \n ))\n ) : (\n \n )}\n \n \n );\n}\n\nconst PDFSurveyResponse = (props: { survey: Survey; unit: Unit }) => {\n const convertAndPrint = (unitType: UnitType, value: ImperialUnit) => {\n return props.unit === Unit.Imperial\n ? `${value.toLocaleString()} ${UnitMapping[unitType].imperial}`\n : `${UnitMapping[unitType].toMetric(value).toLocaleString()} ${\n UnitMapping[unitType].metric\n }`;\n };\n return (\n \n \n Your Responses\n \n \n \n \n \n \n \n \n title=\"Maneuvers\"\n body={\n props.survey.maneuvers.length > 0\n ? props.survey.maneuvers\n : 'NoManeuvers'\n }\n labelMapping={ManeuverToLabelMappings}\n />\n \n \n \n \n \n \n \n \n n === 1) ||\n '',\n ),\n },\n {\n subTitle: '2',\n content: startCase(\n findKey(props.survey.preferenceRanking, (n) => n === 2) ||\n '',\n ),\n },\n {\n subTitle: '3',\n content: startCase(\n findKey(props.survey.preferenceRanking, (n) => n === 3) ||\n '',\n ),\n },\n {\n subTitle: '4',\n content: startCase(\n findKey(props.survey.preferenceRanking, (n) => n === 4) ||\n '',\n ),\n },\n {\n subTitle: '5',\n content: startCase(\n findKey(props.survey.preferenceRanking, (n) => n === 5) ||\n '',\n ),\n },\n ]}\n />\n \n \n \n \n );\n};\n\nconst PDFFooter = () => {\n const rootUrl = window.location.origin;\n return (\n \n \n Contact your Eaton Representative\n \n \n The most appropriate transmission will vary with application. \n \n Learn more by clicking here.\n \n \n \n If you have more specific questions, contact us at 1-800-826-4357, or\n contact your local Roadranger representative.\n \n \n );\n};\n\ninterface Props {\n survey: Survey;\n unit: Unit;\n topChoice: TransmissionDisplay;\n runnerUp?: TransmissionDisplay;\n className?: string;\n title?: string;\n notes?: string;\n surveyDate?: Date;\n loading?: boolean;\n}\n\nexport const TransmissionDoc = (props: Props & { testingDate?: Date }) => {\n const headerInfo = (\n \n {\n props.title || props.notes\n ? \n \n \n SPEC:\n \n \n {props.title}\n \n \n \n \n YOUR NOTES:\n \n \n {PDFRichText({ note: props.notes })}\n \n \n \n : ({`Your Recommended Transmission${\n props.runnerUp ? 's' : ''\n }`})\n}\n \n );\n return (\n \n \n \n \n \n \n Survey Date: {formattedDateString(props.surveyDate || props.testingDate || new Date())}\n \n \n Print Date: {formattedDateString(props.testingDate || new Date())}\n \n \n \n \n {headerInfo}\n \n \n {props.runnerUp && (\n \n )}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport const PDFGenerator = (props: Props) => {\n const PDFFunc = (className?: string) =>\n useMemo(() => {\n return (\n }\n fileName=\"transmission-spec.pdf\"\n >\n {({ blob, url, loading, error }) => {\n return (\n \n Download PDF\n {(loading || props.loading) && (\n \n )}\n \n );\n }}\n \n );\n }, [props.unit, props.loading]);\n return PDFFunc(props.className);\n};\n","import { StyleSheet } from '@react-pdf/renderer';\nimport { pixelsToPoints } from './helpers';\nimport * as Colors from '@pxblue/colors';\n\nexport const makeClasses = () => StyleSheet.create({\n typography: {\n fontFamily: 'Open Sans',\n fontWeight: 400,\n color: Colors.gray[800],\n fontSize: pixelsToPoints(16),\n },\n title: {\n marginTop: pixelsToPoints(32),\n marginBottom: pixelsToPoints(32),\n },\n containerTopChoice: {\n borderColor: Colors.black[300],\n borderWidth: pixelsToPoints(3),\n },\n container: {\n display: 'flex',\n flexDirection: 'row',\n borderRadius: 3,\n width: pixelsToPoints(1170),\n marginBottom: pixelsToPoints(32),\n },\n containerRunnerUp: {\n borderColor: Colors.gray[200],\n borderWidth: pixelsToPoints(1),\n },\n image: {\n width: pixelsToPoints(370),\n margin: 'auto',\n },\n imageNoTransmission: {\n width: pixelsToPoints(370),\n margin: 'auto',\n paddingTop: pixelsToPoints(32),\n paddingBottom: pixelsToPoints(32),\n },\n imageContainer: {\n height: '100%',\n flexDirection: 'column',\n },\n logo: {\n width: pixelsToPoints(311),\n },\n pageMargins: {\n paddingRight: pixelsToPoints(135),\n paddingLeft: pixelsToPoints(135),\n paddingTop: pixelsToPoints(67),\n paddingBottom: pixelsToPoints(96),\n },\n contentContainer: {\n paddingTop: pixelsToPoints(32),\n paddingBottom: pixelsToPoints(32),\n paddingLeft: pixelsToPoints(28),\n paddingRight: pixelsToPoints(100),\n width: pixelsToPoints(800),\n },\n transmissionTitle: {\n fontWeight: 600,\n fontSize: pixelsToPoints(24),\n lineHeight: 1.5,\n color: Colors.black[600],\n marginBottom: pixelsToPoints(16),\n },\n matchType: {\n fontWeight: 700,\n fontSize: pixelsToPoints(10),\n lineHeight: 1.75,\n letterSpacing: pixelsToPoints(1),\n textTransform: 'uppercase',\n color: Colors.gray[800],\n },\n learnMore: {\n marginTop: pixelsToPoints(32),\n },\n hr: {\n borderWidth: 0.5,\n height: 0,\n width: pixelsToPoints(1170),\n borderColor: Colors.gray[100],\n marginTop: pixelsToPoints(25),\n },\n header: {\n display: 'flex',\n width: pixelsToPoints(1170),\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n fileDetails: {\n display: 'flex',\n flexDirection: 'row',\n },\n fileDetail: {\n fontSize: pixelsToPoints(14),\n color: Colors.black[600],\n paddingLeft: pixelsToPoints(16),\n },\n responsesContainer: {\n display: 'flex',\n flexDirection: 'row',\n borderRadius: 3,\n width: pixelsToPoints(1170),\n marginBottom: pixelsToPoints(32),\n borderColor: Colors.gray[200],\n borderWidth: pixelsToPoints(1),\n },\n responsesContentContainer: {\n paddingTop: pixelsToPoints(32),\n paddingLeft: pixelsToPoints(52),\n },\n responsesTitle: {\n fontWeight: 600,\n fontSize: pixelsToPoints(18),\n color: Colors.black[600],\n paddingBottom: pixelsToPoints(16),\n },\n responsesDetails: {\n display: 'flex',\n flexDirection: 'row',\n },\n responsesColumn: {\n paddingRight: pixelsToPoints(32),\n width: pixelsToPoints(280),\n },\n detailHeader: {\n fontWeight: 600,\n color: Colors.black[600],\n paddingBottom: pixelsToPoints(8),\n },\n detailBody: {\n paddingBottom: pixelsToPoints(32),\n },\n detailListItem: {\n paddingBottom: pixelsToPoints(8),\n },\n inRowSurveyItem: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'flex-end',\n paddingBottom: pixelsToPoints(8),\n },\n footerContainer: {\n borderRadius: 3,\n width: pixelsToPoints(770),\n borderColor: Colors.gray[200],\n borderWidth: pixelsToPoints(1),\n paddingBottom: pixelsToPoints(32),\n paddingTop: pixelsToPoints(32),\n paddingLeft: pixelsToPoints(100),\n paddingRight: pixelsToPoints(100),\n alignSelf: 'center',\n textAlign: 'center',\n },\n footerText: {\n paddingBottom: pixelsToPoints(16),\n },\n specTitleView: {\n paddingTop: '32px',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'baseline',\n paddingBottom: '32px',\n },\n specTitleSmallText: {\n fontWeight: 600,\n color: Colors.black[700],\n fontSize: pixelsToPoints(18),\n paddingRight: pixelsToPoints(8),\n paddingBottom: pixelsToPoints(4),\n },\n specTitleLargeText: {\n fontWeight: 600,\n color: Colors.black[700],\n fontSize: pixelsToPoints(32),\n },\n notesContainer: {\n width: pixelsToPoints(737),\n color: Colors.black[700],\n paddingTop: pixelsToPoints(8),\n paddingBottom: pixelsToPoints(32),\n display: 'flex',\n flexDirection: 'column',\n },\n });\n","import React, { useState } from 'react';\nimport { Survey, PreferenceRanking } from '../../domain/survey';\nimport { PureSurvey, NullableSurvey } from '../pure-survey';\nimport { TransmissionDisplay } from '../transmission-result';\nimport { SurveyShell } from '../survey-shell/survey-shell';\nimport { SubmissionState } from '../pure-transmission-form/transmission-form';\nimport { TransmissionConstants } from '../../domain/transmission';\nimport { Typography } from '@material-ui/core';\nimport { useHistory } from 'react-router-dom';\nimport { DefaultPage } from '../default-page';\nimport { EatonButton, EatonLinkButton } from '../button';\nimport { useAuthState } from '../reusable-components';\nimport {\n AuthStatus,\n useAuthDispatch,\n} from '../reusable-components/components/AuthContext';\nimport { SurveyResult } from '../survey-result';\nconst JSONPretty = require('react-json-pretty'); // TS gets cranky if we import this normally 🤷‍♀️\n\nexport type ApiResponse = {\n resultType: 'success' | 'fail';\n content: Result;\n};\n\nexport type Result = (\n | MessageResultTransmission\n | MessageResultNoTransmission\n | MessageResultError\n) & { debug?: any };\n\nexport enum MessageResultType {\n Transmission = 'Transmission',\n NoTransmission = 'NoTransmission',\n Error = 'Error',\n}\n\ntype MessageResultTransmission = {\n type: MessageResultType.Transmission;\n topChoice: Pick<\n TransmissionDisplay,\n | 'image'\n | 'name'\n | 'description'\n | 'learnMoreUrl'\n | 'modelName'\n | 'axleRatio'\n >;\n runnerUp?: Pick<\n TransmissionDisplay,\n | 'image'\n | 'name'\n | 'description'\n | 'learnMoreUrl'\n | 'modelName'\n | 'axleRatio'\n >;\n};\n\ntype MessageResultNoTransmission = {\n type: MessageResultType.NoTransmission;\n message: string;\n};\n\ntype MessageResultError = {\n type: MessageResultType.Error;\n message: string;\n};\n\nexport const EMPTY_SURVEY = {\n application: null,\n maxWeight: TransmissionConstants.MIN_WEIGHT,\n terrain: null,\n maneuvers: null,\n roadTypes: null,\n cruiseSpeed: TransmissionConstants.MIN_SPEED,\n maxSpeed: TransmissionConstants.MIN_SPEED,\n pto: null,\n engineMake: null,\n engineHp: TransmissionConstants.MIN_HP,\n engineTorque: TransmissionConstants.MIN_TORQUE,\n preferenceRanking: {\n acceleration: null,\n fuelEconomy: null,\n lowSpeedManeuvers: null,\n price: null,\n tripTime: null,\n },\n};\n\nexport const allPreferenceRankingFilled = (\n candidate: NullableSurvey,\n) =>\n !!candidate &&\n Object.entries(candidate).reduce(\n (acc, entry) => acc && entry[1] !== null,\n true,\n );\n\nexport const isCompleteSurvey = (\n candidate: NullableSurvey,\n): candidate is Survey => {\n const allFieldsFilled = Object.entries(candidate).reduce((acc, entry) => {\n return acc && entry[1] !== null;\n }, true);\n\n return (\n allFieldsFilled && allPreferenceRankingFilled(candidate.preferenceRanking)\n );\n};\n\nexport const Disclaimer = (props: { setDisplay: () => void }) => (\n \n
\n \n Create a New Transmission Spec\n \n \n
\n \n The most appropriate transmission will vary with application. \n \n Learn more here.\n \n \n
\n
\n \n Eaton Cummins Automated Transmission Technologies reserves the right\n to discontinue or modify its models and/or procedures and to change\n specifications at any time without notice.\n \n
\n
\n \n Got it! Create spec\n \n \n Cancel\n \n
\n \n
\n);\n\nexport const SurveyView = (props: { _inTest?: boolean }) => {\n const [showDisclaimer, setShowDisclaimer] = useState(true);\n const [message, setMessage] = useState(undefined);\n const [survey, setSurvey] = useState>(EMPTY_SURVEY);\n const [submissionState, setSubmissionState] = useState(\n 'unsubmitted',\n );\n const router = useHistory();\n const authState = useAuthState();\n const { authenticatedRequest } = useAuthDispatch();\n\n const setDisclaimer = () => setShowDisclaimer(!showDisclaimer);\n\n const sendSurveyData = async (\n filledSurvey: Survey,\n ): Promise<'success' | 'fail'> => {\n const result = await authenticatedRequest({\n method: 'POST',\n url: `api/survey${\n authState.authenticated === AuthStatus.Authenticated &&\n authState.privileges.roles.includes('TransmissionAdmin')\n ? '/debug'\n : ''\n }`,\n data: filledSurvey,\n });\n if (result.ok) {\n setMessage({\n resultType: 'success',\n content: result.body,\n });\n return 'success';\n } else {\n setMessage(undefined);\n return 'fail';\n }\n };\n const trackEvent = (eventName: string, eventData: any) => {\n if ((window as any)._satellite) {\n (window as any)._satellite.track(eventName, eventData);\n }\n };\n const onSubmit = async () => {\n if (isCompleteSurvey(survey)) {\n setSubmissionState('submitting');\n const result = await sendSurveyData(survey);\n setSubmissionState(result);\n if (result === 'fail') {\n router.push('/error');\n }\n trackEvent('Survey Completed', {\n category: 'Survey',\n action: 'Completed survey'\n });\n window.scrollTo({ top: 0 });\n }\n };\n\n if (message?.resultType === 'success' && isCompleteSurvey(survey)) {\n switch (message.content.type) {\n case MessageResultType.Transmission:\n return (\n \n );\n case MessageResultType.NoTransmission:\n return (\n \n );\n // This case should be handled in the onSubmit, but just in case, we can display it here.\n case MessageResultType.Error:\n return (\n
\n \n
\n );\n default:\n throw new Error('Should never reach this point.');\n }\n } else if (message?.resultType === 'fail') {\n // This case should be handled in the onSubmit, but just in case, we can display it here.\n return Something went wrong. Please try again.;\n }\n\n return (\n <>\n {showDisclaimer ? (\n \n ) : (\n \n {PureSurvey({ survey, setSurvey, submissionState })}\n \n )}\n \n );\n};","/* eslint-disable quote-props */\nimport { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n editorToolbar: {\n backgroundColor: theme.palette.grey[100],\n borderBottom: `1px solid ${theme.palette.grey[200]}`,\n borderTop: 'none',\n borderLeft: 'none',\n borderRight: 'none',\n borderRadius: '0px',\n },\n editorWrapper: {\n border: `1px solid ${theme.palette.grey[200]}`,\n borderRadius: '2px',\n },\n editorButton: {\n fontFamily: theme.typography.fontFamily,\n border: 'none',\n '& .rdw-option-active': {\n backgroundColor: theme.palette.grey[300],\n border: `1px solid ${theme.palette.grey[300]}`,\n boxShadow: `1px 1px 0px ${theme.palette.grey[400]}`,\n },\n '& .rdw-option-wrapper': {\n border: 'none',\n },\n },\n editorContent: {\n paddingLeft: '10px',\n paddingRight: '10px',\n maxHeight: '400px',\n },\n };\n});\n","import React, { useEffect } from 'react';\nimport { Editor } from 'react-draft-wysiwyg';\nimport { EditorState, convertFromRaw } from 'draft-js';\nimport { draftToMarkdown, markdownToDraft } from 'markdown-draft-js';\nimport { useStyles } from './styles';\nimport '../../../node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\n\nexport const RichTextEditor = (props: {\n onChange?: (value: string) => void;\n value?: string | undefined;\n readonly?: boolean;\n className?: string;\n editorClassName?: string;\n}) => {\n const [editorState, setEditorState] = React.useState(\n props.value !== null\n ? EditorState.createWithContent(\n convertFromRaw(\n markdownToDraft(props.value, { preserveNewlines: true }),\n ),\n )\n : EditorState.createEmpty(),\n );\n\n useEffect(() => {\n if (props.value === '') {\n // setEditorState(EditorState.moveFocusToEnd(EditorState.createEmpty()));\n setEditorState(EditorState.createEmpty());\n }\n }, [props.value === '']);\n\n const classes = useStyles({});\n\n return (\n
\n {\n const markdownValue: string = draftToMarkdown(value);\n if (props.onChange) props.onChange(markdownValue);\n }}\n toolbarClassName={classes.editorToolbar}\n wrapperClassName={classes.editorWrapper}\n editorClassName={`${classes.editorContent} ${props.editorClassName}`}\n data-testid=\"rich-text-editor\"\n readOnly={props.readonly}\n toolbar={{\n options: ['blockType', 'inline', 'list', 'link', 'history'],\n blockType: {\n className: classes.editorButton,\n inDropdown: true,\n options: [\n 'Normal',\n 'H1',\n 'H2',\n 'H3',\n 'H4',\n 'H5',\n 'H6',\n 'Blockquote',\n ],\n },\n inline: {\n className: classes.editorButton,\n options: ['bold', 'italic'],\n },\n list: {\n className: classes.editorButton,\n options: ['unordered', 'ordered'],\n },\n link: {\n className: classes.editorButton,\n },\n history: {\n className: classes.editorButton,\n },\n }}\n />\n
\n );\n};\n","import React, { useContext, useState, useEffect } from 'react';\nimport { PureSurveyFooter } from '../pure-survey-footer';\nimport { EatonButton, EatonLinkButton } from '../button';\nimport { Typography, TextField } from '@material-ui/core';\nimport { DefaultPage } from '../default-page';\nimport { useStyles } from './styles';\nimport {\n TransmissionResult,\n MatchType,\n TransmissionDisplay,\n} from '../transmission-result';\nimport { SurveyResponses, Drawer } from '../survey-responses';\nimport { Survey } from '../../domain/survey';\nimport { PDFGenerator } from '../pdf-generator';\nimport { UnitContext } from '../unit-switcher';\nimport {\n useAuthState,\n AuthStatus,\n useAuthDispatch,\n} from '../reusable-components/components/AuthContext';\nimport { RichTextEditor } from '../rich-text-editor';\nimport { debounce } from 'lodash';\nimport { SavedSurveyResult } from '../../domain/saved-result';\nimport { useHistory } from 'react-router-dom';\nimport { Unit } from '../../domain/unit-converstions';\n\ntype Props = {\n survey: Survey;\n cancelLink: string;\n noTransmissionMessage?: string;\n topChoice?: TransmissionDisplay;\n runnerUp?: TransmissionDisplay;\n debug?: any;\n _inTest?: boolean;\n};\n\nexport const SurveyResult = (props: Props) => {\n const classes = useStyles();\n const unitContext = useContext(UnitContext);\n const router = useHistory();\n const authState = useAuthState();\n const { authenticatedRequest } = useAuthDispatch();\n\n // Save Spec Dependent Items\n const [viewingEditingState, setViewingEditingState] = useState<\n 'viewingResult' | 'editingForSave'\n >('viewingResult');\n\n const [specTitle, setSpecTitle] = useState('');\n\n const [specNotes, setSpecNotes] = useState('');\n\n const canViewSurveyResult =\n authState.authenticated === AuthStatus.Authenticated &&\n authState.privileges.operations.includes('GetSurveyResult');\n const canEditSurveyResult =\n authState.authenticated === AuthStatus.Authenticated &&\n authState.privileges.operations.includes('EditSurveyResult');\n const hasViewAndEditPermission = canViewSurveyResult && canEditSurveyResult;\n\n const [saving, setSaving] = useState(false);\n const [submitError, setSubmitError] = useState(false);\n\n const footerLhs = (\n \n Cancel\n \n );\n\n const DebugInfo = props.debug && (\n \n \n NOTE: Calculations below are in Imperial units.\n
\n
\n {props.debug}\n
\n
\n );\n\n const saveSpec = async () => {\n setSaving(true);\n try {\n const result = await authenticatedRequest({\n method: 'POST',\n url: `/api/surveyresult`,\n data: {\n notes: specNotes,\n result: `${JSON.stringify({\n topChoice: props.topChoice,\n runnerUp: props.runnerUp,\n })}`,\n survey: `${JSON.stringify(props.survey)}`,\n title: specTitle.trim(),\n version: '1.0',\n },\n });\n if (result.status < 300) {\n const id = (result.body as SavedSurveyResult).id;\n router.push(`/spec/${id}`);\n } else {\n setSaving(false);\n setSubmitError(true);\n }\n } catch {\n setSaving(false);\n setSubmitError(true);\n }\n };\n\n if (props.noTransmissionMessage) {\n return (\n <>\n \n
\n \n {props.noTransmissionMessage}\n
\n For your unique case, please contact your Eaton Representative.\n
\n \n \n Locate your representative.\n \n \n
\n
\n {\n \n }\n {DebugInfo}\n
\n
\n \n \n );\n }\n\n if (viewingEditingState === 'editingForSave') {\n return (\n \n );\n }\n\n const SavePDFButton =\n !props._inTest && props.topChoice ? (\n \n ) : undefined;\n\n const StartSaveSpecButton = props.topChoice ? (\n {\n setViewingEditingState('editingForSave');\n }}\n data-testid=\"save-spec-start\"\n id=\"save-spec-start\"\n >\n Save Spec\n \n ) : undefined;\n\n const rhsButtons = (\n <>\n \n \n View Transmission Portfolio\n \n \n {hasViewAndEditPermission && SavePDFButton}\n {hasViewAndEditPermission && StartSaveSpecButton}\n \n );\n\n return (\n <>\n \n
\n {props.topChoice && (\n \n {props.topChoice && props.runnerUp\n ? 'Your Recommended Transmissions'\n : 'Your Recommended Transmission'}\n \n )}\n
\n {props.topChoice && (\n
\n \n
\n )}\n {props.runnerUp && (\n
\n \n
\n )}\n
\n {\n \n }\n {DebugInfo}\n
\n
\n \n Contact your Eaton Representative\n \n \n Share your results with your Eaton representative.\n \n \n \n Locate your representative.\n \n \n
\n \n The most appropriate transmission will vary with application. \n \n \n \n Learn more here.\n \n \n
\n
\n \n \n );\n};\n\nconst PureEditSurveyResult = (\n props: Props & {\n units: Unit;\n specNotes: string;\n setSpecNotes: (notes: string) => void;\n specTitle: string;\n setSpecTitle: (title: string) => void;\n submitError: boolean;\n cancelButton: JSX.Element;\n saveSpec: () => void;\n saving: boolean;\n },\n) => {\n const classes = useStyles();\n\n const [pdfLoading, setPdfLoading] = useState(false);\n const [pdfTitle, setPdfTitle] = useState(props.specTitle);\n const [pdfNotes, setPdfNotes] = useState(props.specNotes);\n const debounceNotes = debounce(setPdfNotes, 2000, { trailing: true });\n const debounceTitle = debounce(setPdfTitle, 2000, { trailing: true });\n\n useEffect(() => {\n if (pdfNotes === props.specNotes && pdfTitle === props.specTitle) {\n setPdfLoading(false);\n } else {\n setPdfLoading(true);\n }\n }, [props.specNotes, props.specTitle, pdfTitle, pdfNotes]);\n\n return (\n <>\n
\n \n \n Save Transmission Spec\n \n \n {props.topChoice && props.runnerUp\n ? 'Transmission Recommendations'\n : 'Transmission Recommendation'}\n \n \n Save your results so you can access them later. Add notes to help\n you keep track of your decision making process.\n \n
\n {props.topChoice && (\n
\n \n
\n )}\n {props.runnerUp && (\n
\n \n \n \n
\n )}\n
\n {\n \n }\n
\n \n
\n {\n event.target.select();\n }}\n onChange={(event) => {\n props.setSpecTitle(event.target.value);\n debounceTitle(event.target.value);\n }}\n />\n {\n props.setSpecNotes(value);\n debounceNotes(value);\n }}\n />\n {props.submitError && (\n
\n \n An error occured during the save. Please try again.\n \n
\n )}\n
\n \n \n \n View Transmission Portfolio\n \n \n {!props._inTest && (\n \n )}\n \n Save\n \n \n }\n />\n \n );\n};\n","import React from 'react';\nimport {\n Survey,\n Application,\n RoadType,\n EngineMake,\n PreferenceRanking,\n EngineMakeToLabelMappings,\n} from '../../domain/survey';\nimport { kebabCase } from 'lodash';\nimport { RadioQuestion } from './radio-question';\nimport { SliderQuestion } from './slider-question';\nimport { DragAndDropQuestion } from './drag-question';\nimport { PTOQuestion } from './pto-question';\nimport { SurveyPage } from '../survey-shell/survey-shell';\nimport { allPreferenceRankingFilled } from '../survey';\nimport { SubmissionState } from '../pure-transmission-form/transmission-form';\nimport { Typography } from '@material-ui/core';\nimport { SurveyPageHeader } from './survey-page-header';\nimport { TerrainQuestion } from './terrain-question';\nimport { ManeuversQuestion } from './maneuvers-question';\nimport { TransmissionConstants } from '../../domain/transmission';\nimport { ImageQuestion } from './image-question';\nimport { RoadTypeToLabelMappings } from '../../domain/image-mappings';\n\nexport type NullableSurvey = {\n [P in keyof T]: T[P] extends PreferenceRanking\n ? NullableSurvey\n : T[P] | null;\n};\n\ntype Props = {\n survey: NullableSurvey;\n setSurvey: React.Dispatch>>;\n submissionState: SubmissionState;\n};\n\nexport function PureSurvey(props: Props) {\n const { survey, setSurvey, submissionState } = props;\n\n return [\n \n \n {\n setSurvey({ ...survey, application });\n }}\n name=\"Application\"\n values={Application}\n maxInColumn={6}\n />\n ,\n \n \n {\n setSurvey({ ...survey, maxWeight });\n }}\n name=\"Max GCW\"\n minValue={TransmissionConstants.MIN_WEIGHT}\n maxValue={TransmissionConstants.MAX_WEIGHT}\n units=\"weight\"\n stepSize={1000}\n />\n ,\n \n \n {\n setSurvey({ ...survey, terrain });\n }}\n />\n ,\n \n \n {\n setSurvey({ ...survey, roadTypes });\n }}\n labelMapping={RoadTypeToLabelMappings}\n />\n ,\n \n \n {\n setSurvey({ ...survey, maneuvers });\n }}\n />\n ,\n \n Vehicle Speed\n \n {\n setSurvey({ ...survey, cruiseSpeed });\n }}\n name=\"Avg Cruise Speed\"\n minValue={TransmissionConstants.MIN_SPEED}\n maxValue={TransmissionConstants.MAX_SPEED}\n stepSize={1}\n units=\"speed\"\n />\n \n {\n setSurvey({ ...survey, maxSpeed });\n }}\n name=\"Max Speed\"\n minValue={TransmissionConstants.MIN_SPEED}\n maxValue={TransmissionConstants.MAX_SPEED}\n stepSize={1}\n units=\"speed\"\n />\n ,\n \n \n {\n setSurvey({ ...survey, pto });\n }}\n />\n ,\n \n Engine Rating and Type\n \n {\n setSurvey({ ...survey, engineMake });\n }}\n name=\"Engine Make\"\n values={EngineMake}\n labelMapping={EngineMakeToLabelMappings}\n maxInColumn={3}\n />\n
\n \n {\n setSurvey({ ...survey, engineHp });\n }}\n name=\"Horsepower\"\n minValue={TransmissionConstants.MIN_HP}\n maxValue={TransmissionConstants.MAX_HP}\n stepSize={5}\n units=\"power\"\n />\n {\n setSurvey({ ...survey, engineTorque });\n }}\n name=\"Torque\"\n minValue={TransmissionConstants.MIN_TORQUE}\n maxValue={TransmissionConstants.MAX_TORQUE}\n stepSize={50}\n units=\"torque\"\n />\n
\n ,\n \n \n {\n setSurvey({ ...survey, preferenceRanking });\n }}\n name=\"Preference Ranking\"\n optionsTitle=\"Options\"\n rankingTitle=\"Customer Preference Ranking\"\n />\n ,\n ];\n}\n\nexport const cssClassName = (string: string) => {\n return kebabCase(string).replace(\n /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~\\s]/g,\n '-',\n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n terrainOptionContainer: {\n display: 'inline-flex',\n flexWrap: 'wrap',\n },\n contentLabel: {\n marginBottom: '23px',\n color: theme.palette.text.primary,\n },\n confirmationDialogContainer: {\n marginBottom: '32px',\n maxWidth: '670px',\n display: 'flex',\n flexFlow: 'column',\n },\n confirmationDialogHeader: {\n marginBottom: '16px',\n },\n mountainDialogHeader: {\n marginBottom: '12px',\n },\n confirmationDialogBody: {\n marginBottom: '8px',\n },\n confirmationDialogBodyBold: {\n fontWeight: theme.typography.fontWeightBold,\n },\n mountainOption: {\n alignItems: 'start',\n marginBottom: '8px',\n },\n mountainLabel: {\n paddingTop: '8px',\n },\n subtitle: {\n marginBottom: '8px',\n },\n };\n});\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n optionsContainer: {\n display: 'inline-flex',\n flexWrap: 'wrap',\n width: '100%'\n },\n contentLabel: {\n marginBottom: '23px',\n color: theme.palette.text.primary,\n },\n checkmarkBubble: {\n width: '22px',\n height: '22px',\n position: 'absolute',\n left: '-1.48%',\n right: '93.33%',\n top: '-2.23%',\n bottom: '89.94%',\n boxSizing: 'border-box',\n boxShadow: '1px 1px 2px rgba(0, 54, 94, 0.1)',\n borderRadius: '11px',\n border: `2px solid ${Colors.gray[200]}`,\n background: Colors.white[200],\n },\n unselectedCheckmarkBubble: {},\n selectedCheckmarkBubble: {\n border: `2px solid ${Colors.white[50]}`,\n background: theme.palette.primary.main\n },\n selectedCheckmark: {\n transform: 'rotate(45deg)',\n borderBottom: `2px solid ${Colors.white[50]}`,\n borderRight: `2px solid ${Colors.white[50]}`,\n position: 'absolute',\n width: '8px',\n height: '18px',\n marginLeft: '7px',\n marginTop: '-3px',\n filter: 'drop-shadow(0px 0px 1px rgba(0, 54, 94, 0.2))',\n },\n imageOptionContainer: { display: 'inline-block' },\n imageOption: {\n position: 'relative',\n background: Colors.white[200],\n width: '270px',\n height: '180px',\n marginRight: '32px',\n marginBottom: '32px',\n boxShadow: '0px 1px 5px rgba(0, 0, 0, 0.2)',\n borderRadius: '2px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n padding: '16px',\n '&:hover $unselectedCheckmarkBubble': {\n backgroundColor: Colors.blue[50],\n border: `2px solid ${Colors.blue[100]}`,\n },\n '&:hover': {\n backgroundColor: Colors.blue[50],\n boxShadow: '0px 2px 4px rgba(0, 0, 0, 0.14), 0px 3px 4px rgba(0, 0, 0, 0.12), 0px 1px 5px rgba(0, 0, 0, 0.2)'\n },\n },\n iconContainer: {\n marginTop: '16px',\n minHeight: '78px',\n maxHeight: '78px',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center'\n },\n selectedOption: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.getContrastText(theme.palette.primary.main),\n boxShadow: '0px 4px 5px rgba(0, 0, 0, 0.2), 0px 3px 14px rgba(0, 0, 0, 0.12), 0px 8px 10px rgba(0, 0, 0, 0.14)',\n '&:hover': {\n backgroundColor: theme.palette.primary.main,\n boxShadow: '0px 4px 5px rgba(0, 0, 0, 0.2), 0px 3px 14px rgba(0, 0, 0, 0.12), 0px 8px 10px rgba(0, 0, 0, 0.14)',\n },\n },\n titleText: {\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '24px',\n letterSpacing: '0.16px',\n textTransform: 'uppercase',\n marginTop: '24px'\n },\n selectedTitleText: {\n color: theme.palette.getContrastText(theme.palette.primary.main),\n },\n unselectedTitleText: {\n color: Colors.blue[700],\n },\n subtitleText: {\n fontSize: '14px',\n }\n };\n});\n","import React, { useState } from 'react';\nimport * as Colors from '@pxblue/colors';\nimport { ImageQuestionMapping } from '../../../domain/image-mappings';\n\nimport {\n FormControl,\n FormLabel,\n Typography,\n CheckboxProps,\n Checkbox,\n} from '@material-ui/core';\nimport { cssClassName } from '..';\nimport { useStyles } from './styles';\n\nexport function ImageQuestion(props: {\n name: string;\n values: { [key: string]: T };\n value: T[] | null;\n setValue: (value: T[] | null) => void;\n labelMapping: ImageQuestionMapping;\n}) {\n const classes = useStyles();\n\n const handleChange = (name: T) => (checked: boolean) => {\n if (!checked) {\n const newValue = (props.value || []).filter((value) => value !== name);\n if (newValue.length === 0) {\n props.setValue(null);\n } else {\n props.setValue(newValue);\n }\n } else if (!props.value?.includes(name)) {\n props.setValue((props.value || []).concat(name));\n }\n };\n\n return (\n \n \n \n Select all that apply.\n \n \n
\n {Object.values(props.values).map((value) => (\n {\n handleChange(value)(!props.value?.includes(value));\n }}\n />\n ))}\n
\n
\n );\n}\n\nexport type ImageQuestionDetails = {\n title: string;\n subtitle?: string;\n icon: (color: string) => JSX.Element;\n};\n\nexport const ImageOption = (\n props: {\n onClick: () => void;\n checked: boolean;\n } & ImageQuestionDetails,\n) => {\n const classes = useStyles();\n return (\n \n \n \n {props.checked &&
}\n
\n\n
\n {props.icon(props.checked ? Colors.white[100] : Colors.blue[600])}\n
\n \n {props.title}\n \n \n {props.subtitle}\n \n \n \n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { Terrain } from '../../../domain/survey';\nimport {\n FormControl,\n FormLabel,\n Typography,\n FormGroup,\n FormControlLabel,\n Checkbox,\n Box,\n Radio,\n RadioGroup,\n} from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { TerrainToLabelMappings } from '../../../domain/image-mappings';\nimport { CheckboxQuestion } from '../checkbox-question';\nimport { cssClassName } from '..';\nimport { ImageOption } from '../image-question';\n\ntype Props = {\n terrains: Terrain[] | null;\n setValue: (value: Terrain[] | null) => void;\n};\n\ntype State = {\n flat: boolean;\n hilly: boolean;\n mountainPass: boolean;\n mountainSelection:\n | Terrain.FrequentMountain\n | Terrain.OccasionalMountain\n | null;\n steepGrade: boolean;\n steepGradeConfirmed: boolean;\n};\n\nexport const TerrainQuestion = (props: {\n terrains: Terrain[] | null;\n setValue: (terrains: Terrain[] | null) => void;\n}) => {\n const classes = useStyles();\n\n const [state, setState] = useState({\n flat: !!props.terrains?.includes(Terrain.Flat),\n hilly: !!props.terrains?.includes(Terrain.HillyRolling),\n mountainPass: !!(\n props.terrains?.includes(Terrain.OccasionalMountain) ||\n props.terrains?.includes(Terrain.FrequentMountain)\n ),\n mountainSelection: props.terrains?.includes(Terrain.OccasionalMountain)\n ? Terrain.OccasionalMountain\n : props.terrains?.includes(Terrain.FrequentMountain)\n ? Terrain.FrequentMountain\n : null,\n steepGrade: !!props.terrains?.includes(Terrain.SteepGrade),\n steepGradeConfirmed: !!props.terrains?.includes(Terrain.SteepGrade),\n });\n\n useEffect(() => {\n let terrains: Terrain[] = [];\n if (state.flat) terrains = terrains.concat(Terrain.Flat);\n if (state.hilly) terrains = terrains.concat(Terrain.HillyRolling);\n if (state.mountainSelection !== null) {\n terrains = terrains.concat(state.mountainSelection);\n }\n if (state.steepGrade) terrains = terrains.concat(Terrain.SteepGrade);\n\n // If the constraints are met, set the survey values\n if (\n terrains.length !== 0 &&\n (!state.mountainPass || state.mountainSelection !== null) &&\n (!state.steepGrade || state.steepGradeConfirmed)\n ) {\n props.setValue(terrains);\n } else {\n props.setValue(null);\n }\n // Otherwise, set survey values to null\n }, [state]);\n\n const mountainPassQuestion = (\n
\n \n Mountain Pass\n \n \n Tell us more about your intended mountain pass driving.\n \n {\n setState({\n ...state,\n mountainSelection: value as\n | Terrain.FrequentMountain\n | Terrain.OccasionalMountain,\n });\n }}\n >\n }\n label={\n
\n Occasional driving in the mountains at 6% or smaller grades.\n
\n \n Driving on mountain grades is not generally a common route for\n this vehicle.\n \n
\n }\n />\n }\n label={\n
\n Frequent driving in the mountains at 6% or larger grades.\n
\n \n Driving routes on mountain grades happens regularly for this\n vehicle.\n \n
\n }\n />\n \n
\n );\n\n const steepGradeConfirmation = (\n
\n \n Steep Grade\n \n \n Confirm your use case.\n \n \n {`Your selection indicates the intended vehicle will be operating on a grade of 20% or larger. This is\n a steep grade and will greatly limit your results.`}\n \n \n Confirm your use case has reasonable alignment to this description.\n \n\n }\n label={'My use case aligns to the description above.'}\n onChange={(event, checked) => {\n setState({ ...state, steepGradeConfirmed: checked });\n }}\n />\n
\n );\n\n return (\n <>\n \n Select all that apply.\n \n
\n {\n setState({ ...state, flat: !state.flat });\n }}\n />\n\n {\n setState({ ...state, hilly: !state.hilly });\n }}\n />\n {\n if (!state.mountainPass) {\n setState({\n ...state,\n mountainSelection: null,\n mountainPass: true,\n });\n } else {\n setState({\n ...state,\n mountainPass: false,\n mountainSelection: null,\n });\n }\n }}\n />\n {\n if (!state.steepGrade) {\n setState({\n ...state,\n steepGrade: true,\n steepGradeConfirmed: false,\n });\n } else {\n setState({\n ...state,\n steepGrade: false,\n steepGradeConfirmed: false,\n });\n }\n }}\n />\n
\n {state.mountainPass && mountainPassQuestion}\n\n {state.steepGrade && steepGradeConfirmation}\n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n contentLabel: {\n marginBottom: '23px',\n color: theme.palette.text.primary,\n },\n };\n});\n","import React, { useState } from 'react';\nimport {\n FormControl,\n FormLabel,\n FormGroup,\n FormControlLabel,\n Checkbox,\n Typography,\n} from '@material-ui/core';\nimport { cssClassName } from '..';\nimport { startCase, capitalize } from 'lodash';\nimport { useStyles } from './styles';\n\nexport function CheckboxQuestion(props: {\n name: string;\n values: { [key: string]: T };\n value: T[] | null;\n setValue: (value: T[] | null) => void;\n allowNone?: true;\n labelMapping?: { [key in T]: string };\n}) {\n const classes = useStyles();\n\n const [noneChecked, setNone] = useState(\n props.allowNone ? props.value?.length === 0 : false,\n );\n\n const handleNone = (checked: boolean) => {\n if (checked) {\n props.setValue([]);\n } else {\n props.setValue(null);\n }\n setNone(checked);\n };\n\n const handleChange = (name: T) => (\n event: React.ChangeEvent<{}>,\n checked: boolean,\n ) => {\n if (!checked) {\n const newValue = (props.value || []).filter((value) => value !== name);\n if (newValue.length === 0) {\n props.setValue(null);\n } else {\n props.setValue(newValue);\n }\n } else if (!props.value?.includes(name)) {\n props.setValue((props.value || []).concat(name));\n }\n };\n\n return (\n \n \n \n Select all that apply.\n \n \n \n {Object.values(props.values).map((value) => (\n }\n label={\n props.labelMapping\n ? props.labelMapping[value]\n : capitalize(startCase(value))\n }\n onChange={handleChange(value)}\n disabled={noneChecked}\n />\n ))}\n {props.allowNone && (\n }\n label=\"None of the above\"\n onChange={(event, checked) => {\n handleNone(checked);\n }}\n />\n )}\n \n \n );\n}\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n contentLabel: {\n marginBottom: '23px',\n color: theme.palette.text.primary,\n },\n confirmationDialogContainer: {\n marginTop: '32px',\n maxWidth: '670px',\n },\n confirmationDialogHeader: {\n marginBottom: '16px',\n },\n confirmationDialogBody: {\n marginBottom: '8px',\n },\n confirmationDialogBodyBold: {\n marginBottom: '7px',\n fontWeight: 600,\n },\n };\n});\n","import React, { useState, useContext } from 'react';\nimport { CheckboxQuestion } from '../checkbox-question';\nimport { Maneuver, ManeuverToLabelMappings } from '../../../domain/survey';\nimport { Typography, FormControlLabel, Checkbox } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { UnitContext } from '../../unit-switcher';\nimport { Unit } from '../../../domain/unit-converstions';\n\nexport const ManeuversQuestion = (props: {\n maneuvers: Maneuver[] | null;\n setValue: (maneuvers: Maneuver[] | null) => void;\n}) => {\n const classes = useStyles();\n\n const unitContext = useContext(UnitContext);\n\n const [slowCreepingChecked, setSlowCreepingChecked] = useState(\n props.maneuvers?.includes(Maneuver.SlowCreeping),\n );\n const [withheldValues, setWithheldValues] = useState(null);\n\n const slowCreepText = unitContext.units === Unit.Metric\n ? `Your selection indicates the intended vehicle use will be collecting\n or discharging materials on a job site at very slow speeds for\n sustained time intervals. These speeds are in the range of 0.8 kph\n or approximately 13 m/min (typical walking speed ~ 5 kph).`\n : `Your selection indicates the intended vehicle use will be collecting\n or discharging materials on a job site at very slow speeds for\n sustained time intervals. These speeds are in the range of 0.5 mph\n or 44 ft/min (typical walking speed ~ 3 mph).`;\n\n return (\n <>\n {\n setSlowCreepingChecked(!!maneuvers?.includes(Maneuver.SlowCreeping));\n\n // If the new list includes SlowCreeping and it was not in the list already\n if (\n !!maneuvers?.includes(Maneuver.SlowCreeping) &&\n !props.maneuvers?.includes(Maneuver.SlowCreeping)\n ) {\n setWithheldValues(maneuvers); // Save the list of maneuvers for after they check the confirmation\n props.setValue(null); // And set the maneuvers to null until it's done\n } else {\n setWithheldValues(null);\n props.setValue(maneuvers);\n }\n }}\n allowNone\n labelMapping={ManeuverToLabelMappings}\n />\n {slowCreepingChecked && (\n
\n \n Confirm your use case.\n \n \n {slowCreepText}\n \n \n Confirm your use case has reasonable alignment to this description.\n \n }\n label={'My use case aligns to the description above.'}\n onChange={(event, checked) => {\n if (checked) {\n props.setValue(\n (props.maneuvers || [])\n .filter((m) => m !== Maneuver.SlowCreeping)\n .concat(Maneuver.SlowCreeping),\n );\n } else {\n setWithheldValues(withheldValues || props.maneuvers);\n props.setValue(null);\n }\n }}\n />\n
\n )}\n \n );\n};\n","import React from 'react';\nimport {\n Typography,\n CircularProgress,\n TableContainer,\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n} from '@material-ui/core';\nimport KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\nimport { useAuthenticatedRequest } from '../reusable-components/hooks/use-authenticated-request';\nimport { useStyles } from './styles';\nimport { sortBy, reverse } from 'lodash';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport { cssClassName } from '../pure-survey';\nimport { Link } from 'react-router-dom';\nimport { EatonLinkButton } from '../button';\nimport { SavedSurveyResult } from '../../domain/saved-result';\nimport { format, parseISO } from 'date-fns';\n\ntype Row = {\n id: string;\n name: string;\n transmission: string;\n createdAtUTC: string;\n lastEditedUTC: string;\n};\n\nfunction descendingComparator(\n a: T,\n b: T,\n date: boolean = false,\n) {\n let valueA;\n let valueB;\n\n if (date) {\n valueA = Date.now() - new Date(a).valueOf();\n valueB = Date.now() - new Date(b).valueOf();\n } else {\n valueA = a;\n valueB = b;\n }\n\n if (valueB < valueA) {\n return -1;\n }\n if (valueB > valueA) {\n return 1;\n }\n return 0;\n}\n\ntype Order = 'asc' | 'desc';\n\nfunction getComparator(\n order: Order,\n orderBy: Key,\n isDate: boolean,\n): (a: { [key in Key]: string }, b: { [key in Key]: string }) => number {\n return order === 'desc'\n ? (a, b) => descendingComparator(a[orderBy], b[orderBy], isDate)\n : (a, b) => -descendingComparator(a[orderBy], b[orderBy], isDate);\n}\n\nfunction stableSort(array: T[], comparator: (a: T, b: T) => number) {\n const stabilizedThis = array.map((el, index) => [el, index] as [T, number]);\n stabilizedThis.sort((a, b) => {\n const order = comparator(a[0], b[0]);\n if (order !== 0) return order;\n return a[1] - b[1];\n });\n return stabilizedThis.map((el) => el[0]);\n}\n\ninterface HeadCell {\n id: keyof Row;\n label: string;\n}\n\nconst headCells: HeadCell[] = [\n {\n id: 'name',\n label: 'Name',\n },\n {\n id: 'transmission',\n label: 'Transmission',\n },\n {\n id: 'createdAtUTC',\n label: 'Date Created',\n },\n {\n id: 'lastEditedUTC',\n label: 'Last Edited',\n },\n];\n\ninterface EnhancedTableProps {\n classes: ReturnType;\n onRequestSort: (\n event: React.MouseEvent,\n property: keyof Row,\n ) => void;\n order: Order;\n orderBy: string;\n rowCount: number;\n}\n\nfunction EnhancedTableHead(props: EnhancedTableProps) {\n const { classes, order, orderBy, onRequestSort } = props;\n const createSortHandler = (property: keyof Row) => (\n event: React.MouseEvent,\n ) => {\n onRequestSort(event, property);\n };\n\n return (\n \n \n {headCells.map((headCell) => (\n \n \n {headCell.label}\n {orderBy === headCell.id ? (\n \n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n \n ) : null}\n \n \n ))}\n \n \n );\n}\n\nexport function EnhancedTable(props: {\n paginate: boolean;\n rows: Row[];\n useUTC?: boolean;\n _test?: boolean;\n}) {\n const { rows } = props;\n const classes = useStyles();\n const [order, setOrder] = React.useState('asc');\n const [orderBy, setOrderBy] = React.useState('lastEditedUTC');\n const [page, setPage] = React.useState(0);\n const [rowsPerPage, setRowsPerPage] = React.useState(20);\n\n const handleRequestSort = (\n event: React.MouseEvent,\n property: keyof Row,\n ) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleChangePage = (event: unknown, newPage: number) => {\n setPage(newPage);\n };\n\n const handleChangeRowsPerPage = (\n event: React.ChangeEvent,\n ) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(0);\n };\n\n const sortedRows = stableSort(\n rows,\n getComparator(\n order,\n orderBy,\n orderBy === 'lastEditedUTC' || orderBy === 'createdAtUTC',\n ),\n );\n const showRows = props.paginate\n ? sortedRows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n : sortedRows;\n\n const LinkCell = (\n linkCellProps: React.PropsWithChildren<{ to: string; className: string }>,\n ) => (\n \n \n
{linkCellProps.children}
\n \n \n );\n return (\n
\n \n \n \n \n {showRows.map((row, index) => {\n const rowLink = `/spec/${row.id}`;\n return (\n \n \n {row.name}\n \n \n {row.transmission}\n \n \n {props.useUTC\n ? row.createdAtUTC\n : format(parseISO(row.createdAtUTC), 'MM-dd-yyyy')}\n \n \n
\n {props.useUTC\n ? row.lastEditedUTC\n : format(\n parseISO(row.lastEditedUTC),\n 'MM-dd-yyyy hh:mm',\n )}\n \n
\n \n \n );\n })}\n
\n
\n
\n {props.paginate && (\n \n )}\n
\n );\n}\n\nexport const PureSpecTable = (props: {\n specs: SavedSurveyResult[];\n limit?: number;\n actionLabel: string;\n actionLink: string;\n useUTC?: boolean;\n _test?: boolean;\n}) => {\n const classes = useStyles();\n\n if (props.specs.length === 0) {\n return (\n
\n \n Looks like you haven't created any specs yet.\n \n \n Create your first spec\n \n
\n );\n }\n\n const rows = reverse(\n sortBy(\n props.specs.map((spec) => ({\n id: spec.id.toString(),\n name: spec.title,\n // transmission: JSON.parse(spec.result).topChoice.name,\n transmission: spec.result,\n // Doing the conversion of these dates now makes the sorting simpler.\n createdAtUTC: `${spec.createdAtUTC}Z`,\n lastEditedUTC: `${spec.lastEditedUTC}Z`,\n })),\n (row) => row.lastEditedUTC,\n ),\n );\n\n return (\n
\n \n \n {props.actionLabel}\n \n
\n );\n};\n\nexport const SpecTable = (props: {\n actionLabel: string;\n actionLink: string;\n limit?: number;\n}) => {\n const [loading, specs] = useAuthenticatedRequest({\n requestConfig: {\n method: 'GET',\n url: `/api/surveyresult`,\n },\n });\n\n const classes = useStyles();\n\n if (loading) {\n return (\n
\n \n
\n );\n }\n\n if (!Array.isArray(specs)) {\n return (\n
\n Something went wrong. Please reload.\n
\n );\n }\n\n return (\n \n );\n};\n","import React from 'react';\nimport { useStyles } from './styles';\nimport { SnackbarContent, Snackbar, IconButton } from '@material-ui/core';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ErrorIcon from '@material-ui/icons/Error';\n\nexport enum SnackBarType {\n 'Success',\n 'Error',\n}\n\ntype OwnProps = {\n type: SnackBarType;\n message: string;\n onClose: () => void;\n showSnack: boolean;\n};\n\nexport const EatonSnackBar = (props: OwnProps) => {\n const classes = useStyles();\n const snackbarClass =\n props.type === SnackBarType.Success\n ? `${classes.success} success-snack`\n : `${classes.error} error-snack`;\n const icon =\n props.type === SnackBarType.Success ? (\n \n ) : (\n \n );\n\n return (\n props.onClose()}\n >\n \n {icon}\n {props.message}\n \n }\n action={[\n {\n props.onClose();\n }}\n >\n \n ,\n ]}\n />\n \n );\n};\n","import React from 'react';\nimport { Typography } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { SpecTable } from '../spec-table';\n\nexport const AppSplashLoggedIn = () => {\n const classes = useStyles();\n\n return (\n
\n \n \n My Recent Specs\n \n Your most recently created or edited specs.\n \n \n \n \n
\n );\n};\n","import React from 'react';\r\nimport { AppSplash } from '../../components/splash';\r\nimport { AppSplashNotLoggedIn } from '../../components/splash-not-logged-in';\r\nimport { useStyles } from './styles';\r\nimport { useAuthState } from '../../components/reusable-components';\r\nimport { AuthStatus } from '../../components/reusable-components/components/AuthContext';\r\nimport { AppSplashLoggedIn } from '../../components/splash-logged-in';\r\nimport { DefaultPage } from '../../components/default-page';\r\n\r\nexport const Home = () => {\r\n const classes = useStyles();\r\n const { authenticated } = useAuthState();\r\n const signedIn = authenticated === AuthStatus.Authenticated;\r\n return (\r\n \r\n \r\n {signedIn ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n success: {\n backgroundColor: Colors.green[800],\n },\n error: {\n backgroundColor: theme.palette.error.dark,\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing(1),\n },\n message: {\n display: 'flex',\n alignItems: 'center',\n },\n };\n});\n","import { withStyles, Theme, TableCell, TableRow, makeStyles } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const StyledTableCell = withStyles((theme: Theme) => ({\n head: {\n backgroundColor: Colors.blue[500],\n color: theme.palette.common.white,\n fontSize: 16,\n fontWeight: 400,\n },\n body: {\n fontSize: 14,\n borderColor: Colors.gray[100],\n },\n}))(TableCell);\n\nexport const StyledTableDataRow = withStyles((theme: Theme) => ({\n root: {\n '&:hover':{ background: '#F0F9FF' }, \n // {\n // backgroundColor: Colors.blue[50],\n // },\n // eslint-disable-next-line quote-props\n backgroundColor: theme.palette.common.white,\n },\n}))(TableRow);\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n paperBody: {\n marginLeft: '20px',\n marginRight: '20px',\n },\n emptyTableBody: {\n marginTop: '50px',\n textAlign: 'center',\n width: '100%',\n textTransform: 'inherit',\n },\n emptyTableLink: {\n textTransform: 'inherit',\n marginTop: '10px',\n },\n emptyTableButton: {\n marginRight: '5px',\n },\n tableCellActions: {\n width: '10%',\n minWidth: '130px',\n },\n tableCellDisableEnable: {\n width: '10%',\n minWidth: '130px',\n },\n tableCellId: {\n width: '5%',\n },\n tableCellName: {\n width: '30%',\n maxWidth: '0',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n tableCellRanking: {\n width: '30%',\n minWidth: '130px',\n },\n tableCellInactive: {\n backgroundColor: theme.palette.common.white,\n },\n tableCellActive:{ background: '#F0F9FF' }, \n // {\n // backgroundColor: Colors.blue[50],\n // },\n tableCellDisabled: {\n backgroundColor: Colors.gray[100],\n },\n progressBar: {\n width: '75px',\n height: '75px',\n marginLeft: '50%',\n marginTop: '50px',\n marginBottom: '50px',\n },\n };\n});\n","import React, { useState } from 'react';\nimport { EatonSnackBar, SnackBarType } from '../snack-bar';\nimport { LogTransmission, Transmission } from '../../domain/transmission';\nimport {\n Table,\n TableHead,\n TableRow,\n TableBody,\n Tooltip,\n IconButton,\n Typography,\n TableFooter,\n Paper,\n CircularProgress,\n Checkbox,\n Select,\n MenuItem,\n Grid,\n TableCell\n} from '@material-ui/core';\nimport EditIcon from '@material-ui/icons/Edit';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport AddIcon from '@material-ui/icons/Add';\nimport ListAltIcon from '@material-ui/icons/ListAlt';\nimport { StyledTableDataRow, StyledTableCell, useStyles } from './styles';\nimport { cssClassName } from '../pure-survey';\nimport { EatonAlertDialog, EatonAlertDialogForTransmissionLog } from '../alert-dialog';\nimport { Link } from 'react-router-dom';\nimport { EatonButton, EatonLinkButton } from '../button';\nimport { HelpIconActive } from '../../icons/help-icon-active';\nimport { bool, number } from 'prop-types';\ntype TransmissionLogResponse = {\n currentTransmissionLog: LogTransmission;\n previousTransmissionLog: LogTransmission;\n};\ntype OwnProps = {\n updateTransmissionRanks: (transmissionsList: Transmission[]) => Promise;\n transmissions: Transmission[];\n deleteFunction: (id: number) => Promise;\n loading: boolean;\n toggleTransmissionFunction: (id: number) => Promise;\n getTransmissionLog: (id: number) => Promise;\n};\n\nexport function PureTransmissionTable(props: OwnProps) {\n const [selectedRow, setSelectedRow] = useState(undefined);\n const [openDialog, setOpenDialog] = useState(false);\n const [openDialogForRank, setOpenDialogForRank] = useState(false);\n const [alertMessage, setAlertMessage] = useState('');\n const [transmissionsList, setTransmissions] = useState(props.transmissions);\n const [isDropdownChanged, setDropdownChanged] = useState(false);\n const [openSnackbar, setOpenSnackbar] = useState(false);\n const [transmissionsLog, setTransmissionsLog] = useState<{ previous: LogTransmission | null, current: LogTransmission | null }>({ previous: null, current: null });\n const [openNewDialog, setOpenNewDialog] = useState(false);\n const classes = useStyles();\n const [loading, setLoading] = useState(false);\n const [dialogContent, setDialogContent] = useState(null);\n // Assuming setLoading function updates the dialog content to show/hide the loader\n const updateLoadingState = (isLoading: boolean) => {\n if (isLoading) {\n setDialogContent(\n
\n {/* Replace \"LoaderComponent\" with your actual loader component or element */}\n \n
\n );\n }\n };\n const getEmptyTable = () => {\n return (\n
\n No Transmissions Found\n \n \n Add New Transmission\n \n
\n );\n };\n\n const handleChange = (event: React.ChangeEvent<{ value: unknown }>, index: number) => {\n let updatedTransmissions = [...props.transmissions];\n updatedTransmissions[index].rank = event.target.value as number;\n setTransmissions(updatedTransmissions);\n setDropdownChanged(true);\n };\n\n\n const setRankofTransmissions = () => {\n const transmissionRanks = transmissionsList.map(t => ({ Id: t.id, Rank: t.rank }));\n const duplicateRanks = transmissionRanks.reduce((acc: { [key: number]: typeof transmissionRanks }, curr) => {\n acc[curr.Rank] = acc[curr.Rank] ? [...acc[curr.Rank], curr] : [curr];\n return acc;\n }, {});\n\n const duplicates = Object.values(duplicateRanks).filter(rankings => rankings.length > 1);\n\n if (duplicates.length > 0) {\n const duplicateTransmissions = duplicates.reduce((acc, val) => acc.concat(val), []);\n const duplicateNames = duplicateTransmissions.map(transmission => {\n const original = transmissionsList.find(t => t.id === transmission.Id);\n return original ? original.name : '';\n });\n setAlertMessage(`The following transmissions have the same rank: ${duplicateNames.join(', ')}. Do you want to continue?`);\n } else {\n setAlertMessage(`Are you sure you want to update Transmission Ranks?`);\n }\n setOpenDialogForRank(true);\n };\n\n const isSelectedRow = (id: number): boolean => id === selectedRow;\n\n const onAgreeDialog = async () => {\n if (selectedRow) {\n await props.deleteFunction(selectedRow);\n setSelectedRow(undefined);\n }\n setOpenDialog(false);\n };\n\n const onAgreeSetRankDialog = async () => {\n await props.updateTransmissionRanks(transmissionsList);\n setOpenDialogForRank(false);\n setDropdownChanged(false);\n setOpenSnackbar(true);\n };\n const RenderObject = ({ currentObject, previousObject = {}, isRecursiveCall = false }: { currentObject: any, previousObject: { [key: string]: any }, isRecursiveCall?: boolean }) => {\n const currentTorquesCount = currentObject['modelTorques']?.length || 0;\n const previousTorquesCount = previousObject['modelTorques']?.length || 0;\n const maxTorquesCount = Math.max(currentTorquesCount, previousTorquesCount);\n const modelTorqueHeight = maxTorquesCount * 320.09;\n const currentDescriptionWords = currentObject['description'] ? currentObject['description'].split(/\\s+/).length : 0;\n const previousDescriptionWords = previousObject['description'] ? previousObject['description'].split(/\\s+/).length : 0;\n const maxDescriptionWords = Math.max(currentDescriptionWords, previousDescriptionWords);\n const rowHeightforDescription = maxDescriptionWords * 3.37;\n const currentUrlCharacters = currentObject['learnMoreUrl'] ? currentObject['learnMoreUrl'].length : 0;\n const previousUrlCharacters = previousObject['learnMoreUrl'] ? previousObject['learnMoreUrl'].length : 0;\n const maxUrlCharacters = Math.max(currentUrlCharacters, previousUrlCharacters);\n const rowHeightForUrl = maxUrlCharacters * 0.653;\n\n const findModelTorqueByName = (modelTorques: any[], name: string) => {\n return modelTorques.find(torque => torque.name === name);\n };\n\n return (\n \n \n {Object.entries(currentObject).map(([key, value], index) => {\n if (key === 'id' || key === 'transmissionJson' || key === \"image\" || key === \"isDisabled\") {\n return null;\n }\n\n const formattedKey = key.replace(/([A-Z])/g, ' $1').trim();\n const capitalizedKey = formattedKey.charAt(0).toUpperCase() + formattedKey.slice(1);\n const previousValue = previousObject[key];\n let hasChanged = false;\n\n if (isRecursiveCall && (key === 'name' || key === 'maxTorque')) {\n hasChanged = false;\n } else {\n hasChanged = previousValue !== undefined && previousValue !== value;\n }\n\n if (typeof value === 'object' && value !== null) {\n if (key === 'modelTorques') {\n return (\n \n \n {capitalizedKey}:\n \n {(value as any[]).map((torque: any, torqueIndex: number) => {\n const previousTorque = findModelTorqueByName(previousValue, torque.name);\n const torqueHasChanged = previousTorque !== undefined && JSON.stringify(previousTorque) !== JSON.stringify(torque);\n return (\n \n \n \n \n \n );\n })}\n \n \n \n );\n } else {\n return (\n \n {capitalizedKey}:\n {}\n \n );\n }\n } else {\n if (key === 'description') {\n return (\n \n {capitalizedKey}:\n \n {typeof value === 'string' || typeof value === 'number' ? value : 'default'}\n \n \n );\n } else if (key === 'isDeleted') {\n return (\n \n {capitalizedKey}:\n \n {value ? 'Yes' : 'No'}\n \n \n );\n } else if (key === 'timeStamp') {\n const formattedValue = (new Date(value as string).toDateString() === 'Mon Jan 01 0001') ? '' : new Date(value as string).toDateString();\n return (\n \n {capitalizedKey}:\n \n {formattedValue}\n \n \n );\n } else if (key === 'learnMoreUrl') {\n return (\n = 80 ? { height: rowHeightForUrl } : { height: '80px' }}>\n {capitalizedKey}:\n \n {typeof value === 'string' || typeof value === 'number' ? value : 'default'}\n \n \n );\n } else {\n return (\n \n {capitalizedKey}:\n \n {typeof value === 'string' ? value.split(' ').join(' ') : (typeof value === 'number' ? value : 'default')}\n \n \n );\n }\n }\n })}\n \n
\n );\n };\n\n const getTransmissionLogs = async (id: number) => {\n if (id) {\n setOpenNewDialog(true); // Open the dialog first\n updateLoadingState(true); // Then start the loader using the updated function\n const log = await props.getTransmissionLog(id);\n if (log.previousTransmissionLog || log.currentTransmissionLog) {\n setDialogContent(\n \n \n \n {log.previousTransmissionLog.updatedBy &&\n Updated By: {log.previousTransmissionLog.updatedBy}}\n {log.previousTransmissionLog.timeStamp &&\n \n Timestamp: {new Date(log.previousTransmissionLog.timeStamp).toLocaleString()}\n }\n \n Current Record\n {log.currentTransmissionLog.transmissionModel && }\n \n \n \n  \n  \n \n Previous Record\n {log.previousTransmissionLog.transmissionModel && }\n \n \n );\n } else {\n setDialogContent(No Transmission Log Found);\n }\n updateLoadingState(false); // Stop the loader after data is populated using the updated function\n }\n };\n return (\n \n { setOpenDialog(false); setSelectedRow(undefined); }}\n onAgree={onAgreeDialog}\n agreeButtonText=\"Continue\"\n alertTitle=\"Confirm Delete\"\n alertContent=\"Are you sure you want to permanently delete this Transmission family?\"\n />\n { setOpenDialogForRank(false); setTransmissions([]) }}\n onAgree={() => {\n setOpenDialogForRank(false);\n onAgreeSetRankDialog()\n }}\n agreeButtonText=\"Continue\"\n alertTitle=\"Confirmation\"\n alertContent={alertMessage}\n />\n setOpenNewDialog(false)}\n alertTitle=\"Transmission Log History\"\n alertContent={\n loading ?\n :\n dialogContent\n }\n />\n setOpenSnackbar(false)}\n />\n {props.loading && }\n {!props.loading &&\n props.transmissions &&\n props.transmissions.length < 1 &&\n !props.loading &&\n getEmptyTable()}\n {!props.loading && props.transmissions && props.transmissions.length > 0 && (\n \n \n \n \n Actions\n \n \n Disable\n \n \n Id\n \n \n Name\n \n \n Ranking\n \n \n {\n setRankofTransmissions();\n }}\n >\n Set Rank\n \n \n \n \n \n {props.transmissions.map((transmission: Transmission, index) => (\n \n \n \n \n \n \n \n \n {\n setSelectedRow(transmission.id);\n setOpenDialog(true);\n }}\n data-testid={`${cssClassName(transmission.name)}-delete`}\n >\n \n \n \n \n {\n getTransmissionLogs(transmission.id);\n // setOpenNewDialog(true);\n }}\n >\n {/* Replace NewIcon with your actual icon */}\n \n \n \n \n \n {\n await props.toggleTransmissionFunction(transmission.id);\n }}\n />\n \n \n {transmission.id}\n \n {transmission.name}\n \n \n handleChange(event, index)}\n >\n {props.transmissions.map((item, index) => (\n \n {index + 1}\n \n ))}\n \n \n \n \n \n ))}\n \n \n \n \n {`Results: ${props.transmissions.length}`}\n \n \n \n \n )}\n \n );\n}\n","import React from 'react';\nimport { EatonLinkButton } from '../../components/button';\nimport { Typography } from '@material-ui/core';\n\nexport const ErrorPage = () => {\n return (\n
\n \n Oops! Something went wrong.\n \n \n Take me back home\n \n
\n );\n};\n","import React, { useState } from 'react';\nimport { LogTransmission, Transmission } from '../../domain/transmission';\nimport { PureTransmissionTable } from './pure-transmission-table';\nimport { EatonSnackBar, SnackBarType } from '../snack-bar';\nimport { useAuthenticatedRequest } from '../reusable-components/hooks/use-authenticated-request';\nimport { useAuthDispatch } from '../reusable-components';\nimport { ErrorPage } from '../../pages/error/Error';\nimport { EatonAlertDialog } from '../alert-dialog';\n\nexport function ListTransmissions() {\n const { authenticatedRequest } = useAuthDispatch();\n const [isAlertDialogOpen, setIsAlertDialogOpen] = useState(false);\n const [alertMessage, setAlertMessage] = useState('');\n const [showError, setShowError] = useState(false);\n\n const [\n loadingTransmissions,\n transmissions,\n requeryFunction,\n ] = useAuthenticatedRequest({\n requestConfig: {\n method: 'GET',\n url: `api/transmission/`,\n },\n });\n\n const deleteTransmission = async (id: number) => {\n const response = await authenticatedRequest({\n url: `api/transmission/${id}`,\n method: 'DELETE',\n });\n if (response.status < 300) {\n requeryFunction();\n } else {\n setShowError(true);\n }\n };\n\n const toggleTransmissionStatus = async (id: number) => {\n const response = await authenticatedRequest({\n url: `api/transmission/${id}`,\n method: 'PATCH',\n });\n\n if (response.status < 300) {\n requeryFunction();\n } else {\n setShowError(true);\n }\n };\n\n const updateTransmissionRankList = async (transmissionsList: Transmission[]) => {\n const transmissionRanks = transmissionsList.map(t => ({ Id: t.id, Rank: t.rank }));\n const response = await authenticatedRequest({\n url: `api/transmission/UpdateList`,\n method: 'PUT',\n data: transmissionRanks,\n });\n\n if (response.status < 300) {\n requeryFunction();\n } else {\n console.error('Error updating transmission rank list:', response);\n setShowError(true);\n }\n };\n\n if (!loadingTransmissions && transmissions === undefined) {\n return ;\n }\n const getTransmissionLogList = async (id: number): Promise<{ currentTransmissionLog: LogTransmission, previousTransmissionLog: LogTransmission }> => {\n const response = await authenticatedRequest({\n url: `api/transmission/logs/${id}`,\n method: 'GET',\n });\n\n if (response.ok && Array.isArray(response.body)) {\n const logs: LogTransmission[] = response.body as LogTransmission[]; // Explicitly type logs as Transmission[]\n const currentTransmissionLog = logs[0]; \n const previousTransmissionLog = logs[1];\n \n return { currentTransmissionLog, previousTransmissionLog };\n } else {\n console.error('Error getting transmission logs:', response);\n setShowError(true);\n throw new Error('Error getting transmission logs');\n }\n};\n return (\n
\n setIsAlertDialogOpen(false)}\n onAgree={() => {\n setIsAlertDialogOpen(false);\n }}\n alertTitle=\"Confirmation\"\n alertContent={alertMessage}\n agreeButtonText=\"Continue\"\n />\n setShowError(false)}\n />\n \n
\n );\n}\n","import React, { useState } from 'react';\nimport { useAuthDispatch } from '../reusable-components/components/AuthContext';\nimport { EatonButton } from '../../components/button';\nimport { EatonSnackBar, SnackBarType } from '../snack-bar';\n\ntype UserData = {\n firstName: string;\n lastName: string;\n email: string;\n organizationType: string;\n organizationName: string;\n vocationCheckList: string;\n countryList: string;\n numberSavedSurveys: number;\n}\n\nexport const UserDataDump = (props: {}) => {\n const { authenticatedRequest } = useAuthDispatch();\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(false);\n\n const createDataDump = async () => {\n setLoading(true);\n if (error) setError(false);\n const result = await authenticatedRequest({\n url: 'api/security/allusers',\n method: 'GET',\n });\n if (result.status < 300) {\n const data = makeCSV(result.body as UserData[]);\n const hiddenElement = document.createElement('a');\n hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(data);\n hiddenElement.target = '_blank';\n hiddenElement.download = 'transmission_spec_users.csv';\n hiddenElement.click();\n } else {\n setError(true);\n }\n setLoading(false);\n };\n\n const makeCSV = (data: UserData[]): string => {\n let csv = 'Email,First Name,Last Name,Organization Type,Organization Name,Application Self-Description,Country List,Number Saved Surveys\\n';\n data.forEach((row) => {\n csv += `${row.email},`;\n csv += `${row.firstName},`;\n csv += `${row.lastName},`;\n csv += `${row.organizationType},`;\n csv += `\"${row.organizationName}\",`;\n csv += `${row.vocationCheckList},`;\n csv += `${row.countryList},`;\n csv += `${row.numberSavedSurveys}\\n`;\n });\n return csv;\n };\n return (\n <>\n \n Get User Data\n \n {\n error &&\n setError(false)}\n showSnack={error}\n />\n }\n \n );\n};\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { ListTransmissions } from '../../components/transmission-table';\r\nimport {\r\n makeStyles,\r\n Theme,\r\n Grid,\r\n IconButton,\r\n Tooltip,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport { DefaultPage } from '../../components/default-page';\r\nimport { UserDataDump } from '../../components/data-dump';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => {\r\n return {\r\n header: {\r\n padding: '10px',\r\n alignItems: 'center',\r\n },\r\n bodyText: {\r\n marginLeft: '15px',\r\n },\r\n addNewButton: {\r\n marginRight: '15px',\r\n },\r\n };\r\n});\r\n\r\nexport function TransmissionData(props: any) {\r\n const classes = useStyles();\r\n return (\r\n \r\n
\r\n \r\n \r\n Transmission List\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n success: {\n backgroundColor: Colors.green[800],\n },\n error: {\n backgroundColor: theme.palette.error.dark,\n },\n icon: {\n fontSize: 20,\n },\n iconVariant: {\n opacity: 0.9,\n marginRight: theme.spacing(1),\n },\n message: {\n display: 'flex',\n alignItems: 'center',\n },\n button: {\n marginTop: '15px',\n },\n inputField: {\n marginBottom: '16px',\n width: '100%',\n },\n wrapper: {\n position: 'relative',\n width: 'fit-content',\n },\n buttonProgress: {\n color: Colors.blue[500],\n position: 'absolute',\n top: '50%',\n left: '50%',\n marginTop: -12,\n marginLeft: -12,\n },\n card: {\n width: '100%',\n marginBottom: '20px',\n },\n header: {\n paddingBottom: '20px',\n },\n errorText: {\n color: '#ca3c3d',\n fontSize: '0.75rem',\n marginBottom: '8px',\n },\n largeErrorText: {\n color: '#ca3c3d',\n },\n imageButtonContainer: {\n marginTop: '24px',\n display: 'inline-block',\n },\n imageButton: {\n marginRight: '16px',\n },\n unitLabel: {\n marginLeft: '7px',\n alignItems: 'flex-end',\n color: theme.palette.text.secondary,\n },\n };\n});\n","import React, { useState, useEffect, CSSProperties } from \"react\";\nimport {\n FormControl,\n TextField,\n CircularProgress,\n Card,\n CardContent,\n Typography,\n FormLabel,\n RadioGroup,\n FormControlLabel,\n Radio,\n makeStyles,\n Slider,\n Grid,\n InputAdornment,\n List,\n ListItem,\n ListItemText,\n ListItemIcon,\n Tooltip,\n IconButton,\n Divider,\n Checkbox,\n Theme,\n} from \"@material-ui/core\";\nimport {\n Transmission,\n SupportValue,\n DEFAULT_TRANSMISSION,\n PerformanceGoalPoints,\n AxleRatioThresholds,\n TransmissionConstants,\n} from \"../../domain/transmission\";\nimport { EatonButton } from \"../button\";\nimport { useStyles } from \"./styles\";\nimport { EatonSnackBar, SnackBarType } from \"../snack-bar\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport _ from \"lodash\";\nimport {\n Controller,\n NestDataObject,\n FieldError,\n FieldErrors,\n useForm,\n} from \"react-hook-form\";\nimport { cssClassName } from \"../pure-survey\";\nimport { Prompt } from \"react-router\";\nimport { SubmissionState, TransmissionFormData } from \"./transmission-form\";\nimport * as yup from \"yup\";\nimport { RichTextEditor } from \"../rich-text-editor\";\nimport { TransmissionResult, MatchType } from \"../transmission-result\";\nimport { FormattedNumberInput } from \"../number-input\";\nimport { timeStamp } from \"console\";\n\ntype OwnProps = {\n transmission?: Omit;\n onSubmit: any;\n header: string;\n submissionState: SubmissionState;\n clearSubmissionState: () => void;\n _testShowErrors?: boolean;\n};\n\nconst UNSAVED_CHANGES_WARNING =\n \"Are you sure you want to leave? Your changes have not been saved.\";\n\nconst MAX_CHARS_ERROR = (max: number) =>\n `Field cannot exceed ${max} characters`;\nconst NUMBER_RANGE_ERROR = (min: number, max: number, fieldName?: string) =>\n `${\n fieldName ? `${fieldName} value ` : \"Value\"\n } must be within the range of ${min} to ${max}`;\n\nconst REQUIRED_ERROR = \"Required field\";\n\nconst SUPPORTED_FORMATS = [\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\"];\n\nconst MAX_FILE_SIZE_MB = 5;\n\nexport const transmissionSchema = yup.object().shape({\n learnMoreUrl: yup\n .string()\n .required(REQUIRED_ERROR)\n .url(\n \"Learn More URL must be a valid URL, including HTTP or HTTPS, e.g. http://something.com\"\n ),\n imageFile: yup\n .mixed()\n .test(\n \"fileSize\",\n `File is too large. Max size is ${MAX_FILE_SIZE_MB}MB.`,\n (value) =>\n value === undefined ||\n value.length === 0 ||\n value[0].size <= MAX_FILE_SIZE_MB * 1024 * 1024\n )\n .test(\n \"fileType\",\n `Unsupported file format. Accepted file types: ${SUPPORTED_FORMATS.map(\n (format) => format.replace(\"image/\", \".\")\n ).join(\", \")}`,\n (value) =>\n value[0] === undefined ||\n value.length === 0 ||\n SUPPORTED_FORMATS.includes(value[0].type)\n ),\n modelTorques: yup.array().min(1, \"Add at least one model\"),\n name: yup.string().required(REQUIRED_ERROR).max(200, MAX_CHARS_ERROR(200)),\n description: yup\n .string()\n .required(REQUIRED_ERROR)\n .max(100000, MAX_CHARS_ERROR(100000)),\n performanceGoalPoints: yup.object().shape({\n acceleration: yup\n .number()\n .typeError(\"Required field\")\n .min(0, NUMBER_RANGE_ERROR(0, 100))\n .max(100, NUMBER_RANGE_ERROR(0, 100))\n .required(REQUIRED_ERROR),\n fuelEconomy: yup\n .number()\n .typeError(\"Required field\")\n .min(0, NUMBER_RANGE_ERROR(0, 100))\n .max(100, NUMBER_RANGE_ERROR(0, 100))\n .required(REQUIRED_ERROR),\n lowSpeedManeuvers: yup\n .number()\n .typeError(\"Required field\")\n .min(0, NUMBER_RANGE_ERROR(0, 100))\n .max(100, NUMBER_RANGE_ERROR(0, 100))\n .required(REQUIRED_ERROR),\n price: yup\n .number()\n .typeError(\"Required field\")\n .min(0, NUMBER_RANGE_ERROR(0, 100))\n .max(100, NUMBER_RANGE_ERROR(0, 100))\n .required(REQUIRED_ERROR),\n tripTime: yup\n .number()\n .typeError(\"Required field\")\n .min(0, NUMBER_RANGE_ERROR(0, 100))\n .max(100, NUMBER_RANGE_ERROR(0, 100))\n .required(REQUIRED_ERROR),\n }),\n axleRatioThresholds: yup.object().shape({\n defaultBottom: yup\n .number()\n .typeError(\"Required field\")\n .min(2, NUMBER_RANGE_ERROR(2, 7, \"Minimum\"))\n .max(7, NUMBER_RANGE_ERROR(2, 7, \"Max\"))\n .required(REQUIRED_ERROR)\n .test(\n \"defaultBottom-above\",\n \"Minimum value must be lower than maximum\",\n function (value: number) {\n const otherValue = this.parent.defaultTop as any;\n return value <= otherValue;\n }\n ),\n defaultTop: yup\n .number()\n .typeError(\"Required field\")\n .min(2, NUMBER_RANGE_ERROR(2, 7, \"Minimum\"))\n .max(7, NUMBER_RANGE_ERROR(2, 7, \"Maximum\"))\n .required(REQUIRED_ERROR),\n mediumBottom: yup\n .number()\n .typeError(\"Required field\")\n .min(2, NUMBER_RANGE_ERROR(2, 7, \"Minimum\"))\n .max(7, NUMBER_RANGE_ERROR(2, 7, \"Maximum\"))\n .required(REQUIRED_ERROR)\n .test(\n \"mediumBottom-above\",\n \"Minimum value must be lower than maximum\",\n function (value: number) {\n const otherValue = this.parent.mediumTop as any;\n return value <= otherValue;\n }\n ),\n mediumTop: yup\n .number()\n .typeError(\"Required field\")\n .min(2, NUMBER_RANGE_ERROR(2, 7, \"Minimum\"))\n .max(7, NUMBER_RANGE_ERROR(2, 7, \"Maximum\"))\n .required(REQUIRED_ERROR),\n highBottom: yup\n .number()\n .typeError(\"Required field\")\n .min(2, NUMBER_RANGE_ERROR(2, 7, \"Minimum\"))\n .max(7, NUMBER_RANGE_ERROR(2, 7, \"Maximum\"))\n .required(REQUIRED_ERROR)\n .test(\n \"highBottom-above\",\n \"Minimum value must be lower than maximum\",\n function (value: number) {\n const otherValue = this.parent.highTop as any;\n return value <= otherValue;\n }\n ),\n highTop: yup\n .number()\n .typeError(\"Required field\")\n .min(2, NUMBER_RANGE_ERROR(2, 7, \"Minimum\"))\n .max(7, NUMBER_RANGE_ERROR(2, 7, \"Maximum\"))\n .required(REQUIRED_ERROR),\n extremeBottom: yup\n .number()\n .typeError(\"Required field\")\n .min(2, NUMBER_RANGE_ERROR(2, 7, \"Minimum\"))\n .max(7, NUMBER_RANGE_ERROR(2, 7, \"Maximum\"))\n .required(REQUIRED_ERROR)\n .test(\n \"extremeBottom-above\",\n \"Minimum value must be lower than maximum\",\n function (value: number) {\n const otherValue = this.parent.extremeTop as any;\n return value <= otherValue;\n }\n ),\n extremeTop: yup\n .number()\n .typeError(\"Required field\")\n .min(2, NUMBER_RANGE_ERROR(2, 7, \"Minimum\"))\n .max(7, NUMBER_RANGE_ERROR(2, 7, \"Maximum\"))\n .required(REQUIRED_ERROR),\n }),\n});\n\nexport function PureTransmissionForm(props: OwnProps) {\n const transmission = props.transmission || DEFAULT_TRANSMISSION;\n const {\n register,\n handleSubmit,\n errors,\n control,\n setValue,\n reset,\n clearError,\n setError,\n formState,\n getValues,\n watch,\n triggerValidation,\n } = useForm({\n validationSchema: transmissionSchema,\n reValidateMode: \"onSubmit\",\n defaultValues: { ...transmission, imageFile: undefined },\n });\n\n const [name, setName] = useState(props.transmission?.name || \"\");\n const debounceName = React.useCallback(\n _.debounce(setName, 2000, { trailing: true }),\n []\n );\n\n const [description, setDescription] = useState(\n props.transmission?.description || \"\"\n );\n const debounceDescription = React.useCallback(\n _.debounce(setDescription, 2000, {\n trailing: true,\n }),\n []\n );\n\n const [learnMoreUrl, setLearnMoreUrl] = useState(\n props.transmission?.learnMoreUrl || \"\"\n );\n const debounceLearnMoreUrl = React.useCallback(\n _.debounce(setLearnMoreUrl, 2000, { trailing: true }),\n []\n );\n\n const modelTorques = watch(\"modelTorques\");\n const axleRatioThresholds = watch(\"axleRatioThresholds\");\n\n useEffect(() => {\n if (props.submissionState === \"success\") {\n if (!props.transmission) {\n reset({ ...DEFAULT_TRANSMISSION, imageFile: undefined });\n debounceDescription.flush();\n debounceName.flush();\n debounceLearnMoreUrl.flush();\n setName(\"\");\n setDescription(\"\");\n setLearnMoreUrl(\"\");\n setPreviewImage(null);\n } else {\n reset(getValues({ nest: true }));\n }\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }\n }, [props.submissionState]);\n\n useEffect(() => {\n const validate = async () => {\n if (props._testShowErrors) {\n await triggerValidation();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n validate();\n }, [props._testShowErrors]);\n\n useEffect(() => {\n return () => {\n // Clean up debounced useState calls\n debounceDescription.flush();\n debounceName.flush();\n debounceLearnMoreUrl.flush();\n };\n });\n // Lifted from https://github.com/jacobbuck/react-beforeunload\n useEffect(() => {\n if (formState.dirty) {\n const handleBeforeunload = (event: BeforeUnloadEvent) => {\n event.returnValue = UNSAVED_CHANGES_WARNING;\n return UNSAVED_CHANGES_WARNING;\n };\n\n window.addEventListener(\"beforeunload\", handleBeforeunload);\n\n return () => {\n window.removeEventListener(\"beforeunload\", handleBeforeunload);\n };\n }\n }, [formState.dirty]);\n\n const [previewImage, setPreviewImage] = useState(null);\n\n const classes = useStyles({});\n\n const SupportedControl = (supportedControlProps: { name: string }) => (\n \n {Object.values(SupportValue).map((value) => (\n }\n value={value}\n label={_.startCase(value)}\n />\n ))}\n \n );\n\n const TransmissionTextField = (textFieldProps: {\n name: string;\n maxLength: number;\n style?: CSSProperties;\n }) => (\n {\n e.target.value = e.target.value.trim();\n }}\n onKeyDown={(e) => {\n if (e.keyCode === 13) {\n (e.target as any).value = (e.target as any).value.trim();\n }\n }}\n onChange={(event) => {\n if (textFieldProps.name === \"name\") debounceName(event.target.value);\n if (textFieldProps.name === \"learnMoreUrl\") {\n debounceLearnMoreUrl(event.target.value);\n }\n return event;\n }}\n disabled={props.submissionState === \"submitting\"}\n label={_.startCase(textFieldProps.name)}\n name={textFieldProps.name}\n id={_.kebabCase(textFieldProps.name)}\n className={`transmission-${textFieldProps.name} ${classes.inputField}`}\n multiline={textFieldProps.maxLength > 300}\n inputRef={register}\n inputProps={{\n maxLength: textFieldProps.maxLength,\n \"data-testid\": _.kebabCase(textFieldProps.name),\n }}\n error={\n errors[\n textFieldProps.name as keyof NestDataObject\n ] !== undefined\n }\n helperText={\n errors[\n textFieldProps.name as keyof NestDataObject\n ] &&\n (errors[\n textFieldProps.name as keyof NestDataObject\n ] as FieldError).message\n }\n />\n );\n\n const FormField = (\n field: Exclude\n ) => {\n switch (field) {\n case \"name\":\n return (\n
\n {TransmissionTextField({ maxLength: 200, name: field })}\n
\n );\n\n case \"learnMoreUrl\":\n return (\n
\n {TransmissionTextField({ maxLength: 200, name: field })}\n
\n );\n\n case \"description\":\n return (\n <>\n
\n \n
\n {errors.description && (\n \n {errors.description.message}\n \n )}\n }\n name=\"description\"\n control={control}\n onChange={(value: any) => {\n debounceDescription(value[0]);\n return value[0];\n }}\n />\n
\n
\n
\n \n
\n \n Note: Transmission Model and Suggested Axle\n Ratio Range in this preview is determined by the first available\n for this family. Actual results will vary based on the survey.\n \n
\n 0\n ? modelTorques[0].name\n : \"None\",\n axleRatio:\n axleRatioThresholds.defaultBottom &&\n axleRatioThresholds.defaultTop\n ? `${axleRatioThresholds.defaultBottom} - ${axleRatioThresholds.defaultTop}`\n : \"None\",\n learnMoreUrl,\n }}\n />\n
\n \n {\n if (\n event.target &&\n event.target.files &&\n event.target.files.length > 0\n ) {\n const file = event.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onloadend = function (e) {\n setPreviewImage(reader.result as string);\n };\n } else {\n setPreviewImage(null);\n }\n await triggerValidation(\"imageFile\");\n }}\n />\n Choose Image\n \n {errors.imageFile && (\n \n {(errors.imageFile as any).message}\n \n )}\n
\n
\n \n );\n\n case \"maxSupportedCruiseSpeed\":\n return (\n {\n return value[0];\n }}\n name={field}\n control={control}\n as={\n \n }\n />\n );\n case \"maxSupportedEngineHp\":\n return (\n {\n return value[0];\n }}\n name={field}\n control={control}\n as={\n \n }\n />\n );\n case \"maxSupportedGcw\":\n return (\n {\n return value[0];\n }}\n name={field}\n control={control}\n as={\n \n }\n />\n );\n case \"maxSupportedMaxSpeed\":\n return (\n {\n return value[0];\n }}\n name={field}\n control={control}\n as={\n \n }\n />\n );\n case \"performanceGoalPoints\":\n register({ name: `${field}.id` });\n return Object.keys(DEFAULT_TRANSMISSION.performanceGoalPoints).map(\n (subfield) => (\n
\n {\n const valueString = value[0];\n if (valueString === \"\") {\n return \"\";\n }\n return parseInt(valueString);\n }}\n as={\n \n }\n />\n
\n
\n )\n );\n case \"modelTorques\":\n return (\n clearError(field)}\n setError={setError}\n setValue={async (value) => {\n await setValue(field, value);\n }}\n name={field}\n />\n }\n rules={{ minLength: 1 }}\n name={field}\n control={control}\n />\n );\n case \"axleRatioThresholds\":\n register({ name: `${field}.id` });\n return (\n <>\n \n \n \n \n \n );\n case \"image\":\n return null;\n default:\n register({ name: `${field}.id` });\n return Object.keys(DEFAULT_TRANSMISSION[field]).map((subfield) => (\n
\n \n \n {_.startCase(subfield)}\n \n \n \n
\n
\n ));\n }\n };\n\n register({ name: \"id\" });\n\n return (\n
\n \n \n \n \n {props.header}\n \n\n
\n {Object.keys(DEFAULT_TRANSMISSION)\n .filter((key) => key !== \"id\")\n .map((key) => (\n
\n {key !== \"name\" &&\n key !== \"learnMoreUrl\" &&\n key !== \"description\" &&\n key !== \"image\" && (\n \n )}\n {FormField(key as keyof typeof DEFAULT_TRANSMISSION)}\n
\n
\n ))}\n\n
\n {Object.entries(errors).length > 0 && (\n \n There are unresolved errors. Review your inputs and try again.\n \n )}\n \n Submit\n {props.submissionState === \"submitting\" && (\n \n )}\n \n
\n
\n
\n
\n {props.submissionState === \"success\" ? (\n \n ) : props.submissionState === \"fail\" ? (\n \n ) : (\n
\n )}\n
\n );\n}\n\nconst sliderStyles = makeStyles((theme: Theme) => {\n return {\n root: {\n width: \"400px\",\n },\n valueLabel: {\n // eslint-disable-next-line quote-props\n top: -28,\n // eslint-disable-next-line quote-props\n fontSize: 15,\n \"& *\": {\n background: \"transparent\",\n color: \"#000\",\n },\n },\n };\n});\n\nconst SettingSlider = (props: {\n labelId: string;\n max: number;\n min: number;\n step?: number;\n units: string;\n name: string;\n value?: number | null;\n onChange?: (value: number[] | number | null) => void;\n loading: boolean;\n allowNoValue?: boolean;\n}) => {\n const sliderClasses = sliderStyles();\n const classes = useStyles();\n\n const marks = [\n {\n value: props.min,\n label: `${props.min.toLocaleString()} ${props.units}`,\n },\n {\n value: props.max,\n label: `${props.max.toLocaleString()} ${props.units}`,\n },\n ];\n\n const onChangeHandle = (newValue: number | null) => {\n props.onChange && props.onChange(newValue);\n };\n\n return (\n <>\n {props.allowNoValue && (\n {\n onChangeHandle(event.target.checked ? null : props.min);\n }}\n />\n }\n label={`No ${_.startCase(props.name)}`}\n />\n )}\n \n \n {\n props.onChange && props.onChange(value);\n }}\n step={props.step}\n style={{ marginLeft: \"30px\", marginRight: \"20px\" }}\n value={props.value || props.min}\n name={props.name}\n min={props.min}\n max={props.max}\n classes={sliderClasses}\n valueLabelDisplay={props.value === null ? \"off\" : \"on\"}\n marks={props.value === null ? undefined : marks}\n />\n \n \n onChangeHandle(newValue)}\n step={props.step}\n min={props.min}\n max={props.max}\n data-testid={cssClassName(props.name)}\n className={`${cssClassName(props.name)}-input`}\n ariaLabelledBy={props.labelId}\n dataTestId={props.labelId}\n disabled={props.loading || props.value === null}\n />\n
\n {props.units}\n
\n
\n \n \n );\n};\n\nconst SettingNumberInput = (props: {\n title: string;\n name: string;\n className?: string;\n value?: number;\n onChange?: (value: number[] | number | string) => void;\n loading: boolean;\n errors: FieldErrors;\n}) => {\n const errorMessage =\n props.errors.performanceGoalPoints &&\n props.errors.performanceGoalPoints[\n props.name.split(\".\")[1] as keyof NestDataObject\n ]?.message;\n\n return (\n <>\n {\n const value = event.target.value;\n props.onChange && props.onChange(value);\n }}\n inputProps={{\n type: \"number\",\n \"data-testid\": _.kebabCase(props.name),\n }}\n error={!!errorMessage}\n />\n }\n />\n \n {errorMessage &&
}\n {errorMessage}\n
\n \n );\n};\n\nexport type TransmissionModels = Transmission[\"modelTorques\"];\n\nconst ModelList = (props: {\n value: TransmissionModels;\n setValue: (value: TransmissionModels) => void;\n name: string;\n error?: string;\n clearError: () => void;\n loading: boolean;\n setError: (name: string, type: string, message?: string) => void;\n}) => {\n const [transmissionModelName, setTransmissionModelName] = useState(\n \"\"\n );\n const [transmissionTorque, setTransmissionTorque] = useState(\"\");\n\n const maxTorqueValue = 2250;\n const minTorqueValue = 1000;\n\n const canSubmit =\n transmissionModelName.length > 0 && transmissionTorque.length > 0;\n\n const add = async () => {\n const candidateModel = {\n name: transmissionModelName,\n maxTorque: parseInt(transmissionTorque),\n isDeleted: false,\n updatedBy:'',\n timeStamp: new Date(),\n };\n\n if (duplicateModelExists(candidateModel)) {\n props.setError(\n props.name,\n \"duplicate\",\n \"Cannot have two models with the same name under a single family.\"\n );\n } else if (\n candidateModel.maxTorque > maxTorqueValue ||\n candidateModel.maxTorque < minTorqueValue\n ) {\n props.setError(\n props.name,\n \"maximum\",\n \"Torque must be within the range of 1000 to 2250\"\n );\n } else {\n const newModelList = props.value.concat(candidateModel);\n await props.setValue(newModelList);\n props.clearError();\n setTransmissionModelName(\"\");\n setTransmissionTorque(\"\");\n }\n };\n\n const duplicateModelExists = (model: {\n name: string;\n maxTorque: number;\n }): boolean => {\n return !!_.find(props.value, (m) => m.name === model.name);\n };\n\n return (\n
\n \n {props.value.length > 0 ? (\n props.value.map((value: TransmissionModels[0]) => {\n return (\n
\n \n \n \n Torque -\n \n {` ${value.maxTorque} lbs.-ft`}\n \n }\n />\n \n \n \n {\n const newModelList = _.without(props.value, value);\n await props.setValue(newModelList);\n }}\n >\n \n \n \n \n \n \n
\n );\n })\n ) : (\n \n No Transmission Models Found in Family\n \n )}\n
\n \n setTransmissionModelName(action.target.value)}\n onBlur={(e) => {\n setTransmissionModelName(transmissionModelName.trim());\n }}\n onKeyDown={async (event) => {\n if (event.keyCode === 13) {\n event.preventDefault(); // Ignore form submission\n setTransmissionModelName(transmissionModelName.trim());\n if (canSubmit && transmissionModelName.trim() !== \"\") {\n await add();\n }\n }\n }}\n inputProps={{ \"data-testid\": \"model-name\" }}\n InputLabelProps={{ shrink: true }}\n />\n setTransmissionTorque(`${action.target.value}`)}\n onKeyDown={async (event) => {\n if (event.keyCode === 13) {\n event.preventDefault(); // Ignore form submission\n if (canSubmit) {\n await add();\n }\n }\n }}\n inputProps={{\n \"data-testid\": \"model-torque\",\n min: minTorqueValue,\n max: maxTorqueValue,\n }}\n InputProps={{\n endAdornment: (\n lbs.-ft\n ),\n }}\n InputLabelProps={{ shrink: true }}\n error={!!props.error}\n />\n \n Add\n \n \n
\n );\n};\n\nconst AxleRange = (axleProps: {\n loading: boolean;\n title: string;\n fieldNameMin: string;\n fieldNameMax: string;\n defaultMinValue: number;\n defaultMaxValue: number;\n control: any;\n min: number;\n max: number;\n errors: FieldErrors;\n}) => {\n const errorMessageMin =\n axleProps.errors.axleRatioThresholds &&\n axleProps.errors.axleRatioThresholds[\n axleProps.fieldNameMin.split(\".\")[1] as keyof NestDataObject<\n AxleRatioThresholds\n >\n ]?.message;\n const errorMessageMax =\n axleProps.errors.axleRatioThresholds &&\n axleProps.errors.axleRatioThresholds[\n axleProps.fieldNameMax.split(\".\")[1] as keyof NestDataObject<\n AxleRatioThresholds\n >\n ]?.message;\n\n const InputField = (inputFieldProps: {\n onChange?: (value: number | string) => void;\n value?: number;\n fieldName: string;\n labelName: string;\n }) => (\n {\n const value = event.target.value;\n inputFieldProps.onChange && inputFieldProps.onChange(value);\n }}\n error={!!errorMessageMin || !!errorMessageMax}\n />\n );\n return (\n <>\n \n \n \n {axleProps.title}\n \n \n \n {\n const valueString = value[0];\n if (valueString === \"\") {\n return \"\";\n }\n return Math.round(parseFloat(valueString) * 10) / 10;\n }}\n name={axleProps.fieldNameMin}\n control={axleProps.control}\n as={\n \n }\n />\n \n \n to\n \n \n {\n const valueString = value[0];\n if (valueString === \"\") {\n return \"\";\n }\n return Math.round(parseFloat(valueString) * 10) / 10;\n }}\n name={axleProps.fieldNameMax}\n control={axleProps.control}\n as={\n \n }\n />\n \n \n \n {errorMessageMin}\n {errorMessageMax && errorMessageMin\n ? `, ${errorMessageMax}`\n : errorMessageMax}\n \n \n );\n};\n\nconst Subtitle = (props: { text: string; id: string }) => {\n return (\n
\n \n {props.text}\n \n \n
\n );\n};\n","import React, { useState } from 'react';\nimport { Transmission } from '../../domain/transmission';\nimport { PureTransmissionForm } from './pure-transmission-form';\n\ntype Props = {\n transmission: Omit | undefined;\n onSubmit: (transmission: TransmissionFormData) => Promise<'success' | 'fail'>;\n header: string;\n};\n\nexport type SubmissionState = 'submitting' | 'success' | 'fail' | 'unsubmitted';\n// Helps aid us with form validation.\nexport type TransmissionFormData = Omit & {\n imageFile?: File;\n};\n\nexport const TransmissionForm = (props: Props) => {\n const [submissionState, setSubmissionState] = useState(\n 'unsubmitted',\n );\n\n const onSubmit = (data: TransmissionFormData) => {\n setSubmissionState('submitting');\n const submit = async () => {\n const result = await props.onSubmit(data);\n setSubmissionState(result);\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n submit();\n };\n\n return (\n {\n setSubmissionState('unsubmitted');\n }}\n header={props.header}\n submissionState={submissionState}\n transmission={props.transmission}\n />\n );\n};\n","import React from 'react';\nimport {\n TransmissionForm,\n TransmissionFormData,\n} from '../pure-transmission-form/transmission-form';\nimport { useAuthDispatch } from '../reusable-components';\nimport { appendFormData } from '../reusable-components/hooks/use-authenticated-request';\n\ntype OwnProps = {};\n\nexport function AddTransmissionForm(props: OwnProps) {\n const { authenticatedRequest } = useAuthDispatch();\n\n const sendFormData = async (\n transmission: Omit,\n ) => {\n const data = new FormData();\n\n const transmissionData = appendFormData(transmission, data);\n\n const result = await authenticatedRequest({\n url: 'api/transmission',\n data: transmissionData,\n method: 'POST',\n });\n\n if (result.status === 201) {\n return 'success';\n } else {\n return 'fail';\n }\n };\n\n return (\n <>\n \n \n );\n}\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { AddTransmissionForm } from '../../components/add-transmission-form';\nimport { Button, Grid } from '@material-ui/core';\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack';\nimport { DefaultPage } from '../../components/default-page';\n\nexport function AddTransmissionPage(props: any) {\n return (\n \n \n \n \n \n Back\n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { Transmission } from '../../domain/transmission';\nimport {\n TransmissionForm,\n TransmissionFormData,\n} from '../pure-transmission-form/transmission-form';\nimport { useAuthDispatch } from '../reusable-components';\nimport { appendFormData } from '../reusable-components/hooks/use-authenticated-request';\n\ntype OwnProps = {\n transmission: Transmission;\n};\n\nexport function EditTransmissionForm(props: OwnProps) {\n const { authenticatedRequest } = useAuthDispatch();\n const sendFormData = async (\n transmission: Omit,\n ) => {\n const data = new FormData();\n\n const transmissionData = appendFormData(transmission, data);\n\n const result = await authenticatedRequest({\n url: `api/transmission/${props.transmission.id}`,\n method: 'PUT',\n data: transmissionData,\n });\n if (result.status === 204) {\n return 'success';\n } else {\n return 'fail';\n }\n };\n\n return (\n \n );\n}\n","import React from 'react';\nimport { Link, RouteComponentProps } from 'react-router-dom';\nimport { EditTransmissionForm } from '../../components/edit-transmission-form';\nimport { Transmission } from '../../domain/transmission';\nimport { CircularProgress, Grid, Button } from '@material-ui/core';\nimport ArrowBackIcon from '@material-ui/icons/ArrowBack';\nimport { DefaultPage } from '../../components/default-page';\nimport { useAuthenticatedRequest } from '../../components/reusable-components/hooks/use-authenticated-request';\n\ntype EditRouteComponentProps = {\n id: string;\n};\n\nexport function EditTransmissionPage(\n props: RouteComponentProps,\n) {\n const [loadingTransmission, transmission] = useAuthenticatedRequest<\n Transmission\n >({\n requestConfig: {\n method: 'GET',\n url: `api/transmission/${props.match.params.id}`,\n },\n });\n\n const PageBody = () => {\n if (loadingTransmission) {\n return (\n \n );\n }\n\n if (transmission) {\n return ;\n }\n return
Unknown error occurred.
;\n };\n\n return (\n \n \n \n \n \n Back\n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { SurveyView } from '../../components/survey';\nimport { UnitProvider } from '../../components/unit-switcher';\n\nexport const SurveyPage = () => {\n return (\n \n \n \n );\n};\n","import React from 'react';\n\nexport const DemoPage = () => {\n return
This page requires log-in but not admin access.
;\n};\n","import React from 'react';\nimport { DefaultPage } from '../../components/default-page';\n\nexport const TempPage = (props: { text: string }) => {\n return {props.text};\n};\n","import React from 'react';\nimport {\n AppBar,\n Typography,\n Link,\n MenuItem,\n Popper,\n Grow,\n Paper,\n ClickAwayListener,\n MenuList,\n} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport { useStyles } from './styles';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport * as _ from 'lodash';\nimport { GutterToolbar } from '../../gutter-toolbar';\nimport { useAuthState } from '../../reusable-components';\nimport {\n AuthStatus,\n useAuthDispatch,\n} from '../../reusable-components/components/AuthContext';\n\nexport const AppHeader = () => {\n const classes = useStyles();\n const location = useLocation();\n const authState = useAuthState();\n const { logout } = useAuthDispatch();\n\n const Tab = (props: { name: string; link: string }) => (\n \n {props.name}\n \n );\n\n const SignInButton = (props: { name: string; link: string }) => (\n \n {props.name}\n \n );\n\n const handleClose = (event: React.MouseEvent) => {\n if (\n anchorRef.current &&\n anchorRef.current.contains(event.target as HTMLElement)\n ) {\n return;\n }\n\n setOpen(false);\n };\n\n // new things\n const [open, setOpen] = React.useState(false);\n const anchorRef = React.useRef(null);\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n function handleListKeyDown(event: React.KeyboardEvent) {\n if (event.key === 'Tab') {\n event.preventDefault();\n setOpen(false);\n }\n }\n\n return (\n \n \n
\n \n \n \n \n {authState.authenticated === AuthStatus.Authenticated && (\n \n )}\n {authState.authenticated === AuthStatus.Authenticated &&\n authState.privileges.roles.includes('TransmissionAdmin') && (\n \n )}\n
\n {authState.authenticated === AuthStatus.Unauthenticated ? (\n \n ) : (\n
\n \n \n {authState.displayName\n ? `Hi, ${authState.displayName}`\n : 'Welcome'}\n \n \n
\n \n {({ TransitionProps, placement }) => (\n \n \n \n \n {\n setOpen(false);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n logout();\n }}\n style={{\n width: '100%',\n paddingTop: '8px',\n paddingBottom: '8px',\n }}\n >\n Sign Out\n \n \n \n \n \n )}\n \n
\n )}\n
\n \n );\n};\n","import React from 'react';\nimport { Toolbar, Typography, Link, withStyles } from '@material-ui/core';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useStyles, FooterHeight } from './styles';\nimport { kebabCase } from 'lodash';\nimport { HelpIconInactive } from '../../../icons/help-icon-inactive';\nimport { Gutters } from '../../../styles/gutters';\nimport { useAuthState, AuthStatus } from '../../reusable-components/components/AuthContext';\n\nexport const AppFooter = () => {\n const classes = useStyles();\n const authState = useAuthState();\n const copyrightText = '\\u00A92020 Eaton Cummins. All Rights Reserved.';\n const FooterLink = (props: {\n name: string;\n link: string;\n contactUs?: boolean;\n newTab?: boolean;\n }) => {\n if (props.newTab) {\n return (\n \n {props.name}\n \n );\n } else {\n return (\n \n {props.name}\n \n );\n }\n };\n\n const StyledToolbar = withStyles({\n root: {\n minHeight: FooterHeight,\n ...Gutters(),\n },\n })(Toolbar);\n\n return (\n <>\n \n
\n \n
\n \n {copyrightText}\n \n
\n \n \n \n \n { authState.authenticated === AuthStatus.Authenticated && }\n \n
\n \n \n Need assistance?{' '}\n \n \n
\n
\n
\n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n wholeApp: {\n minHeight: '100vh',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n minWidth: '1120px',\n },\n children: {\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n },\n}));\n","import React from 'react';\nimport { AppHeader } from './header';\nimport { AppFooter } from './footer';\nimport { useStyles } from './styles';\n\nexport const AppChrome = (props: React.PropsWithChildren<{}>) => {\n const classes = useStyles();\n return (\n
\n \n
{props.children}
\n \n
\n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n subtitle: {\n marginTop: '32px',\n },\n image: {\n marginTop: '10px',\n },\n description: {\n marginTop: '4px',\n },\n vehicleType: {\n marginTop: '10px',\n marginBottom: '50px',\n },\n table: {\n width: '100%',\n },\n tableData: {\n width: '100px',\n },\n };\n});\n","import React from 'react';\nimport { Typography } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { chunk } from 'lodash';\n\nexport const VehicleApplication = () => {\n const classes = useStyles();\n\n const Application = (props: {\n title: string;\n image: string;\n details: ApplicationDetails;\n }) => {\n return (\n
\n \n {props.title}\n \n \n \n Vocational Description\n \n
\n
    \n {props.details.description.map((descriptionItem, index) => {\n return (\n
  • \n \n {descriptionItem}\n \n
  • \n );\n })}\n
\n
\n \n Typical Vehicle Types\n \n
\n \n \n {chunk(props.details.vehicleTypes, 4).map((typeChunk, index) => {\n return (\n \n {typeChunk.map((type) => {\n return (\n \n );\n })}\n \n );\n })}\n \n
\n \n {type}\n \n
\n
\n
\n );\n };\n\n return (\n
\n \n Vehicle Application\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n\ntype ApplicationDetails = {\n description: string[];\n vehicleTypes: string[];\n}\n\nconst pickUpDelivery: ApplicationDetails = {\n description: [\n 'Pick-Up and Delivery service consists of the movement of freight typically within a 100 mile radius in cities and/or suburban areas.',\n 'Operation on road surfaces of concrete, asphalt, and maintained gravel.',\n 'Three (3) to thirty (30) miles between starts/stops (typical).',\n 'Annual mileage less than 50,000 miles (80,000 Km)',\n '100% load going / up to 40% load return (typical).',\n '40% load going / 100% load return.',\n ],\n vehicleTypes: [\n 'Beverage Truck',\n 'City Delivery',\n 'Flatbed Truck',\n 'Grain Hauler (grain hopper / bottom dump trailers)',\n 'Moving Van',\n 'Municipal Truck',\n 'Refrigerated Truck',\n 'Stake Truck',\n 'Step Van',\n 'Tanker Truck',\n 'Wrecker',\n ],\n};\n\nconst linehaul: ApplicationDetails = {\n description: [\n 'Linehaul is moving different types of freight in high mileage operation (over 50,000 miles (80,000 km) / year).',\n 'Operation on road surfaces of good to excellent concrete or asphalt.',\n '80% of distances are more than 30 miles between starting and stopping with remaining 20% being within 30 miles between starting and stopping.',\n 'Typical vehicle configurations are 4x2, 6x2, and 6x4 tractor / trailer combinations and some straight trucks.',\n ],\n vehicleTypes: [\n 'Auto Hauler',\n 'Bulk Hauler',\n 'Doubles',\n 'Flatbed Trailer',\n 'General Freight',\n 'Grain Hauler (grain hopper/bottom dump trailers)',\n 'Livestock Hauler',\n 'Moving Van',\n 'Refrigerated Freight',\n 'Tanker',\n 'Triples',\n ],\n};\n\nconst construction: ApplicationDetails = {\n description: [\n `Movement of material to and from a job site.`,\n `Vehicles used in transfer / relocation on a maximum grade of 8%, typically greater than 10 miles per trip.`,\n `90% of loaded operation on prepared road surfaces of concrete, asphalt, gravel, crushed rock or hard packed dirt and up to 10% of loaded operation into sandy or muddy work areas. Vehicles operating less than 90% on prepared road surfaces of concrete, asphalt, gravel, crushed rock or hard packed dirt refer to Specialized Applications “Off-Highway” coverage. `,\n ],\n vehicleTypes: [\n 'Asphalt Truck',\n 'Block Truck',\n 'Concrete Pumper',\n 'Dump Truck',\n 'Flatbed Truck',\n 'Landscape Truck',\n 'Mixer',\n 'Roll-off',\n 'Semi End Dump',\n 'Snowplow',\n 'Tank Truck',\n 'Utility Truck',\n ],\n};\n\nconst heavyHaul: ApplicationDetails = {\n description: [\n 'Movement of heavy equipment or materials at legal maximums or special permit loadings, typically at GCW in excess of 140,000 lbs. (63,500 kg).',\n 'Operation on road surfaces of concrete, asphalt, and maintained gravel.',\n 'High horsepower engines and auxiliary gear boxes might be used.',\n 'Vehicles may be equipped with two retarders.',\n '100% Loaded going and empty return.',\n ],\n vehicleTypes: [\n 'Equipment Hauler',\n 'Lowboy',\n 'Steel Hauling',\n ],\n};\n\nconst logging: ApplicationDetails = {\n description: [\n `Movement of logs, chips, and pulp between logging sites and / or mills.`,\n `High horsepower engines and multiple retarders are typically used in this vocation.`,\n `3 to 30 miles between starts and stops (typically).`,\n `90% of loaded operation on road surfaces of concrete, asphalt, maintained gravel, crushed rock or hard packed dirt and up to 10% of loaded operation into sandy or muddy job sites. Vehicles operating less than 90% on prepared road surfaces of concrete, asphalt, gravel, crushed rock or hard packed dirt refer to Specialized Applications “Off-Highway” coverage.`,\n `100% loaded going and empty return.`,\n ],\n vehicleTypes: [\n 'Excluding Log Skidders',\n 'Log Hauler',\n 'Tractor / Trailer',\n 'Tractor with Pole Trailer',\n ],\n};\n\nconst oilField: ApplicationDetails = {\n description: [\n `Movement of production related products, supplies, and tools between job sites.`,\n `Movement of processing equipment and laboratories on job sites.`,\n `Low mileage operation on road surfaces made of concrete, asphalt, maintained gravel, crushed rock, or hard-packed dirt.`,\n ],\n vehicleTypes: [\n 'Cementing Vehicle',\n 'Demolition',\n 'Drill Rig',\n 'Fracturing Truck',\n 'Geophysical Exploration',\n 'Tanker',\n 'Winch Truck',\n ],\n};\n\nconst refuse: ApplicationDetails = {\n description: [\n `Vehicles used for residential refuse / recycle pickup, on an adverse grade up to 20%, typically a high number of stops per mile.`,\n `Or vehicles operated in commercial / industrial pickup, on an adverse grade up to 20%, typically a low number of stops per mile.`,\n `Or vehicles used in transfer / relocation on a maximum grade of 8%, typically greater than 10 miles per trip.`,\n `90% of loaded operation on road surfaces of concrete, asphalt, or maintained gravel and up to 10% of loaded operation into landfill, transfer, or recycling sites. Vehicles operating less than 90% refer to Specialized Applications “Off-Highway” coverage.`,\n ],\n vehicleTypes: [\n 'Front / Rear / Side Loader',\n 'Residential / Commercial Pickup',\n 'Roll-off (For trucks built prior to Nov. 1, 2004)',\n 'Scrap Truck',\n 'Sewer / Septic / Vacuum',\n 'Transfer Vehicle',\n ],\n};\n\nconst recreational: ApplicationDetails = {\n description: [\n 'Vehicles generally used for non-commercial transportation and as traveling domiciles for families.',\n 'Loaded full-time.',\n 'May pull small passenger car, boat, or pick-up truck.',\n 'Typically, vehicle routes exceed 30 miles between starts and stops.',\n 'Annual mileage generally less than 30,000 miles.',\n 'Typical operation is on paved roads and short distances within campgrounds and parks.',\n 'Normally a truck or bus-based chassis.',\n ],\n vehicleTypes: [\n 'Motor Homes Class A',\n 'Recreational Vehicle',\n ],\n};\n\nconst transitCoach: ApplicationDetails = {\n description: [\n 'Transporting people and sometimes light freight between cities and/or suburban areas.',\n 'Transporting people in and around city or suburban areas.',\n ],\n vehicleTypes: [\n 'Cross Country Coach',\n 'Integral Coach',\n 'Tour Bus / Coach',\n ],\n};\n\nconst agriculture: ApplicationDetails = {\n description: [\n 'Vehicles used in the agriculture industry. Use typically involves transportation of agricultural & dairy products to/from/on/around farm sites',\n 'Includes operation off of improved surfaces while on the farm.',\n ],\n vehicleTypes: [\n 'Feed Trucks',\n 'Milk Tankers for Farm Pickup',\n 'Semi End Dump',\n ],\n};\n\nconst fireService: ApplicationDetails = {\n description: [\n 'Pumpers, tankers, or aerial ladders used in fighting structural fires.',\n 'Low mileage operation.',\n ],\n vehicleTypes: [\n 'Aerial Ladder Truck',\n 'Aerial Platform',\n 'Ambulance',\n 'Pumper',\n 'Tanker Truck',\n ],\n};\n\nconst rescue: ApplicationDetails = {\n description: [\n 'Specialized vehicles for rapid acceleration to crash sites away from hydrant hookups.',\n 'Airport rescue is the most common.',\n 'Low mileage operation.',\n ],\n vehicleTypes: [\n 'Airport Rescue Fire (ARF)',\n 'Crash Fire Rescue (CFR)',\n 'Emergency Service',\n 'Rapid Intervention Vehicle (RIV)',\n ],\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n helpTitle: {\n marginTop: '52px',\n marginBottom: '48px',\n },\n helpContainer: {\n display: 'flex',\n },\n topicContainer: {\n backgroundColor: theme.palette.primary.light,\n paddingLeft: '15px',\n paddingRight: '24px',\n paddingTop: '16px',\n paddingBottom: '16px',\n width: 'fit-content',\n height: 'fit-content',\n marginRight: '30px',\n },\n topicTitle: {\n marginBottom: '16px',\n },\n topicLinks: {\n display: 'flex',\n flexDirection: 'column',\n },\n topicLink: {\n marginBottom: '16px',\n },\n helpInfo: {\n width: 'min-content',\n },\n dividerLine: {\n borderTop: '1px solid #D5D8DA',\n width: '870px',\n },\n basicTextTitle: {\n marginTop: '32px',\n marginBottom: '32px',\n },\n basicTextTitleNoTopMargin: {\n marginBottom: '32px',\n },\n basicTextBody: {\n marginBottom: '32px',\n },\n };\n});\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n subtitle: {\n marginTop: '32px',\n },\n image: {\n marginTop: '16px',\n width: '475px',\n },\n description: {\n marginTop: '8px',\n },\n roadExamples: {\n marginBottom: '32px',\n },\n };\n});\n","import React from 'react';\nimport { useStyles } from './styles';\nimport { Typography } from '@material-ui/core';\n\nexport const RoadTypes = () => {\n const classes = useStyles();\n\n const RoadSection = (props: { title: string, body: string, examples: string[], image: string }) => {\n return (\n
\n \n {props.title}\n \n \n \n {props.body}\n \n
\n
    \n {props.examples.map((example, index) => {\n return (\n
  • \n \n {example}\n \n
  • \n );\n })}\n
\n
\n
\n );\n };\n\n return (\n
\n \n Road Types\n \n \n \n \n \n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { VehicleApplication } from './application';\nimport { DefaultPage } from '../default-page';\nimport { Typography } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { RoadTypes } from './roads';\n\nexport const HelpPage = () => {\n const classes = useStyles();\n\n const divider = () =>
;\n\n const BasicTextSection = (props: {\n id: string;\n title: string;\n body: string[];\n firstItem?: boolean;\n }) => {\n return (\n <>\n \n {props.title}\n \n {props.body.map((bodyCopy, index) => (\n \n {bodyCopy}\n \n ))}\n \n );\n };\n\n const sleep = (milliseconds: number) => {\n return new Promise((resolve) => setTimeout(resolve, milliseconds));\n };\n\n useEffect(() => {\n const locationScroll = async () => {\n if (window.location.hash) {\n await sleep(200);\n const element = document.querySelector(window.location.hash);\n if (element) element.scrollIntoView();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n locationScroll();\n }, []);\n\n return (\n \n \n Transmission Spec Tool Help\n \n
\n \n
\n \n {divider()}\n \n {divider()}\n \n {divider()}\n \n {divider()}\n \n {divider()}\n \n {divider()}\n \n
\n
\n
\n );\n};\n","import React from 'react';\nimport { HelpPage } from '../../components/help-page';\n\nexport const Help = () => {\n return (\n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\nimport { Gutters } from '../../styles/gutters';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n createAccountHeaderContainer: {\n borderBottom: `1px solid ${Colors.gray[50]}`,\n },\n createAccountHeader: {\n background: Colors.white[50],\n ...Gutters(theme),\n minWidth: '960px',\n maxWidth: '1500px',\n width: '100%',\n marginRight: 'auto',\n marginLeft: 'auto',\n paddingBottom: '52px',\n display: 'flex',\n justifyContent: 'space-between',\n },\n createAccountDescription: {\n maxWidth: '670px',\n },\n createAccountHeading: { paddingTop: '52px', paddingBottom: '8px' },\n createAccountSubheading: {\n paddingBottom: '32px',\n },\n createAccountSubtext: {\n paddingBottom: '16px',\n },\n createAccountSignIn: {\n marginLeft: '30px',\n width: '470px',\n height: '165px',\n backgroundColor: Colors.blue[50],\n borderRadius: '2px',\n textAlign: 'center',\n paddingTop: '32px',\n paddingBottom: '32px',\n marginTop: 'auto',\n },\n anotherContainer: {\n background: Colors.white[100],\n flexGrow: 1,\n },\n createAccountDetailsContainer: {\n ...Gutters(theme),\n marginRight: 'auto',\n marginLeft: 'auto',\n paddingTop: '32px',\n paddingBottom: '32px',\n minWidth: '960px',\n maxWidth: '1500px',\n width: '100%',\n flexGrow: 1,\n },\n createAccountDetails: {\n width: '570px',\n },\n createAccountField: {\n width: '100%',\n },\n accountinformationField: {\n marginTop: '32px',\n },\n verificationCodeContainer: {\n width: '370px',\n display: 'flex',\n alignItems: 'flex-end',\n },\n verificationCodeField: {\n flexGrow: 1,\n marginRight: '16px',\n },\n emailHeading: {\n fontSize: '12px',\n color: Colors.gray[800],\n },\n disclaimer: {\n fontSize: '10px',\n color: Colors.gray[800],\n },\n submitButton: {\n marginTop: '48px',\n marginRight: '16px',\n },\n errorText: {\n color: theme.palette.error.main,\n },\n passwordFieldHeader: {\n marginTop: '64px',\n },\n philWarning: {\n marginTop: '16px',\n textAlign: 'center',\n width: '370px',\n background: Colors.red[500],\n },\n nameFields: {\n display: 'flex',\n justifyContent: 'space-between',\n },\n firstNameField: {\n marginRight: '30px',\n },\n accountCreatedMessage: {\n marginTop: '16px',\n marginBottom: '32px',\n },\n };\n});\n","import React, { useState } from 'react';\nimport { TextField } from '@material-ui/core';\n\ntype Props = {\n email: string;\n setEmail: (email: string) => void;\n error?: boolean;\n disable?: boolean;\n otherErrorText?: string | JSX.Element;\n validEmail?: (emailAddress: string | null | undefined) => boolean;\n className?: string;\n}\n\nexport function validateEmail(email: string) {\n // eslint-disable-next-line no-useless-escape\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"\\+]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"\\+]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n}\n\nexport const EmailField = (props: Props) => {\n const [showInvalidEmailError, setShowInvalidEmailError] = useState(false);\n const isValidEmail = (props.validEmail || validateEmail)(props.email);\n\n const existingError = showInvalidEmailError || props.error;\n\n return (\n {\n setShowInvalidEmailError(!isValidEmail);\n }}\n onChange={(evt): void => {\n if (isValidEmail) {\n setShowInvalidEmailError(false);\n }\n props.setEmail(evt.target.value);\n }}\n helperText={\n showInvalidEmailError\n ? 'Please enter a valid email address.'\n : props.error && props.otherErrorText\n }\n disabled={props.disable}\n />);\n};\n","export enum OrganizationType {\n AftermarketChannelPartner = 'Aftermarket Channel Partner',\n DealerSales = 'Dealer/Sales',\n Distributor = 'Distributor',\n EndUserDriverOwnerOperator = 'End User/Driver/Owner-Operator',\n Fleet = 'Fleet',\n LeaseRental = 'Lease Rental',\n MaintenanceServiceTechnician = 'Maintenance/Service/Technician',\n Manufacturer = 'Manufacturer',\n Other = 'Other',\n}\n","export enum VocationCheckList {\n Linehaul = 'Linehaul',\n PickupAndDelivery = 'Pick up & Delivery',\n Distributor = 'Distributor',\n Construction = 'Construction',\n Logging = 'Logging',\n HeavyHaul = 'Heavy Haul',\n Mining = 'Mining',\n OilField = 'Oil Field',\n Refuse = 'Refuse',\n FireAndRescue = 'Fire & Rescue',\n}","export enum CountryList {\n Afghanistan = \"Afghanistan\",\n Albania = \"Albania\",\n Algeria = \"Algeria\",\n AllEurope = \"All Europe\",\n Andorra = \"Andorra\",\n Angola = \"Angola\",\n AntiguaAndBarbuda = \"Antigua and Barbuda\",\n Argentina = \"Argentina\", \n Armenia = \"Armenia\",\n Aruba = \"Aruba\",\n Australia = \"Australia\",\n Austria = \"Austria\",\n Azerbaijan = \"Azerbaijan\",\n Bahamas = \"Bahamas\",\n Bahrain = \"Bahrain\",\n Bangladesh = \"Bangladesh\",\n Barbados = \"Barbados\",\n Belarus = \"Belarus\",\n Belgium = \"Belgium\", \n Belize = \"Belize\",\n Benin = \"Benin\",\n Bhutan = \"Bhutan\",\n Bolivia = \"Bolivia\",\n BosniaAndHerzegovina = \"Bosnia and Herzegovina\",\n Botswana = \"Botswana\", \n Brazil = \"Brazil\",\n BritishVirginIslands = \"British Virgin Islands\",\n Brunei = \"Brunei\",\n Bulgaria = \"Bulgaria\",\n BurkinaFaso = \"Burkina Faso\",\n BurmaMyanmar = \"Burma (Myanmar)\",\n Burundi = \"Burundi\",\n Cambodia = \"Cambodia\",\n Cameroon = \"Cameroon\",\n Canada = \"Canada\",\n CapeVerde = \"Cape Verde\",\n CaymanIslands = \"Cayman Islands\",\n CentralAfricanRepublic = \"Central African Republic\",\n Chad = \"Chad\",\n Chile = \"Chile\",\n China = \"China\",\n Colombia = \"Colombia\",\n Comoros = \"Comoros\",\n Congo = \"Congo\",\n CongoDemocraticRepublicofthe =\"Congo, Democratic Republic of the\",\n CostaRica = \"Costa Rica\",\n Croatia = \"Croatia\",\n CtedIvoire = \"C�te d'Ivoire\",\n Cuba = \"Cuba\",\n Curacao = \"Curacao\",\n Cyprus = \"Cyprus\",\n CzechRepublic = \"Czech Republic\",\n Denmark = \"Denmark\",\n Djibouti = \"Djibouti\", \n Dominica = \"Dominica\",\n DominicanRepublic = \"Dominican Republic\",\n EastTimor = \"East Timor\",\n Ecuador = \"Ecuador\",\n Egypt = \"Egypt\",\n ElSalvador = \"El Salvador\",\n EnglandUK = \"England (U.K.)\",\n EquatorialGuinea = \"Equatorial Guinea\",\n Eritrea = \"Eritrea\",\n Estonia = \"Estonia\",\n Ethiopia = \"Ethiopia\", \n Europe = \"Europe\",\n Fiji = \"Fiji\",\n Finland = \"Finland\",\n France = \"France\",\n Gabon = \"Gabon\",\n Gambia = \"Gambia\",\n Georgia = \"Georgia\",\n Germany = \"Germany\",\n Ghana = \"Ghana\",\n Greece = \"Greece\",\n Grenada = \"Grenada\",\n Guam = \"Guam\",\n Guatemala = \"Guatemala\",\n Guinea = \"Guinea\",\n GuineaBissau = \"Guinea-Bissau\",\n Guyana = \"Guyana\",\n Haiti = \"Haiti\",\n Holland = \"Holland\",\n Honduras = \"Honduras\",\n Hungary = \"Hungary\",\n Iceland = \"Iceland\",\n India = \"India\",\n Indonesia = \"Indonesia\",\n Iran = \"Iran\",\n Iraq = \"Iraq\",\n Ireland = \"Ireland\",\n Israel = \"Israel\",\n Italy = \"Italy\",\n IvoryCoast = \"Ivory Coast\",\n Jamaica = \"Jamaica\",\n Japan = \"Japan\",\n Jordan = \"Jordan\",\n Kazakhstan = \"Kazakhstan\",\n Kenya = \"Kenya\", \n Kiribati = \"Kiribati\",\n KoreaNorth = \"Korea, North\",\n KoreaSouth = \"Korea, South\", \n Kuwait = \"Kuwait\",\n Kyrgyzstan = \"Kyrgyzstan\",\n Laos = \"Laos\",\n Latvia = \"Latvia\",\n Lebanon = \"Lebanon\",\n Lesotho = \"Lesotho\",\n Liberia = \"Liberia\",\n Libya = \"Libya\",\n Liechtenstein = \"Liechtenstein\",\n Lithuania = \"Lithuania\",\n Luxembourg = \"Luxembourg\",\n Macedonia = \"Macedonia\",\n Madagascar = \"Madagascar\",\n Malawi = \"Malawi\",\n Malaysia = \"Malaysia\",\n Maldives = \"Maldives\",\n Mali = \"Mali\",\n Malta = \"Malta\",\n MarshallIslands = \"Marshall Islands\",\n Mauritania = \"Mauritania\",\n Mauritius = \"Mauritius\",\n Mexico = \"Mexico\",\n Micronesia = \"Micronesia\",\n Moldova = \"Moldova\",\n Monaco = \"Monaco\",\n Mongolia = \"Mongolia\",\n Morocco = \"Morocco\",\n Mozambique = \"Mozambique\",\n Myanmar = \"Myanmar\",\n Namibia = \"Namibia\",\n Nauru = \"Nauru\",\n Nepal = \"Nepal\",\n NewZealand = \"New Zealand\",\n Nicaragua = \"Nicaragua\", \n Niger = \"Niger\",\n Nigeria = \"Nigeria\",\n NONUNITEDSTATESTERRITORY = \"NONUNITEDSTATESTERRITORY\",\n NorthernIreland = \"Northern Ireland (U.K.)\",\n Norway = \"Norway\",\n Oman = \"Oman\",\n Pakistan = \"Pakistan\",\n Palau = \"Palau\",\n Palestinian_State = \"Palestinian State*\",\n Panama = \"Panama\",\n PapuaNewGuinea = \"Papua New Guinea\",\n Paraguay = \"Paraguay\",\n Peru = \"Peru\",\n Philippines = \"Philippines\",\n Poland = \"Poland\",\n Portugal = \"Portugal\",\n PuertoRico = \"Puerto Rico\",\n Qatar = \"Qatar\",\n Romania = \"Romania\",\n Russia = \"Russia\",\n Rwanda = \"Rwanda\",\n Samoa = \"Samoa\",\n SanMarino = \"San Marino\",\n SaudiArabia = \"Saudi Arabia\",\n ScotlandUK = \"Scotland (U.K.)\",\n Senegal = \"Senegal\",\n SerbiaAndMontenegro = \"Serbia and Montenegro\",\n Seychelles = \"Seychelles\",\n SierraLeone = \"Sierra Leone\",\n Singapore = \"Singapore\",\n Slovakia = \"Slovakia\",\n Slovenia = \"Slovenia\",\n SolomonIslands = \"Solomon Islands\",\n Somalia = \"Somalia\",\n SouthAfrica = \"South Africa\",\n Spain = \"Spain\",\n SriLanka = \"Sri Lanka\",\n StKittsandNevis = \"St. Kitts and Nevis\",\n StLucia = \"St. Lucia\",\n StMartin = \"St. Martin\",\n StVincentAndTheGrenadines = \"St. Vincent and The Grenadines\",\n STomndPripe = \"S�Tom�nd Pr�ipe\",\n Sudan = \"Sudan\",\n Suriname = \"Suriname\",\n Swaziland = \"Swaziland\",\n Sweden = \"Sweden\",\n Switzerland = \"Switzerland\",\n Syria = \"Syria\",\n Taiwan = \"Taiwan\",\n Tajikistan = \"Tajikistan\",\n Tanzania = \"Tanzania\",\n Test1 = \"Test1\",\n Thailand = \"Thailand\",\n TheNetherlands = \"The Netherlands\",\n ThePhilippines = \"The Philippines\",\n Togo = \"Togo\",\n Tonga = \"Tonga\",\n TrinidadAndTobago = \"Trinidad and Tobago\",\n Tunisia = \"Tunisia\",\n Turkey = \"Turkey\",\n Turkmenistan = \"Turkmenistan\",\n Tuvalu = \"Tuvalu\",\n USVirginIslands = \"U.S. Virgin Islands\",\n Uganda = \"Uganda\",\n Ukraine = \"Ukraine\",\n UnitedArabEmirates = \"United Arab Emirates\",\n UnitedStates = \"United States\",\n Uruguay = \"Uruguay\",\n US_Virgin_Islands = \"US Virgin Islands\",\n Uzbekistan = \"Uzbekistan\", \n Vanuatu = \"Vanuatu\",\n VaticanCity = \"Vatican City (Holy See)\",\n Venezuela = \"Venezuela\",\n Vietnam = \"Vietnam\",\n WalesUK = \"Wales (U.K.)\",\n WesternSahara = \"Western Sahara*\",\n Yemen = \"Yemen\", \n Yugoslavia = \"Yugoslavia\", \n Zaire = \"Zaire\",\n Zambia = \"Zambia\", \n Zimbabwe = \"Zimbabwe\",\n}","import { EmailStates, AccountCreationState } from '.';\nimport { useStyles } from './styles';\nimport React from 'react';\nimport { Typography, Link } from '@material-ui/core';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { EatonButton, EatonLinkButton } from '../button';\nimport { EmailField, validateEmail } from '../email-field';\n\nexport const PureEmailPrompt = (props: {\n onSendVerification: () => void;\n email: string;\n setEmail: (email: string) => void;\n emailSubmissionState: EmailStates;\n}) => {\n const classes = useStyles();\n\n return (\n {\n e.preventDefault();\n props.onSendVerification();\n }}\n >\n \n Enter Your Email\n \n \n That email already has an account. Please use another email or{' '}\n \n log in.\n {' '}\n \n }\n className={classes.createAccountField}\n />\n \n Send Verification Email\n \n \n No, Thanks\n \n {props.emailSubmissionState === AccountCreationState.EmailFailed && (\n \n
\n Something went wrong. Please try again.\n
\n )}\n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n passwordFieldContainer: {\n display: 'flex',\n flexFlow: 'column',\n },\n passwordField: {\n marginTop: '32px',\n width: '370px',\n },\n passwordRegisterError: {\n color: theme.palette.error.main,\n fontSize: '12px',\n marginTop: '4px',\n },\n passwordVerification: {\n marginTop: '8px',\n width: '370px',\n display: 'flex',\n justifyContent: 'space-between',\n },\n passwordVerificationColumn: {\n display: 'inline-block',\n },\n passwordVerificationRow: {\n display: 'flex',\n alignItems: 'center',\n marginTop: '8px',\n },\n passwordVerificationText: {\n fontSize: '14px',\n paddingLeft: '8px',\n },\n unmetPasswordRequirementText: {\n color: Colors.black[300],\n },\n };\n});\n","import React from 'react';\n\nexport const DotIcon = (props: { className?: string; color: string }) => (\n \n \n \n);\n","import React, { useState } from 'react';\nimport {\n Typography,\n FormControl,\n InputLabel,\n Input,\n InputAdornment,\n IconButton,\n Tooltip,\n} from '@material-ui/core';\nimport { useStyles } from './styles';\nimport Visibility from '@material-ui/icons/Visibility';\nimport VisibilityOff from '@material-ui/icons/VisibilityOff';\nimport { DotIcon } from '../../icons/dot-icon';\nimport * as Colors from '@pxblue/colors';\n\nconst hasLowerCase = (password: string) => /[a-z]/.test(password);\nconst hasUpperCase = (password: string) => /[A-Z]/.test(password);\nconst hasNumber = (password: string) => /[0-9]/.test(password);\n// https://owasp.org/www-community/password-special-characters\nconst hasSpecialCharacter = (password: string) =>\n // eslint-disable-next-line no-useless-escape\n /[~`!@#$%\\^&*+=\\-\\[\\]';,\\/{}|\":<>\\?()\\.]/.test(password);\nconst hasNineToSixteenCharacters = (password: string) =>\n password.length >= 9 && password.length <= 16;\n\nexport const evaluatePassword = (password: string) =>\n hasNumber(password) &&\n hasSpecialCharacter(password) &&\n hasUpperCase(password) &&\n hasLowerCase(password) &&\n hasNineToSixteenCharacters(password);\n\ntype Props = {\n password: string;\n setPassword: (password: string) => void;\n passwordMatchError: boolean;\n setPasswordMatchError: (error: boolean) => void;\n className?: string;\n};\n\nexport const CreatePasswordField = (props: Props) => {\n const classes = useStyles();\n\n const [showPassword, setShowPassword] = useState(false);\n const [retypePassword, setRetypePassword] = useState(props.password);\n\n const handleClickShowPassword = () => {\n setShowPassword(!showPassword);\n };\n\n return (\n
\n
\n \n Password\n {\n props.setPassword(event.target.value);\n if (event.target.value !== retypePassword) {\n props.setPasswordMatchError(true);\n } else {\n props.setPasswordMatchError(false);\n }\n }}\n endAdornment={\n \n {\n event.preventDefault();\n }}\n >\n {showPassword ? : }\n \n \n }\n />\n \n \n \n Retype Password\n \n {\n setRetypePassword(event.target.value);\n if (props.password === event.target.value) {\n props.setPasswordMatchError(false);\n } else {\n props.setPasswordMatchError(true);\n }\n }}\n error={props.passwordMatchError}\n endAdornment={\n \n {\n event.preventDefault();\n }}\n >\n {showPassword ? : }\n \n \n }\n />\n {props.passwordMatchError && (\n
\n Passwords do not match.\n
\n )}\n
\n
\n
\n
\n
\n \n \n One lowercase character\n \n
\n
\n \n \n One uppercase character\n \n
\n
\n \n \n One number\n \n
\n
\n
\n ?@[]^\\`{|}~`}\n >\n
\n \n \n One special character\n \n
\n \n
\n \n \n 9 to 16 characters\n \n
\n
\n
\n
\n );\n};\n","import { VerificationStates, AccountCreationState } from '.';\nimport { useStyles } from './styles';\nimport React, { useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { Typography, Link, TextField } from '@material-ui/core';\nimport { EatonButton, EatonLinkButton } from '../button';\nimport {\n CreatePasswordField,\n evaluatePassword,\n} from '../create-password-field';\n\ntype Props = {\n code: string;\n setCode: (code: string) => void;\n state: VerificationStates;\n verifyCode: () => void;\n resendEmail: () => void;\n existingUser: boolean;\n password: string;\n setPassword: (password: string) => void;\n back: () => void;\n};\n\nexport const PureVerificationCodePrompt = (props: Props) => {\n const classes = useStyles();\n\n const [passwordMatchError, setPasswordMatchError] = useState(false);\n\n const PasswordPrompt = props.existingUser ? null : (\n <>\n \n Password\n \n \n {props.state === AccountCreationState.VerificationOrPasswordFailed && (\n \n
\n Something went wrong. Please try again.\n
\n )}\n \n );\n\n return (\n {\n e.preventDefault();\n if (!props.existingUser) {\n if (!passwordMatchError) props.verifyCode();\n } else {\n props.verifyCode();\n }\n }}\n >\n \n Email Verification\n \n\n \n {props.existingUser && (\n <>\n It looks like you already have an Eaton account. Verify your email\n to add this account to the Automated Transmission Selector.\n
\n
\n \n )}\n Please enter the six-digit verification code we just sent to you. The\n code is valid for 15 minutes.\n
\n
\n {\n props.setCode(event.target.value);\n }}\n />\n \n Resend Code\n \n
\n {props.state === AccountCreationState.AccountAlreadyVerified ? (\n \n
\n It looks like this account has already been verified. Please{' '}\n \n log in.\n \n
\n ) : (\n PasswordPrompt\n )}\n \n \n Back\n \n \n Verify\n \n \n No, Thanks\n \n \n \n );\n};\n","import React from 'react';\nimport { useStyles } from './styles';\nimport { AccountDetailsState, AccountCreationState } from '.';\nimport {\n TextField,\n Typography,\n Select,\n FormControl,\n InputLabel,\n MenuItem,\n} from '@material-ui/core';\nimport { OrganizationType } from '../../domain/account';\nimport { EatonButton, EatonLinkButton } from '../button';\nimport { VocationCheckList } from '../../domain/vocationCheckList';\nimport { CountryList } from '../../domain/countryList';\n\nexport const PureAccountInformationPrompt = (props: {\n state: AccountDetailsState;\n firstName: string;\n setFirstName: (name: string) => void;\n lastName: string;\n setLastName: (name: string) => void;\n email: string;\n organizationName: string;\n setOrganizationName: (name: string) => void;\n organizationType: OrganizationType | '';\n vocationCheckList: VocationCheckList | '';\n countryList: CountryList | '';\n setOrganizationType: (name: OrganizationType) => void;\n setVocationCheckList: (name: VocationCheckList) => void;\n setCountryList: (name: CountryList) => void;\n sendAccountInfo: () => void;\n}) => {\n const classes = useStyles();\n\n return (\n {\n e.preventDefault();\n props.sendAccountInfo();\n }}\n >\n Account Information\n \n {\n props.setFirstName(event.target.value);\n }}\n inputProps={{\n maxLength: 255,\n }}\n />\n {\n props.setLastName(event.target.value);\n }}\n inputProps={{\n maxLength: 255,\n }}\n />\n \n \n Email Address\n \n {props.email}\n \n Organization Type\n {\n props.setOrganizationType(event.target.value as OrganizationType);\n }}\n value={props.organizationType}\n >\n {Object.entries(OrganizationType).map((type) => (\n \n {type[1]}\n \n ))}\n \n \n {\n props.setOrganizationName(event.target.value);\n }}\n value={props.organizationName}\n inputProps={{\n maxLength: 255,\n }}\n />\n \n Select most common application type\n {\n props.setVocationCheckList(event.target.value as VocationCheckList);\n }}\n value={props.vocationCheckList}\n >\n {Object.entries(VocationCheckList).map((type) => (\n \n {type[1]}\n \n ))}\n \n \n \n Select country where you are located\n {\n props.setCountryList(event.target.value as CountryList);\n }}\n value={props.countryList}\n >\n {Object.entries(CountryList).map((type) => (\n \n {type[1]}\n \n ))}\n \n \n \n Create Account\n \n \n No, Thanks\n \n \n
\n By filling out and submitting the form, you agree that the personal data that you provide can be shared with Eaton Cummins Automated Transmission Technologies LLC in the United States of America and with Eaton Cummins Automated Transmission Technologies LLC channel partners. Any use of your personal data will take place in compliance with the relevant and applicable data privacy laws and the Eaton Cummins Automated Transmission Technologies LLC Privacy Policy.\n \n {props.state === AccountCreationState.AccountDetailsFailed && (\n \n
\n Something went wrong. Please try again.\n
\n )}\n \n );\n};\n","import React, { useState } from 'react';\nimport { Typography } from '@material-ui/core';\nimport { useStyles } from './styles';\nimport { PureEmailPrompt } from './pure-email-prompt';\nimport { PureVerificationCodePrompt } from './pure-verification-code-prompt';\nimport { PureAccountInformationPrompt } from './pure-account-information-prompt';\nimport { OrganizationType } from '../../domain/account';\nimport { EatonLinkButton } from '../button';\nimport { useLogin, useAuthDispatch } from '../reusable-components';\nimport { useHistory } from 'react-router-dom';\nimport { validateEmail } from '../email-field';\nimport { VocationCheckList } from '../../domain/vocationCheckList';\nimport { CountryList } from '../../domain/countryList';\n\nexport const PureCreateAccountHeader = () => {\n const classes = useStyles();\n return (\n
\n
\n
\n \n Create Account\n \n \n Save your specs. Reference them later.\n \n \n Creating an account will allow you to save and download your\n results. You can access them at any point and even add notes to\n them.\n \n
\n
\n \n Already have an account?\n \n Sign In\n
\n
\n
\n );\n};\n\nexport type EmailStates =\n | AccountCreationState.AwaitingEmailEntry\n | AccountCreationState.SendingEmailVerification\n | AccountCreationState.EmailExists\n | AccountCreationState.EmailFailed;\n\nexport type VerificationStates =\n | AccountCreationState.AwaitingVerificationAndPasswordEntry\n | AccountCreationState.ResendingCode\n | AccountCreationState.SubmittingVerificationAndPassword\n | AccountCreationState.InvalidVerificationCode\n | AccountCreationState.AccountAlreadyVerified\n | AccountCreationState.VerificationOrPasswordFailed;\n\nexport type AccountDetailsState =\n | AccountCreationState.AwaitingAccountDetails\n | AccountCreationState.SubmittingAccountDetails\n | AccountCreationState.AccountDetailsFailed;\n\nexport enum OtherStates {\n NotImplemented,\n}\n\nexport enum AccountCreationState {\n // Email\n AwaitingEmailEntry,\n SendingEmailVerification,\n EmailExists,\n EmailFailed,\n\n // Email verification for a new user\n AwaitingVerificationAndPasswordEntry,\n ResendingCode,\n SubmittingVerificationAndPassword,\n InvalidVerificationCode,\n AccountAlreadyVerified,\n VerificationOrPasswordFailed,\n\n // Account details\n AwaitingAccountDetails,\n SubmittingAccountDetails,\n AccountDetailsFailed,\n\n // Other\n NotImplemented,\n}\n\nexport const CreateAccount = () => {\n const [componentState, setStateAndExisting] = useState<{\n state: AccountCreationState;\n existingUser: boolean;\n }>({ state: AccountCreationState.AwaitingEmailEntry, existingUser: false });\n const setState = (newState: AccountCreationState) => {\n setStateAndExisting({\n state: newState,\n existingUser: componentState.existingUser,\n });\n };\n const router = useHistory();\n\n const { authenticatedRequest } = useAuthDispatch();\n \n // E-mail page\n const [email, setEmail] = useState('');\n const sendEmailVerification = () => {\n if (validateEmail(email)) {\n if (\n componentState.state ===\n AccountCreationState.AwaitingVerificationAndPasswordEntry\n ) {\n setState(AccountCreationState.ResendingCode);\n } else {\n setState(AccountCreationState.SendingEmailVerification);\n }\n const submit = async () => {\n const result = await authenticatedRequest({\n method: 'POST',\n url: `/api/registration/register/${email}`,\n });\n if (result.status === 201) {\n setState(AccountCreationState.AwaitingVerificationAndPasswordEntry);\n } else if (result.status === 200) {\n setStateAndExisting({\n state: AccountCreationState.AwaitingVerificationAndPasswordEntry,\n existingUser: true,\n });\n } else if (result.status === 409) {\n setState(AccountCreationState.EmailExists);\n } else {\n setState(AccountCreationState.EmailFailed);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n submit();\n }\n };\n\n // Verification Code and Password page\n const [password, setPassword] = useState('');\n const [verificationCode, setVerificationCode] = useState('');\n const sendVerificationCodeAndPassword = () => {\n setState(AccountCreationState.SubmittingVerificationAndPassword);\n\n if (componentState.existingUser) {\n const data = {\n email,\n verificationCode,\n };\n const submit = async () => {\n const result = await authenticatedRequest({\n url: `/api/registration/verifyexisting`,\n data,\n method: 'POST',\n });\n if (result.status === 200) {\n router.push('/updated');\n } else if (\n result.status === 400 &&\n JSON.stringify(result.body).match(/verification code/i)\n ) {\n // Bad verification code.\n setState(AccountCreationState.InvalidVerificationCode);\n return;\n } else if (result.status === 405) {\n setState(AccountCreationState.AccountAlreadyVerified);\n return;\n }\n // Something else went wrong\n setState(AccountCreationState.VerificationOrPasswordFailed);\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n submit();\n } else {\n const data = {\n email,\n verificationCode,\n password,\n };\n const submit = async () => {\n const result = await authenticatedRequest({\n method: 'POST',\n url: `/api/registration/verifynew`,\n data,\n });\n if (result.status === 201) {\n try {\n const response = await authenticatedRequest({\n method: 'POST',\n url: '/api/security/token',\n data: {\n user: email,\n password,\n },\n });\n if (response.status !== 200) {\n setState(AccountCreationState.VerificationOrPasswordFailed);\n } else {\n setState(AccountCreationState.AwaitingAccountDetails);\n }\n } catch (err) {\n setState(AccountCreationState.VerificationOrPasswordFailed);\n }\n return;\n } else if (\n result.status === 400 &&\n JSON.stringify(result.body).match(/verification code/i)\n ) {\n // Bad verification code.\n setState(AccountCreationState.InvalidVerificationCode);\n return;\n } else if (result.status === 405) {\n setState(AccountCreationState.AccountAlreadyVerified);\n return;\n }\n // Something else went wrong\n setState(AccountCreationState.VerificationOrPasswordFailed);\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n submit();\n }\n };\n\n // Account Information\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n const [organizationName, setOrganizationName] = useState('');\n const [organizationType, setOrganizationType] = useState<\n OrganizationType | ''\n >('');\n const [vocationCheckList, setVocationCheckList] = useState<\n VocationCheckList | ''\n >('');\n const [countryList, setCountryList] = useState<\n CountryList | ''\n>('');\n //const login = useLogin();\n const sendAccountInfo = () => {\n setState(AccountCreationState.SubmittingAccountDetails);\n const data = {\n email: email.trim(),\n firstName: firstName.trim(),\n lastName: lastName.trim(),\n organizationName: organizationName.trim(),\n organizationType,\n vocationCheckList,\n countryList,\n };\n const submit = async () => {\n const result = await authenticatedRequest({\n method: 'POST',\n url: `/api/registration/accountdetails`,\n data,\n });\n if (result.status === 200) {\n //await login({ email, password });\n \n router.push('/created');\n } else {\n // Something went wrong\n setState(AccountCreationState.AccountDetailsFailed);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n submit();\n };\n\n const getCurrentForm = () => {\n switch (componentState.state) {\n case AccountCreationState.AwaitingEmailEntry:\n case AccountCreationState.SendingEmailVerification:\n case AccountCreationState.EmailExists:\n case AccountCreationState.EmailFailed:\n return (\n \n );\n case AccountCreationState.AwaitingVerificationAndPasswordEntry:\n case AccountCreationState.ResendingCode:\n case AccountCreationState.SubmittingVerificationAndPassword:\n case AccountCreationState.InvalidVerificationCode:\n case AccountCreationState.AccountAlreadyVerified:\n case AccountCreationState.VerificationOrPasswordFailed:\n return (\n {\n setState(AccountCreationState.AwaitingEmailEntry);\n }}\n />\n );\n case AccountCreationState.AwaitingAccountDetails:\n case AccountCreationState.SubmittingAccountDetails:\n case AccountCreationState.AccountDetailsFailed:\n return (\n \n );\n }\n };\n\n const classes = useStyles();\n\n return (\n <>\n \n
\n
\n {getCurrentForm()}\n
\n
\n \n );\n};\n","import React from 'react';\nimport { CreateAccount } from '../../components/create-account';\n\nexport const RegisterPage = () => {\n return ;\n};\n","/* eslint-disable quote-props */\nimport { makeStyles, Color, Theme } from '@material-ui/core';\nimport { PaletteColor } from '@material-ui/core/styles/createPalette';\nimport { SubType } from '../reusable-components/types';\nimport * as Colors from '@pxblue/colors';\n\nexport const useStyles = makeStyles((theme) => ({\n loginContainer: {\n display: 'block',\n height: '100vh',\n width: '100vw',\n background: 'linear-gradient(90deg, #007BC1 0%, #00599A 99.1%)',\n backgroundSize: '100%',\n margin: 0,\n padding: 0,\n position: 'absolute',\n top: 0,\n left: 0,\n },\n loginPage: {\n backgroundImage: `url(../../../../transmission-outline.png)`,\n backgroundRepeat: 'no-repeat',\n backgroundPosition: '-25px 35px',\n backgroundSize: 'cover',\n height: '100%',\n maxWidth: '65%',\n },\n loginContentContainer: {\n width: '62%',\n position: 'absolute',\n height: '100%',\n top: 0,\n bottom: 0,\n right: 0,\n backgroundColor: theme.palette.common.white,\n },\n loginFormContainer: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '370px',\n textAlign: 'center',\n },\n loginLogo: {\n height: '58px',\n marginBottom: '16px',\n },\n loginTitle: {\n marginBottom: '32px',\n },\n loginFormFields: {\n width: '370px',\n },\n loginFieldMargin: {\n marginBottom: '50px',\n },\n errorText: {\n color: getPaletteColor(theme, 'error', 500),\n marginBottom: '6px',\n fontSize: '12px',\n },\n loginSubmitButton: {\n marginBottom: '16px',\n },\n loginForgot: {\n marginTop: '8px',\n textAlign: 'right',\n fontSize: '12px',\n },\n loginCreateAccount: {\n fontSize: '12px',\n color: Colors.gray[800],\n },\n backtoHome: {\n marginTop: '100px'\n },\n}));\n\ntype PaletteKey = keyof PaletteColor | keyof Color;\n\n/**\n * Workaround for mismatch between the Palette type and the \"real\" objects behind the types\n */\nfunction getPaletteColor(\n theme: Theme,\n palette: keyof SubType,\n key: PaletteKey,\n): string {\n const p = theme.palette[palette];\n return (p as Color & PaletteColor)[key];\n}\n","import React, { useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Typography from '@material-ui/core/Typography';\nimport {\n CircularProgress,\n FormControl,\n InputLabel,\n Input,\n InputAdornment,\n IconButton,\n Link,\n} from '@material-ui/core';\nimport useStateWhileMounted from '../reusable-components/hooks/use-state-while-mounted';\nimport {\n LoginForm,\n LoginFormResult,\n} from '../reusable-components/hooks/use-login';\nimport { useStyles } from './styles';\nimport { EatonButton } from '../button';\nimport Visibility from '@material-ui/icons/Visibility';\nimport VisibilityOff from '@material-ui/icons/VisibilityOff';\nimport { EmailField, validateEmail } from '../email-field';\n\nfunction defaultValidPassword(password: string | null | undefined): boolean {\n return !!(password && typeof password === 'string' && password.length > 0);\n}\n\ntype Props = {\n submitForm: (form: LoginForm) => Promise;\n\n // TODO: These could return a string that can be displayed to inform the user what's not valid\n validEmail?: (emailAddress: string | null | undefined) => boolean;\n validPassword?: (password: string | null | undefined) => boolean;\n};\n\nconst UserLogin: React.FC = (props: Props) => {\n const classes = useStyles(props); // TODO: Does this allow sufficient customization of the look/feel of the login component?\n\n const [email, setEmail] = useState('');\n\n const [showPassword, setShowPassword] = useState(false);\n const [password, setPassword] = useState('');\n const [errorMessages, setErrorMessages] = useState([]);\n const [submitting, setSubmitting] = useStateWhileMounted(false); // Since we might get redirected away upon successful login, use this helper to avoid React warning about setting state after unmount\n\n const isValidEmail = (props.validEmail || validateEmail)(email);\n const isValidPassword = (props.validPassword || defaultValidPassword)(\n password,\n );\n const canLogin = !submitting && isValidEmail && isValidPassword;\n const fieldsDisabled = submitting;\n\n const handleClickShowPassword = () => {\n setShowPassword(!showPassword);\n };\n\n return (\n
\n
\n
\n
\n \n \n Transmission Spec Tool\n \n => {\n try {\n evt.preventDefault();\n setSubmitting(true);\n const result = await props.submitForm({\n email,\n password,\n });\n if (!result.success) {\n setErrorMessages(result.messages);\n }\n } finally {\n setSubmitting(false);\n }\n }}\n >\n \n
\n \n Password\n setPassword(evt.target.value)}\n endAdornment={\n \n {\n event.preventDefault();\n }}\n >\n {showPassword ? : }\n \n \n }\n />\n \n \n \n Forgot password?\n \n \n
\n \n Sign In\n {submitting && (\n \n )}\n \n {errorMessages && (\n
\n \n {errorMessages.join(',')}\n \n
\n )}\n \n
\n \n {`Don't have an account? `}\n \n Sign Up\n \n \n
\n
\n \n \n Back to Home\n \n \n
\n
\n
\n
\n
\n );\n};\n\nexport default UserLogin;\n","import React from 'react';\nimport { useLogin, useAuthState } from '../../components/reusable-components';\nimport { AuthStatus } from '../../components/reusable-components/components/AuthContext';\nimport Cookies from 'js-cookie';\nimport { Redirect } from 'react-router';\nimport UserLogin from '../../components/user-login';\n\nexport const LoginPage = (props: {}) => {\n const login = useLogin();\n const authState = useAuthState();\n if (authState.authenticated === AuthStatus.Authenticated) {\n const redirectTo = Cookies.get('etn-destination') || '/';\n Cookies.remove('etn-destination');\n return ;\n }\n return ;\n};\n","import { useAuthDispatch, UserInfo } from '../components/AuthContext';\nimport React from 'react';\n\nexport type LoginForm = {\n email: string;\n password: string;\n};\n\nexport type LoginFormResult =\n | { success: true }\n | { success: false; messages: string[] };\n\nexport default function useLogin(): (\n form: LoginForm,\n) => Promise {\n const { userLoggedIn, authenticatedRequest } = useAuthDispatch();\n return React.useCallback(\n async (form: LoginForm): Promise => {\n try {\n const response = await authenticatedRequest({\n url: '/api/security/token',\n data: {\n user: form.email,\n password: form.password,\n },\n method: 'POST',\n });\n\n if (response.status !== 200) {\n return {\n success: false,\n messages: ['Email or password is incorrect.'],\n };\n }\n const userInfoResponse = await authenticatedRequest({\n url: '/api/security/currentuser',\n method: 'GET',\n });\n\n if (!userInfoResponse.ok) {\n return {\n success: false,\n messages: ['Something went wrong'],\n };\n }\n const userInfo: UserInfo = userInfoResponse.body;\n userLoggedIn(userInfo);\n return { success: true };\n } catch (err) {\n return { success: false, messages: [`${err.message}`] };\n }\n },\n [userLoggedIn],\n );\n}\n","import React from 'react';\nimport { Typography, Link } from '@material-ui/core';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { EatonLinkButton } from '../button';\nimport { useStyles } from './styles';\nimport { DefaultPage } from '../default-page';\n\nexport const PureAccountCreatedView = (props: { existingUser: boolean }) => {\n const classes = useStyles();\n return (\n \n\n \n Account {props.existingUser ? 'Updated!' : 'Created!'}\n \n \n Your account has been {props.existingUser ? 'updated' : 'created'}.{' '}\n Log in and create your first transmission spec.\n \n {!props.existingUser && (\n \n SIGN IN\n \n )}\n \n );\n};\n","import React from 'react';\nimport { PureAccountCreatedView } from '../../components/create-account/pure-account-created-view';\n\nexport const AccountCreatedPage = (props: {}) => {\n return ;\n};\n\nexport const AccountUpdatedPage = (props: {}) => {\n return ;\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n resetPasswordRow: { marginTop: '32px', maxWidth: '670px' },\n error: { color: theme.palette.error.main, marginTop: '32px' },\n}));\n","import React, { useState } from 'react';\nimport { Typography } from '@material-ui/core';\nimport { EatonButton } from '../button';\nimport { useAuthDispatch } from '../reusable-components/components/AuthContext';\nimport { Link, Redirect, useLocation } from 'react-router-dom';\nimport * as Query from 'query-string';\nimport {\n CreatePasswordField,\n evaluatePassword,\n} from '../create-password-field';\nimport { useStyles } from './styles';\n\nexport const PureResetPassword = (props: {\n submit: (email: string) => void;\n passwordSet: 'unset' | 'setting' | 'set' | 'failed';\n}) => {\n const [password, setPassword] = useState('');\n const [passwordMatchError, setPasswordMatchError] = useState(false);\n const classes = useStyles();\n\n return (\n {\n e.preventDefault();\n await props.submit(password);\n }}\n >\n {props.passwordSet === 'set' ? (\n <>\n \n Success!\n \n \n Your new password has been set. You can now{' '}\n log in with your new password.\n \n \n ) : (\n <>\n \n Reset Your Password\n \n \n Enter your new password.\n \n \n \n Set Password\n \n\n {props.passwordSet === 'failed' && (\n \n Something went wrong. Please try again.\n \n )}\n \n )}\n \n );\n};\n\nexport const ResetPassword = () => {\n const { authenticatedRequest } = useAuthDispatch();\n const { search } = useLocation();\n const [passwordSet, setPasswordSet] = useState<\n 'unset' | 'setting' | 'set' | 'failed'\n >('unset');\n\n const { id, verificationCode } = Query.parse(search);\n if (!verificationCode || !id) {\n return ;\n }\n\n return (\n <>\n {\n setPasswordSet('setting');\n const set = async () => {\n const result = await authenticatedRequest({\n method: 'POST',\n url: `/api/security/reset-password/password`,\n data: {\n verificationCode,\n id,\n newPassword,\n },\n });\n if (result.ok) {\n setPasswordSet('set');\n } else {\n setPasswordSet('failed');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n set();\n }}\n />\n \n );\n};\n","import React from 'react';\nimport { DefaultPage } from '../../components/default-page';\nimport { ResetPassword } from '../../components/reset-password';\n\nexport const ResetPasswordPage = () => {\n return (\n \n \n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n email: { width: '370px' },\n forgotPasswordRow: { marginTop: '32px', maxWidth: '670px' },\n resetButton: { display: 'block', marginTop: '32px' },\n error: { color: theme.palette.error.main },\n}));\n","import React, { useState } from 'react';\nimport { Typography } from '@material-ui/core';\nimport { EatonButton } from '../button';\nimport { useAuthDispatch } from '../reusable-components/components/AuthContext';\nimport { EmailField, validateEmail } from '../email-field';\nimport { useStyles } from './styles';\n\nexport const PureForgotPassword = (props: {\n submit: (email: string) => void;\n emailSent: 'unsent' | 'sending' | 'sent' | 'failed';\n}) => {\n const [email, setEmail] = useState('');\n const isValidEmail = validateEmail(email);\n const classes = useStyles();\n return (\n {\n e.preventDefault();\n props.submit(email);\n }}\n >\n \n Reset Your Password\n \n \n Enter your email below, and we'll send you a link to reset your\n password.\n \n {\n setEmail(e);\n }}\n />\n \n Send Email\n \n {props.emailSent === 'sent' && (\n \n If an account exists for that address we have sent you a password\n reset link. Follow the instructions in the email to reset your\n password.\n \n )}\n {props.emailSent === 'failed' && (\n \n Something went wrong. Please try again.\n \n )}\n \n );\n};\n\nexport const ForgotPassword = () => {\n const { authenticatedRequest } = useAuthDispatch();\n const [emailSent, setEmailSent] = useState<\n 'unsent' | 'sent' | 'sending' | 'failed'\n >('unsent');\n return (\n <>\n {\n setEmailSent('sending');\n const send = async () => {\n const result = await authenticatedRequest({\n method: 'POST',\n url: `/api/security/reset-password/email/${email}`,\n });\n if (result.ok) {\n setEmailSent('sent');\n } else {\n setEmailSent('failed');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n send();\n }}\n />\n \n );\n};\n","import React from 'react';\nimport { DefaultPage } from '../../components/default-page';\nimport { ForgotPassword } from '../../components/forgot-password';\n\nexport const ForgotPasswordPage = () => {\n return (\n \n \n \n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => {\n return {\n pdfButton: {\n marginRight: '16px',\n },\n transmissionResult: {\n marginBottom: '32px',\n },\n surveyResponses: {\n marginBottom: '64px',\n },\n saveSpecTitleField: {\n marginBottom: '48px',\n marginTop: '48px',\n width: '100%',\n },\n inputText: {\n fontSize: '42px',\n },\n saveSpecRichTextEditorContainer: {\n width: '769px',\n paddingBottom: '32px',\n },\n saveSpecRichTextEditorEditorField: {\n height: '176px',\n },\n errorText: {\n color: theme.palette.error.main,\n paddingTop: '8px',\n paddingBottom: '8px',\n },\n saveSpecSubHeader: {\n marginBottom: '32px',\n },\n transmissionButtonLink: {\n color: theme.palette.common.white,\n textDecoration: 'none',\n },\n };\n});\n","import React from 'react';\n\nexport const PencilIcon = (props: { className?: string; }) => (\n \n \n \n);\n","import React, { useContext, useState, useEffect } from 'react';\nimport { EatonLinkButton, EatonButton } from '../button';\nimport { PDFGenerator } from '../pdf-generator';\nimport {\n TransmissionDisplay,\n MatchType,\n TransmissionResult,\n} from '../transmission-result';\nimport { SavedSurveyResult } from '../../domain/saved-result';\nimport { useStyles } from './styles';\nimport { Survey } from '../../domain/survey';\nimport { UnitContext } from '../unit-switcher';\nimport { debounce } from 'lodash';\nimport { DefaultPage } from '../default-page';\nimport {\n Typography,\n FormControl,\n Input,\n InputAdornment,\n} from '@material-ui/core';\nimport { SurveyResponses, Drawer } from '../survey-responses';\nimport { RichTextEditor } from '../rich-text-editor';\nimport { PureSurveyFooter } from '../pure-survey-footer';\nimport { PencilIcon } from '../../icons/pencil-icon';\nimport { useAuthDispatch } from '../reusable-components/components/AuthContext';\n\ntype TransmissionResult = {\n topChoice: TransmissionDisplay;\n runnerUp: TransmissionDisplay;\n};\n\nexport const SavedSpecView = (props: {\n savedSpec: SavedSurveyResult;\n _inTest?: boolean;\n}) => {\n const classes = useStyles();\n const unitContext = useContext(UnitContext);\n const { authenticatedRequest } = useAuthDispatch();\n\n const result: TransmissionResult = JSON.parse(props.savedSpec.result);\n const survey: Survey = JSON.parse(props.savedSpec.survey);\n\n const [originalFields, setOriginalFields] = useState<{\n title: string;\n notes: string | undefined;\n }>({ title: props.savedSpec.title, notes: props.savedSpec.notes });\n\n const [specTitle, setSpecTitle] = useState(props.savedSpec.title);\n const [pdfTitle, setPdfTitle] = useState(specTitle);\n const debounceTitle = debounce(setPdfTitle, 2000, { trailing: true });\n\n const [specNotes, setSpecNotes] = useState(\n props.savedSpec.notes || '',\n );\n const [pdfNotes, setPdfNotes] = useState(specNotes);\n const debounceNotes = debounce(setPdfNotes, 2000, { trailing: true });\n\n const [pdfLoading, setPdfLoading] = useState(false);\n const [saving, setSaving] = useState(false);\n const [submitError, setSubmitError] = useState(false);\n\n const canSave =\n (specTitle !== originalFields.title ||\n specNotes !== originalFields.notes) &&\n specTitle.trim().length > 0;\n\n useEffect(() => {\n if (pdfNotes === specNotes && pdfTitle === specTitle) {\n setPdfLoading(false);\n } else {\n setPdfLoading(true);\n }\n }, [specNotes, specTitle, pdfTitle, pdfNotes]);\n\n const saveSpec = async () => {\n setSaving(true);\n try {\n const response = await authenticatedRequest({\n method: 'PUT',\n url: `/api/surveyresult/${props.savedSpec.id}`,\n data: {\n notes: specNotes,\n title: specTitle,\n },\n });\n if (response.status < 300) {\n setSaving(false);\n setOriginalFields({ title: specTitle, notes: specNotes });\n } else {\n setSaving(false);\n setSubmitError(true);\n }\n } catch {\n setSaving(false);\n setSubmitError(true);\n }\n };\n\n const footerLhs = (\n \n Cancel\n \n );\n const footerRhs = (\n <>\n \n \n View Transmission Portfolio\n \n \n {!props._inTest && (\n \n )}\n \n Save\n \n \n );\n\n return (\n
\n \n
\n
\n \n \n {\n setSpecTitle(event.target.value);\n debounceTitle(event.target.value);\n }}\n onBlur={(event) => {\n setSpecTitle(event.target.value.trim());\n debounceTitle(event.target.value.trim());\n }}\n classes={{ input: classes.inputText }}\n endAdornment={\n \n \n \n }\n />\n \n \n \n {result.topChoice && result.runnerUp\n ? 'Transmission Recommendations'\n : 'Transmission Recommendation'}\n \n
\n {result.topChoice && (\n
\n \n
\n )}\n {result.runnerUp && (\n
\n \n \n \n
\n )}\n
\n {\n \n }\n
\n
\n {\n setSpecNotes(value);\n debounceNotes(value);\n }}\n />\n {submitError && (\n
\n \n An error occured during the save. Please try again.\n \n
\n )}\n
\n \n
\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { SavedSpecView } from '../../components/saved-spec';\nimport { useAuthDispatch } from '../../components/reusable-components/components/AuthContext';\nimport { SavedSurveyResult } from '../../domain/saved-result';\nimport { useHistory } from 'react-router';\nimport { CircularProgress } from '@material-ui/core';\n\nexport const SavedSpecPage = (props: { match: any }) => {\n const router = useHistory();\n const { authenticatedRequest } = useAuthDispatch();\n const [loadingSurvey, setLoadingSurvey] = useState(false);\n const [surveyData, setSurveyData] = useState(null);\n\n useEffect(() => {\n setLoadingSurvey(true);\n const getData = async () => {\n const result = await authenticatedRequest({\n method: 'GET',\n url: `/api/surveyresult/${props.match.params.id}`,\n });\n if (result.status < 300) {\n const resultBody = result.body as SavedSurveyResult;\n if (resultBody.version !== '1.0') {\n router.push('/error');\n } else {\n setSurveyData(result.body as SavedSurveyResult);\n setLoadingSurvey(false);\n }\n } else {\n router.push('/error');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n getData();\n }, []);\n\n return !loadingSurvey && surveyData !== null ? (\n \n ) : (\n
\n \n
\n );\n};\n","import { makeStyles, Theme } from '@material-ui/core';\n\nexport const useStyles = makeStyles((theme: Theme) => ({\n specTableContainer: {\n paddingBottom: '32px',\n },\n specTableHeader: {\n justifyContent: 'space-between',\n display: 'flex',\n alignItems: 'center',\n paddingTop: '52px',\n paddingBottom: '16px',\n },\n newSpecButton: { marginTop: '52px' },\n}));\n","import React from 'react';\nimport { Typography } from '@material-ui/core';\nimport { SpecTable } from '../spec-table';\nimport { EatonLinkButton } from '../button';\nimport { useStyles } from './styles';\n\nexport const AllSpecs = () => {\n const classes = useStyles();\n\n return (\n <>\n
\n
\n My Specs\n
\n \n Create new spec\n \n
\n
\n \n
\n \n );\n};\n","import React from 'react';\nimport { DefaultPage } from '../../components/default-page';\nimport { AllSpecs } from '../../components/all-specs';\n\nexport const MySpecsPage = () => {\n return (\n \n \n \n );\n};\n","import React from \"react\";\nimport { EatonLinkButton } from \"../../components/button\";\nimport { Typography } from \"@material-ui/core\";\n\nexport const InactivePage = () => {\n return (\n
\n \n You have been signed out due to inactivity.\n \n \n Please sign in again to access your saved results.\n \n \n Sign In\n \n
\n );\n};\n","import React from 'react';\nimport { EatonLinkButton } from '../../components/button';\nimport { Typography } from '@material-ui/core';\n\nexport const NotFoundPage = () => {\n return (\n
\n \n Page Not Found\n \n Take me back home\n
\n );\n};\n","import React from 'react';\r\nimport { Route, Switch, RouteProps } from 'react-router';\r\nimport { Layout } from './components/Layout';\r\nimport { Home } from './pages/home';\r\nimport { TransmissionData } from './pages/transmission/ListTransmission';\r\nimport './custom.css';\r\nimport { AddTransmissionPage } from './pages/transmission/AddTransmission';\r\nimport { EditTransmissionPage } from './pages/transmission/EditTransmission';\r\nimport {\r\n MuiThemeProvider,\r\n createMuiTheme,\r\n CssBaseline,\r\n} from '@material-ui/core';\r\nimport { Unauthorized } from './components/unauthorized';\r\nimport { SurveyPage } from './pages/survey/Survey';\r\nimport { DemoPage } from './pages/demo/Demo';\r\nimport { TSPTheme } from './styles/theme';\r\nimport { TempPage } from './pages/temp/Temp';\r\nimport { AppChrome } from './components/app-chrome';\r\nimport { ErrorPage } from './pages/error/Error';\r\nimport { Help } from './pages/help';\r\nimport { RegisterPage } from './pages/register';\r\nimport { ThemeOptions } from '@material-ui/core/styles/createMuiTheme';\r\nimport { LoginPage } from './pages/login';\r\nimport { PrivateRoute } from './components/reusable-components';\r\nimport {\r\n AccountCreatedPage,\r\n AccountUpdatedPage,\r\n} from './pages/account-created/AccountCreated';\r\nimport { ResetPasswordPage } from './pages/reset-password/ResetPassword';\r\nimport { ForgotPasswordPage } from './pages/forgot-password/ForgotPassword';\r\nimport { SavedSpecPage } from './pages/saved-spec';\r\nimport { MySpecsPage } from './pages/my-specs/MySpecs';\r\nimport IdleTimer from 'react-idle-timer';\r\nimport AuthContextProvider, {\r\n AuthStatus,\r\n AuthDispatchContext,\r\n AuthStateContext,\r\n} from './components/reusable-components/components/AuthContext';\r\nimport Cookie from 'js-cookie';\r\nimport { InactivePage } from './pages/inactive/Inactive';\r\nimport { NotFoundPage } from './pages/not-found/NotFound';\r\n\r\nconst withAdobeAnalytics =

(WrappedComponent: React.ComponentType

): React.ComponentType

=> {\r\n return class extends React.Component

{\r\n componentDidMount() {\r\n const script = document.createElement('script');\r\n script.src = 'https://assets.adobedtm.com/a98f37a3b42f/088fe54ee672/launch-db9e3f408ddc.min.js'\r\n script.async = true;\r\n document.head.appendChild(script);\r\n }\r\n\r\n render() {\r\n return ;\r\n }\r\n };\r\n};\r\nclass App extends React.Component {\r\n idleTimer: IdleTimer | null;\r\n onIdle: (logout: () => void) => void | undefined;\r\n _onIdle(logout: () => void) {\r\n if (this.idleTimer) {\r\n logout();\r\n }\r\n }\r\n\r\n constructor(props: React.ComponentProps) {\r\n super(props);\r\n this.idleTimer = null;\r\n this.onIdle = this._onIdle.bind(this);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {(stateValue) => (\r\n \r\n {(dispatchValue) => (\r\n \r\n \r\n {dispatchValue &&\r\n stateValue &&\r\n stateValue.authenticated === AuthStatus.Authenticated && (\r\n {\r\n this.idleTimer = ref;\r\n }}\r\n element={document}\r\n onIdle={(e) => this.onIdle(dispatchValue.timeout)}\r\n debounce={250}\r\n timeout={1000 * 60 * 60 * 1} // 1 hour\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n (\r\n \r\n )}\r\n />\r\n (\r\n \r\n ))}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withAdobeAnalytics(App);","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport { AuthContextProvider } from './components/reusable-components';\r\n\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n rootElement,\r\n);\r\n"],"sourceRoot":""}