{"version":3,"sources":["assets/img/svg/spinner.svg","assets/img/broken-cloud.png","assets/img/faces/profile.png","assets/img/sidebar-2.jpg","assets/img/background-1.jpg","utils/azuread/authConfig.js","stateManagement/constants/action-types.js","stateManagement/reducers/index.js","stateManagement/store/index.js","views/Authentication/Login.jsx","views/Authentication/Azure.jsx","assets/jss/material-dashboard-react.jsx","assets/jss/material-dashboard-react/components/buttonStyle.jsx","components/CustomButtons/Button.jsx","assets/jss/material-dashboard-react/dropdownStyle.jsx","assets/jss/material-dashboard-react/components/headerLinksStyle.jsx","components/Navbars/AdminNavbarLinks.jsx","assets/jss/material-dashboard-react/components/headerStyle.jsx","components/Navbars/Navbar.jsx","assets/jss/material-dashboard-react/components/footerStyle.jsx","components/Footer/Footer.jsx","assets/jss/material-dashboard-react/components/sidebarStyle.jsx","components/Sidebar/Sidebar.jsx","components/LoadingIndicator/LoadingIndicator.jsx","components/ErrorIndicator/ErrorIndicator.jsx","components/Grid/GridItem.jsx","components/Grid/GridContainer.jsx","assets/jss/material-dashboard-react/components/cardStyle.jsx","components/Card/Card.jsx","assets/jss/material-dashboard-react/components/cardHeaderStyle.jsx","components/Card/CardHeader.jsx","assets/jss/material-dashboard-react/components/cardIconStyle.jsx","components/Card/CardIcon.jsx","assets/jss/material-dashboard-react/components/cardFooterStyle.jsx","components/Card/CardFooter.jsx","utils/webRequestUtils.jsx","assets/jss/material-dashboard-react/views/dashboardStyle.jsx","views/Dashboard/PortalWidgets/PortalCasesWidget.jsx","views/Dashboard/uCallManagerWidgets/UCallManagerQueuesWidget.jsx","views/Dashboard/uCallManagerWidgets/UCallManagerAgentsWidget.jsx","views/Dashboard/uCallManagerWidgets/UCallManagerHolidaysWidget.jsx","views/Dashboard/Dashboard.jsx","assets/jss/material-dashboard-react/components/cardAvatarStyle.jsx","components/Card/CardAvatar.jsx","assets/jss/material-dashboard-react/components/cardBodyStyle.jsx","components/Card/CardBody.jsx","views/UserProfile/UserProfile.jsx","assets/jss/material-dashboard-react/components/tableStyle.jsx","components/Table/Table.jsx","views/TableList/TableList.jsx","assets/jss/material-dashboard-react/components/typographyStyle.jsx","components/Typography/Quote.jsx","components/Typography/Muted.jsx","components/Typography/Primary.jsx","components/Typography/Info.jsx","components/Typography/Success.jsx","components/Typography/Warning.jsx","components/Typography/Danger.jsx","views/Typography/Typography.jsx","assets/jss/material-dashboard-react/views/iconsStyle.jsx","views/Icons/Icons.jsx","assets/jss/material-dashboard-react/components/snackbarContentStyle.jsx","components/Snackbar/SnackbarContent.jsx","components/Snackbar/Snackbar.jsx","views/Notifications/Notifications.jsx","assets/jss/material-dashboard-react/components/customInputStyle.jsx","components/CustomInput/InputInfoButton.jsx","components/CustomInput/CustomInput.jsx","components/Table/TableJson.jsx","views/Cases/Cases.jsx","components/CustomInput/CustomSelect.jsx","views/Cases/NewCase.jsx","views/Cases/ClosedCases.jsx","views/Cases/CaseInfo/ClosedCaseDetails.jsx","views/Cases/CaseInfo/ClosedCaseActivities.jsx","views/Cases/CaseInfo/ClosedCaseInfoPage.jsx","views/Cases/CaseInfo/CaseDetails.jsx","views/Cases/CaseInfo/CaseActivities.jsx","views/Cases/CaseInfo/CaseInfoPage.jsx","views/Dashboard/PortalWidgets/PortalGeneralDocumentsWidget.jsx","views/Dashboard/PortalWidgets/PortalContractsWidget.jsx","views/Dashboard/PortalWidgets/PortalInvoicesWidget.jsx","views/Documents/DocumentsOverview.jsx","views/Documents/GeneralDocuments.jsx","views/Documents/Contracts.jsx","views/Documents/Invoices.jsx","views/Orders/Orders.jsx","views/Orders/GeneratePriceList.jsx","views/Orders/ApproveOrder.jsx","components/Table/TableJsonProductPicker.jsx","views/Orders/NewOrder/NewOrderConfirmation.jsx","views/Orders/NewOrder/NewOrderTenantSelect.jsx","views/Orders/NewOrder.jsx","views/Orders/NewAddOnOrder.jsx","views/Orders/OrderHistory.jsx","views/Dashboard/PortalWidgets/PortalSettingsGraphApiWidget.jsx","views/Settings/SettingsOverview.jsx","views/Settings/SettingsGraphApi.jsx","views/UCallManager/UCallManager.jsx","views/UCallManager/Queues/Queues.jsx","utils/graphApi/graphApiWebRequestUtils.jsx","views/UCallManager/Queues/ViewQueue/QueueDetails.jsx","views/UCallManager/Queues/ViewQueue/QueueBusinessHours.jsx","views/UCallManager/Queues/ViewQueue/QueueHolidays.jsx","views/UCallManager/Queues/ViewQueue/QueueAgents.jsx","views/UCallManager/Queues/ViewQueue/ViewQueue.jsx","views/UCallManager/Queues/NewQueue.jsx","components/CustomInput/CustomEntrySelect.jsx","views/UCallManager/Agents.jsx","views/UCallManager/Holidays.jsx","views/UCallManager/VoicePrompts.jsx","views/UCallManager/IVR/IVROverview.jsx","views/UCallManager/IVR/NewIVR/NewIVR.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRDetailsEditDialog.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRDetailsDeleteDialog.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRDetails.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRBusinessHoursAddDialog.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRBusinessHoursDeleteDialog.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRBusinessHours.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRMenuOptionsAddDialog.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRMenuOptionsEditDialog.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRMenuOptionsDeleteDialog.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRMenuOptions.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRHolidaysAddDialog.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRHolidaysDeleteDialog.jsx","views/UCallManager/IVR/IVRDetails/SubViews/IVRHolidays.jsx","views/UCallManager/IVR/IVRDetails/IVRDetailsOverview.jsx","views/UCallManager/AudioLibrary/AudioLibraryAddDialog.jsx","views/UCallManager/AudioLibrary/AudioLibraryDeleteDialog.jsx","views/UCallManager/AudioLibrary/AudioLibraryOverview.jsx","views/UCallManager/Recordings.jsx","views/UCallManager/Reporting.jsx","views/UCallManager/CallDetailRecords.jsx","routes.js","assets/jss/material-dashboard-react/layouts/dashboardStyle.jsx","layouts/Admin.jsx","stateManagement/actions/index.js","views/Authentication/ResetPassword.jsx","views/Authentication/SetNewPassword.jsx","layouts/External.jsx","index.js","variables/globalData.jsx","variables/constants.jsx","utils/portalPermissionUtils.jsx"],"names":["module","exports","__webpack_require__","p","b2cPolicies","msalConfig","auth","clientId","authority","signUpSignIn","forgotPassword","editProfile","knownAuthorities","redirectUri","postLogoutRedirectUri","navigateToLoginRequestUrl","cache","cacheLocation","storeAuthStateInCookie","system","loggerOptions","loggerCallback","level","message","containsPii","LogLevel","Error","console","error","Info","info","Verbose","debug","Warning","warn","loginRequest","scopes","ADD_ARTICLE","initialState","articles","rootReducer","state","arguments","length","undefined","action","type","Object","assign","concat","payload","store","createStore","AzureLogin","_useMsal","useMsal","instance","inProgress","accounts","isAuthenticated","useIsAuthenticated","logoutRequested","Cookies","get","InteractionStatus","None","react_default","a","createElement","Login_LoginForm","objectid","localAccountId","remove","logoutRedirect","loginRedirect","LoginForm","props","_this","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","login","setState","signinIn","requestBody","grant_type","username","password","fetch","Constants","ApiBaseUrl","method","headers","Content-Type","body","formurlencoded","then","response","json","result","status","error_description","set","access_token","expires","secure","sameSite","redirectToReferrer","catch","redirectUrl","URL","window","location","href","searchParams","Redirect","to","React","Component","withStyles","cardTitleWhite","color","marginTop","minHeight","fontWeight","fontFamily","marginBottom","textDecoration","AzureAuthentication","Login_AzureLogin","hexToRgb","input","replace","test","first","second","last","toUpperCase","parseInt","transition","container","height","paddingRight","paddingLeft","marginRight","marginLeft","defaultFont","lineHeight","primaryColor","secondaryColor","warningColor","dangerColor","successColor","infoColor","roseColor","grayColor","boxShadow","primaryBoxShadow","infoBoxShadow","successBoxShadow","warningBoxShadow","dangerBoxShadow","roseBoxShadow","warningCardHeader","objectSpread","background","successCardHeader","dangerCardHeader","infoCardHeader","primaryCardHeader","roseCardHeader","defaultBoxShadow","margin","paddingTop","borderTop","border","borderRadius","padding","title","& small","buttonStyle","& a","button","minWidth","backgroundColor","position","fontSize","textTransform","letterSpacing","willChange","textAlign","whiteSpace","verticalAlign","touchAction","cursor","&:hover,&:focus","& .fab,& .fas,& .far,& .fal, &.material-icons","display","top","& svg","width","&$justIcon","& .fab,& .fas,& .far,& .fal,& .material-icons","transform","left","white","&,&:focus,&:hover","rose","primary","secondary","success","warning","danger","simple","&$rose","&,&:focus,&:hover,&:visited","&$primary","&$secondary","&$info","&$success","&$warning","&$danger","transparent","disabled","opacity","pointerEvents","lg","sm","round","block","link","&,&:hover,&:focus","justIcon","& .fab,& .fas,& .far,& .fal,& svg,& .material-icons","&$lg","&$sm","_ref","_classNames","esm_extends","classes","children","size","className","muiClasses","rest","objectWithoutProperties","btnClasses","classNames","defineProperty","Button_default","dropdownStyle","theme","buttonLink","breakpoints","down","links","zIndex","linkText","popperClose","pooperResponsive","float","WebkitBoxShadow","pooperNav","& > div","& ul li","whiteColor","&:hover","dropdown","listStyle","WebkitBackgroundClip","backgroundClip","dropdownItem","WebkitTransition","MozTransition","OTransition","MsTransition","clear","headerLinksStyle","_notifications","_manager","_searchWrapper","search","paddingBottom","& input","& > span","justifyContent","searchButton","searchIcon","notifications","up","right","manager","searchWrapper","HeaderLinks","handleToggle","open","handleProfileMenuToggle","openProfileMenu","handleClose","event","anchorEl","contains","target","handleProfileMenuClose","_this2","_this$state","Popper_default","disablePortal","TransitionProps","placement","Grow_default","id","style","transformOrigin","Paper_default","ClickAwayListener_default","onClickAway","MenuList_default","role","MenuItem_default","onClick","CustomButtons_Button","buttonRef","node","innerWidth","aria-owns","aria-haspopup","aria-label","Person_default","icons","Hidden_default","mdUp","implementation","globalData","loggedInUser","FullName","_ref2","NavLink","headerStyle","appBar","borderBottom","flex","appResponsive","appBarClasses","AppBar_default","Toolbar_default","name","routes","map","prop","key","path","pathname","rtlActive","rtlName","makeBrand","smDown","AdminNavbarLinks","IconButton_default","handleDrawerToggle","Menu_default","footerStyle","footer","bottom","list","inlineBlock","Date","getYear","sidebarStyle","_objectSpread2","_drawerPaperRTL","drawerPaper","visibility","overflowY","drawerPaperRTL","logo","&:after","content","logoLink","&,&:hover","textOnlyLink","logoLinkRTL","logoImage","maxHeight","img","backgroundSize","backgroundPosition","item","&:hover,&:focus,&:visited,&","itemLink","itemIcon","itemIconRTL","itemText","subItemText","itemTextRTL","whiteFont","purple","blue","green","orange","red","neutral","sidebarWrapper","overflow","overflowScrolling","activePro","activeRoute","routeName","indexOf","image","logoText","List_default","displayRoute","PMUtils","userHasAllRequiredPermissions","portalPermissionsMinimum","PortalPermissions","userHasAnyRequiredPermissions","portalPermissions","parentRoute","listItemClasses","whiteFontClasses","isLink","document","cookie","ListItem_default","icon","Icon_default","ListItemText_default","disableTypography","activeClassName","brand","Drawer_default","variant","anchor","paper","onClose","ModalProps","keepMounted","LoadingIndicator","loadingText","fullScreen","bigSpinner","src","Spinner","alt","CircularProgress_default","ErrorIndicator","errorText","ErrorLogo","grid","Grid_default","cardStyle","card","flexDirection","wordWrap","cardPlain","cardProfile","cardChart","& p","plain","profile","chart","cardClasses","cardHeaderStyle","cardHeader","&$cardHeaderPlain,&$cardHeaderIcon,&$cardHeaderStats,&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader","&:first-child","&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader","&:not($cardHeaderIcon)","&$cardHeaderStats svg","&$cardHeaderStats i,&$cardHeaderStats .material-icons","&$cardHeaderStats$cardHeaderIcon","cardHeaderPlain","cardHeaderStats","& $cardHeaderIcon","& h1,& h2,& h3,& h4,& h5,& h6","cardHeaderIcon","& i,& .material-icons","stats","cardHeaderClasses","cardIconStyle","cardIcon","cardIconClasses","cardFooterStyle","cardFooter","alignItems","cardFooterProfile","cardFooterPlain","cardFooterStats","cardFooterChart","cardFooterClasses","apiGet","apiPath","token","Authorization","data","apiPost","apiPostJson","jsonBody","JSON","stringify","apiPostFormData","formData","apiPostFileJson","blob","dashboardStyle","successText","upArrowCardCategory","cardCategory","cardCategoryWhite","cardTitle","allowedPortalPermissions","PortalCasesWidget","isLoaded","casesCount","getCasesCount","ErrorIndicator_ErrorIndicator","Card_Card","Card_CardHeader","Card_CardIcon","AllInbox_default","Card_CardFooter","LoadingIndicator_LoadingIndicator","requiredPortalPermissions","UCallManagerQueuesWidget","queuesCount","getQueuesCount","ViewHeadline_default","UCallManagerAgentsWidget","agentsCount","getAgentsCount","People_default","UCallManagerHolidaysWidget","holidaysCount","getHolidaysCount","Today_default","allowedPortalCasesPermissions","requiredUCallManagerPermissions","allowedUCallManagerQueuesPermissions","allowedUCallManagerAgentsPermissions","allowedUCallManagerHolidaysPermissions","Dashboard","Divider_default","light","Grid_GridContainer","Grid_GridItem","xs","md","xl","PortalWidgets_PortalCasesWidget","uCallManagerWidgets_UCallManagerQueuesWidget","uCallManagerWidgets_UCallManagerAgentsWidget","uCallManagerWidgets_UCallManagerHolidaysWidget","cardAvatarStyle","cardAvatar","&$cardAvatarProfile img","cardAvatarProfile","maxWidth","&$cardAvatarPlain","cardAvatarPlain","cardAvatarClasses","cardBodyStyle","cardBody","WebkitBoxFlex","cardBodyPlain","cardBodyProfile","cardBodyClasses","Card_CardAvatar","avatar","Card_CardBody","Organization","Name","Email","tableStyle","warningTableHeader","primaryTableHeader","dangerTableHeader","successTableHeader","infoTableHeader","roseTableHeader","grayTableHeader","table","borderSpacing","borderCollapse","tableHeadCell","tableCell","tableButtonCell","tableResponsive","spacing","unit","overflowX","dialogContent","CustomTable","tableHead","tableData","tableHeaderColor","Table_default","TableHead_default","TableRow_default","TableCell_default","TableBody_default","defaultProps","&,& a,& a:hover,& a:focus","& a,& a:hover,& a:focus","Table_Table","typographyStyle","defaultFontStyle","defaultHeaderMargins","quote","borderLeft","quoteText","fontStyle","quoteAuthor","mutedText","primaryText","infoText","warningText","dangerText","text","author","visible","typo","note","Typography_Quote","Typography_Muted","Typography_Primary","Typography_Info","Typography_Success","Typography_Warning","Typography_Danger","iconsStyle","iframe","iframeContainer","rel","only","snackbarContentStyle","root","flexWrap","top20","top40","close","iconButton","infoIcon","successIcon","warningIcon","dangerIcon","primaryIcon","roseIcon","iconMessage","actionRTL","messageClasses","Close_default","SnackbarContent_default","place","closeNotification","Snackbar_default","anchorOrigin","vertical","horizontal","ContentProps","Notifications","tl","tc","tr","bl","bc","br","setTimeout","clearTimeout","x","alertTimeout","bind","Snackbar_SnackbarContent","AddAlert","justify","fullWidth","showNotification","components_Snackbar_Snackbar","customInputStyle","&:before","underline","&:hover:not($disabled):before,&:before","borderColor","borderWidth","underlineError","underlineSuccess","labelRoot","labelRootError","labelRootSuccess","feedback","formControl","Info_default","_classNames2","formControlProps","labelText","labelProps","inputProps","multiline","rows","onValueChange","labelClasses","underlineClasses","FormControl_default","InputLabel_default","htmlFor","Input_default","onChange","value","endAdornment","CustomInput_InputInfoButton","Clear_default","Check_default","CustomTableJson","tableHeadDataMap","tableDayOfWeekColumns","tableNumericColumns","tableDateColumns","tableIgnoreSortColumns","isClickable","onClickLink","selectableRows","selectedItems","infoFieldIndex","infoFieldLinkText","infoModalTitle","onListItemClicked","onApproveButtonClicked","onDisapproveButtonClicked","onDeleteButtonClicked","onEditButtonClicked","initialOrderBy","initialSortingOrder","isSortable","_React$useState","useState","_React$useState2","slicedToArray","tempToggle","setTempToggle","_React$useState3","_React$useState4","localSelectedItems","setLocalSelectedItems","_React$useState5","_React$useState6","setOpen","_React$useState7","_React$useState8","modalDescription","setModalDescription","_React$useState9","_React$useState10","sortingOrder","setSortingOrder","_React$useState11","_React$useState12","orderBy","setOrderBy","handleClickOpen","description","compareDataAscending","obj1","obj2","valueToCompare1","valueToCompare2","includes","orderBySplit","split","splitDateTime1","splitDateTime2","date1","date2","time1","time2","daysOfWeek","MON","TUE","WED","THU","FRI","SAT","SUN","value1","value2","toString","toLowerCase","RouterTableRow","withRouter","rowKey","hoverStyle","listItem","history","hover","selected","matches","match","newLink","parameter","listItemValue","push","itemIndex","splice","jsonObject","keys","propertyValueArray","i","splitKeys","parentObject","createPropertyArrayFromJsonObject","property","index","CheckCircleOutline_default","HighlightOff_default","Edit_default","Delete_default","Dialog_default","scroll","aria-labelledby","DialogTitle_default","DialogContent_default","DialogContentText_default","DialogActions_default","onRequestSort","createSortHandler","dataColumnName","sortDirection","TableSortLabel_default","active","direction","orderByProperty","sort","sortTableByProperty","Cases","cases","Typography_default","align","Add_default","TableJson","customSelectStyle","selectedValue","values","keyColumn","valueColumn","NativeSelect_default","NewCase","flattenSubjectTree","parentSubject","subjects","ChildSubjects","childSubject","childChildSubject","Title","createNewCase","creatingCase","caseTitle","caseType","caseSubject","caseEntitlement","caseDescription","caseOriginCodes","originCodeKey","originCode","Key","SubjectId","CaseTypeKey","EntitlementId","Description","CaseOriginKey","caseCreated","createCaseError","caseTypes","entitlements","formattedSubjects","SubjectTree","CaseTypes","Entitlements","CaseOriginCodes","Message","_this3","_this$state2","onSubmit","e","preventDefault","CustomInput_CustomInput","defaultValue","required","autoFocus","CustomInput_CustomSelect","ClosedCases","ClosedCaseDetails","getOwnerDetails","isLoadedOwnerDetails","isCaseOwner","handleConfirmDialogOpen","confirmDialogOpen","handleConfirmDialogClose","toastColor","toastText","toastOpen","assertThisInitialized","closingCase","caseClosed","caseDetails","Status","TicketNumber","Type","PrimaryContact","Origin","Subject","DateCreated","responsiveDialog","ClosedCaseActivities","handleReplyDialogOpen","replyDialogOpen","handleReplyDialogClose","selectedFilesText","getActivities","isLoadedActivities","caseActivities","setSelectedFilesText","fileName","fileInput","getElementById","files","fileSize","parseFloat","toFixed","pop","sendingPortalresponse","replySubject","replyMessage","rightIcon","ClosedCaseInfoPage","CaseInfo_ClosedCaseDetails","CaseInfo_ClosedCaseActivities","CaseDetails","closeCase","Entitlement","CaseActivities","sendPortalresponse","ticketNumber","formDataRequestBody","FormData","append","filesToUpload","file","click","Publish_default","multiple","Send_default","CaseInfoPage","CaseInfo_CaseDetails","CaseInfo_CaseActivities","PortalGeneralDocumentsWidget","FolderOpen_default","requiredGeneralDocsPermissions","requiredContractsPermissions","requiredInvoicesPermissions","DocumentsOverviewPage","PortalWidgets_PortalGeneralDocumentsWidget","PortalContractsWidget","PortalInvoicesWidget","GeneralDocumentsPage","downloadDocuments","selectedDocuments","downloading","createObjectURL","download","generalDocs","triggerRender","ContractsPage","downloadContracts","selectedContracts","contracts","InvoicesPage","downloadInvoices","selectedInvoices","invoices","OrdersPage","orders","appendDescriptionToOrders","newOrders","orderIndex","order","productsDescription","productIndex","ApproveOrder","approvingOrder","removingOrder","orderToRemove","orderToApprove","approveOrderDialogOpen","removeOrderDialogOpen","generatingList","generateList","toggleConfirmDialogOpen","isOpen","toggleRemoveOrderDialogOpen","toggleApproveOrderDialogOpen","getOrders","OrderId","_this4","_this5","_this$state3","removeOrder","approveOrder","clickedItem","amountEditFieldIndex","minimumAmountColumnName","maximumAmountColumnName","amountUnitColumnName","amountFieldStyle","placeholder","NewOrderConfirmation","_this$props","products","tenant","agreementAccepted","onAgreementAccept","productNameFieldKey","product","Amount","FormControlLabel_default","control","Checkbox_default","checked","label","NewOrderTenantSelect","onSelectTenant","tenants","invisibleStyle","previousTabButtonStyle","nextTabButtonStyle","NewOrderPage","getOffers","selectedTenant","offersAreLoaded","offers","previousStepClicked","activeStepIndex","newStepIndex","setPreviousAndNextButtonVariables","scrollTop","validateFormAndGoToNextStep","selectedTenantId","previousSelectedTenantId","selectedOffers","confirmOrder","nextStepClicked","stepIndex","previousButtonStyle","previousButtonText","nextButtonText","setNewSelectedTenantValues","tenantId","tenantName","ID","TenantName","selectedTenantName","creatingOrder","TenantId","Products","orderCreated","setSearch","searchTerm","searchText","filter","tenantIdsAreLoaded","_this$state4","Stepper_default","activeStep","alternativeLabel","Step_default","StepLabel_default","NewOrder_NewOrderTenantSelect","Fragment","maxLength","TableJsonProductPicker","NewOrder_NewOrderConfirmation","ArrowBackIos_default","Done_default","ArrowForwardIos_default","NewAddOnOrderPage","OrderHistoryPage","PortalSettingsGraphApiWidget","Code_default","requiredPermissions","allowedGraphApiPermissions","SettingsOverview","PortalWidgets_PortalSettingsGraphApiWidget","SettingsGraphApi","redirectUserToGraphAPIAuthorization","getGraphApiTokenByAuthorizationCode","code","getGraphApiConnectedUserInfo","checkingGraphApiConnection","logoutFromGraphAPI","connectedToGraph","connectedUserEmail","connectedUserFullName","graphToken","mail","displayName","getNewGraphApiToken","log","UCallManagerPage","QueuesPage","queues","getQueues","textCursive","Graph_Api_Base_Url","Graph_Api_Base_Url_Beta","graphApiGet","useBeta","isRetry","baseUrl","AntTabs","indicator","Tabs","AntTab","typography","fontWeightRegular","join","&$selected","fontWeightMedium","&:focus","Tab_default","disableRipple","QueueDetails","getDateString","daysToAdd","dateToday","year","getFullYear","month","getMonth","day","getDate","toggleUpdateQueueDialogOpen","updateQueueDialogOpen","toggleFetchShiftsDialogOpen","fetchShiftsDialogOpen","isLoadedDetails","isLoadedMeta","isLoadedTeams","selectedTab","foundTeams","queueDetails","newQueueMeta","removingQueue","queueToRemove","queueRemoved","updateQueueName","updateMaxMembers","updatePhoneNumber","updateTimeOut","updateRetry","updateAbsoluteTimeOut","updateServiceLevel","updateHuntWhenAway","updateShowOnWallboard","updateStrategy","updateJoinEmpty","updateLeaveWhenEmpty","updateNextQueue","updateNextQueueOutsideBusinessHours","updateAudioRecording","updateMusicOnHold","updateClosedSound","updateOpenSound","updateMSTeamsTeamId","updatingQueue","fetchingShifts","dateFrom","dateTo","getQueueDetails","getNewQueueMeta","queueMeta","currentlyViewingQueue","QueueType","getTeamsFromGraphApi","setQueueUpdateData","QueueName","MaxMembers","PhoneNumber","TimeOut","Retry","AbsoluteTimeOut","ServiceLevel","HuntWhenAway","Strategy","JoinEmpty","LeaveWhenEmpty","NextQueue","NextQueueOutsideBusinessHours","AudioRecording","MusicOnHold","ClosedSound","ShowOnWallboard","OpenSound","MSTeamsTeamId","queueData","StrategyType","_this6","newSelectedTab","_this7","PhoneNumbers","updateQueue","pattern","QueueStrategies","QueueNames","OnHoldMusicSounds","OpenSounds","ClosedSounds","removeQueue","demo1","selectedTabChanged","DisplayName","QueueBusinessHours","toggleAddBusinessHoursDialogOpen","addBusinessHoursDialogOpen","monChecked","tueChecked","wedChecked","thuChecked","friChecked","satChecked","sunChecked","addingBusinessHours","removingBusinessHours","hours","openTime","closeTime","businessHoursToRemove","getQueueBusinessHours","hoursList","hoursRecord","newHoursRecord","DayOfWeek","OpenHours","StartTime","EndTime","queueName","selectedDays","days","splitStartEndtime","addBusinessHours","FormGroup_default","removeBusinessHours","Schedule_default","QueueHolidays","toggleAddHolidaysDialogOpen","addHolidaysDialogOpen","isLoadedQueueHolidays","isLoadedAllHolidays","addingHoliday","removingHoliday","queueHolidays","allHolidays","holidayIdToAssign","holidayToRemove","getQueueHolidays","getAllHolidays","holidayId","addHoliday","removeHoliday","QueueAgents","toggleAddAgentDialogOpen","addAgentDialogOpen","toggleUpdateAgentDialogOpen","updateAgentDialogOpen","isLoadedQueueAgents","isLoadedAllAgents","addingAgent","updatingAgent","removingAgent","queueAgents","allAgents","agentIdToAssign","agentPenalty","agentToRemove","getQueueAgents","getAllAgents","agentId","penalty","AgentID","Penalty","agentID","agentToUpdate","_this8","addAgent","updateAgent","removeAgent","setUpdateAgentStateValues","ViewQueuePage","ViewQueue_QueueDetails","ViewQueue_QueueBusinessHours","ViewQueue_QueueHolidays","ViewQueue_QueueAgents","NewQueue","queueType","maxMembers","phoneNumber","strategy","timeOut","retry","absoluteTimeOut","serviceLevel","huntWhenAway","joinEmpty","leaveWhenEmpty","nextQueue","nextQueueOutsideBusinessHours","audioRecording","onHoldMusic","closedSound","openSound","showOnWallboard","selectedTeam","showShiftQueueProperties","creatingQueue","queueCreated","createDefaultQueue","createShiftQueue","createQueue","QueueTypes","showSpecificQueueTypeProperties","onPress","selectedName","user","userPrincipalName","CheckCircle_default","AgentsPage","handleAgentSelection","selectedOffice365User","foundUserPrincipalName","toggleAddAgentsDialogOpen","addAgentsDialogOpen","toggleUpdateAgentsDialogOpen","updateAgentsDialogOpen","foundOffice365Users","getOffice365UsersFromGraphApi","getFilteredOffice365UsersFromGraphApi","interfacesLoaded","agentsLoaded","loadingOffice365Users","interfaces","agents","oldAgent","agent","number","fallbackNumber","selectedInterfaceTypeId","isAlwaysAvailableChecked","isRingInUseChecked","getInterfaces","getAgents","fetchedAgents","newAgentRecord","Agent","Number","IsAlwaysAvailable","FallbackNumber","Office365UserId","UserPrincipalName","InterfaceType","RingInUse","InterfaceTypeId","OldAgent","office365Users","office365User","newUserRecord","graphApiUsersComparer","user1","user2","_this9","_this$state5","handleSearch","CustomInput_CustomEntrySelect","HolidaysPage","toggleUpdateHolidaysDialogOpen","updateHolidaysDialogOpen","updatingHoliday","holidays","minHolidayDate","newHolidayDate","newHolidayName","holidayToUpdate","getHolidays","date","sipcustomer","PrimarySipCustomer","substr","formatDate","min","updateHoliday","setUpdateData","VoicePromptsPage","IVROverviewPage","ivrs","getIVRs","CallSplit_default","NewIVR","newIVRMeta","ivrName","isRoot","linkedPhoneNumber","parentIVR","ivrPrompt","welcomeVoicePrompt","closedVoicePrompt","fallbackQueue","creatingIVR","ivrCreated","getNewIVRMeta","IVRName","IsRoot","LinkedPhoneNumber","ParentIVR","IVRPrompt","WelcomeVoicePrompt","ClosedVoicePrompt","FallbackQueue","createIVR","IVRNames","Queues","AudioFiles","IVRDetailsEditDialog","updatingIVR","phoneNumbers","setStateValues","ivrDetails","updateIVRMeta","onSubmitSuccess","onSubmitError","submitForm","onDialogClose","IVRDetailsDeleteDialog","removingIVR","ivrRemoved","ivrToRemove","removeIVR","IVRDetails","toggleDialogOpen","dialogOpen","dialogType","getIVRDetails","getUpdateIVRMeta","deleteConfirmDialogOpen","SubViews_IVRDetailsEditDialog","SubViews_IVRDetailsDeleteDialog","openIVRUpdateDialog","openIVRDeleteDialog","IVRDetails_AntTabs","IVRDetails_AntTab","IVRBusinessHoursAddDialog","OpenTime","ClosedTime","Days","IVRBusinessHoursDeleteDialog","businessHoursID","removeIVRBusinessHours","IVRBusinessHours","selectedBusinessHours","getIVRBusinessHours","SubViews_IVRBusinessHoursAddDialog","SubViews_IVRBusinessHoursDeleteDialog","openBusinessHoursAddDialog","openBusinessHoursDeleteDialog","IVRMenuOptionsAddDialog","addingMenuOption","menuOptionIndex","actionType","acknowledgeAudio","Option","ActionType","Action","AcknowledgeAudio","IVRname","existingOptionIndices","ivrMenuOptionsMeta","ActionTypes","AgentNames","IVRMenuOptionsEditDialog","updatingMenuOption","menuOptionData","Value","IVRMenuOptionsDeleteDialog","removingMenuOption","menuOptionID","removeIVRMenuOption","IVRMenuOptions","isLoadedOptions","ivrMenuOptions","selectedMenuOption","getIVRMenuOptionsMeta","getIVRMenuOptions","menuOptionIndices","SubViews_IVRMenuOptionsAddDialog","getExistingMenuOptionIndices","SubViews_IVRMenuOptionsEditDialog","SubViews_IVRMenuOptionsDeleteDialog","Dialpad_default","openMenuOptionAddDialog","openMenuOptionDeleteDialog","openMenuOptionUpdateDialog","IVRHolidaysAddDialog","selectedHolidayID","HolidayID","IVRHolidaysDeleteDialog","IVRHolidays","isLoadedIVRHolidays","selectedHoliday","getIVRHolidays","SubViews_IVRHolidaysAddDialog","SubViews_IVRHolidaysDeleteDialog","openHolidaysAddDialog","openHolidaysDeleteDialog","IVRDetailsOverviewPage","SubViews_IVRDetails","SubViews_IVRBusinessHours","SubViews_IVRHolidays","SubViews_IVRMenuOptions","AudioLibraryAddDialog","existingAudioFiles","Filename","uploadingFiles","ReportProblemOutlined_default","AudioLibraryDeleteDialog","removingAudioFile","audioFileName","removeAudioFile","AudioLibraryOverviewPage","getAudioFiles","audioFiles","selectedAudioFile","AudioLibrary_AudioLibraryAddDialog","AudioLibrary_AudioLibraryDeleteDialog","Equalizer_default","openAudioFileAddDialog","openAudioFileDeleteDialog","RecordingsPage","getAudioRecordings","selectedDay","selectedMonth","selectedHour","recordings","loadAudioFile","callRecording","apiGetFile","FileName","FileExtension","Blob","blobUrl","audioPlayerSource","audio","load","controls","CallTo","ReportingPage","reportEmbedData","getDashboardReport","loadReport","AccessToken","EmbedURL","ReportID","accessToken","embedUrl","embedReportId","config","screenWidth","Math","max","documentElement","clientWidth","models","powerbi","tokenType","TokenType","Embed","permissions","Permissions","Read","settings","filterPaneEnabled","navContentPaneEnabled","layoutType","LayoutType","MobilePortrait","reportContainer","$","embed","CallDetailRecordsPage","dashboardRoutes","Home","component","DashboardPage","AllInbox","CasesPage","NewCasePage","ClosedCasesPage","Folder","ShoppingCart","ApproveOrderPage","GeneratePriceListPage","UserProfile","Call","NewQueuePage","NewIVRPage","CloudDone","DNS","CloudQueue","Settings","SettingsOverviewPage","SettingsGraphApiPage","TableList","LibraryBooks","Typography","BubbleChart","Icons","NotificationsPage","appStyle","_content","wrapper","mainPanel","switchRoutes","Switch","Route","exact","handleImageClick","handleColorClick","handleFixedClick","fixedClasses","mobileOpen","resizeFunction","hasImage","navigator","platform","PerfectScrollbar","refs","addEventListener","removeEventListener","components_Sidebar_Sidebar","ref","Navbar","Footer_Footer","connect","dispatch","addArticle","article","ResetPasswordPage","submitEmail","email","submittingEmail","requestSuccessful","SetNewPasswordPage","submitPasswords","submittingPasswords","checkPasswordsAreEqual","registrationKey","RegistrationKey","Password","redirectToLoginPageCountDown","timerCounter","timer","setInterval","loginPageRedictCount","clearInterval","repeatPassword","minLength","External","containerDivStyle","BackgroundImage","backgroundAttachment","ResetPassword","SetNewPassword","hist","createBrowserHistory","msalInstance","PublicClientApplication","ReactDOM","render","Router","msal_react_esm","react_redux_es","Admin","allowedPermissions","actualPermissions"],"mappings":"6EAAAA,EAAAC,QAAiBC,EAAAC,EAAuB,yDCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,4DCAxCH,EAAAC,QAAA,skICAAD,EAAAC,QAAiBC,EAAAC,EAAuB,2DCAxCH,EAAAC,QAAiBC,EAAAC,EAAuB,iQCY3BC,EAiBQ,yCAQRC,EAAa,CACtBC,KAAM,CACFC,SAAU,uCACVC,UAtBS,CACTC,aAAc,CACVD,UAAW,iHAEfE,eAAgB,CACZF,UAAW,iHAEfG,YAAa,CACTH,UAAW,gHAcoBC,aAAaD,UAChDI,iBAAkB,CAACR,GACnBS,YAAa,SACbC,sBAAuB,IACvBC,2BAA2B,GAE/BC,MAAO,CACHC,cAAe,iBACfC,wBAAwB,GAE5BC,OAAQ,CACJC,cAAe,CACXC,eAAgB,SAACC,EAAOC,EAASC,GAC7B,IAAIA,EAGJ,OAAQF,GACJ,KAAKG,IAASC,MAEV,YADAC,QAAQC,MAAML,GAElB,KAAKE,IAASI,KAEV,YADAF,QAAQG,KAAKP,GAEjB,KAAKE,IAASM,QAEV,YADAJ,QAAQK,MAAMT,GAElB,KAAKE,IAASQ,QAEV,YADAN,QAAQO,KAAKX,QAcxBY,EAAe,CACxBC,OAAQ,sBClFCC,EAAc,cCErBC,EACN,CACIC,SAAU,IAgBCC,MAbf,WACA,IADqBC,EACrBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAD6BJ,EAAcO,EAC3CH,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EACI,OAAOC,EAAOC,MAEV,KAAKT,EACD,OAAOU,OAAOC,OAAO,GAAIP,EAAO,CAC5BF,SAAUE,EAAMF,SAASU,OAAOJ,EAAOK,WAE/C,QACI,OAAOT,ICXJU,EAFDC,YAAYZ,sHCmCba,EAAa,WAAM,IAAAC,EAEGC,cAAzBC,EAFsBF,EAEtBE,SAAUC,EAFYH,EAEZG,WAEVC,EAAaH,cAAbG,SAEFC,EAAkBC,cAElBC,EAAkBC,IAAQC,IAAI,iBAGpC,GAAIN,IAAeO,IAAkBC,MAASN,GAIzC,GAAIA,EACT,CACE,GAAuB,QAAnBE,EAMF,OACEK,EAAAC,EAAAC,cAACC,EAAD,CAAWC,SAAUZ,EAAS,GAAGa,iBALnCT,IAAQU,OAAO,iBACfhB,EAASiB,eAAe,CAAE3D,sBAAuB,YARnD0C,EAASkB,cAAcvC,IAkBrBwC,cAEJ,SAAAA,EAAYC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAJ,IACEE,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA4B,GAAAO,KAAAH,KAAMH,KAgBRO,MAAQ,WACR,IACUb,EAAaO,EAAKpC,MAAlB6B,SAERO,EAAKO,SAAS,CAACC,UAAU,IAEzB,IAAIC,EACJ,CACEC,WAAa,WACbC,SAAWlB,EACXmB,SAAW,IAIbC,MAAMC,IAAUC,WAAa,aAC7B,CACEC,OAAQ,OACRC,QACA,CACEC,eAAgB,qCAElBC,KAAMC,IAAeX,KAEtBY,KAAK,SAACC,GAELA,EAASC,OAAOF,KAAK,SAACG,GAEpB,GAAwB,MAApBF,EAASG,OAEX,MAAM,IAAI5E,MAAM2E,EAAOE,mBAGzBzC,IAAQ0C,IAAI,OAAQH,EAAOI,aAAc,CAACC,QAAS,EAAGC,QAAQ,EAAMC,SAAU,QAE9E/B,EAAKO,SAAS,iBAAO,CACnByB,oBAAoB,EACpBxB,UAAU,OAGbyB,MAAM,SAAClF,GAENiD,EAAKO,SACL,CACExD,MAAOA,EAAML,QACb8D,UAAU,SA1DhBR,EAAKpC,MACL,CACEb,MAAO,KACPyD,UAAU,EACVwB,mBAAoB,KACpBvC,SAAUM,EAAMN,UAGS,IAAvBO,EAAKpC,MAAM6B,UACbO,EAAKM,QAZTN,wEAuEE,IAA2B,IAFIE,KAAKtC,MAA5BoE,mBAGR,CACE,IACIE,EADM,IAAIC,IAAIC,OAAOC,SAASC,MACZC,aAAarD,IAAI,OAEvC,OAAIgD,EAEK7C,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAIP,IAId7C,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAG,uBArFJC,IAAMC,WA4FfC,IAvIf,CACEC,eACA,CACEC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,SA8HLR,CAAmB9C,GC5JnB,SAASuD,IAEpB,OAAQhE,EAAAC,EAAAC,cAAC+D,EAAD,gVCiBNC,GAAW,SAAAC,GAEfA,GADAA,GAAgB,IACFC,QAAQ,IAAK,IAE3B,IADe,eACDC,KAAKF,IAA4B,IAAjBA,EAAM1F,QAAiC,IAAjB0F,EAAM1F,OACxD,MAAM,IAAIjB,MAAM,mCAElB,GAAqB,IAAjB2G,EAAM1F,OAAc,CACtB,IAAI6F,EAAQH,EAAM,GACdI,EAASJ,EAAM,GACfK,EAAOL,EAAM,GACjBA,EAAQG,EAAQA,EAAQC,EAASA,EAASC,EAAOA,EAGnD,IAAIF,GADJH,EAAQA,EAAMM,YAAYN,IACR,GAAKA,EAAM,GACzBI,EAASJ,EAAM,GAAKA,EAAM,GAC1BK,EAAOL,EAAM,GAAKA,EAAM,GAC5B,OACEO,SAASJ,EAAO,IAChB,KACAI,SAASH,EAAQ,IACjB,KACAG,SAASF,EAAM,KAUbG,GAAa,CACjBA,WAAY,mDAGRC,GAAY,CAChBC,OAAQ,OACRC,aAAc,OACdC,YAAa,OACbC,YAAa,OACbC,WAAY,QAGRC,GAAc,CAClBrB,WAAY,6CACZD,WAAY,MACZuB,WAAY,SAIRC,GAAe,CAAC,UAAW,UAAW,UAAW,WACjDC,GAAiB,CAAC,UAAW,UAAW,UAAW,WACnDC,GAAe,CAAC,UAAW,UAAW,UAAW,WACjDC,GAAc,CAAC,UAAW,UAAW,UAAW,WAChDC,GAAe,CAAC,UAAW,UAAW,UAAW,WACjDC,GAAY,CAAC,UAAW,UAAW,UAAW,WAC9CC,GAAY,CAAC,UAAW,UAAW,UAAW,WAC9CC,GAAY,CAChB,OACA,OACA,UACA,UACA,UACA,OACA,UACA,UACA,OACA,UACA,OACA,WAKIC,GAAY,CAChBA,UACE,0BACA1B,GANe,QAOf,gCACAA,GARe,QASf,iCACAA,GAVe,QAWf,UAGE2B,GAAmB,CACvBD,UACE,qBACA1B,GAjBe,QAkBf,+BACAA,GAASkB,GAAa,IACtB,QAEEU,GAAgB,CACpBF,UACE,qBACA1B,GAzBe,QA0Bf,+BACAA,GAASuB,GAAU,IACnB,QAEEM,GAAmB,CACvBH,UACE,qBACA1B,GAjCe,QAkCf,+BACAA,GAASsB,GAAa,IACtB,QAEEQ,GAAmB,CACvBJ,UACE,qBACA1B,GAzCe,QA0Cf,+BACAA,GAASoB,GAAa,IACtB,QAEEW,GAAkB,CACtBL,UACE,qBACA1B,GAjDe,QAkDf,+BACAA,GAASqB,GAAY,IACrB,QAEEW,GAAgB,CACpBN,UACE,qBACA1B,GAzDe,QA0Df,+BACAA,GAASwB,GAAU,IACnB,QAGES,GAAiBtH,OAAAuH,GAAA,EAAAvH,CAAA,CACrBwH,WACE,0BAA4Bf,GAAa,GAAK,KAAOA,GAAa,GAAK,KACtEU,IAECM,GAAiBzH,OAAAuH,GAAA,EAAAvH,CAAA,CACrBwH,WACE,0BAA4Bb,GAAa,GAAK,KAAOA,GAAa,GAAK,KACtEO,IAECQ,GAAgB1H,OAAAuH,GAAA,EAAAvH,CAAA,CACpBwH,WACE,0BAA4Bd,GAAY,GAAK,KAAOA,GAAY,GAAK,KACpEU,IAECO,GAAc3H,OAAAuH,GAAA,EAAAvH,CAAA,CAClBwH,WACE,0BAA4BZ,GAAU,GAAK,KAAOA,GAAU,GAAK,KAChEK,IAECW,GAAiB5H,OAAAuH,GAAA,EAAAvH,CAAA,CACrBwH,WACE,0BAA4BjB,GAAa,GAAK,KAAOA,GAAa,GAAK,KACtES,IAECa,GAAc7H,OAAAuH,GAAA,EAAAvH,CAAA,CAClBwH,WACE,0BAA4BX,GAAU,GAAK,KAAOA,GAAU,GAAK,KAChEQ,IA4BCS,IAzBW9H,OAAAuH,GAAA,EAAAvH,CAAA,CACf+H,OAAQ,cACRC,WAAY,OACZC,UAAW,aAAenB,GAAU,IACpCd,OAAQ,QACLK,IAc8BhB,GAjHhB,QAmHAA,GAnHA,QAuHM,CACvB6C,OAAQ,IACRC,aAAc,MACdpB,UACE,0BACA1B,GA5He,QA6Hf,gCACAA,GA9He,QA+Hf,iCACAA,GAhIe,QAiIf,SACF+C,QAAS,SACTtC,WAAY,sBAGRuC,GAAQ,CACZzD,MAAOkC,GAAU,GACjB5B,eAAgB,OAChBH,WAAY,MACZF,UAAW,OACXI,aAAc,OACdH,UAAW,OACXE,WAAY,6CACZsD,UAAW,CACT1D,MAAOkC,GAAU,GACjB/B,WAAY,MACZuB,WAAY,MCiIDiC,ID7HAvI,OAAAuH,GAAA,EAAAvH,CAAA,GACVqI,GADU,CAEbxD,UAAW,IACXI,aAAc,MACdH,UAAW,OACX0D,MAAMxI,OAAAuH,GAAA,EAAAvH,CAAA,GACDqI,GADL,CAEExD,UAAW,UACXI,aAAc,UACdH,UAAW,WC/OK,CAClB2D,OAAQ,CACN3D,UAAW,OACX4D,SAAU,OACVC,gBAAiB7B,GAAU,GAC3BlC,MD6Ee,OC5EfmC,UACE,oBACA1B,GAASyB,GAAU,IACnB,gCACAzB,GAASyB,GAAU,IACnB,4BACAzB,GAASyB,GAAU,IACnB,UACFoB,OAAQ,OACRC,aAAc,MACdS,SAAU,WACVR,QAAS,YACTL,OAAQ,eACRc,SAAU,OACV9D,WAAY,MACZ+D,cAAe,YACfC,cAAe,IACfC,WAAY,wBACZlD,WACE,iGACFQ,WAAY,aACZ2C,UAAW,SACXC,WAAY,SACZC,cAAe,SACfC,YAAa,eACbC,OAAQ,UACRC,kBAAmB,CACjB1E,MDiDa,OChDb+D,gBAAiB7B,GAAU,GAC3BC,UACE,0BACA1B,GAASyB,GAAU,IACnB,gCACAzB,GD0CW,QCzCX,iCACAA,GAASyB,GAAU,IACnB,UAEJyC,gDAAiD,CAC/CX,SAAU,WACVY,QAAS,eACTC,IAAK,IACL5E,UAAW,OACXI,aAAc,OACd4D,SAAU,SACV1C,YAAa,MACbgD,cAAe,UAEjBO,QAAS,CACPd,SAAU,WACVY,QAAS,eACTC,IAAK,IACLE,MAAO,OACP3D,OAAQ,OACRG,YAAa,MACbgD,cAAe,UAEjBS,aAAc,CACZC,gDAAiD,CAC/ChF,UAAW,MACX+D,SAAU,WACVe,MAAO,OACPG,UAAW,OACXC,KAAM,MACNN,IAAK,MACLzD,OAAQ,OACRM,WAAY,OACZuC,SAAU,UAIhBmB,MAAO,CACLC,oBAAqB,CACnBtB,gBDGa,OCFb/D,MAAO2B,GAAa,KAGxB2D,KAAM,CACJvB,gBAAiB9B,GAAU,GAC3BE,UACE,oBACA1B,GAASwB,GAAU,IACnB,gCACAxB,GAASwB,GAAU,IACnB,4BACAxB,GAASwB,GAAU,IACnB,UACFyC,kBAAmB,CACjBX,gBAAiB9B,GAAU,GAC3BE,UACE,0BACA1B,GAASwB,GAAU,IACnB,gCACAxB,GDlBW,QCmBX,iCACAA,GAASwB,GAAU,IACnB,WAGNsD,QAAS,CACPxB,gBAAiBpC,GAAa,GAC9BQ,UACE,oBACA1B,GAASkB,GAAa,IACtB,gCACAlB,GAASkB,GAAa,IACtB,4BACAlB,GAASkB,GAAa,IACtB,UACF+C,kBAAmB,CACjBX,gBAAiBpC,GAAa,GAC9BQ,UACE,0BACA1B,GAASkB,GAAa,IACtB,gCACAlB,GDxCW,QCyCX,iCACAA,GAASkB,GAAa,IACtB,WAGN6D,UAAW,CACTzB,gBAAiBnC,GAAe,GAChCO,UACE,oBACA1B,GAASmB,GAAe,IACxB,gCACAnB,GAASmB,GAAe,IACxB,4BACAnB,GAASmB,GAAe,IACxB,UACF8C,kBAAmB,CACjBX,gBAAiBnC,GAAe,GAChCO,UACE,0BACA1B,GAASmB,GAAe,IACxB,gCACAnB,GD9DW,QC+DX,iCACAA,GAASmB,GAAe,IACxB,WAGNzH,KAAM,CACJ4J,gBAAiB/B,GAAU,GAC3BG,UACE,oBACA1B,GAASuB,GAAU,IACnB,gCACAvB,GAASuB,GAAU,IACnB,4BACAvB,GAASuB,GAAU,IACnB,UACF0C,kBAAmB,CACjBX,gBAAiB/B,GAAU,GAC3BG,UACE,0BACA1B,GAASuB,GAAU,IACnB,gCACAvB,GDpFW,QCqFX,iCACAA,GAASuB,GAAU,IACnB,WAGNyD,QAAS,CACP1B,gBAAiBhC,GAAa,GAC9BI,UACE,oBACA1B,GAASsB,GAAa,IACtB,gCACAtB,GAASsB,GAAa,IACtB,4BACAtB,GAASsB,GAAa,IACtB,UACF2C,kBAAmB,CACjBX,gBAAiBhC,GAAa,GAC9BI,UACE,0BACA1B,GAASsB,GAAa,IACtB,gCACAtB,GD1GW,QC2GX,iCACAA,GAASsB,GAAa,IACtB,WAGN2D,QAAS,CACP3B,gBAAiBlC,GAAa,GAC9BM,UACE,oBACA1B,GAASoB,GAAa,IACtB,gCACApB,GAASoB,GAAa,IACtB,4BACApB,GAASoB,GAAa,IACtB,UACF6C,kBAAmB,CACjBX,gBAAiBlC,GAAa,GAC9BM,UACE,0BACA1B,GAASoB,GAAa,IACtB,gCACApB,GDhIW,QCiIX,iCACAA,GAASoB,GAAa,IACtB,WAGN8D,OAAQ,CACN5B,gBAAiBjC,GAAY,GAC7BK,UACE,oBACA1B,GAASqB,GAAY,IACrB,gCACArB,GAASqB,GAAY,IACrB,4BACArB,GAASqB,GAAY,IACrB,UACF4C,kBAAmB,CACjBX,gBAAiBjC,GAAY,GAC7BK,UACE,0BACA1B,GAASqB,GAAY,IACrB,gCACArB,GDtJW,QCuJX,iCACAA,GAASqB,GAAY,IACrB,WAGN8D,OAAQ,CACNP,oBAAqB,CACnBrF,MD7Ja,OC8Jb4C,WAAY,cACZT,UAAW,QAEb0D,SAAU,CACRC,8BAA+B,CAC7B9F,MAAOiC,GAAU,KAGrB8D,YAAa,CACXD,8BAA+B,CAC7B9F,MAAO2B,GAAa,KAGxBqE,cAAe,CACbF,8BAA+B,CAC7B9F,MAAO4B,GAAe,KAG1BqE,SAAU,CACRH,8BAA+B,CAC7B9F,MAAOgC,GAAU,KAGrBkE,YAAa,CACXJ,8BAA+B,CAC7B9F,MAAO+B,GAAa,KAGxBoE,YAAa,CACXL,8BAA+B,CAC7B9F,MAAO6B,GAAa,KAGxBuE,WAAY,CACVN,8BAA+B,CAC7B9F,MAAO8B,GAAY,MAIzBuE,YAAa,CACXhB,oBAAqB,CACnBrF,MAAO,UACP4C,WAAY,cACZT,UAAW,SAGfmE,SAAU,CACRC,QAAS,OACTC,cAAe,QAEjBC,GAAI,CACFjD,QAAS,mBACTS,SAAU,WACVvC,WAAY,WACZ6B,aAAc,UAEhBmD,GAAI,CACFlD,QAAS,qBACTS,SAAU,YACVvC,WAAY,MACZ6B,aAAc,UAEhBoD,MAAO,CACLpD,aAAc,QAEhBqD,MAAO,CACL7B,MAAO,mBAET8B,KAAM,CACJC,oBAAqB,CACnB/C,gBAAiB,cACjB/D,MAAOkC,GAAU,GACjBC,UAAW,SAGf4E,SAAU,CACRzF,YAAa,OACbD,aAAc,OACd4C,SAAU,OACV7C,OAAQ,OACR0C,SAAU,OACViB,MAAO,OACPiC,sDAAuD,CACrDzF,YAAa,OAEf0F,OAAQ,CACN7F,OAAQ,OACR0C,SAAU,OACViB,MAAO,OACPrD,WAAY,OACZuD,gDAAiD,CAC/ChB,SAAU,OACVvC,WAAY,QAEdoD,QAAS,CACPC,MAAO,OACP3D,OAAQ,SAGZ8F,OAAQ,CACN9F,OAAQ,OACR0C,SAAU,OACViB,MAAO,OACPE,gDAAiD,CAC/ChB,SAAU,OACVvC,WAAY,QAEdoD,QAAS,CACPC,MAAO,OACP3D,OAAQ,YCpSDtB,WAAW6D,GAAX7D,CA5Df,SAAAqH,GAAqC,IAAAC,EAATnK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAEjCG,EAaErK,EAbFqK,QACAtH,EAYE/C,EAZF+C,MACA2G,EAWE1J,EAXF0J,MACAY,EAUEtK,EAVFsK,SACAjB,EASErJ,EATFqJ,SACAV,EAQE3I,EARF2I,OACA4B,EAOEvK,EAPFuK,KACAZ,EAME3J,EANF2J,MACAC,EAKE5J,EALF4J,KACAE,EAIE9J,EAJF8J,SACAU,EAGExK,EAHFwK,UACAC,EAEEzK,EAFFyK,WACGC,EAd8BvM,OAAAwM,EAAA,EAAAxM,CAe/B6B,EAf+B,sHAgB7B4K,EAAaC,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EAC1BE,EAAQzD,QAAS,GADSzI,OAAA2M,EAAA,EAAA3M,CAAAgM,EAE1BE,EAAQE,GAAQA,GAFUpM,OAAA2M,EAAA,EAAA3M,CAAAgM,EAG1BE,EAAQtH,GAASA,GAHS5E,OAAA2M,EAAA,EAAA3M,CAAAgM,EAI1BE,EAAQX,MAAQA,GAJUvL,OAAA2M,EAAA,EAAA3M,CAAAgM,EAK1BE,EAAQhB,SAAWA,GALOlL,OAAA2M,EAAA,EAAA3M,CAAAgM,EAM1BE,EAAQ1B,OAASA,GANSxK,OAAA2M,EAAA,EAAA3M,CAAAgM,EAO1BE,EAAQV,MAAQA,GAPUxL,OAAA2M,EAAA,EAAA3M,CAAAgM,EAQ1BE,EAAQT,KAAOA,GARWzL,OAAA2M,EAAA,EAAA3M,CAAAgM,EAS1BE,EAAQP,SAAWA,GATO3L,OAAA2M,EAAA,EAAA3M,CAAAgM,EAU1BK,EAAYA,GAVcL,IAY7B,OACE7K,EAAAC,EAAAC,cAACuL,GAAAxL,EAADpB,OAAAC,OAAA,GAAYsM,EAAZ,CAAkBL,QAASI,EAAYD,UAAWI,IAC/CN,wBCiFQU,GAhHO,SAAAC,GAAK,MAAK,CAC9BC,WAAW/M,OAAA2M,EAAA,EAAA3M,CAAA,GACR8M,EAAME,YAAYC,KAAK,MAAQ,CAC9BzD,QAAS,OACTpD,WAAY,OACZuD,MAAO,SAGXuD,MAAMlN,OAAA2M,EAAA,EAAA3M,CAAA,CACJ2J,MAAO,OACP3D,OAAQ,OACRmH,OAAQ,KACPL,EAAME,YAAYC,KAAK,MAAQ,CAC9BzD,QAAS,QACTG,MAAO,OACP3D,OAAQ,OACRpB,MAAOkC,GAAU,GACjBX,YAAa,SAGjBiH,SAASpN,OAAAuH,GAAA,EAAAvH,CAAA,CACPmN,OAAQ,KACL9G,GAFG,CAGNwC,SAAU,SAEZwE,YAAa,CACXjC,cAAe,QAEjBkC,iBAAiBtN,OAAA2M,EAAA,EAAA3M,CAAA,GACd8M,EAAME,YAAYC,KAAK,MAAQ,CAC9BE,OAAQ,OACRvE,SAAU,SACV2E,MAAO,OACP5D,MAAO,OACP9E,UAAW,IACX8D,gBAAiB,cACjBT,OAAQ,IACRsF,gBAAiB,OACjBzG,UAAW,OACXnC,MAAO,UAGX6I,UAAUzN,OAAA2M,EAAA,EAAA3M,CAAA,GACP8M,EAAME,YAAYC,KAAK,MAAQ,CAC9BrE,SAAU,oBACVmB,KAAM,mBACNN,IAAK,mBACLK,UAAW,kBACXd,WAAY,kBACZ0E,UAAW,CACT3G,UAAW,kBACXX,WAAY,OACZD,YAAa,OACbL,WAAY,kBACZjB,UAAW,iBACXI,aAAc,iBACdmD,QAAS,iBACTO,gBAAiB,yBACjBgF,UAAW,CACT/I,MAAOgJ,kBACP7F,OAAQ,wBACRK,QAAS,uBACTyF,UAAW,CACTlF,gBAAiB,oBACjB5B,UAAW,YAMrB+G,SAAU,CACR3F,aAAc,MACdD,OAAQ,IACRnB,UAAW,oBAAsB1B,GHYlB,QGZyC,UACxDoE,IAAK,OACL0D,OAAQ,OACRzE,SAAU,QACVN,QAAS,QACTL,OAAQ,UACRc,SAAU,OACVI,UAAW,OACX8E,UAAW,OACXpF,gBHIe,OGHfqF,qBAAsB,cACtBC,eAAgB,eAElBC,aAAalO,OAAAuH,GAAA,EAAAvH,CAAA,GACRqG,GADO,CAEVwC,SAAU,OACVT,QAAS,YACTL,OAAQ,QACRI,aAAc,MACdgG,iBAAkB,mBAClBC,cAAe,mBACfC,YAAa,mBACbC,aAAc,mBACdxI,WAAY,mBACZ0D,QAAS,QACT+E,MAAO,OACPxJ,WAAY,MACZuB,WAAY,aACZ1B,MAAOkC,GAAU,GACjBoC,WAAY,SACZlD,OAAQ,QACR6H,UAAU7N,OAAAuH,GAAA,EAAAvH,CAAA,CACR2I,gBAAiBpC,GAAa,GAC9B3B,MHpBa,QGqBVoC,QCLMwH,GAxGU,SAAA1B,GAAK,IAAA2B,EAAAC,EAAAC,EAAA,OAAA3O,OAAAuH,GAAA,EAAAvH,CAAA,GACzB6M,GAAcC,GADW,CAE5B8B,OAAO5O,OAAA2M,EAAA,EAAA3M,CAAA,CACL0N,UAAW,CACT7I,UAAW,MAEZiI,EAAME,YAAYC,KAAK,MAAQ,CAC9BlF,OAAQ,uBACRwF,MAAO,kBACPvF,WAAY,MACZ6G,cAAe,MACfzG,QAAS,cACTuB,MAAO,MACP9E,UAAW,OACXiK,UAAW,CACTlK,MJyEW,UIrEjBwI,SAASpN,OAAAuH,GAAA,EAAAvH,CAAA,CACPmN,OAAQ,KACL9G,GAFG,CAGNwC,SAAU,OACVd,OAAQ,QAEVgF,WAAW/M,OAAA2M,EAAA,EAAA3M,CAAA,GACR8M,EAAME,YAAYC,KAAK,MAAQ,CAC9BzD,QAAS,OAETG,MAAO,yBACPD,QAAS,CACPC,MAAO,OACP3D,OAAQ,OACRG,YAAa,OACbC,WAAY,SAEdyD,gDAAiD,CAC/ChB,SAAU,OACVvC,WAAY,OACZqD,MAAO,OACP3D,OAAQ,OACRG,YAAa,OACbC,WAAY,SAEd2I,WAAY,CACVC,eAAgB,aAChBrF,MAAO,UAIbsF,aAAajP,OAAA2M,EAAA,EAAA3M,CAAA,GACV8M,EAAME,YAAYC,KAAK,MAAQ,CAC9BxD,IAAK,mBACLtD,YAAa,OACboH,MAAO,UAGXxF,OAAQ,CACNoF,OAAQ,IACRpF,OAAQ,KAEVmH,WAAY,CACVvF,MAAO,OACPwD,OAAQ,KAEVgC,eAAaV,EAAA,CACXtB,OAAQ,KADGnN,OAAA2M,EAAA,EAAA3M,CAAAyO,EAEV3B,EAAME,YAAYoC,GAAG,MAAQ,CAC5BxG,SAAU,WACVa,IAAK,MACLvB,OAAQ,iBACRmH,MAAO,MACPxG,SAAU,MACVrB,WAAYd,GAAY,GACxB9B,MJca,OIbb8D,SAAU,OACV1C,OAAQ,OACRmC,aAAc,OACdc,UAAW,SACX3C,WAAY,OACZ6C,cAAe,SACfK,QAAS,UAhBAxJ,OAAA2M,EAAA,EAAA3M,CAAAyO,EAkBV3B,EAAME,YAAYC,KAAK,MAlBbjN,OAAAuH,GAAA,EAAAvH,CAAA,GAmBNqG,GAnBM,CAoBTwC,SAAU,OACV1C,YAAa,SArBJsI,GAwBba,SAAOZ,EAAA,GAAA1O,OAAA2M,EAAA,EAAA3M,CAAA0O,EACJ5B,EAAME,YAAYC,KAAK,MAAQ,CAC9BtD,MAAO,SAFJ3J,OAAA2M,EAAA,EAAA3M,CAAA0O,EAAA,UAII,gBAJJA,GAMPa,eAAaZ,EAAA,GAAA3O,OAAA2M,EAAA,EAAA3M,CAAA2O,EACV7B,EAAME,YAAYC,KAAK,MAAQ,CAC9BtD,MAAO,yBACP5B,OAAQ,gBAHC/H,OAAA2M,EAAA,EAAA3M,CAAA2O,EAAA,UAKF,gBALEA,MC/ETa,eAEJ,SAAAA,EAAY3N,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAwN,IACI1N,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAwP,GAAArN,KAAAH,KAAMH,KASV4N,aAAe,WAEb3N,EAAKO,SAAS,SAAA3C,GAAK,MAAK,CAAEgQ,MAAOhQ,EAAMgQ,SAZzC5N,EAeA6N,wBAA0B,WAExB7N,EAAKO,SAAS,SAAA3C,GAAK,MAAK,CAAEkQ,iBAAkBlQ,EAAMgQ,SAjBpD5N,EAoBA+N,YAAc,SAAAC,GAERhO,EAAKiO,SAASC,SAASF,EAAMG,SAKjCnO,EAAKO,SAAS,CAAEqN,MAAM,KA3BxB5N,EA8BAoO,uBAAyB,SAAAJ,GAEnBhO,EAAKiO,SAASC,SAASF,EAAMG,SAKjCnO,EAAKO,SAAS,CAAEuN,iBAAiB,KAlC/B9N,EAAKpC,MACL,CACEgQ,MAAM,EACNE,iBAAiB,GANvB9N,wEAyCA,IAAAqO,EAAAnO,KACUkK,EAAYlK,KAAKH,MAAjBqK,QADVkE,EAEoCpO,KAAKtC,MAA/BgQ,EAFVU,EAEUV,KAAME,EAFhBQ,EAEgBR,gBAEd,OACEzO,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQoD,SAsBtBnO,EAAAC,EAAAC,cAACgP,GAAAjP,EAAD,CACEsO,KAAMA,EACNK,SAAU/N,KAAK+N,SACfjK,YAAU,EACVwK,eAAa,EACbjE,UACEK,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAAGkM,EAAQmB,aAAeqC,IACrC,IACAxD,EAAQuB,WAGT,SAAA1B,GAAA,IAAGwE,EAAHxE,EAAGwE,gBAAiBC,EAApBzE,EAAoByE,UAApB,OACCrP,EAAAC,EAAAC,cAACoP,GAAArP,EAADpB,OAAAC,OAAA,GACMsQ,EADN,CAEEG,GAAG,iBACHC,MAAO,CACLC,gBACgB,WAAdJ,EAAyB,aAAe,mBAG5CrP,EAAAC,EAAAC,cAACwP,GAAAzP,EAAD,KACED,EAAAC,EAAAC,cAACyP,GAAA1P,EAAD,CAAmB2P,YAAaZ,EAAKN,aACnC1O,EAAAC,EAAAC,cAAC2P,GAAA5P,EAAD,CAAU6P,KAAK,QACb9P,EAAAC,EAAAC,cAAC6P,GAAA9P,EAAD,CACE+P,QAAShB,EAAKN,YACdxD,UAAWH,EAAQgC,cAFrB,qCAMA/M,EAAAC,EAAAC,cAAC6P,GAAA9P,EAAD,CACE+P,QAAShB,EAAKN,YACdxD,UAAWH,EAAQgC,cAFrB,wBAMA/M,EAAAC,EAAAC,cAAC6P,GAAA9P,EAAD,CACE+P,QAAShB,EAAKN,YACdxD,UAAWH,EAAQgC,cAFrB,wCAgBd/M,EAAAC,EAAAC,cAAC+P,GAAD,CACEC,UAAW,SAAAC,GACTnB,EAAKJ,SAAWuB,GAElB1M,MAAOV,OAAOqN,WAAa,IAAM,cAAgB,QACjD5F,SAAUzH,OAAOqN,WAAa,IAC9B/G,SAAUtG,OAAOqN,WAAa,KAC9BC,YAAW5B,EAAkB,iBAAmB,KAChD6B,gBAAc,OACdC,aAAW,SACXP,QAASnP,KAAK2N,wBACdtD,UAAWH,EAAQa,YAEnB5L,EAAAC,EAAAC,cAACsQ,GAAAvQ,EAAD,CAAQiL,UAAWH,EAAQ0F,QAE3BzQ,EAAAC,EAAAC,cAACwQ,GAAAzQ,EAAD,CAAQ0Q,MAAI,EAACC,eAAe,OAC1B5Q,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQkB,UAAW4E,KAAWC,aAAaC,YAG3D/Q,EAAAC,EAAAC,cAACgP,GAAAjP,EAAD,CACEsO,KAAME,EACNG,SAAU/N,KAAK+N,SACfjK,YAAU,EACVwK,eAAa,EACbjE,UACEK,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAAGkM,EAAQmB,aAAeuC,IACrC,IACA1D,EAAQuB,WAGT,SAAA0E,GAAA,IAAG5B,EAAH4B,EAAG5B,gBAAiBC,EAApB2B,EAAoB3B,UAApB,OACCrP,EAAAC,EAAAC,cAACoP,GAAArP,EAADpB,OAAAC,OAAA,GACMsQ,EADN,CAEEG,GAAG,iBACHC,MAAO,CACLC,gBACgB,WAAdJ,EAAyB,aAAe,mBAG5CrP,EAAAC,EAAAC,cAACwP,GAAAzP,EAAD,KACED,EAAAC,EAAAC,cAACyP,GAAA1P,EAAD,CAAmB2P,YAAaZ,EAAKD,wBACnC/O,EAAAC,EAAAC,cAAC2P,GAAA5P,EAAD,CAAU6P,KAAK,QACb9P,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,YACVpD,EAAAC,EAAAC,cAAC6P,GAAA9P,EAAD,CAAUiL,UAAWH,EAAQgC,cAA7B,eAIF/M,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,UACVpD,EAAAC,EAAAC,cAAC6P,GAAA9P,EAAD,CAAUiL,UAAWH,EAAQgC,aAAciD,QAAS,WAElDpQ,IAAQU,OAAO,QACfV,IAAQ0C,IAAI,gBAAiB,UAH/B,2BA3KEe,IAAMC,WA8LjBC,OAAW8J,GAAX9J,CAA6B8K,ICtI7B6C,GAnEK,SAAAvF,GAAK,MAAK,CAC5BwF,OAAQ,CACN3J,gBAAiB,cACjB5B,UAAW,OACXwL,aAAc,IACdtN,aAAc,IACd2D,SAAU,WACVe,MAAO,OACP3B,WAAY,OACZmF,OAAQ,OACRvI,MAAOkC,GAAU,GACjBoB,OAAQ,IACRC,aAAc,MACdC,QAAS,SACTtC,WAAY,oBACZhB,UAAW,OACX0E,QAAS,SAEXzD,UAAU/F,OAAAuH,GAAA,EAAAvH,CAAA,GACL+F,GADI,CAEPjB,UAAW,SAEb0N,KAAM,CACJA,KAAM,GAERnK,MAAMrI,OAAAuH,GAAA,EAAAvH,CAAA,GACDqG,GADA,CAEHC,WAAY,OACZuC,SAAU,OACVV,aAAc,MACdW,cAAe,OACflE,MAAO,UACPmD,OAAQ,IACRuB,kBAAmB,CACjB9B,WAAY,iBAGhBiL,cAAe,CACbhJ,IAAK,OAEPU,QAAQnK,OAAAuH,GAAA,EAAAvH,CAAA,CACN2I,gBAAiBpC,GAAa,GAC9B3B,MNyCe,QMxCZkD,IAEL/I,KAAKiB,OAAAuH,GAAA,EAAAvH,CAAA,CACH2I,gBAAiB/B,GAAU,GAC3BhC,MNoCe,QMnCZkD,IAELuC,QAAQrK,OAAAuH,GAAA,EAAAvH,CAAA,CACN2I,gBAAiBhC,GAAa,GAC9B/B,MN+Be,QM9BZkD,IAELwC,QAAQtK,OAAAuH,GAAA,EAAAvH,CAAA,CACN2I,gBAAiBlC,GAAa,GAC9B7B,MN0Be,QMzBZkD,IAELyC,OAAOvK,OAAAuH,GAAA,EAAAvH,CAAA,CACL2I,gBAAiBjC,GAAY,GAC7B9B,MNqBe,QMpBZkD,MCTQpD,WAAW2N,GAAX3N,CAlDf,SAAAqH,GACA,IADqBlK,EACrB7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAcUG,EAAmBrK,EAAnBqK,QAAStH,EAAU/C,EAAV+C,MACX8N,EAAgBhG,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAC9B,IAAMkM,EAAQtH,GAASA,IAE1B,OACEzD,EAAAC,EAAAC,cAACsR,EAAAvR,EAAD,CAAQiL,UAAWH,EAAQoG,OAASI,GAClCvR,EAAAC,EAAAC,cAACuR,EAAAxR,EAAD,CAASiL,UAAWH,EAAQnG,WAC1B5E,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQsG,MAEtBrR,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,cAAcR,KAAK,IAAIiI,UAAWH,EAAQ7D,OAtBhE,WAEE,IAAIwK,EASJ,OARAhR,EAAMiR,OAAOC,IAAI,SAACC,EAAMC,GAMtB,OAJID,EAAKE,OAASrR,EAAMsC,SAASgP,WAE/BN,EAAOhR,EAAMuR,UAAYJ,EAAKK,QAAUL,EAAKH,MAExC,OAEFA,EAYES,KAGLnS,EAAAC,EAAAC,cAACwQ,GAAAzQ,EAAD,CAAQmS,QAAM,EAACxB,eAAe,OAC5B5Q,EAAAC,EAAAC,cAACmS,GAAD,OAEFrS,EAAAC,EAAAC,cAACwQ,GAAAzQ,EAAD,CAAQ0Q,MAAI,EAACC,eAAe,OAC1B5Q,EAAAC,EAAAC,cAACoS,EAAArS,EAAD,CACEwD,MAAM,UACN8M,aAAW,cACXP,QAAStP,EAAM6R,oBAEfvS,EAAAC,EAAAC,cAACsS,GAAAvS,EAAD,YCDGwS,GA9CK,CAClBpI,MAAMxL,OAAAuH,GAAA,EAAAvH,CAAA,CACJ4E,MAAO,UACPwD,QAAS,OACTU,cAAe,YACfX,aAAc,MACdjD,eAAgB,OAChB0D,SAAU,WACVY,QAAS,SACNnD,GARA,CASHtB,WAAY,MACZ8D,SAAU,SAEZkB,KAAM,CACJwD,MAAO,iBACP/D,QAAS,SAEX6F,MAAO,CACLjH,QAAS,SACTL,OAAQ,IACRc,SAAU,OACV0E,MAAO,mBAETsG,OAAO7T,OAAAuH,GAAA,EAAAvH,CAAA,CACL8T,OAAQ,IACR7L,UAAW,aAAenB,GAAU,IACpCsB,QAAS,KACN/B,IAELN,aACA3E,EAAG,CACDwD,MAAO2B,GACPrB,eAAgB,OAChByD,gBAAiB,eAEnBoL,KAAM,CACJ9O,aAAc,IACdmD,QAAS,IACTvD,UAAW,KAEbmP,YAAa,CACXxK,QAAS,eACTpB,QAAS,MACTuB,MAAO,SCrBIjF,WAAWkP,GAAXlP,CAtBf,SAAAqH,GAA8B,IACpBG,EADoBlM,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACpBG,QACR,OACE/K,EAAAC,EAAAC,cAAA,UAAQgL,UAAWH,EAAQ2H,QACzB1S,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQnG,WACtB5E,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQmD,OACpBlO,EAAAC,EAAAC,cAAA,oBACU,MAAO,IAAI4S,MAAOC,UAAW,IACrC/S,EAAAC,EAAAC,cAAA,KAAG+C,KAAK,0BAA0BiI,UAAWH,EAAQ9K,GAArD,kJC4TG+S,GA1TM,SAAArH,GAAK,IAAAsH,EAAAC,EAAA,MAAK,CAC7BC,YAAYtU,OAAAuH,GAAA,EAAAvH,CAAA,CACVkI,OAAQ,OACRU,SAAU,QACVa,IAAK,IACLqK,OAAQ,IACR/J,KAAM,IACNoD,OAAQ,KACLpG,IAPMqN,EAAA,CAQTzK,MV2BgB,KUnCP3J,OAAA2M,EAAA,EAAA3M,CAAAoU,EASRtH,EAAME,YAAYoC,GAAG,MAAQ,CAC5BzF,MVyBc,IUxBdf,SAAU,QACV5C,OAAQ,SAZDhG,OAAA2M,EAAA,EAAA3M,CAAAoU,EAcRtH,EAAME,YAAYC,KAAK,MAdfjN,OAAAuH,GAAA,EAAAvH,CAAA,CAeP2J,MVoBc,KUnBX5C,GAhBI,CAiBP6B,SAAU,QACVY,QAAS,QACTC,IAAK,IACLzD,OAAQ,QACRqJ,MAAO,IACPtF,KAAM,OACNoD,OAAQ,OACRoH,WAAY,UACZC,UAAW,UACXvM,UAAW,OACXgB,UAAW,OACXhD,aAAc,MACdC,YAAa,IACb4D,UAAS,eAAA5J,OVKK,IULL,cACN4F,KA/BIsO,IAkCXK,gBAAcJ,EAAA,GAAArU,OAAA2M,EAAA,EAAA3M,CAAAqU,EACXvH,EAAME,YAAYoC,GAAG,MAAQ,CAC5BrF,KAAM,kBACNsF,MAAO,iBAHGrP,OAAA2M,EAAA,EAAA3M,CAAAqU,EAKXvH,EAAME,YAAYC,KAAK,MAAQ,CAC9BlD,KAAM,gBACNsF,MAAO,oBAPGgF,GAUdK,KAAM,CACJ9L,SAAU,WACVR,QAAS,YACT+E,OAAQ,IACRwH,UAAW,CACTC,QAAS,KACThM,SAAU,WACVkL,OAAQ,IAER9N,OAAQ,MACRqJ,MAAO,OACP1F,MAAO,oBACPhB,gBAAiB,QAAUtD,GAASyB,GAAU,IAAM,WAGxD+N,SAAS7U,OAAAuH,GAAA,EAAAvH,CAAA,GACJqG,GADG,CAENyC,cAAe,YACfV,QAAS,QACToB,QAAS,QACTX,SAAU,OACVI,UAAW,OACXlE,WAAY,MACZuB,WAAY,OACZpB,eAAgB,OAChByD,gBAAiB,cACjBmM,YAAa,CACXlQ,MVOa,UUJjBmQ,aAAa/U,OAAAuH,GAAA,EAAAvH,CAAA,GACRqG,GADO,CAEVyC,cAAe,YACf1C,WAAY,OACZgC,QAAS,QACToB,QAAS,QACTX,SAAU,OACVI,UAAW,OACXlE,WAAY,MACZuB,WAAY,OACZpB,eAAgB,OAChByD,gBAAiB,cACjBmM,YAAa,CACXlQ,MVTa,UUYjBoQ,YAAa,CACX/L,UAAW,SAEbgM,UAAW,CACTtL,MAAO,OACPH,QAAS,eACT0L,UAAW,OACX9O,WAAY,OACZD,YAAa,QAEfgP,IAAK,CACHxL,MAAO,OACPF,IAAK,OACLb,SAAU,WACVO,cAAe,SACfjB,OAAQ,KAEVV,WAAY,CACVoB,SAAU,WACVuE,OAAQ,IACRnH,OAAQ,OACR2D,MAAO,OACPH,QAAS,QACTC,IAAK,IACLM,KAAM,IACNqL,eAAgB,QAChBC,mBAAoB,gBACpBV,UAAW,CACT/L,SAAU,WACVuE,OAAQ,IACRxD,MAAO,OACP3D,OAAQ,OACR4O,QAAS,KACTpL,QAAS,QACThC,WV/Ca,OUgDb2D,QAAS,OAGb4I,KAAM,CACJlP,UAAW,OACXqB,YAAa,IACb8B,WAAY,IACZ6G,cAAe,IACf5J,aAAc,IACd8I,UAAW,OACXnF,SAAU,SAEZ0M,KAAM,CACJ1M,SAAU,WACVY,QAAS,QACTtE,eAAgB,OAChBqQ,8BAA+B,CAC7B3Q,MVhEa,SUmEjB4Q,SAASxV,OAAAuH,GAAA,EAAAvH,CAAA,CACP2J,MAAO,OACP7D,WAAY,mBAEZqC,aAAc,MACdS,SAAU,WACVY,QAAS,QACTpB,QAAS,YACTO,gBAAiB,eACdtC,IAELoP,SAAU,CACR9L,MAAO,OACP3D,OAAQ,OACR6C,SAAU,OACVvC,WAAY,OACZiH,MAAO,OACPpH,YAAa,OACb8C,UAAW,SACXE,cAAe,SACfvE,MAAO,QAAUS,GVvFF,QUuFyB,UAE1CqQ,YAAa,CACXvP,YAAa,MACbC,WAAY,OACZmH,MAAO,SAEToI,SAAS3V,OAAAuH,GAAA,EAAAvH,CAAA,GACJqG,GADG,CAEN0B,OAAQ,IACRzB,WAAY,OACZuC,SAAU,OACVjE,MVnGe,SUqGjBgR,YAAY5V,OAAAuH,GAAA,EAAAvH,CAAA,GACPqG,GADM,CAET0B,OAAQ,IACRzB,WAAY,OACZuC,SAAU,OACVjE,MV1Ge,SU4GjBiR,YAAa,CACX5M,UAAW,SAEb6M,UAAW,CACTlR,MVhHe,QUkHjBmR,OAAO/V,OAAAuH,GAAA,EAAAvH,CAAA,CACL2I,gBAAiBpC,GAAa,IAC3BS,GAFC,CAGJ6G,UAAU7N,OAAAuH,GAAA,EAAAvH,CAAA,CACR2I,gBAAiBpC,GAAa,IAC3BS,MAGPgP,KAAM,CACJrN,gBAAiB/B,GAAU,GAC3BG,UACE,0BACA1B,GAASuB,GAAU,IACnB,4BACAvB,GVjIa,QUkIb,8BACAA,GAASuB,GAAU,IACnB,OACFiH,UAAW,CACTlF,gBAAiB/B,GAAU,GAC3BG,UACE,0BACA1B,GAASuB,GAAU,IACnB,4BACAvB,GV3IW,QU4IX,8BACAA,GAASuB,GAAU,IACnB,SAGNqP,MAAO,CACLtN,gBAAiBhC,GAAa,GAC9BI,UACE,0BACA1B,GAASsB,GAAa,IACtB,4BACAtB,GVvJa,QUwJb,8BACAA,GAASsB,GAAa,IACtB,OACFkH,UAAW,CACTlF,gBAAiBhC,GAAa,GAC9BI,UACE,0BACA1B,GAASsB,GAAa,IACtB,4BACAtB,GVjKW,QUkKX,8BACAA,GAASsB,GAAa,IACtB,SAGNuP,OAAQ,CACNvN,gBAAiBlC,GAAa,GAC9BM,UACE,0BACA1B,GAASoB,GAAa,IACtB,4BACApB,GV7Ka,QU8Kb,8BACAA,GAASoB,GAAa,IACtB,OACFoH,UAAW,CACTlF,gBAAiBlC,GAAa,GAC9BM,UACE,0BACA1B,GAASoB,GAAa,IACtB,4BACApB,GVvLW,QUwLX,8BACAA,GAASoB,GAAa,IACtB,SAGN0P,IAAK,CACHxN,gBAAiBjC,GAAY,GAC7BK,UACE,0BACA1B,GAASqB,GAAY,IACrB,4BACArB,GVnMa,QUoMb,8BACAA,GAASqB,GAAY,IACrB,OACFmH,UAAW,CACTlF,gBAAiBjC,GAAY,GAC7BK,UACE,0BACA1B,GAASqB,GAAY,IACrB,4BACArB,GV7MW,QU8MX,8BACAA,GAASqB,GAAY,IACrB,SAGN0P,QACA,CACEzN,gBAAiB,YACjBkF,UACA,CACElF,gBAAiB,cAGrB0N,eAAgB,CACdzN,SAAU,WACV5C,OAAQ,qBACRsQ,SAAU,OACV3M,MAAO,QACPwD,OAAQ,IACRoJ,kBAAmB,SAErBC,UAAUxW,OAAA2M,EAAA,EAAA3M,CAAA,GACP8M,EAAME,YAAYoC,GAAG,MAAQ,CAC5BxG,SAAU,WACVe,MAAO,OACPmK,OAAQ,WCxECpP,OAAWyP,GAAXzP,CA1OC,SAAAqH,GAChB,IADsBlK,EACtB7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAKE,SAAS0K,EAAYC,GAEnB,OAAO7U,EAAMsC,SAASgP,SAASwD,QAAQD,IAAc,EAPzD,IAoBUxK,EAA4CrK,EAA5CqK,QAAStH,EAAmC/C,EAAnC+C,MAAOgS,EAA4B/U,EAA5B+U,MAAOC,EAAqBhV,EAArBgV,SAAU/D,EAAWjR,EAAXiR,OAErC5F,EACF/L,EAAAC,EAAAC,cAACyV,GAAA1V,EAAD,CAAMiL,UAAWH,EAAQ6H,MAEvBjB,EAAOC,IAAI,SAACC,EAAMC,GAKhB,IAAKD,EAAK+D,eACLC,KAAQC,8BAA8BjE,EAAKkE,yBAA0BlF,KAAWC,aAAakF,qBAC7FH,KAAQI,8BAA8BpE,EAAKqE,kBAAmBrF,KAAWC,aAAakF,sBAnB3E,QAHUG,EAuBEtE,EAAKsE,cAhB9BzV,EAAMsC,SAASgP,SAASwD,QAAQW,IAAgB,GAkBjD,OAAO,KAzBf,IAAgCA,EA6BtBC,EAGJA,EAAkB7K,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAE1B,IAAMkM,EAAQtH,GAAS6R,EAAYzD,EAAKE,QAG3C,IAAMsE,EAAmB9K,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAEjC,IAAMkM,EAAQ4J,UAAYW,EAAYzD,EAAKE,QAG9C,OAAKF,EAAKyE,OAyDNtW,EAAAC,EAAAC,cAAA,KACE4O,OAAO,SACP7L,KAEgB,iCAAd4O,EAAKE,KAA0CF,EAAKE,KAAQwE,SAASC,OAAOpS,QAAQ,8CAA+C,MAEnIyN,EAAKE,KAEP7G,UA/EU,IA+EaH,EAAQoJ,KAC/BrC,IAAKA,GAEL9R,EAAAC,EAAAC,cAACuW,GAAAxW,EAAD,CAAUqH,QAAM,EAAC4D,UAAWH,EAAQsJ,SAAW+B,GAExB,kBAAdvE,EAAK6E,MAAoC,OAAd7E,EAAK6E,KAGrC1W,EAAAC,EAAAC,cAACyW,GAAA1W,EAAD,CACEiL,UAAWK,IAAWR,EAAQuJ,SAAU+B,IACvCxE,EAAK6E,MAKR1W,EAAAC,EAAAC,cAAC2R,EAAK6E,KAAN,CACExL,UAAWK,IAAWR,EAAQuJ,SAAU+B,KAOrB,OAArBxE,EAAKsE,YAIHnW,EAAAC,EAAAC,cAAC0W,GAAA3W,EAAD,CACE+I,QAAU6I,EAAKH,KACfxG,UAAWK,IAAWR,EAAQyJ,SAAU6B,GACxCQ,mBAAmB,IAMrB7W,EAAAC,EAAAC,cAAC0W,GAAA3W,EAAD,CACEgJ,UAAY4I,EAAKH,KACjBxG,UAAWK,IAAWR,EAAQ0J,YAAa4B,GAC3CQ,mBAAmB,MArG7B7W,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CACE7N,GAAIyO,EAAKE,KACT7G,UAnBU,IAmBaH,EAAQoJ,KAC/B2C,gBAAgB,SAChBhF,IAAKA,GAEL9R,EAAAC,EAAAC,cAACuW,GAAAxW,EAAD,CAAUqH,QAAM,EAAC4D,UAAWH,EAAQsJ,SAAW+B,GAExB,kBAAdvE,EAAK6E,MAAoC,OAAd7E,EAAK6E,KAGrC1W,EAAAC,EAAAC,cAACyW,GAAA1W,EAAD,CACEiL,UAAWK,IAAWR,EAAQuJ,SAAU+B,IACvCxE,EAAK6E,MAKR1W,EAAAC,EAAAC,cAAC2R,EAAK6E,KAAN,CACExL,UAAWK,IAAWR,EAAQuJ,SAAU+B,KAOrB,OAArBxE,EAAKsE,YAIHnW,EAAAC,EAAAC,cAAC0W,GAAA3W,EAAD,CACE+I,QAAU6I,EAAKH,KACfxG,UAAWK,IAAWR,EAAQyJ,SAAU6B,GACxCQ,mBAAmB,IAMrB7W,EAAAC,EAAAC,cAAC0W,GAAA3W,EAAD,CACEgJ,UAAY4I,EAAKH,KACjBxG,UAAWK,IAAWR,EAAQ0J,YAAa4B,GAC3CQ,mBAAmB,SAuEnCE,EACF/W,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQwI,MACtBvT,EAAAC,EAAAC,cAAA,KACE+C,KAAK,0BACLiI,UAAWK,IAAWR,EAAQ6I,eAC7B8B,IAKP,OACE1V,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAACwQ,GAAAzQ,EAAD,CAAQ0Q,MAAI,EAACC,eAAe,OAC1B5Q,EAAAC,EAAAC,cAAC8W,GAAA/W,EAAD,CACEgX,QAAQ,YACRC,OAAO,QACP3I,KAAM7N,EAAM6N,KACZxD,QAAS,CACPoM,MAAO5L,IAAWR,EAAQoI,cAE5BiE,QAAS1W,EAAM6R,mBACf8E,WAAY,CACVC,aAAa,IAGdP,EACD/W,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQmK,gBACtBlV,EAAAC,EAAAC,cAACmS,GAAD,MACCtG,QAEQrN,IAAV+W,EACCzV,EAAAC,EAAAC,cAAA,OACEgL,UAAWH,EAAQ1E,aAGnB,OAGRrG,EAAAC,EAAAC,cAACwQ,GAAAzQ,EAAD,CAAQmS,QAAM,EAACxB,eAAe,OAC5B5Q,EAAAC,EAAAC,cAAC8W,GAAA/W,EAAD,CACEiX,OAAO,OACPD,QAAQ,YACR1I,MAAI,EACJxD,QAAS,CACPoM,MAAO5L,IAAWR,EAAQoI,eAG3B4D,EACD/W,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQmK,gBAAiBnJ,QAC9BrN,IAAV+W,EACCzV,EAAAC,EAAAC,cAAA,OACEgL,UAAWH,EAAQ1E,aAGnB,oDC/MEkR,OA/BhB,SAAA3M,GACA,IAD+BlK,EAC/B7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACY4M,EAAwC9W,EAAxC8W,YAAaC,EAA2B/W,EAA3B+W,WAAYC,EAAehX,EAAfgX,WAE3BlI,EACN,CACIhH,MAAO,OACP3D,OAAQ,MAER4C,SAAWgQ,EAAc,WAAa,GACtCnP,IAAI,EACJqK,OAAQ,EACR/J,KAAM,EACNsF,MAAO,EAEPpG,UAAW,SACXlB,OAAQ,QAGZ,OACI5G,EAAAC,EAAAC,cAAA,OAAKsP,MAAOA,GAEJkI,EAAa1X,EAAAC,EAAAC,cAAA,OAAKyX,IAAKC,KAASC,IAAI,YAAmB7X,EAAAC,EAAAC,cAAC4X,GAAA7X,EAAD,CAAkBwD,MAAM,YAEnFzD,EAAAC,EAAAC,cAAA,WACCsX,yBCSGO,OAnChB,SAAAnN,GACA,IACYoN,EADZnZ,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACYoN,UAuBR,OACIhY,EAAAC,EAAAC,cAAA,OAAKsP,MArBT,CACIhH,MAAO,OACP3D,OAAQ,MAGRyD,IAAI,EACJqK,OAAQ,EACR/J,KAAM,EACNsF,MAAO,EAEPpG,UAAW,SACXlB,OAAQ,SAWJ5G,EAAAC,EAAAC,cAAA,OAAKyX,IAAKM,KAAWzI,MAP7B,CACIhH,MAAO,QACP3D,OAAQ,SAKoCgT,IAAI,UAC5C7X,EAAAC,EAAAC,cAAA,WACC8X,mRCbEzU,WAfD,SAAAoI,GAAK,MAAK,CACtBuM,KAAM,CACJjR,QAAS,uBAaE1D,CATf,SAAAqH,GAAgC,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACtBG,EAA+BrK,EAA/BqK,QAASC,EAAsBtK,EAAtBsK,SAAaI,EADAvM,OAAAwM,EAAA,EAAAxM,CACS6B,EADT,wBAE9B,OACEV,EAAAC,EAAAC,cAACiY,GAAAlY,EAADpB,OAAAC,OAAA,CAAMqV,MAAI,GAAK/I,EAAf,CAAqBF,UAAWH,EAAQmN,OACrClN,KCMQzH,WAhBD,CACZ2U,KAAM,CACJtR,OAAQ,qBACR4B,MAAO,UAaIjF,CATf,SAAuB7C,GAAO,IACpBqK,EAA+BrK,EAA/BqK,QAASC,EAAsBtK,EAAtBsK,SAAaI,EADFvM,OAAAwM,EAAA,EAAAxM,CACW6B,EADX,wBAE5B,OACEV,EAAAC,EAAAC,cAACiY,GAAAlY,EAADpB,OAAAC,OAAA,CAAM8F,WAAS,GAAKwG,EAApB,CAA0BF,UAAWH,EAAQmN,OAC1ClN,yBCuBQoN,GAjCG,CAChBC,KAAM,CACJtR,OAAQ,IACRjD,aAAc,OACdJ,UAAW,OACXsD,aAAc,MACdvD,MAAO,QAAUS,GhBmFF,QgBnFyB,UACxCmC,WhBmFe,OgBlFfmC,MAAO,OACP5C,UAAW,oBAAsB1B,GhBgFlB,QgBhFyC,UACxDuD,SAAU,WACVY,QAAS,OACTiQ,cAAe,SACf/Q,SAAU,IACVgR,SAAU,aACV7Q,SAAU,WAEZ8Q,UAAW,CACTnS,WAAY,cACZT,UAAW,QAEb6S,YAAa,CACX/U,UAAW,OACXoE,UAAW,UAEb4Q,UAAW,CACTC,MAAO,CACLjV,UAAW,MACXmD,WAAY,SCWHtD,WAAW6U,GAAX7U,CAjCf,SAAAqH,GAA4B,IAAAC,EAATnK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAExBG,EAOErK,EAPFqK,QACAG,EAMExK,EANFwK,UACAF,EAKEtK,EALFsK,SACA4N,EAIElY,EAJFkY,MACAC,EAGEnY,EAHFmY,QACAC,EAEEpY,EAFFoY,MACG1N,EARqBvM,OAAAwM,EAAA,EAAAxM,CAStB6B,EATsB,8DAWpBqY,EAAcxN,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EAC3BE,EAAQsN,MAAO,GADYxZ,OAAA2M,EAAA,EAAA3M,CAAAgM,EAE3BE,EAAQyN,UAAYI,GAFO/Z,OAAA2M,EAAA,EAAA3M,CAAAgM,EAG3BE,EAAQ0N,YAAcI,GAHKha,OAAA2M,EAAA,EAAA3M,CAAAgM,EAI3BE,EAAQ2N,UAAYI,GAJOja,OAAA2M,EAAA,EAAA3M,CAAAgM,EAK3BK,OAA0BxM,IAAdwM,GALeL,IAO9B,OACE7K,EAAAC,EAAAC,cAAA,MAAArB,OAAAC,OAAA,CAAKoM,UAAW6N,GAAiB3N,GAC9BJ,KC2FQgO,GAjHS,CACtBC,WAAY,CACVhS,QAAS,kBACTnD,aAAc,IACdsN,aAAc,OACd/K,WAAY,cACZ2F,OAAQ,eACRkN,wKAAyK,CACvKtS,OAAQ,SACRK,QAAS,IACTQ,SAAU,WACVhE,MlB2Ea,QkBzEf0V,gBAAiB,CACfnS,aAAc,6CAEhBoS,mHAAoH,CAClHC,yBAA0B,CACxBrS,aAAc,MACdtD,UAAW,QACXuD,QAAS,SAGbqS,wBAAyB,CACvB5R,SAAU,OACVvC,WAAY,OACZ2C,UAAW,SACXU,MAAO,OACP3D,OAAQ,OACR+B,OAAQ,iBAEV2S,wDAAyD,CACvD7R,SAAU,OACVvC,WAAY,OACZqD,MAAO,OACP3D,OAAQ,OACRiD,UAAW,SACXqN,SAAU,QACVrR,aAAc,OAEhB0V,mCAAoC,CAClC1R,UAAW,UAGf2R,gBAAiB,CACfxU,WAAY,iBACZD,YAAa,kBAEf0U,gBAAiB,CACfC,oBAAqB,CACnB7R,UAAW,SAEb8R,gCAAiC,CAC/BhT,OAAQ,iBAGZiT,eAAgB,CACdT,mHAAoH,CAClH/S,WAAY,cACZT,UAAW,QAEbkU,wBAAyB,CACvBtR,MAAO,OACP3D,OAAQ,OACRiD,UAAW,SACX3C,WAAY,QAEdoD,QAAS,CACPC,MAAO,OACP3D,OAAQ,OACRiD,UAAW,SACX3C,WAAY,OACZyB,OAAQ,gBAGZT,kBAAmB,CACjB1C,MlBUe,OkBTf4V,yBAAyBxa,OAAAuH,GAAA,EAAAvH,CAAA,GACpBsH,KAGPG,kBAAmB,CACjB7C,MlBIe,OkBHf4V,yBAAyBxa,OAAAuH,GAAA,EAAAvH,CAAA,GACpByH,KAGPC,iBAAkB,CAChB9C,MlBFe,OkBGf4V,yBAAyBxa,OAAAuH,GAAA,EAAAvH,CAAA,GACpB0H,KAGPC,eAAgB,CACd/C,MlBRe,OkBSf4V,yBAAyBxa,OAAAuH,GAAA,EAAAvH,CAAA,GACpB2H,KAGPC,kBAAmB,CACjBhD,MlBde,OkBef4V,yBAAyBxa,OAAAuH,GAAA,EAAAvH,CAAA,GACpB4H,KAGPC,eAAgB,CACdjD,MlBpBe,OkBqBf4V,yBAAyBxa,OAAAuH,GAAA,EAAAvH,CAAA,GACpB6H,MChEMnD,WAAWyV,GAAXzV,CA1Cf,SAAAqH,GAAkC,IAAAC,EAATnK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAE9BG,EAQErK,EARFqK,QACAG,EAOExK,EAPFwK,UACAF,EAMEtK,EANFsK,SACAvH,EAKE/C,EALF+C,MACAmV,EAIElY,EAJFkY,MACAmB,EAGErZ,EAHFqZ,MACArD,EAEEhW,EAFFgW,KACGtL,EAT2BvM,OAAAwM,EAAA,EAAAxM,CAU5B6B,EAV4B,mEAW1BsZ,EAAoBzO,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EACjCE,EAAQkO,YAAa,GADYpa,OAAA2M,EAAA,EAAA3M,CAAAgM,EAEjCE,EAAQtH,EAAQ,cAAgBA,GAFC5E,OAAA2M,EAAA,EAAA3M,CAAAgM,EAGjCE,EAAQ0O,gBAAkBb,GAHO/Z,OAAA2M,EAAA,EAAA3M,CAAAgM,EAIjCE,EAAQ2O,gBAAkBK,GAJOlb,OAAA2M,EAAA,EAAA3M,CAAAgM,EAKjCE,EAAQ8O,eAAiBnD,GALQ7X,OAAA2M,EAAA,EAAA3M,CAAAgM,EAMjCK,OAA0BxM,IAAdwM,GANqBL,IAQpC,OACE7K,EAAAC,EAAAC,cAAA,MAAArB,OAAAC,OAAA,CAAKoM,UAAW8O,GAAuB5O,GACpCJ,KCJQiP,GAnBO,CACpBC,SAAU,CACRd,mHAAoH,CAClHpS,aAAc,MACdQ,gBAAiB7B,GAAU,GAC3BsB,QAAS,OACTvD,UAAW,QACXsB,YAAa,OACboH,MAAO,SAGXjG,qBACAG,qBACAC,oBACAC,kBACAC,qBACAC,mBCaanD,WAAW0W,GAAX1W,CA3Bf,SAAAqH,GAAgC,IAAAC,EAATnK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACtBG,EAAiDrK,EAAjDqK,QAASG,EAAwCxK,EAAxCwK,UAAWF,EAA6BtK,EAA7BsK,SAAUvH,EAAmB/C,EAAnB+C,MAAU2H,EADlBvM,OAAAwM,EAAA,EAAAxM,CAC2B6B,EAD3B,4CAExByZ,EAAkB5O,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EAC/BE,EAAQmP,UAAW,GADYrb,OAAA2M,EAAA,EAAA3M,CAAAgM,EAE/BE,EAAQtH,EAAQ,cAAgBA,GAFD5E,OAAA2M,EAAA,EAAA3M,CAAAgM,EAG/BK,OAA0BxM,IAAdwM,GAHmBL,IAKlC,OACE7K,EAAAC,EAAAC,cAAA,MAAArB,OAAAC,OAAA,CAAKoM,UAAWiP,GAAqB/O,GAClCJ,KCyBQoP,GA5CS,CACtBC,WAAY,CACVpT,QAAS,IACTJ,WAAY,OACZD,OAAQ,cACRI,aAAc,IACd6G,eAAgB,gBAChByM,WAAY,SACZjS,QAAS,OACTb,gBAAiB,cACjBT,OAAQ,KAEVwT,kBAAmB,CACjB7W,UAAW,SAEb8W,gBAAiB,CACfzV,YAAa,MACbD,aAAc,MACd0C,gBAAiB,eAEnBiT,gBAAiB,CACf3T,UAAW,aAAenB,GAAU,IACpCjC,UAAW,OACX6E,QAAS,CACPd,SAAU,WACVa,IAAK,MACLtD,YAAa,MACbC,WAAY,MACZuD,MAAO,OACP3D,OAAQ,QAEV6D,gDAAiD,CAC/ChB,SAAU,OACVD,SAAU,WACVa,IAAK,MACLtD,YAAa,MACbC,WAAY,QAGhByV,gBAAiB,CACf5T,UAAW,aAAenB,GAAU,MCKzBpC,WAAW6W,GAAX7W,CAnCf,SAAAqH,GAAkC,IAAAC,EAATnK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAE9BG,EAQErK,EARFqK,QACAG,EAOExK,EAPFwK,UACAF,EAMEtK,EANFsK,SACA4N,EAKElY,EALFkY,MACAC,EAIEnY,EAJFmY,QACAkB,EAGErZ,EAHFqZ,MACAjB,EAEEpY,EAFFoY,MACG1N,EAT2BvM,OAAAwM,EAAA,EAAAxM,CAU5B6B,EAV4B,sEAW1Bia,EAAoBpP,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EACjCE,EAAQsP,YAAa,GADYxb,OAAA2M,EAAA,EAAA3M,CAAAgM,EAEjCE,EAAQyP,gBAAkB5B,GAFO/Z,OAAA2M,EAAA,EAAA3M,CAAAgM,EAGjCE,EAAQwP,kBAAoB1B,GAHKha,OAAA2M,EAAA,EAAA3M,CAAAgM,EAIjCE,EAAQ0P,gBAAkBV,GAJOlb,OAAA2M,EAAA,EAAA3M,CAAAgM,EAKjCE,EAAQ2P,gBAAkB5B,GALOja,OAAA2M,EAAA,EAAA3M,CAAAgM,EAMjCK,OAA0BxM,IAAdwM,GANqBL,IAQpC,OACE7K,EAAAC,EAAAC,cAAA,MAAArB,OAAAC,OAAA,CAAKoM,UAAWyP,GAAuBvP,GACpCJ,KCvBA,SAAS4P,GAAOC,GAGnB,IAAIC,EAAQlb,IAAQC,IAAI,QAExB,OAAO2B,MAAMC,IAAUC,WAAamZ,EACpC,CACIjZ,QACA,CACImZ,cAAiB,UAAYD,KAGpC9Y,KAAK,SAACC,GAAD,OAAcA,EAASC,OAAOF,KAAK,SAAAF,GAAI,MAAK,CAAEM,OAAQH,EAASG,OAAQ4Y,KAAMlZ,OAClFE,KAAK,SAACG,GAEH,GAAsB,MAAlBA,EAAOC,OAEP,MAAMD,EAGV,OAAOA,IAUR,SAAS8Y,GAAQJ,GAGpB,IAAIC,EAAQlb,IAAQC,IAAI,QAExB,OAAO2B,MAAMC,IAAUC,WAAamZ,EACpC,CACIlZ,OAAQ,OACRC,QACA,CACImZ,cAAiB,UAAYD,KAGpC9Y,KAAK,SAACC,GAAD,OAAcA,EAASC,OAAOF,KAAK,SAAAF,GAAI,MAAK,CAAEM,OAAQH,EAASG,OAAQ4Y,KAAMlZ,OAClFE,KAAK,SAACG,GAEH,GAAsB,MAAlBA,EAAOC,OAEP,MAAMD,EAGV,OAAOA,IAWR,SAAS+Y,GAAYL,EAASM,GAGjC,IAAIL,EAAQlb,IAAQC,IAAI,QAExB,OAAO2B,MAAMC,IAAUC,WAAamZ,EACpC,CACIlZ,OAAQ,OACRC,QACA,CACImZ,cAAiB,UAAYD,EAC7BjZ,eAAgB,oBAEpBC,KAAMsZ,KAAKC,UAAUF,KAExBnZ,KAAK,SAACC,GAAD,OAAcA,EAASC,OAAOF,KAAK,SAAAF,GAAI,MAAK,CAAEM,OAAQH,EAASG,OAAQ4Y,KAAMlZ,OAClFE,KAAK,SAACG,GAEH,GAAsB,MAAlBA,EAAOC,OAEP,MAAMD,EAGV,OAAOA,IAWR,SAASmZ,GAAgBT,EAASU,GAGrC,IAAIT,EAAQlb,IAAQC,IAAI,QAExB,OAAO2B,MAAMC,IAAUC,WAAamZ,EACpC,CACIlZ,OAAQ,OACRC,QACA,CACImZ,cAAiB,UAAYD,GAEjChZ,KAAMyZ,IAETvZ,KAAK,SAACC,GAAD,OAAcA,EAASC,OAAOF,KAAK,SAAAF,GAAI,MAAK,CAAEM,OAAQH,EAASG,OAAQ4Y,KAAMlZ,OAClFE,KAAK,SAACG,GAEH,GAAsB,MAAlBA,EAAOC,OAEP,MAAMD,EAGV,OAAOA,IAyCR,SAASqZ,GAAgBX,EAASM,GAGrC,IAAIL,EAAQlb,IAAQC,IAAI,QAExB,OAAO2B,MAAMC,IAAUC,WAAamZ,EACpC,CACIlZ,OAAQ,OACRC,QACA,CACImZ,cAAiB,UAAYD,EAC7BjZ,eAAgB,oBAEpBC,KAAMsZ,KAAKC,UAAUF,KAExBnZ,KAAK,SAACC,GAEH,GAAwB,MAApBA,EAASG,OAET,MAAM,IAAI5E,MAAMyE,EAASG,QAG7B,OAAOH,EAASwZ,SCxLxB,IA0EeC,GA1EQ,CACrBC,YAAa,CACXlY,MAAO+B,GAAa,IAEtBoW,oBAAqB,CACnBpT,MAAO,OACP3D,OAAQ,QAEVkV,MAAO,CACLtW,MAAOkC,GAAU,GACjB0C,QAAS,cACTX,SAAU,OACVvC,WAAY,OACZoD,QAAS,CACPD,IAAK,MACLE,MAAO,OACP3D,OAAQ,OACR4C,SAAU,WACVzC,YAAa,MACbC,WAAY,OAEdyD,gDAAiD,CAC/CJ,IAAK,MACLZ,SAAU,OACVD,SAAU,WACVzC,YAAa,MACbC,WAAY,QAGhB4W,aAAc,CACZpY,MAAOkC,GAAU,GACjBiB,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXmD,WAAY,OACZ/C,aAAc,KAEhBgY,kBAAmB,CACjBrY,MAAO,QAAUS,GzBmDF,QyBnDyB,QACxC0C,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhBiY,UAAW,CACTtY,MAAOkC,GAAU,GACjBjC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAOkC,GAAU,GACjB/B,WAAY,MACZuB,WAAY,MAGhB3B,eAAgB,CACdC,MzB8Be,OyB7BfC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAOkC,GAAU,GACjB/B,WAAY,MACZuB,WAAY,OCrDZ6W,GACN,CACI,aACA,oBACA,eACA,6BAGEC,eAEF,SAAAA,EAAYvb,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAob,IACItb,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAod,GAAAjb,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVC,WAAY,GAPpBxb,mFAcSkV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAY7FnV,KAAKub,gBAVDvb,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,0DAWnB,IAAAsR,EAAAnO,KACI+Z,GAAO,eAAe5Y,KAAK,SAACG,GAGxB6M,EAAK9N,SACL,CACIgb,UAAS,EACTC,WAAYha,EAAO6Y,QAG3B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,0CAMzB,IACYjQ,EAAYlK,KAAKH,MAAjBqK,QADZkE,EAE4CpO,KAAKtC,MAArC2d,EAFZjN,EAEYiN,SAAUxe,EAFtBuR,EAEsBvR,MAAOye,EAF7BlN,EAE6BkN,WAEzB,OAAKD,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,UAAUsW,OAAK,EAACrD,MAAI,GACtC1W,EAAAC,EAAAC,cAACsc,GAAD,CAAU/Y,MAAM,WACZzD,EAAAC,EAAAC,cAACuc,GAAAxc,EAAD,OAEJD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ8Q,cAAtB,iBACA7b,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQgR,WAA4B,IAAfI,EAAmB,WAAcA,EAAa,aAElFnc,EAAAC,EAAAC,cAACwc,GAAD,CAAY3C,OAAK,GACjB/Z,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,UAAZ,yBAlBGpD,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,mCA5DjBnU,IAAMC,WAsFvBC,OAAWmY,GAAXnY,CAA2B0Y,yBC9FpCW,GAA4B,CAChC,uBAGIZ,GAA2B,CAC/B,2BACA,4BAGIa,eAEJ,SAAAA,EAAYnc,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAgc,IACElc,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAge,GAAA7b,KAAAH,KAAMH,KAEDnC,MACL,CACEb,MAAO,KACPwe,UAAU,EACVY,YAAa,GAPjBnc,mFAcWkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBAAuBH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAY7MnV,KAAKkc,iBAVDlc,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,2DAWnB,IAAAsR,EAAAnO,KACI+Z,GAAO,oBAAoB5Y,KAAK,SAACG,GAG7B6M,EAAK9N,SACL,CACIgb,UAAS,EACTY,YAAa3a,EAAO6Y,QAG5B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,0CAM3B,IACUjQ,EAAYlK,KAAKH,MAAjBqK,QADVkE,EAE2CpO,KAAKtC,MAAtCb,EAFVuR,EAEUvR,MAAOwe,EAFjBjN,EAEiBiN,SAAUY,EAF3B7N,EAE2B6N,YAEzB,OAAKZ,EAIIxe,EAGAsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAACoc,GAAD,KACEtc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,UAAUsW,OAAK,EAACrD,MAAI,GACpC1W,EAAAC,EAAAC,cAACsc,GAAD,CAAU/Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC8c,GAAA/c,EAAD,OAEFD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ8Q,cAAtB,eACA7b,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQgR,WAA4B,IAAhBe,EAAoB,UAAaA,EAAc,YAEpF9c,EAAAC,EAAAC,cAACwc,GAAD,CAAY3C,OAAK,GACf/Z,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,eAAZ,oCAlBGpD,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,oCA5DJnU,IAAMC,WAsF9BC,OAAWmY,GAAXnY,CAA2BsZ,wBC/FpCD,GAA4B,CAChC,uBAGIZ,GAA2B,CAC/B,2BACA,2BACA,4BAGIiB,eAEJ,SAAAA,EAAYvc,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAoc,IACEtc,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAoe,GAAAjc,KAAAH,KAAMH,KAEDnC,MACL,CACEb,MAAO,KACPwe,UAAU,EACVgB,YAAa,GAPjBvc,mFAcSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBACzFH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAY7FnV,KAAKsc,iBAVDtc,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,2DAWnB,IAAAsR,EAAAnO,KACI+Z,GAAO,oBAAoB5Y,KAAK,SAACG,GAG7B6M,EAAK9N,SACL,CACIgb,UAAS,EACTgB,YAAa/a,EAAO6Y,QAG5B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,0CAMzB,IACYjQ,EAAYlK,KAAKH,MAAjBqK,QADZkE,EAE6CpO,KAAKtC,MAAtC2d,EAFZjN,EAEYiN,SAAUxe,EAFtBuR,EAEsBvR,MAAOwf,EAF7BjO,EAE6BiO,YAEzB,OAAKhB,EAKIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAItEsC,EAAAC,EAAAC,cAACoc,GAAD,KACEtc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,UAAUsW,OAAK,EAACrD,MAAI,GACpC1W,EAAAC,EAAAC,cAACsc,GAAD,CAAU/Y,MAAM,WACdzD,EAAAC,EAAAC,cAACkd,GAAAnd,EAAD,OAEFD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ8Q,cAAtB,UACA7b,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQgR,WAA4B,IAAhBmB,EAAoB,UAAaA,EAAc,YAEpFld,EAAAC,EAAAC,cAACwc,GAAD,CAAY3C,OAAK,GACf/Z,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,eAAZ,+BAlBKpD,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,oCA9DRnU,IAAMC,WAwF9BC,OAAWmY,GAAXnY,CAA2B0Z,wBCjGpCL,GAA4B,CAChC,uBAGIS,eAEJ,SAAAA,EAAY3c,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAwc,IACE1c,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAwe,GAAArc,KAAAH,KAAMH,KAEDnC,MACL,CACEb,MAAO,KACPwe,UAAU,EACVoB,cAAe,GAPnB3c,mFAcSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,mBAY9FnV,KAAK0c,mBAVD1c,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,6DAWnB,IAAAsR,EAAAnO,KACI+Z,GAAO,sBAAsB5Y,KAAK,SAACG,GAG/B6M,EAAK9N,SACL,CACIgb,UAAS,EACToB,cAAenb,EAAO6Y,QAG9B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,0CAMzB,IACYjQ,EAAYlK,KAAKH,MAAjBqK,QADZkE,EAE+CpO,KAAKtC,MAAxC2d,EAFZjN,EAEYiN,SAAUxe,EAFtBuR,EAEsBvR,MAAO4f,EAF7BrO,EAE6BqO,cAEzB,OAAKpB,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAItEsC,EAAAC,EAAAC,cAACoc,GAAD,KACEtc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,UAAUsW,OAAK,EAACrD,MAAI,GACpC1W,EAAAC,EAAAC,cAACsc,GAAD,CAAU/Y,MAAM,WACdzD,EAAAC,EAAAC,cAACsd,GAAAvd,EAAD,OAEFD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ8Q,cAAtB,YACA7b,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQgR,WAA8B,IAAlBuB,EAAsB,YAAeA,EAAgB,cAE1Ftd,EAAAC,EAAAC,cAACwc,GAAD,CAAY3C,OAAK,GACf/Z,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,iBAAZ,iCAlBKpD,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,sCA5DNnU,IAAMC,WAsFhCC,OAAWmY,GAAXnY,CAA2B8Z,IC5FpCI,GACN,CACI,aACA,oBACA,eACA,6BAGEC,GAAkC,CACtC,uBAGIC,GAAuC,CAC3C,2BACA,4BAGIC,GAAuC,CAC3C,2BACA,2BACA,4BAGIC,GAAyC,CAC7C,6BACA,8BAGIC,oLAGkBjd,KAAKH,MAAjBqK,QAER,OACE/K,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAA,sBAAc2Q,KAAWC,aAAaC,SAAtC,KAIE8E,KAAQI,8BAA8BwH,GAA+B5M,KAAWC,aAAakF,mBAG3FhW,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAA,6BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAC+d,GAAD,KAEIpI,KAAQI,8BAA8BwH,GAA+B5M,KAAWC,aAAakF,mBAG3FhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACzCre,EAAAC,EAAAC,cAACoe,GAAD,OAIJ,OAMR,KAKAzI,KAAQC,8BAA8B4H,GAAiC7M,KAAWC,aAAakF,mBAG7FhW,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAA,0BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAC+d,GAAD,KAGIpI,KAAQI,8BAA8B0H,GAAsC9M,KAAWC,aAAakF,mBAGlGhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACzCre,EAAAC,EAAAC,cAACqe,GAAD,OAIJ,KAIA1I,KAAQI,8BAA8B2H,GAAsC/M,KAAWC,aAAakF,mBAGlGhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACzCre,EAAAC,EAAAC,cAACse,GAAD,OAIJ,KAIA3I,KAAQI,8BAA8B4H,GAAwChN,KAAWC,aAAakF,mBAGpGhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACzCre,EAAAC,EAAAC,cAACue,GAAD,OAIJ,OAOR,aAxFcpb,IAAMC,WAmGfC,OAAWmY,GAAXnY,CAA2Bua,ICtH3BY,GA7BS,CACtBC,WAAY,CACVC,0BAA2B,CACzBpW,MAAO,OACP3D,OAAQ,SAGZga,kBAAmB,CACjBC,SAAU,QACV/K,UAAW,QACXnN,OAAQ,eACRI,aAAc,MACdmO,SAAU,SACVlO,QAAS,IACTrB,UACE,0BACA1B,G/B6Ea,Q+B5Eb,gCACAA,G/B2Ea,Q+B1Eb,iCACAA,G/ByEa,Q+BxEb,SACF6a,oBAAqB,CACnBrb,UAAW,MAGfsb,gBAAiB,ICMJzb,WAAWmb,GAAXnb,CAtBf,SAAAqH,GAAkC,IAAAC,EAATnK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACxBG,EAA0DrK,EAA1DqK,QAASC,EAAiDtK,EAAjDsK,SAAUE,EAAuCxK,EAAvCwK,UAAW0N,EAA4BlY,EAA5BkY,MAAOC,EAAqBnY,EAArBmY,QAAYzN,EADzBvM,OAAAwM,EAAA,EAAAxM,CACkC6B,EADlC,sDAE1Bue,EAAoB1T,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EACjCE,EAAQ4T,YAAa,GADY9f,OAAA2M,EAAA,EAAA3M,CAAAgM,EAEjCE,EAAQ8T,kBAAoBhG,GAFKha,OAAA2M,EAAA,EAAA3M,CAAAgM,EAGjCE,EAAQiU,gBAAkBpG,GAHO/Z,OAAA2M,EAAA,EAAA3M,CAAAgM,EAIjCK,OAA0BxM,IAAdwM,GAJqBL,IAMpC,OACE7K,EAAAC,EAAAC,cAAA,MAAArB,OAAAC,OAAA,CAAKoM,UAAW+T,GAAuB7T,GACpCJ,KCNQkU,GAhBO,CACpBC,SAAU,CACRlY,QAAS,iBACToK,KAAM,WACN+N,cAAe,IACf3X,SAAU,YAEZ4X,cAAe,CACbta,YAAa,MACbD,aAAc,OAEhBwa,gBAAiB,CACf5b,UAAW,SCsBAH,WAAW2b,GAAX3b,CAtBf,SAAAqH,GAAgC,IAAAC,EAATnK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACtBG,EAA0DrK,EAA1DqK,QAASG,EAAiDxK,EAAjDwK,UAAWF,EAAsCtK,EAAtCsK,SAAU4N,EAA4BlY,EAA5BkY,MAAOC,EAAqBnY,EAArBmY,QAAYzN,EAD3BvM,OAAAwM,EAAA,EAAAxM,CACoC6B,EADpC,sDAExB6e,EAAkBhU,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EAC/BE,EAAQoU,UAAW,GADYtgB,OAAA2M,EAAA,EAAA3M,CAAAgM,EAE/BE,EAAQsU,cAAgBzG,GAFO/Z,OAAA2M,EAAA,EAAA3M,CAAAgM,EAG/BE,EAAQuU,gBAAkBzG,GAHKha,OAAA2M,EAAA,EAAA3M,CAAAgM,EAI/BK,OAA0BxM,IAAdwM,GAJmBL,IAMlC,OACE7K,EAAAC,EAAAC,cAAA,MAAArB,OAAAC,OAAA,CAAKoM,UAAWqU,GAAqBnU,GAClCJ,0BCkCQzH,WA1CA,CACbuY,kBAAmB,CACjBrY,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhBN,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,SA2BLR,CAvBf,SAAqB7C,GAAO,IAClBqK,EAAYrK,EAAZqK,QAER,OACE/K,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAC+d,GAAD,KACAje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACoc,GAAD,CAAMzD,SAAO,GACX7Y,EAAAC,EAAAC,cAACsf,GAAD,CAAY3G,SAAO,GACjB7Y,EAAAC,EAAAC,cAAA,OAAKyX,IAAK8H,KAAQ5H,IAAI,SAExB7X,EAAAC,EAAAC,cAACwf,GAAD,CAAU7G,SAAO,GACf7Y,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQ8Q,cAAehL,KAAWC,aAAa6O,aAAaC,MAC3E5f,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQgR,WAAYlL,KAAWC,aAAaC,UAC3D/Q,EAAAC,EAAAC,cAAA,2BAAmB2Q,KAAWC,aAAa+O,kHCsB1CC,GA1DI,SAAAnU,GAAK,MAAK,CAC3BoU,mBAAoB,CAClBtc,MAAO6B,GAAa,IAEtB0a,mBAAoB,CAClBvc,MAAO2B,GAAa,IAEtB6a,kBAAmB,CACjBxc,MAAO8B,GAAY,IAErB2a,mBAAoB,CAClBzc,MAAO+B,GAAa,IAEtB2a,gBAAiB,CACf1c,MAAOgC,GAAU,IAEnB2a,gBAAiB,CACf3c,MAAOiC,GAAU,IAEnB2a,gBAAiB,CACf5c,MAAOkC,GAAU,IAEnB2a,MAAO,CACLxc,aAAc,IACd0E,MAAO,OACPsW,SAAU,OACVtX,gBAAiB,cACjB+Y,cAAe,IACfC,eAAgB,YAElBC,cAAc5hB,OAAAuH,GAAA,EAAAvH,CAAA,CACZ4E,MAAO,WACJyB,GAFQ,CAGXwC,SAAU,MACV9D,WAAY,mBAEd8c,UAAU7hB,OAAAuH,GAAA,EAAAvH,CAAA,GACLqG,GADI,CAEPC,WAAY,aACZ8B,QAAS,WACTe,cAAe,WAEjB2Y,gBAAiB,CACf7b,aAAc,iBACd0D,MAAO,kBACPV,UAAW,SACXf,OAAO,QAET6Z,gBAAiB,CACfpY,MAAO,OACP9E,UAAgC,EAArBiI,EAAMkV,QAAQC,KACzBC,UAAW,QAEbC,cAAe,CACbjZ,WAAY,cCrDhB,SAASkZ,GAATrW,GAAmC,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACzBG,EAAoDrK,EAApDqK,QAASmW,EAA2CxgB,EAA3CwgB,UAAWC,EAAgCzgB,EAAhCygB,UAAWC,EAAqB1gB,EAArB0gB,iBACvC,OACEphB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ6V,iBACtB5gB,EAAAC,EAAAC,cAACmhB,GAAAphB,EAAD,CAAOiL,UAAWH,EAAQuV,YACT5hB,IAAdwiB,EACClhB,EAAAC,EAAAC,cAACohB,GAAArhB,EAAD,CAAWiL,UAAWH,EAAQqW,EAAmB,gBAC/CphB,EAAAC,EAAAC,cAACqhB,GAAAthB,EAAD,KACGihB,EAAUtP,IAAI,SAACC,EAAMC,GACpB,OACE9R,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CACEiL,UAAWH,EAAQ2V,UAAY,IAAM3V,EAAQ0V,cAC7C3O,IAAKA,GAEJD,OAMT,KACJ7R,EAAAC,EAAAC,cAACuhB,GAAAxhB,EAAD,KACGkhB,EAAUvP,IAAI,SAACC,EAAMC,GACpB,OACE9R,EAAAC,EAAAC,cAACqhB,GAAAthB,EAAD,CAAU6R,IAAKA,GACZD,EAAKD,IAAI,SAACC,EAAMC,GACf,OACE9R,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CAAWiL,UAAWH,EAAQ2V,UAAW5O,IAAKA,GAC3CD,WAavBoP,GAAYS,aAAe,CACzBN,iBAAkB,QAkBL7d,WAAWuc,GAAXvc,CAAuB0d,ICuCvB1d,WApGA,CACbuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OA2EH5B,CAtEf,SAAmB7C,GAAO,IAChBqK,EAAYrK,EAAZqK,QACR,OACE/K,EAAAC,EAAAC,cAAC+d,GAAD,KACEje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC5Bpe,EAAAC,EAAAC,cAACoc,GAAD,KACEtc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WAChBzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,gBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,sCAIF9b,EAAAC,EAAAC,cAACwf,GAAD,KACE1f,EAAAC,EAAAC,cAAC2hB,GAAD,CACET,iBAAiB,UACjBF,UAAW,CAAC,OAAQ,UAAW,OAAQ,UACvCC,UAAW,CACT,CAAC,cAAe,QAAS,eAAgB,WACzC,CAAC,iBAAkB,aAAW,cAAe,WAC7C,CAAC,iBAAkB,cAAe,UAAW,WAC7C,CAAC,gBAAiB,eAAgB,gBAAiB,WACnD,CAAC,eAAgB,SAAU,4BAA0B,WACrD,CAAC,eAAgB,QAAS,aAAc,iBAMlDnhB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC5Bpe,EAAAC,EAAAC,cAACoc,GAAD,CAAM1D,OAAK,GACT5Y,EAAAC,EAAAC,cAACqc,GAAD,CAAY3D,OAAK,EAACnV,MAAM,WACtBzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,6BAGAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,sCAIF9b,EAAAC,EAAAC,cAACwf,GAAD,KACE1f,EAAAC,EAAAC,cAAC2hB,GAAD,CACET,iBAAiB,UACjBF,UAAW,CAAC,KAAM,OAAQ,UAAW,OAAQ,UAC7CC,UAAW,CACT,CAAC,IAAK,cAAe,UAAW,QAAS,gBACzC,CAAC,IAAK,iBAAkB,UAAW,aAAW,eAC9C,CAAC,IAAK,iBAAkB,UAAW,cAAe,WAClD,CACE,IACA,gBACA,UACA,eACA,iBAEF,CACE,IACA,eACA,UACA,SACA,6BAEF,CAAC,IAAK,eAAgB,UAAW,QAAS,uBC9C3CW,GA7CS,CACtBC,iBAAiBljB,OAAAuH,GAAA,EAAAvH,CAAA,GACZqG,GADW,CAEdwC,SAAU,SAEZsa,qBAAsB,CACpBte,UAAW,OACXI,aAAc,QAEhBme,MAAO,CACLhb,QAAS,YACTL,OAAQ,WACRc,SAAU,SACVwa,WAAY,aAAevc,GAAU,KAEvCwc,UAAW,CACTvb,OAAQ,WACRwb,UAAW,UAEbC,YAAa,CACXha,QAAS,QACTX,SAAU,MACVvC,WAAY,aACZ1B,MAAOkC,GAAU,IAEnB2c,UAAW,CACT7e,MAAOkC,GAAU,IAEnB4c,YAAa,CACX9e,MAAO2B,GAAa,IAEtBod,SAAU,CACR/e,MAAOgC,GAAU,IAEnBkW,YAAa,CACXlY,MAAO+B,GAAa,IAEtBid,YAAa,CACXhf,MAAO6B,GAAa,IAEtBod,WAAY,CACVjf,MAAO8B,GAAY,KC5BRhC,WAAWue,GAAXve,CAhBf,SAAAqH,GAA6B,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACnBG,EAA0BrK,EAA1BqK,QAAS4X,EAAiBjiB,EAAjBiiB,KAAMC,EAAWliB,EAAXkiB,OACvB,OACE5iB,EAAAC,EAAAC,cAAA,cAAYgL,UAAWH,EAAQgX,iBAAmB,IAAMhX,EAAQkX,OAC9DjiB,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQoX,WAAYQ,GAClC3iB,EAAAC,EAAAC,cAAA,SAAOgL,UAAWH,EAAQsX,aAAcO,MCQ/Brf,WAAWue,GAAXve,CAbf,SAAAqH,GAA6B,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACnBG,EAAsBrK,EAAtBqK,QAASC,EAAatK,EAAbsK,SACjB,OACEhL,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgX,iBAAmB,IAAMhX,EAAQuX,WACtDtX,KCSQzH,WAAWue,GAAXve,CAbf,SAAAqH,GAA+B,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACrBG,EAAsBrK,EAAtBqK,QAASC,EAAatK,EAAbsK,SACjB,OACEhL,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgX,iBAAmB,IAAMhX,EAAQwX,aACtDvX,KCSQzH,WAAWue,GAAXve,CAbf,SAAAqH,GAA4B,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAClBG,EAAsBrK,EAAtBqK,QAASC,EAAatK,EAAbsK,SACjB,OACEhL,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgX,iBAAmB,IAAMhX,EAAQyX,UACtDxX,KCSQzH,WAAWue,GAAXve,CAbf,SAAAqH,GAA+B,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACrBG,EAAsBrK,EAAtBqK,QAASC,EAAatK,EAAbsK,SACjB,OACEhL,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgX,iBAAmB,IAAMhX,EAAQ4Q,aACtD3Q,KCSQzH,WAAWue,GAAXve,CAbf,SAAAqH,GAA+B,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACrBG,EAAsBrK,EAAtBqK,QAASC,EAAatK,EAAbsK,SACjB,OACEhL,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgX,iBAAmB,IAAMhX,EAAQ0X,aACtDzX,KCSQzH,WAAWue,GAAXve,CAbf,SAAAqH,GAA8B,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GACpBG,EAA+BrK,EAA/BqK,QAASC,EAAsBtK,EAAtBsK,SAAU6X,EAAYniB,EAAZmiB,QAC3B,OACE7iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAYH,EAAQgX,iBAAmB,IAAMhX,EAAQ2X,WAAalT,MAAO,CAACnH,SAAsB,IAAZwa,EAAoB,OAAS,UACnH7X,KCmJQzH,WA/ID,CACZuf,KAAM,CACJ/d,YAAa,MACbjB,aAAc,OACd2D,SAAU,YAEZsb,KAAM,CACJlf,WAAY,6CACZ8O,OAAQ,OACRlP,MAAO,UACP4E,QAAS,QACTzE,WAAY,MACZ8D,SAAU,OACVvC,WAAY,OACZyD,KAAM,IACN3D,WAAY,OACZwC,SAAU,WACVe,MAAO,SAETsT,kBAAmB,CACjBrY,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhBN,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,SA8GLR,CA3Gf,SAAwB7C,GAAO,IACrBqK,EAAYrK,EAAZqK,QACR,OACE/K,EAAAC,EAAAC,cAACoc,GAAD,KACEtc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WAChBzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,8BACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,qCAIF9b,EAAAC,EAAAC,cAACwf,GAAD,KACE1f,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,YACA/iB,EAAAC,EAAAC,cAAA,6CAEFF,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,YACA/iB,EAAAC,EAAAC,cAAA,6CAEFF,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,YACA/iB,EAAAC,EAAAC,cAAA,6CAEFF,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,YACA/iB,EAAAC,EAAAC,cAAA,6CAEFF,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,YACA/iB,EAAAC,EAAAC,cAAA,6CAEFF,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,YACA/iB,EAAAC,EAAAC,cAAA,6CAEFF,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,aACA/iB,EAAAC,EAAAC,cAAA,oSAQFF,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,SACA/iB,EAAAC,EAAAC,cAAC8iB,GAAD,CACEL,KAAK,yRACLC,OAAO,2BAGX5iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,cACA/iB,EAAAC,EAAAC,cAAC+iB,GAAD,sHAKFjjB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,gBACA/iB,EAAAC,EAAAC,cAACgjB,GAAD,sHAKFljB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,aACA/iB,EAAAC,EAAAC,cAACijB,GAAD,sHAKFnjB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,gBACA/iB,EAAAC,EAAAC,cAACkjB,GAAD,sHAKFpjB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,gBACA/iB,EAAAC,EAAAC,cAACmjB,GAAD,sHAKFrjB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,eACA/iB,EAAAC,EAAAC,cAACojB,GAAD,sHAKFtjB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ+X,MACtB9iB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQgY,MAAxB,aACA/iB,EAAAC,EAAAC,cAAA,uCAEEF,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAA,sDCzGGqjB,GAtCI,CACjBC,OAAO3kB,OAAAuH,GAAA,EAAAvH,CAAA,CACL2J,MAAO,OACP3D,OAAQ,QACRkC,OAAQ,KACLnB,IAEL6d,gBAAiB,CACf7c,OAAQ,aAEVkV,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,QAAUS,GhD6EJ,QgD7E2B,QACxC0C,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MhDsEa,SgDnEjBD,eAAgB,CACdC,MhDkEe,OgDjEfC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAOkC,GAAU,GACjB/B,WAAY,MACZuB,WAAY,OC8BH5B,WAAWggB,GAAXhgB,CAxDf,SAAe7C,GAAO,IACZqK,EAAYrK,EAAZqK,QACR,OACE/K,EAAAC,EAAAC,cAAC+d,GAAD,KACEje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC5Bpe,EAAAC,EAAAC,cAACoc,GAAD,CAAM1D,OAAK,GACT5Y,EAAAC,EAAAC,cAACqc,GAAD,CAAY3D,OAAK,EAACnV,MAAM,WACtBzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,yBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,kCACkC,IAChC9b,EAAAC,EAAAC,cAAA,KACE+C,KAAK,mCACL6L,OAAO,SACP4U,IAAI,uBAHN,YASJ1jB,EAAAC,EAAAC,cAACwf,GAAD,KACE1f,EAAAC,EAAAC,cAACwQ,GAAAzQ,EAAD,CAAQ0jB,KAAM,CAAC,KAAM,OACnB3jB,EAAAC,EAAAC,cAAA,UACEgL,UAAWH,EAAQyY,OACnB7L,IAAI,6BACJzQ,MAAM,gBAENlH,EAAAC,EAAAC,cAAA,qDAGJF,EAAAC,EAAAC,cAACwQ,GAAAzQ,EAAD,CAAQ0jB,KAAM,CAAC,KAAM,OACnB3jB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC5Bpe,EAAAC,EAAAC,cAAA,6LAIEF,EAAAC,EAAAC,cAAA,KACE+C,KAAK,mCACL6L,OAAO,SACP4U,IAAI,uBAHN,yFCiFHE,GA9Gc,CAC3BC,KAAKhlB,OAAAuH,GAAA,EAAAvH,CAAA,GACAqG,GADD,CAEF4e,SAAU,QACVrc,SAAU,WACVR,QAAS,YACT9B,WAAY,OACZrB,aAAc,OACd4D,SAAU,OACVF,gBlDmEe,OkDlEf/D,MAAOkC,GAAU,GACjBqB,aAAc,MACdO,SAAU,QACVuX,SAAU,QACVlZ,UACE,0BACA1B,GlD4Da,QkD3Db,gCACAA,GlDyDa,QkDxDb,gCACAA,GlDwDa,QkDvDb,WAEJ6f,MAAO,CACLzb,IAAK,QAEP0b,MAAO,CACL1b,IAAK,QAEP1K,KAAKiB,OAAAuH,GAAA,EAAAvH,CAAA,CACH2I,gBAAiB/B,GAAU,GAC3BhC,MlD6Ce,QkD5CZqC,IAELoD,QAAQrK,OAAAuH,GAAA,EAAAvH,CAAA,CACN2I,gBAAiBhC,GAAa,GAC9B/B,MlDwCe,QkDvCZsC,IAELoD,QAAQtK,OAAAuH,GAAA,EAAAvH,CAAA,CACN2I,gBAAiBlC,GAAa,GAC9B7B,MlDmCe,QkDlCZuC,IAELoD,OAAOvK,OAAAuH,GAAA,EAAAvH,CAAA,CACL2I,gBAAiBjC,GAAY,GAC7B9B,MlD8Be,QkD7BZwC,IAEL+C,QAAQnK,OAAAuH,GAAA,EAAAvH,CAAA,CACN2I,gBAAiBpC,GAAa,GAC9B3B,MlDyBe,QkDxBZoC,IAELkD,KAAKlK,OAAAuH,GAAA,EAAAvH,CAAA,CACH2I,gBAAiB9B,GAAU,GAC3BjC,MlDoBe,QkDnBZyC,IAEL7I,QAAS,CACP4J,QAAS,IACToB,QAAS,QACTyW,SAAU,OAEZmF,MAAO,CACLzb,MAAO,OACP3D,OAAQ,QAEVqf,WAAY,CACV1b,MAAO,OACP3D,OAAQ,OACRoC,QAAS,OAEXyP,KAAM,CACJrO,QAAS,QACTO,KAAM,OACNnB,SAAU,WACVa,IAAK,MACL5E,UAAW,QACX8E,MAAO,OACP3D,OAAQ,QAEVsf,SAAU,CACR1gB,MAAOgC,GAAU,IAEnB2e,YAAa,CACX3gB,MAAO+B,GAAa,IAEtB6e,YAAa,CACX5gB,MAAO6B,GAAa,IAEtBgf,WAAY,CACV7gB,MAAO8B,GAAY,IAErBgf,YAAa,CACX9gB,MAAO2B,GAAa,IAEtBof,SAAU,CACR/gB,MAAOiC,GAAU,IAEnB+e,YAAa,CACX1f,YAAa,OACbsD,QAAS,SAEXqc,UAAW,CACTzf,WAAY,OACZD,YAAa,SCrEFzB,WAAWqgB,GAAXrgB,CA7Cf,SAAAqH,GAAuC,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAC7BG,EAAoDrK,EAApDqK,QAAS1N,EAA2CqD,EAA3CrD,QAASoG,EAAkC/C,EAAlC+C,MAAOwgB,EAA2BvjB,EAA3BujB,MAAOvN,EAAoBhW,EAApBgW,KAAMzE,EAAcvR,EAAduR,UAC1CtT,EAAS,GACPgmB,EAAiBpZ,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAC/BkM,EAAQ0Z,iBAAuB/lB,IAATgY,IAczB,YAZchY,IAAVulB,IACFtlB,EAAS,CACPqB,EAAAC,EAAAC,cAACoS,EAAArS,EAAD,CACEiL,UAAWH,EAAQmZ,WACnBpS,IAAI,QACJvB,aAAW,QACX9M,MAAM,WAENzD,EAAAC,EAAAC,cAAC0kB,GAAA3kB,EAAD,CAAOiL,UAAWH,EAAQkZ,WAK9BjkB,EAAAC,EAAAC,cAAC2kB,GAAA5kB,EAAD,CACE5C,QACE2C,EAAAC,EAAAC,cAAA,gBACYxB,IAATgY,EAAqB1W,EAAAC,EAAAC,cAACQ,EAAMgW,KAAP,CAAYxL,UAAWH,EAAQ2L,OAAW,KAChE1W,EAAAC,EAAAC,cAAA,QAAMgL,UAAWyZ,GAAiBtnB,IAGtC0N,QAAS,CACP8Y,KAAM9Y,EAAQ8Y,KAAO,IAAM9Y,EAAQtH,GACnCpG,QAAS0N,EAAQ1N,QACjBsB,OAAQ4M,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAAGkM,EAAQ2Z,UAAYzS,KAE5CtT,OAAQA,2BCsCC4E,WAAWqgB,GAAXrgB,CArEf,SAAAqH,GAAgC,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAE5BG,EAQErK,EARFqK,QACA1N,EAOEqD,EAPFrD,QACAoG,EAME/C,EANF+C,MACAwgB,EAKEvjB,EALFujB,MACAvN,EAIEhW,EAJFgW,KACAoO,EAGEpkB,EAHFokB,MACAvW,EAEE7N,EAFF6N,KACA0D,EACEvR,EADFuR,UAEEtT,EAAS,GACPgmB,EAAiBpZ,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAC/BkM,EAAQ0Z,iBAAuB/lB,IAATgY,IAezB,YAbchY,IAAVulB,IACFtlB,EAAS,CACPqB,EAAAC,EAAAC,cAACoS,EAAArS,EAAD,CACEiL,UAAWH,EAAQmZ,WACnBpS,IAAI,QACJvB,aAAW,QACX9M,MAAM,UACNuM,QAAS,kBAAMtP,EAAMqkB,sBAErB/kB,EAAAC,EAAAC,cAAC0kB,GAAA3kB,EAAD,CAAOiL,UAAWH,EAAQkZ,WAK9BjkB,EAAAC,EAAAC,cAAC8kB,GAAA/kB,EAAD,CACEglB,aAAc,CACZC,UAAkC,IAAxBJ,EAAMtP,QAAQ,KAAc,SAAW,MACjD2P,YAC0B,IAAxBL,EAAMtP,QAAQ,KACV,QACwB,IAAxBsP,EAAMtP,QAAQ,KACd,SACA,SAERjH,KAAMA,EACNlR,QACE2C,EAAAC,EAAAC,cAAA,gBACYxB,IAATgY,EAAqB1W,EAAAC,EAAAC,cAACQ,EAAMgW,KAAP,CAAYxL,UAAWH,EAAQ2L,OAAW,KAChE1W,EAAAC,EAAAC,cAAA,QAAMgL,UAAWyZ,GAAiBtnB,IAGtCsB,OAAQA,EACRymB,aAAc,CACZra,QAAS,CACP8Y,KAAM9Y,EAAQ8Y,KAAO,IAAM9Y,EAAQtH,GACnCpG,QAAS0N,EAAQ1N,QACjBsB,OAAQ4M,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAAGkM,EAAQ2Z,UAAYzS,UCjB9CoT,eACJ,SAAAA,EAAY3kB,GAAO,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAwkB,IACjB1kB,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAwmB,GAAArkB,KAAAH,KAAMH,KACDnC,MAAQ,CACX+mB,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,GARWhlB,sFAcjB,IADA,IAAI4O,EAAKxM,OAAO6iB,WAAW,KAAM,GAC1BrW,KACLxM,OAAO8iB,aAAatW,4CAGPuV,GACf,IAAIgB,EAAI,GACRA,EAAEhB,IAAS,EACXjkB,KAAKK,SAAS4kB,GACdjlB,KAAKklB,aAAeH,WAClB,WACEE,EAAEhB,IAAS,EACXjkB,KAAKK,SAAS4kB,IACdE,KAAKnlB,MACP,sCAGK,IAAAmO,EAAAnO,KACCkK,EAAYlK,KAAKH,MAAjBqK,QACR,OACE/K,EAAAC,EAAAC,cAACoc,GAAD,KACEtc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WAChBzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,iBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,kCACkC,IAChC9b,EAAAC,EAAAC,cAAA,KAAG4O,OAAO,SAAS7L,KAAK,iCAAxB,eAEK,IAJP,gBAKgB,IACdjD,EAAAC,EAAAC,cAAA,KAAG4O,OAAO,SAAS7L,KAAK,iCAAxB,gBANF,wBASwB,IACtBjD,EAAAC,EAAAC,cAAA,KAAG+C,KAAK,SAAS6L,OAAO,UAAxB,sBAVF,MAgBF9O,EAAAC,EAAAC,cAACwf,GAAD,KACE1f,EAAAC,EAAAC,cAAC+d,GAAD,KACEje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC5Bpe,EAAAC,EAAAC,cAAA,iCACAF,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAC+lB,GAAD,CAAiB5oB,QAAS,iCAC1B2C,EAAAC,EAAAC,cAAC+lB,GAAD,CACE5oB,QAAS,4CACT4mB,OAAK,IAEPjkB,EAAAC,EAAAC,cAAC+lB,GAAD,CACE5oB,QAAS,qDACT4mB,OAAK,EACLvN,KAAMwP,OAERlmB,EAAAC,EAAAC,cAAC+lB,GAAD,CACE5oB,QACE,qOAEF4mB,OAAK,EACLvN,KAAMwP,QAGVlmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC5Bpe,EAAAC,EAAAC,cAAA,kCACAF,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAC+lB,GAAD,CACE5oB,QACE,+DAEF4mB,OAAK,EACLxgB,MAAM,SAERzD,EAAAC,EAAAC,cAAC+lB,GAAD,CACE5oB,QACE,qEAEF4mB,OAAK,EACLxgB,MAAM,YAERzD,EAAAC,EAAAC,cAAC+lB,GAAD,CACE5oB,QACE,qEAEF4mB,OAAK,EACLxgB,MAAM,YAERzD,EAAAC,EAAAC,cAAC+lB,GAAD,CACE5oB,QACE,mEAEF4mB,OAAK,EACLxgB,MAAM,WAERzD,EAAAC,EAAAC,cAAC+lB,GAAD,CACE5oB,QACE,qEAEF4mB,OAAK,EACLxgB,MAAM,cAIZzD,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACrBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,EAAG5O,MAAO,CAAE1H,UAAW,WACnD9H,EAAAC,EAAAC,cAAA,iCAEEF,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAA,+CAINF,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACrBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GACpClK,EAAAC,EAAAC,cAAC+d,GAAD,KACEje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC5Bpe,EAAAC,EAAAC,cAAC+P,GAAD,CACEmW,WAAS,EACT3iB,MAAM,UACNuM,QAAS,kBAAMhB,EAAKqX,iBAAiB,QAHvC,YAOArmB,EAAAC,EAAAC,cAAComB,GAAD,CACExB,MAAM,KACNrhB,MAAM,OACNiT,KAAMwP,KACN7oB,QAAQ,qFACRkR,KAAM1N,KAAKtC,MAAM+mB,GACjBP,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEokB,IAAI,KAC7CrB,OAAK,KAGTjkB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC5Bpe,EAAAC,EAAAC,cAAC+P,GAAD,CACEmW,WAAS,EACT3iB,MAAM,UACNuM,QAAS,kBAAMhB,EAAKqX,iBAAiB,QAHvC,cAOArmB,EAAAC,EAAAC,cAAComB,GAAD,CACExB,MAAM,KACNrhB,MAAM,OACNiT,KAAMwP,KACN7oB,QAAQ,qFACRkR,KAAM1N,KAAKtC,MAAMgnB,GACjBR,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEqkB,IAAI,KAC7CtB,OAAK,KAGTjkB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC5Bpe,EAAAC,EAAAC,cAAC+P,GAAD,CACEmW,WAAS,EACT3iB,MAAM,UACNuM,QAAS,kBAAMhB,EAAKqX,iBAAiB,QAHvC,aAOArmB,EAAAC,EAAAC,cAAComB,GAAD,CACExB,MAAM,KACNrhB,MAAM,OACNiT,KAAMwP,KACN7oB,QAAQ,aACRkR,KAAM1N,KAAKtC,MAAMinB,GACjBT,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEskB,IAAI,KAC7CvB,OAAK,QAMfjkB,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAS,UACtBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GACpClK,EAAAC,EAAAC,cAAC+d,GAAD,KACEje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC5Bpe,EAAAC,EAAAC,cAAC+P,GAAD,CACEmW,WAAS,EACT3iB,MAAM,UACNuM,QAAS,kBAAMhB,EAAKqX,iBAAiB,QAHvC,eAOArmB,EAAAC,EAAAC,cAAComB,GAAD,CACExB,MAAM,KACNrhB,MAAM,OACNiT,KAAMwP,KACN7oB,QAAQ,qFACRkR,KAAM1N,KAAKtC,MAAMknB,GACjBV,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEukB,IAAI,KAC7CxB,OAAK,KAGTjkB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC5Bpe,EAAAC,EAAAC,cAAC+P,GAAD,CACEmW,WAAS,EACT3iB,MAAM,UACNuM,QAAS,kBAAMhB,EAAKqX,iBAAiB,QAHvC,iBAOArmB,EAAAC,EAAAC,cAAComB,GAAD,CACExB,MAAM,KACNrhB,MAAM,OACNiT,KAAMwP,KACN7oB,QAAQ,qFACRkR,KAAM1N,KAAKtC,MAAMmnB,GACjBX,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEwkB,IAAI,KAC7CzB,OAAK,KAGTjkB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC5Bpe,EAAAC,EAAAC,cAAC+P,GAAD,CACEmW,WAAS,EACT3iB,MAAM,UACNuM,QAAS,kBAAMhB,EAAKqX,iBAAiB,QAHvC,gBAOArmB,EAAAC,EAAAC,cAAComB,GAAD,CACExB,MAAM,KACNrhB,MAAM,OACNiT,KAAMwP,KACN7oB,QAAQ,qFACRkR,KAAM1N,KAAKtC,MAAMonB,GACjBZ,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEykB,IAAI,KAC7C1B,OAAK,iBAjPG5gB,IAAMC,WA6PnBC,OA3RA,CACbuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAkQH5B,CAAmB8hB,iXCvOnBkB,GA5DU,CACvBxc,SAAU,CACRyc,WAAY,CACVhf,gBAAiB,2BAGrBif,UAAW,CACTC,yCAA0C,CACxCC,YAAahhB,GAAU,GAAK,cAC5BihB,YAAa,kBAEfpT,UAAW,CACTmT,YAAavhB,GAAa,KAG9ByhB,eAAgB,CACdrT,UAAW,CACTmT,YAAaphB,GAAY,KAG7BuhB,iBAAkB,CAChBtT,UAAW,CACTmT,YAAanhB,GAAa,KAG9BuhB,UAAUloB,OAAAuH,GAAA,EAAAvH,CAAA,GACLqG,GADI,CAEPzB,MAAOkC,GAAU,GAAK,cACtB/B,WAAY,MACZ8D,SAAU,OACVvC,WAAY,YAEd6hB,eAAgB,CACdvjB,MAAO8B,GAAY,IAErB0hB,iBAAkB,CAChBxjB,MAAO+B,GAAa,IAEtB0hB,SAAU,CACRzf,SAAU,WACVa,IAAK,OACL4F,MAAO,IACPlC,OAAQ,IACR3D,QAAS,QACTG,MAAO,OACP3D,OAAQ,OACRiD,UAAW,SACXmC,cAAe,QAEjBvG,UAAW,CACTA,UAAW,QAEbyjB,YAAa,CACXzZ,cAAe,OACf9G,OAAQ,aACRa,SAAU,WACVO,cAAe,yCCrCJzE,6BApBA,GAoBAA,CAjBf,SAAAqH,GAAuC,IAATlK,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAE/B+X,EAEAjiB,EAFAiiB,KAIJ,OANmC9jB,OAAAwM,EAAA,EAAAxM,CAI/B6B,EAJ+B,UAO/BV,EAAAC,EAAAC,cAAA,OAAKgH,MAAOyb,GACR3iB,EAAAC,EAAAC,cAACknB,GAAAnnB,EAAD,CAAUuP,MAAO,CAAC/L,MAAO,gBCwFtBF,WAAWgjB,GAAXhjB,CAzFf,SAAAqH,GAAmC,IAAAC,EAAAwc,EAAT3mB,EAAS7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAGvBG,EAYArK,EAZAqK,QACAuc,EAWA5mB,EAXA4mB,iBACAC,EAUA7mB,EAVA6mB,UACAhY,EASA7O,EATA6O,GACAiY,EAQA9mB,EARA8mB,WACAC,EAOA/mB,EAPA+mB,WACA/pB,EAMAgD,EANAhD,MACAwL,EAKAxI,EALAwI,QACAwe,EAIAhnB,EAJAgnB,UACAC,EAGAjnB,EAHAinB,KACAC,EAEAlnB,EAFAknB,cACApF,EACA9hB,EADA8hB,SAGFqF,EAAetc,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EAC1B,IAAME,EAAQic,eAAiBtpB,GADLmB,OAAA2M,EAAA,EAAA3M,CAAAgM,EAE1B,IAAME,EAAQkc,iBAAmB/d,IAAYxL,GAFnBmN,IAKzBid,EAAmBvc,KAAU8b,EAAA,GAAAxoB,OAAA2M,EAAA,EAAA3M,CAAAwoB,EAC9Btc,EAAQ8b,eAAiBnpB,GADKmB,OAAA2M,EAAA,EAAA3M,CAAAwoB,EAE9Btc,EAAQ+b,iBAAmB5d,IAAYxL,GAFTmB,OAAA2M,EAAA,EAAA3M,CAAAwoB,EAG9Btc,EAAQ0b,WAAY,GAHUY,IAM7B3jB,EAAY6H,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GACxBkM,EAAQrH,eAA0BhF,IAAd6oB,IAGzB,OACIvnB,EAAAC,EAAAC,cAAC6nB,GAAA9nB,EAADpB,OAAAC,OAAA,GAAiBwoB,EAAjB,CAAmCpc,UAAWoc,EAAiBpc,UAAY,IAAMH,EAAQoc,mBAEnEzoB,IAAd6oB,EAEQvnB,EAAAC,EAAAC,cAAC8nB,GAAA/nB,EAADpB,OAAAC,OAAA,CAAYoM,UAAWH,EAAQgc,UAAYc,EAAcI,QAAS1Y,GAAQiY,GACrED,GAEL,KAGZvnB,EAAAC,EAAAC,cAACgoB,GAAAjoB,EAAD,CAAO8K,QACF,CACG8Y,KAAMngB,EACNqG,SAAUgB,EAAQhB,SAClB0c,UAAWqB,GAEfvY,GAAIA,EAAIkY,WAAYA,EACpBU,SAAU,SAACxZ,GAAD,OAAWiZ,EAAgBA,EAAcjZ,EAAMG,OAAOsZ,OAAS,MACzEV,UAAWA,EACXC,KAAMA,EACNU,aACI7F,EAEAxiB,EAAAC,EAAAC,cAACooB,GAAD,CAAiB3F,KAAMH,IACrB,OAIN9kB,EAEQsC,EAAAC,EAAAC,cAACqoB,GAAAtoB,EAAD,CAAOiL,UAAWH,EAAQmc,SAAW,IAAMnc,EAAQic,iBACnD9d,EAEIlJ,EAAAC,EAAAC,cAACsoB,GAAAvoB,EAAD,CAAOiL,UAAWH,EAAQmc,SAAW,IAAMnc,EAAQkc,mBACnD,QCtD5B,SAASwB,GAAT7d,GACA,IAD8BlK,EAC9B7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAGIG,EAiCErK,EAjCFqK,QAEAmW,EA+BExgB,EA/BFwgB,UACAC,EA8BEzgB,EA9BFygB,UACAuH,EA6BEhoB,EA7BFgoB,iBAEAtH,EA2BE1gB,EA3BF0gB,iBAEAuH,EAyBEjoB,EAzBFioB,sBACAC,EAwBEloB,EAxBFkoB,oBACAC,EAuBEnoB,EAvBFmoB,iBAEAC,EAqBEpoB,EArBFooB,uBAEAC,EAmBEroB,EAnBFqoB,YAEAC,EAiBEtoB,EAjBFsoB,YAEAC,EAeEvoB,EAfFuoB,eACAC,EAcExoB,EAdFwoB,cAEAC,EAYEzoB,EAZFyoB,eACAC,EAWE1oB,EAXF0oB,kBACAC,EAUE3oB,EAVF2oB,eAEAC,EAQE5oB,EARF4oB,kBACAC,EAOE7oB,EAPF6oB,uBACAC,EAME9oB,EANF8oB,0BACAC,EAKE/oB,EALF+oB,sBACAC,EAIEhpB,EAJFgpB,oBACAC,EAGEjpB,EAHFipB,eACAC,EAEElpB,EAFFkpB,oBACAC,EACEnpB,EADFmpB,WAnCJC,EAsCsCzmB,IAAM0mB,UAAS,GAtCrDC,EAAAnrB,OAAAorB,GAAA,EAAAprB,CAAAirB,EAAA,GAsCSI,EAtCTF,EAAA,GAsCqBG,EAtCrBH,EAAA,GAAAI,EAuCsD/mB,IAAM0mB,SAAS,IAvCrEM,EAAAxrB,OAAAorB,GAAA,EAAAprB,CAAAurB,EAAA,GAuCSE,EAvCTD,EAAA,GAuC6BE,EAvC7BF,EAAA,GAAAG,EAwC0BnnB,IAAM0mB,UAAS,GAxCzCU,EAAA5rB,OAAAorB,GAAA,EAAAprB,CAAA2rB,EAAA,GAwCSjc,EAxCTkc,EAAA,GAwCeC,EAxCfD,EAAA,GAAAE,EAyCkDtnB,IAAM0mB,UAAS,GAzCjEa,EAAA/rB,OAAAorB,GAAA,EAAAprB,CAAA8rB,EAAA,GAyCSE,EAzCTD,EAAA,GAyC2BE,EAzC3BF,EAAA,GAAAG,EA0C0C1nB,IAAM0mB,SAASH,GAA4C,OA1CrGoB,EAAAnsB,OAAAorB,GAAA,EAAAprB,CAAAksB,EAAA,GA0CSE,EA1CTD,EAAA,GA0CuBE,EA1CvBF,EAAA,GAAAG,EA2CgC9nB,IAAM0mB,SAASJ,GAAkC,IA3CjFyB,EAAAvsB,OAAAorB,GAAA,EAAAprB,CAAAssB,EAAA,GA2CSE,EA3CTD,EAAA,GA2CkBE,EA3ClBF,EAAA,GAkDQG,EAAkB,SAACC,GAEvBd,GAAQ,GACRI,EAAoBU,IAGtB,SAAS9c,IACPgc,GAAQ,GAoFV,SAASe,GAAqBC,EAAMC,EAAMN,GAExC,IAAIO,EAAkB,GAClBC,EAAkB,GAGtB,GAAIR,EAAQS,SAAS,KACrB,CACE,IAAIC,EAAeV,EAAQW,MAAM,KAEjCJ,EAAkBF,EAAKK,EAAa,IAAIA,EAAa,IACrDF,EAAkBF,EAAKI,EAAa,IAAIA,EAAa,SAIrDH,EAAkBF,EAAKL,GACvBQ,EAAkBF,EAAKN,GAIzB,GAAuB,MAAnBO,EAEA,OAAQ,EAEP,GAAuB,MAAnBC,EAEL,OAAO,EAIX,GAAIjD,GAAuBA,EAAoBkD,SAAST,GACxD,CACE,GAAIQ,EAAkBD,EAAkB,EAEtC,OAAQ,EAEV,GAAIC,EAAkBD,EAAkB,EAEtC,OAAO,OAGN,GAAI/C,GAAoBA,EAAiBiD,SAAST,GACvD,CAEE,IAAIY,EAAiBL,EAAgBI,MAAM,KACvCE,EAAiBL,EAAgBG,MAAM,KAEvCG,EAAQF,EAAe,GAAGD,MAAM,KAChCI,EAAQF,EAAe,GAAGF,MAAM,KAGpC,GAAIC,EAAe,IAAMC,EAAe,GACxC,CACE,IAAIG,EAAQJ,EAAe,GAAGD,MAAM,KAChCM,EAAQJ,EAAe,GAAGF,MAAM,KAEpCJ,EAAkB,IAAI9Y,KAAKqZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIE,EAAM,GAAIA,EAAM,IACzER,EAAkB,IAAI/Y,KAAKsZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIE,EAAM,GAAIA,EAAM,SAIzEV,EAAkB,IAAI9Y,KAAKqZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,IACrDN,EAAkB,IAAI/Y,KAAKsZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAGvD,GAAIP,EAAkBD,EAEpB,OAAQ,EAEV,GAAIC,EAAkBD,EAEpB,OAAO,OAGN,GAAIjD,GAAyBA,EAAsBmD,SAAST,GACjE,CACE,IAAIkB,EAAa,CACfC,IAAO,EACPC,IAAO,EACPC,IAAO,EACPC,IAAO,EACPC,IAAO,EACPC,IAAO,EACPC,IAAO,GAGLC,EAASR,EAAWX,GACpBoB,EAAST,EAAWV,GAExB,GAAIkB,EAASC,EAEX,OAAQ,EAEL,GAAID,EAASC,EAEhB,OAAO,MAIX,CAIE,GAHApB,EAAkBA,EAAgBqB,YAClCpB,EAAkBA,EAAgBoB,YAEdC,cAAgBtB,EAAgBsB,cAElD,OAAQ,EAEV,GAAIrB,EAAgBqB,cAAgBtB,EAAgBsB,cAElD,OAAO,EAIX,OAAO,EAiCT,IAAMC,GAAiBC,aAAW,SAAApc,GAAA,IAAEqc,EAAFrc,EAAEqc,OAAQC,EAAVtc,EAAUsc,WAAYC,EAAtBvc,EAAsBuc,SAAUC,EAAhCxc,EAAgCwc,QAAhC,OAChCxtB,EAAAC,EAAAC,cAACqhB,GAAAthB,EAAD,CAAUwtB,MAAO1E,EAAavZ,MAE5B3Q,OAAOC,OAAO,GACdiqB,EAAcuE,EAAa,MAE3Bxb,IAAKub,EAAQK,SAAWpD,EAAmBwB,SAASyB,GAAYvd,QAEhE,WAME,GAHAma,GAAeD,GAGVnB,EAUL,GAJIO,GACFA,EAAkBiE,GAGhBvE,EACJ,CAEE,IAAI2E,EAAU3E,EAAY4E,MAAM,eAE5BC,EAAU7E,EAMd,GAAI2E,EACJ,CACE,IAAIG,EAAYH,EAAQ,GACpBI,EAAgBR,EAASO,GAE7BD,EAAUA,EAAQzpB,QAAQupB,EAAQ,GAAII,GAGxCP,EAAQQ,KAAKH,QAIV,GAAI5E,GAAkBC,EAEzB,GAAIA,EAAc4C,SAASyB,GAC3B,CACE,IAAIU,EAAY/E,EAAc1T,QAAQ+X,GACtCrE,EAAcgF,OAAOD,EAAW,GAEhC1D,EAAsBrB,QAItBA,EAAc8E,KAAKT,GACnBhD,EAAsBrB,KA+IlC,SAA2CiF,EAAYC,GAIrD,IAFA,IAAIC,EAAqB,GAEhBC,EAAI,EAAGA,EAAIF,EAAK3vB,OAAQ6vB,IACjC,CAEE,IAAIxc,EAAMsc,EAAKE,GAEXC,EAAYzc,EAAIka,MAAM,KAGtBwC,EAAeL,EAAWI,EAAU,IAEnB,OAAjBC,EAOAD,EAAU9vB,OAAS,EAErB4vB,EAAmBL,KAAKG,EAAWI,EAAU,IAAIA,EAAU,KAI3DF,EAAmBL,KAAKQ,GAXxBH,EAAmBL,KAAK,IAe5B,OAAOK,EAxKHI,CAAkClB,EAAU7E,GAAkB9W,IAAI,SAAC8c,EAAUC,GAE3E,OAA0B,MAAtBpB,EAAQ,QAENA,EAAQ,OAAWN,WAAWnB,SAAS,WAGvC9rB,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CAAWiL,UAAWH,EAAQ2V,UAAWlR,MAAO,CAAChI,gBAAiB,UAAW/D,MAAO,SAAUqO,IAAK6c,GAI9FxF,IAAmBwF,EAClB3uB,EAAAC,EAAAC,cAAA,KAAGsP,MAAO8d,EAAYtd,QAAS,kBAAMub,EAAgBmD,KAAYtF,GACjEsF,EAASzB,YAuBjBjtB,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CAAWiL,UAAWH,EAAQ2V,UAAW5O,IAAK6c,GAIzCxF,IAAmBwF,EAClB3uB,EAAAC,EAAAC,cAAA,KAAGsP,MAAO8d,EAAYtd,QAAS,kBAAMub,EAAgBmD,KAAYtF,GACjEsF,EAASzB,cAWrBxD,GAAyBC,GAAuBH,GAA0BC,EAE1ExpB,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CAAWiL,UAAWH,EAAQ4V,gBAAiB7O,IAAK,MAEhDyX,EAAyBvpB,EAAAC,EAAAC,cAAC0uB,GAAA3uB,EAAD,CAAauP,MAAO8d,EAAYtd,QAAS,kBAAMuZ,EAAuBgE,MAAe,KAG9G/D,EAA4BxpB,EAAAC,EAAAC,cAAC2uB,GAAA5uB,EAAD,CAAgBuP,MAAO8d,EAAYtd,QAAS,kBAAMwZ,EAA0B+D,MAAe,KAGvH7D,EAAsB1pB,EAAAC,EAAAC,cAAC4uB,GAAA7uB,EAAD,CAAUuP,MAAO8d,EAAYtd,QAAS,kBAAM0Z,EAAoB6D,MAAe,KAGrG9D,EAAwBzpB,EAAAC,EAAAC,cAAC6uB,GAAA9uB,EAAD,CAAYuP,MAAO8d,EAAYtd,QAAS,kBAAMyZ,EAAsB8D,MAAe,MAI/G,QAMJ,OAEEvtB,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CACEsO,KAAMA,EACN6I,QAAS1I,EACTugB,OAAO,QACP7I,WAAW,EACX8I,kBAAgB,uBAEhBlvB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,uBAAuB8Z,GACvCrpB,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBiL,UAAWH,EAAQiW,eACjC6J,IAGT7qB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACED,EAAAC,EAAAC,cAACuL,GAAAxL,EAAD,CAAQ+P,QAAStB,EAAajL,MAAM,WAApC,YAONzD,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ6V,iBACtB5gB,EAAAC,EAAAC,cAACmhB,GAAAphB,EAAD,CAAOiL,UAAWH,EAAQuV,YAER5hB,IAAdwiB,EACElhB,EAAAC,EAAAC,cAxYZ,SAA2BQ,GAC3B,IACU6uB,EAAkB7uB,EAAlB6uB,cAEFC,EAAoB,SAAAC,GAAc,OAAI,SAAA9gB,GAE1C4gB,EAAc5gB,EAAO8gB,KAGvB,OACEzvB,EAAAC,EAAAC,cAACohB,GAAArhB,EAAD,CAAWiL,UAAWH,EAAQqW,EAAmB,gBAC/CphB,EAAAC,EAAAC,cAACqhB,GAAAthB,EAAD,KAEIihB,EAAUtP,IAAI,SAACC,EAAM8c,GAEnB,IAAIc,EAAiB/G,EAAiBiG,GAItC,OAAI9E,GAAef,GAA0BA,EAAuBgD,SAAS2D,GAqBzEzvB,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CACEiL,UAAWH,EAAQ2V,UAAY,IAAM3V,EAAQ0V,cAC7C3O,IAAK6c,GAEJ9c,GAtBH7R,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CACEiL,UAAWH,EAAQ2V,UAAY,IAAM3V,EAAQ0V,cAC7C3O,IAAK6c,EACLe,cAAerE,IAAYoE,GAAiBxE,GAE5CjrB,EAAAC,EAAAC,cAACyvB,GAAA1vB,EAAD,CACE2vB,OAAQvE,IAAYoE,EACpBI,UAAW5E,EACXjb,QAASwf,EAAkBC,IAE1B5d,SAwWT,CAAmB0d,cA5U/B,SAA2B5gB,EAAOmhB,GAMhC5E,EAHuBG,IAAYyE,GAAoC,QAAjB7E,EAGrB,OAAS,OAC1CK,EAAWwE,MAuUD,KAGJ9vB,EAAAC,EAAAC,cAACuhB,GAAAxhB,EAAD,KAxMR,SAA6B+a,EAAMqQ,GAEjC,OAAKA,EAKYrQ,EAAK+U,KAAK,SAACrE,EAAMC,GAEhC,MAAqB,QAAjBV,EAEKQ,GAAqBC,EAAMC,EAAMN,IAIhCI,GAAqBC,EAAMC,EAAMN,KAXpCrQ,EAsMCgV,CAAoB7O,EAAWkK,GAASzZ,IAAI,SAAC2b,EAAUF,GAOrD,OACErtB,EAAAC,EAAAC,cAACitB,GAAD,CAAgBrb,IAAKub,EAAQA,OAAQA,EAAQC,WAL/C,CACEplB,OAAQ,WAI6DqlB,SAAUA,UAmDjG9E,GAAgB/G,aAAe,CAC7BN,iBAAkB,QAqBL7d,WAAWuc,GAAXvc,CAAuBklB,ICxgBhCzM,GACN,CACI,aACA,oBACA,eACA,6BAGEiU,eAEF,SAAAA,EAAYvvB,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAovB,IACItvB,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAoxB,GAAAjvB,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVgU,MAAO,IAPfvvB,mFAYA,IAAAqO,EAAAnO,KAESgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAY7F4E,GAAO,SAAS5Y,KAAK,SAACG,GAGlB6M,EAAK9N,SACL,CACIgb,UAAS,EACTgU,MAAO/tB,EAAO6Y,QAGtB,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,mDA4BnB,IAAAuR,EACuCpO,KAAKtC,MAAhCb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SAAUgU,EAD7BjhB,EAC6BihB,MACjBnlB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAKhEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,gBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,yCAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KAGI7J,KAAQI,8BAA8B,CAAC,aAAc,oBAAqB,6BAA8BpF,KAAWC,aAAakF,mBAExHhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,cACRpD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,GACpCpK,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,SAId,KAGND,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,gBAAiB,QAAS,OAAQ,UAAW,SAAU,kBAAmB,SAAU,cAChGwH,iBAAkB,CAAC,eAAgB,QAAS,YAAa,gBAAiB,cAAe,0BAA2B,SAAU,eAC9HvH,UAAW+O,EACXnH,aAAa,EACbC,YAAY,kCACZa,YAAY,EACZF,eAAgB,cAChBd,iBAAkB,CAAC,qBA3CpC7oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,mCAxD7BnU,IAAMC,WA8GXC,OApJA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OA2HL5B,CAAmB0sB,yBC7CnB1sB,WAAWgtB,GAAXhtB,CA7Gf,SAAAqH,GACA,IAAAC,EAD2BnK,EAC3B7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAGIG,EAcErK,EAdFqK,QACAuc,EAaE5mB,EAbF4mB,iBACAC,EAYE7mB,EAZF6mB,UACAhY,EAWE7O,EAXF6O,GACAiY,EAUE9mB,EAVF8mB,WACAC,EASE/mB,EATF+mB,WACA/pB,EAQEgD,EARFhD,MACAwL,EAOExI,EAPFwI,QACA0e,EAMElnB,EANFknB,cACA4I,EAKE9vB,EALF8vB,cACAC,EAIE/vB,EAJF+vB,OACAC,EAGEhwB,EAHFgwB,UACAC,EAEEjwB,EAFFiwB,YACAnO,EACE9hB,EADF8hB,SAGIqF,EAAetc,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EAC5B,IAAME,EAAQic,eAAiBtpB,GADHmB,OAAA2M,EAAA,EAAA3M,CAAAgM,EAE5B,IAAME,EAAQkc,iBAAmB/d,IAAYxL,GAFjBmN,IAKzBnH,EAAY6H,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAC1BkM,EAAQrH,eAA0BhF,IAAd6oB,IAsBvB,OACEvnB,EAAAC,EAAAC,cAAC6nB,GAAA9nB,EAADpB,OAAAC,OAAA,GAAiBwoB,EAAjB,CAAmCpc,UAAWoc,EAAiBpc,UAAY,IAAMH,EAAQoc,mBAEvEzoB,IAAd6oB,EAEEvnB,EAAAC,EAAAC,cAAC8nB,GAAA/nB,EAADpB,OAAAC,OAAA,CAAYoM,UAAWH,EAAQgc,UAAYc,EAAcI,QAAS1Y,GAAQiY,GACvED,GAED,KAGNvnB,EAAAC,EAAAC,cAAC0wB,GAAA3wB,EAADpB,OAAAC,OAAA,CAAciM,QACb,CACG8Y,KAAMngB,EACNqG,SAAUgB,EAAQhB,UAEtBwF,GAAIA,GAAQkY,EALZ,CAMAU,SAAU,SAACxZ,GAAD,OAAWiZ,EAAgBA,EAAcjZ,EAAMG,OAAOsZ,OAAS,MACzEA,MAAOoI,EACPrsB,MAAOnE,EAAAC,EAAAC,cAACgoB,GAAAjoB,EAAD,CAAOsP,GAAIA,EAClB8Y,aACE7F,EACAxiB,EAAAC,EAAAC,cAACooB,GAAD,CAAiB3F,KAAMH,IAEvB,SAEAxiB,EAAAC,EAAAC,cAAA,UAAQ4R,IAAI,IAAIsW,MAAM,KA1CtBsI,EAEKD,EAAO7e,IAAI,SAACuC,EAAMrC,GAEvB,OAAO9R,EAAAC,EAAAC,cAAA,UAAQ4R,IAAKA,EAAKsW,MAAOjU,EAAKuc,IAAavc,EAAKwc,MAKlDF,EAAO7e,IAAI,SAACuC,EAAMrC,GAEvB,OAAO9R,EAAAC,EAAAC,cAAA,UAAQ4R,IAAKA,EAAKsW,MAAOjU,GAAOA,MAsCvCzW,EAEEsC,EAAAC,EAAAC,cAACqoB,GAAAtoB,EAAD,CAAOiL,UAAWH,EAAQmc,SAAW,IAAMnc,EAAQic,iBACjD9d,EAEFlJ,EAAAC,EAAAC,cAACsoB,GAAAvoB,EAAD,CAAOiL,UAAWH,EAAQmc,SAAW,IAAMnc,EAAQkc,mBACjD,QC9DRjL,GAA2B,CAC3B,aACA,oBACA,6BAGE6U,eAEF,SAAAA,EAAYnwB,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAgwB,IACIlwB,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAgyB,GAAA7vB,KAAAH,KAAMH,KAgEVowB,mBAAqB,SAACC,GAElB,IAAIC,EAAW,GAiBf,OAfAD,EAAcE,cAAcrf,IAAI,SAACsf,GAE7BF,EAAShD,KAAKkD,GAEoB,MAA9BA,EAAaD,eAEbtwB,EAAKmwB,mBAAmBI,GAActf,IAAI,SAACuf,GAEvCA,EAAkBF,cAAgB,KAClCE,EAAkBC,MAAQF,EAAaE,MAAQ,MAAQD,EAAkBC,MACzEJ,EAAShD,KAAKmD,OAKnBH,GApFXrwB,EAuFA0wB,cAAgB,WAEZ1wB,EAAKO,SAAS,CAACowB,cAAc,IAQ7B,IATJ,IAAAriB,EAIoGtO,EAAKpC,MAA7FgzB,EAJZtiB,EAIYsiB,UAAWC,EAJvBviB,EAIuBuiB,SAAUC,EAJjCxiB,EAIiCwiB,YAAaC,EAJ9CziB,EAI8CyiB,gBAAiBC,EAJ/D1iB,EAI+D0iB,gBAAiBC,EAJhF3iB,EAIgF2iB,gBAGxEC,GAAiB,EAEZvD,EAAI,EAAGA,EAAIsD,EAAgBnzB,OAAQ6vB,IAC5C,CACI,IAAIwD,EAAaF,EAAgBtD,GAEjC,GAAwB,QAApBwD,EAAWlS,KACf,CACIiS,EAAgBC,EAAWC,IAC3B,OAgBR7W,GAAY,eAVZ,CACI8W,UAAYP,EACZQ,YAAaT,EACbJ,MAAQG,EACRW,cAAgBR,EAChBS,YAAcR,EACdS,cAAgBP,IAIqB7vB,KAAK,WAE1CrB,EAAKO,SACL,CACImxB,aAAa,KAGrB,SAAC30B,GAEGiD,EAAKO,SACL,CACIoxB,gBAAiB50B,EAAMsd,KACvBsW,cAAc,OAjItB3wB,EAAKpC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVoV,cAAc,EACdgB,gBAAiB,KACjBD,aAAa,EAEbE,UAAW,GACXC,aAAc,GACdxB,SAAS,GAETO,UAAW,GACXC,SAAU,GACVC,YAAa,GACbC,gBAAiB,GACjBC,gBAAiB,IAnBzBhxB,mFAwBA,IAAAqO,EAAAnO,KAESgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAY7F4E,GAAO,cAAc5Y,KAAK,SAACG,GAGvB,IAAIswB,EAAoBzjB,EAAK8hB,mBAAmB3uB,EAAO6Y,KAAK0X,aAE5D1jB,EAAK9N,SACL,CACIgb,UAAS,EACTqW,UAAWpwB,EAAO6Y,KAAK2X,UACvBH,aAAcrwB,EAAO6Y,KAAK4X,aAC1B5B,SAAUyB,EACVb,gBAAiBzvB,EAAO6Y,KAAK6X,mBAGrC,SAACn1B,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,KAAK8X,YA7BtBjyB,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,mDA2GnB,IAAAq1B,EAAAlyB,KAAAmyB,EACuJnyB,KAAKtC,MAAhJb,EADZs1B,EACYt1B,MAAOwe,EADnB8W,EACmB9W,SAAUoV,EAD7B0B,EAC6B1B,aAAcgB,EAD3CU,EAC2CV,gBAAiBD,EAD5DW,EAC4DX,YAAaE,EADzES,EACyET,UAAWC,EADpFQ,EACoFR,aAAcxB,EADlGgC,EACkGhC,SAAUQ,EAD5GwB,EAC4GxB,SAAUC,EADtHuB,EACsHvB,YAAaC,EADnIsB,EACmItB,gBACvH3mB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAIEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,EAAML,UAErEg1B,EAGGryB,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAG,WAAW4qB,MAAI,IAIpChuB,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBJ,EAAK1B,kBAC7CrxB,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,oBAEJxD,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACA7L,UAAU,eACVhY,GAAG,UACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAcxiB,KAAWC,aAAa6O,aAAaC,SAI3D5f,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACA7L,UAAU,kBACVhY,GAAG,kBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAcxiB,KAAWC,aAAaC,cAKlD/Q,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACA7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACqwB,UAAWnJ,KAE3CX,WAAY,CACR8L,WAAW,MAInBvzB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACAjM,UAAU,YACVhY,GAAG,YACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQ8B,EACR7B,UAAU,MACVC,YAAY,OACZH,cAAegB,EACf5J,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACswB,SAAUpJ,SAKlDpoB,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACAjM,UAAU,eACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQO,EACRN,UAAU,KACVC,YAAY,QACZH,cAAeiB,EACf7J,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACuwB,YAAarJ,QAIjDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACAjM,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQ+B,EACR9B,UAAU,KACVC,YAAY,OACZH,cAAekB,EACf9J,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACwwB,gBAAiBtJ,SAKzDpoB,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACA7L,UAAU,iCACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACywB,gBAAiBvJ,KAEjDV,WAAW,EACXC,KAAM,OAKlB3nB,EAAAC,EAAAC,cAACwc,GAAD,KACI1c,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,QAAQ5gB,MAAO,CAAChH,MAAM,SACpCxI,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYsG,SAAUunB,EAAc1yB,KAAK,UAAW0yB,EAAe,mBAAqB,UACtGtxB,EAAAC,EAAAC,cAACojB,GAAD,CAAQT,QAA6B,MAAnByP,GAA4BA,EAAkB,+BAAiCA,EAAgBj1B,QAAU,UApJ5I2C,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,oCAnJ3BnU,IAAMC,WAkTbC,OA3UA,CACXuY,kBAAmB,CACjBrY,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhBN,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,SA4TPR,CAAmBstB,IC7S5B7U,GACN,CACI,aACA,oBACA,eACA,6BAGEyX,eAEF,SAAAA,EAAY/yB,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA4yB,IACI9yB,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA40B,GAAAzyB,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVgU,MAAO,IAPfvvB,mFAYA,IAAAqO,EAAAnO,KAESgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAY7F4E,GAAO,qBAAqB5Y,KAAK,SAACG,GAG9B6M,EAAK9N,SACL,CACIgb,UAAS,EACTgU,MAAO/tB,EAAO6Y,QAGtB,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,mDA4BnB,IAAAuR,EACuCpO,KAAKtC,MAAhCb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SAAUgU,EAD7BjhB,EAC6BihB,MACjBnlB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAKhEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,gBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,6DAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,gBAAiB,QAAS,OAAQ,UAAW,SAAU,kBAAmB,SAAU,cAChGwH,iBAAkB,CAAC,eAAgB,QAAS,YAAa,gBAAiB,cAAe,0BAA2B,SAAU,eAC9HvH,UAAW+O,EACXnH,aAAa,EACbC,YAAY,wCACZa,YAAY,EACZF,eAAgB,cAChBd,iBAAkB,CAAC,qBA7BpC7oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,mCAxDvBnU,IAAMC,WAgGjBC,OAtIA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OA6GL5B,CAAmBkwB,aC7F5BC,eAEF,SAAAA,EAAYhzB,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA6yB,IACI/yB,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA60B,GAAA1yB,KAAAH,KAAMH,KAsBVizB,gBAAkB,WAOd/Y,GAAO,eAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,OAGFmC,KAAK,SAACG,GAGxCxB,EAAKO,SACL,CACI0yB,sBAAqB,EACrBC,YAAa1xB,EAAO6Y,QAG5B,SAACtd,GAEGiD,EAAKO,SACL,CACI0yB,sBAAsB,EACtBl2B,MAAOA,EAAMsd,KACb6Y,aAAa,OA7CzBlzB,EA+EAmzB,wBAA0B,WAEtBnzB,EAAKO,SAAS,CACV6yB,mBAAmB,KAlF3BpzB,EAsFAqzB,yBAA2B,WAEvBrzB,EAAKO,SAAS,CACV6yB,mBAAmB,KAzF3BpzB,EA8FA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA5GJA,EAAKpC,MACL,CACIb,MAAO,KACPwe,UAAU,EAEV6X,mBAAmB,EACnBM,aAAa,EACbC,YAAY,EAEZH,WAAW,EACXF,WAAY,UACZC,UAAW,GAEXL,aAAa,EACbU,YAAa,MAjBrB5zB,mFAmDA,IAAAqO,EAAAnO,KAMI+Z,GAAO,oBAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,OAGGmC,KAAK,SAACG,GAG7C6M,EAAK9N,SACL,CACIgb,UAAS,EACTqY,YAAapyB,EAAO6Y,QAG5B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,SAKrBna,KAAK8yB,mDAwCT,IAAAZ,EAAAlyB,KAAAoO,EACwIpO,KAAKtC,MAAjIb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SAA0CoY,GAD7DrlB,EAC6B8kB,kBAD7B9kB,EACgDolB,YADhDplB,EAC6DqlB,YAAYH,EADzEllB,EACyEklB,UAAWF,EADpFhlB,EACoFglB,WAAYC,EADhGjlB,EACgGilB,UAAwBK,GADxHtlB,EAC2G4kB,YAD3G5kB,EACwHslB,aAC5GxpB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,EAAML,UAErEi3B,EAGGt0B,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAG,WAAW4qB,MAAI,IAIpChuB,EAAAC,EAAAC,cAAA,WAGIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMgO,EAAK7xB,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,gBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAoByY,EAAYnD,UAIlEpxB,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,SACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYC,WAItCx0B,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,gBACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYE,kBAK1Cz0B,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,OACVhY,GAAG,OACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYG,KAAK9U,SAI3C5f,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,kBACVhY,GAAG,kBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYI,eAAe5jB,cAKzD/Q,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAc,OAI1BrzB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,SACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYK,OAAOhV,UAKjD5f,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,UACVhY,GAAG,UACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYM,QAAQzD,UAI9CpxB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYO,iBAK9C90B,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAE1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACA7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYpC,aAE9BzK,WAAW,EACXC,KAAM,SApKf3nB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,mCA7HjBnU,IAAMC,WA4SvBC,OAlVA,SAAAoI,GAAK,MACpB,CACImQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAiTVzB,CAAmBmwB,ICrS5BsB,eAEF,SAAAA,EAAYt0B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAm0B,IACIr0B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAm2B,GAAAh0B,KAAAH,KAAMH,KAmCVu0B,sBAAwB,WAEpBt0B,EAAKO,SAAS,CACVg0B,iBAAiB,KAvCzBv0B,EA2CAw0B,uBAAyB,WAErBx0B,EAAKO,SAAS,CACVg0B,iBAAiB,EACjBE,kBAAmB,0BA/C3Bz0B,EA0DA00B,cAAgB,WAOZza,GAAO,kBAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,OAGCmC,KAAK,SAACG,GAG3CxB,EAAKO,SACL,CACIo0B,oBAAmB,EACnBC,eAAgBpzB,EAAO6Y,QAG/B,SAACtd,GAEGiD,EAAKO,SACL,CACIo0B,oBAAoB,EACpB53B,MAAOA,EAAMsd,UA/EzBra,EAsFAgzB,gBAAkB,WAOd/Y,GAAO,eAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,OAGFmC,KAAK,SAACG,GAGxCxB,EAAKO,SACL,CACI0yB,sBAAqB,EACrBC,YAAa1xB,EAAO6Y,QAG5B,SAACtd,GAEGiD,EAAKO,SACL,CACI0yB,sBAAsB,EACtBl2B,MAAOA,EAAMsd,KACb6Y,aAAa,OA5GzBlzB,EAkHA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MAnIRA,EAuIA60B,qBAAuB,WAEnB,IAAIC,EAAW,GACXC,EAAYnf,SAASof,eAAe,eAExC,GAAID,EAAUE,OAASF,EAAUE,MAAMn3B,OAAS,EAChD,CAGI,IAFA,IAAIo3B,EAAW,EAENvH,EAAI,EAAGA,EAAIoH,EAAUE,MAAMn3B,OAAQ6vB,IAExCuH,GAAYC,YAAYJ,EAAUE,MAAMtH,GAAGrjB,KAAO,KAAS8qB,QAAQ,IAGhFN,EAAWC,EAAUE,MAAMn3B,OAAS,oBAAsBo3B,EAAW,aAIrEJ,EAAWC,EAAUtN,MAAM4D,MAAO,MAAOgK,MAAQ,KAAOF,YAAYJ,EAAUE,MAAM,GAAG3qB,KAAO,KAAS8qB,QAAQ,IAAM,QAGhHp1B,EAAKO,SACL,CACIk0B,kBAAmBK,KA3JvB90B,EAAKpC,MACL,CACIb,MAAO,KACP43B,oBAAoB,EACpB1B,sBAAsB,EAEtBsB,iBAAiB,EACjBe,uBAAuB,EAEvB9B,WAAW,EACXF,WAAY,UACZC,UAAW,GAEXqB,eAAgB,KAChB1B,aAAa,EAEbqC,aAAc,GACdC,aAAc,GAEdf,kBAAmB,wBAtB3Bz0B,sFA8BI,IADA,IAAI4O,EAAKxM,OAAO6iB,WAAW,KAAM,GAC1BrW,KAEHxM,OAAO8iB,aAAatW,+CAsBxB1O,KAAKw0B,gBACLx0B,KAAK8yB,mDA4GT,IAAA3kB,EAAAnO,KAAAoO,EAC0LpO,KAAKtC,MAAnLb,EADZuR,EACYvR,MAAO43B,EADnBrmB,EACmBqmB,mBAAoB1B,EADvC3kB,EACuC2kB,qBAA8DO,GADrGllB,EAC6DimB,gBAD7DjmB,EAC8EgnB,sBAD9EhnB,EACqGklB,WAAWF,EADhHhlB,EACgHglB,WAAYC,EAD5HjlB,EAC4HilB,UAAWqB,EADvItmB,EACuIsmB,eAC3HxqB,GAFZkE,EACuJ4kB,YADvJ5kB,EACoKmmB,kBAC5Iv0B,KAAKH,MAAjBqK,SAER,OAAKuqB,GAAuB1B,EAInBl2B,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAGTjkB,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,0BACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,mCAIZ9b,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,UAAW,gBAAiB,SAAU,aAAc,aAAc,eAC9EwH,iBAAkB,CAAC,UAAW,OAAQ,SAAU,YAAa,YAAa,eAC1EvH,UAAWoU,EACXpM,eAAgB,EAChBC,kBAAkB,mBAClBC,eAAe,cACfQ,YAAY,EACZF,eAAgB,YAChBd,iBAAkB,CAAC,aACnBC,uBAAwB,CAAC,oBAzClC9oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,sCA5KdnU,IAAMC,WA8N1BC,OAvQA,SAAAoI,GAAK,MACpB,CACImQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhBixB,UAAU,CACNnxB,WAAY,OAEhB8vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAmOVzB,CAAmByxB,ICzP5BhZ,GACN,CACI,aACA,oBACA,eACA,6BAGEqa,eAEF,SAAAA,EAAY31B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAw1B,IACI11B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAw3B,GAAAr1B,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,GANlBvb,mFAaSkV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,oBAEzFnV,KAAKK,SACL,CACIxD,MAAO,kBAIfmD,KAAKK,SACL,CACIgb,UAAU,qCAKlB,IAAAjN,EACgCpO,KAAKtC,MAAzB2d,EADZjN,EACYiN,SAAUxe,EADtBuR,EACsBvR,MAElB,OAAKwe,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAACo2B,GAAD,OAEJt2B,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAACq2B,GAAD,SAfLv2B,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,uBAAuBC,YAAU,WApCjDpU,IAAMC,WA2DxBC,OAjGf,CACIuY,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAwEL5B,CAAmB8yB,IC/C5BG,eAEF,SAAAA,EAAY91B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA21B,IACI71B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA23B,GAAAx1B,KAAAH,KAAMH,KAsBVizB,gBAAkB,WAOd/Y,GAAO,eAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,OAGFmC,KAAK,SAACG,GAGxCxB,EAAKO,SACL,CACI0yB,sBAAqB,EACrBC,YAAa1xB,EAAO6Y,QAG5B,SAACtd,GAEGiD,EAAKO,SACL,CACI0yB,sBAAsB,EACtBl2B,MAAOA,EAAMsd,KACb6Y,aAAa,OA7CzBlzB,EA+EAmzB,wBAA0B,WAEtBnzB,EAAKO,SAAS,CACV6yB,mBAAmB,KAlF3BpzB,EAsFAqzB,yBAA2B,WAEvBrzB,EAAKO,SAAS,CACV6yB,mBAAmB,KAzF3BpzB,EA8FA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA/GRA,EAmHA81B,UAAY,WAER91B,EAAKO,SAAS,CAACmzB,aAAY,IAQ3BpZ,GAAQ,eAJE,IAAInY,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,OAGDmC,KAAK,WAExCrB,EAAKO,SACL,CACImzB,aAAa,EACbC,YAAY,KAGpB,SAAC52B,GAEGiD,EAAKO,SACL,CAEImzB,aAAa,IAGjB1zB,EAAKqzB,2BACLrzB,EAAK0lB,iBAAiB,SAAU3oB,EAAMsd,SA3I1Cra,EAAKpC,MACL,CACIb,MAAO,KACPwe,UAAU,EAEV6X,mBAAmB,EACnBM,aAAa,EACbC,YAAY,EAEZH,WAAW,EACXF,WAAY,UACZC,UAAW,GAEXL,aAAa,EACbU,YAAa,MAjBrB5zB,mFAmDA,IAAAqO,EAAAnO,KAMI+Z,GAAO,aAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,OAGJmC,KAAK,SAACG,GAGtC6M,EAAK9N,SACL,CACIgb,UAAS,EACTqY,YAAapyB,EAAO6Y,QAG5B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,SAKrBna,KAAK8yB,mDAuET,IAAAZ,EAAAlyB,KAAAoO,EACwIpO,KAAKtC,MAAjIb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SAAU6X,EAD7B9kB,EAC6B8kB,kBAAmBM,EADhDplB,EACgDolB,YAAaC,EAD7DrlB,EAC6DqlB,WAAYH,EADzEllB,EACyEklB,UAAWF,EADpFhlB,EACoFglB,WAAYC,EADhGjlB,EACgGilB,UAAWL,EAD3G5kB,EAC2G4kB,YAAaU,EADxHtlB,EACwHslB,YAC5GxpB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,EAAML,UAErEi3B,EAGGt0B,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAG,WAAW4qB,MAAI,IAIpChuB,EAAAC,EAAAC,cAAA,WAGIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMgO,EAAK7xB,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAMwlB,EAAmB3c,QAAS,kBAAM2b,EAAKiB,4BAA4B9E,kBAAgB,oBAAoB9I,WAAW,GACjKpmB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,6CACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,6EAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKiB,4BAA4BvwB,MAAM,QAAQ8vB,WAAS,GAA/E,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUsqB,EAAarkB,QAAS,kBAAM+iB,EAAK0D,aAAahzB,MAAM,UAAtE,iBAORzD,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,gBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAoByY,EAAYnD,QAE1DpxB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAEhD+N,KAAQI,8BAA8B,CAAC,cAAepF,KAAWC,aAAakF,oBAC7EH,KAAQI,8BAA8B,CAAC,oBAAqB,6BAA8BpF,KAAWC,aAAakF,oBAAsB6d,EAExI7zB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYuM,QAAS,kBAAM+iB,EAAKe,4BAA9C,cACC,QAKd9zB,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,SACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYC,WAItCx0B,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,gBACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYE,kBAK1Cz0B,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,OACVhY,GAAG,OACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYG,KAAK9U,SAI3C5f,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,kBACVhY,GAAG,kBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYI,eAAe5jB,cAKzD/Q,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYmC,YAAY9W,SAIlD5f,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,SACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYK,OAAOhV,UAKjD5f,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,UACVhY,GAAG,UACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYM,QAAQzD,UAI9CpxB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYO,iBAK9C90B,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAE1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACA7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVspB,aAAckB,EAAYpC,aAE9BzK,WAAW,EACXC,KAAM,SA/Lf3nB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,mCA5JvBnU,IAAMC,WAsWjBC,OA5YA,SAAAoI,GAAK,MACpB,CACImQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA2WVzB,CAAmBizB,8CC/V5BG,eAEF,SAAAA,EAAYj2B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA81B,IACIh2B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA83B,GAAA31B,KAAAH,KAAMH,KAmCVu0B,sBAAwB,WAEpBt0B,EAAKO,SAAS,CACVg0B,iBAAiB,KAvCzBv0B,EA2CAw0B,uBAAyB,WAErBx0B,EAAKO,SAAS,CACVg0B,iBAAiB,EACjBE,kBAAmB,0BA/C3Bz0B,EA0DA00B,cAAgB,WAOZza,GAAO,kBAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,OAGCmC,KAAK,SAACG,GAG3CxB,EAAKO,SACL,CACIo0B,oBAAmB,EACnBC,eAAgBpzB,EAAO6Y,QAG/B,SAACtd,GAEGiD,EAAKO,SACL,CACIo0B,oBAAoB,EACpB53B,MAAOA,EAAMsd,UA/EzBra,EAsFAgzB,gBAAkB,WAOd/Y,GAAO,eAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,OAGFmC,KAAK,SAACG,GAGxCxB,EAAKO,SACL,CACI0yB,sBAAqB,EACrBC,YAAa1xB,EAAO6Y,QAG5B,SAACtd,GAEGiD,EAAKO,SACL,CACI0yB,sBAAsB,EACtBl2B,MAAOA,EAAMsd,KACb6Y,aAAa,OA5GzBlzB,EAiHAi2B,mBAAqB,WAEjBj2B,EAAKO,SAAS,CAAC+0B,uBAAuB,IAD1C,IAAAhnB,EAI2CtO,EAAKpC,MAApC23B,EAJZjnB,EAIYinB,aAAcC,EAJ1BlnB,EAI0BknB,aAKlBU,EADM,IAAI/zB,IAAIC,OAAOC,SAASC,MACXC,aAAarD,IAAI,MAGpCi3B,EAAsB,IAAIC,SAC9BD,EAAoBE,OAAO,UAAWd,GACtCY,EAAoBE,OAAO,cAAeb,GAC1CW,EAAoBE,OAAO,eAAgBH,GAI3C,IAFA,IAAII,EAAgB1gB,SAASof,eAAe,eAAeC,MAElDtH,EAAI,EAAGA,EAAI2I,EAAcx4B,OAAQ6vB,IAAK,CAC3C,IAAI4I,EAAOD,EAAc3I,GAEzB,GAAI4I,EAAKjsB,KAAO,KAKZ,OAHAtK,EAAKO,SAAS,CAAE+0B,uBAAuB,SAEvCt1B,EAAK0lB,iBAAiB,SAAU,iDAIpCyQ,EAAoBE,OAAO,cAAeE,GAI9C5b,GAAgB,yBAA0Bwb,GAAqB90B,KAAK,WAEhErB,EAAKO,SACL,CACI+0B,uBAAuB,IAG3Bt1B,EAAKw0B,yBACLx0B,EAAK0lB,iBAAiB,UAAW,yBAEjC1lB,EAAK00B,iBAET,SAAC33B,GAEGiD,EAAKO,SACL,CAGI+0B,uBAAuB,IAG3Bt1B,EAAK0lB,iBAAiB,SAAU3oB,EAAMsd,SAzK9Cra,EA8KA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA/LRA,EAmMA60B,qBAAuB,WAEnB,IAAIC,EAAW,GACXC,EAAYnf,SAASof,eAAe,eAExC,GAAID,EAAUE,OAASF,EAAUE,MAAMn3B,OAAS,EAChD,CAGI,IAFA,IAAIo3B,EAAW,EAENvH,EAAI,EAAGA,EAAIoH,EAAUE,MAAMn3B,OAAQ6vB,IAExCuH,GAAYC,YAAYJ,EAAUE,MAAMtH,GAAGrjB,KAAO,KAAS8qB,QAAQ,IAGhFN,EAAWC,EAAUE,MAAMn3B,OAAS,oBAAsBo3B,EAAW,aAIrEJ,EAAWC,EAAUtN,MAAM4D,MAAO,MAAOgK,MAAQ,KAAOF,YAAYJ,EAAUE,MAAM,GAAG3qB,KAAO,KAAS8qB,QAAQ,IAAM,QAGhHp1B,EAAKO,SACL,CACIk0B,kBAAmBK,KAvNvB90B,EAAKpC,MACL,CACIb,MAAO,KACP43B,oBAAoB,EACpB1B,sBAAsB,EAEtBsB,iBAAiB,EACjBe,uBAAuB,EAEvB9B,WAAW,EACXF,WAAY,UACZC,UAAW,GAEXqB,eAAgB,KAChB1B,aAAa,EAEbqC,aAAc,GACdC,aAAc,GAEdf,kBAAmB,wBAtB3Bz0B,sFA8BI,IADA,IAAI4O,EAAKxM,OAAO6iB,WAAW,KAAM,GAC1BrW,KAEHxM,OAAO8iB,aAAatW,+CAsBxB1O,KAAKw0B,gBACLx0B,KAAK8yB,mDAwKT,IAAA3kB,EAAAnO,KAAAmyB,EAC0LnyB,KAAKtC,MAAnLb,EADZs1B,EACYt1B,MAAO43B,EADnBtC,EACmBsC,mBAAoB1B,EADvCZ,EACuCY,qBAAsBsB,EAD7DlC,EAC6DkC,gBAAiBe,EAD9EjD,EAC8EiD,sBAAuB9B,EADrGnB,EACqGmB,UAAWF,EADhHjB,EACgHiB,WAAYC,EAD5HlB,EAC4HkB,UAAWqB,EADvIvC,EACuIuC,eAAgB1B,EADvJb,EACuJa,YAAauB,EADpKpC,EACoKoC,kBACxJrqB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKuqB,GAAuB1B,EAInBl2B,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAGTjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAM2mB,EAAiB9d,QAAS,kBAAMpI,EAAKmmB,0BAA0BjG,kBAAgB,oBAAoB9I,WAAW,GAC7JpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBnkB,EAAK4nB,uBAC7C52B,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,iBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,8DAIAD,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,UACVhY,GAAG,gBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,EACVC,WAAW,GAEf3L,cAEI,SAACQ,GAAYpZ,EAAK9N,SAAS,CAACg1B,aAAc9N,OAGlDpoB,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,gCACVhY,GAAG,gBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYpZ,EAAK9N,SAAS,CAACi1B,aAAc/N,KAE9CV,WAAW,EACXC,KAAM,IAIV3nB,EAAAC,EAAAC,cAAA,OAAKsP,MAAO,CAAC9L,UAAW,SACpB1D,EAAAC,EAAAC,cAAA,sCACAF,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMuG,SAASof,eAAe,eAAewB,SAAS1zB,MAAM,YAAY+L,MAAO,CAACxK,YAAa,SACtGhF,EAAAC,EAAAC,cAACk3B,GAAAn3B,EAAD,MADR,mBAIAD,EAAAC,EAAAC,cAAA,YAAOk1B,GAEPp1B,EAAAC,EAAAC,cAAA,SAAOqP,GAAG,cAAc3Q,KAAK,OAAO4Q,MAAO,CAACnH,QAAQ,QAASgvB,SAAS,WAAWlP,SAAU,kBAAMnZ,EAAKwmB,4BAI9Gx1B,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMhB,EAAKmmB,0BAA0B1xB,MAAM,SAA5D,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUksB,EAAuBr3B,KAAK,SAAS6E,MAAM,aACzDzD,EAAAC,EAAAC,cAACo3B,GAAAr3B,EAAD,MACCg2B,EAAwB,aAAe,WAMxDj2B,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,mBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,0BAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAEhD+N,KAAQI,8BAA8B,CAAC,cAAepF,KAAWC,aAAakF,oBAC7EH,KAAQI,8BAA8B,CAAC,oBAAqB,6BAA8BpF,KAAWC,aAAakF,oBAAsB6d,EAExI7zB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYuM,QAAS,kBAAMhB,EAAKimB,0BAA9C,iBACC,QAKdj1B,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,UAAW,gBAAiB,SAAU,aAAc,aAAc,eAC9EwH,iBAAkB,CAAC,UAAW,OAAQ,SAAU,YAAa,YAAa,eAC1EvH,UAAWoU,EACXpM,eAAgB,EAChBC,kBAAkB,mBAClBC,eAAe,cACfQ,YAAY,EACZF,eAAgB,YAChBd,iBAAkB,CAAC,aACnBC,uBAAwB,CAAC,oBAhHlC9oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,sCAxOpBnU,IAAMC,WAiWpBC,OA1YA,SAAAoI,GAAK,MACpB,CACImQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhBixB,UAAU,CACNnxB,WAAY,OAEhB8vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAsWVzB,CAAmBozB,IC5X5B3a,GACN,CACI,aACA,oBACA,eACA,6BAGEub,eAEF,SAAAA,EAAY72B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA02B,IACI52B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA04B,GAAAv2B,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,GANlBvb,mFAaSkV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,oBAEzFnV,KAAKK,SACL,CACIxD,MAAO,kBAIfmD,KAAKK,SACL,CACIgb,UAAU,qCAKlB,IAAAjN,EACgCpO,KAAKtC,MAAzB2d,EADZjN,EACYiN,SAAUxe,EADtBuR,EACsBvR,MAElB,OAAKwe,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAACs3B,GAAD,OAEJx3B,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAACu3B,GAAD,SAfLz3B,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,uBAAuBC,YAAU,WApCvDpU,IAAMC,WA2DlBC,OAjGf,CACIuY,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAwEL5B,CAAmBg0B,IC3F5B3a,GAA4B,CAC9B,uBAGEZ,GAA2B,CAC7B,2BACA,2BACA,4BAGE0b,eACF,SAAAA,EAAYh3B,GAAO,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA62B,IACf/2B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA64B,GAAA12B,KAAAH,KAAMH,KAEDnC,MACD,CACIb,MAAO,KACPwe,UAAU,GANHvb,mFAYVkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBACzFH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAU7FnV,KAAKK,SACD,CACIgb,UAAU,IAXdrb,KAAKK,SACD,CACIgb,UAAU,EACVxe,MAAO,mDAWd,IACGqN,EAAYlK,KAAKH,MAAjBqK,QADHkE,EAEuBpO,KAAKtC,MAAzB2d,EAFHjN,EAEGiN,SAAUxe,EAFbuR,EAEavR,MAElB,OAAKwe,EAIIxe,EAEEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAW,+BAAiCta,IAInEsC,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,UAAUsW,OAAK,EAACrD,MAAI,GAClC1W,EAAAC,EAAAC,cAACsc,GAAD,CAAU/Y,MAAM,WACZzD,EAAAC,EAAAC,cAACy3B,GAAA13B,EAAD,OAEJD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ8Q,cAAtB,sBAEJ7b,EAAAC,EAAAC,cAACwc,GAAD,CAAY3C,OAAK,GACb/Z,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,sBAAZ,6BAhBDpD,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,+CAnCNnU,IAAMC,WA2DlCC,OAAWmY,GAAXnY,CAA2Bm0B,ICrEpC9a,GAA4B,CAChC,uBAGIZ,GAA2B,CAC/B,2BACA,2BACA,4BAGIiB,eAEJ,SAAAA,EAAYvc,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAoc,IACEtc,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAoe,GAAAjc,KAAAH,KAAMH,KAEDnC,MACL,CACEb,MAAO,KACPwe,UAAU,GANdvb,mFAaSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBACzFH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAW7FnV,KAAKK,SACH,CACIgb,UAAU,IAXZrb,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,mDAanB,IACYqN,EAAYlK,KAAKH,MAAjBqK,QADZkE,EAEgCpO,KAAKtC,MAAzB2d,EAFZjN,EAEYiN,SAAUxe,EAFtBuR,EAEsBvR,MAElB,OAAKwe,EAKIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAItEsC,EAAAC,EAAAC,cAACoc,GAAD,KACEtc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,UAAUsW,OAAK,EAACrD,MAAI,GACpC1W,EAAAC,EAAAC,cAACsc,GAAD,CAAU/Y,MAAM,WACdzD,EAAAC,EAAAC,cAACy3B,GAAA13B,EAAD,OAEFD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ8Q,cAAtB,cAEF7b,EAAAC,EAAAC,cAACwc,GAAD,CAAY3C,OAAK,GACf/Z,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,wBAAZ,qBAjBKpD,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,uCA1CRnU,IAAMC,WAmE9BC,OAAWmY,GAAXnY,CAA2B0Z,IC7EpCL,GAA4B,CAC9B,uBAGEZ,GAA2B,CAC7B,2BACA,2BACA,4BAGEiB,eACF,SAAAA,EAAYvc,GAAO,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAoc,IACftc,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAoe,GAAAjc,KAAAH,KAAMH,KAEDnC,MACD,CACIb,MAAO,KACPwe,UAAU,GANHvb,mFAYVkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBACzFH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAU7FnV,KAAKK,SACD,CACIgb,UAAU,IAXdrb,KAAKK,SACD,CACIgb,UAAU,EACVxe,MAAO,mDAYd,IACGqN,EAAYlK,KAAKH,MAAjBqK,QADHkE,EAEuBpO,KAAKtC,MAAzB2d,EAFHjN,EAEGiN,SAAUxe,EAFbuR,EAEavR,MAElB,OAAKwe,EAIIxe,EAEEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAW,+BAAiCta,IAInEsC,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,UAAUsW,OAAK,EAACrD,MAAI,GAClC1W,EAAAC,EAAAC,cAACsc,GAAD,CAAU/Y,MAAM,WACZzD,EAAAC,EAAAC,cAACy3B,GAAA13B,EAAD,OAEJD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ8Q,cAAtB,aAEJ7b,EAAAC,EAAAC,cAACwc,GAAD,CAAY3C,OAAK,GACb/Z,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,uBAAZ,oBAhBDpD,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,sCApCVnU,IAAMC,WA4D9BC,OAAWmY,GAAXnY,CAA2B0Z,ICpCpCjB,GACF,CACI,6BACA,gBACA,iBAGF4b,GAAiC,CACnC,8BAGEC,GAA+B,CACjC,iBAGEC,GAA8B,CAChC,iBAGEC,eACF,SAAAA,EAAYr3B,GAAO,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAk3B,IACfp3B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAk5B,GAAA/2B,KAAAH,KAAMH,KAEDnC,MAAQ,CACTb,MAAO,KACPwe,UAAU,GALCvb,mFAWVkV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAU7FnV,KAAKK,SACD,CACIgb,UAAU,IAXdrb,KAAKK,SACD,CACIgb,UAAU,EACVxe,MAAO,mDAYd,IAAAuR,EACuBpO,KAAKtC,MAAzBb,EADHuR,EACGvR,MAER,OAHKuR,EACUiN,SAMNxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAA,uBACAF,EAAAC,EAAAC,cAAC+d,GAAD,KAEQpI,KAAQI,8BAA8B2hB,GAAgC/mB,KAAWC,aAAakF,mBAGtFhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACvCre,EAAAC,EAAAC,cAAC83B,GAAD,OAIR,KAIJniB,KAAQI,8BAA8B4hB,GAA8BhnB,KAAWC,aAAakF,mBAGpFhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACvCre,EAAAC,EAAAC,cAAC+3B,GAAD,OAIR,KAIJpiB,KAAQI,8BAA8B6hB,GAA6BjnB,KAAWC,aAAakF,mBAGnFhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACvCre,EAAAC,EAAAC,cAACg4B,GAAD,OAIR,OA7CTl4B,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,yCAjCbnU,IAAMC,WAsF3BC,OAvIA,CACXuY,kBAAmB,CACf6F,4BAA6B,CACzBle,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAElB8d,0BAA2B,CACvBne,MAAO,YAGfD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACP1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OA8GT5B,CAAmBw0B,IC7G5B/b,GACF,CACI,8BAGFmc,eACF,SAAAA,EAAYz3B,GAAO,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAs3B,IACfx3B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAs5B,GAAAn3B,KAAAH,KAAMH,KA+CV03B,kBAAoB,WACpB,IACYC,EAAsB13B,EAAKpC,MAA3B85B,kBAER13B,EAAKO,SACL,CACIo3B,aAAa,IAMjB9c,GAAgB,wBAHE6c,GAGoCr2B,KAAK,SAACG,GAGxDxB,EAAKO,SACL,CACIo3B,aAAa,IAIjB,IAAMtd,EAAOjY,OAAOD,IAAIy1B,gBAAgBp2B,GACpCmI,EAAOiM,SAASrW,cAAc,KAClCoK,EAAKrH,KAAO+X,EACZ1Q,EAAKkuB,SAAS,gBACdluB,EAAK6sB,SAET,SAACz5B,GAEGiD,EAAKO,SACL,CACIo3B,aAAa,EACb56B,MAAOA,EAAMsd,UA7ErBra,EAAKpC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVuc,YAAa,GACbJ,kBAAmB,GACnBK,cAAe,GAEfJ,aAAa,GAXF33B,mFAgBC,IAAAqO,EAAAnO,KAEXgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAW7F4E,GAAO,qBAAqB5Y,KAAK,SAACG,GAG9B6M,EAAK9N,SACL,CACIgb,UAAS,EACTuc,YAAat2B,EAAO6Y,QAG5B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACD,CACIgb,UAAU,EACVxe,MAAO,mDA+Dd,IAAAq1B,EAAAlyB,KAAAoO,EACoEpO,KAAKtC,MAAtEb,EADHuR,EACGvR,MAAOwe,EADVjN,EACUiN,SAAUuc,EADpBxpB,EACoBwpB,YAAaJ,EADjCppB,EACiCopB,kBAAmBC,EADpDrpB,EACoDqpB,YACjDvtB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,qBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,mCAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KAEQ2Y,EAAkB55B,OAAS,EAGvBuB,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAA,QAAMsP,MAAO,CAACxK,YAAa,SACO,IAA7BqzB,EAAkB55B,OAAe,sBAAwB45B,EAAkB55B,OAAS,uBAEzFuB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYsG,SAAUuuB,EAAatoB,QAAS,kBAAM+iB,EAAKqF,sBAE7DE,EAEA,wBAE8B,IAA7BD,EAAkB55B,OAAe,2BAA6B,8BAM/E,KAGJuB,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,YAAa,iBAAkB,eAC3CwH,iBAAkB,CAAC,WAAY,gBAAiB,gBAChDvH,UAAWsX,EACXxP,gBAAgB,EAChBC,cAAemP,EACftP,aAAa,EACbc,YAAY,EACZP,kBAAmB,SAACiE,GAAD,OAAcwF,EAAK7xB,SAAS,CAAEw3B,cAAe,MAChE/O,eAAgB,eAChBC,oBAAqB,OACrBf,iBAAkB,CAAC,sBAtDhC7oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,wCA5FdnU,IAAMC,WA4J1BC,OA/LA,CACXuY,kBAAmB,CACf6F,4BAA6B,CACzBle,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAElB8d,0BAA2B,CACvBne,MAAO,YAGfD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACP1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAsKT5B,CAAmB40B,ICjK5Bnc,GACF,CACI,iBAGF2c,eACF,SAAAA,EAAYj4B,GAAO,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA83B,IACfh4B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA85B,GAAA33B,KAAAH,KAAMH,KAgDVk4B,kBAAoB,WACpB,IACYC,EAAsBl4B,EAAKpC,MAA3Bs6B,kBAERl4B,EAAKO,SACL,CACIo3B,aAAa,IAMjB9c,GAAgB,0BAHEqd,GAGsC72B,KAAK,SAACG,GAG1DxB,EAAKO,SACL,CACIo3B,aAAa,IAIjB,IAAMtd,EAAOjY,OAAOD,IAAIy1B,gBAAgBp2B,GACpCmI,EAAOiM,SAASrW,cAAc,KAClCoK,EAAKrH,KAAO+X,EACZ1Q,EAAKkuB,SAAS,gBACdluB,EAAK6sB,SAET,SAACz5B,GAEGiD,EAAKO,SACL,CACIo3B,aAAa,EACb56B,MAAOA,EAAMsd,UA9ErBra,EAAKpC,MACL,CACIb,MAAO,KACPwe,UAAU,EACV4c,UAAW,GAEXD,kBAAmB,GACnBH,cAAe,GAEfJ,aAAa,GAZF33B,mFAiBC,IAAAqO,EAAAnO,KAEXgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAW7F4E,GAAO,uBAAuB5Y,KAAK,SAACG,GAGhC6M,EAAK9N,SACL,CACIgb,UAAS,EACT4c,UAAW32B,EAAO6Y,QAG1B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACD,CACIgb,UAAU,EACVxe,MAAO,mDA+Dd,IAAAq1B,EAAAlyB,KAAAoO,EACkEpO,KAAKtC,MAApEb,EADHuR,EACGvR,MAAOwe,EADVjN,EACUiN,SAAU4c,EADpB7pB,EACoB6pB,UAAWD,EAD/B5pB,EAC+B4pB,kBAAmBP,EADlDrpB,EACkDqpB,YAC/CvtB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,aACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,2BAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KAEQmZ,EAAkBp6B,OAAS,EAGvBuB,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAA,QAAMsP,MAAO,CAACxK,YAAa,SACO,IAA7B6zB,EAAkBp6B,OAAe,sBAAwBo6B,EAAkBp6B,OAAS,uBAEzFuB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYsG,SAAUuuB,EAAatoB,QAAS,kBAAM+iB,EAAK6F,sBAE7DN,EAEA,wBAE8B,IAA7BO,EAAkBp6B,OAAe,2BAA6B,8BAM/E,KAGJuB,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,YAAa,iBAAkB,eAC3CwH,iBAAkB,CAAC,WAAY,gBAAiB,gBAChDvH,UAAW2X,EACX7P,gBAAgB,EAChBC,cAAe2P,EACf9P,aAAa,EACbc,YAAY,EACZP,kBAAmB,SAACiE,GAAD,OAAcwF,EAAK7xB,SAAS,CAAEw3B,cAAe,MAChE/O,eAAgB,eAChBC,oBAAqB,OACrBf,iBAAkB,CAAC,sBAtDhC7oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,gCA7FrBnU,IAAMC,WA6JnBC,OAhMA,CACXuY,kBAAmB,CACf6F,4BAA6B,CACzBle,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAElB8d,0BAA2B,CACvBne,MAAO,YAGfD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACP1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAuKT5B,CAAmBo1B,IClK5B3c,GACF,CACI,iBAGF+c,eACF,SAAAA,EAAYr4B,GAAO,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAk4B,IACfp4B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAk6B,GAAA/3B,KAAAH,KAAMH,KAgDVs4B,iBAAmB,WACnB,IACYC,EAAqBt4B,EAAKpC,MAA1B06B,iBAERt4B,EAAKO,SACL,CACIo3B,aAAa,IAMjB9c,GAAgB,yBAHEyd,GAGqCj3B,KAAK,SAACG,GAGzDxB,EAAKO,SACL,CACIo3B,aAAa,IAIjB,IAAMtd,EAAOjY,OAAOD,IAAIy1B,gBAAgBp2B,GACpCmI,EAAOiM,SAASrW,cAAc,KAClCoK,EAAKrH,KAAO+X,EACZ1Q,EAAKkuB,SAAS,eACdluB,EAAK6sB,SAET,SAACz5B,GAEGiD,EAAKO,SACL,CACIo3B,aAAa,EACb56B,MAAOA,EAAMsd,UA9ErBra,EAAKpC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVgd,SAAU,GAEVD,iBAAkB,GAClBP,cAAe,GAEfJ,aAAa,GAZF33B,mFAiBC,IAAAqO,EAAAnO,KAEXgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAW7F4E,GAAO,sBAAsB5Y,KAAK,SAACG,GAG/B6M,EAAK9N,SACL,CACIgb,UAAS,EACTgd,SAAU/2B,EAAO6Y,QAGzB,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACD,CACIgb,UAAU,EACVxe,MAAO,mDA+Dd,IAAAq1B,EAAAlyB,KAAAoO,EACgEpO,KAAKtC,MAAlEb,EADHuR,EACGvR,MAAOwe,EADVjN,EACUiN,SAAUgd,EADpBjqB,EACoBiqB,SAAUD,EAD9BhqB,EAC8BgqB,iBAAkBX,EADhDrpB,EACgDqpB,YAC7CvtB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,YACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,0BAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KAEQuZ,EAAiBx6B,OAAS,EAGtBuB,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAA,QAAMsP,MAAO,CAACxK,YAAa,SACM,IAA5Bi0B,EAAiBx6B,OAAe,qBAAuBw6B,EAAiBx6B,OAAS,sBAEtFuB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYsG,SAAUuuB,EAAatoB,QAAS,kBAAM+iB,EAAKiG,qBAE7DV,EAEA,wBAE6B,IAA5BW,EAAiBx6B,OAAe,0BAA4B,6BAM7E,KAGJuB,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,YAAa,iBAAkB,eAC3CwH,iBAAkB,CAAC,WAAY,gBAAiB,gBAChDvH,UAAW+X,EACXjQ,gBAAgB,EAChBC,cAAe+P,EACflQ,aAAa,EACbc,YAAY,EACZP,kBAAmB,SAACiE,GAAD,OAAcwF,EAAK7xB,SAAS,CAAEw3B,cAAe,MAChE/O,eAAgB,eAChBC,oBAAqB,OACrBf,iBAAkB,CAAC,sBAtDhC7oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,+BA7FtBnU,IAAMC,WA6JlBC,OAhMA,CACXuY,kBAAmB,CACf6F,4BAA6B,CACzBle,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAElB8d,0BAA2B,CACvBne,MAAO,YAGfD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACP1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAuKT5B,CAAmBw1B,IClK5B/c,GACN,CACI,aACA,eAGEmd,eAEF,SAAAA,EAAYz4B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAs4B,IACIx4B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAs6B,GAAAn4B,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVkd,OAAQ,IAPhBz4B,mFAYA,IAAAqO,EAAAnO,KAESgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAY7F4E,GAAO,kBAAkB5Y,KAAK,SAACG,GAG3B6M,EAAK9N,SACL,CACIgb,UAAS,EACTkd,OAAQpqB,EAAKqqB,0BAA0Bl3B,EAAO6Y,SAGtD,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,oEA0BO07B,GAItB,IAFA,IAAIE,EAAY,GAEPC,EAAa,EAAGA,EAAaH,EAAO36B,OAAQ86B,IACrD,CAKI,IAJA,IAAIC,EAAQJ,EAAOG,GAEfE,EAAsB,GAEjBC,EAAe,EAAGA,EAAeF,EAAK,SAAa/6B,OAAQi7B,IACpE,CASID,GAAwB,MARJD,EAAK,SAAaE,GAAlB,OAQiC,QAPc,IAA/CF,EAAK,SAAaE,GAAlB,QAEAF,EAAK,SAAaE,GAAlB,mBAEAF,EAAK,SAAaE,GAAlB,aAGwD,KAGhFF,EAAK,oBAA0BC,EAE/BH,EAAUtL,KAAKwL,GAGnB,OAAOF,mCAIX,IAAArqB,EACwCpO,KAAKtC,MAAjCb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SAAUkd,EAD7BnqB,EAC6BmqB,OACjBruB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAKhEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,kBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,2CAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KAEI1f,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACvCre,EAAAC,EAAAC,cAAA,uBACAF,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAA,KAAG+C,KAAK,oEAAoE6L,OAAO,UAAnF,gCAEJ9O,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GAEvCxI,KAAQI,8BAA8B,CAAC,eAAgBpF,KAAWC,aAAakF,mBAEvEhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,eACRpD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+L,MAAO,CAACxK,YAAY,QAC1ChF,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,MADJ,aAMd,OAKdD,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,eAAgB,SAAU,aAAc,aAAc,YAClEwH,iBAAkB,CAAC,gBAAiB,aAAc,mBAAoB,YAAa,uBACnFvH,UAAWiY,EACXvP,YAAY,EACZV,eAAgB,EAChBC,kBAAkB,gBAClBC,eAAe,iBACfO,oBAAqB,OACrBD,eAAgB,YAChBd,iBAAkB,CAAC,aACnBC,uBAAwB,CAAC,6BAzD1C9oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,6BAtFxBnU,IAAMC,WA0JhBC,OA9LA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAqKL5B,CAAmB41B,ICnK5Bvc,GACN,CACI,8BAGE+c,eAEF,SAAAA,EAAYj5B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA84B,IACIh5B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA86B,GAAA34B,KAAAH,KAAMH,KAwCV2lB,iBAAmB,SAAC4N,EAAYC,GAC5BvzB,EAAKO,SACD,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGnBvzB,EAAKolB,aAAeH,WAChB,WACI/kB,KAAKK,SACD,CACIizB,WAAW,KAErBnO,KALFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAMA,MArDJA,EAAKpC,MACL,CACIb,MAAO,KACPwe,UAAU,EACV0d,gBAAgB,EAChBC,eAAe,EACfC,cAAe,KACfC,eAAgB,KAChBC,wBAAwB,EACxBC,uBAAuB,EAEvB9F,WAAW,EACXF,WAAY,UACZC,UAAW,GACXkF,OAAQ,IAjBhBz4B,mFAwBSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,mBAU9FnV,KAAKK,SACL,CACIgb,UAAU,IAXVrb,KAAKK,SACD,CACIgb,UAAU,EACVxe,MAAO,yDAgCR,IAAAsR,EAAAnO,KACXA,KAAKK,SAAS,CAAEg5B,gBAAgB,IAGhCtf,GAAO,wBAAwB5Y,KAAK,WAChCgN,EAAK9N,SACD,CACIg5B,gBAAgB,IAGxBlrB,EAAKqX,iBAAiB,UAAW,4BAErC,SAAC3oB,GACGsR,EAAK9N,SACD,CAEIg5B,gBAAgB,IAGxBlrB,EAAKqX,iBAAiB,SAAU3oB,EAAMsd,yCAK9C,IAAA+X,EAAAlyB,KAAAoO,EACkGpO,KAAKtC,MAA3Fb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SAAU+X,EAD7BhlB,EAC6BglB,WAAYC,EADzCjlB,EACyCilB,UAAWC,EADpDllB,EACoDklB,UAA2B+F,EAD/EjrB,EAC+DirB,eACnDnvB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAMhEsC,EAAAC,EAAAC,cAAA,WAGAF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMgO,EAAK7xB,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAGTjkB,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,uBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,yDAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KAEA1f,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUmwB,EAAgBlqB,QAAS,kBAAM+iB,EAAKoH,gBAAgB12B,MAAM,aAC3Ey2B,EAAiB,qBAAuB,iBApClDl6B,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,sBA7FtBnU,IAAMC,WA8IlBC,OAjLA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAwJL5B,CAAmBo2B,IC1I5B/c,GACN,CACI,0BAGE+c,eAEF,SAAAA,EAAYj5B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA84B,IACIh5B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA86B,GAAA34B,KAAAH,KAAMH,KAoCV05B,wBAA0B,SAACC,GACvB15B,EAAKO,SAAS,CACV6yB,mBAAoBsG,KAvC5B15B,EA+DA25B,4BAA8B,SAACD,GAC3B15B,EAAKO,SAAS,CACV+4B,uBAAwBI,KAjEhC15B,EAsEA0lB,iBAAmB,SAAC4N,EAAYC,GAC5BvzB,EAAKO,SACD,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGnBvzB,EAAKolB,aAAeH,WAChB,WACI/kB,KAAKK,SACD,CACIizB,WAAW,KAErBnO,KALFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAMA,MArFRA,EAsHA45B,6BAA+B,SAACF,GAC5B15B,EAAKO,SAAS,CACV84B,wBAAyBK,KArH7B15B,EAAKpC,MACL,CACIb,MAAO,KACPwe,UAAU,EACV0d,gBAAgB,EAChBC,eAAe,EACfC,cAAe,KACfC,eAAgB,KAChBC,wBAAwB,EACxBC,uBAAuB,EAEvB9F,WAAW,EACXF,WAAY,UACZC,UAAW,GACXkF,OAAQ,IAjBhBz4B,mFAwBSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,mBAU9FnV,KAAK25B,YATD35B,KAAKK,SACD,CACIgb,UAAU,EACVxe,MAAO,sDAeX,IAAAsR,EAAAnO,KAGR+Z,GAAO,0BAA0B5Y,KAAK,SAACG,GAEnC6M,EAAK9N,SACD,CACIgb,UAAU,EACVkd,OAAQpqB,EAAKqqB,0BAA0Bl3B,EAAO6Y,SAGtD,SAACtd,GACGsR,EAAK9N,SACD,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,+CA+BnB,IAAA+X,EAAAlyB,KACVA,KAAKK,SAAS,CAAE24B,eAAe,IADrB,IAAA5qB,EAGuCpO,KAAKtC,MAA9Cu7B,EAHE7qB,EAGF6qB,cAAeG,EAHbhrB,EAGagrB,sBAGvBhf,GAAQ,6BAA+B6e,EAAcW,SAASz4B,KAAK,WAC/D+wB,EAAK7xB,SACD,CACI24B,eAAe,IAGvB9G,EAAKuH,4BAA4BL,GACjClH,EAAK1M,iBAAiB,UAAW,kBAEjC0M,EAAKyH,aAET,SAAC98B,GACGq1B,EAAK7xB,SACD,CAEI24B,eAAe,IAGvB9G,EAAKuH,4BAA4BL,GACjClH,EAAK1M,iBAAiB,SAAU3oB,EAAMsd,+CAU/B,IAAA0f,EAAA75B,KACXA,KAAKK,SAAS,CAAE04B,gBAAgB,IADrB,IAAA5G,EAGwCnyB,KAAKtC,MAAhDw7B,EAHG/G,EAGH+G,eAAgBC,EAHbhH,EAGagH,uBAGxB/e,GAAQ,0BAA4B8e,EAAeU,SAASz4B,KAAK,WAC7D04B,EAAKx5B,SACD,CACI04B,gBAAgB,IAGxBc,EAAKH,6BAA6BP,GAClCU,EAAKrU,iBAAiB,UAAW,mBAEjCqU,EAAKF,aAET,SAAC98B,GACGg9B,EAAKx5B,SACD,CAEI04B,gBAAgB,IAGxBc,EAAKH,6BAA6BP,GAClCU,EAAKrU,iBAAiB,SAAU3oB,EAAMsd,0DAIpBoe,GAItB,IAFA,IAAIE,EAAY,GAEPC,EAAa,EAAGA,EAAaH,EAAO36B,OAAQ86B,IACrD,CAKI,IAJA,IAAIC,EAAQJ,EAAOG,GAEfE,EAAsB,GAEjBC,EAAe,EAAGA,EAAeF,EAAK,SAAa/6B,OAAQi7B,IACpE,CASID,GAAwB,MARJD,EAAK,SAAaE,GAAlB,OAQiC,QAPc,IAA/CF,EAAK,SAAaE,GAAlB,QAEAF,EAAK,SAAaE,GAAlB,mBAEAF,EAAK,SAAaE,GAAlB,aAGwD,KAGhFF,EAAK,oBAA0BC,EAE/BH,EAAUtL,KAAKwL,GAGnB,OAAOF,mCAIX,IAAAqB,EAAA95B,KAAA+5B,EACwJ/5B,KAAKtC,MAAjJb,EADZk9B,EACYl9B,MAAOwe,EADnB0e,EACmB1e,SAAUkd,EAD7BwB,EAC6BxB,OAAQnF,EADrC2G,EACqC3G,WAAYC,EADjD0G,EACiD1G,UAAWC,EAD5DyG,EAC4DzG,UAAW8F,EADvEW,EACuEX,sBAAuBD,EAD9FY,EAC8FZ,uBAAwBH,EADtHe,EACsHf,cAAeD,EADrIgB,EACqIhB,eACzH7uB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAMhEsC,EAAAC,EAAAC,cAAA,WAGAF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM4V,EAAKz5B,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAM0rB,EAAuB7iB,QAAS,kBAAMujB,EAAKL,4BAA4BL,IAAwB/K,kBAAgB,oBAAoB9I,WAAW,GAC7LpmB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,mDACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,oCAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM2qB,EAAKL,4BAA4BL,IAAwBx2B,MAAM,QAAQ8vB,WAAS,GAAvG,UAGJvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU8vB,EAAe7pB,QAAS,kBAAM2qB,EAAKE,eAAep3B,MAAM,UACjEo2B,EAAgB,wBAA0B,sBAMvD75B,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAMyrB,EAAwB5iB,QAAS,kBAAMujB,EAAKJ,6BAA6BP,IAAyB9K,kBAAgB,oBAAoB9I,WAAW,GAChMpmB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,gDACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,oCAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM2qB,EAAKJ,6BAA6BP,IAAyBv2B,MAAM,QAAQ8vB,WAAS,GAAzG,UAGJvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU6vB,EAAgB5pB,QAAS,kBAAM2qB,EAAKG,gBAAgBr3B,MAAM,aACnEm2B,EAAiB,qBAAuB,mBAKrD55B,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,kBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,kEAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KAEI1f,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,eAAgB,SAAU,aAAc,aAAc,YAClEwH,iBAAkB,CAAC,gBAAiB,aAAc,mBAAoB,YAAa,uBACnFvH,UAAWiY,EACXvP,YAAY,EACZV,eAAgB,EAChBC,kBAAkB,gBAClBC,eAAe,iBACfO,oBAAqB,OACrBD,eAAgB,YAChBd,iBAAkB,CAAC,aACnBC,uBAAwB,CAAC,uBACzBS,uBAEI1T,KAAQI,8BAA8B,CAAC,0BAA2BpF,KAAWC,aAAakF,mBAEtF,SAAC+kB,GAAkBJ,EAAKz5B,SAAS,CAAE64B,eAAgBgB,IAAgBJ,EAAKJ,6BAA6BP,IACnG,KAEVxQ,0BAEI3T,KAAQI,8BAA8B,CAAC,0BAA2BpF,KAAWC,aAAakF,mBAEtF,SAAC+kB,GAAkBJ,EAAKz5B,SAAS,CAAE44B,cAAeiB,IAAgBJ,EAAKL,4BAA4BL,IACjG,YAhG3Bj6B,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,6BAlMtBnU,IAAMC,WA+SlBC,OAlVA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAyTL5B,CAAmBo2B,gICnVlC,SAASlR,GAAT7d,GACA,IAD8BlK,EAC9B7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAGIG,EAmCErK,EAnCFqK,QAEAmW,EAiCExgB,EAjCFwgB,UACAC,EAgCEzgB,EAhCFygB,UACAuH,EA+BEhoB,EA/BFgoB,iBAEAtH,EA6BE1gB,EA7BF0gB,iBAEAwH,EA2BEloB,EA3BFkoB,oBACAC,EA0BEnoB,EA1BFmoB,iBAEAC,EAwBEpoB,EAxBFooB,uBAEAC,EAsBEroB,EAtBFqoB,YAEAC,EAoBEtoB,EApBFsoB,YAEAC,EAkBEvoB,EAlBFuoB,eACAC,EAiBExoB,EAjBFwoB,cAEAC,EAeEzoB,EAfFyoB,eACAC,EAcE1oB,EAdF0oB,kBACAC,EAaE3oB,EAbF2oB,eAEA2R,EAWEt6B,EAXFs6B,qBACAC,EAUEv6B,EAVFu6B,wBACAC,EASEx6B,EATFw6B,wBACAC,EAQEz6B,EARFy6B,qBAEA7R,EAME5oB,EANF4oB,kBACAG,EAKE/oB,EALF+oB,sBACAC,EAIEhpB,EAJFgpB,oBACAC,EAGEjpB,EAHFipB,eACAC,EAEElpB,EAFFkpB,oBACAC,EACEnpB,EADFmpB,WArCJC,EAwCsCzmB,IAAM0mB,UAAS,GAxCrDC,EAAAnrB,OAAAorB,GAAA,EAAAprB,CAAAirB,EAAA,GAwCSI,EAxCTF,EAAA,GAwCqBG,EAxCrBH,EAAA,GAAAI,EAyCsD/mB,IAAM0mB,SAASb,GAzCrEmB,EAAAxrB,OAAAorB,GAAA,EAAAprB,CAAAurB,EAAA,GAyCSE,EAzCTD,EAAA,GAyC6BE,EAzC7BF,EAAA,GAAAG,EA0C0BnnB,IAAM0mB,UAAS,GA1CzCU,EAAA5rB,OAAAorB,GAAA,EAAAprB,CAAA2rB,EAAA,GA0CSjc,EA1CTkc,EAAA,GA0CeC,EA1CfD,EAAA,GAAAE,EA2CkDtnB,IAAM0mB,UAAS,GA3CjEa,EAAA/rB,OAAAorB,GAAA,EAAAprB,CAAA8rB,EAAA,GA2CSE,EA3CTD,EAAA,GA2C2BE,EA3C3BF,EAAA,GAAAG,EA4C0C1nB,IAAM0mB,SAASH,GAA4C,OA5CrGoB,EAAAnsB,OAAAorB,GAAA,EAAAprB,CAAAksB,EAAA,GA4CSE,EA5CTD,EAAA,GA4CuBE,EA5CvBF,EAAA,GAAAG,EA6CgC9nB,IAAM0mB,SAASJ,GAAkC,IA7CjFyB,EAAAvsB,OAAAorB,GAAA,EAAAprB,CAAAssB,EAAA,GA6CSE,EA7CTD,EAAA,GA6CkBE,EA7ClBF,EAAA,GAoDQgQ,EACN,CACEx0B,OAAQ,MACRoB,cAAe,SACff,QAAS,oBASX,SAASyH,KACPgc,GAAQ,GAoFV,SAASe,GAAqBC,EAAMC,EAAMN,GAExC,IAAIO,EAAkB,GAClBC,EAAkB,GAGtB,GAAIR,EAAQS,SAAS,KACrB,CACE,IAAIC,EAAeV,EAAQW,MAAM,KAEjCJ,EAAkBF,EAAKK,EAAa,IAAIA,EAAa,IACrDF,EAAkBF,EAAKI,EAAa,IAAIA,EAAa,SAIrDH,EAAkBF,EAAKL,GACvBQ,EAAkBF,EAAKN,GAIzB,GAAIzC,GAAuBA,EAAoBkD,SAAST,GACxD,CACE,GAAIQ,EAAkBD,EAAkB,EAEtC,OAAQ,EAEV,GAAIC,EAAkBD,EAAkB,EAEtC,OAAO,OAGN,GAAI/C,GAAoBA,EAAiBiD,SAAST,GACvD,CAEE,IAAIY,EAAiBL,EAAgBI,MAAM,KACvCE,EAAiBL,EAAgBG,MAAM,KAEvCG,EAAQF,EAAe,GAAGD,MAAM,KAChCI,EAAQF,EAAe,GAAGF,MAAM,KAGpC,GAAIC,EAAe,IAAMC,EAAe,GACxC,CACE,IAAIG,EAAQJ,EAAe,GAAGD,MAAM,KAChCM,EAAQJ,EAAe,GAAGF,MAAM,KAEpCJ,EAAkB,IAAI9Y,KAAKqZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIE,EAAM,GAAIA,EAAM,IACzER,EAAkB,IAAI/Y,KAAKsZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIE,EAAM,GAAIA,EAAM,SAIzEV,EAAkB,IAAI9Y,KAAKqZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,IACrDN,EAAkB,IAAI/Y,KAAKsZ,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAGvD,GAAIP,EAAkBD,EAEpB,OAAQ,EAEV,GAAIC,EAAkBD,EAEpB,OAAO,MAIX,CAIE,GAHAA,EAAkBA,EAAgBqB,YAClCpB,EAAkBA,EAAgBoB,YAEdC,cAAgBtB,EAAgBsB,cAElD,OAAQ,EAEV,GAAIrB,EAAgBqB,cAAgBtB,EAAgBsB,cAElD,OAAO,EAIX,OAAO,EAiCT,IAAMC,GAAiBC,aAAW,SAAApc,GAAA,IAAEqc,EAAFrc,EAAEqc,OAAQC,EAAVtc,EAAUsc,WAAYC,EAAtBvc,EAAsBuc,SAAUC,EAAhCxc,EAAgCwc,QAAhC,OAChCxtB,EAAAC,EAAAC,cAACqhB,GAAAthB,EAAD,CAAUwtB,MAAO1E,EAAavZ,MAE5B3Q,OAAOC,OAAO,GACdiqB,EAAcuE,EAAa,MAE3Bxb,IAAKub,EAAQK,SAAWpD,EAAmBwB,SAASyB,IAqN1D,SAA2CY,EAAYC,GAIrD,IAFA,IAAIC,EAAqB,GAEhBC,EAAI,EAAGA,EAAIF,EAAK3vB,OAAQ6vB,IACjC,CAEE,IAAIxc,EAAMsc,EAAKE,GAEXC,EAAYzc,EAAIka,MAAM,KAGtBwC,EAAeL,EAAWI,EAAU,IAEnB,OAAjBC,EAOAD,EAAU9vB,OAAS,EAErB4vB,EAAmBL,KAAKG,EAAWI,EAAU,IAAIA,EAAU,KAI3DF,EAAmBL,KAAKQ,GAXxBH,EAAmBL,KAAK,IAe5B,OAAOK,EAjPHI,CAAkClB,EAAU7E,GAAkB9W,IAAI,SAAC8c,EAAUC,GAK3E,GAAIqM,GAAwBA,IAAyBrM,EACrD,CACE,IAAIlH,EACJ,CACEvgB,MAAO,uBACPm0B,YAAa,IACbhI,aAAc9F,EAAQ,OAAaA,EAAQ,OAAa,GACxD3uB,KAAM,UAcR,OAXIq8B,IAEFxT,EAAU,OAAa,UAAY8F,EAAS0N,GAA2B,IACvExT,EAAU,IAAU8F,EAAS0N,IAE3BC,IAEFzT,EAAU,OAAa,UAAY8F,EAAS2N,GAA2B,IACvEzT,EAAU,IAAU8F,EAAS2N,IAI7Bl7B,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CAAWiL,UAAWH,EAAQ2V,UAAW5O,IAAK6c,GAE1CrE,EAAmBwB,SAASyB,GAE5BvtB,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAACkzB,GAAD,CACE7jB,GAAI,kBAAoB8d,EACxB/F,iBAAkB,CAChBgM,UAAU,EACV9jB,MAAO4rB,GAGTxT,cAEE,SAACQ,GAAYmF,EAAQ,OAAanF,GAGpCX,WAAaA,IAEfznB,EAAAC,EAAAC,cAAA,YACIqtB,EAAS4N,KAGb,MASR,OACEn7B,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CAAWiL,UAAWH,EAAQ2V,UAAW5O,IAAK6c,EAAO3e,QAEnD,WAME,GAHAma,GAAeD,GAGVnB,EAUL,GAJIO,GACFA,EAAkBiE,GAGhBvE,EACJ,CAEE,IAAI2E,EAAU3E,EAAY4E,MAAM,eAE5BC,EAAU7E,EAMd,GAAI2E,EACJ,CACE,IAAIG,EAAYH,EAAQ,GACpBI,EAAgBR,EAASO,GAE7BD,EAAUA,EAAQzpB,QAAQupB,EAAQ,GAAII,GAGxCP,EAAQQ,KAAKH,QAIV,GAAI5E,GAAkBC,EAEzB,GAAIA,EAAc4C,SAASyB,GAC3B,CACE,IAAIU,EAAY/E,EAAc1T,QAAQ+X,GACtCrE,EAAcgF,OAAOD,EAAW,GAEhC1D,EAAsBrB,QAItBA,EAAc8E,KAAKT,GACnBhD,EAAsBrB,KAOzBC,IAAmBwF,EAClB3uB,EAAAC,EAAAC,cAAA,KAAGsP,MAAO8d,EAAYtd,QAAS,kBA7UtBwb,EA6U4CkD,EA3UnEhE,GAAQ,QACRI,EAAoBU,GAHE,IAACA,IA6UwDpC,GACjEsF,EAASzB,cAUrBxD,GAAyBC,EAEzB1pB,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CAAWiL,UAAWH,EAAQ4V,gBAAiB7O,IAAK,MAEhD4X,EAAsB1pB,EAAAC,EAAAC,cAAC4uB,GAAA7uB,EAAD,CAAUuP,MAAO8d,EAAYtd,QAAS,kBAAM0Z,EAAoB6D,MAAe,KAGrG9D,EAAwBzpB,EAAAC,EAAAC,cAAC6uB,GAAA9uB,EAAD,CAAYuP,MAAO8d,EAAYtd,QAAS,kBAAMyZ,EAAsB8D,MAAe,MAI/G,QAMJ,OAEEvtB,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CACEsO,KAAMA,EACN6I,QAAS1I,GACTugB,OAAO,QACP7I,WAAW,EACX8I,kBAAgB,uBAEhBlvB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,uBAAuB8Z,GACvCrpB,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBiL,UAAWH,EAAQiW,eACjC6J,IAGT7qB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACED,EAAAC,EAAAC,cAACuL,GAAAxL,EAAD,CAAQ+P,QAAStB,GAAajL,MAAM,WAApC,YAONzD,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ6V,iBACtB5gB,EAAAC,EAAAC,cAACmhB,GAAAphB,EAAD,CAAOiL,UAAWH,EAAQuV,YAER5hB,IAAdwiB,EACElhB,EAAAC,EAAAC,cAvXZ,SAA2BQ,GAC3B,IACU6uB,EAAkB7uB,EAAlB6uB,cAEFC,EAAoB,SAAAC,GAAc,OAAI,SAAA9gB,GAE1C4gB,EAAc5gB,EAAO8gB,KAGvB,OACEzvB,EAAAC,EAAAC,cAACohB,GAAArhB,EAAD,CAAWiL,UAAWH,EAAQqW,EAAmB,gBAC/CphB,EAAAC,EAAAC,cAACqhB,GAAAthB,EAAD,KAEIihB,EAAUtP,IAAI,SAACC,EAAM8c,GAEnB,IAAIc,EAAiB/G,EAAiBiG,GAItC,OAAI9E,GAAef,GAA0BA,EAAuBgD,SAASja,GAqBzE7R,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CACEiL,UAAWH,EAAQ2V,UAAY,IAAM3V,EAAQ0V,cAC7C3O,IAAK6c,GAEJ9c,GAtBH7R,EAAAC,EAAAC,cAACshB,GAAAvhB,EAAD,CACEiL,UAAWH,EAAQ2V,UAAY,IAAM3V,EAAQ0V,cAC7C3O,IAAK6c,EACLe,cAAerE,IAAYoE,GAAiBxE,GAE5CjrB,EAAAC,EAAAC,cAACyvB,GAAA1vB,EAAD,CACE2vB,OAAQvE,IAAYoE,EACpBI,UAAW5E,EACXjb,QAASwf,EAAkBC,IAE1B5d,SAuVT,CAAmB0d,cA3T/B,SAA2B5gB,EAAOmhB,GAMhC5E,EAHuBG,IAAYyE,GAAoC,QAAjB7E,EAGrB,OAAS,OAC1CK,EAAWwE,MAsTD,KAGJ9vB,EAAAC,EAAAC,cAACuhB,GAAAxhB,EAAD,KAzNR,SAA6B+a,EAAMqQ,GAEjC,OAAKA,EAKYrQ,EAAK+U,KAAK,SAACrE,EAAMC,GAEhC,MAAqB,QAAjBV,EAEKQ,GAAqBC,EAAMC,EAAMN,IAIhCI,GAAqBC,EAAMC,EAAMN,KAXpCrQ,EAuNCgV,CAAoB7O,EAAWkK,GAASzZ,IAAI,SAAC2b,EAAUF,GAOrD,OACErtB,EAAAC,EAAAC,cAACitB,GAAD,CAAgBrb,IAAKub,EAAQA,OAAQA,EAAQC,WAL/C,CACEplB,OAAQ,WAI6DqlB,SAAUA,UAmDjG9E,GAAgB/G,aAAe,CAC7BN,iBAAkB,QAqBL7d,WAAWuc,GAAXvc,CAAuBklB,4CC3gBhC6S,eAEF,SAAAA,EAAY56B,GACX,OAAA7B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAy6B,GAAAz8B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAy8B,GAAAt6B,KAAAH,KACSH,0EAIV,IAAA66B,EAC4F16B,KAAKH,MAArF86B,EADZD,EACYC,SAAUC,EADtBF,EACsBE,OAAQC,EAD9BH,EAC8BG,kBAAmBC,EADjDJ,EACiDI,kBAAmBC,EADpEL,EACoEK,oBAEhE,OACI57B,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,GACxBpe,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,2BAEPF,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,GACxBpe,EAAAC,EAAAC,cAAA,SAAI2Q,KAAWC,aAAa6O,aAAaC,QAGjD5f,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,GACxBpe,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,qBAEPF,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,GACxBpe,EAAAC,EAAAC,cAAA,SAAIu7B,KAGZz7B,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,GACxBpe,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,yBAEPF,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,GACxBpe,EAAAC,EAAAC,cAAA,SAAI2Q,KAAWC,aAAaC,YAGpC/Q,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,GACzBpe,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,sBACHF,EAAAC,EAAAC,cAAA,UAEIs7B,EAAS5pB,IAAI,SAACiqB,EAASlN,GAEnB,OAAO3uB,EAAAC,EAAAC,cAAA,MAAI4R,IAAK6c,GAAQkN,EAAQC,OAAzB,MAAoCD,EAAQD,SAMnE57B,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,GACzBpe,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,0CACHF,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QACIh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUi8B,QAASR,EAAmBvT,SAAU,SAACC,GAAD,OAAWuT,EAAkBvT,IAAS3kB,MAAM,UAAU6vB,UAAU,IAEpH6I,MAAQn8B,EAAAC,EAAAC,cAAA,uEAA8DF,EAAAC,EAAAC,cAAA,KAAG+C,KAAK,2DAA2D6L,OAAO,SAA1E,6CAzD/DzL,IAAMC,WAkE1BC,OAhGA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAuEL5B,CAAmB+3B,ICrE5Bc,eAEF,SAAAA,EAAY17B,GACX,OAAA7B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAu7B,GAAAv9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAu9B,GAAAp7B,KAAAH,KACSH,0EAIV,IAAA66B,EACgD16B,KAAKH,MAAzC+6B,EADZF,EACYE,OAAQY,EADpBd,EACoBc,eAAgBC,EADpCf,EACoCe,QAEhC,OACIt8B,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACAjM,UAAU,SACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQ6L,EACR5L,UAAU,KACVC,YAAY,aACZH,cAAeiL,EACf7T,cAEI,SAACQ,GAAYiU,EAAejU,gBA5BrB/kB,IAAMC,WAsC1BC,OApEA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OA2CL5B,CAAmB64B,ICf5BG,GAAiB,CACnBl0B,QAAS,QAGPm0B,GAAyB,CAC3BpwB,MAAO,OACP5E,gBAAiB,WAGfi1B,GAAqB,CACvBrwB,MAAO,QACP5E,gBAAiB,WAafwU,GACN,CACI,eAGE0gB,eAEF,SAAAA,EAAYh8B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA67B,IACI/7B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA69B,GAAA17B,KAAAH,KAAMH,KAsEVi8B,UAAY,SAACC,GAEThiB,GAAO,eAAiBgiB,GAAgB56B,KAAK,SAACG,GAG1CxB,EAAKO,SACL,CACI27B,iBAAiB,EACjBC,OAAQ36B,EAAO6Y,KACfA,KAAM7Y,EAAO6Y,QAGrB,SAACtd,GAEGiD,EAAKO,SACL,CACI27B,iBAAiB,EACjBn/B,MAAOA,EAAMsd,UAxFzBra,EA8FA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA/GRA,EAmHAo8B,oBAAsB,WACtB,IACYC,EAAoBr8B,EAAKpC,MAAzBy+B,gBAEJC,EAAmC,IAApBD,EAAwB,EAAIA,EAAkB,EAEjEr8B,EAAKu8B,kCAAkCD,GAEvC1mB,SAASof,eAAe,aAAawH,UAAY,EAEjDx8B,EAAKO,SAAS,CAAE87B,gBAAiBC,KA7HrCt8B,EAiIAy8B,4BAA8B,WAC9B,IAAAnuB,EAC4FtO,EAAKpC,MAArF8+B,EADZpuB,EACYouB,iBAAkBC,EAD9BruB,EAC8BquB,yBAA0BC,EADxDtuB,EACwDsuB,eAAgBP,EADxE/tB,EACwE+tB,gBAGpE,GAAwB,IAApBA,GAAyBM,IAA6BD,EAEtD18B,EAAKO,SAAS,CAAEo8B,yBAA0BD,EAAkBR,iBAAiB,EAAOU,eAAgB,KACpG58B,EAAKg8B,UAAUU,OAId,IAAwB,IAApBL,GAAyBO,EAAe9+B,OAAS,EAGtD,OADAkC,EAAK0lB,iBAAiB,UAAW,yCAC1B,EAGN,GAAIkX,EAAe9+B,OAAS,GAAyB,IAApBu+B,GAClC,IAAI,IAAI1O,EAAI,EAAGA,EAAIiP,EAAe9+B,OAAQ6vB,IACtC,GAAgC,GAA5BiP,EAAejP,GAAGwN,OAGlB,OADAn7B,EAAK0lB,iBAAiB,UAAW,uEAC1B,OAKd,GAAwB,IAApB2W,EAGL,OADAr8B,EAAK68B,gBACE,EAIX,OADA78B,EAAK88B,mBACE,GApKX98B,EAuKA88B,gBAAkB,WAClB,IACYT,EAAoBr8B,EAAKpC,MAAzBy+B,gBAEJC,EAAmC,IAApBD,EAAwB,EAAIA,EAAkB,EAEjEr8B,EAAKu8B,kCAAkCD,GAEvC1mB,SAASof,eAAe,aAAawH,UAAY,EAEjDx8B,EAAKO,SAAS,CAAE87B,gBAAiBC,KAjLrCt8B,EAqLAu8B,kCAAoC,SAACQ,GAEf,IAAdA,EAEA/8B,EAAKO,SACD,CACIy8B,oBAAsBpB,GACtBqB,mBAAoB,GACpBC,eAAgB,oBAGL,IAAdH,EAEL/8B,EAAKO,SACD,CACIy8B,oBAAsBnB,GACtBoB,mBAAoB,gBACpBC,eAAgB,kBAGL,IAAdH,GAEL/8B,EAAKO,SACD,CACIy8B,oBAAsBnB,GACtBoB,mBAAoB,kBACpBC,eAAgB,aA/MhCl9B,EAoNAm9B,2BAA6B,SAACC,GAO1B,IANJ,IAIQC,EAHI1B,EAAY37B,EAAKpC,MAAjB+9B,QAKChO,EAAI,EAAGA,EAAIgO,EAAQ79B,OAAQ6vB,IAEhC,GAAIgO,EAAQhO,GAAG2P,KAAOF,EACtB,CACIC,EAAa1B,EAAQhO,GAAG4P,WACxB,MAIRv9B,EAAKO,SAAS,CAACi9B,mBAAoBH,EAAYX,iBAAkBU,KApOrEp9B,EAuOA68B,aAAe,WAEX78B,EAAKO,SAAS,CAACk9B,eAAe,IADlC,IAAApL,EAIiDryB,EAAKpC,MAUlD2c,GAAY,aANZ,CACImjB,SATRrL,EAIYqK,iBAMJiB,SAVRtL,EAI8BuK,iBAUav7B,KAAK,WAExCrB,EAAKO,SACL,CACIq9B,cAAc,KAGtB,SAAC7gC,GAEGiD,EAAKO,SACL,CAEIk9B,eAAe,IAGnBz9B,EAAK0lB,iBAAiB,SAAU3oB,EAAMsd,SArQ9Cra,EA0QA69B,UAAY,SAACC,GAAe,IAAA7D,EACaj6B,EAAKpC,MAAlCu+B,EADgBlC,EAChBkC,OACFrvB,GAFkBmtB,EACR8D,WADQ9D,EACI5f,KACb8hB,EAAO6B,OAClB,SAAAxqB,GAAI,OACAA,EAAKyL,KAAKsN,cAAc1X,QAAQipB,EAAWvR,gBAAkB,KAEnD,IAAduR,EACA99B,EAAKO,SAAU,CAAE8Z,KAAM8hB,EAAQ4B,WAAYD,IAG3C99B,EAAKO,SAAU,CAAE8Z,KAAMvN,EAAQixB,WAAYD,KAjR/C99B,EAAKpC,MACL,CACIb,MAAO,KACPm/B,iBAAiB,EACjB+B,oBAAoB,EACpB9B,OAAQ,GACRR,QAAS,GACTthB,KAAM,GACN0jB,WAAY,GAGZvK,WAAW,EACXF,WAAY,UACZC,UAAW,GAEXiK,mBAAoB,GACpBd,iBAAkB,GAClBE,eAAgB,GAChBD,yBAA0B,GAE1B5B,mBAAmB,EAEnBsB,gBAAiB,EAEjBW,oBAAqBpB,GACrBqB,mBAAoB,GACpBC,eAAgB,kBAEhBO,eAAe,EACfG,cAAc,GAhCtB59B,mFAqCA,IAAAqO,EAAAnO,KAESgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAa7F4E,GAAO,aAAa5Y,KAAK,SAACG,GAGtB6M,EAAK9N,SACL,CACI09B,oBAAmB,EACnBtC,QAASn6B,EAAO6Y,QAGxB,SAACtd,GAEGsR,EAAK9N,SACL,CACI09B,oBAAoB,EACpBlhC,MAAOA,EAAMsd,SAzBjBna,KAAKK,SACL,CACI27B,iBAAiB,EACjB+B,oBAAoB,EACpBlhC,MAAO,mDA4OnB,IAAAq1B,EAAAlyB,KAAAg+B,EAGgNh+B,KAAKtC,MAFzMb,EADZmhC,EACYnhC,MAAOm/B,EADnBgC,EACmBhC,gBAAiB+B,EADpCC,EACoCD,mBACxB3K,EAFZ4K,EAEY5K,WAAYC,EAFxB2K,EAEwB3K,UAAWC,EAFnC0K,EAEmC1K,UAAWnZ,EAF9C6jB,EAE8C7jB,KAAM0jB,EAFpDG,EAEoDH,WACxC5B,EAHZ+B,EAGY/B,OAAQR,EAHpBuC,EAGoBvC,QAASiB,EAH7BsB,EAG6BtB,eAAgBY,EAH7CU,EAG6CV,mBAAoBd,EAHjEwB,EAGiExB,iBAAkB3B,EAHnFmD,EAGmFnD,kBAAmBsB,EAHtG6B,EAGsG7B,gBAAiBW,EAHvHkB,EAGuHlB,oBAAqBC,EAH5IiB,EAG4IjB,mBAAoBC,EAHhKgB,EAGgKhB,eAAgBO,EAHhLS,EAGgLT,cAAeG,EAH/LM,EAG+LN,aACnLxzB,EAAYlK,KAAKH,MAAjBqK,QASR,OAAIrN,EAGOsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAE/D6gC,EAGGv+B,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAG,YAAY4qB,MAAI,IAIrChuB,EAAAC,EAAAC,cAAA,WAGIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMgO,EAAK7xB,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UAEnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAA4B,OAApBA,EAAEC,iBAAyBJ,EAAKqK,gCACrDp9B,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,cAEJxD,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAC4+B,GAAA7+B,EAAD,CAAS8+B,WAAY/B,EAAiBgC,kBAAgB,GAClDh/B,EAAAC,EAAAC,cAAC++B,GAAAh/B,EAAD,CAAM6R,IAAI,iBACN9R,EAAAC,EAAAC,cAACg/B,GAAAj/B,EAAD,uBAEJD,EAAAC,EAAAC,cAAC++B,GAAAh/B,EAAD,CAAM6R,IAAI,mBACN9R,EAAAC,EAAAC,cAACg/B,GAAAj/B,EAAD,yBAEJD,EAAAC,EAAAC,cAAC++B,GAAAh/B,EAAD,CAAM6R,IAAI,iBACN9R,EAAAC,EAAAC,cAACg/B,GAAAj/B,EAAD,wBAKoB,IAApB+8B,GAC2B,IAAvB4B,EACA5+B,EAAAC,EAAAC,cAACi/B,GAAD,CAAyB1D,OAAQ4B,EAAkBhB,eAAgB,SAAC0B,GAAD,OAAchL,EAAK+K,2BAA2BC,IAAYzB,QAASA,IAEtIt8B,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,uBAChC,KAIkB,IAApBwlB,GACwB,IAApBH,EACIC,EAAOr+B,OAAS,EAChBuB,EAAAC,EAAAC,cAAAF,EAAAC,EAAAm/B,SAAA,KACAp/B,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,oBACVhY,GAAG,SAEH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cA5E3B,SAACjZ,GACdkuB,GAEA9J,EAAKyL,UAAU7vB,IA6EyB8Y,WAAY,CACR8L,WAAW,EACX8L,UAAW,IACXhM,aAAcqL,KAGtB1+B,EAAAC,EAAAC,cAACo/B,GAAD,CACIle,iBAAiB,UACjBF,UAAW,CAAC,OAAQ,UACpBwH,iBAAkB,CAAC,OAAQ,UAC3BvH,UAAWnG,EACX6O,YAAY,EACZf,uBAAwB,CAAC,UACzBa,eAAgB,OAChBZ,aAAa,EACbE,gBAAgB,EAChBC,cAAeqU,EACfvC,qBAAsB,EACtBC,wBAAyB,kBACzBC,wBAAyB,kBACzBC,qBAAsB,cAI1Bn7B,EAAAC,EAAAC,cAAA,KAAGsP,MAAO,CAAC1H,UAAW,WAAtB,gCAA+Dq2B,EAA/D,KAEJn+B,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,uBAChC,KAIkB,IAApBwlB,EACAh9B,EAAAC,EAAAC,cAACq/B,GAAD,CAAyB/D,SAAU+B,EAAgB9B,OAAQ0C,EAAoBzC,kBAAmBA,EAAmBE,oBAAoB,OAAOD,kBAAmB,kBAAM5I,EAAK7xB,SAAS,CAACw6B,mBAAoBA,OAC1M,OAKlB17B,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+L,MAAOmuB,EAAqB3tB,QAAS,kBAAM+iB,EAAKgK,uBAAuBhzB,SAAUq0B,GACvGp+B,EAAAC,EAAAC,cAACs/B,GAAAv/B,EAAD,MAAmBD,EAAAC,EAAAC,cAAA,YAAO09B,IAG9B59B,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY7E,KAAK,SAAS4Q,MAAOitB,GAAoB1yB,SAAUq0B,GACzEp+B,EAAAC,EAAAC,cAAA,YAAQk+B,EAAgB,oBAAsBP,GAEtB,IAApBb,EAEAh9B,EAAAC,EAAAC,cAACu/B,GAAAx/B,EAAD,MAEAD,EAAAC,EAAAC,cAACw/B,GAAAz/B,EAAD,kBAnaToD,IAAMC,WA8blBC,OAzfA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAgeL5B,CAAmBm5B,ICzd5BH,GAAiB,CACnBl0B,QAAS,QAGPm0B,GAAyB,CAC3BpwB,MAAO,OACP5E,gBAAiB,WAGfi1B,GAAqB,CACvBrwB,MAAO,QACP5E,gBAAiB,WAafwU,GACN,CACI,eAGE2jB,eAEF,SAAAA,EAAYj/B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA8+B,IACIh/B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA8gC,GAAA3+B,KAAAH,KAAMH,KAoEVi8B,UAAY,SAACC,GAEThiB,GAAO,oBAAsBgiB,GAAgB56B,KAAK,SAACG,GAG/CxB,EAAKO,SACL,CACI27B,iBAAiB,EACjBC,OAAQ36B,EAAO6Y,QAGvB,SAACtd,GAEGiD,EAAKO,SACL,CACI27B,iBAAiB,EACjBn/B,MAAOA,EAAMsd,UArFzBra,EA2FA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA5GRA,EAgHAo8B,oBAAsB,WACtB,IACYC,EAAoBr8B,EAAKpC,MAAzBy+B,gBAEJC,EAAmC,IAApBD,EAAwB,EAAIA,EAAkB,EAEjEr8B,EAAKu8B,kCAAkCD,GAEvC1mB,SAASof,eAAe,aAAawH,UAAY,EAEjDx8B,EAAKO,SAAS,CAAE87B,gBAAiBC,KA1HrCt8B,EA8HAy8B,4BAA8B,WAC9B,IAAAnuB,EAC4FtO,EAAKpC,MAArF8+B,EADZpuB,EACYouB,iBAAkBC,EAD9BruB,EAC8BquB,yBAA0BC,EADxDtuB,EACwDsuB,eAAgBP,EADxE/tB,EACwE+tB,gBAGpE,GAAwB,IAApBA,GAAyBM,IAA6BD,EAEtD18B,EAAKO,SAAS,CAAEo8B,yBAA0BD,EAAkBR,iBAAiB,EAAOU,eAAgB,KACpG58B,EAAKg8B,UAAUU,OAId,IAAwB,IAApBL,GAAyBO,EAAe9+B,OAAS,EAGtD,OADAkC,EAAK0lB,iBAAiB,UAAW,yCAC1B,EAGN,GAAwB,IAApB2W,EAGL,OADAr8B,EAAK68B,gBACE,EAIX,OADA78B,EAAK88B,mBACE,GAvJX98B,EA0JA88B,gBAAkB,WAClB,IACYT,EAAoBr8B,EAAKpC,MAAzBy+B,gBAEJC,EAAmC,IAApBD,EAAwB,EAAIA,EAAkB,EAEjEr8B,EAAKu8B,kCAAkCD,GAEvC1mB,SAASof,eAAe,aAAawH,UAAY,EAEjDx8B,EAAKO,SAAS,CAAE87B,gBAAiBC,KApKrCt8B,EAwKAu8B,kCAAoC,SAACQ,GAEf,IAAdA,EAEA/8B,EAAKO,SACD,CACIy8B,oBAAsBpB,GACtBqB,mBAAoB,GACpBC,eAAgB,mBAGL,IAAdH,EAEL/8B,EAAKO,SACD,CACIy8B,oBAAsBnB,GACtBoB,mBAAoB,gBACpBC,eAAgB,kBAGL,IAAdH,GAEL/8B,EAAKO,SACD,CACIy8B,oBAAsBnB,GACtBoB,mBAAoB,iBACpBC,eAAgB,aAlMhCl9B,EAuMAm9B,2BAA6B,SAACC,GAO1B,IANJ,IAIQC,EAHI1B,EAAY37B,EAAKpC,MAAjB+9B,QAKChO,EAAI,EAAGA,EAAIgO,EAAQ79B,OAAQ6vB,IAEhC,GAAIgO,EAAQhO,GAAG2P,KAAOF,EACtB,CACIC,EAAa1B,EAAQhO,GAAG4P,WACxB,MAIRv9B,EAAKO,SAAS,CAACi9B,mBAAoBH,EAAYX,iBAAkBU,KAvNrEp9B,EA0NA68B,aAAe,WAEX78B,EAAKO,SAAS,CAACk9B,eAAe,IADlC,IAAApL,EAIiDryB,EAAKpC,MAUlD2c,GAAY,oBANZ,CACImjB,SATRrL,EAIYqK,iBAMJiB,SAVRtL,EAI8BuK,iBAUoBv7B,KAAK,WAE/CrB,EAAKO,SACL,CACIq9B,cAAc,KAGtB,SAAC7gC,GAEGiD,EAAKO,SACL,CAEIk9B,eAAe,IAGnBz9B,EAAK0lB,iBAAiB,SAAU3oB,EAAMsd,SArP1Cra,EAAKpC,MACL,CACIb,MAAO,KACPm/B,iBAAiB,EACjB+B,oBAAoB,EACpB9B,OAAQ,GACRR,QAAS,GAGTnI,WAAW,EACXF,WAAY,UACZC,UAAW,GAEXiK,mBAAoB,GACpBd,iBAAkB,GAClBE,eAAgB,GAChBD,yBAA0B,GAE1B5B,mBAAmB,EAEnBsB,gBAAiB,EAEjBW,oBAAqBpB,GACrBqB,mBAAoB,GACpBC,eAAgB,iBAEhBO,eAAe,EACfG,cAAc,GA9BtB59B,mFAmCA,IAAAqO,EAAAnO,KAESgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAa7F4E,GAAO,aAAa5Y,KAAK,SAACG,GAGtB6M,EAAK9N,SACL,CACI09B,oBAAmB,EACnBtC,QAASn6B,EAAO6Y,QAGxB,SAACtd,GAEGsR,EAAK9N,SACL,CACI09B,oBAAoB,EACpBlhC,MAAOA,EAAMsd,SAzBjBna,KAAKK,SACL,CACI27B,iBAAiB,EACjB+B,oBAAoB,EACpBlhC,MAAO,mDAkNnB,IAAAq1B,EAAAlyB,KAAA+5B,EAGgN/5B,KAAKtC,MAFzMb,EADZk9B,EACYl9B,MAAOm/B,EADnBjC,EACmBiC,gBAAiB+B,EADpChE,EACoCgE,mBACxB3K,EAFZ2G,EAEY3G,WAAYC,EAFxB0G,EAEwB1G,UAAWC,EAFnCyG,EAEmCzG,UACvB2I,EAHZlC,EAGYkC,OAAQR,EAHpB1B,EAGoB0B,QAASiB,EAH7B3C,EAG6B2C,eAAgBY,EAH7CvD,EAG6CuD,mBAAoBd,EAHjEzC,EAGiEyC,iBAAkB3B,EAHnFd,EAGmFc,kBAAmBsB,EAHtGpC,EAGsGoC,gBAAiBW,EAHvH/C,EAGuH+C,oBAAqBC,EAH5IhD,EAG4IgD,mBAAoBC,EAHhKjD,EAGgKiD,eAAgBO,EAHhLxD,EAGgLwD,cAAeG,EAH/L3D,EAG+L2D,aACnLxzB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAIrN,EAGOsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAE/D6gC,EAGGv+B,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAG,eAAe4qB,MAAI,IAIxChuB,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMgO,EAAK7xB,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAA4B,OAApBA,EAAEC,iBAAyBJ,EAAKqK,gCACrDp9B,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,qBAEJxD,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAC4+B,GAAA7+B,EAAD,CAAS8+B,WAAY/B,EAAiBgC,kBAAgB,GAClDh/B,EAAAC,EAAAC,cAAC++B,GAAAh/B,EAAD,CAAM6R,IAAI,iBACN9R,EAAAC,EAAAC,cAACg/B,GAAAj/B,EAAD,uBAEJD,EAAAC,EAAAC,cAAC++B,GAAAh/B,EAAD,CAAM6R,IAAI,kBACN9R,EAAAC,EAAAC,cAACg/B,GAAAj/B,EAAD,wBAEJD,EAAAC,EAAAC,cAAC++B,GAAAh/B,EAAD,CAAM6R,IAAI,iBACN9R,EAAAC,EAAAC,cAACg/B,GAAAj/B,EAAD,wBAKoB,IAApB+8B,GAC2B,IAAvB4B,EACA5+B,EAAAC,EAAAC,cAACi/B,GAAD,CAAyB1D,OAAQ4B,EAAkBhB,eAAgB,SAAC0B,GAAD,OAAchL,EAAK+K,2BAA2BC,IAAYzB,QAASA,IAEtIt8B,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,uBAChC,KAIkB,IAApBwlB,EACIH,EACIC,EAAOr+B,OAAS,EAChBuB,EAAAC,EAAAC,cAACo/B,GAAD,CACIle,iBAAiB,UACjBF,UAAW,CAAC,OAAQ,UACpBwH,iBAAkB,CAAC,cAAe,UAClCvH,UAAW2b,EACXjT,YAAY,EACZf,uBAAwB,CAAC,UACzBa,eAAgB,cAChBZ,aAAa,EACbE,gBAAgB,EAChBC,cAAeqU,EACfvC,qBAAsB,EACtBC,wBAAyB,kBACzBC,wBAAyB,kBACzBC,qBAAsB,aAG1Bn7B,EAAAC,EAAAC,cAAA,KAAGsP,MAAO,CAAC1H,UAAW,WAAtB,+BAA8Dq2B,EAA9D,KAEJn+B,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,+BAChC,KAIkB,IAApBwlB,EACAh9B,EAAAC,EAAAC,cAACq/B,GAAD,CAAyB/D,SAAU+B,EAAgB9B,OAAQ0C,EAAoBzC,kBAAmBA,EAAmBE,oBAAoB,cAAcD,kBAAmB,kBAAM5I,EAAK7xB,SAAS,CAACw6B,mBAAoBA,OACjN,OAIlB17B,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+L,MAAOmuB,EAAqB3tB,QAAS,kBAAM+iB,EAAKgK,uBAAuBhzB,SAAUq0B,GACvGp+B,EAAAC,EAAAC,cAACs/B,GAAAv/B,EAAD,MAAmBD,EAAAC,EAAAC,cAAA,YAAO09B,IAG9B59B,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY7E,KAAK,SAAS4Q,MAAOitB,GAAoB1yB,SAAUq0B,GACzEp+B,EAAAC,EAAAC,cAAA,YAAQk+B,EAAgB,oBAAsBP,GAEtB,IAApBb,EAEAh9B,EAAAC,EAAAC,cAACu/B,GAAAx/B,EAAD,MAEAD,EAAAC,EAAAC,cAACw/B,GAAAz/B,EAAD,kBAzWJoD,IAAMC,WC7ChC0Y,IDibSzY,IA/bA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAsaL5B,CAAmBo8B,IChblC,CACI,aACA,gBAGEC,eAEF,SAAAA,EAAYl/B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA++B,IACIj/B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA+gC,GAAA5+B,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVkd,OAAQ,IAPhBz4B,mFAYA,IAAAqO,EAAAnO,KAESgV,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAY7F4E,GAAO,kBAAkB5Y,KAAK,SAACG,GAG3B6M,EAAK9N,SACL,CACIgb,UAAS,EACTkd,OAAQpqB,EAAKqqB,0BAA0Bl3B,EAAO6Y,SAGtD,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,oEA0BO07B,GAItB,IAFA,IAAIE,EAAY,GAEPC,EAAa,EAAGA,EAAaH,EAAO36B,OAAQ86B,IACrD,CAKI,IAJA,IAAIC,EAAQJ,EAAOG,GAEfE,EAAsB,GAEjBC,EAAe,EAAGA,EAAeF,EAAK,SAAa/6B,OAAQi7B,IACpE,CASID,GAAwB,MARJD,EAAK,SAAaE,GAAlB,OAQiC,QAPc,IAA/CF,EAAK,SAAaE,GAAlB,QAEAF,EAAK,SAAaE,GAAlB,mBAEAF,EAAK,SAAaE,GAAlB,aAGwD,KAGhFF,EAAK,oBAA0BC,EAE/BH,EAAUtL,KAAKwL,GAGnB,OAAOF,mCAIX,IAAArqB,EACwCpO,KAAKtC,MAAjCb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SAAUkd,EAD7BnqB,EAC6BmqB,OACjBruB,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAKhEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,iBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,sCAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KAEI1f,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,eAAgB,SAAU,aAAc,aAAc,WAAY,YAC9EwH,iBAAkB,CAAC,gBAAiB,aAAc,mBAAoB,YAAa,sBAAuB,cAC1GvH,UAAWiY,EACXvP,YAAY,EACZV,eAAgB,EAChBC,kBAAkB,gBAClBC,eAAe,iBACfM,eAAgB,YAChBC,oBAAqB,OACrBf,iBAAkB,CAAC,aACnBC,uBAAwB,CAAC,6BAjC1C9oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,oCAtFlBnU,IAAMC,WAkItBC,OAtKA,CACXuY,kBAAmB,CACjB6F,4BAA6B,CAC3Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhB8d,0BAA2B,CACzBne,MAAO,YAGXD,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACT1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OA6IL5B,CAAmBq8B,yBClK5BC,eACF,SAAAA,EAAYn/B,GAAQ,OAAA7B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAg/B,GAAAhhC,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAghC,GAAA7+B,KAAAH,KACVH,0EAID,IACGqK,EAAYlK,KAAKH,MAAjBqK,QAER,OACI/K,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,UAAUsW,OAAK,EAACrD,MAAI,GAClC1W,EAAAC,EAAAC,cAACsc,GAAD,CAAU/Y,MAAM,WACZzD,EAAAC,EAAAC,cAAC4/B,GAAA7/B,EAAD,OAEJD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ8Q,cAAtB,uBAEJ7b,EAAAC,EAAAC,cAACwc,GAAD,CAAY3C,OAAK,GACb/Z,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,uBAAZ,qCAlBuBC,IAAMC,WA0BlCC,OAAWmY,GAAXnY,CAA2Bs8B,IC7BpCE,GAAsB,CACxB,uBAGIC,GAA6B,CACjC,8BAGEC,eAEF,SAAAA,EAAYv/B,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAo/B,IACIt/B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAohC,GAAAj/B,KAAAH,KAAMH,KAEDnC,MACL,CAEIb,MAAO,MANfiD,mFAaSkV,KAAQC,8BAA8BiqB,GAAqBlvB,KAAWC,aAAakF,oBAEpFnV,KAAKK,SACL,CACIxD,MAAO,mDAQKmD,KAAKH,MAAjBqK,QADH,IAEGrN,EAAUmD,KAAKtC,MAAfb,MAER,OAAIA,EAGOsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAA,sBACAF,EAAAC,EAAAC,cAAC+d,GAAD,KAEQpI,KAAQI,8BAA8B+pB,GAA4BnvB,KAAWC,aAAakF,mBAGtFhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACvCre,EAAAC,EAAAC,cAACggC,GAAD,OAIR,cAlDO78B,IAAMC,WA8DtBC,OAAWmY,GAAXnY,CAA2B08B,ICjEpCrjB,GAA4B,CAC9B,sBACA,8BAGEujB,eACF,SAAAA,EAAYz/B,GAAO,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAs/B,IACfx/B,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAshC,GAAAn/B,KAAAH,KAAMH,KAqBV2lB,iBAAmB,SAAC4N,EAAYC,GAC5BvzB,EAAKO,SACD,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGnBvzB,EAAKolB,aAAeH,WAChB,WACI/kB,KAAKK,SACD,CACIizB,WAAW,KAErBnO,KALFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAMA,MArCWA,EA2EnBy/B,oCAAsC,WAClCr9B,OAAOC,SAASoB,QAAQ,+QA5ETzD,EAyFnB0/B,oCAAsC,SAACC,GAEnCplB,GAAY,iBAAkBolB,GAAMt+B,KAAK,SAACG,GAEtCvC,IAAQ0C,IAAI,aAAcH,EAAO6Y,KAAM,CAAExY,QAAS,EAAI,GAAIC,QAAQ,EAAMC,SAAU,QAClF/B,EAAK4/B,6BAA6Bp+B,EAAO6Y,OAE7C,SAACtd,GAEGiD,EAAKO,SAAS,CACVs/B,4BAA4B,IAGhC7/B,EAAK0lB,iBAAiB,SAAU,0BAA4B3oB,EAAMsd,SAtGvDra,EA0GnB8/B,mBAAqB,WAIjBvlB,GAAY,wBAFKtb,IAAQC,IAAI,eAEoBmC,KAAK,SAACG,GAEnDvC,IAAQU,OAAO,cAEfK,EAAKO,SAAS,CACVs/B,4BAA4B,EAC5BE,kBAAkB,EAClBC,mBAAoB,GACpBC,sBAAuB,MAG/B,SAACljC,GACGiD,EAAKO,SAAS,CACVs/B,4BAA4B,OA3HrB7/B,EAmInB4/B,6BAA+B,SAACzlB,GAE5B,IAAI+lB,EAAa/lB,EAEZ+lB,IAEDA,EAAajhC,IAAQC,IAAI,eAG7B2B,MAAM,uCACN,CACIG,OAAQ,MACRC,QACA,CACImZ,cAAiB,UAAY8lB,KAGpC7+B,KAAK,SAACC,GAEHA,EAASC,OAAOF,KAAK,SAACG,GAGlB,GAAK2Y,GAA6B,MAApB7Y,EAASG,OAAvB,CAOK,GAAwB,MAApBH,EAASG,OAEd,MAAM,IAAI5E,MAAM2E,EAAOE,mBAI3B1B,EAAKO,SAAS,CACVs/B,4BAA4B,EAC5BE,kBAAkB,EAClBC,mBAAoBx+B,EAAO2+B,KAC3BF,sBAAuBz+B,EAAO4+B,mBAf9BpgC,EAAKqgC,wBAkBZp+B,MAAM,SAAClF,GAEJD,QAAQwjC,IAAIvjC,GAEZiD,EAAKO,SAAS,CACVs/B,4BAA4B,SAlLzB7/B,EA2LnBqgC,oBAAsB,WAElBpmB,GAAO,kBAAkB5Y,KAAK,SAACG,GAE3BvC,IAAQ0C,IAAI,aAAcH,EAAO6Y,KAAM,CAAExY,QAAS,EAAI,GAAIC,QAAQ,EAAMC,SAAU,QAClF/B,EAAK4/B,6BAA6Bp+B,EAAO6Y,OAE7C,SAACtd,GACGiD,EAAKO,SAAS,CACVs/B,4BAA4B,OAjMpC7/B,EAAKpC,MACL,CAEIb,MAAO,KACP8iC,4BAA4B,EAG5BrM,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXwM,kBAAkB,EAClBE,sBAAuB,GACvBD,mBAAoB,IAjBThgC,mFA2Cf,GAAKkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,mBAA9F,CAUA,IACIsqB,EADM,IAAIx9B,IAAIC,OAAOC,SAASC,MACnBC,aAAarD,IAAI,QAEhC,GAAIygC,EACAz/B,KAAKw/B,oCAAoCC,QAM5B1gC,IAAQC,IAAI,cAIzBgB,KAAK0/B,+BAIL1/B,KAAKmgC,2BA3BLngC,KAAKK,SACD,CACIxD,MAAO,mDA2Jd,IAAAsR,EAAAnO,KAAAoO,GACepO,KAAKH,MAAjBqK,QAGgElK,KAAKtC,OAFrEb,EAFHuR,EAEGvR,MAAO8iC,EAFVvxB,EAEUuxB,2BACPvM,EAHHhlB,EAGGglB,WAAYC,EAHfjlB,EAGeilB,UAAWC,EAH1BllB,EAG0BklB,UACvBuM,EAJHzxB,EAIGyxB,iBAAkBC,EAJrB1xB,EAIqB0xB,mBAAoBC,EAJzC3xB,EAIyC2xB,sBAE9C,OAAIljC,EAEOsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAW,+BAAiCta,IAInEsC,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAOLuc,EAEIxgC,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,qCAG9BxX,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAA,UAEIwgC,EACE,2BAA6BE,EAAuB,KAAOD,EAAqB,KAChF,+BAIDD,EAEC1gC,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,UAAW22B,EAAkB1wB,QAAS,SAACkjB,GAAD,OAAOlkB,EAAKyxB,sBAAsBh9B,MAAQi9B,EAA+B,SAAZ,WAA3G,IAAoIA,EAAqC,4BAAlB,iBADvJ1gC,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU22B,EAAkB1wB,QAAS,SAACkjB,GAAD,OAAOlkB,EAAKoxB,uCAAuC38B,MAAOi9B,EAAmB,UAAY,aAAtI,IAAqJA,EAAmB,aAAe,iCArP1Lr9B,IAAMC,WAqQtBC,OAAWmY,GAAXnY,CAA2B48B,IC3QlCxiB,GAAuC,CAC3C,2BACA,4BAGIC,GAAuC,CAC3C,2BACA,2BACA,4BAGIC,GAAyC,CAC7C,6BACA,8BAGEqjB,eAEF,SAAAA,EAAYxgC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAqgC,IACIvgC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAqiC,GAAAlgC,KAAAH,KAAMH,KAEDnC,MACL,GAJJoC,wEAUI,OACAX,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAA,uBACAF,EAAAC,EAAAC,cAAC+d,GAAD,KAEIpI,KAAQI,8BAA8B0H,GAAsC9M,KAAWC,aAAakF,mBAGhGhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GAC3Cre,EAAAC,EAAAC,cAACqe,GAAD,OAIJ,KAIA1I,KAAQI,8BAA8B2H,GAAsC/M,KAAWC,aAAakF,mBAGhGhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GAC3Cre,EAAAC,EAAAC,cAACse,GAAD,OAIJ,KAIA3I,KAAQI,8BAA8B4H,GAAwChN,KAAWC,aAAakF,mBAGlGhW,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GAC3Cre,EAAAC,EAAAC,cAACue,GAAD,OAIJ,cAlDepb,IAAMC,WA0DtBC,OAAWmY,GAAXnY,CAA2B29B,ICvCpCtkB,GAA4B,CAC9B,uBAGEZ,GAA2B,CAC7B,2BACA,4BAGEmlB,eAEF,SAAAA,EAAYzgC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAsgC,IACIxgC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAsiC,GAAAngC,KAAAH,KAAMH,KAEDnC,MACL,CAEIb,MAAO,KACPwe,UAAU,EAGVklB,OAAQ,IAVhBzgC,mFAiBSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBAAuBH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAY7MnV,KAAKwgC,YAVDxgC,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,sDAWnB,IAAAsR,EAAAnO,KACI+Z,GAAO,cAAc5Y,KAAK,SAACG,GAGvB6M,EAAK9N,SACL,CACIgb,UAAS,EACTklB,OAAQj/B,EAAO6Y,QAGvB,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,0CAMzB,IAAA/L,EACwCpO,KAAKtC,MAAjCb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SAAUklB,EAD7BnyB,EAC6BmyB,OACjBr2B,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,eACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,6BAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAAC8c,GAAA/c,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQu2B,aAAtB,iCAEJthC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GAElCxI,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,mBAE5FhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,mBACRpD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,GACpCpK,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,SAIV,OAKdD,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,OAAQ,OAAQ,eAAgB,cAAe,aAAc,uCACzEwH,iBAAkB,CAAC,YAAa,wBAAyB,cAAe,aAAc,YAAa,iCACnGvH,UAAWigB,EACXrY,aAAa,EACbC,YAAY,kCACZa,YAAY,EACZF,eAAgB,YAChBf,oBAAqB,CAAC,cAAe,oBArDlD5oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,6BA/DxBnU,IAAMC,WA8HhBC,OAxKA,CACXuY,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhBm8B,YAAY,CACRlf,UAAW,WA2IJ7e,CAAmB49B,4CC9L5BI,GAAqB,oCACrBC,GAA0B,oCAUzB,SAASC,GAAY5mB,GAC5B,IADqC6mB,EACrCljC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GADsDmjC,EACtDnjC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACQojC,EAAUF,EAAUF,GAA0BD,GAG9CzmB,EAAQvE,SAASC,OAAOpS,QAAQ,oDAAqD,MAEzF,OAAO5C,MAAMogC,EAAU/mB,EACvB,CACIjZ,QACA,CACImZ,cAAiB,UAAYD,KAGpC9Y,KAAK,SAACC,GAAD,OAAcA,EAASC,OAAOF,KAAK,SAAAF,GAAI,MAAK,CAAEM,OAAQH,EAASG,OAAQ4Y,KAAMlZ,OAClFE,KAAK,SAACG,GAGH,GAAsB,MAAlBA,EAAOC,QAAmBu/B,EAOzB,IAAsB,MAAlBx/B,EAAOC,OAEZ,MAAMD,EAIN,OAAOA,EAXP,OAAO6+B,KAAsBh/B,KAAK,WAE9B,OAAOy/B,GAAY5mB,EAAS6mB,GAAS,OA0GrD,SAASV,KAEN,OAAOpmB,GAAO,kBAAkB5Y,KAAK,SAACG,GAElCvC,IAAQ0C,IAAI,aAAcH,EAAO6Y,KAAM,CAAExY,QAAS,EAAI,GAAIC,QAAQ,EAAMC,SAAU,UC7GzF,IAqCMm/B,GAAUt+B,IAAW,CACvBsgB,KAAM,CACJzS,aAAc,qBAEhB0wB,UAAW,CACTt6B,gBAAiB,YALPjE,CAOXw+B,MAECC,GAASz+B,IAAW,SAAAoI,GAAK,MAAK,CAChCkY,KAAM,CACJlc,cAAe,OACfJ,SAAU,GACV3D,WAAY+H,EAAMs2B,WAAWC,kBAC7Br+B,WAAY,CACV,gBACA,qBACA,aACA,SACA,mBACA,QACA,aACA,sBACA,mBACA,qBACAs+B,KAAK,KACPz1B,UAAW,CACTjJ,MAAO,UACPuG,QAAS,GAEXo4B,aAAc,CACZ3+B,MAAO,UACPG,WAAY+H,EAAMs2B,WAAWI,kBAE/BC,UAAW,CACT7+B,MAAO,YAGXiqB,SAAU,KA7BCnqB,CA8BT,SAAA7C,GAAK,OAAIV,EAAAC,EAAAC,cAACqiC,GAAAtiC,EAADpB,OAAAC,OAAA,CAAK0jC,eAAa,GAAK9hC,MAEhC+hC,eAEF,SAAAA,EAAY/hC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA4hC,IACI9hC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA4jC,GAAAzhC,KAAAH,KAAMH,KAiEVgiC,cAAgB,SAACC,GAEb,IAAIC,EAAY,IAAI9vB,KAChB+vB,EAAOD,EAAUE,cACjBC,EAAQH,EAAUI,WAAa,EAC/BC,EAAML,EAAUM,UAiBpB,OAfIP,IAEAM,GAAYN,GAGZI,EAAQ,KAERA,EAAQ,IAAMA,GAGdE,EAAM,KAENA,EAAM,IAAMA,GAGTJ,EAAO,IAAME,EAAQ,IAAME,GAxFtCtiC,EAkGA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MAnHRA,EAuHAy5B,wBAA0B,SAACC,GAEvB15B,EAAKO,SAAS,CACV6yB,mBAAoBsG,KA1H5B15B,EAoWAwiC,4BAA8B,SAAC9I,GAE3B15B,EAAKO,SAAS,CACVkiC,uBAAwB/I,KAvWhC15B,EA2WA0iC,4BAA8B,SAAChJ,GAE3B15B,EAAKO,SAAS,CACVoiC,uBAAwBjJ,KA3W5B15B,EAAKpC,MACL,CAEIb,MAAO,KACP6lC,iBAAiB,EACjBC,cAAc,EACdC,eAAe,EAGftP,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXwP,YAAa,EAGbC,WAAY,GAGZC,aAAc,KACdC,aAAc,KAGd9P,mBAAmB,EACnB+P,eAAe,EACfC,cAAe,GAEfC,cAAc,EAGdZ,uBAAuB,EACvBa,gBAAiB,GACjBC,iBAAkB,GAClBC,kBAAmB,GACnBC,cAAe,GACfC,YAAa,GACbC,sBAAuB,GACvBC,mBAAoB,EACpBC,mBAAoB,GACpBC,sBAAuB,GACvBC,eAAgB,GAChBC,gBAAiB,GACjBC,qBAAsB,GACtBC,gBAAiB,GACjBC,oCAAqC,GACrCC,qBAAsB,GACtBC,kBAAmB,GACnBC,kBAAmB,GACnBC,gBAAiB,GACjBC,oBAAqB,GAErBC,eAAe,EAGf9B,uBAAuB,EACvB+B,gBAAgB,EAChBC,SAAU3kC,EAAK+hC,cAAc,GAC7B6C,OAAQ5kC,EAAK+hC,cAAc,IA7DnC/hC,mFA6FIE,KAAK2kC,kBACL3kC,KAAK4kC,4DAiCT,IAAAz2B,EAAAnO,KAEI+Z,GAAO,mBAAmB5Y,KAAK,SAACG,GAE5B,IAAIujC,EAAYvjC,EAAO6Y,KAEvBhM,EAAK9N,SACL,CACIsiC,cAAa,EACbK,aAAc6B,KAGtB,SAAChoC,GAEGsR,EAAK9N,SACL,CACIsiC,cAAc,EACd9lC,MAAOA,EAAMsd,wDAMzB,IAAA+X,EAAAlyB,KACI4gC,GAAY,yCAAyCz/B,KAAK,SAACG,GAEvD4wB,EAAK7xB,SAAS,CACVuiC,eAAe,EACfE,WAAYxhC,EAAO6Y,KAAKoN,SAGhC,SAAC1qB,GAEGq1B,EAAK7xB,SAAS,CACVuiC,eAAe,EACfE,WAAY,iDAMxB,IAAAjJ,EAAA75B,KAEI,GAAyC,OAArCgQ,KAAW80B,sBAcX,OAZA9kC,KAAKK,SACL,CACIqiC,iBAAiB,EACjBK,aAAc/yB,KAAW80B,wBAG2B,UAApD90B,KAAW80B,sBAAsBC,UAAUlR,MAE3C7zB,KAAKglC,4BAGThlC,KAAKilC,mBAAmBj1B,KAAW80B,uBAUvC/qB,GAAO,4BAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,OAGWmC,KAAK,SAACG,GAElD0O,KAAW80B,sBAAwBxjC,EAAO6Y,KAG1C0f,EAAKx5B,SACL,CACIqiC,iBAAiB,EACjBK,aAAczhC,EAAO6Y,OAGU,UAA/B7Y,EAAO6Y,KAAK4qB,UAAUlR,MAEtBgG,EAAKmL,uBAGTnL,EAAKoL,mBAAmB3jC,EAAO6Y,OAEnC,SAACtd,GAEGg9B,EAAKx5B,SACL,CACIqiC,iBAAiB,EACjB7lC,MAAOA,EAAMsd,+CAMzB,IAAA2f,EAAA95B,KACIA,KAAKK,SAAS,CAACkkC,eAAe,IADlC,IAAAn2B,EAuBoCpO,KAAKtC,MAnB7B6kC,EAJZn0B,EAIYm0B,sBACAa,EALZh1B,EAKYg1B,gBACAC,EANZj1B,EAMYi1B,iBACAC,EAPZl1B,EAOYk1B,kBACAC,EARZn1B,EAQYm1B,cACAC,EATZp1B,EASYo1B,YACAC,EAVZr1B,EAUYq1B,sBACAC,EAXZt1B,EAWYs1B,mBACAC,EAZZv1B,EAYYu1B,mBACAE,EAbZz1B,EAaYy1B,eACAC,EAdZ11B,EAcY01B,gBACAC,EAfZ31B,EAeY21B,qBACAC,EAhBZ51B,EAgBY41B,gBACAC,EAjBZ71B,EAiBY61B,oCACAC,EAlBZ91B,EAkBY81B,qBACAC,EAnBZ/1B,EAmBY+1B,kBACAC,EApBZh2B,EAoBYg2B,kBACAC,EArBZj2B,EAqBYi2B,gBA6BRhqB,GAAY,oBAvBZ,CACI6qB,UAAW9B,EACX+B,WAAY9B,EACZ+B,YAAa9B,EACb+B,QAAS9B,EACT+B,MAAO9B,EACP+B,gBAAiB9B,EACjB+B,aAAc9B,EACd+B,aAAc9B,EACd+B,SAAU7B,EACV8B,UAAW7B,EACX8B,eAAgB7B,EAChB8B,UAAW7B,EACX8B,8BAA+B7B,EAC/B8B,eAAgB7B,EAChB8B,YAAa7B,EACb8B,YAAa7B,EACb8B,gBA5CR93B,EAsBYw1B,sBAuBJuC,UAAW9B,EACX+B,cA9CRh4B,EAuBYk2B,sBA2BsCnjC,KAAK,WAE/C24B,EAAKz5B,SACL,CACIkkC,eAAe,IAGnBzK,EAAKwI,4BAA4BC,GACjCzI,EAAKtU,iBAAiB,UAAW,kBACjCxV,KAAW80B,sBAAwB,KACnChL,EAAK6K,mBAET,SAAC9nC,GAEGi9B,EAAKz5B,SACL,CAEIkkC,eAAe,IAGnBzK,EAAKtU,iBAAiB,SAAU3oB,EAAMsd,mDAI3BksB,GAEfrmC,KAAKK,SACL,CACI+iC,gBAAiBiD,EAAUnB,UAC3B7B,iBAAkBgD,EAAUlB,WAC5B7B,kBAAmB+C,EAAUjB,YAC7B7B,cAAe8C,EAAUhB,QACzB7B,YAAa6C,EAAUf,MACvB7B,sBAAuB4C,EAAUd,gBACjC7B,mBAAoB2C,EAAUb,aAC9B7B,mBAAoB0C,EAAUZ,aAC9B5B,eAAgBwC,EAAUX,SAASY,aACnCxC,gBAAiBuC,EAAUV,UAC3B5B,qBAAsBsC,EAAUT,eAChC5B,gBAAiBqC,EAAUR,UAC3B5B,oCAAqCoC,EAAUP,8BAC/C5B,qBAAsBmC,EAAUN,eAChC5B,kBAAmBkC,EAAUL,YAC7B5B,kBAAmBiC,EAAUJ,YAC7B5B,gBAAiBgC,EAAUF,UAC3BvC,sBAAuByC,EAAUH,gBACjC5B,oBAAqB+B,EAAUD,sDAKvC,IAAAG,EAAAvmC,KACIA,KAAKK,SAAS,CAAC4iC,eAAe,IADlC,IAAA9Q,EAGiDnyB,KAAKtC,MAA1CwlC,EAHZ/Q,EAGY+Q,cAAehQ,EAH3Bf,EAG2Be,kBAGvB9Y,GAAQ,+BAAiC8oB,GAAe/hC,KAAK,WAEzDolC,EAAKlmC,SACL,CACI8iC,cAAc,KAGtB,SAACtmC,GAEG0pC,EAAKlmC,SACL,CAEI4iC,eAAe,IAGnBsD,EAAKhN,wBAAwBrG,GAC7BqT,EAAK/gB,iBAAiB,SAAU3oB,EAAMsd,mDAI3BqsB,GAEfxmC,KAAKK,SAAS,CACVwiC,YAAa2D,qCAmBrB,IAAAC,EAAAzmC,KAAA+5B,EA6BuB/5B,KAAKtC,MA5BhBglC,EADZ3I,EACY2I,gBAAiBC,EAD7B5I,EAC6B4I,aAAcC,EAD3C7I,EAC2C6I,cAC/B/lC,EAFZk9B,EAEYl9B,MAAOq2B,EAFnB6G,EAEmB7G,kBAAmBE,EAFtC2G,EAEsC3G,WAAYC,EAFlD0G,EAEkD1G,UAAWC,EAF7DyG,EAE6DzG,UAAWuP,EAFxE9I,EAEwE8I,YAC5DE,EAHZhJ,EAGYgJ,aAAcC,EAH1BjJ,EAG0BiJ,aACdF,EAJZ/I,EAIY+I,WACAG,EALZlJ,EAKYkJ,cAAeC,EAL3BnJ,EAK2BmJ,cAAeC,EAL1CpJ,EAK0CoJ,aAC9BZ,EANZxI,EAMYwI,sBAAuBgC,EANnCxK,EAMmCwK,cACvBnB,EAPZrJ,EAOYqJ,gBACAC,EARZtJ,EAQYsJ,iBACAC,EATZvJ,EASYuJ,kBACAC,EAVZxJ,EAUYwJ,cACAC,EAXZzJ,EAWYyJ,YACAC,EAZZ1J,EAYY0J,sBACAC,EAbZ3J,EAaY2J,mBACAC,EAdZ5J,EAcY4J,mBACAE,EAfZ9J,EAeY8J,eACAC,EAhBZ/J,EAgBY+J,gBACAC,EAjBZhK,EAiBYgK,qBACAC,EAlBZjK,EAkBYiK,gBACAC,EAnBZlK,EAmBYkK,oCACAC,EApBZnK,EAoBYmK,qBACAC,EArBZpK,EAqBYoK,kBACAC,EAtBZrK,EAsBYqK,kBACAC,EAvBZtK,EAuBYsK,gBACAT,EAxBZ7J,EAwBY6J,sBACAU,EAzBZvK,EAyBYuK,oBAMAp6B,GA/BZ6vB,EA0BY0I,sBA1BZ1I,EA2BYyK,eA3BZzK,EA4BY0K,SA5BZ1K,EA6BY2K,OAEY1kC,KAAKH,MAAjBqK,SAER,OAAKw4B,GAAoBC,EAIhB9lC,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAE/DsmC,EAEGhkC,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAG,YAAY4qB,MAAI,KAIpC6V,EAAa0D,aAAazb,SAAS8X,EAAaqC,cAEjDpC,EAAa0D,aAAavZ,KAAK4V,EAAaqC,aAI5CjmC,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMuiB,EAAKpmC,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IA+DTjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM60B,EAAuBl4B,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMkwB,EAAKnE,4BAA4BC,IAAwBlU,kBAAgB,oBAAoB9I,WAAW,GAC7LpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBmU,EAAKE,gBAC7CxnC,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,gBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAAA,+BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,wBACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAAC+iC,gBAAiB7b,KAEjDX,WAAY,CACR1d,UAAU,EACVs1B,UAAW,GACXhM,aAAc4Q,KAGtBjkC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACgjC,iBAAkB9b,KAElDX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,uBACPmsB,aAAc6Q,KAGtBlkC,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,qBACVhY,GAAG,yBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQ,CAAC,MAAO,MAChBD,cAAeiU,EAAwB,MAAQ,KAC/C7c,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACujC,sBAAkC,QAAVrc,QAIhEpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,eACVhY,GAAG,qBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQoT,EAAa0D,aACrB/W,cAAe2T,GAAwC,GACvDvc,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACijC,kBAAmB/b,OAGvDpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,WACVhY,GAAG,kBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQoT,EAAa6D,gBACrBhX,UAAU,eACVC,YAAY,cACZH,cAAekU,GAAkC,GACjD9c,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACwjC,eAAgBtc,SAOxB,UAAhCwb,EAAagC,UAAUlR,KAEvB10B,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAA,mCACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAEtBqlB,EAEIzjC,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,4BACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQkT,EACRjT,UAAU,KACVC,YAAY,cACZH,cAAe2U,EACfvd,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACikC,oBAAqB/c,OAI7DpoB,EAAAC,EAAAC,cAAA,gCAMhB,KAGJF,EAAAC,EAAAC,cAAA,8BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,oBACVhY,GAAG,UACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAakf,EAAKpmC,SAAS,CAACkjC,cAAehc,KAEhDX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,uBACPmsB,aAAc+Q,KAGtBpkC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,kBACVhY,GAAG,QACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACmjC,YAAajc,KAE7CX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,uBACPmsB,aAAcgR,MAI1BrkC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,6BACVhY,GAAG,mBACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAakf,EAAKpmC,SAAS,CAACojC,sBAAuBlc,KAExDX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,uBACPmsB,aAAciR,KAGtBtkC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,0BACVhY,GAAG,gBACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACqjC,mBAAoBnc,KAEpDX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,uBACPmsB,aAAckR,MAI1BvkC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,wBACVhY,GAAG,4BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAegU,EAAqB,MAAQ,KAC5C5c,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACsjC,mBAA+B,QAAVpc,SAMjEpoB,EAAAC,EAAAC,cAAA,uCACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,kBACVhY,GAAG,mBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAemU,EAAkB,MAAQ,KACzC/c,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACyjC,gBAA4B,QAAVvc,OAGtDpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,mBACVhY,GAAG,wBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAeoU,EAAuB,MAAQ,KAC9Chd,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAAC0jC,qBAAiC,QAAVxc,QAI/DpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,qCACVhY,GAAG,6BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAa8D,WACrBnX,cAAeqU,GAAoC,GACnDjd,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAAC2jC,gBAAiBzc,OAGrDpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,sCACVhY,GAAG,8BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAa8D,WACrBnX,cAAesU,GAA4E,GAC3Fld,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAAC4jC,oCAAqC1c,SAMjFpoB,EAAAC,EAAAC,cAAA,4BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,0BACVhY,GAAG,wBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAeuU,EAAuB,MAAQ,KAC9Cnd,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAAC6jC,qBAAiC,QAAV3c,OAG3DpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,gBACVhY,GAAG,qBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAa+D,kBACrBpX,cAAewU,GAAwC,GACvDpd,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAAC8jC,kBAAmB5c,QAI3DpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,aACVhY,GAAG,mBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAagE,WACrBrX,cAAe0U,GAAoC,GACnDtd,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAACgkC,gBAAiB9c,OAGrDpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,eACVhY,GAAG,qBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAaiE,aACrBtX,cAAeyU,GAAwC,GACvDrd,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAAC+jC,kBAAmB7c,UAMnEpoB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMs3B,EAAKnE,4BAA4BC,IAAwB3/B,MAAM,SAAtF,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUq7B,EAAexmC,KAAK,SAAS6E,MAAM,aAChD2hC,EAAgB,oBAAsB,mBAOvDplC,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAMwlB,EAAmB3c,QAAS,kBAAMkwB,EAAKlN,wBAAwBrG,IAAoB7E,kBAAgB,oBAAoB9I,WAAW,GACjLpmB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,+CACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,wCAGAvP,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,4CACVhY,GAAG,mBACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAYkf,EAAKpmC,SAAS,CAAE6iC,cAAe3b,QAIxDpoB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMs3B,EAAKlN,wBAAwBrG,IAAoBtwB,MAAM,QAAQ8vB,WAAS,GAA/F,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU+5B,GAAiBC,IAAkBH,EAAamC,UAAW/1B,QAAS,kBAAMs3B,EAAKS,eAAetkC,MAAM,UACjHqgC,EAAgB,oBAAsB,kBAMnD9jC,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,UAA+CogC,EAAamC,YAEhE/lC,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,mBAE5FhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SASdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+L,MAAO,CAACxK,YAAY,OAAQgL,QAAS,kBAAMs3B,EAAKnE,4BAA4BC,KAClGpjC,EAAAC,EAAAC,cAAC4uB,GAAA7uB,EAAD,MADJ,eAGAD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,SAASuM,QAAS,kBAAMs3B,EAAKlN,wBAAwBrG,KAC/D/zB,EAAAC,EAAAC,cAAC6uB,GAAA9uB,EAAD,MADJ,kBAIF,KAGND,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQi9B,OACpBhoC,EAAAC,EAAAC,cAAC2hC,GAAD,CAASzZ,MAAOsb,EAAavb,SAAU,SAACxZ,EAAOyZ,GAAR,OAAkBkf,EAAKW,mBAAmB7f,KAC7EpoB,EAAAC,EAAAC,cAAC8hC,GAAD,CAAQ7F,MAAM,YACdn8B,EAAAC,EAAAC,cAAC8hC,GAAD,CAAQ7F,MAAM,YACdn8B,EAAAC,EAAAC,cAAC8hC,GAAD,CAAQ7F,MAAM,eACdn8B,EAAAC,EAAAC,cAAC8hC,GAAD,CAAQ7F,MAAM,WAEsB,UAAhCyH,EAAagC,UAAUlR,KAAmB10B,EAAAC,EAAAC,cAAC8hC,GAAD,CAAQ7F,MAAM,WAAc,MAG9En8B,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYiL,UAAWH,EAAQk3B,cAIf,IAAhByB,GACA1jC,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAamC,UAAYnC,EAAamC,UAAY,OAGjE/lC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAaoC,WAAapC,EAAaoC,WAAa,OAGnEhmC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,qBACVhY,GAAG,yBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAamD,gBAAkB,MAAQ,SAI1D/mC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,eACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAaqC,YAAcrC,EAAaqC,YAAc,OAGrEjmC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,WACVhY,GAAG,WACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAa2C,SAAS2B,YAActE,EAAa2C,SAAS2B,YAAc,SAO/E,IAAhBxE,GACA1jC,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,oBACVhY,GAAG,UACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAasC,QAAUtC,EAAasC,QAAU,OAG7DlmC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,kBACVhY,GAAG,QACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAauC,MAAQvC,EAAauC,MAAQ,OAGzDnmC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,wBACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAa0C,aAAe,MAAQ,SAIvDtmC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,6BACVhY,GAAG,mBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAawC,gBAAkBxC,EAAawC,gBAAkB,OAG7EpmC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,0BACVhY,GAAG,gBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAayC,aAAezC,EAAayC,aAAe,SAO/D,IAAhB3C,GACA1jC,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,kBACVhY,GAAG,sBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAa4C,UAAY,MAAQ,QAGhDxmC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,mBACVhY,GAAG,uBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAa6C,eAAiB,MAAQ,SAIzDzmC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,qCACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAa8C,UAAY9C,EAAa8C,UAAY,OAGjE1mC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,sCACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAa+C,8BAAgC/C,EAAa+C,8BAAgC,SAOjG,IAAhBjD,GACA1jC,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,0BACVhY,GAAG,uBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAagD,eAAiB,MAAQ,QAGrD5mC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,gBACVhY,GAAG,gBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAaiD,YAAcjD,EAAaiD,YAAc,QAIzE7mC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAS,EACTqe,MAAOwb,EAAaoD,UAAYpD,EAAaoD,UAAY,OAGjEhnC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAakD,YAAclD,EAAakD,YAAc,SAO7D,IAAhBpD,GACA1jC,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,UACVhY,GAAG,qBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOwb,EAAaqD,cAAgBrD,EAAaqD,cAAgB,aApvB1FjnC,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,oCAzZtBnU,IAAMC,WA0pClBC,OAxuCA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAwsCVzB,CAAmBk/B,6CCpsC5B0F,eAEF,SAAAA,EAAYznC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAsnC,IACIxnC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAspC,GAAAnnC,KAAAH,KAAMH,KAsCV0nC,iCAAmC,SAAC/N,GAE5BA,EAEA15B,EAAKO,SACD,CACImnC,4BAA6BhO,EAC7BiO,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,IAGpBjoC,EAAKO,SAAS,CAAEmnC,4BAA6BhO,KAvDrD15B,EA0DAy5B,wBAA0B,SAACC,GAEvB15B,EAAKO,SAAS,CACV6yB,mBAAoBsG,KA7D5B15B,EA4NA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA1OJA,EAAKpC,MACL,CAEIb,MAAO,KACPwe,UAAU,EAGVmsB,4BAA4B,EAC5BQ,qBAAqB,EACrB9U,mBAAmB,EACnB+U,uBAAuB,EAGvB3U,WAAW,EACXF,WAAY,UACZC,UAAW,GAGX6U,MAAO,KAGPT,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZI,SAAU,QACVC,UAAW,QAGXC,sBAAuB,MAnC/BvoC,mFAoEIE,KAAKsoC,wEAIT,IAAAn6B,EAAAnO,KAMI+Z,GAAO,0BAHG,IAAI9X,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,OAESmC,KAAK,SAACG,GAIhD,IAFA,IAAIinC,EAAY,GAEP9a,EAAI,EAAGA,EAAInsB,EAAO6Y,KAAKvc,OAAQ6vB,IACxC,CACI,IAAI+a,EAAclnC,EAAO6Y,KAAKsT,GAE1Bgb,EACJ,CACIC,UAAWF,EAAYE,UACvBC,UAAWH,EAAYI,UAAY,MAAQJ,EAAYK,SAG3DN,EAAUpb,KAAKsb,GAInBt6B,EAAK9N,SACL,CACIgb,UAAS,EACT6sB,MAAOK,KAGf,SAAC1rC,GAEGsR,EAAK9N,SACL,CACIgb,UAAS,EACTxe,MAAOA,EAAMsd,oDAMzB,IAAA+X,EAAAlyB,KACIA,KAAKK,SAAS,CAAC2nC,qBAAqB,IADxC,IAAA55B,EAIoJpO,KAAKtC,MAA7IyqC,EAJZ/5B,EAIY+5B,SAAUC,EAJtBh6B,EAIsBg6B,UAAWX,EAJjCr5B,EAIiCq5B,WAAYC,EAJ7Ct5B,EAI6Cs5B,WAAYC,EAJzDv5B,EAIyDu5B,WAAYC,EAJrEx5B,EAIqEw5B,WAAYC,EAJjFz5B,EAIiFy5B,WAAYC,EAJ7F15B,EAI6F05B,WAAYC,EAJzG35B,EAIyG25B,WAAYP,EAJrHp5B,EAIqHo5B,2BAK7GsB,EADM,IAAI7mC,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,MAGjC+pC,EAAe,GAEftB,GAAYsB,EAAa5b,KAAK,OAC9Bua,GAAYqB,EAAa5b,KAAK,OAC9Bwa,GAAYoB,EAAa5b,KAAK,OAC9Bya,GAAYmB,EAAa5b,KAAK,OAC9B0a,GAAYkB,EAAa5b,KAAK,OAC9B2a,GAAYiB,EAAa5b,KAAK,OAC9B4a,GAAYgB,EAAa5b,KAAK,OAYlC9S,GAAY,uBARZ,CACIyuB,UAAWA,EACXX,SAAWA,EACXC,UAAYA,EACZY,KAAOD,IAIsC5nC,KAAK,WAElD+wB,EAAK7xB,SACL,CACI2nC,qBAAqB,IAGzB9V,EAAKqV,iCAAiCC,GACtCtV,EAAK1M,iBAAiB,UAAW,qCAEjC0M,EAAKoW,yBAET,SAACzrC,GAEGq1B,EAAK7xB,SACL,CAEI2nC,qBAAqB,IAGzB9V,EAAKqV,iCAAiCC,GACtCtV,EAAK1M,iBAAiB,SAAU3oB,EAAMsd,sDAK9C,IAAA0f,EAAA75B,KACIA,KAAKK,SAAS,CAAC4nC,uBAAuB,IAD1C,IAAA9V,EAGyDnyB,KAAKtC,MAAlD2qC,EAHZlW,EAGYkW,sBAAuBnV,EAHnCf,EAGmCe,kBAK3B4V,EADM,IAAI7mC,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,MAGjCiqC,EAAoBZ,EAAsBM,UAAUxd,MAAM,OAY9D9Q,GAAY,0BARZ,CACI6qB,UAAW4D,EACXF,UAAYK,EAAkB,GAC9BJ,QAAUI,EAAkB,GAC5BP,UAAYL,EAAsBK,YAIcvnC,KAAK,WAErD04B,EAAKx5B,SACL,CACI4nC,uBAAuB,IAG3BpO,EAAKN,wBAAwBrG,GAC7B2G,EAAKrU,iBAAiB,UAAW,2BAEjCqU,EAAKyO,yBAET,SAACzrC,GAEGg9B,EAAKx5B,SACL,CAEI4nC,uBAAuB,IAG3BpO,EAAKN,wBAAwBrG,GAC7B2G,EAAKrU,iBAAiB,SAAU3oB,EAAMsd,yCA2B9C,IAAA2f,EAAA95B,KAAA+5B,EAE6Q/5B,KAAKtC,MAAtQb,EAFZk9B,EAEYl9B,MAAOwe,EAFnB0e,EAEmB1e,SAAUmsB,EAF7BzN,EAE6ByN,2BAA4BQ,EAFzDjO,EAEyDiO,oBAAqB9U,EAF9E6G,EAE8E7G,kBAAmB+U,EAFjGlO,EAEiGkO,sBAAuB3U,EAFxHyG,EAEwHzG,UAAWF,EAFnI2G,EAEmI3G,WAAYC,EAF/I0G,EAE+I1G,UAAW6U,EAF1JnO,EAE0JmO,MAAOT,EAFjK1N,EAEiK0N,WAAYC,EAF7K3N,EAE6K2N,WAAYC,EAFzL5N,EAEyL4N,WAAYC,EAFrM7N,EAEqM6N,WAAYC,EAFjN9N,EAEiN8N,WAAYC,EAF7N/N,EAE6N+N,WAAYC,EAFzOhO,EAEyOgO,WAAYI,EAFrPpO,EAEqPoO,SAAUC,EAF/PrO,EAE+PqO,UACnPl+B,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM4V,EAAKz5B,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM85B,EAA4Bn9B,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMujB,EAAKyN,iCAAiCC,IAA6BnZ,kBAAgB,oBAAoB9I,WAAW,GAC5MpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBwH,EAAKoP,qBAC7C/pC,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,0CACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,+CAGAD,EAAAC,EAAAC,cAAC6nB,GAAA9nB,EAAD,CAAaiL,UAAWH,EAAQoc,aAC5BnnB,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAC8pC,GAAA/pC,EAAD,KACID,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASoM,EAAYngB,SAAU,SAACxZ,GAAD,OAAWgsB,EAAKz5B,SAAS,CAAEonC,WAAY35B,EAAMG,OAAOotB,aACtHC,MAAM,WAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASqM,EAAYpgB,SAAU,SAACxZ,GAAD,OAAWgsB,EAAKz5B,SAAS,CAAEqnC,WAAY55B,EAAMG,OAAOotB,aACtHC,MAAM,YAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASsM,EAAYrgB,SAAU,SAACxZ,GAAD,OAAWgsB,EAAKz5B,SAAS,CAAEsnC,WAAY75B,EAAMG,OAAOotB,aACtHC,MAAM,cAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASuM,EAAYtgB,SAAU,SAACxZ,GAAD,OAAWgsB,EAAKz5B,SAAS,CAAEunC,WAAY95B,EAAMG,OAAOotB,aACtHC,MAAM,aAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASwM,EAAYvgB,SAAU,SAACxZ,GAAD,OAAWgsB,EAAKz5B,SAAS,CAAEwnC,WAAY/5B,EAAMG,OAAOotB,aACtHC,MAAM,aAIlBn8B,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAC8pC,GAAA/pC,EAAD,KACID,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASyM,EAAYxgB,SAAU,SAACxZ,GAAD,OAAWgsB,EAAKz5B,SAAS,CAAEynC,WAAYh6B,EAAMG,OAAOotB,aACtHC,MAAM,aAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAAS0M,EAAYzgB,SAAU,SAACxZ,GAAD,OAAWgsB,EAAKz5B,SAAS,CAAE0nC,WAAYj6B,EAAMG,OAAOotB,aACtHC,MAAM,eAO1Bn8B,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,YACVhY,GAAG,YACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAD,OAAWuS,EAAKz5B,SAAS,CAAE8nC,SAAU5gB,KAEzCX,WAAY,CACR8L,WAAW,EACX30B,KAAM,OACNy0B,aAAc2V,MAK1BhpC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAD,OAAWuS,EAAKz5B,SAAS,CAAE+nC,UAAW7gB,KAE1CX,WAAY,CACR7oB,KAAM,OACNy0B,aAAc4V,QAMlCjpC,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM2qB,EAAKyN,iCAAiCC,IAA6B5kC,MAAM,QAAQ8vB,WAAS,GAAjH,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,UAAYu+B,IAAeC,IAAeC,IAAeC,IAAeC,IAAeC,IAAeC,GAAeC,EAAqBjqC,KAAK,SAAS6E,MAAM,aACjKolC,EAAsB,mBAAqB,iBAO5D7oC,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAMwlB,EAAmB3c,QAAS,kBAAMujB,EAAKP,wBAAwBrG,IAAoB7E,kBAAgB,oBAAoB9I,WAAW,GACjLpmB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,8DACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,MAEAD,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM2qB,EAAKP,wBAAwBrG,IAAoBtwB,MAAM,QAAQ8vB,WAAS,GAA/F,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU++B,EAAuB94B,QAAS,kBAAM2qB,EAAKsP,uBAAuBxmC,MAAM,UACrFqlC,EAAwB,6BAA+B,2BAMpE9oC,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,kBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,2BAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAACgqC,GAAAjqC,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,mBAE5FhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,EAAC4F,QAAS,kBAAM2qB,EAAKyN,iCAAiCC,KAC1FroC,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,QAGN,KAGND,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,MAAO,cACnBwH,iBAAkB,CAAC,YAAa,aAChCvH,UAAW4nB,EACXrlC,UAAW,EACXmmB,YAAY,EACZF,eAAgB,YAChBhB,sBAAuB,CAAC,aACxBG,uBAAwB,CAAC,aACzBW,sBAEI5T,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,mBAE5F,SAAC+kB,GAAiBJ,EAAKz5B,SAAS,CAACgoC,sBAAuBnO,IAAeJ,EAAKP,wBAAwBrG,IAClG,UAjLf/zB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,qCA5PhBnU,IAAMC,WAubxBC,OA5dA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA4bVzB,CAAmB4kC,IC7b5BgC,eAEF,SAAAA,EAAYzpC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAspC,IACIxpC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAsrC,GAAAnpC,KAAAH,KAAMH,KA2LV0pC,4BAA8B,SAAC/P,GAE3B15B,EAAKO,SAAS,CACVmpC,uBAAwBhQ,KA/LhC15B,EAmMAy5B,wBAA0B,SAACC,GAEvB15B,EAAKO,SAAS,CACV6yB,mBAAoBsG,KAtM5B15B,EA2MA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MAzNJA,EAAKpC,MACL,CAEIb,MAAO,KACP4sC,uBAAuB,EACvBC,qBAAqB,EAGrBF,uBAAuB,EACvBG,eAAe,EACfzW,mBAAmB,EACnB0W,iBAAiB,EAGjBtW,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXwW,cAAe,GACfC,YAAa,GAGbC,kBAAmB,GAGnBC,gBAAiB,MA7BzBlqC,mFAmCIE,KAAKiqC,mBACLjqC,KAAKkqC,4DAIT,IAAA/7B,EAAAnO,KAMI+Z,GAAO,sBAHG,IAAI9X,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,OAEKmC,KAAK,SAACG,GAG5C6M,EAAK9N,SACL,CACIopC,uBAAsB,EACtBI,cAAevoC,EAAO6Y,QAG9B,SAACtd,GAEGsR,EAAK9N,SACL,CACIopC,uBAAuB,EACvB5sC,MAAOA,EAAMsd,kDAMzB,IAAA+X,EAAAlyB,KAESgV,KAAQC,8BAA8B,CAAC,4BAA6BjF,KAAWC,aAAakF,mBAYjG4E,GAAO,gBAAgB5Y,KAAK,SAACG,GAGzB4wB,EAAK7xB,SACL,CACIqpC,qBAAoB,EACpBI,YAAaxoC,EAAO6Y,QAG5B,SAACtd,GAEGq1B,EAAK7xB,SACL,CACIqpC,qBAAoB,EACpB7sC,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACL,CACIqpC,qBAAqB,EACrBI,YAAa,0CA2BzB,IAAAjQ,EAAA75B,KACIA,KAAKK,SAAS,CAACspC,eAAe,IADlC,IAAAv7B,EAIyDpO,KAAKtC,MAAlDqsC,EAJZ37B,EAIY27B,kBAAmBP,EAJ/Bp7B,EAI+Bo7B,sBAe3BnvB,GAAY,0BANZ,CACI8vB,UAAYJ,EACZjB,UAPM,IAAI7mC,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,QAUemC,KAAK,WAErD04B,EAAKx5B,SACL,CACIspC,eAAe,IAGnB9P,EAAK0P,4BAA4BC,GACjC3P,EAAKrU,iBAAiB,UAAW,8BAEjCqU,EAAKoQ,oBAET,SAACptC,GAEGg9B,EAAKx5B,SACL,CAEIspC,eAAe,IAGnB9P,EAAK0P,4BAA4BC,GACjC3P,EAAKrU,iBAAiB,SAAU3oB,EAAMsd,gDAK9C,IAAA2f,EAAA95B,KACIA,KAAKK,SAAS,CAACupC,iBAAiB,IADpC,IAAAzX,EAGmDnyB,KAAKtC,MAA5CssC,EAHZ7X,EAGY6X,gBAAiB9W,EAH7Bf,EAG6Be,kBAKrB4V,EADM,IAAI7mC,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,MAUrCqb,GAAY,6BANZ,CACI8vB,UAAYH,EAAgB5M,GAC5B0L,UAAYA,IAIuC3nC,KAAK,WAExD24B,EAAKz5B,SACL,CACIupC,iBAAiB,IAGrB9P,EAAKP,wBAAwBrG,GAC7B4G,EAAKtU,iBAAiB,UAAW,+BAEjCsU,EAAKmQ,oBAET,SAACptC,GAEGi9B,EAAKz5B,SACL,CAEIupC,iBAAiB,IAGrB9P,EAAKP,wBAAwBrG,GAC7B4G,EAAKtU,iBAAiB,SAAU3oB,EAAMsd,yCAyC9C,IAAAosB,EAAAvmC,KAAA+5B,EAC6N/5B,KAAKtC,MAAtN+rC,EADZ1P,EACY0P,sBAAuBC,EADnC3P,EACmC2P,oBAAqB7sC,EADxDk9B,EACwDl9B,MAAO2sC,EAD/DzP,EAC+DyP,sBAAuBG,EADtF5P,EACsF4P,cAAezW,EADrG6G,EACqG7G,kBAAmB0W,EADxH7P,EACwH6P,gBAAiBtW,EADzIyG,EACyIzG,UAAWF,EADpJ2G,EACoJ3G,WAAYC,EADhK0G,EACgK1G,UAAWwW,EAD3K9P,EAC2K8P,cAAeC,EAD1L/P,EAC0L+P,YAAaC,EADvMhQ,EACuMgQ,kBAC3L7/B,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKu/B,GAA0BC,EAItB7sC,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMqiB,EAAKlmC,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM87B,EAAuBn/B,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMgwB,EAAKgD,4BAA4BC,IAAwBnb,kBAAgB,oBAAoB9I,WAAW,GAC7LpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBiU,EAAK6D,eAC7CjrC,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,2BACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,0EAIAD,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,iBACVhY,GAAG,iBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7L,WAAY,CACR8L,WAAW,GAEf9C,OAAQka,EACRja,UAAU,KACVC,YAAY,cACZH,cAAeoa,EACfhjB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAAC0pC,kBAAmBxiB,QAK3DpoB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMo3B,EAAKgD,4BAA4BC,IAAwB5mC,MAAM,SAAtF,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUygC,EAAe5rC,KAAK,SAAS6E,MAAM,aAChD+mC,EAAgB,uBAAyB,qBAO1DxqC,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAMwlB,EAAmB3c,QAAS,kBAAMgwB,EAAKhN,wBAAwBrG,IAAoB7E,kBAAgB,oBAAoB9I,WAAW,GACjLpmB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,gEACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,uCAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMo3B,EAAKhN,wBAAwBrG,IAAoBtwB,MAAM,QAAQ8vB,WAAS,GAA/F,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU0gC,EAAiBz6B,QAAS,kBAAMo3B,EAAK8D,iBAAiBznC,MAAM,UACzEgnC,EAAkB,sBAAwB,oBAKvDzqC,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,YACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,6BAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAACsd,GAAAvd,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,mBAE5FhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,EAAC4F,QAAS,kBAAMo3B,EAAKgD,4BAA4BC,KACrFrqC,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,QAGN,KAGND,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,MAAO,eACnBwH,iBAAkB,CAAC,OAAQ,eAC3BvH,UAAWupB,EACXjhB,sBAEI5T,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,mBAE5F,SAAC+kB,GAAiBqM,EAAKlmC,SAAS,CAAC2pC,gBAAiB9P,IAAeqM,EAAKhN,wBAAwBrG,IAC5F,KAENlK,YAAY,EACZF,eAAgB,OAChBd,iBAAkB,CAAC,aAtH5B7oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,+BA1OrBnU,IAAMC,WAyWnBC,OA9YA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA8WVzB,CAAmB4mC,ICxW5BgB,eAEF,SAAAA,EAAYzqC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAsqC,IACIxqC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAssC,GAAAnqC,KAAAH,KAAMH,KAiSV0qC,yBAA2B,SAAC/Q,GAExB15B,EAAKO,SAAS,CACVmqC,oBAAqBhR,KArS7B15B,EAySA2qC,4BAA8B,SAACjR,GAE3B15B,EAAKO,SAAS,CACVqqC,uBAAwBlR,KA5ShC15B,EAgTAy5B,wBAA0B,SAACC,GAEvB15B,EAAKO,SAAS,CACV6yB,mBAAoBsG,KAnT5B15B,EAwTA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MAtUJA,EAAKpC,MACL,CAEIb,MAAO,KACP6lC,iBAAiB,EACjBiI,qBAAqB,EACrBC,mBAAmB,EAGnBJ,oBAAoB,EACpBK,aAAa,EACbH,uBAAuB,EACvBI,eAAe,EACf5X,mBAAmB,EACnB6X,eAAe,EAGfzX,WAAW,EACXF,WAAY,UACZC,UAAW,GAGX0P,aAAc,KACdiI,YAAa,GACbC,UAAW,GAGXC,gBAAiB,GACjBC,aAAc,EAGdC,cAAe,MAlCvBtrC,mFAwCIE,KAAK2kC,kBACL3kC,KAAKqrC,iBACLrrC,KAAKsrC,wDAIT,IAAAn9B,EAAAnO,KAMI+Z,GAAO,+BAHG,IAAI9X,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,OAEcmC,KAAK,SAACG,GAGrD6M,EAAK9N,SACL,CACIsqC,qBAAqB,EACrBK,YAAa1pC,EAAO6Y,QAG5B,SAACtd,GAEGsR,EAAK9N,SACL,CACIsqC,qBAAqB,EACrB9tC,MAAOA,EAAMsd,mDAMzB,IAAA+X,EAAAlyB,KAE6C,OAArCgQ,KAAW80B,sBAiBf/qB,GAAO,4BAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,OAGWmC,KAAK,SAACG,GAElD0O,KAAW80B,sBAAwBxjC,EAAO6Y,KAG1C+X,EAAK7xB,SACL,CACIqiC,iBAAgB,EAChBK,aAAczhC,EAAO6Y,QAG7B,SAACtd,GAEGq1B,EAAK7xB,SACL,CACIqiC,iBAAiB,EACjB7lC,MAAOA,EAAMsd,SA/BjBna,KAAKK,SACL,CACIqiC,iBAAiB,EACjBK,aAAc/yB,KAAW80B,+DAkCrC,IAAAjL,EAAA75B,KAESgV,KAAQC,8BAA8B,CAAC,4BAA6BjF,KAAWC,aAAakF,mBAYjG4E,GAAO,cAAc5Y,KAAK,SAACG,GAGvBu4B,EAAKx5B,SACL,CACIuqC,mBAAkB,EAClBK,UAAW3pC,EAAO6Y,QAG1B,SAACtd,GAEGg9B,EAAKx5B,SACL,CACIuqC,mBAAkB,EAClB/tC,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACL,CACIuqC,mBAAmB,EACnBK,UAAW,wCA2BvB,IAAAnR,EAAA95B,KACIA,KAAKK,SAAS,CAACwqC,aAAa,IADhC,IAAAz8B,EAIkEpO,KAAKtC,MAA3DwtC,EAJZ98B,EAIY88B,gBAAiBV,EAJ7Bp8B,EAI6Bo8B,mBAAoBW,EAJjD/8B,EAIiD+8B,aAgB7C9wB,GAAY,wBAPZ,CACIkxB,QAAUL,EACVpC,UAPM,IAAI7mC,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,MAOjCwsC,QAAUL,IAIoChqC,KAAK,WAEnD24B,EAAKz5B,SACL,CACIwqC,aAAa,IAGjB/Q,EAAKyQ,yBAAyBC,GAC9B1Q,EAAKtU,iBAAiB,UAAW,4BAEjCsU,EAAKuR,kBAET,SAACxuC,GAEGi9B,EAAKz5B,SACL,CAEIwqC,aAAa,IAGjB/Q,EAAKyQ,yBAAyBC,GAC9B1Q,EAAKtU,iBAAiB,SAAU3oB,EAAMsd,8CAK9C,IAAAosB,EAAAvmC,KACIA,KAAKK,SAAS,CAACyqC,eAAe,IADlC,IAAA3Y,EAIqEnyB,KAAKtC,MAA9DwtC,EAJZ/Y,EAIY+Y,gBAAiBR,EAJ7BvY,EAI6BuY,sBAAuBS,EAJpDhZ,EAIoDgZ,aAgBhD9wB,GAAY,2BAPZ,CACIoxB,QAAUP,EACVhG,UAPM,IAAIjjC,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,MAOjC0sC,QAAUP,IAIuChqC,KAAK,WAEtDolC,EAAKlmC,SACL,CACIyqC,eAAe,IAGnBvE,EAAKkE,4BAA4BC,GACjCnE,EAAK/gB,iBAAiB,UAAW,kBAEjC+gB,EAAK8E,kBAET,SAACxuC,GAEG0pC,EAAKlmC,SACL,CAEIyqC,eAAe,IAGnBvE,EAAKkE,4BAA4BC,GACjCnE,EAAK/gB,iBAAiB,SAAU3oB,EAAMsd,8CAK9C,IAAAssB,EAAAzmC,KACIA,KAAKK,SAAS,CAAC0qC,eAAe,IADlC,IAAAhR,EAGiD/5B,KAAKtC,MAA1C0tC,EAHZrR,EAGYqR,cAAelY,EAH3B6G,EAG2B7G,kBAKnB4V,EADM,IAAI7mC,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,MAUrCqb,GAAY,2BANZ,CACIsxB,QAAUP,EAAcK,QACxB3C,UAAYA,IAIqC3nC,KAAK,WAEtDslC,EAAKpmC,SACL,CACI0qC,eAAe,IAGnBtE,EAAKlN,wBAAwBrG,GAC7BuT,EAAKjhB,iBAAiB,UAAW,6BAEjCihB,EAAK4E,kBAET,SAACxuC,GAEG4pC,EAAKpmC,SACL,CAEI0qC,eAAe,IAGnBtE,EAAKlN,wBAAwBrG,GAC7BuT,EAAKjhB,iBAAiB,SAAU3oB,EAAMsd,0DAIpByxB,GAEtB5rC,KAAKK,SAAS,CACV6qC,gBAAiBU,EAAcH,QAC/BN,aAAcS,EAAcF,2CAgDpC,IAAAG,EAAA7rC,KAAAg+B,EAEkOh+B,KAAKtC,MAD3NglC,EADZ1E,EACY0E,gBAAiBiI,EAD7B3M,EAC6B2M,oBAAqBC,EADlD5M,EACkD4M,kBAC1C/tC,EAFRmhC,EAEQnhC,MAAO2tC,EAFfxM,EAEewM,mBAAoBK,EAFnC7M,EAEmC6M,YAAaH,EAFhD1M,EAEgD0M,sBAAuBI,EAFvE9M,EAEuE8M,cAAe5X,EAFtF8K,EAEsF9K,kBAAmB6X,EAFzG/M,EAEyG+M,cAAezX,EAFxH0K,EAEwH1K,UAAWF,EAFnI4K,EAEmI5K,WAAYC,EAF/I2K,EAE+I3K,UAAW0P,EAF1J/E,EAE0J+E,aAAciI,EAFxKhN,EAEwKgN,YAAaC,EAFrLjN,EAEqLiN,UAAWC,EAFhMlN,EAEgMkN,gBAAiBC,EAFjNnN,EAEiNmN,aACrMjhC,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKw4B,GAAoBiI,GAAwBC,EAIxC/tC,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM2nB,EAAKxrC,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM88B,EAAoBngC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMs1B,EAAKtB,yBAAyBC,IAAqBnc,kBAAgB,oBAAoB9I,WAAW,GACpLpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBuZ,EAAKC,aAC7C3sC,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,yBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,wEAIAD,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,eACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7L,WAAY,CACR8L,WAAW,GAEf9C,OAAQqb,EACRpb,UAAU,UACVC,YAAY,QACZH,cAAeub,EACfnkB,cAEI,SAACQ,GAAYskB,EAAKxrC,SAAS,CAAC6qC,gBAAiB3jB,OAIrDpoB,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,qBACVhY,GAAG,gBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYskB,EAAKxrC,SAAS,CAAC8qC,aAAc5jB,KAE9CX,WAAY,CACRggB,QAAS,sBACTpI,UAAW,EACXn4B,MAAO,yCACPmsB,aAAc,MAK1BrzB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM08B,EAAKtB,yBAAyBC,IAAqB5nC,MAAM,SAAhF,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU2hC,EAAa9sC,KAAK,SAAS6E,MAAM,aAC9CioC,EAAc,qBAAuB,mBAOtD1rC,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAMg9B,EAAuBrgC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMs1B,EAAKpB,4BAA4BC,IAAwBrc,kBAAgB,oBAAoB9I,WAAW,GAC7LpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBuZ,EAAKE,gBAC7C5sC,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,sBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,qBACVhY,GAAG,uBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYskB,EAAKxrC,SAAS,CAAC8qC,aAAc5jB,KAE9CX,WAAY,CACRggB,QAAS,sBACTpI,UAAW,EACXn4B,MAAO,yCACPmsB,aAAc2Y,MAK1BhsC,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM08B,EAAKpB,4BAA4BC,IAAwB9nC,MAAM,SAAtF,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU4hC,EAAe/sC,KAAK,SAAS6E,MAAM,aAChDkoC,EAAgB,oBAAsB,mBAOvD3rC,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAMwlB,EAAmB3c,QAAS,kBAAMs1B,EAAKtS,wBAAwBrG,IAAoB7E,kBAAgB,oBAAoB9I,WAAW,GACjLpmB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,8DACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,uCAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM08B,EAAKtS,wBAAwBrG,IAAoBtwB,MAAM,QAAQ8vB,WAAS,GAA/F,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU6hC,EAAe57B,QAAS,kBAAM08B,EAAKG,eAAeppC,MAAM,UACrEmoC,EAAgB,oBAAsB,kBAKnD5rC,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,gBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,2BAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAACkd,GAAAnd,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,oBAAsD,UAAhC4tB,EAAagC,UAAUlR,KAEzI10B,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,EAAC4F,QAAS,WAAQ08B,EAAKxrC,SAAS,CAAC8qC,aAAc,IAAKU,EAAKtB,yBAAyBC,KACtHrrC,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,QAGN,KAI8B,UAAhC2jC,EAAagC,UAAUlR,KAEvB10B,EAAAC,EAAAC,cAAA,SAAGF,EAAAC,EAAAC,cAAA,2FAEH,KAGJF,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,QAAS,iBAAkB,sBAAuB,sBAAuB,YACrFwH,iBAAkB,CAAC,QAAS,4BAA6B,SAAU,oBAAqB,WACxFvH,UAAW0qB,EACXpiB,sBAEI5T,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,oBAAsD,UAAhC4tB,EAAagC,UAAUlR,KAEzI,SAACqG,GAAiB2R,EAAKxrC,SAAS,CAAC+qC,cAAelR,IAAe2R,EAAKtS,wBAAwBrG,IAC1F,KAENrK,oBAEI7T,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,oBAAsD,UAAhC4tB,EAAagC,UAAUlR,KAEzI,SAACqG,GAAkB2R,EAAKI,0BAA0B/R,GAAc2R,EAAKpB,4BAA4BC,IAC/F,KAEN1hB,YAAY,EACZF,eAAgB,QAChBf,oBAAqB,CAAC,SAAU,gBA5LzC5oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,6BAxVvBnU,IAAMC,WA6hBjBC,OAlkBA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAkiBVzB,CAAmB4nC,ICljB5BvuB,GAA4B,CAC9B,uBAGEZ,GAA2B,CAC7B,2BACA,4BAIE+wB,eAEF,SAAAA,EAAYrsC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAksC,IACIpsC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAkuC,GAAA/rC,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,EACV0nB,aAAc,MAPtBjjC,mFAcSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBAAuBH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,oBAEzMnV,KAAKK,SACL,CACIxD,MAAO,kBAIfmD,KAAK2kC,4DAIT,IAAAx2B,EAAAnO,KAOI+Z,GAAO,4BAJG,IAAI9X,IAAIC,OAAOC,SAASC,MACdC,aAAarD,IAAI,OAGWmC,KAAK,SAACG,GAElD0O,KAAW80B,sBAAwBxjC,EAAO6Y,KAG1ChM,EAAK9N,SACL,CACIgb,UAAS,EACT0nB,aAAczhC,EAAO6Y,QAG7B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,0CAMzB,IAAA/L,EAC8CpO,KAAKtC,MAAvC2d,EADZjN,EACYiN,SAAUxe,EADtBuR,EACsBvR,MAAOkmC,EAD7B30B,EAC6B20B,aAEzB,OAAK1nB,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAAC8sC,GAAD,QAM4B,UAAhCpJ,EAAagC,UAAUlR,KAGnB10B,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAAC+sC,GAAD,OAEJjtC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAACgtC,GAAD,QAKZ,KAGJltC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAACitC,GAAD,OAEJntC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,MAtC/Cre,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,mBAAmBC,YAAU,WA/DlDpU,IAAMC,WA8GnBC,OAtJA,CACXuY,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OA6HL5B,CAAmBwpC,ICxH1BnwB,GAA4B,CAChC,uBAGEZ,GAA2B,CAC7B,4BAGEoxB,eAEF,SAAAA,EAAY1sC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAusC,IACIzsC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAuuC,GAAApsC,KAAAH,KAAMH,KAqLV2lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MApMJA,EAAKpC,MACL,CAEIb,MAAO,KACPwe,UAAU,EACVunB,eAAe,EAGftP,WAAW,EACXF,WAAY,UACZC,UAAW,GAGX2P,aAAc,KAGd8F,UAAW,GACX0D,UAAW,GACXC,WAAY,EACZC,YAAa,GACbC,SAAU,GAEVC,QAAS,EACTC,MAAO,EACPC,gBAAiB,EACjBC,aAAc,EACdC,cAAc,EAEdC,WAAW,EACXC,gBAAgB,EAChBC,UAAW,GACXC,8BAA+B,GAE/BC,gBAAgB,EAChBC,YAAa,GACbC,YAAa,GACbC,UAAW,GACXC,iBAAiB,EAGjB3K,WAAY,GACZ4K,aAAc,GAGdC,0BAA0B,EAC1BC,eAAe,EACfC,cAAc,GAjDtB/tC,mFAwDSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBACzFH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAW7FnV,KAAK4kC,kBATD5kC,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,4DAUnB,IAAAsR,EAAAnO,KAEI+Z,GAAO,mBAAmB5Y,KAAK,SAACG,GAE5B6M,EAAK9N,SACL,CACIgb,UAAS,EACT2nB,aAAc1hC,EAAO6Y,QAG7B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,+CAOrBna,KAAKK,SAAS,CAACutC,eAAe,IADlC,IAAAx/B,EAIgRpO,KAAKtC,MAAzQorC,EAJZ16B,EAIY06B,UAAW0D,EAJvBp+B,EAIuBo+B,UAGfjsC,EACJ,CACI2kC,UAAW4D,EACX/D,UAAWyH,EACXrH,WAXR/2B,EAIkCq+B,WAQ1BrH,YAZRh3B,EAI8Cs+B,YAStCrH,QAbRj3B,EAI2Dw+B,QAUnDtH,MAdRl3B,EAIoEy+B,MAW5DtH,gBAfRn3B,EAI2E0+B,gBAYnEtH,aAhBRp3B,EAI4F2+B,aAapFrH,SAjBRt3B,EAI0Gu+B,SAclGlH,aAlBRr3B,EAIoH4+B,aAe5GrH,UAnBRv3B,EAIkI6+B,UAgB1HrH,eApBRx3B,EAI6I8+B,eAiBrIrH,UArBRz3B,EAI6J++B,UAkBrJrH,8BAtBR13B,EAIwKg/B,8BAmBhKrH,eAvBR33B,EAIuMi/B,eAoB/LrH,YAxBR53B,EAIuNk/B,YAqB/MrH,YAzBR73B,EAIoOm/B,YAsB5NpH,UA1BR/3B,EAIiPo/B,UAuBzOtH,gBA3BR93B,EAI4Pq/B,iBA0BtO,YAAdjB,EAEAxsC,KAAK8tC,mBAAmBvtC,GAIxBP,KAAK+tC,iBAAiBxtC,8CAIXA,GACnB,IAAA2xB,EAAAlyB,KAEIqa,GAAY,iBAAkB9Z,GAAaY,KAAK,WAE5C+wB,EAAK7xB,SACL,CACIwtC,cAAc,KAGtB,SAAChxC,GAEGq1B,EAAK7xB,SACL,CAEIutC,eAAe,IAGnB1b,EAAK1M,iBAAiB,SAAU3oB,EAAMsd,iDAI7B5Z,GACjB,IAAAs5B,EAAA75B,KACU0tC,EAAiB1tC,KAAKtC,MAAtBgwC,aAENntC,EAAW,cAAoBmtC,EAG/BrzB,GAAY,uCAAwC9Z,GAAaY,KAAK,WAElE04B,EAAKx5B,SACL,CACIwtC,cAAc,KAGtB,SAAChxC,GAEGg9B,EAAKx5B,SACL,CAEIutC,eAAe,IAGnB/T,EAAKrU,iBAAiB,SAAU3oB,EAAMsd,gEA0BdqyB,GAEV,UAAdA,GAEAxsC,KAAK2tC,8EAKb,IAAA7T,EAAA95B,KACIA,KAAKK,SAAS,CACVstC,0BAA0B,IAG9B/M,GAAY,yCAAyCz/B,KAAK,SAACG,GAEvDw4B,EAAKz5B,SAAS,CACVuiC,eAAe,EACfE,WAAYxhC,EAAO6Y,KAAKoN,SAGhC,SAAC1qB,GAEGi9B,EAAKz5B,SAAS,CACVuiC,eAAe,EACfE,WAAY,wCAMxB,IAAAyD,EAAAvmC,KAAAmyB,EAMsEnyB,KAAKtC,MAL/Db,EADZs1B,EACYt1B,MAAOwe,EADnB8W,EACmB9W,SAAUunB,EAD7BzQ,EAC6ByQ,cACjBxP,EAFZjB,EAEYiB,WAAYC,EAFxBlB,EAEwBkB,UAAWC,EAFnCnB,EAEmCmB,UACvB0P,EAHZ7Q,EAGY6Q,aACA8F,EAJZ3W,EAIY2W,UAAW0D,EAJvBra,EAIuBqa,UAAuBE,GAJ9Cva,EAIkCsa,WAJlCta,EAI8Cua,aAAaC,EAJ3Dxa,EAI2Dwa,SAA0DK,GAJrH7a,EAIqEya,QAJrEza,EAI8E0a,MAJ9E1a,EAIqF2a,gBAJrF3a,EAIsG4a,aAJtG5a,EAIqH6a,cAAcC,EAJnI9a,EAImI8a,UAAWC,EAJ9I/a,EAI8I+a,eAAgBC,EAJ9Jhb,EAI8Jgb,UAAWC,EAJzKjb,EAIyKib,8BAA+BC,EAJxMlb,EAIwMkb,eAAgBC,EAJxNnb,EAIwNmb,YAAaC,EAJrOpb,EAIqOob,YAAaC,EAJlPrb,EAIkPqb,UACtO1K,EALZ3Q,EAKY2Q,WAAY4K,EALxBvb,EAKwBub,aAAcD,EALtCtb,EAKsCsb,gBAC1BE,EANZxb,EAMYwb,yBAA0BC,EANtCzb,EAMsCyb,cAAeC,EANrD1b,EAMqD0b,aAEzC3jC,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAIEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,EAAML,UAErEqxC,EAGG1uC,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAI,qBAAuBumC,EAAW3b,MAAI,IAI5DhuB,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMqiB,EAAKlmC,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAGTjkB,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAQA,EAAEC,iBAAkBiU,EAAKyH,gBAC9C7uC,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,qBAEJxD,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAA,+BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACyoC,UAAWvhB,KAE3CX,WAAY,CACR8L,WAAW,EACX8L,UAAW,MAGnBr/B,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,aACVhY,GAAG,mBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQoT,EAAaiL,WACrBpe,UAAU,OACVC,YAAY,cACZH,cAAe6c,EACfzlB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACmsC,UAAWjlB,IAASgf,EAAK2H,gCAAgC3mB,MAG7FpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,sBACVhY,GAAG,yBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAe8d,EAAkB,MAAQ,KACzC1mB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACotC,gBAA4B,QAAVlmB,OAGtDpoB,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACosC,WAAYllB,KAE5CX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,2BAInBlH,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,eACVhY,GAAG,qBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQoT,EAAa0D,aACrB/W,cAAe+c,EACf3lB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACqsC,YAAanlB,OAIjDpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,WACVhY,GAAG,kBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQoT,EAAa6D,gBACrBhX,UAAU,eACVC,YAAY,cACZH,cAAegd,EACf5lB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACssC,SAAUplB,SAOlDomB,EAEIxuC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAA,mCACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAEtBqlB,EAEIzjC,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,4BACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQkT,EACRjT,UAAU,KACVC,YAAY,cACZH,cAAe+d,EACf3mB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACqtC,aAAcnmB,OAItDpoB,EAAAC,EAAAC,cAAA,gCAOpB,KAGJF,EAAAC,EAAAC,cAAA,8BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,oBACVhY,GAAG,UACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACusC,QAASrlB,KAEzCX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,0BAGflH,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,kBACVhY,GAAG,QACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACwsC,MAAOtlB,KAEvCX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,2BAInBlH,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,6BACVhY,GAAG,mBACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACysC,gBAAiBvlB,KAEjDX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,0BAGflH,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,0BACVhY,GAAG,gBACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAAC0sC,aAAcxlB,KAE9CX,WAAY,CACRggB,QAAS,WACTvgC,MAAO,2BAInBlH,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,wBACVhY,GAAG,4BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAeqd,EAAe,MAAQ,KACtCjmB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAAC2sC,aAAyB,QAAVzlB,SAM3DpoB,EAAAC,EAAAC,cAAA,uCACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,kBACVhY,GAAG,uBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAesd,EAAY,MAAQ,KACnClmB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAAC4sC,UAAsB,QAAV1lB,OAGhDpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,mBACVhY,GAAG,wBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAeud,EAAiB,MAAQ,KACxCnmB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAAC6sC,eAA2B,QAAV3lB,QAIzDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,qCACVhY,GAAG,6BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAa8D,WACrBnX,cAAewd,EACfpmB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAAC8sC,UAAW5lB,OAG/CpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,sCACVhY,GAAG,8BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAa8D,WACrBnX,cAAeyd,EACfrmB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAAC+sC,8BAA+B7lB,SAM3EpoB,EAAAC,EAAAC,cAAA,4BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,yBACVhY,GAAG,wBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAe0d,EAAiB,MAAQ,KACxCtmB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACgtC,eAA2B,QAAV9lB,OAGrDpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,gBACVhY,GAAG,qBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAa+D,kBACrBpX,cAAe2d,EACfvmB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACitC,YAAa/lB,QAIrDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,aACVhY,GAAG,mBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAagE,WACrBrX,cAAe6d,EACfzmB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACmtC,UAAWjmB,OAG/CpoB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,eACVhY,GAAG,qBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQoT,EAAaiE,aACrBtX,cAAe4d,EACfxmB,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACktC,YAAahmB,UAO7DpoB,EAAAC,EAAAC,cAACwc,GAAD,KACI1c,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,QAAQ5gB,MAAO,CAAChH,MAAM,SACpCxI,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYsG,SAAU0kC,EAAe7vC,KAAK,UAAW6vC,EAAgB,oBAAsB,iBA/X9HzuC,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,qCAzP1BnU,IAAMC,WAooBdC,OA/pBA,CACXuY,kBAAmB,CACjBrY,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhBN,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,SAgpBPR,CAAmB6pC,yBC/kBnB7pC,WAAWgtB,GAAXhtB,CAvFf,SAAAqH,GACA,IAAAC,EADgCnK,EAChC7B,OAAAiM,EAAA,EAAAjM,CAAA,GAAA+L,GAGIokC,EAgBEtuC,EAhBFsuC,QACAjkC,EAeErK,EAfFqK,QAEAwc,GAaE7mB,EAdF4mB,iBAcE5mB,EAbF6mB,WAIA7pB,GASEgD,EAZF6O,GAYE7O,EAXF8mB,WAWE9mB,EAVF+mB,WAUE/mB,EATFhD,OACAwL,EAQExI,EARFwI,QAEAsnB,GAME9vB,EAPFknB,cAOElnB,EANF8vB,eACAye,EAKEvuC,EALFuuC,aACAxe,EAIE/vB,EAJF+vB,OAkCF,OA9BI/vB,EAHFgwB,UAGEhwB,EAFFiwB,YAEEjwB,EADF8hB,SAGmBjX,KAAUV,EAAA,GAAAhM,OAAA2M,EAAA,EAAA3M,CAAAgM,EAC5B,IAAME,EAAQic,eAAiBtpB,GADHmB,OAAA2M,EAAA,EAAA3M,CAAAgM,EAE5B,IAAME,EAAQkc,iBAAmB/d,IAAYxL,GAFjBmN,IAKbU,IAAW1M,OAAA2M,EAAA,EAAA3M,CAAA,GAC1BkM,EAAQrH,eAA0BhF,IAAd6oB,IAuBrBvnB,EAAAC,EAAAC,cAAA,OAAKgL,UAAU,aAEblL,EAAAC,EAAAC,cAAA,kCAA0B+uC,GAAmBjvC,EAAAC,EAAAC,cAAA,WAAKF,EAAAC,EAAAC,cAAA,WAElDF,EAAAC,EAAAC,cAAA,OAAKgL,UAAU,aACZulB,GAAUA,EAAOhyB,OAAS,EACzBgyB,EAAO7e,IAAI,SAACs9B,GAAD,OACTlvC,EAAAC,EAAAC,cAAA,OAAK4R,IAAKo9B,EAAK3/B,GAAIS,QAAS,kBAAMg/B,EAAQE,EAAK3/B,GAAI2/B,EAAKC,oBAAoBjkC,UAAU,OAAOsE,MAAO,CAACtH,OAAO,YAC1GlI,EAAAC,EAAAC,cAAA,QAAMgL,UAAU,aAAYlL,EAAAC,EAAAC,cAAA,SAAIgvC,EAAKx9B,MAArC,WAA2Dw9B,EAAK3/B,IAAMihB,EAAgBxwB,EAAAC,EAAAC,cAACkvC,GAAAnvC,EAAD,CAAiBwD,MAAM,UAAUiE,SAAS,UAAa,IAAU1H,EAAAC,EAAAC,cAAA,WACvJF,EAAAC,EAAAC,cAAA,QAAMgL,UAAU,sBAAsBsE,MAAO,CAAE9H,SAAU,SAAzD,IAAwEwnC,EAAKC,kBAA7E,KAAuGnvC,EAAAC,EAAAC,cAAA,WAAKF,EAAAC,EAAAC,cAAA,cAIhHF,EAAAC,EAAAC,cAAA,mCCdJ0c,GAA4B,CAC9B,uBAGEZ,GAA2B,CAC7B,2BACA,2BACA,4BAGEqzB,eAEF,SAAAA,EAAY3uC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAwuC,IACI1uC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAwwC,GAAAruC,KAAAH,KAAMH,KAuDV4uC,qBAAuB,SAAC//B,EAAI4/B,GAEpBxuC,EAAKO,SAAS,CACVquC,sBAAuBhgC,EACvBigC,uBAAwBL,KA5DpCxuC,EAiEA8uC,0BAA4B,SAACpV,GAEzB15B,EAAKO,SAAS,CACVwuC,qBAAsBrV,KApE9B15B,EAwEAgvC,6BAA+B,SAACtV,GAE5B15B,EAAKO,SAAS,CACV0uC,wBAAyBvV,KA3EjC15B,EA+EAy5B,wBAA0B,SAACC,GAEvB15B,EAAKO,SAAS,CACV6yB,mBAAoBsG,KAlF5B15B,EAsFA69B,UAAY,SAACC,GAAe,IAAAxvB,EAC0BtO,EAAKpC,MAA/CsxC,EADgB5gC,EAChB4gC,oBAAqBnR,EADLzvB,EACKyvB,WAEvBjxB,GAHkBwB,EACiB+L,KAE1B60B,EAAoBlR,OAC/B,SAAAxqB,GAAI,OACAA,EAAKzC,KAAKwb,cAAc1X,QAAQkpB,EAAWxR,gBAAkB,KAEnD,IAAduR,GAAyC,GAArBA,EAAWhgC,QAC/BkC,EAAKO,SAAU,CAAE8Z,KAAM60B,EAAqBnR,WAAYD,IACxD99B,EAAKmvC,iCAEArR,EAAWhgC,QAAU,GAC1BhB,QAAQwjC,IAAIxC,GACZ99B,EAAKovC,sCAAsCtR,GAC3C99B,EAAKO,SAAU,CAAE8Z,KAAMvN,EAAQixB,WAAYD,KAG3C99B,EAAKO,SAAU,CAAEw9B,WAAYD,KAvGrC99B,EA2bA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MAzcJA,EAAKpC,MACL,CAEIyxC,kBAAkB,EAClBC,cAAc,EACdvyC,MAAO,KAGPwyC,uBAAuB,EAGvBL,oBAAqB,GACrB70B,KAAM,GAGN00B,qBAAqB,EACrBhE,aAAa,EAEbkE,wBAAwB,EACxBjE,eAAe,EAEf5X,mBAAmB,EACnB6X,eAAe,EAGfzX,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXic,WAAY,GACZC,OAAQ,GAGRC,SAAU,GACVC,MAAO,GACPC,OAAQ,GACRC,eAAgB,GAChBC,wBAAyB,GACzBC,0BAA0B,EAC1BC,oBAAoB,EACpBpB,sBAAuB,GACvBC,uBAAwB,GAExBhD,QAAS,GAGTP,cAAe,GAEfvN,WAAY,IApDpB/9B,mFA8GSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBACzFH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,oBAa7FnV,KAAK+vC,gBACL/vC,KAAKgwC,aAZDhwC,KAAKK,SACL,CACI8uC,kBAAkB,EAClBC,cAAc,EACdvyC,MAAO,0DAYnB,IAAAsR,EAAAnO,KAESgV,KAAQC,8BAA8B,CAAC,4BAA6BjF,KAAWC,aAAakF,mBAYjG4E,GAAO,kBAAkB5Y,KAAK,SAACG,GAG3B6M,EAAK9N,SACL,CACI8uC,kBAAkB,EAClBG,WAAYhuC,EAAO6Y,QAG3B,SAACtd,GAEGsR,EAAK9N,SACL,CACI8uC,kBAAkB,EAClBtyC,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACL,CACI8uC,kBAAkB,EAClBG,WAAY,yCA2BxB,IAAApd,EAAAlyB,KACI+Z,GAAO,cAAc5Y,KAAK,SAACG,GAIvB,IAFA,IAAI2uC,EAAgB,GAEXxiB,EAAI,EAAGA,EAAInsB,EAAO6Y,KAAKvc,OAAQ6vB,IACxC,CACI,IAAIgiB,EAAQnuC,EAAO6Y,KAAKsT,GAEpByiB,EACJ,CACIzE,QAASgE,EAAMhE,QACf0E,MAAOV,EAAMU,MACbC,OAAQX,EAAMW,OACdC,kBAAmBZ,EAAMY,kBACzB3E,QAAS+D,EAAM/D,QACf4E,eAAgBb,EAAMa,eACtBC,gBAAiBd,EAAMc,gBACvBC,kBAAmBf,EAAMe,kBACzBC,cAAehB,EAAMgB,cACrBC,UAAWjB,EAAMiB,WAGrBT,EAAc9iB,KAAK+iB,GAIvBhe,EAAK7xB,SACL,CACI+uC,cAAa,EACbG,OAAQU,KAGhB,SAACpzC,GAEGq1B,EAAK7xB,SACL,CACI+uC,cAAc,EACdvyC,MAAOA,EAAMsd,4CAMzB,IAAA0f,EAAA75B,KACIA,KAAKK,SAAS,CAACwqC,aAAa,IADhC,IAAA1Y,EAIyLnyB,KAAKtC,MAAlL+xC,EAJZtd,EAIYsd,MAAOC,EAJnBvd,EAImBud,OAAQC,EAJ3Bxd,EAI2Bwd,eAAgBC,EAJ3Czd,EAI2Cyd,wBAAyBC,EAJpE1d,EAIoE0d,yBAA0BhB,EAJ9F1c,EAI8F0c,oBAAqBH,EAJnHvc,EAImHuc,sBAAuBoB,EAJ1I3d,EAI0I2d,mBAgBtIz1B,GAAY,iBAZZ,CACI81B,MAAOV,EACPW,OAAQV,EACRY,eAAgBX,EAChBgB,gBAAiBf,EACjBS,kBAAmBR,EACnBU,gBAAiB7B,EACjB8B,kBAfRre,EAI8Jwc,uBAYtJ+B,UAAWZ,IAI4B3uC,KAAK,WAE5C04B,EAAKx5B,SACL,CACIwqC,aAAa,EAEb8E,eAAgB,KAGpB9V,EAAK+U,0BAA0BC,GAC/BhV,EAAKrU,iBAAiB,UAAW,gBAEjCqU,EAAKmW,aAET,SAACnzC,GAEGg9B,EAAKx5B,SACL,CAEIwqC,aAAa,IAGjBhR,EAAKrU,iBAAiB,SAAU3oB,EAAMsd,8CAK9C,IAAA2f,EAAA95B,KACIA,KAAKK,SAAS,CAACyqC,eAAe,IADlC,IAAA/Q,EAI+M/5B,KAAKtC,MAAxM8xC,EAJZzV,EAIYyV,SAAUC,EAJtB1V,EAIsB0V,MAAO9D,EAJ7B5R,EAI6B4R,QAAS+D,EAJtC3V,EAIsC2V,OAAQC,EAJ9C5V,EAI8C4V,eAAgBC,EAJ9D7V,EAI8D6V,wBAAyBC,EAJvF9V,EAIuF8V,yBAA0BnB,EAJjH3U,EAIiH2U,sBAAuBK,EAJxIhV,EAIwIgV,uBAAwBe,EAJhK/V,EAIgK+V,mBAkB5Jz1B,GAAY,oBAdZ,CACIu2B,SAAUpB,EACV/D,QAASE,EACTwE,MAAQV,EACRW,OAAQV,EACRY,eAAiBX,EACjBgB,gBAAiBf,EACjBS,kBAAmBR,EACnBU,gBAAiB7B,EACjB8B,kBAjBRzW,EAIoL4U,uBAc5K+B,UAAWZ,IAI+B3uC,KAAK,WAE/C24B,EAAKz5B,SACL,CACIyqC,eAAe,IAGnBhR,EAAKgV,6BAA6BC,GAClCjV,EAAKtU,iBAAiB,UAAW,kBAEjCsU,EAAKkW,aAET,SAACnzC,GAEGi9B,EAAKz5B,SACL,CAEIyqC,eAAe,IAGnBhR,EAAKtU,iBAAiB,SAAU3oB,EAAMsd,0DAIpByxB,GAEtBhvC,QAAQwjC,IAAIwL,EAAc8E,WAC1B1wC,KAAKK,SAAS,CACVmvC,SAAU5D,EAAcuE,MACxBxE,QAASC,EAAcH,QACvBgE,MAAO7D,EAAcuE,MACrBT,OAAQ9D,EAAcwE,OACtBT,eAAgB/D,EAAc0E,eAC9BV,wBAAyBhE,EAAc6E,cAAcrT,GACrDyS,yBAA0BjE,EAAcyE,kBACxC3B,sBAAuB9C,EAAc2E,gBACrC5B,uBAAwB/C,EAAc4E,kBACtCV,mBAAoBlE,EAAc8E,kDAK1C,IAAAnK,EAAAvmC,KACIA,KAAKK,SAAS,CAAC0qC,eAAe,IADlC,IAAA/M,EAGiDh+B,KAAKtC,MAA1C0tC,EAHZpN,EAGYoN,cAAelY,EAH3B8K,EAG2B9K,kBAGvB9Y,GAAQ,6BAA+BgxB,GAAejqC,KAAK,WAEvDolC,EAAKlmC,SACL,CACI0qC,eAAe,IAGnBxE,EAAKhN,wBAAwBrG,GAC7BqT,EAAK/gB,iBAAiB,UAAW,kBAEjC+gB,EAAKyJ,aAET,SAACnzC,GAEG0pC,EAAKlmC,SACL,CAEI0qC,eAAe,IAGnBxE,EAAKhN,wBAAwBrG,GAC7BqT,EAAK/gB,iBAAiB,SAAU3oB,EAAMsd,sEAIRyjB,GACtC,IAAA6I,EAAAzmC,KACIA,KAAKK,SAAS,CACVgvC,uBAAuB,IAGJrvC,KAAKtC,MAApBmgC,WAER+C,GAAY,wFAA0FhD,EAAa,MAAMz8B,KAAK,SAACG,GAK3H,IAFA,IAAIuvC,EAAiB,GAEZpjB,EAAI,EAAGA,EAAInsB,EAAO6Y,KAAKoN,MAAM3pB,OAAQ6vB,IAC9C,CACI,IAAIqjB,EAAgBxvC,EAAO6Y,KAAKoN,MAAMkG,GAElCsjB,EACJ,CACIriC,GAAIoiC,EAAcpiC,GAClBmC,KAAMigC,EAAc5Q,YACpBA,YAAa4Q,EAAc5Q,YAAc,KAAO4Q,EAAcxC,kBAAoB,IAClFA,kBAAmBwC,EAAcxC,mBAGrCuC,EAAe1jB,KAAK4jB,GAGxBF,EAAe3hB,KAAKuX,EAAKuK,uBAEzBvK,EAAKpmC,SAAS,CACV2uC,oBAAqB6B,EACrB12B,KAAM02B,EACNxB,uBAAuB,KAG/B,SAACxyC,GAEG4pC,EAAKjhB,iBAAiB,SAAU,oGAKxC,IAAAqmB,EAAA7rC,KACIA,KAAKK,SAAS,CACVgvC,uBAAuB,IAI3BzO,GAAY,kDAAkDz/B,KAAK,SAACG,GAIhE,IAFA,IAAIuvC,EAAiB,GAEZpjB,EAAI,EAAGA,EAAInsB,EAAO6Y,KAAKoN,MAAM3pB,OAAQ6vB,IAC9C,CACI,IAAIqjB,EAAgBxvC,EAAO6Y,KAAKoN,MAAMkG,GAElCsjB,EACJ,CACIriC,GAAIoiC,EAAcpiC,GAClBmC,KAAMigC,EAAc5Q,YACpBA,YAAa4Q,EAAc5Q,YAAc,KAAO4Q,EAAcxC,kBAAoB,IAClFA,kBAAmBwC,EAAcxC,mBAGrCuC,EAAe1jB,KAAK4jB,GAGxBF,EAAe3hB,KAAK2c,EAAKmF,uBAEzBnF,EAAKxrC,SAAS,CACV2uC,oBAAqB6B,EACrB12B,KAAM02B,EACNxB,uBAAuB,KAG/B,SAACxyC,GAEGgvC,EAAKrmB,iBAAiB,SAAU,0FAIlByrB,EAAOC,GAEzB,OAAKD,EAAM/Q,YAAcgR,EAAMhR,aACrB,EAEL+Q,EAAM/Q,YAAcgR,EAAMhR,YACtB,EAEF,mCA0BX,IAAAiR,EAAAnxC,KAAAoxC,EAMoKpxC,KAAKtC,MAL7Jb,EADZu0C,EACYv0C,MAAOsyC,EADnBiC,EACmBjC,iBAAkBC,EADrCgC,EACqChC,aAAcC,EADnD+B,EACmD/B,sBACvCL,EAFZoC,EAEYpC,oBAAqBnR,EAFjCuT,EAEiCvT,WAAY1jB,EAF7Ci3B,EAE6Cj3B,KACjC00B,EAHZuC,EAGYvC,oBAAqBhE,EAHjCuG,EAGiCvG,YAAakE,EAH9CqC,EAG8CrC,uBAAwBjE,EAHtEsG,EAGsEtG,cAAe5X,EAHrFke,EAGqFle,kBAAmB6X,EAHxGqG,EAGwGrG,cAC5F3X,EAJZge,EAIYhe,WAAYC,EAJxB+d,EAIwB/d,UAAWC,EAJnC8d,EAImC9d,UACvBic,EALZ6B,EAKY7B,OAAQD,EALpB8B,EAKoB9B,WACRG,EANZ2B,EAMY3B,MAAOC,EANnB0B,EAMmB1B,OAAQC,EAN3ByB,EAM2BzB,eAAgBC,EAN3CwB,EAM2CxB,wBAAyBC,EANpEuB,EAMoEvB,yBAA0BC,EAN9FsB,EAM8FtB,mBAAoBpB,EANlH0C,EAMkH1C,sBAAuBC,EANzIyC,EAMyIzC,uBAC7HzkC,EAAYlK,KAAKH,MAAjBqK,QAER,IAAKilC,IAAqBC,EAEtB,OAAOjwC,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,sBAEpC,GAAI9Z,EAGL,OAAOsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAGxE,IAAMw0C,EAAe,SAACvjC,GAGdqjC,EAAKxT,UAAU7vB,IAIvB,OACI3O,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMitB,EAAK9wC,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAMmhC,EAAqBxkC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAM46B,EAAKvC,0BAA0BC,IAAsBxgB,kBAAgB,oBAAoB9I,WAAW,GACvLpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkB6e,EAAKrF,aAC7C3sC,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,iBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,2CAIAD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAAEovC,MAAOloB,KAExCX,WAAY,CACR8L,WAAW,EACX8L,UAAW,QAKvBr/B,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,wBACVhY,GAAG,iBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQ0f,EACRzf,UAAU,KACVC,YAAY,cACZH,cAAeigB,EACf7oB,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAACuvC,wBAAyBroB,QAKjEpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,sBACVhY,GAAG,+BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAekgB,EAA2B,MAAQ,KAClD9oB,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAACwvC,yBAAqC,QAAVtoB,QAKnEpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,cACVhY,GAAG,uBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAemgB,EAAqB,MAAQ,KAC5C/oB,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAAEyvC,mBAA+B,QAAVvoB,QAK9DpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAA,MAAIsP,MAAO,CAAC9L,UAAU,OAAQoE,UAAU,UAAxC,MAEJ9H,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,gCACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAAEqvC,OAAQnoB,KAEzCX,WAAa,CACT4X,UAAW,GACXoI,QAAS,WACTvgC,MAAO,gDAO3BlH,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAA,MAAIsP,MAAO,CAAC9L,UAAU,OAAQoE,UAAU,UAAxC,MAEJ9H,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,wBACVhY,GAAG,kBACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAAEsvC,eAAgBpoB,KAEjDX,WAAa,CACT4X,UAAW,GACXoI,QAAS,WACTvgC,MAAO,gDAQvB2oC,EAEI7vC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,8CACVhY,GAAG,SAEH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEKsqB,EAELzqB,WAAY,CACR8L,WAAW,EACX8L,UAAW,IACXhM,aAAcqL,KAGtB1+B,EAAAC,EAAAC,cAACiyC,GAAD,CACInD,QAASnuC,KAAKyuC,qBACd/nB,UAAU,8CACVhY,GAAG,2BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQzV,EACR0V,UAAU,KACVC,YAAY,cACZH,cAAe+e,EACfN,aAAcO,EACd5nB,cAEI,SAACQ,GAKG,GAFA4pB,EAAK9wC,SAAS,CAACsuC,uBAAwB,OAEnCx0B,EAAKvc,OAAS,EAEd,IAAK,IAAI6vB,EAAI,EAAGA,EAAItT,EAAKvc,OAAQ6vB,IAEzBtT,EAAKsT,GAAG/e,IAAM6Y,GACd4pB,EAAK9wC,SAAS,CAACsuC,uBAAwBx0B,EAAKsT,GAAG6gB,oBAM3D6C,EAAK9wC,SAAS,CAACquC,sBAAuBnnB,QAQtDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUmmC,EAAuBzsC,MAAM,OAAOuM,QAAS,kBAAMgiC,EAAKlC,kCACpEI,EAAwB,iCAAmC,gCAcrFlwC,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMgiC,EAAKvC,0BAA0BC,IAAsBjsC,MAAM,SAAlF,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU2hC,EAAa9sC,KAAK,SAAS6E,MAAM,aAC9CioC,EAAc,kBAAoB,gBAOnD1rC,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAMqhC,EAAwB1kC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAM46B,EAAKrC,6BAA6BC,IAAyB1gB,kBAAgB,oBAAoB9I,WAAW,GAChMpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkB6e,EAAKpF,gBAC7C5sC,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,gBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,2CAIAD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAAEovC,MAAOloB,KAExCX,WAAY,CACR8L,WAAW,EACX8L,UAAW,IACXhM,aAAcid,MAK1BtwC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,wBACVhY,GAAG,iBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQ0f,EACRzf,UAAU,KACVC,YAAY,cACZH,cAAeigB,EACf7oB,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAACuvC,wBAAyBroB,QAKjEpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,sBACVhY,GAAG,+BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAekgB,EAA2B,MAAQ,KAClD9oB,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAACwvC,yBAAqC,QAAVtoB,QAKnEpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,cACVhY,GAAG,uBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ,CAAC,MAAO,MAChBD,cAAemgB,EAAqB,MAAQ,KAC5C/oB,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAAEyvC,mBAA+B,QAAVvoB,QAK9DpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAA,MAAIsP,MAAO,CAAC9L,UAAU,OAAQoE,UAAU,UAAxC,MAEJ9H,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,gCACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAAEqvC,OAAQnoB,KAEzCX,WAAa,CACT4X,UAAW,GACXoI,QAAS,WACTvgC,MAAO,0CACPmsB,aAAckd,QAOlCvwC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAA,MAAIsP,MAAO,CAAC9L,UAAU,OAAQoE,UAAU,UAAxC,MAEJ9H,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,wBACVhY,GAAG,kBACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAY4pB,EAAK9wC,SAAS,CAAEsvC,eAAgBpoB,KAEjDX,WAAa,CACT4X,UAAW,GACXoI,QAAS,WACTvgC,MAAO,0CACPmsB,aAAcmd,SASlCX,EAEQ7vC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,8CACVhY,GAAG,SAEH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEKsqB,EAELzqB,WAAY,CACR8L,WAAW,EACX8L,UAAW,IACXhM,aAAcqL,KAGtB1+B,EAAAC,EAAAC,cAACiyC,GAAD,CACInD,QAASnuC,KAAKyuC,qBACd/nB,UAAU,8CACVhY,GAAG,2BACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQzV,EACR0V,UAAU,KACVC,YAAY,cACZH,cAAe+e,EACfN,aAAcO,EACd5nB,cAEI,SAACQ,GAKG,GAFA4pB,EAAK9wC,SAAS,CAACsuC,uBAAwB,OAEnCx0B,EAAKvc,OAAS,EAEd,IAAK,IAAI6vB,EAAI,EAAGA,EAAItT,EAAKvc,OAAQ6vB,IAEzBtT,EAAKsT,GAAG/e,IAAM6Y,GACd4pB,EAAK9wC,SAAS,CAACsuC,uBAAwBx0B,EAAKsT,GAAG6gB,oBAM3D6C,EAAK9wC,SAAS,CAACquC,sBAAuBnnB,QAQtDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUmmC,EAAuBzsC,MAAM,OAAOuM,QAAS,kBAAMgiC,EAAKlC,kCACpEI,EAAwB,iCAAmC,+BAOrFlwC,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMgiC,EAAKrC,6BAA6BC,IAAyBnsC,MAAM,SAAxF,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU4hC,EAAe/sC,KAAK,SAAS6E,MAAM,aAChDkoC,EAAgB,oBAAsB,mBAOvD3rC,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAMwlB,EAAmB3c,QAAS,kBAAM46B,EAAK5X,wBAAwBrG,IAAoB7E,kBAAgB,oBAAoB9I,WAAW,GACjLpmB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,+CACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,8DAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMgiC,EAAK5X,wBAAwBrG,IAAoBtwB,MAAM,QAAQ8vB,WAAS,GAA/F,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU6hC,EAAe57B,QAAS,kBAAMgiC,EAAKnF,eAAeppC,MAAM,UACrEmoC,EAAgB,oBAAsB,kBAMnD5rC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAE1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,UACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,qBAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAACkd,GAAAnd,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,mBAE5FhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,EAAC4F,QAAS,kBAAMgiC,EAAKvC,0BAA0BC,KACnF1vC,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,QAGN,KAGND,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,QAAS,iBAAkB,sBAAuB,sBAAuB,cAAe,wBAAyB,sBAC7HwH,iBAAkB,CAAC,QAAS,4BAA6B,SAAU,oBAAqB,YAAa,iBAAkB,qBACvHvH,UAAWivB,EACX3mB,sBAEI5T,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,mBAE5F,SAAC+kB,GAAiBiX,EAAK9wC,SAAS,CAAC+qC,cAAelR,EAAYuR,UAAW0F,EAAK5X,wBAAwBrG,IAClG,KAENrK,oBAEI7T,KAAQI,8BAA8B,CAAC,4BAA6BpF,KAAWC,aAAakF,mBAE5F,SAAC+kB,GAAkBiX,EAAKlF,0BAA0B/R,GAAciX,EAAKrC,6BAA6BC,IAChG,KAEN/lB,YAAY,EACZF,eAAgB,QAChBf,oBAAqB,CAAC,SAAU,gCAn/B3CvlB,IAAMC,WA8/BhBC,OA7iCA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA6gCVzB,CAAmB8rC,IC3gC5BzyB,GAA4B,CAC9B,uBAGEw1B,eAEF,SAAAA,EAAY1xC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAuxC,IACIzxC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAuzC,GAAApxC,KAAAH,KAAMH,KAuCV0pC,4BAA8B,SAAC/P,GAE3B15B,EAAKO,SAAS,CACVmpC,uBAAwBhQ,KA3ChC15B,EA+CA0xC,+BAAiC,SAAChY,GAE9B15B,EAAKO,SAAS,CACVoxC,0BAA2BjY,KAlDnC15B,EAsDAy5B,wBAA0B,SAACC,GAEvB15B,EAAKO,SAAS,CACV6yB,mBAAoBsG,KAzD5B15B,EA8DA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA/ERA,EAkPA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MAhQJA,EAAKpC,MACL,CAEIb,MAAO,KACPwe,UAAU,EAGVmuB,uBAAuB,EACvBG,eAAe,EAEf8H,0BAA0B,EAC1BC,iBAAiB,EAEjBxe,mBAAmB,EACnB0W,iBAAiB,EAGjBtW,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXse,SAAU,GACVC,gBAAgB,IAAI3/B,MAAOgwB,cAAgB,SAG3C4P,gBAAgB,IAAI5/B,MAAOgwB,cAAgB,SAC3C6P,eAAgB,KAGhBC,gBAAiB,KAGjB/H,gBAAiB,MApCzBlqC,mFAsFSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,mBAY9FnV,KAAKgyC,cAVDhyC,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,wDAWnB,IAAAsR,EAAAnO,KACI+Z,GAAO,gBAAgB5Y,KAAK,SAACG,GAGzB6M,EAAK9N,SACL,CACIgb,UAAS,EACTs2B,SAAUrwC,EAAO6Y,QAGzB,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,8CAMzB,IAAA+X,EAAAlyB,KACIA,KAAKK,SAAS,CAACspC,eAAe,IADlC,IAAAv7B,EAIsEpO,KAAKtC,MAA/Dm0C,EAJZzjC,EAIYyjC,eAAgBC,EAJ5B1jC,EAI4B0jC,eAAgBtI,EAJ5Cp7B,EAI4Co7B,sBAUxCnvB,GAAY,mBANZ,CACI+nB,IAAMyP,EACNlnB,YAAamnB,IAI4B3wC,KAAK,WAE9C+wB,EAAK7xB,SACL,CACIspC,eAAe,IAGnBzX,EAAKqX,4BAA4BC,GACjCtX,EAAK1M,iBAAiB,UAAW,kBAEjC0M,EAAK8f,eAET,SAACn1C,GAEGq1B,EAAK7xB,SACL,CAEIspC,eAAe,IAGnBzX,EAAKqX,4BAA4BC,GACjCtX,EAAK1M,iBAAiB,SAAU3oB,EAAMsd,gDAK9C,IAAA0f,EAAA75B,KACIA,KAAKK,SAAS,CAACqxC,iBAAiB,IADpC,IAAAvf,EAI0DnyB,KAAKtC,MAAnDq0C,EAJZ5f,EAIY4f,gBAAiBN,EAJ7Btf,EAI6Bsf,yBAWzBp3B,GAAY,sBAPZ,CACI3L,GAAIqjC,EAAgB3U,GACpB6U,KAAOF,EAAgB9/B,KACvB0Y,YAAaonB,EAAgBzgB,cAIenwB,KAAK,WAEjD04B,EAAKx5B,SACL,CACIqxC,iBAAiB,IAGrB7X,EAAK2X,+BAA+BC,GACpC5X,EAAKrU,iBAAiB,UAAW,oBAEjCqU,EAAKmY,eAET,SAACn1C,GAEGg9B,EAAKx5B,SACL,CACIqxC,iBAAiB,IAGrB7X,EAAK2X,+BAA+BC,GACpC5X,EAAKrU,iBAAiB,SAAU3oB,EAAMsd,gDAK9C,IAAA2f,EAAA95B,KACIA,KAAKK,SAAS,CAACupC,iBAAiB,IADpC,IAAA7P,EAGmD/5B,KAAKtC,MAA5CssC,EAHZjQ,EAGYiQ,gBAAiB9W,EAH7B6G,EAG6B7G,kBAUzB7Y,GAAY,sBANZ,CACI3L,GAAKs7B,EAAgB5M,GACrB8U,YAAalI,EAAgBmI,qBAIehxC,KAAK,WAEjD24B,EAAKz5B,SACL,CACIupC,iBAAiB,IAGrB9P,EAAKP,wBAAwBrG,GAC7B4G,EAAKtU,iBAAiB,UAAW,oBAEjCsU,EAAKkY,eAET,SAACn1C,GAEGi9B,EAAKz5B,SACL,CAEIupC,iBAAiB,IAGrB9P,EAAKP,wBAAwBrG,GAC7B4G,EAAKtU,iBAAiB,SAAU3oB,EAAMsd,2CA8BnC83B,GAEP,IAAI7P,EAAM6P,EAAKG,OAAO,EAAE,GACxBlQ,EAAQ+P,EAAKG,OAAO,EAAE,GAGtB,OAFOH,EAAKG,OAAO,EAAE,GAEP,IAAMlQ,EAAQ,IAAME,wCAGxBlI,GAEV,IAAI6X,EACJ,CACI3U,GAAIlD,EAAYkD,GAChBnrB,KAAMjS,KAAKqyC,WAAWnY,EAAYjoB,MAClCqf,YAAa4I,EAAY5I,aAG7BtxB,KAAKK,SAAS,CAAC0xC,gBAAiBA,qCAIpC,IAAAxL,EAAAvmC,KAAAg+B,EAOiEh+B,KAAKtC,MAN1Db,EADZmhC,EACYnhC,MAAOwe,EADnB2iB,EACmB3iB,SACPmuB,EAFZxL,EAEYwL,sBAAuBG,EAFnC3L,EAEmC2L,cACvB8H,EAHZzT,EAGYyT,yBAA0BC,EAHtC1T,EAGsC0T,gBAC1Bxe,EAJZ8K,EAIY9K,kBAAmB0W,EAJ/B5L,EAI+B4L,gBACnBtW,EALZ0K,EAKY1K,UAAWF,EALvB4K,EAKuB5K,WAAYC,EALnC2K,EAKmC3K,UACvBse,EANZ3T,EAMY2T,SAAUC,EANtB5T,EAMsB4T,eACVC,EAPZ7T,EAOY6T,eAAgCE,GAP5C/T,EAO4B8T,eAP5B9T,EAO4C+T,iBAChC7nC,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMqiB,EAAKlmC,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM87B,EAAuBn/B,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMgwB,EAAKgD,4BAA4BC,IAAwBnb,kBAAgB,oBAAoB9I,WAAW,GAC7LpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBiU,EAAK6D,eAC7CjrC,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,eACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,6CAIAD,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,iBACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACwxC,eAAgBtqB,KAEhDX,WAAY,CACR8L,WAAW,EACX30B,KAAM,OACNy0B,aAAcqf,EACdS,IAAKV,KAIbzyC,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,sBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYgf,EAAKlmC,SAAS,CAACyxC,eAAgBvqB,KAEhDX,WAAY,CACR4X,UAAW,QAIvBr/B,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMo3B,EAAKgD,4BAA4BC,IAAwB5mC,MAAM,SAAtF,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUygC,EAAe5rC,KAAK,SAAS6E,MAAM,aAChD+mC,EAAgB,oBAAsB,kBAOvDxqC,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM+jC,EAA0BpnC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMgwB,EAAKiL,+BAA+BC,IAA2BpjB,kBAAgB,oBAAoB9I,WAAW,GACtMpmB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBiU,EAAKgM,kBAC7CpzC,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,kBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KAEID,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,iBACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYwqB,EAAgB9/B,KAAOsV,EAAOgf,EAAKlmC,SAAS,CAAC0xC,gBAAiBA,KAE/EnrB,WAAY,CACR8L,WAAW,EACX30B,KAAM,OACNu0C,IAAKT,EACLrf,aAAcuf,EAAkBA,EAAgB9/B,KAAO,MAI/D9S,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,sBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYwqB,EAAgBzgB,YAAc/J,EAAOgf,EAAKlmC,SAAS,CAAC0xC,gBAAiBA,KAEtFnrB,WAAY,CACR4X,UAAW,IACXhM,aAAcuf,EAAkBA,EAAgBzgB,YAAc,OAI1EnyB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMo3B,EAAKiL,+BAA+BC,IAA2B7uC,MAAM,SAA5F,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUwoC,EAAiB3zC,KAAK,SAAS6E,MAAM,aAClD8uC,EAAkB,sBAAwB,qBAO3DvyC,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQiL,UAAWH,EAAQgqB,iBAAkBxmB,KAAMwlB,EAAmB3c,QAAS,kBAAMgwB,EAAKhN,wBAAwBrG,IAAoB7E,kBAAgB,oBAAoB9I,WAAW,GACjLpmB,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,iDACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,gEAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMo3B,EAAKhN,wBAAwBrG,IAAoBtwB,MAAM,QAAQ8vB,WAAS,GAA/F,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU0gC,EAAiBz6B,QAAS,kBAAMo3B,EAAK8D,iBAAiBznC,MAAM,UACzEgnC,EAAkB,sBAAwB,oBAMvDzqC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAE1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,YACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,uBAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAACsd,GAAAvd,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,8BAA+BpF,KAAWC,aAAakF,mBAE9FhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,EAAC4F,QAAS,kBAAMo3B,EAAKgD,4BAA4BC,KACrFrqC,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,QAGN,KAGND,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,MAAO,eACnBwH,iBAAkB,CAAC,OAAQ,eAC3BvH,UAAWqxB,EACX9oB,oBAEI7T,KAAQI,8BAA8B,CAAC,8BAA+BpF,KAAWC,aAAakF,mBAE9F,SAAC+kB,GAAkBqM,EAAKiM,cAActY,GAAcqM,EAAKiL,+BAA+BC,IACtF,KAEN7oB,sBAEI5T,KAAQI,8BAA8B,CAAC,8BAA+BpF,KAAWC,aAAakF,mBAE9F,SAAC+kB,GAAiBqM,EAAKlmC,SAAS,CAAC2pC,gBAAiB9P,IAAeqM,EAAKhN,wBAAwBrG,IAC5F,KAENlK,YAAY,EACZF,eAAgB,OAChBd,iBAAkB,CAAC,eApMpC7oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,+BAhTtBnU,IAAMC,WA+flBC,OAxiBA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAwgBVzB,CAAmB6uC,ICjiB5BkB,eAEF,SAAAA,EAAY5yC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAyyC,IACI3yC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAy0C,GAAAtyC,KAAAH,KAAMH,KAEDnC,MACL,GAJJoC,wEAUI,OAAQX,EAAAC,EAAAC,cAAA,uCAbemD,IAAMC,eAiBtBC,IA/CA,CACXuY,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAsBL5B,CAAmB+vC,uBCD5B12B,GAA4B,CAC9B,uBAGEZ,GAA2B,CAC7B,wBACA,yBAGEu3B,eAEF,SAAAA,EAAY7yC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA0yC,IACI5yC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA00C,GAAAvyC,KAAAH,KAAMH,KAEDnC,MACL,CAEIb,MAAO,KACPwe,UAAU,EAEVs3B,KAAM,IATd7yC,mFAgBSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBAAuBH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAW7MnV,KAAK4yC,UATD5yC,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,oDAUnB,IAAAsR,EAAAnO,KACI+Z,GAAO,eAAe5Y,KAAK,SAACG,GAGxB6M,EAAK9N,SACL,CACIgb,UAAS,EACTs3B,KAAMrxC,EAAO6Y,QAGrB,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,KAAK8X,6CAM9B,IAAA7jB,EACgCpO,KAAKtC,MAAzBb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SACPs3B,EAAS3yC,KAAKtC,MAAdi1C,KACAzoC,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,OACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,6CAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAACwzC,GAAAzzC,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQu2B,aAAtB,+BAEJthC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GAElCxI,KAAQI,8BAA8B,CAAC,yBAA0BpF,KAAWC,aAAakF,mBAEzFhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+Q,GAAA,EAAD,CAAS7N,GAAG,gBACRpD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,GACpCpK,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,SAIV,OAKdD,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,OAAQ,UAAW,eAAgB,cAC/CwH,iBAAkB,CAAC,UAAW,SAAU,oBAAqB,aAC7DvH,UAAWqyB,EACXzqB,aAAa,EACbC,YAAY,gCACZa,YAAY,EACZF,eAAgB,gBApD7B3pB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,4BA9DnBnU,IAAMC,WA6HrBC,OApKA,CACXuY,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OA2IL5B,CAAmBgwC,IC7I1B32B,GAA4B,CAChC,uBAGEZ,GAA2B,CAC7B,yBAGE23B,eAEF,SAAAA,EAAYjzC,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA8yC,IACIhzC,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA80C,GAAA3yC,KAAAH,KAAMH,KAqDV2lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MApEJA,EAAKpC,MACL,CAEIb,MAAO,KACPwe,UAAU,EAGViY,WAAW,EACXF,WAAY,UACZC,UAAW,GAGX0f,WAAY,KAGZC,QAAS,GACTC,OAAQ,GACRC,kBAAmB,GACnBC,UAAW,GACXC,UAAW,GACXC,mBAAoB,GACpBC,kBAAmB,GACnBC,cAAe,GAGfC,aAAa,EACbC,YAAY,GAGhB3zC,EAAK4zC,gBAhCT5zC,mFAsCSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBACzFH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,oBAEzFnV,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,0DAgCnB,IAAAsR,EAAAnO,KAEI+Z,GAAO,gBAAgB5Y,KAAK,SAACG,GAEzB6M,EAAK9N,SACL,CACIgb,UAAS,EACT03B,WAAYzxC,EAAO6Y,QAG3B,SAACtd,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,6CAMzB,IAAA+X,EAAAlyB,KACIA,KAAKK,SAAS,CAACmzC,aAAa,IADhC,IAAAplC,EAG+HpO,KAAKtC,MAgBhI2c,GAAY,cAZZ,CACIs5B,QARRvlC,EAGY4kC,QAMJY,OATRxlC,EAGqB6kC,OAObY,kBAVRzlC,EAG6B8kC,kBAQrBY,UAXR1lC,EAGgD+kC,UASxCY,UAZR3lC,EAG2DglC,UAUnDY,mBAbR5lC,EAGsEilC,mBAW9DY,kBAdR7lC,EAG0FklC,kBAYlFY,cAfR9lC,EAG6GmlC,gBAgBjEpyC,KAAK,WAEzC+wB,EAAK7xB,SACL,CACIozC,YAAY,KAGpB,SAAC52C,GAEGq1B,EAAK7xB,SACL,CAEImzC,aAAa,IAGjBthB,EAAK1M,iBAAiB,SAAU3oB,EAAMsd,yCAK9C,IAAA0f,EAAA75B,KAAAmyB,EACgCnyB,KAAKtC,MAAzBb,EADZs1B,EACYt1B,MAAOwe,EADnB8W,EACmB9W,SADnB0e,EAEiD/5B,KAAKtC,MAA1C01B,EAFZ2G,EAEY3G,WAAYC,EAFxB0G,EAEwB1G,UAAWC,EAFnCyG,EAEmCzG,UACvByf,EAAe/yC,KAAKtC,MAApBq1C,WAHZ/U,EAI+Hh+B,KAAKtC,MAAxHs1C,EAJZhV,EAIYgV,QAASC,EAJrBjV,EAIqBiV,OAAQC,EAJ7BlV,EAI6BkV,kBAAmBC,EAJhDnV,EAIgDmV,UAAWC,EAJ3DpV,EAI2DoV,UAAWC,EAJtErV,EAIsEqV,mBAAoBC,EAJ1FtV,EAI0FsV,kBAAmBC,EAJ7GvV,EAI6GuV,cAJ7GnC,EAKwCpxC,KAAKtC,MAAjC81C,EALZpC,EAKYoC,YAAaC,EALzBrC,EAKyBqC,WAEbvpC,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIIxe,EAIEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,EAAML,UAErEi3C,EAGGt0C,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAI,qBAAuBywC,EAAS7lB,MAAI,IAI1DhuB,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM2V,EAAKx5B,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAGTjkB,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAQA,EAAEC,iBAAkBuH,EAAKsa,cAC9Ch1C,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,mBAEJxD,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAA,8BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,WACVhY,GAAG,WACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYsS,EAAKx5B,SAAS,CAAC2yC,QAASzrB,KAEzCX,WAAY,CACR8L,WAAW,EACX8L,UAAW,OAIvBr/B,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,cACVhY,GAAG,WACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQ,CAAC,MAAO,MAChBD,cAAesjB,EAAS,MAAQ,KAChClsB,cAEI,SAACQ,GAAYsS,EAAKx5B,SAAS,CAAC4yC,OAAmB,QAAV1rB,QAIjDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,sBACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQmjB,EAAWrM,aACnB/W,cAAeujB,EACfnsB,cAEI,SAACQ,GAAYsS,EAAKx5B,SAAS,CAAC6yC,kBAAmB3rB,QAI3DpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQmjB,EAAWqB,SACnBzkB,cAAewjB,EACfpsB,cAEI,SAACQ,GAAYsS,EAAKx5B,SAAS,CAAC8yC,UAAW5rB,QAInDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,iBACVhY,GAAG,iBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQmjB,EAAWsB,OACnB1kB,cAAe4jB,EACfxsB,cAEI,SAACQ,GAAYsS,EAAKx5B,SAAS,CAACkzC,cAAehsB,SAM3DpoB,EAAAC,EAAAC,cAAA,WAEAF,EAAAC,EAAAC,cAAA,4BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQmjB,EAAWuB,WACnB3kB,cAAeyjB,EACfrsB,cAEI,SAACQ,GAAYsS,EAAKx5B,SAAS,CAAC+yC,UAAW7rB,QAInDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,uBACVhY,GAAG,uBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQmjB,EAAWuB,WACnB3kB,cAAe0jB,EACftsB,cAEI,SAACQ,GAAYsS,EAAKx5B,SAAS,CAACgzC,mBAAoB9rB,QAI5DpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,sBACVhY,GAAG,sBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQmjB,EAAWuB,WACnB3kB,cAAe2jB,EACfvsB,cAEI,SAACQ,GAAYsS,EAAKx5B,SAAS,CAACizC,kBAAmB/rB,UAMnEpoB,EAAAC,EAAAC,cAACwc,GAAD,KACI1c,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,QAAQ5gB,MAAO,CAAChH,MAAM,SACpCxI,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYsG,SAAUsqC,EAAaz1C,KAAK,UAAWy1C,EAAc,kBAAoB,iBA9KxHr0C,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,mCAtJ5BnU,IAAMC,WAgVZC,OA3WA,CACXuY,kBAAmB,CACjBrY,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEhBN,eAAgB,CACdC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,SA4VPR,CAAmBowC,IC7T5ByB,eAEF,SAAAA,EAAY10C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAu0C,IACIz0C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAu2C,GAAAp0C,KAAAH,KAAMH,KAEDnC,MACL,CAEI82C,aAAa,EAGbC,aAAc,GAGdzB,QAAS,GACTC,OAAQ,GACRC,kBAAmB,GACnBC,UAAW,GACXC,UAAW,GACXC,mBAAoB,GACpBC,kBAAmB,GACnBC,cAAe,IAnBvBzzC,mFAyBIE,KAAK00C,0DAIT,IACYC,EAAe30C,KAAKH,MAApB80C,WAEJF,EAAez0C,KAAKH,MAAM+0C,cAAclO,aAGxCiO,EAAWd,mBAEXY,EAAatnB,KAAKwnB,EAAWd,mBAGjC7zC,KAAKK,SAAS,CACVo0C,aAAcA,EAEdzB,QAAS2B,EAAWhB,QAAUgB,EAAWhB,QAAU,GACnDV,OAAQ0B,EAAWf,OAASe,EAAWf,OAAS,GAChDV,kBAAmByB,EAAWd,kBAAoBc,EAAWd,kBAAoB,GACjFV,UAAWwB,EAAWb,UAAYa,EAAWb,UAAY,GACzDV,UAAWuB,EAAWZ,UAAYY,EAAWZ,UAAY,GACzDV,mBAAoBsB,EAAWX,mBAAqBW,EAAWX,mBAAqB,GACpFV,kBAAmBqB,EAAWV,kBAAoBU,EAAWV,kBAAoB,GACjFV,cAAeoB,EAAWT,cAAgBS,EAAWT,cAAgB,0CAK7E,IAAA/lC,EAAAnO,KACIA,KAAKK,SAAS,CACVm0C,aAAa,IAFrB,IAAApmC,EAM+HpO,KAAKtC,MAgBhI2c,GAAY,iBAZZ,CACIs5B,QAXRvlC,EAMY4kC,QAMJY,OAZRxlC,EAMqB6kC,OAObY,kBAbRzlC,EAM6B8kC,kBAQrBY,UAdR1lC,EAMgD+kC,UASxCY,UAfR3lC,EAM2DglC,UAUnDY,mBAhBR5lC,EAMsEilC,mBAW9DY,kBAjBR7lC,EAM0FklC,kBAYlFY,cAlBR9lC,EAM6GmlC,gBAgB9DpyC,KAAK,WAE5CgN,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEIm0C,aAAa,IAGjBrmC,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,yCAKvC,IAAA+X,EAAAlyB,KACYw0C,EAAgBx0C,KAAKtC,MAArB82C,YACAC,EAAiBz0C,KAAKtC,MAAtB+2C,aAFZtiB,EAG+HnyB,KAAKtC,MAAxHs1C,EAHZ7gB,EAGY6gB,QAASC,EAHrB9gB,EAGqB8gB,OAAQC,EAH7B/gB,EAG6B+gB,kBAAmBC,EAHhDhhB,EAGgDghB,UAAWC,EAH3DjhB,EAG2DihB,UAAWC,EAHtElhB,EAGsEkhB,mBAAoBC,EAH1FnhB,EAG0FmhB,kBAAmBC,EAH7GphB,EAG6GohB,cAEzG,OAAKP,EAMD7zC,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBJ,EAAK6iB,eAC7C51C,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,cACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAAA,8BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,sBACVhY,GAAG,WACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAC2yC,QAASzrB,KAEzCX,WAAY,CACR8L,WAAW,EACX8L,UAAW,GACXhM,aAAcwgB,EACd9pC,UAAU,MAItB/J,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,cACVhY,GAAG,WACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQ,CAAC,MAAO,MAChBD,cAAesjB,EAAS,MAAQ,KAChClsB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAC4yC,OAAmB,QAAV1rB,QAIjDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,sBACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ6kB,EACR9kB,cAAeujB,EACfnsB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAC6yC,kBAAmB3rB,QAI3DpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ5vB,KAAKH,MAAM+0C,cAAcR,SACjCzkB,cAAewjB,EACfpsB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAC8yC,UAAW5rB,QAInDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,iBACVhY,GAAG,iBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ5vB,KAAKH,MAAM+0C,cAAcP,OACjC1kB,cAAe4jB,EACfxsB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACkzC,cAAehsB,SAM3DpoB,EAAAC,EAAAC,cAAA,WAEAF,EAAAC,EAAAC,cAAA,4BACAF,EAAAC,EAAAC,cAAC6d,GAAA9d,EAAD,CAAS+d,OAAO,IAChBhe,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQ5vB,KAAKH,MAAM+0C,cAAcN,WACjC3kB,cAAeyjB,EACfrsB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAC+yC,UAAW7rB,QAInDpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,uBACVhY,GAAG,uBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ5vB,KAAKH,MAAM+0C,cAAcN,WACjC3kB,cAAe0jB,EACftsB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACgzC,mBAAoB9rB,QAI5DpoB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,sBACVhY,GAAG,sBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ5vB,KAAKH,MAAM+0C,cAAcN,WACjC3kB,cAAe2jB,EACfvsB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACizC,kBAAmB/rB,UAMnEpoB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,SAAzD,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUsrC,EAAaz2C,KAAK,SAAS6E,MAAM,aAC9C4xC,EAAc,kBAAoB,gBAvJxCr1C,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,sBAxGdnU,IAAMC,WA+Q1BC,OArTA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAqRVzB,CAAmB6xC,IC/Q5BU,eAEF,SAAAA,EAAYp1C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAi1C,IACIn1C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAi3C,GAAA90C,KAAAH,KAAMH,KAEDnC,MACL,CAEIw3C,aAAa,EACbC,YAAY,EAGZC,YAAa,IAVrBt1C,2EAeA,IAAAqO,EAAAnO,KACIA,KAAKK,SAAS,CAAC60C,aAAa,IAK5B96B,GAAQ,0BAHgBpa,KAAKtC,MAArB03C,aAGyCj0C,KAAK,WAElDgN,EAAK9N,SACL,CACI80C,YAAY,KAGpB,SAACt4C,GAEGsR,EAAK9N,SACL,CAEI60C,aAAa,IAGjB/mC,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,MAC/BhM,EAAKtO,MAAMm1C,mDAKnB,IAAA9iB,EAAAlyB,KACYk1C,EAAgBl1C,KAAKtC,MAArBw3C,YADZ9mC,EAEwCpO,KAAKtC,MAAjCy3C,EAFZ/mC,EAEY+mC,WAAYC,EAFxBhnC,EAEwBgnC,YAEpB,OAAID,EAEQh2C,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAG,SAAS4qB,MAAI,IAIlChuB,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,6CACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,sCAGAvP,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,0CACVhY,GAAG,iBACH+X,iBAAkB,CACdlB,WAAW,GAEfwB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAE+0C,YAAa7tB,QAItDpoB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,QAAQ8vB,WAAS,GAA1E,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUgsC,GAAeE,IAAgBp1C,KAAKH,MAAMmzC,QAAS7jC,QAAS,kBAAM+iB,EAAKmjB,aAAazyC,MAAM,UACvGsyC,EAAc,kBAAoB,uBA9EtB1yC,IAAMC,WA4F5BC,OAlIA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAkGVzB,CAAmBuyC,ICrG5BjU,GAAUt+B,IAAW,CACvBsgB,KAAM,CACJzS,aAAc,qBAEhB0wB,UAAW,CACTt6B,gBAAiB,YALPjE,CAOXw+B,MAECC,GAASz+B,IAAW,SAAAoI,GAAK,MAAK,CAChCkY,KAAM,CACJlc,cAAe,OACfJ,SAAU,GACV3D,WAAY+H,EAAMs2B,WAAWC,kBAC7Br+B,WAAY,CACV,gBACA,qBACA,aACA,SACA,mBACA,QACA,aACA,sBACA,mBACA,qBACAs+B,KAAK,KACPz1B,UAAW,CACTjJ,MAAO,UACPuG,QAAS,GAEXo4B,aAAc,CACZ3+B,MAAO,UACPG,WAAY+H,EAAMs2B,WAAWI,kBAE/BC,UAAW,CACT7+B,MAAO,YAGXiqB,SAAU,KA7BCnqB,CA8BT,SAAA7C,GAAK,OAAIV,EAAAC,EAAAC,cAACqiC,GAAAtiC,EAADpB,OAAAC,OAAA,CAAK0jC,eAAa,GAAK9hC,MAEhCy1C,eAEF,SAAAA,EAAYz1C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAs1C,IACIx1C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAs3C,GAAAn1C,KAAAH,KAAMH,KAqGV01C,iBAAmB,SAAC/b,GAEhB15B,EAAKO,SAAS,CAAEm1C,YAAahc,KAxGjC15B,EA4GA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA1HJA,EAAKpC,MACL,CAEIb,MAAO,KACP6lC,iBAAiB,EACjBC,cAAc,EAGdrP,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXuhB,cAAe,KAGfY,YAAY,EACZC,WAAY,GAGZ5S,YAAa,EAGb8R,WAAY,MA1BpB70C,mFAgCIE,KAAK01C,gBACL11C,KAAK21C,8DAGUnP,GAEfxmC,KAAKK,SAAS,CACVwiC,YAAa2D,4CAKrB,IAAAr4B,EAAAnO,KAQI+Z,GAAO,uBAHG,IAAI9X,IAAIC,OAAOC,SAASC,MAChBC,aAAarD,IAAI,OAEMmC,KAAK,SAACG,GAG3C6M,EAAK9N,SACL,CACIqiC,iBAAgB,EAChBiS,WAAYrzC,EAAO6Y,QAG3B,SAACtd,GAEGsR,EAAK9N,SACL,CACIqiC,iBAAiB,EACjB7lC,MAAOA,EAAMsd,KAAK8X,uDAM9B,IAAAC,EAAAlyB,KAEI+Z,GAAO,gBAAgB5Y,KAAK,SAACG,GAEzB4wB,EAAK7xB,SACL,CACIsiC,cAAa,EACbiS,cAAetzC,EAAO6Y,QAG9B,SAACtd,GAEGq1B,EAAK7xB,SACL,CACIsiC,cAAc,EACd9lC,MAAOA,EAAMsd,uDAOrBna,KAAKK,SAAS,CAAEo1C,WAAY,SAAUD,YAAY,kDAKlDx1C,KAAKK,SAAS,CAAEo1C,WAAY,SAAUD,YAAY,qCA+BtD,IAAA3b,EAAA75B,KAAAoO,EACqDpO,KAAKtC,MAA9Cb,EADZuR,EACYvR,MAAO6lC,EADnBt0B,EACmBs0B,gBAAiBC,EADpCv0B,EACoCu0B,aADpCxQ,EAEiDnyB,KAAKtC,MAA1C01B,EAFZjB,EAEYiB,WAAYC,EAFxBlB,EAEwBkB,UAAWC,EAFnCnB,EAEmCmB,UACvBshB,EAAkB50C,KAAKtC,MAAvBk3C,cAHZ7a,EAIuC/5B,KAAKtC,MAAhC83C,EAJZzb,EAIYyb,WAAYC,EAJxB1b,EAIwB0b,WAEZ5S,GAD4B7iC,KAAKtC,MAAjCk4C,wBACgB51C,KAAKtC,MAArBmlC,aACA8R,EAAe30C,KAAKtC,MAApBi3C,WAEAzqC,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKw4B,GAAoBC,EAIhB9lC,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM2V,EAAKx5B,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM8nC,EAAYnrC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMsjB,EAAK0b,iBAAiBC,IAAannB,kBAAgB,oBAAoB9I,WAAW,GAC1J,WACE,OAAQkwB,GACJ,IAAK,SACD,OAAOt2C,EAAAC,EAAAC,cAACw2C,GAAD,CACKlB,WAAYA,EACZC,cAAeA,EACfC,gBAAiB,WAAQhb,EAAK0b,iBAAiBC,GAAa3b,EAAKrU,iBAAiB,UAAW,gBAAiBqU,EAAK6b,iBACnHZ,cAAe,SAACt4C,GAAD,OAAaq9B,EAAKrU,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAMnb,EAAK0b,iBAAiBC,MAE3D,IAAK,SACD,OAAOr2C,EAAAC,EAAAC,cAACy2C,GAAD,CACK9C,QAAS2B,EAAWhB,QACpBmB,cAAe,SAACt4C,GAAD,OAAaq9B,EAAKrU,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAMnb,EAAK0b,iBAAiBC,MAE3D,QACI,OAAOr2C,EAAAC,EAAAC,cAAA,aAjBjB,IAuBNF,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,QAA6CgyC,EAAWhB,UAE5Dx0C,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,yBAA0BpF,KAAWC,aAAakF,mBAEzFhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+L,MAAO,CAACxK,YAAY,OAAQgL,QAAS,kBAAM0qB,EAAKkc,wBACtE52C,EAAAC,EAAAC,cAAC4uB,GAAA7uB,EAAD,MADJ,aAGAD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,SAASuM,QAAS,kBAAM0qB,EAAKmc,wBACvC72C,EAAAC,EAAAC,cAAC6uB,GAAA9uB,EAAD,MADJ,gBAIF,KAGND,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQi9B,OACpBhoC,EAAAC,EAAAC,cAAC42C,GAAD,CAAS1uB,MAAOsb,EAAavb,SAAU,SAACxZ,EAAOyZ,GAAR,OAAkBsS,EAAKuN,mBAAmB7f,KAC7EpoB,EAAAC,EAAAC,cAAC62C,GAAD,CAAQ5a,MAAM,YACdn8B,EAAAC,EAAAC,cAAC62C,GAAD,CAAQ5a,MAAM,WAElBn8B,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYiL,UAAWH,EAAQk3B,cAIf,IAAhByB,GACA1jC,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,WACVhY,GAAG,WACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOotB,EAAWhB,QAAUgB,EAAWhB,QAAU,QAI7Dx0C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,cACVhY,GAAG,WACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOotB,EAAWf,OAAS,MAAQ,SAI/Cz0C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,sBACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOotB,EAAWd,kBAAoBc,EAAWd,kBAAoB,QAIjF10C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOotB,EAAWb,UAAYa,EAAWb,UAAY,QAIjE30C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,iBACVhY,GAAG,iBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOotB,EAAWT,cAAgBS,EAAWT,cAAgB,SAO7D,IAAhBrR,GACA1jC,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOotB,EAAWZ,UAAYY,EAAWZ,UAAY,QAIjE50C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,uBACVhY,GAAG,uBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOotB,EAAWX,mBAAqBW,EAAWX,mBAAqB,QAInF70C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAC1Bpe,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,sBACVhY,GAAG,sBACH+X,iBAAkB,CACdlB,WAAW,GAEfqB,WAAY,CACR1d,UAAU,EACVqe,MAAOotB,EAAWV,kBAAoBU,EAAWV,kBAAoB,YArL9F90C,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,kCAlJxBnU,IAAMC,WAoVhBC,OAlaA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAkYVzB,CAAmB4yC,ICpY5Ba,eAEF,SAAAA,EAAYt2C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAm2C,IACIr2C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAm4C,GAAAh2C,KAAAH,KAAMH,KAEDnC,MACL,CAEIsqC,qBAAqB,EAGrBP,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZC,YAAY,EACZI,SAAU,QACVC,UAAW,SAjBnBtoC,4EAsBA,IAAAqO,EAAAnO,KACIA,KAAKK,SAAS,CAAC2nC,qBAAqB,IADxC,IAAA55B,EAIwHpO,KAAKtC,MAAjHyqC,EAJZ/5B,EAIY+5B,SAAUC,EAJtBh6B,EAIsBg6B,UAAWX,EAJjCr5B,EAIiCq5B,WAAYC,EAJ7Ct5B,EAI6Cs5B,WAAYC,EAJzDv5B,EAIyDu5B,WAAYC,EAJrEx5B,EAIqEw5B,WAAYC,EAJjFz5B,EAIiFy5B,WAAYC,EAJ7F15B,EAI6F05B,WAAYC,EAJzG35B,EAIyG25B,WAGjGgB,EAAe,GAEftB,GAAYsB,EAAa5b,KAAK,OAC9Bua,GAAYqB,EAAa5b,KAAK,OAC9Bwa,GAAYoB,EAAa5b,KAAK,OAC9Bya,GAAYmB,EAAa5b,KAAK,OAC9B0a,GAAYkB,EAAa5b,KAAK,OAC9B2a,GAAYiB,EAAa5b,KAAK,OAC9B4a,GAAYgB,EAAa5b,KAAK,OAYlC9S,GAAY,oBARZ,CACIs5B,QAAS3zC,KAAKH,MAAMmzC,QACpBoD,SAAWjO,EACXkO,WAAajO,EACbkO,KAAOvN,IAImC5nC,KAAK,WAE/CgN,EAAK9N,SACL,CACI2nC,qBAAqB,IAGzB75B,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEI2nC,qBAAqB,IAGzB75B,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,yCAKvC,IAAA+X,EAAAlyB,KACYkK,EAAYlK,KAAKH,MAAjBqK,QACA89B,EAAwBhoC,KAAKtC,MAA7BsqC,oBAFZ7V,EAGwHnyB,KAAKtC,MAAjHyqC,EAHZhW,EAGYgW,SAAUC,EAHtBjW,EAGsBiW,UAAWX,EAHjCtV,EAGiCsV,WAAYC,EAH7CvV,EAG6CuV,WAAYC,EAHzDxV,EAGyDwV,WAAYC,EAHrEzV,EAGqEyV,WAAYC,EAHjF1V,EAGiF0V,WAAYC,EAH7F3V,EAG6F2V,WAAYC,EAHzG5V,EAGyG4V,WAErG,OACI5oC,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBJ,EAAK6iB,eAC7C51C,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,wCACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,+CAGAD,EAAAC,EAAAC,cAAC6nB,GAAA9nB,EAAD,CAAaiL,UAAWH,EAAQoc,aAC5BnnB,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAC8pC,GAAA/pC,EAAD,KACID,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASoM,EAAYngB,SAAU,SAACxZ,GAAD,OAAWokB,EAAK7xB,SAAS,CAAEonC,WAAY35B,EAAMG,OAAOotB,aACtHC,MAAM,WAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASqM,EAAYpgB,SAAU,SAACxZ,GAAD,OAAWokB,EAAK7xB,SAAS,CAAEqnC,WAAY55B,EAAMG,OAAOotB,aACtHC,MAAM,YAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASsM,EAAYrgB,SAAU,SAACxZ,GAAD,OAAWokB,EAAK7xB,SAAS,CAAEsnC,WAAY75B,EAAMG,OAAOotB,aACtHC,MAAM,cAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASuM,EAAYtgB,SAAU,SAACxZ,GAAD,OAAWokB,EAAK7xB,SAAS,CAAEunC,WAAY95B,EAAMG,OAAOotB,aACtHC,MAAM,aAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASwM,EAAYvgB,SAAU,SAACxZ,GAAD,OAAWokB,EAAK7xB,SAAS,CAAEwnC,WAAY/5B,EAAMG,OAAOotB,aACtHC,MAAM,aAIlBn8B,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAAC8pC,GAAA/pC,EAAD,KACID,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAASyM,EAAYxgB,SAAU,SAACxZ,GAAD,OAAWokB,EAAK7xB,SAAS,CAAEynC,WAAYh6B,EAAMG,OAAOotB,aACtHC,MAAM,aAEVn8B,EAAAC,EAAAC,cAAC67B,GAAA97B,EAAD,CACI+7B,QAASh8B,EAAAC,EAAAC,cAAC+7B,GAAAh8B,EAAD,CAAUwD,MAAM,UAAUy4B,QAAS0M,EAAYzgB,SAAU,SAACxZ,GAAD,OAAWokB,EAAK7xB,SAAS,CAAE0nC,WAAYj6B,EAAMG,OAAOotB,aACtHC,MAAM,eAO1Bn8B,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,YACVhY,GAAG,YACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAD,OAAW2K,EAAK7xB,SAAS,CAAE8nC,SAAU5gB,KAEzCX,WAAY,CACR8L,WAAW,EACX30B,KAAM,OACNy0B,aAAc2V,MAK1BhpC,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAGlU,GAAI,EAAGmU,GAAI,GACtCre,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAD,OAAW2K,EAAK7xB,SAAS,CAAE+nC,UAAW7gB,KAE1CX,WAAY,CACR7oB,KAAM,OACNy0B,aAAc4V,QAMlCjpC,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,SAAzD,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,UAAYu+B,IAAeC,IAAeC,IAAeC,IAAeC,IAAeC,IAAeC,GAAeC,EAAqBjqC,KAAK,SAAS6E,MAAM,aACjKolC,EAAsB,mBAAqB,uBA7K5BxlC,IAAMC,WA4L/BC,OAlOA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAkMVzB,CAAmByzC,IC5K5BI,eAEF,SAAAA,EAAY12C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAu2C,IACIz2C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAu4C,GAAAp2C,KAAAH,KAAMH,KAEDnC,MACL,CAEIuqC,uBAAuB,GAN/BnoC,wFAWA,IAAAqO,EAAAnO,KACIA,KAAKK,SAAS,CAAC4nC,uBAAuB,IAKtC7tB,GAAQ,wCAHoBpa,KAAKH,MAAzB22C,iBAG2Dr1C,KAAK,WAEpEgN,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEI4nC,uBAAuB,IAG3B95B,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,KAAK8X,SACpC9jB,EAAKtO,MAAMm1C,mDAKnB,IAAA9iB,EAAAlyB,KACYioC,EAA0BjoC,KAAKtC,MAA/BuqC,sBAER,OACI9oC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,sEACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,sCAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,QAAQ8vB,WAAS,GAA1E,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU++B,EAAuB94B,QAAS,kBAAM+iB,EAAKukB,0BAA0B7zC,MAAM,UACxFqlC,EAAwB,6BAA+B,kCAtDrCzlC,IAAMC,WAqElCC,OA3GA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA2EVzB,CAAmB6zC,ICxB5BG,IAzCUh0C,IAAW,CACvBsgB,KAAM,CACJzS,aAAc,qBAEhB0wB,UAAW,CACTt6B,gBAAiB,YALPjE,CAOXw+B,MAEUx+B,IAAW,SAAAoI,GAAK,MAAK,CAChCkY,KAAM,CACJlc,cAAe,OACfJ,SAAU,GACV3D,WAAY+H,EAAMs2B,WAAWC,kBAC7Br+B,WAAY,CACV,gBACA,qBACA,aACA,SACA,mBACA,QACA,aACA,sBACA,mBACA,qBACAs+B,KAAK,KACPz1B,UAAW,CACTjJ,MAAO,UACPuG,QAAS,GAEXo4B,aAAc,CACZ3+B,MAAO,UACPG,WAAY+H,EAAMs2B,WAAWI,kBAE/BC,UAAW,CACT7+B,MAAO,YAGXiqB,SAAU,KA7BCnqB,CA8BT,SAAA7C,GAAK,OAAIV,EAAAC,EAAAC,cAACqiC,GAAAtiC,EAADpB,OAAAC,OAAA,CAAK0jC,eAAa,GAAK9hC,kBAIlC,SAAA62C,EAAY72C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA02C,IACI52C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA04C,GAAAv2C,KAAAH,KAAMH,KAsCV01C,iBAAmB,SAAC/b,GAEhB15B,EAAKO,SAAS,CAAEm1C,YAAahc,KAzCjC15B,EA6CA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA3DJA,EAAKpC,MACL,CAEIb,MAAO,KACPwe,UAAU,EAGViY,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXmiB,YAAY,EACZC,WAAY,GAGZvN,MAAO,GACPyO,sBAAuB,MApB/B72C,mFA0BIE,KAAK42C,2EAKL52C,KAAKK,SAAS,CAAEo1C,WAAY,MAAOD,YAAY,0DAGrBmB,GAE1B32C,KAAKK,SAAS,CAAEs2C,sBAAuBA,EAAuBlB,WAAY,SAAUD,YAAY,kDA+BpG,IAAArnC,EAAAnO,KAOI+Z,GAAO,6BAHG,IAAI9X,IAAIC,OAAOC,SAASC,MAChBC,aAAarD,IAAI,OAEYmC,KAAK,SAACG,GAIjD,IAFA,IAAIinC,EAAY,GAEP9a,EAAI,EAAGA,EAAInsB,EAAO6Y,KAAKvc,OAAQ6vB,IACxC,CACI,IAAI+a,EAAclnC,EAAO6Y,KAAKsT,GAE1Bgb,EACJ,CACIrL,GAAIoL,EAAYpL,GAChBsL,UAAWF,EAAYE,UACvBC,UAAWH,EAAY4N,SAAW,MAAQ5N,EAAY6N,YAG1D9N,EAAUpb,KAAKsb,GAInBt6B,EAAK9N,SACL,CACIgb,UAAU,EACV6sB,MAAOK,KAGf,SAAC1rC,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,KAAK8X,6CAM9B,IAAAC,EAAAlyB,KAAAoO,EACgCpO,KAAKtC,MAAzBb,EADZuR,EACYvR,MAAOwe,EADnBjN,EACmBiN,SADnB8W,EAEiDnyB,KAAKtC,MAA1C01B,EAFZjB,EAEYiB,WAAYC,EAFxBlB,EAEwBkB,UAAWC,EAFnCnB,EAEmCmB,UAFnCyG,EAGuC/5B,KAAKtC,MAAhC83C,EAHZzb,EAGYyb,WAAYC,EAHxB1b,EAGwB0b,WAHxBzX,EAI6Ch+B,KAAKtC,MAAtCwqC,EAJZlK,EAIYkK,MAAOyO,EAJnB3Y,EAImB2Y,sBAEPzsC,EAAYlK,KAAKH,MAAjBqK,QAER,IAAKmR,EAED,OAAOlc,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,8BAEpC,GAAI9Z,EAGL,OAAOsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIxE,IACIm2C,EADM,IAAI/wC,IAAIC,OAAOC,SAASC,MAChBC,aAAarD,IAAI,MAEnC,OACIG,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAMgO,EAAK7xB,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM8nC,EAAYnrC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAM2b,EAAKqjB,iBAAiBC,IAAannB,kBAAgB,oBAAoB9I,WAAW,GAC1J,WACE,OAAQkwB,GACJ,IAAK,MACD,OAAOt2C,EAAAC,EAAAC,cAACw3C,GAAD,CACK7D,QAASA,EACT6B,gBAAiB,WAAQ3iB,EAAKqjB,iBAAiBC,GAAatjB,EAAK1M,iBAAiB,UAAW,yBAA0B0M,EAAK0kB,uBAC5H9B,cAAe,SAACt4C,GAAD,OAAa01B,EAAK1M,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAM9iB,EAAKqjB,iBAAiBC,MAE3D,IAAK,SACD,OAAOr2C,EAAAC,EAAAC,cAACy3C,GAAD,CACKN,gBAAiBG,EAAsBvZ,GACvCyX,gBAAiB,WAAQ3iB,EAAKqjB,iBAAiBC,GAAatjB,EAAK1M,iBAAiB,UAAW,2BAA4B0M,EAAK0kB,uBAC9H9B,cAAe,SAACt4C,GAAD,OAAa01B,EAAK1M,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAM9iB,EAAKqjB,iBAAiBC,MAE3D,QACI,OAAOr2C,EAAAC,EAAAC,cAAA,aAjBjB,IAuBNF,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,kBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,2BAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAACgqC,GAAAjqC,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,yBAA0BpF,KAAWC,aAAakF,mBAEzFhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,EAAC4F,QAAS,kBAAM+iB,EAAK6kB,+BACzD53C,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,QAGN,KAGND,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,MAAO,cACnBwH,iBAAkB,CAAC,YAAa,aAChCvH,UAAW4nB,EACXrlC,UAAW,EACXmmB,YAAY,EACZF,eAAgB,YAChBhB,sBAAuB,CAAC,aACxBG,uBAAwB,CAAC,aACzBW,sBAEI5T,KAAQI,8BAA8B,CAAC,yBAA0BpF,KAAWC,aAAakF,mBAEzF,SAAC+kB,GAAkBhI,EAAK8kB,8BAA8B9c,IACpD,iBApNH13B,IAAMC,YA8NtBC,OA5SA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA4QVzB,CAAmBg0C,yBC3Q5BO,eAEF,SAAAA,EAAYp3C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAi3C,IACIn3C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAi5C,GAAA92C,KAAAH,KAAMH,KAEDnC,MACL,CAEIw5C,kBAAkB,EAGlBC,gBAAiB,EACjBC,WAAY,GACZt5C,OAAQ,GACRu5C,iBAAkB,IAZ1Bv3C,4EAiBA,IAAAqO,EAAAnO,KACIA,KAAKK,SAAS,CACV62C,kBAAkB,IAF1B,IAAA9oC,EAMsEpO,KAAKtC,MAA/Dy5C,EANZ/oC,EAMY+oC,gBAGJ52C,EACJ,CACI+2C,OAAQH,EACRI,WAZRnpC,EAM6BgpC,WAOrBI,OAbRppC,EAMyCtQ,OAQjC25C,iBAdRrpC,EAMiDipC,iBASzCK,QAAS13C,KAAKH,MAAMmzC,SAGxB,GAAIhzC,KAAKH,MAAM83C,sBAAsB1sB,SAASmlB,OAAO+G,IAUjD,OARAn3C,KAAKH,MAAMi1C,cAAc,6CAEzB90C,KAAKK,SACL,CAEI62C,kBAAkB,IAO1B78B,GAAY,sBAAuB9Z,GAAaY,KAAK,WAEjDgN,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEI62C,kBAAkB,IAGtB/oC,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,yCAKvC,IAAA+X,EAAAlyB,KACYk3C,EAAqBl3C,KAAKtC,MAA1Bw5C,iBADZ/kB,EAEqDnyB,KAAKtC,MAA9C05C,EAFZjlB,EAEYilB,WAAYt5C,EAFxBq0B,EAEwBr0B,OAAQu5C,EAFhCllB,EAEgCklB,iBAE5B,OACIl4C,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBJ,EAAK6iB,eAC7C51C,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,mBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,oBACVhY,GAAG,oBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAC82C,gBAAiB5vB,KAEjDX,WAAY,CACRggB,QAAS,sBACTpI,UAAW,EACXn4B,MAAO,yCACPmsB,aAAc,EACdE,WAAW,KAInBvzB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd5C,UAAU,MACVC,YAAY,QACZF,OAAQ5vB,KAAKH,MAAM+3C,mBAAmBC,YACtCloB,cAAeynB,EACfrwB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAC+2C,WAAY7vB,EAAOzpB,OAAQ,QAI7D,WACE,OAAQs5C,GACJ,IAAK,uBACD,OAAOj4C,EAAAC,EAAAC,cAAA,YAEX,IAAK,cACG,OAAOF,EAAAC,EAAAC,cAACszB,GAAD,CACKjM,UAAU,sBACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQsC,EAAKryB,MAAM+3C,mBAAmBxD,SACtCzkB,cAAe7xB,EACfipB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACvC,OAAQypB,OAI5D,IAAK,gBACG,OAAOpoB,EAAAC,EAAAC,cAACszB,GAAD,CACKjM,UAAU,wBACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQsC,EAAKryB,MAAM+3C,mBAAmB9Q,WACtCnX,cAAe7xB,EACfipB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACvC,OAAQypB,OAI5D,IAAK,qBACG,OAAOpoB,EAAAC,EAAAC,cAAA,YAEf,IAAK,aACG,OAAOF,EAAAC,EAAAC,cAACszB,GAAD,CACKjM,UAAU,wBACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQsC,EAAKryB,MAAM+3C,mBAAmBE,WACtCnoB,cAAe7xB,EACfipB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACvC,OAAQypB,OAI5D,QACI,OAAOpoB,EAAAC,EAAAC,cAAA,aAzDjB,GA6DFF,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,oBACVhY,GAAG,oBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ5vB,KAAKH,MAAM+3C,mBAAmBtD,WACtC3kB,cAAe0nB,EACftwB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACg3C,iBAAkB9vB,QAI1DpoB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,SAAzD,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUguC,EAAkBn5C,KAAK,SAAS6E,MAAM,aACnDs0C,EAAmB,wBAA0B,4BAlMhC10C,IAAMC,WAmN7BC,OAzPA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAyNVzB,CAAmBu0C,ICnN5Bc,eAEF,SAAAA,EAAYl4C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA+3C,IACIj4C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA+5C,GAAA53C,KAAAH,KAAMH,KAEDnC,MACL,CAEIs6C,oBAAoB,EAGpBtpC,IAAK,EACLyoC,gBAAiB,EACjBC,WAAY,GACZt5C,OAAQ,GACRu5C,iBAAkB,IAb1Bv3C,mFAmBIE,KAAK00C,0DAUL,IANJ,IAAAha,EACmD16B,KAAKH,MAA5Co4C,EADZvd,EACYud,eAAgBL,EAD5Bld,EAC4Bkd,mBAGpBR,EAAaa,EAAeV,WAAaU,EAAeV,WAAa,GAEjE9pB,EAAI,EAAGA,EAAImqB,EAAmBC,YAAYj6C,OAAQ6vB,IAElDmqB,EAAmBC,YAAYpqB,GAAGyqB,QAAUd,IAE5CA,EAAaQ,EAAmBC,YAAYpqB,GAAGyD,KAIvDlxB,KAAKK,SAAS,CACVqO,GAAIupC,EAAe7a,GACnB+Z,gBAAiBc,EAAeX,OAChCF,WAAYA,EACZt5C,OAAQm6C,EAAeT,OAASS,EAAeT,OAAS,GACxDH,iBAAkBY,EAAeR,iBAAmBQ,EAAeR,iBAAmB,0CAK9F,IAAAtpC,EAAAnO,KACIA,KAAKK,SAAS,CACV23C,oBAAoB,IAF5B,IAAA5pC,EAM0EpO,KAAKtC,MAAnEgR,EANZN,EAMYM,GAAIyoC,EANhB/oC,EAMgB+oC,gBAGR52C,EACJ,CACI68B,GAAI1uB,EACJ4oC,OAAQH,EACRI,WAbRnpC,EAMiCgpC,WAQzBI,OAdRppC,EAM6CtQ,OASrC25C,iBAfRrpC,EAMqDipC,iBAU7CK,QAAS13C,KAAKH,MAAMmzC,SAIxB,GAAI5C,OAAO+G,KAAqBn3C,KAAKH,MAAMo4C,eAAeX,QAElDt3C,KAAKH,MAAM83C,sBAAsB1sB,SAASmlB,OAAO+G,IAUjD,OARAn3C,KAAKH,MAAMi1C,cAAc,6CAEzB90C,KAAKK,SACL,CAEI23C,oBAAoB,IAQhC39B,GAAY,yBAA0B9Z,GAAaY,KAAK,WAEpDgN,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEI23C,oBAAoB,IAGxB7pC,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,yCAKvC,IAAA+X,EAAAlyB,KACYg4C,EAAuBh4C,KAAKtC,MAA5Bs6C,mBADZ7lB,EAE0EnyB,KAAKtC,MAAnEgR,EAFZyjB,EAEYzjB,GAAIyoC,EAFhBhlB,EAEgBglB,gBAAiBC,EAFjCjlB,EAEiCilB,WAAYt5C,EAF7Cq0B,EAE6Cr0B,OAAQu5C,EAFrDllB,EAEqDklB,iBAEjD,OAAI3oC,GAAM,EAECvP,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,eAIrCxX,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBJ,EAAK6iB,eAC7C51C,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,sBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACkzB,GAAD,CACI7L,UAAU,oBACVhY,GAAG,oBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAC82C,gBAAiB5vB,KAEjDX,WAAY,CACRggB,QAAS,sBACTpI,UAAW,EACXn4B,MAAO,yCACPmsB,aAAc2kB,EACdzkB,WAAW,KAInBvzB,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd5C,UAAU,MACVC,YAAY,QACZF,OAAQ5vB,KAAKH,MAAM+3C,mBAAmBC,YACtCloB,cAAeynB,EACfrwB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAAC+2C,WAAY7vB,EAAOzpB,OAAQ,QAI7D,WACE,OAAQs5C,GACJ,IAAK,uBACD,OAAOj4C,EAAAC,EAAAC,cAAA,YAEX,IAAK,cACG,OAAOF,EAAAC,EAAAC,cAACszB,GAAD,CACKjM,UAAU,sBACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQsC,EAAKryB,MAAM+3C,mBAAmBxD,SACtCzkB,cAAe7xB,EACfipB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACvC,OAAQypB,OAI5D,IAAK,gBACG,OAAOpoB,EAAAC,EAAAC,cAACszB,GAAD,CACKjM,UAAU,wBACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQsC,EAAKryB,MAAM+3C,mBAAmB9Q,WACtCnX,cAAe7xB,EACfipB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACvC,OAAQypB,OAI5D,IAAK,qBACG,OAAOpoB,EAAAC,EAAAC,cAAA,YAEf,IAAK,aACG,OAAOF,EAAAC,EAAAC,cAACszB,GAAD,CACKjM,UAAU,wBACVhY,GAAG,SACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7C,OAAQsC,EAAKryB,MAAM+3C,mBAAmBE,WACtCnoB,cAAe7xB,EACfipB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACvC,OAAQypB,OAI5D,QACI,OAAOpoB,EAAAC,EAAAC,cAAA,aAzDjB,GA6DFF,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,oBACVhY,GAAG,oBACH+X,iBAAkB,CACdlB,WAAW,GAEfqK,OAAQ5vB,KAAKH,MAAM+3C,mBAAmBtD,WACtC3kB,cAAe0nB,EACftwB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACg3C,iBAAkB9vB,QAI1DpoB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,SAAzD,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU8uC,EAAoBj6C,KAAK,SAAS6E,MAAM,aACrDo1C,EAAqB,0BAA4B,+BA1OnCx1C,IAAMC,WA4P9BC,OAlSA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAkQVzB,CAAmBq1C,IC5P5BI,eAEF,SAAAA,EAAYt4C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAm4C,IACIr4C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAm6C,GAAAh4C,KAAAH,KAAMH,KAEDnC,MACL,CAEI06C,oBAAoB,GAN5Bt4C,qFAWA,IAAAqO,EAAAnO,KACIA,KAAKK,SAAS,CAAC+3C,oBAAoB,IAKnCh+B,GAAQ,uCAHiBpa,KAAKH,MAAtBw4C,cAGuDl3C,KAAK,WAEhEgN,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEI+3C,oBAAoB,IAGxBjqC,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,MAC/BhM,EAAKtO,MAAMm1C,mDAKnB,IAAA9iB,EAAAlyB,KACYo4C,EAAuBp4C,KAAKtC,MAA5B06C,mBAER,OACIj5C,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,sEACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,sCAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,QAAQ8vB,WAAS,GAA1E,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUkvC,EAAoBjpC,QAAS,kBAAM+iB,EAAKomB,uBAAuB11C,MAAM,UAClFw1C,EAAqB,0BAA4B,+BAtDjC51C,IAAMC,WAqEhCC,OA3GA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA2EVzB,CAAmBy1C,ICpC5BI,IAzCU71C,IAAW,CACvBsgB,KAAM,CACJzS,aAAc,qBAEhB0wB,UAAW,CACTt6B,gBAAiB,YALPjE,CAOXw+B,MAEUx+B,IAAW,SAAAoI,GAAK,MAAK,CAChCkY,KAAM,CACJlc,cAAe,OACfJ,SAAU,GACV3D,WAAY+H,EAAMs2B,WAAWC,kBAC7Br+B,WAAY,CACV,gBACA,qBACA,aACA,SACA,mBACA,QACA,aACA,sBACA,mBACA,qBACAs+B,KAAK,KACPz1B,UAAW,CACTjJ,MAAO,UACPuG,QAAS,GAEXo4B,aAAc,CACZ3+B,MAAO,UACPG,WAAY+H,EAAMs2B,WAAWI,kBAE/BC,UAAW,CACT7+B,MAAO,YAGXiqB,SAAU,KA7BCnqB,CA8BT,SAAA7C,GAAK,OAAIV,EAAAC,EAAAC,cAACqiC,GAAAtiC,EAADpB,OAAAC,OAAA,CAAK0jC,eAAa,GAAK9hC,kBAIlC,SAAA04C,EAAY14C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAu4C,IACIz4C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAu6C,GAAAp4C,KAAAH,KAAMH,KAgGV01C,iBAAmB,SAAC/b,GAEhB15B,EAAKO,SAAS,CAAEm1C,YAAahc,KAnGjC15B,EAqHA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MAnIJA,EAAKpC,MACL,CAEIb,MAAO,KACP27C,iBAAiB,EACjB7V,cAAc,EAGdrP,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXukB,mBAAqB,KAGrBpC,YAAY,EACZC,WAAY,GAGZgD,eAAgB,GAChBC,mBAAoB,MAxB5B54C,mFA8BIE,KAAK24C,wBACL34C,KAAK44C,oEAIT,IAAAzqC,EAAAnO,KAEI+Z,GAAO,wBAAwB5Y,KAAK,SAACG,GAEjC6M,EAAK9N,SACL,CACIsiC,cAAa,EACbiV,mBAAoBt2C,EAAO6Y,QAGnC,SAACtd,GAEGsR,EAAK9N,SACL,CACIsiC,cAAc,EACd9lC,MAAOA,EAAMsd,qDAMzB,IAAA+X,EAAAlyB,KAOI+Z,GAAO,+BAHG,IAAI9X,IAAIC,OAAOC,SAASC,MAChBC,aAAarD,IAAI,OAEcmC,KAAK,SAACG,GAGnD4wB,EAAK7xB,SACL,CACIm4C,iBAAgB,EAChBC,eAAgBn3C,EAAO6Y,QAG/B,SAACtd,GAEGq1B,EAAK7xB,SACL,CACIm4C,iBAAiB,EACjB37C,MAAOA,EAAMsd,KAAK8X,8DAO1BjyB,KAAKK,SAAS,CAAEo1C,WAAY,MAAOD,YAAY,uDAGxBkD,GAEvB14C,KAAKK,SAAS,CAAEq4C,mBAAoBA,EAAoBjD,WAAY,SAAUD,YAAY,uDAGnEkD,GAEvB14C,KAAKK,SAAS,CAAEq4C,mBAAoBA,EAAoBjD,WAAY,SAAUD,YAAY,2DAc1F,IALJ,IACYiD,EAAmBz4C,KAAKtC,MAAxB+6C,eAEJI,EAAoB,GAEhBprB,EAAI,EAAGA,EAAIgrB,EAAe76C,OAAQ6vB,IAEtCorB,EAAkBprB,GAAKgrB,EAAehrB,GAAG6pB,OAG7C,OAAOuB,mCA0BX,IAAAhf,EAAA75B,KAAAoO,EACsDpO,KAAKtC,MAA9Cb,EADbuR,EACavR,MAAO27C,EADpBpqC,EACoBoqC,gBAAiB7V,EADrCv0B,EACqCu0B,aADrCxQ,EAEiDnyB,KAAKtC,MAA1C01B,EAFZjB,EAEYiB,WAAYC,EAFxBlB,EAEwBkB,UAAWC,EAFnCnB,EAEmCmB,UACvBskB,EAAuB53C,KAAKtC,MAA5Bk6C,mBAHZ7d,EAIuC/5B,KAAKtC,MAAhC83C,EAJZzb,EAIYyb,WAAYC,EAJxB1b,EAIwB0b,WAJxBzX,EAKmDh+B,KAAKtC,MAA5C+6C,EALZza,EAKYya,eAAgBC,EAL5B1a,EAK4B0a,mBAEhBxuC,EAAYlK,KAAKH,MAAjBqK,QAER,IAAKsuC,IAAoB7V,EAErB,OAAOxjC,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,gCAEpC,GAAI9Z,EAGL,OAAOsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIxE,IACIm2C,EADM,IAAI/wC,IAAIC,OAAOC,SAASC,MAChBC,aAAarD,IAAI,MAEnC,OACIG,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM2V,EAAKx5B,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM8nC,EAAYnrC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMsjB,EAAK0b,iBAAiBC,IAAannB,kBAAgB,oBAAoB9I,WAAW,GAC1J,WACE,OAAQkwB,GACJ,IAAK,MACD,OAAOt2C,EAAAC,EAAAC,cAACy5C,GAAD,CACK9F,QAASA,EACT4E,mBAAoBA,EACpBD,sBAAuB9d,EAAKkf,+BAC5BlE,gBAAiB,WAAQhb,EAAK0b,iBAAiBC,GAAa3b,EAAKrU,iBAAiB,UAAW,0BAA2BqU,EAAK+e,oBAAqB/e,EAAK8e,yBACvJ7D,cAAe,SAACt4C,GAAD,OAAaq9B,EAAKrU,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAMnb,EAAK0b,iBAAiBC,MAE3D,IAAK,SACD,OAAOr2C,EAAAC,EAAAC,cAAC25C,GAAD,CACKhG,QAASA,EACT4E,mBAAoBA,EACpBD,sBAAuB9d,EAAKkf,+BAC5Bd,eAAgBS,EAChB7D,gBAAiB,WAAQhb,EAAK0b,iBAAiBC,GAAa3b,EAAKrU,iBAAiB,UAAW,4BAA6BqU,EAAK+e,oBAAqB/e,EAAK8e,yBACzJ7D,cAAe,SAACt4C,GAAD,OAAaq9B,EAAKrU,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAMnb,EAAK0b,iBAAiBC,MAE3D,IAAK,SACD,OAAOr2C,EAAAC,EAAAC,cAAC45C,GAAD,CACKZ,aAAcK,EAAmBtb,GACjCyX,gBAAiB,WAAQhb,EAAK0b,iBAAiBC,GAAa3b,EAAKrU,iBAAiB,UAAW,4BAA6BqU,EAAK+e,oBAAqB/e,EAAK8e,yBACzJ7D,cAAe,SAACt4C,GAAD,OAAaq9B,EAAKrU,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAMnb,EAAK0b,iBAAiBC,MAE3D,QACI,OAAOr2C,EAAAC,EAAAC,cAAA,aA7BjB,IAmCNF,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,oBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,wDAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAAC65C,GAAA95C,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,yBAA0BpF,KAAWC,aAAakF,mBAEzFhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,EAAC4F,QAAS,kBAAM0qB,EAAKsf,4BACzDh6C,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,QAGN,KAGND,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,SAAU,cAAe,SAAU,oBAC/CwH,iBAAkB,CAAC,SAAU,aAAc,SAAU,oBACrDvH,UAAWm4B,EACXzvB,YAAY,EACZF,eAAgB,SAChBF,sBAEI5T,KAAQI,8BAA8B,CAAC,yBAA0BpF,KAAWC,aAAakF,mBAEzF,SAAC+kB,GAAkBL,EAAKuf,2BAA2Blf,IAEnD,KAEJrR,oBAEI7T,KAAQI,8BAA8B,CAAC,yBAA0BpF,KAAWC,aAAakF,mBAEzF,SAAC+kB,GAAkBL,EAAKwf,2BAA2Bnf,IAEnD,iBApQH13B,IAAMC,YA8QpBC,OA5VA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA4TVzB,CAAmB61C,ICrU5Be,eAEF,SAAAA,EAAYz5C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAs5C,IACIx5C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAs7C,GAAAn5C,KAAAH,KAAMH,KAEDnC,MACL,CAEIisC,eAAe,EAGf4P,mBAAoB,GAT5Bz5C,4EAcA,IAAAqO,EAAAnO,KACIA,KAAKK,SAAS,CAACspC,eAAe,IAa9BtvB,GAAY,uBANZ,CACIm/B,UAL0Bx5C,KAAKtC,MAA3B67C,kBAMJ5F,QAAU3zC,KAAKH,MAAMmzC,UAIwB7xC,KAAK,WAElDgN,EAAK9N,SACL,CACIspC,eAAe,IAGnBx7B,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEIspC,eAAe,IAGnBx7B,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,yCAKvC,IAAA+X,EAAAlyB,KACY2pC,EAAkB3pC,KAAKtC,MAAvBisC,cACA4P,EAAsBv5C,KAAKtC,MAA3B67C,kBAER,OACIp6C,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBJ,EAAK6iB,eAC7C51C,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,yBACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,wEAIAD,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,iBACVhY,GAAG,iBACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd7L,WAAY,CACR8L,WAAW,GAEf9C,OAAQ5vB,KAAKH,MAAMiqC,YACnBja,UAAU,KACVC,YAAY,cACZH,cAAe4pB,EACfxyB,cAEI,SAACQ,GAAY2K,EAAK7xB,SAAS,CAACk5C,kBAAmBhyB,QAK3DpoB,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,SAAzD,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUygC,EAAe5rC,KAAK,SAAS6E,MAAM,aAChD+mC,EAAgB,uBAAyB,2BA3F/BnnC,IAAMC,WA2G1BC,OAjJA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAiHVzB,CAAmB42C,IC5G5BG,eAEF,SAAAA,EAAY55C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAy5C,IACI35C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAy7C,GAAAt5C,KAAAH,KAAMH,KAEDnC,MACL,CAEIksC,iBAAiB,GANzB9pC,+EAWA,IAAAqO,EAAAnO,KACIA,KAAKK,SAAS,CAACupC,iBAAiB,IADpC,IAAAlP,EAG2C16B,KAAKH,MAS5Cwa,GAAY,0BANZ,CACIm/B,UAPR9e,EAGY6e,kBAKJ5F,QARRjZ,EAG+BsY,UASyB7xC,KAAK,WAErDgN,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEIupC,iBAAiB,IAGrBz7B,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,KAAK8X,SACpC9jB,EAAKtO,MAAMm1C,mDAKnB,IAAA9iB,EAAAlyB,KACY4pC,EAAoB5pC,KAAKtC,MAAzBksC,gBAER,OACIzqC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,8DACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,sCAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,QAAQ8vB,WAAS,GAA1E,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU0gC,EAAiBz6B,QAAS,kBAAM+iB,EAAKmY,iBAAiBznC,MAAM,UACzEgnC,EAAkB,sBAAwB,2BA5D7BpnC,IAAMC,WA4E7BC,OAlHA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAkFVzB,CAAmB+2C,ICrB5BC,IAzCUh3C,IAAW,CACvBsgB,KAAM,CACJzS,aAAc,qBAEhB0wB,UAAW,CACTt6B,gBAAiB,YALPjE,CAOXw+B,MAEUx+B,IAAW,SAAAoI,GAAK,MAAK,CAChCkY,KAAM,CACJlc,cAAe,OACfJ,SAAU,GACV3D,WAAY+H,EAAMs2B,WAAWC,kBAC7Br+B,WAAY,CACV,gBACA,qBACA,aACA,SACA,mBACA,QACA,aACA,sBACA,mBACA,qBACAs+B,KAAK,KACPz1B,UAAW,CACTjJ,MAAO,UACPuG,QAAS,GAEXo4B,aAAc,CACZ3+B,MAAO,UACPG,WAAY+H,EAAMs2B,WAAWI,kBAE/BC,UAAW,CACT7+B,MAAO,YAGXiqB,SAAU,KA7BCnqB,CA8BT,SAAA7C,GAAK,OAAIV,EAAAC,EAAAC,cAACqiC,GAAAtiC,EAADpB,OAAAC,OAAA,CAAK0jC,eAAa,GAAK9hC,kBAIlC,SAAA65C,EAAY75C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA05C,IACI55C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA07C,GAAAv5C,KAAAH,KAAMH,KA2CV01C,iBAAmB,SAAC/b,GAEhB15B,EAAKO,SAAS,CAAEm1C,YAAahc,KA9CjC15B,EAkDA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MAhEJA,EAAKpC,MACL,CAEIb,MAAO,KACP6sC,qBAAqB,EACrBiQ,qBAAqB,EAGrBrmB,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXmiB,YAAY,EACZC,WAAY,GAGZ3L,YAAa,GAGb6H,SAAU,GACViI,gBAAiB,MAxBzB95C,mFA8BIE,KAAKkqC,iBACLlqC,KAAK65C,iEAKL75C,KAAKK,SAAS,CAAEo1C,WAAY,MAAOD,YAAY,qDAG1BoE,GAErB55C,KAAKK,SAAS,CAAEu5C,gBAAiBA,EAAiBnE,WAAY,SAAUD,YAAY,6CA+BxF,IAAArnC,EAAAnO,KAESgV,KAAQC,8BAA8B,CAAC,yBAA0BjF,KAAWC,aAAakF,mBAY9F4E,GAAO,gBAAgB5Y,KAAK,SAACG,GAGzB6M,EAAK9N,SACL,CACIqpC,qBAAqB,EACrBI,YAAaxoC,EAAO6Y,QAG5B,SAACtd,GAEGsR,EAAK9N,SACL,CACIqpC,qBAAqB,EACrB7sC,MAAOA,EAAMsd,SAxBjBna,KAAKK,SACL,CACIqpC,qBAAqB,EACrBI,YAAa,8CA2BzB,IAAA5X,EAAAlyB,KAKI+Z,GAAO,gCAHG,IAAI9X,IAAIC,OAAOC,SAASC,MAChBC,aAAarD,IAAI,OAEemC,KAAK,SAACG,GAGpD4wB,EAAK7xB,SACL,CACIs5C,qBAAqB,EACrBhI,SAAUrwC,EAAO6Y,QAGzB,SAACtd,GAEGq1B,EAAK7xB,SACL,CACIs5C,qBAAqB,EACrB98C,MAAOA,EAAMsd,0CAMzB,IAAA0f,EAAA75B,KAAAoO,EACgEpO,KAAKtC,MAAzDb,EADZuR,EACYvR,MAAO6sC,EADnBt7B,EACmBs7B,oBAAqBiQ,EADxCvrC,EACwCurC,oBADxCxnB,EAEiDnyB,KAAKtC,MAA1C01B,EAFZjB,EAEYiB,WAAYC,EAFxBlB,EAEwBkB,UAAWC,EAFnCnB,EAEmCmB,UAFnCyG,EAGuC/5B,KAAKtC,MAAhC83C,EAHZzb,EAGYyb,WAAYC,EAHxB1b,EAGwB0b,WACZ3L,EAAgB9pC,KAAKtC,MAArBosC,YAJZ9L,EAK0Ch+B,KAAKtC,MAAnCi0C,EALZ3T,EAKY2T,SAAUiI,EALtB5b,EAKsB4b,gBAEV1vC,EAAYlK,KAAKH,MAAjBqK,QAER,IAAKw/B,IAAwBiQ,EAEzB,OAAOx6C,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,wBAEpC,GAAI9Z,EAGL,OAAOsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIxE,IACIm2C,EADM,IAAI/wC,IAAIC,OAAOC,SAASC,MAChBC,aAAarD,IAAI,MAEnC,OACIG,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM2V,EAAKx5B,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM8nC,EAAYnrC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMsjB,EAAK0b,iBAAiBC,IAAannB,kBAAgB,oBAAoB9I,WAAW,GAC1J,WACE,OAAQkwB,GACJ,IAAK,MACD,OAAOt2C,EAAAC,EAAAC,cAACy6C,GAAD,CACK9G,QAASA,EACTlJ,YAAaA,EACb+K,gBAAiB,WAAQhb,EAAK0b,iBAAiBC,GAAa3b,EAAKrU,iBAAiB,UAAW,kBAAmBqU,EAAKggB,kBACrH/E,cAAe,SAACt4C,GAAD,OAAaq9B,EAAKrU,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAMnb,EAAK0b,iBAAiBC,MAE3D,IAAK,SACD,OAAOr2C,EAAAC,EAAAC,cAAC06C,GAAD,CACKR,kBAAmBK,EAAgBxc,GACnC4V,QAASA,EACT6B,gBAAiB,WAAQhb,EAAK0b,iBAAiBC,GAAa3b,EAAKrU,iBAAiB,UAAW,oBAAqBqU,EAAKggB,kBACvH/E,cAAe,SAACt4C,GAAD,OAAaq9B,EAAKrU,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAMnb,EAAK0b,iBAAiBC,MAE3D,QACI,OAAOr2C,EAAAC,EAAAC,cAAA,aAnBjB,IAyBNF,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,YACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,2BAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAACsd,GAAAvd,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,yBAA0BpF,KAAWC,aAAakF,mBAEzFhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,EAAC4F,QAAS,kBAAM0qB,EAAKmgB,0BACzD76C,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,QAGN,KAGND,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,MAAO,eACnBwH,iBAAkB,CAAC,OAAQ,eAC3BvH,UAAWqxB,EACX9uC,UAAW,EACX+lB,sBAEI5T,KAAQI,8BAA8B,CAAC,yBAA0BpF,KAAWC,aAAakF,mBAEzF,SAAC+kB,GAAkBL,EAAKogB,yBAAyB/f,IAC/C,KAENlR,YAAY,EACZF,eAAgB,OAChBd,iBAAkB,CAAC,oBA5OrBxlB,IAAMC,YAqPjBC,OAnUA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBAmSVzB,CAAmBg3C,IChT5B39B,GAA4B,CAC9B,uBAGEZ,GAA2B,CAC7B,wBACA,yBAIE++B,eAEF,SAAAA,EAAYr6C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAk6C,IACIp6C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAk8C,GAAA/5C,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,GANlBvb,mFAaSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBAAuBH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,oBAEzMnV,KAAKK,SACL,CACIxD,MAAO,kBAIfmD,KAAKK,SACL,CACIgb,UAAU,qCAKlB,IAAAjN,EACgCpO,KAAKtC,MAAzB2d,EADZjN,EACYiN,SAAUxe,EADtBuR,EACsBvR,MAElB,OAAKwe,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAAC86C,GAAD,OAGJh7C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAAC+6C,GAAD,OAEJj7C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAACg7C,GAAD,OAGJl7C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAACi7C,GAAD,OAEJn7C,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,GAC1Cre,EAAAC,EAAAC,cAAA,eA1BLF,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,iBAAiBC,YAAU,WApCvCpU,IAAMC,WAsE5BC,OA9GA,CACXuY,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAqFL5B,CAAmBw3C,8CCzE5BK,eAEF,SAAAA,EAAY16C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAu6C,IACIz6C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAu8C,GAAAp6C,KAAAH,KAAMH,KAgEV80B,qBAAuB,WAEnB,IAAIJ,EAAoB,GAEpB3S,EAAc,GACdiT,EAAYnf,SAASof,eAAe,eACpC0lB,EAAqB16C,EAAKD,MAAM26C,mBAAmBzpC,IAAI,SAAUslB,GACjE,OAAOA,EAAKokB,WAGhB,GAAI5lB,EAAUE,OAASF,EAAUE,MAAMn3B,OAAS,EAChD,CAGI,IAFA,IAAIo3B,EAAW,EAENvH,EAAI,EAAGA,EAAIoH,EAAUE,MAAMn3B,OAAQ6vB,IAExCuH,GAAYC,YAAYJ,EAAUE,MAAMtH,GAAGrjB,KAAO,KAAS8qB,QAAQ,IAE/DslB,EAAmBvvB,SAAS4J,EAAUE,MAAMtH,GAAG5c,QAI3C+Q,GAFgB,KAAhBA,EAEeiT,EAAUE,MAAMtH,GAAG5c,KAInB,KAAOgkB,EAAUE,MAAMtH,GAAG5c,MAKrD0jB,EAAoBM,EAAUE,MAAMn3B,OAAS,oBAAsBo3B,EAAW,aAI9ET,EAAoBM,EAAUtN,MAAM4D,MAAO,MAAOgK,MAAQ,KAAOF,YAAYJ,EAAUE,MAAM,GAAG3qB,KAAO,KAAS8qB,QAAQ,IAAM,QAE1HslB,EAAmBvvB,SAAS4J,EAAUE,MAAM,GAAGlkB,QAE/C+Q,GAAeiT,EAAUE,MAAM,GAAGlkB,MAI1C/Q,EAAKO,SACL,CACIk0B,kBAAmBA,EACnB3S,YAAaA,EA3CK,oEA2C2BA,EAAc,MA5G/D9hB,EAAKpC,MACL,CAEIg9C,gBAAgB,EAEhBnmB,kBAAmB,uBACnB3S,YAAa,IATrB9hB,4EAcA,IAAAqO,EAAAnO,KACIA,KAAKK,SAAS,CAACq6C,gBAAgB,IAO/B,IAJA,IAAIzkB,EAAsB,IAAIC,SAE1BE,EAAgB1gB,SAASof,eAAe,eAAeC,MAElDtH,EAAI,EAAGA,EAAI2I,EAAcx4B,OAAQ6vB,IAAK,CAC3C,IAAI4I,EAAOD,EAAc3I,GAEzB,GAAI4I,EAAKjsB,KAAO,KAKZ,OAHApK,KAAKK,SAAS,CAAEq6C,gBAAgB,SAEhC16C,KAAKH,MAAMi1C,cAAc,iDAGxB,GAAiB,aAAbze,EAAKt4B,KAKV,OAHAiC,KAAKK,SAAS,CAAEq6C,gBAAgB,SAEhC16C,KAAKH,MAAMi1C,cAAc,yCAI7B7e,EAAoBE,OAAO,cAAeE,GAI9C5b,GAAgB,gBAAiBwb,GAAqB90B,KAAK,WAEvDgN,EAAK9N,SACL,CACIq6C,gBAAgB,IAGpBvsC,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEIq6C,gBAAgB,IAGpBvsC,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,yCAuDvC,IAAA+X,EAAAlyB,KACY06C,EAAmB16C,KAAKtC,MAAxBg9C,eADZtsC,EAE+CpO,KAAKtC,MAAxC62B,EAFZnmB,EAEYmmB,kBAAmB3S,EAF/BxT,EAE+BwT,YAE3B,OACIziB,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBJ,EAAK6iB,eAC7C51C,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,qBAAhB,4BACAvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KAEID,EAAAC,EAAAC,cAAA,wEAA+DF,EAAAC,EAAAC,cAAA,WAAKF,EAAAC,EAAAC,cAAA,WAApE,2BACwBF,EAAAC,EAAAC,cAAA,WADxB,qBAEkBF,EAAAC,EAAAC,cAAA,WAFlB,kBAIAF,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAAA,sCACAF,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAMuG,SAASof,eAAe,eAAewB,SAAS1zB,MAAM,YAAY+L,MAAO,CAACxK,YAAa,SACtGhF,EAAAC,EAAAC,cAACk3B,GAAAn3B,EAAD,MADR,mBAIAD,EAAAC,EAAAC,cAAA,YAAOk1B,GAGH3S,EAAcziB,EAAAC,EAAAC,cAAA,KAAGsP,MAAO,CAAC/L,MAAO,YAAYzD,EAAAC,EAAAC,cAACs7C,GAAAv7C,EAAD,MAAuBD,EAAAC,EAAAC,cAAA,WAArD,IAA4DuiB,GAAmB,KAGjGziB,EAAAC,EAAAC,cAAA,SAAOqP,GAAG,cAAc3Q,KAAK,OAAO4Q,MAAO,CAACnH,QAAQ,QAASgvB,SAAS,WAAWlP,SAAU,kBAAM4K,EAAKyC,4BAI9Gx1B,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,SAAzD,UAGAzD,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAUwxC,EAAgB38C,KAAK,SAAS6E,MAAM,aACjD83C,EAAiB,uBAAyB,2BA1J/Bl4C,IAAMC,WAyK3BC,OA/MA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA+KVzB,CAAmB63C,IC5K5BK,eAEF,SAAAA,EAAY/6C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA46C,IACI96C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA48C,GAAAz6C,KAAAH,KAAMH,KAEDnC,MACL,CAEIm9C,mBAAmB,GAN3B/6C,iFAWA,IAAAqO,EAAAnO,KACIA,KAAKK,SAAS,CAACw6C,mBAAmB,IAKlCzgC,GAAQ,kCAHkBpa,KAAKH,MAAvBi7C,eAGmD35C,KAAK,WAE5DgN,EAAKtO,MAAMg1C,mBAEf,SAACh4C,GAEGsR,EAAK9N,SACL,CAEIw6C,mBAAmB,IAGvB1sC,EAAKtO,MAAMi1C,cAAcj4C,EAAMsd,MAC/BhM,EAAKtO,MAAMm1C,mDAKnB,IAAA9iB,EAAAlyB,KACY66C,EAAsB76C,KAAKtC,MAA3Bm9C,kBAER,OACI17C,EAAAC,EAAAC,cAAA,WACIF,EAAAC,EAAAC,cAACivB,GAAAlvB,EAAD,CAAasP,GAAG,sBAAsB,oDACtCvP,EAAAC,EAAAC,cAACkvB,GAAAnvB,EAAD,KACID,EAAAC,EAAAC,cAACmvB,GAAApvB,EAAD,CAAmBsP,GAAG,4BAAtB,iCAIJvP,EAAAC,EAAAC,cAACovB,GAAArvB,EAAD,KACID,EAAAC,EAAAC,cAAC+P,GAAD,CAAQD,QAAS,kBAAM+iB,EAAKryB,MAAMm1C,iBAAiBpyC,MAAM,QAAQ8vB,WAAS,GAA1E,UAGAvzB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQlG,SAAU2xC,EAAmB1rC,QAAS,kBAAM+iB,EAAK6oB,mBAAmBn4C,MAAM,UAC7Ei4C,EAAoB,yBAA2B,8BAtDjCr4C,IAAMC,WAqE9BC,OA3GA,SAAAoI,GAAK,MAAK,CACrBmQ,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,MAGhB4vB,iBAAiBl2B,OAAA2M,EAAA,EAAA3M,CAAA,GAEZ8M,EAAME,YAAYC,KAAK,MAAQ,CAC5B7G,WAAY,mBACZD,YAAa,uBA2EVzB,CAAmBk4C,IC5D5B7+B,GAA4B,CAC9B,uBAGEZ,GAA2B,CAC7B,wBACA,wBACA,kCAGE6/B,eAEF,SAAAA,EAAYn7C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAg7C,IACIl7C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAg9C,GAAA76C,KAAAH,KAAMH,KAwCVo7C,cAAgB,WAGZlhC,GAAO,sBAAsB5Y,KAAK,SAACG,GAG/BxB,EAAKO,SACL,CACIgb,UAAU,EACV6/B,WAAY55C,EAAO6Y,QAG3B,SAACtd,GAEGiD,EAAKO,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,UA1DzBra,EAyEAy1C,iBAAmB,SAAC/b,GAEhB15B,EAAKO,SAAS,CAAEm1C,YAAahc,KA3EjC15B,EA+EA0lB,iBAAmB,SAAC4N,EAAYC,GAE5BvzB,EAAKO,SACL,CACIizB,WAAW,EACXF,WAAYA,EACZC,UAAWA,IAGfvzB,EAAKolB,aAAeH,WAChB,WAEI/kB,KAAKK,SACL,CACIizB,WAAW,KAEjBnO,KANFnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAOA,MA7FJA,EAAKpC,MACL,CAEIb,MAAO,KACPwe,UAAU,EAGViY,WAAW,EACXF,WAAY,UACZC,UAAW,GAGXmiB,YAAY,EACZC,WAAY,GAGZyF,WAAY,GACZC,kBAAmB,IApB3Br7C,mFA2BSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBAAuBH,KAAQI,8BAA8B+F,GAA0BnL,KAAWC,aAAakF,mBAW7MnV,KAAKi7C,gBATDj7C,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,mEAiCfmD,KAAKK,SAAS,CAAEo1C,WAAY,MAAOD,YAAY,sDAGzB2F,GACzBv+C,QAAQwjC,IAAI+a,GACTn7C,KAAKK,SAAS,CAAE86C,kBAAmBA,EAAmB1F,WAAY,SAAUD,YAAY,qCA+B5F,IAAArnC,EAAAnO,KACYkK,EAAYlK,KAAKH,MAAjBqK,QADZkE,EAEgCpO,KAAKtC,MAAzBb,EAFZuR,EAEYvR,MAAOwe,EAFnBjN,EAEmBiN,SAFnB8W,EAGiDnyB,KAAKtC,MAA1C01B,EAHZjB,EAGYiB,WAAYC,EAHxBlB,EAGwBkB,UAAWC,EAHnCnB,EAGmCmB,UAHnCyG,EAIuC/5B,KAAKtC,MAAhC83C,EAJZzb,EAIYyb,WAAYC,EAJxB1b,EAIwB0b,WAJxBzX,EAK8Ch+B,KAAKtC,MAAvCw9C,EALZld,EAKYkd,WAAYC,EALxBnd,EAKwBmd,kBAEpB,OAAK9/B,EAIIxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAA,WAEIF,EAAAC,EAAAC,cAAComB,GAAD,CACIxB,MAAM,KACNrhB,MAAOwwB,EACP52B,QAAS62B,EACT3lB,KAAM4lB,EACNzd,KAAMwP,KACNnB,kBAAmB,kBAAM/V,EAAK9N,SAAS,CAAEizB,WAAW,KACpDlQ,OAAK,IAITjkB,EAAAC,EAAAC,cAAC8uB,GAAA/uB,EAAD,CAAQsO,KAAM8nC,EAAYnrC,UAAWH,EAAQgqB,iBAAkB3d,QAAS,kBAAMpI,EAAKonC,iBAAiBC,IAAannB,kBAAgB,oBAAoB9I,WAAW,GAC1J,WACE,OAAQkwB,GACJ,IAAK,MACD,OAAOt2C,EAAAC,EAAAC,cAAC+7C,GAAD,CACKZ,mBAAoBU,EACpBrG,gBAAiB,WAAQ1mC,EAAKonC,iBAAiBC,GAAarnC,EAAKqX,iBAAiB,UAAW,0BAA2BrX,EAAK8sC,iBAC7HnG,cAAe,SAACt4C,GAAD,OAAa2R,EAAKqX,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAM7mC,EAAKonC,iBAAiBC,MAE3D,IAAK,SACD,OAAOr2C,EAAAC,EAAAC,cAACg8C,GAAD,CACKP,cAAeK,EACftG,gBAAiB,WAAQ1mC,EAAKonC,iBAAiBC,GAAarnC,EAAKqX,iBAAiB,UAAW,uBAAwBrX,EAAK8sC,iBAC1HnG,cAAe,SAACt4C,GAAD,OAAa2R,EAAKqX,iBAAiB,SAAUhpB,IAC5Dw4C,cAAe,kBAAM7mC,EAAKonC,iBAAiBC,MAE3D,QACI,OAAOr2C,EAAAC,EAAAC,cAAA,aAjBjB,IAsBNF,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAC+d,GAAD,KACIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,IAC1Bpe,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,iBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,8DAEJ9b,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,EAAG5O,MAAO,CAAC1H,UAAW,UAC9C9H,EAAAC,EAAAC,cAACi8C,GAAAl8C,EAAD,SAIZD,EAAAC,EAAAC,cAACwf,GAAD,KAEQ7J,KAAQI,8BAA8B,CAAC,kCAAmCpF,KAAWC,aAAakF,mBAElGhW,EAAAC,EAAAC,cAACiwB,GAAAlwB,EAAD,CAAYmwB,MAAM,SACdpwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAY+G,UAAQ,EAACJ,OAAK,EAAC4F,QAAS,kBAAMhB,EAAKotC,2BACzDp8C,EAAAC,EAAAC,cAACmwB,GAAApwB,EAAD,QAGN,KAGND,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,aACZwH,iBAAkB,CAAC,YACnBvH,UAAW46B,EACXhzB,aAAa,EAKbc,YAAY,EACZF,eAAgB,WAChBF,sBAEI5T,KAAQI,8BAA8B,CAAC,kCAAmCpF,KAAWC,aAAakF,mBAElG,SAAC+kB,GAAkB/rB,EAAKqtC,0BAA0BthB,EAAYugB,WAC5D,YAxFvBt7C,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,oCAjHVnU,IAAMC,WAqN9BC,OA7PA,CACXuY,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAoOL5B,CAAmBs4C,IC1O5Bj/B,GAA4B,CAC9B,uBAGEZ,GAA2B,CAC7B,sBACA,oCAGEsgC,eAEF,SAAAA,EAAY57C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAy7C,IACI37C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAy9C,GAAAt7C,KAAAH,KAAMH,KAmCV67C,mBAAqB,WACrB,IAAAttC,EACyDtO,EAAKpC,MAAlDi+C,EADZvtC,EACYutC,YAAaC,EADzBxtC,EACyBwtC,cAAeC,EADxCztC,EACwCytC,aAIpC/7C,EAAKO,SACL,CACIgb,UAAS,IA+BbtB,GAAO,wBAnBc,IAAjB6hC,GAAwC,MAAjBA,EAEH,IAIAA,GAa4B,KAVjC,IAAfD,GAAoC,MAAfA,EAEH,IAIAA,GAIsD,KA5BxD,IAAhBE,GAAsC,MAAhBA,EAEH,IAIAA,IAsB6E16C,KAAK,SAACG,GAGtGxB,EAAKO,SACL,CACIgb,UAAS,EACTygC,WAAYx6C,EAAO6Y,KACnBwhC,YAAa,IACbE,aAAc,IACdD,cAAe,MAIft6C,EAAO6Y,KAAKvc,OAAS,GAErBkC,EAAKi8C,cAAcz6C,EAAO6Y,KAAK,KAGvC,SAACtd,GAEGiD,EAAKO,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAML,aAlGzBsD,EAuGAi8C,cAAgB,SAACC,I/F1Bd,SAAoBhiC,GAGvB,IAAIC,EAAQlb,IAAQC,IAAI,QAExB,OAAO2B,MAAMC,IAAUC,WAAamZ,EACpC,CACIjZ,QACA,CACImZ,cAAiB,UAAYD,KAGpC9Y,KAAK,SAACC,GAEH,GAAwB,MAApBA,EAASG,OAET,MAAM,IAAI5E,MAAMyE,EAASG,QAG7B,OAAOH,EAASwZ,U+FWhBqhC,CAAW,sBAAwBD,EAAcE,SAAW,IAAMF,EAAcG,eAAeh7C,KAAK,SAACG,GAGjG,IAAIsZ,EAAO,IAAIwhC,KAAK,CAAC96C,GAAS,CAACvD,KAAO,SAAWi+C,EAAcG,gBAC3DE,EAAUp6C,IAAIy1B,gBAAgB9c,GAElC9a,EAAKO,SAAS,CACVi8C,kBAAmBD,IAIvB,IAAIE,EAAQ7mC,SAASof,eAAe,wBAEvB,MAATynB,GAEAA,EAAMC,QAGd,SAAC3/C,GAEGiD,EAAKO,SACL,CACIxD,MAAOA,EAAML,aA9HrBsD,EAAKpC,MACL,CACIm+C,aAAc,IACdF,YAAa,IACbC,cAAe,IACf/+C,MAAO,KACPwe,UAAU,EACVygC,WAAY,GAEZQ,kBAAmB,MAZ3Bx8C,mFAmBSkV,KAAQC,8BAA8B8G,GAA2B/L,KAAWC,aAAakF,oBAAuBH,KAAQC,8BAA8BkG,GAA0BnL,KAAWC,aAAakF,mBAW7MnV,KAAKK,SACL,CACIgb,UAAU,IAXVrb,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,mDA+GnB,IAAAsR,EAAAnO,KAAAmyB,EAC+DnyB,KAAKtC,MAAxDb,EADZs1B,EACYt1B,MAAOwe,EADnB8W,EACmB9W,SAAUygC,EAD7B3pB,EAC6B2pB,WAAYQ,EADzCnqB,EACyCmqB,kBAC7BpyC,EAAYlK,KAAKH,MAAjBqK,QAER,OAAKmR,EAIDxe,EAGOsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIpEsC,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAACoc,GAAD,KACItc,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WACdzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,mBACAxD,EAAAC,EAAAC,cAAA,KAAGgL,UAAWH,EAAQ+Q,mBAAtB,sCAIJ9b,EAAAC,EAAAC,cAACwf,GAAD,KACI1f,EAAAC,EAAAC,cAAC+d,GAAD,CAAekI,QAAQ,UACnBnmB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,GAAIhU,GAAI,GAAIiU,GAAI,GAAIlU,GAAI,GAAImU,GAAI,IAC1Cre,EAAAC,EAAAC,cAAA,SAAOqP,GAAG,uBAAuBC,MAAO,CAAChH,MAAM,QAAS80C,UAAQ,GAC5Dt9C,EAAAC,EAAAC,cAAA,UAAQqP,GAAG,SAASoI,IAAKwlC,EAAmBv+C,KAAK,eAErDoB,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQu2B,aAAxB,kEACAthC,EAAAC,EAAAC,cAAC+d,GAAD,KAEIje,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,GACxBpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,eACVhY,GAAG,eACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYpZ,EAAK9N,SAAS,CAAEu7C,cAAer0B,KAEhDqI,OAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAGnFzwB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,GACxBpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,aACVhY,GAAG,aACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYpZ,EAAK9N,SAAS,CAAEs7C,YAAap0B,KAE9CqI,OAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC7F,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAGlGzwB,EAAAC,EAAAC,cAACge,GAAD,CAAUC,GAAI,EAAGhU,GAAI,EAAGiU,GAAI,GACxBpe,EAAAC,EAAAC,cAACszB,GAAD,CACIjM,UAAU,cACVhY,GAAG,cACH+X,iBAAkB,CACdlB,WAAW,EACXkN,UAAU,GAEd1L,cAEI,SAACQ,GAAYpZ,EAAK9N,SAAS,CAAEw7C,aAAct0B,KAE/CqI,OAAQ,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAC7F,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,UAK5DzwB,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,OAAOuM,QAAS,kBAAMhB,EAAKutC,uBAAwB,oBAIzEv8C,EAAAC,EAAAC,cAACowB,GAAD,CACIlP,iBAAiB,UACjBF,UAAW,CAAC,UAAW,cAAe,YACtCwH,iBAAkB,CAAC,SAAU,eAAgB,gBAC7CvH,UAAWw7B,EACX5zB,aAAa,EACbO,kBAEI,SAACiE,GAEG,IAAI,IAAIe,EAAK,EAAGA,EAAIquB,EAAWl+C,OAAQ6vB,IAE/BquB,EAAWruB,GAAGyuB,UAAYxvB,EAASwvB,UAEnCJ,EAAWruB,GAAGivB,OAASZ,EAAWruB,GAAGivB,OAAOtwB,WAAW7oB,QAAQ,uBAAwB,IACvFu4C,EAAWruB,GAAGivB,OAASZ,EAAWruB,GAAGivB,OAAS,wBAI9CZ,EAAWruB,GAAGivB,OAASZ,EAAWruB,GAAGivB,OAAOtwB,WAAW7oB,QAAQ,uBAAwB,IAI/F4K,EAAK4tC,cAAcrvB,IAE3B1D,YAAY,EACZF,eAAgB,eAChBC,oBAAqB,OACrBhB,oBAAqB,CAAC,UACtBC,iBAAkB,CAAC,sBA7GhC7oB,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,iCAhJpBnU,IAAMC,WAuQpBC,OA9SA,CACXuY,kBAAmB,CACf6F,4BAA6B,CAC7Ble,MAAO,wBACPmD,OAAQ,IACRc,SAAU,OACVhE,UAAW,IACXI,aAAc,KAEd8d,0BAA2B,CAC3Bne,MAAO,YAGXD,eAAgB,CACZC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,OAChBoD,UAAW,CACX1D,MAAO,OACPiE,SAAU,MACV9D,WAAY,MACZuB,WAAY,OAqRL5B,CAAmB+4C,mCC/S5B5+B,GAAkC,CACpC,uBAyIW8/B,eApIX,SAAAA,EAAY98C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA28C,IACI78C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA2+C,GAAAx8C,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVuhC,gBAAiB,MAPzB98C,mFAcSkV,KAAQC,8BAA8B4H,GAAiC7M,KAAWC,aAAakF,mBAWpGnV,KAAK68C,qBATD78C,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,+DAUnB,IAAAsR,EAAAnO,KACI+Z,GAAO,yBAAyB5Y,KAAK,SAACG,GAGlC6M,EAAK9N,SACL,CACIgb,UAAU,EACVuhC,gBAAiBt7C,EAAO6Y,OAG5BhM,EAAK2uC,WAAWx7C,EAAO6Y,KAAK4iC,YAAaz7C,EAAO6Y,KAAK6iC,SAAU17C,EAAO6Y,KAAK8iC,WAE/E,SAACpgD,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,4CAKd+iC,EAAaC,EAAUC,GAG9B,IAKIC,EALAC,EAAcC,KAAKC,IAAI9nC,SAAS+nC,gBAAgBC,YAAax7C,OAAOqN,YAAc,GAGlFouC,EAASC,UAMTP,EADAC,EAAc,IACL,CACLv/C,KAAM,SACN2Q,GAAI0uC,EACJS,UAAWF,EAAOG,UAAUC,MAC5Bb,YAAaA,EACbC,SAAUA,EACVa,YAAaL,EAAOM,YAAYC,KAChCC,SACA,CACIC,mBAAmB,EACnBC,uBAAuB,IAKtB,CACLtgD,KAAM,SACN8/C,UAAWF,EAAOG,UAAUC,MAC5Bb,YAAaA,EACbC,SAAUA,EACVzuC,GAAI0uC,EACJY,YAAaL,EAAOM,YAAYC,KAChCC,SACA,CACIC,mBAAmB,EACnBC,uBAAuB,EACvBC,WAAYX,EAAOY,WAAWC,iBAM1C,IAAIC,EAAkBC,KAAE,oBAAoB,GAErB,MAAnBD,IAMSv8C,OAAO07C,QAAQe,MAAMF,EAAiBpB,GAC5C16B,OAAOhU,MAAMzI,OAAS,yCAQjC,IAAAkI,EACgCpO,KAAKtC,MAAzBb,EADZuR,EACYvR,MAER,OAHJuR,EACmBiN,SAMNxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIxEsC,EAAAC,EAAAC,cAAA,OAAKqP,GAAG,kBAAkBC,MAAO,CAAC3K,OAAO,UAT9B7E,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,gCAxHrBnU,IAAMC,WCJ5Boa,GAAkC,CACpC,sBACA,uCAyIW+hC,eApIX,SAAAA,EAAY/+C,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA4+C,IACI9+C,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA4gD,GAAAz+C,KAAAH,KAAMH,KAEDnC,MACL,CACIb,MAAO,KACPwe,UAAU,EACVuhC,gBAAiB,MAPzB98C,mFAcSkV,KAAQC,8BAA8B4H,GAAiC7M,KAAWC,aAAakF,mBAWpGnV,KAAK68C,qBATD78C,KAAKK,SACL,CACIgb,UAAU,EACVxe,MAAO,+DAUnB,IAAAsR,EAAAnO,KACI+Z,GAAO,mBAAmB5Y,KAAK,SAACG,GAG5B6M,EAAK9N,SACL,CACIgb,UAAU,EACVuhC,gBAAiBt7C,EAAO6Y,OAG5BhM,EAAK2uC,WAAWx7C,EAAO6Y,KAAK4iC,YAAaz7C,EAAO6Y,KAAK6iC,SAAU17C,EAAO6Y,KAAK8iC,WAE/E,SAACpgD,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,EAAMsd,4CAKd+iC,EAAaC,EAAUC,GAG9B,IAKIC,EALAC,EAAcC,KAAKC,IAAI9nC,SAAS+nC,gBAAgBC,YAAax7C,OAAOqN,YAAc,GAGlFouC,EAASC,UAMTP,EADAC,EAAc,IACL,CACLv/C,KAAM,SACN2Q,GAAI0uC,EACJS,UAAWF,EAAOG,UAAUC,MAC5Bb,YAAaA,EACbC,SAAUA,EACVa,YAAaL,EAAOM,YAAYC,KAChCC,SACA,CACIC,mBAAmB,EACnBC,uBAAuB,IAKtB,CACLtgD,KAAM,SACN8/C,UAAWF,EAAOG,UAAUC,MAC5Bb,YAAaA,EACbC,SAAUA,EACVzuC,GAAI0uC,EACJY,YAAaL,EAAOM,YAAYC,KAChCC,SACA,CACIC,mBAAmB,EACnBC,uBAAuB,EACvBC,WAAYX,EAAOY,WAAWC,iBAM1C,IAAIC,EAAkBC,KAAE,oBAAoB,GAErB,MAAnBD,IAMSv8C,OAAO07C,QAAQe,MAAMF,EAAiBpB,GAC5C16B,OAAOhU,MAAMzI,OAAS,yCAQjC,IAAAkI,EACgCpO,KAAKtC,MAAzBb,EADZuR,EACYvR,MAER,OAHJuR,EACmBiN,SAMNxe,EAGEsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,IAIxEsC,EAAAC,EAAAC,cAAA,OAAKqP,GAAG,kBAAkBC,MAAO,CAAC3K,OAAO,UAT9B7E,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,0CAxHbnU,IAAMC,WC2oB3Bo8C,GAlmBS,CAGtB,CACE3tC,KAAM,aACNL,KAAM,OACNgF,KAAMipC,KACNC,UAAWC,GACX1pC,YAAa,KACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,IAIrB,CACEnE,KAAM,SACNL,KAAM,QACNgF,KAAMopC,KACNF,UAAWG,GACX5pC,YAAa,KACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,aACA,oBACA,eACA,8BAGJ,CACEnE,KAAM,aACNL,KAAM,WACNgF,KAAM,KACNkpC,UAAWI,GACX7pC,YAAa,SACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,aACA,oBACA,8BAGJ,CACEnE,KAAM,gBACNL,KAAM,eACNgF,KAAM,KACNkpC,UAAWK,GACX9pC,YAAa,SACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,aACA,oBACA,8BAGJ,CACEnE,KAAM,gBACNL,KAAM,SACNgF,KAAM,KACNkpC,UAAWroB,GACXphB,YAAa,SACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,aACA,oBACA,eACA,8BAGJ,CACEnE,KAAM,sBACNL,KAAM,SACNgF,KAAM,KACNkpC,UAAWvpB,GACXlgB,YAAa,SACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,aACA,oBACA,eACA,8BAIJ,CACEnE,KAAM,aACNL,KAAM,YACNgF,KAAMwpC,KACNN,UAAW7nB,GACX5hB,YAAa,KACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,6BACA,gBACA,kBAGJ,CACEnE,KAAM,qBACNL,KAAM,UACNgF,KAAM,KACNkpC,UAAWznB,GACXhiB,YAAa,aACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,+BAGJ,CACEnE,KAAM,uBACNL,KAAM,YACNgF,KAAM,KACNkpC,UAAWjnB,GACXxiB,YAAa,aACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,kBAGJ,CACEnE,KAAM,sBACNL,KAAM,WACNgF,KAAM,KACNkpC,UAAW7mB,GACX5iB,YAAa,aACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,kBAKJ,CACEnE,KAAM,UACNL,KAAM,SACNgF,KAAMypC,KACNP,UAAWzmB,GACXhjB,YAAa,KACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,aACA,gBAGJ,CACEnE,KAAM,mBACNL,KAAM,gBACNgF,KAAM,KACNkpC,UAAWQ,GACXjqC,YAAa,UACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,2BAGJ,CACEnE,KAAM,4BACNL,KAAM,sBACNgF,KAAM,KACNkpC,UAAWS,GACXlqC,YAAa,UACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,+BAGJ,CACEnE,KAAM,cACNL,KAAM,YACNgF,KAAM,KACNkpC,UAAWljB,GACXvmB,YAAa,UACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,gBAeJ,CACEnE,KAAM,kBACNL,KAAM,gBACNgF,KAAM,KACNkpC,UAAWhgB,GACXzpB,YAAa,UACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,CACjB,aACA,gBAKJ,CACEnE,KAAM,WACNL,KAAM,aACNgF,KAAM,KACNkpC,UAAWU,GACXnqC,YAAa,GACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,IAKrB,CACEnE,KAAM,OACNL,KAAM,eACNgF,KAAM6pC,KACNX,UAAW1e,GACX/qB,YAAa,KACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,IAIrB,CACEnE,KAAM,cACNL,KAAM,SACNgF,KAAM,KACNkpC,UAAWze,GACXhrB,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,CACjB,2BACA,6BAGJ,CACEnE,KAAM,kBACNL,KAAM,YACNgF,KAAM,KACNkpC,UAAWY,GACXrqC,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,CAAC,6BAEtB,CACEnE,KAAM,mBACNL,KAAM,aACNgF,KAAM,KACNkpC,UAAW7S,GACX52B,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,CACjB,2BACA,6BAIJ,CACEnE,KAAM,cACNL,KAAM,SACNgF,KAAM,KACNkpC,UAAWvQ,GACXl5B,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,CACjB,2BACA,2BACA,6BAKJ,CACEnE,KAAM,gBACNL,KAAM,WACNgF,KAAM,KACNkpC,UAAWxN,GACXj8B,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,CACjB,6BACA,2BACA,0BAmBJ,CACEnE,KAAM,WACNL,KAAM,MACNgF,KAAM,KACNkpC,UAAWrM,GACXp9B,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,CACjB,wBACA,0BAGJ,CACEnE,KAAM,eACNL,KAAM,UACNgF,KAAM,KACNkpC,UAAWa,GACXtqC,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,sBACA,yBAEFG,kBAAmB,IAGrB,CACEnE,KAAM,mBACNL,KAAM,cACNgF,KAAM,KACNkpC,UAAW7E,GACX5kC,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,CACjB,wBACA,0BAKJ,CACEnE,KAAM,aACNL,KAAM,gBACNgF,KAAM,KACNkpC,UAAW/D,GACX1lC,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,CACjB,wBACA,wBACA,mCAKJ,CACEnE,KAAM,kBACNL,KAAM,aACNgF,KAAM,KACNkpC,UAAWtD,GACXnmC,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,sBACA,oCAEFG,kBAAmB,IAItB,CACCnE,KAAM,iBACNL,KAAM,YACNgF,KAAM,KACNkpC,UAAWpC,GACXrnC,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,uBAEFG,kBAAmB,IAInB,CACEnE,KAAM,yBACNL,KAAM,sBACNgF,KAAM,KACNkpC,UAAWH,GACXtpC,YAAa,OACbP,cAAc,EACdG,yBAA0B,CACxB,sBACA,uCAEFG,kBAAmB,IAIrB,CACEnE,KAAM,+BACNL,KAAM,oBACNgF,KAAM,KACNkpC,UAAW,KACXzpC,YAAa,OACbP,cAAc,EACdU,QAAQ,EACRP,yBAA0B,CACxB,sBACA,gCAEFG,kBAAmB,IAMrB,CACEnE,KAAM,8BACNL,KAAM,wBACNgF,KAAMgqC,KACNd,UAAW,KACXzpC,YAAa,KACbP,cAAc,EACdU,QAAQ,EACRP,yBAA0B,GAE1BG,kBAAmB,IAIrB,CACEnE,KAAM,+BACNL,KAAM,uBACNgF,KAAMiqC,KACNf,UAAW,KACXzpC,YAAa,KACbP,cAAc,EACdU,QAAQ,EACRP,yBAA0B,CACxB,WAEFG,kBAAmB,IAIrB,CACEnE,KAAM,mCACNL,KAAM,+BACNgF,KAAMkqC,KACNhB,UAAW,KACXzpC,YAAa,KACbP,cAAc,EACdU,QAAQ,EACRP,yBAA0B,CACxB,YAEFG,kBAAmB,IAmBrB,CACEnE,KAAM,YACNL,KAAM,WACNgF,KAAMmqC,KACNjB,UAAWkB,GACX3qC,YAAa,KACbP,cAAc,EACdU,QAAQ,EACRP,yBAA0B,CACxB,uBAEFG,kBAAmB,IAErB,CACEnE,KAAM,sBACNL,KAAM,YACNgF,KAAM,KACNkpC,UAAWmB,GACX5qC,YAAa,YACbP,cAAc,EACdU,QAAQ,EACRP,yBAA0B,CACxB,sBACA,8BAEFG,kBAAmB,IAqBrB,CACEnE,KAAM,SACNL,KAAM,aACNgF,KAAM,gBACNkpC,UAAWoB,GACX7qC,YAAa,KACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,IAErB,CACEnE,KAAM,cACNL,KAAM,aACNgF,KAAMuqC,KACNrB,UAAWsB,GACX/qC,YAAa,KACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,IAErB,CACEnE,KAAM,SACNL,KAAM,QACNgF,KAAMyqC,KACNvB,UAAWwB,GACXjrC,YAAa,KACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,IAErB,CACEnE,KAAM,iBACNL,KAAM,gBACNgF,KAAM2O,KACNu6B,UAAWyB,GACXlrC,YAAa,KACbP,cAAc,EACdG,yBAA0B,GAC1BG,kBAAmB,KClnBRorC,GAvCE,SAAA31C,GAAK,IAAAsH,EAAAsuC,EAAA,MAAK,CACzBC,QAAS,CACP/5C,SAAU,WACVa,IAAK,IACLzD,OAAQ,SAEV48C,UAAU5iD,OAAAuH,GAAA,EAAAvH,EAAAoU,EAAA,GAAApU,OAAA2M,EAAA,EAAA3M,CAAAoU,EACPtH,EAAME,YAAYoC,GAAG,MAAQ,CAC5BzF,MAAK,eAAAzJ,O3HuCS,I2HvCT,SAFAF,OAAA2M,EAAA,EAAA3M,CAAAoU,EAAA,WAIG,QAJHpU,OAAA2M,EAAA,EAAA3M,CAAAoU,EAAA,WAKG,YALHpU,OAAA2M,EAAA,EAAA3M,CAAAoU,EAAA,QAMA,SANAA,GAOJtO,GAPI,CAQPoP,UAAW,OACXvL,MAAO,OACP4M,kBAAmB,QAEnBvQ,OAAQ,QACRwD,QAAS,OACTiQ,cAAe,WAEjB7E,SAAO8tC,EAAA,CACL79C,UAAW,QADN7E,OAAA2M,EAAA,EAAA3M,CAAA0iD,EAEJ51C,EAAME,YAAYoC,GAAG,MAAO,CAC3BhH,QAAS,cAHNpI,OAAA2M,EAAA,EAAA3M,CAAA0iD,EAKJ51C,EAAME,YAAYC,KAAK,MAAO,CAC7B7E,QAAS,aANNpI,OAAA2M,EAAA,EAAA3M,CAAA0iD,EAAA,OAQC,KARDA,GAWP38C,aACEgN,IAAK,CACHlO,UAAW,+BCXjB,IAAMg+C,GACJ1hD,EAAAC,EAAAC,cAACyhD,EAAA,EAAD,KAEIhwC,GAAOC,IAAI,SAACC,EAAMC,GAEhB,OACE9R,EAAAC,EAAAC,cAAC0hD,EAAA,EAAD,CACEC,OAAK,EACL9vC,KAAMF,EAAKE,KACX6tC,UAAW/tC,EAAK+tC,UAChB9tC,IAAKA,WAkBXgM,eAEJ,SAAAA,EAAYpd,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAid,IACEnd,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAif,GAAA9c,KAAAH,KAAMH,KAcRohD,iBAAmB,SAAArsC,GAEjB9U,EAAKO,SAAS,CAAEuU,MAAOA,KAjBzB9U,EAoBAohD,iBAAmB,SAAAt+C,GAEjB9C,EAAKO,SAAS,CAAEuC,MAAOA,KAtBzB9C,EAyBAqhD,iBAAmB,WAEe,aAA5BrhD,EAAKpC,MAAM0jD,aACbthD,EAAKO,SAAS,CAAE+gD,aAAc,kBAE9BthD,EAAKO,SAAS,CAAE+gD,aAAc,cA9BlCthD,EAkCA4R,mBAAqB,WAEnB5R,EAAKO,SAAS,CAAEghD,YAAavhD,EAAKpC,MAAM2jD,cApC1CvhD,EAuCAwhD,eAAiB,WAEXp/C,OAAOqN,YAAc,KACvBzP,EAAKO,SAAS,CAAEghD,YAAY,KAxC9BvhD,EAAKpC,MACL,CACEb,MAAO,KACPwe,UAAU,EAEVzG,MAAOA,KACPhS,MAAO,UACP2+C,UAAU,EACVH,aAAc,gBACdC,YAAY,GAXhBvhD,mFA+CA,IAAAqO,EAAAnO,KAEMia,EAAQlb,IAAQC,IAAI,QAExB2B,MAAMC,IAAUC,WAAa,WAC7B,CACIE,QACA,CACImZ,cAAiB,UAAYD,KAGpC9Y,KAAK,SAACC,GAEH,GAAwB,MAApBA,EAASG,OAET,MAAM,IAAI5E,MAAMyE,EAASG,QAG7B,OAAOH,EAASC,SAEnBF,KAAK,SAACG,GAUH,GAPA0O,KAAWC,aAAe3O,EAE1B6M,EAAK9N,SACL,CACIgb,UAAS,IAGTmmC,UAAUC,SAAS9sC,QAAQ,QAAU,EAC5B,IAAI+sC,IAAiBvzC,EAAKwzC,KAAKf,WAE5C1+C,OAAO0/C,iBAAiB,SAAUzzC,EAAKmzC,iBAE3C,SAACzkD,GAEGsR,EAAK9N,SACL,CACIgb,UAAU,EACVxe,MAAOA,iDAKEw1B,GAEbA,EAAE1F,QAAQxqB,SAASgP,WAAakhB,EAAElwB,SAASgP,WAC7CnR,KAAK2hD,KAAKf,UAAUtkB,UAAY,EAC5Bt8B,KAAKtC,MAAM2jD,YACbrhD,KAAKK,SAAS,CAAEghD,YAAY,oDAOhCn/C,OAAO2/C,oBAAoB,SAAU7hD,KAAKshD,iDAI5C,IAAAlzC,EAC8BpO,KAAKtC,MAAzBb,EADVuR,EACUvR,MAAOwe,EADjBjN,EACiBiN,SADjBqf,EAE+B16B,KAAKH,MAA1BqK,EAFVwwB,EAEUxwB,QAAYK,EAFtBvM,OAAAwM,EAAA,EAAAxM,CAAA08B,EAAA,aAIE,OAAKrf,EAIIxe,EAGAsC,EAAAC,EAAAC,cAACmc,GAAD,CAAgBrE,UAAY,+BAAiCta,EAAML,UAI1E2C,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQy2C,SACtBxhD,EAAAC,EAAAC,cAACyiD,GAAD9jD,OAAAC,OAAA,CACE6S,OAAQA,GACR+D,SAAU7E,KAAWC,aAAa6O,aAAaC,KAC/CnK,MAAO5U,KAAKtC,MAAMkX,MAClBlD,mBAAoB1R,KAAK0R,mBACzBhE,KAAM1N,KAAKtC,MAAM2jD,WACjBz+C,MAAO5C,KAAKtC,MAAMkF,OACd2H,IAGNpL,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ02C,UAAWmB,IAAI,YAAYrzC,GAAG,aACpDvP,EAAAC,EAAAC,cAAC2iD,GAADhkD,OAAAC,OAAA,CACE6S,OAAQA,GACRY,mBAAoB1R,KAAK0R,oBACrBnH,IAGNpL,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQ0I,SACtBzT,EAAAC,EAAAC,cAAA,OAAKgL,UAAWH,EAAQnG,WAAY88C,KAEtC1hD,EAAAC,EAAAC,cAAC4iD,GAAD,QA9BK9iD,EAAAC,EAAAC,cAACyc,GAAD,CAAkBnF,YAAY,oBAAoBE,YAAY,EAAMD,YAAU,WArHrEpU,IAAMC,WA+Jfy/C,eAzKS,SAAAxkD,GACtB,MAAO,CAAEF,SAAUE,EAAMF,WAG3B,SAA4B2kD,GAC1B,MAAO,CACLC,WAAY,SAAAC,GAAO,OAAIF,EClDhB,CACHpkD,KAAMT,EACNa,QDgDuCkkD,OAmKhCH,CAA6Cx/C,IAAWmY,GAAXnY,CAA2Bua,KExLjFqlC,eAEJ,SAAAA,EAAYziD,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAAsiD,IACExiD,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAAskD,GAAAniD,KAAAH,KAAMH,KAaR0iD,YAAc,WACd,IACUC,EAAU1iD,EAAKpC,MAAf8kD,MAER1iD,EAAKO,SAAS,CAACoiD,iBAAiB,IAEhC9hD,MAAMC,IAAUC,WAAa,oCAC7B,CACEC,OAAQ,OACRC,QACA,CACIC,eAAgB,oBAEpBC,KAAMsZ,KAAKC,UAAUgoC,KAEtBrhD,KAAK,SAACC,GAELA,EAASC,OAAOF,KAAK,SAACG,GAEpB,GAAwB,MAApBF,EAASG,OAEX,MAAM,IAAI5E,MAAM2E,EAAOE,mBAGzB1B,EAAKO,SAAS,iBAAO,CACnBoiD,iBAAiB,EACjBC,mBAAmB,OAGtB3gD,MAAM,SAAClF,GAENiD,EAAKO,SACL,CACExD,MAAOA,EAAML,QACbimD,iBAAiB,SA7CvB3iD,EAAKpC,MACL,CACEb,MAAO,KAEP4lD,iBAAiB,EACjBC,mBAAmB,EAEnBF,MAAO,IAVX1iD,wEAuDA,IAAAqO,EAAAnO,KAAAoO,EACyDpO,KAAKtC,MAApDb,EADVuR,EACUvR,MAAO4lD,EADjBr0C,EACiBq0C,gBAAiBC,EADlCt0C,EACkCs0C,kBACxBx4C,EAAYlK,KAAKH,MAAjBqK,QAER,OACE/K,EAAAC,EAAAC,cAACiY,GAAAlY,EAAD,CACE2E,WAAS,EACTic,QAAS,EACTgP,UAAU,SACVvV,WAAW,SACX6L,QAAQ,SACR3W,MAAO,CAAE7L,UAAW,SAEpB3D,EAAAC,EAAAC,cAAA,OAAKsP,MAAO,CAAEsP,SAAU,QAAStW,MAAO,SACtCxI,EAAAC,EAAAC,cAACoc,GAAD,CAAM9M,MAAO,CAAC1H,UAAW,WACvB9H,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBnkB,EAAKo0C,gBAC/CpjD,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WAChBzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,uBAGC+/C,EAgCDvjD,EAAAC,EAAAC,cAAA,6FA7BEF,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAACwf,GAAD,KACE1f,EAAAC,EAAAC,cAACkzB,GAAD,CACE7L,UAAU,gBACVhY,GAAG,QACH+X,iBACC,CACClB,WAAW,EACXkN,UAAU,GAEZ7L,WACC,CACC7oB,KAAM,QACN20B,WAAW,GAEb3L,cAEE,SAACQ,GAAYpZ,EAAK9N,SAAS,CAACmiD,MAAOj7B,OAIvCpoB,EAAAC,EAAAC,cAACojB,GAAD,CAAQT,QAAmB,MAATnlB,GAAkBA,IAEtCsC,EAAAC,EAAAC,cAACwc,GAAD,CAAYlN,MAAO,CAAC1H,UAAW,SAAUO,QAAS,UAChDrI,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYsG,SAAUu5C,EAAiB1kD,KAAK,UAAY0kD,EAAkB,gBAAkB,YAOlHtjD,EAAAC,EAAAC,cAAA,sBAhHkBmD,IAAMC,WAyHvBC,OAtIf,CACEC,eACA,CACEC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,SA6HLR,CAAmB4/C,ICxH5BK,eAEJ,SAAAA,EAAY9iD,GACZ,IAAAC,EAAA,OAAA9B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA2iD,IACE7iD,EAAA9B,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA2kD,GAAAxiD,KAAAH,KAAMH,KAeR+iD,gBAAkB,WAClB,IACUliD,EAAaZ,EAAKpC,MAAlBgD,SAKR,GAHAZ,EAAKO,SAAS,CAACwiD,qBAAqB,EAAMhmD,MAAO,OAG5CiD,EAAKgjD,yBAAV,CAWA,IACIC,EADM,IAAI9gD,IAAIC,OAAOC,SAASC,MACRC,aAAarD,IAAI,YAE3C,GAAK+jD,EAAL,CAWA,IAAIxiD,EAAc,CAChByiD,gBAAmBD,EACnBE,SAAYviD,GAIdC,MAAMC,IAAUC,WAAa,2BAC7B,CACEC,OAAQ,OACRC,QACA,CACIC,eAAgB,oBAEpBC,KAAMsZ,KAAKC,UAAUja,KAEtBY,KAAK,SAACC,GAELA,EAASC,OAAOF,KAAK,SAACG,GAEpB,GAAwB,MAApBF,EAASG,OAEX,MAAM,IAAI5E,MAAM2E,GAGlBxB,EAAKO,SACL,CACEwiD,qBAAqB,EACrBH,mBAAmB,IAGrB5iD,EAAKojD,iCAENnhD,MAAM,SAAClF,GAENiD,EAAKO,SACL,CACExD,MAAOA,EAAML,QACbqmD,qBAAqB,aA9CzB/iD,EAAKO,SACH,CACExD,MAAO,oCACPgmD,qBAAqB,SAjBzB/iD,EAAKO,SACL,CACExD,MAAO,qDACPgmD,qBAAqB,KA5B3B/iD,EA2FAojD,6BAA+B,WAE7B,IAAIC,EAAe,EAEfC,EAAQC,YAAY,WAEtBrjD,KAAKK,SACL,CACEijD,qBAAsBH,MAGxBA,EAGmB,GACjBI,cAAcH,IAEhBj+B,KAbsBnnB,OAAAu1B,GAAA,EAAAv1B,QAAAu1B,GAAA,EAAAv1B,CAAA8B,KAaV,MA5GhBA,EA+GAgjD,uBAAyB,WACzB,IAAA10C,EACuCtO,EAAKpC,MAAlCgD,EADV0N,EACU1N,SAAU8iD,EADpBp1C,EACoBo1C,eAElB,SAAK9iD,IAAa8iD,IAKV9iD,IAAa8iD,GArHrB1jD,EAAKpC,MACL,CACEb,MAAO,KAEPgmD,qBAAqB,EACrBH,mBAAmB,EACnBY,qBAAsB,EAEtB5iD,SAAU,GACV8iD,eAAgB,IAZpB1jD,wEA4HA,IAAAqO,EAAAnO,KAAAmyB,EACmFnyB,KAAKtC,MAA9Eb,EADVs1B,EACUt1B,MAAOgmD,EADjB1wB,EACiB0wB,oBAAqBH,EADtCvwB,EACsCuwB,kBAAmBY,EADzDnxB,EACyDmxB,qBAC/Cp5C,EAAYlK,KAAKH,MAAjBqK,QAER,OACE/K,EAAAC,EAAAC,cAACiY,GAAAlY,EAAD,CACE2E,WAAS,EACTic,QAAS,EACTgP,UAAU,SACVvV,WAAW,SACX6L,QAAQ,SACR3W,MAAO,CAAE7L,UAAW,SAEpB3D,EAAAC,EAAAC,cAAA,OAAKsP,MAAO,CAAEsP,SAAU,QAAStW,MAAO,SACtCxI,EAAAC,EAAAC,cAACoc,GAAD,CAAM9M,MAAO,CAAC1H,UAAW,WACvB9H,EAAAC,EAAAC,cAAA,QAAM+yB,SAAU,SAACC,GAAOA,EAAEC,iBAAkBnkB,EAAKy0C,oBAC/CzjD,EAAAC,EAAAC,cAACqc,GAAD,CAAY9Y,MAAM,WAChBzD,EAAAC,EAAAC,cAAA,MAAIgL,UAAWH,EAAQvH,gBAAvB,qBAGC+/C,EAqDDvjD,EAAAC,EAAAC,cAAA,qGAA6FikD,EAA7F,aAlDEnkD,EAAAC,EAAAC,cAAA,WACEF,EAAAC,EAAAC,cAACwf,GAAD,KACE1f,EAAAC,EAAAC,cAACkzB,GAAD,CACE7L,UAAU,+BACVhY,GAAG,WACH+X,iBACC,CACClB,WAAW,EACXkN,UAAU,GAEZ7L,WACC,CACC7oB,KAAM,WACN20B,WAAW,EACX+wB,UAAW,EACXjlB,UAAW,IAEbzX,cAEE,SAACQ,GAAYpZ,EAAK9N,SAAS,CAACK,SAAU6mB,OAG1CpoB,EAAAC,EAAAC,cAACkzB,GAAD,CACE7L,UAAU,kBACVhY,GAAG,kBACH+X,iBACC,CACClB,WAAW,EACXkN,UAAU,GAEZ7L,WACC,CACC7oB,KAAM,WACN0lD,UAAW,EACXjlB,UAAW,IAEbzX,cAEE,SAACQ,GAAYpZ,EAAK9N,SAAS,CAACmjD,eAAgBj8B,OAIhDpoB,EAAAC,EAAAC,cAACojB,GAAD,CAAQT,QAAmB,MAATnlB,GAAkBA,IAEtCsC,EAAAC,EAAAC,cAACwc,GAAD,CAAYlN,MAAO,CAAC1H,UAAW,SAAUO,QAAS,UAChDrI,EAAAC,EAAAC,cAAC+P,GAAD,CAAQxM,MAAM,YAAYsG,SAAU25C,EAAqB9kD,KAAK,UAAY8kD,EAAsB,gBAAkB,YAQ/F,IAAzBS,EAEAnkD,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAG,WAEb,KAEFpD,EAAAC,EAAAC,cAAA,sBAjNmBmD,IAAMC,WA0NxBC,OAvOf,CACEC,eACA,CACEC,MAAO,UACPC,UAAW,MACXC,UAAW,OACXC,WAAY,MACZC,WAAY,6CACZC,aAAc,MACdC,eAAgB,SA8NLR,CAAmBigD,yBChNlBe,eA9Bd,SAAAA,EAAY7jD,GACX,OAAA7B,OAAA+B,EAAA,EAAA/B,CAAAgC,KAAA0jD,GAAA1lD,OAAAiC,EAAA,EAAAjC,CAAAgC,KAAAhC,OAAAkC,EAAA,EAAAlC,CAAA0lD,GAAAvjD,KAAAH,KACOH,0EAKN,IAAI8jD,EACJ,CACE3/C,OAAQ,OACRwB,WAAY,OAASo+C,KAAkB,cACvCxwC,eAAgB,QAChBC,mBAAoB,gBACpBwwC,qBAAsB,SAGxB,OACE1kD,EAAAC,EAAAC,cAAA,OAAKsP,MAAOg1C,GACVxkD,EAAAC,EAAAC,cAACyhD,EAAA,EAAD,KACE3hD,EAAAC,EAAAC,cAAC0hD,EAAA,EAAD,CAAO7vC,KAAK,SAAS6tC,UAAW57C,IAChChE,EAAAC,EAAAC,cAAC0hD,EAAA,EAAD,CAAO7vC,KAAK,kBAAkB6tC,UAAW+E,KACzC3kD,EAAAC,EAAAC,cAAC0hD,EAAA,EAAD,CAAO7vC,KAAK,gBAAgB6tC,UAAWgF,cAvB1BvhD,IAAMC,8DCS7B,IAAMuhD,GAAOC,cA6BN,IAAMC,GAAe,IAAIC,IAAwB7oD,GAExD8oD,IAASC,OACPllD,EAAAC,EAAAC,cAACilD,EAAA,EAAD,CAAQ33B,QAASq3B,IACf7kD,EAAAC,EAAAC,cAACyhD,EAAA,EAAD,KACE3hD,EAAAC,EAAAC,cAAC0hD,EAAA,EAAD,CAAO7vC,KAAK,UACV/R,EAAAC,EAAAC,cAACklD,EAAA,EAAD,CAAc9lD,SAAUylD,IACtB/kD,EAAAC,EAAAC,cAAC8D,EAAD,QAGJhE,EAAAC,EAAAC,cAAC0hD,EAAA,EAAD,CAAO7vC,KAAK,WACV/R,EAAAC,EAAAC,cAACklD,EAAA,EAAD,CAAc9lD,SAAUylD,IACtB/kD,EAAAC,EAAAC,cAAC8D,EAAD,QAGJhE,EAAAC,EAAAC,cAAC0hD,EAAA,EAAD,CAAO7vC,KAAK,kBAAkB6tC,UAAW2E,KACzCvkD,EAAAC,EAAAC,cAAC0hD,EAAA,EAAD,CAAO7vC,KAAK,gBAAgB6tC,UAAW2E,KACvCvkD,EAAAC,EAAAC,cA5Ce,SAAA0K,GAAA,IAActH,EAAdsH,EAAGg1C,UAAyBx0C,EAA5BvM,OAAAwM,EAAA,EAAAxM,CAAA+L,EAAA,sBACnB5K,EAAAC,EAAAC,cAACmlD,EAAA,EAAD,CAAUpmD,MAAOA,GACfe,EAAAC,EAAAC,cAAC0hD,EAAA,EAAD/iD,OAAAC,OAAA,GAAWsM,EAAX,CAAiB85C,OAAQ,SAACxkD,GAAD,OAafd,IAAQC,IAAI,QAVpBG,EAAAC,EAAAC,cAACoD,EAAc5C,GAEfV,EAAAC,EAAAC,cAACiD,EAAA,EAAD,CAAUC,GAAI,cAAgBL,OAAOC,SAASgP,SAAWjP,OAAOC,SAASyK,eAqCzE,CAAesE,KAAK,IAAI6tC,UAAW0F,OAGvC/uC,SAASof,eAAe,0BClE1B75B,EAAOC,QACP,CACI+U,aALe,KAMf60B,sBALwB,wBCC5B7pC,EAAOC,QACP,CACI2F,WAJe,4DCkDnB5F,EAAOC,QACP,CACIka,8BA9CJ,SAAuCsvC,EAAoBC,GAGvD,GAAkC,IAA9BD,EAAmB9mD,OAEnB,OAAO,EAGX,IAAK,IAAI6vB,EAAI,EAAGA,EAAIi3B,EAAmB9mD,OAAQ6vB,IAE3C,GAAIk3B,EAAkB15B,SAASy5B,EAAmBj3B,IAE9C,OAAO,EAIf,OAAO,GA+BPxY,8BAtBJ,SAAuCiqB,EAAqBylB,GAGxD,GAAmC,IAA/BzlB,EAAoBthC,OAEpB,OAAO,EAGX,IAAK,IAAI6vB,EAAI,EAAGA,EAAIyR,EAAoBthC,OAAQ6vB,IAE5C,IAAKk3B,EAAkB15B,SAASiU,EAAoBzR,IAEhD,OAAO,EAIf,OAAO","file":"static/js/main.5df04317.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/spinner.eff48452.svg\";","module.exports = __webpack_public_path__ + \"static/media/broken-cloud.e30ca90c.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/sidebar-2.310509c9.jpg\";","module.exports = __webpack_public_path__ + \"static/media/background-1.97c28089.jpg\";","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { LogLevel } from \"@azure/msal-browser\";\r\n\r\n/**\r\n * Enter here the user flows and custom policies for your B2C application\r\n * To learn more about user flows, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview\r\n * To learn more about custom policies, visit: https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview\r\n */\r\nexport const b2cPolicies = {\r\n names: {\r\n signUpSignIn: \"B2C_1A_SIGNUP_SIGNIN\",\r\n forgotPassword: \"B2C_1A_PASSWORDRESET\",\r\n editProfile: \"B2C_1A_PROFILEEDIT\"\r\n },\r\n authorities: {\r\n signUpSignIn: {\r\n authority: \"https://universalcustomeridentity.b2clogin.com/universalcustomeridentity.onmicrosoft.com/B2C_1A_SIGNUP_SIGNIN\",\r\n },\r\n forgotPassword: {\r\n authority: \"https://universalcustomeridentity.b2clogin.com/universalcustomeridentity.onmicrosoft.com/B2C_1A_PASSWORDRESET\",\r\n },\r\n editProfile: {\r\n authority: \"https://universalcustomeridentity.b2clogin.com/universalcustomeridentity.onmicrosoft.com/B2C_1A_PROFILEEDIT\"\r\n }\r\n },\r\n authorityDomain: \"universalcustomeridentity.b2clogin.com\"\r\n}\r\n\r\n/**\r\n * Configuration object to be passed to MSAL instance on creation. \r\n * For a full list of MSAL.js configuration parameters, visit:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md \r\n */\r\nexport const msalConfig = {\r\n auth: {\r\n clientId: \"0a5be3e6-9baa-453f-97c6-e1a5bde0ae29\", // This is the ONLY mandatory field that you need to supply.\r\n authority: b2cPolicies.authorities.signUpSignIn.authority, // Use a sign-up/sign-in user-flow as a default authority\r\n knownAuthorities: [b2cPolicies.authorityDomain], // Mark your B2C tenant's domain as trusted.\r\n redirectUri: \"/login\", // Points to window.location.origin. You must register this URI on Azure Portal/App Registration.\r\n postLogoutRedirectUri: \"/\", // Indicates the page to navigate after logout.\r\n navigateToLoginRequestUrl: false, // If \"true\", will navigate back to the original request location before processing the auth code response.\r\n },\r\n cache: {\r\n cacheLocation: \"sessionStorage\", // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\r\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n system: {\t\r\n loggerOptions: {\t\r\n loggerCallback: (level, message, containsPii) => {\r\n if (containsPii) {\t\t\r\n return;\t\t\r\n }\t\t\r\n switch (level) {\t\t\r\n case LogLevel.Error:\t\t\r\n console.error(message);\t\t\r\n return;\t\t\r\n case LogLevel.Info:\t\t\r\n console.info(message);\t\t\r\n return;\t\t\r\n case LogLevel.Verbose:\t\t\r\n console.debug(message);\t\t\r\n return;\t\t\r\n case LogLevel.Warning:\t\t\r\n console.warn(message);\t\t\r\n return;\t\t\r\n }\t\r\n }\t\r\n }\t\r\n }\r\n};\r\n\r\n/**\r\n * Scopes you add here will be prompted for user consent during sign-in.\r\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\r\n * For more information about OIDC scopes, visit: \r\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\r\n */\r\nexport const loginRequest = {\r\n scopes: []\r\n};\r\n\r\n/**\r\n * An optional silentRequest object can be used to achieve silent SSO\r\n * between applications by providing a \"login_hint\" property.\r\n */\r\nexport const silentRequest = {\r\n scopes: [\"openid\", \"profile\"],\r\n loginHint: \"example@domain.net\"\r\n};","export const ADD_ARTICLE = \"ADD_ARTICLE\";\r\n","import { ADD_ARTICLE } from \"../constants/action-types\"\r\n\r\nconst initialState = \r\n{\r\n articles: []\r\n};\r\n\r\nfunction rootReducer(state = initialState, action)\r\n{\r\n switch(action.type)\r\n {\r\n case ADD_ARTICLE:\r\n return Object.assign({}, state, {\r\n articles: state.articles.concat(action.payload)\r\n });\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default rootReducer;","import { createStore } from \"redux\";\r\nimport rootReducer from \"../reducers/index\";\r\n\r\nconst store = createStore(rootReducer);\r\n\r\nexport default store;","/* eslint-disable */\r\nimport React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\nimport { \r\n useMsal,\r\n useIsAuthenticated \r\n} from \"@azure/msal-react\";\r\n\r\nimport { \r\n InteractionStatus\r\n} from \"@azure/msal-browser\";\r\n\r\n\r\nimport { loginRequest } from \"../../utils/azuread/authConfig\";\r\n\r\n// Extra libs\r\nimport Cookies from \"js-cookie\";\r\nimport formurlencoded from 'form-urlencoded';\r\nimport Constants from \"variables/constants.jsx\"\r\n\r\nconst styles = \r\n{\r\n cardTitleWhite: \r\n {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\"\r\n }\r\n};\r\n\r\nexport const AzureLogin = () => {\r\n\r\n const { instance, inProgress } = useMsal();\r\n \r\n const { accounts } = useMsal(); \r\n\r\n const isAuthenticated = useIsAuthenticated();\r\n \r\n const logoutRequested = Cookies.get(\"logoutSession\");\r\n\r\n // Check if the user isn't authenticated and not in transition - if so, go to the login\r\n if (inProgress === InteractionStatus.None && !isAuthenticated) { \r\n instance.loginRedirect(loginRequest);\r\n }\r\n // Else check to see if we can get an auth token\r\n else if (isAuthenticated)\r\n { \r\n if (logoutRequested == \"true\")\r\n {\r\n Cookies.remove(\"logoutSession\");\r\n instance.logoutRedirect({ postLogoutRedirectUri: \"/\" });\r\n } \r\n else { \r\n return(\r\n \r\n );\r\n }\r\n } \r\n};\r\n\r\nclass LoginForm extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n\r\n this.state = \r\n {\r\n error: null,\r\n signinIn: false,\r\n redirectToReferrer: null, \r\n objectid: props.objectid\r\n } \r\n\r\n if (this.state.objectid != \"\") {\r\n this.login();\r\n }\r\n\r\n }\r\n\r\n login = () =>\r\n {\r\n const { objectid } = this.state\r\n \r\n this.setState({signinIn: true})\r\n\r\n var requestBody = \r\n {\r\n grant_type : \"password\",\r\n username : objectid,\r\n password : \"\"\r\n }\r\n\r\n // Fetch auth token (util class is not used on purpose)\r\n fetch(Constants.ApiBaseUrl + \"auth/token\", \r\n {\r\n method: \"POST\",\r\n headers:\r\n {\r\n \"Content-Type\": \"application/x-www-form-urlencoded\"\r\n },\r\n body: formurlencoded(requestBody)\r\n })\r\n .then((response) => \r\n {\r\n response.json().then((result) =>\r\n {\r\n if (response.status !== 200)\r\n { \r\n throw new Error(result.error_description);\r\n }\r\n\r\n Cookies.set(\"auth\", result.access_token, {expires: 1, secure: true, sameSite: \"lax\"}); // TODO: Add Secure, http only & SameSite flags. Write documentation about why these flags are added.\r\n\r\n this.setState(() => ({\r\n redirectToReferrer: true,\r\n signinIn: false\r\n }));\r\n })\r\n .catch((error) =>\r\n {\r\n this.setState(\r\n {\r\n error: error.message, \r\n signinIn: false\r\n })\r\n });\r\n }) \r\n }\r\n\r\n render() \r\n { \r\n const { redirectToReferrer } = this.state \r\n\r\n if (redirectToReferrer === true) \r\n {\r\n var url = new URL(window.location.href);\r\n var redirectUrl = url.searchParams.get(\"url\");\r\n\r\n if (redirectUrl)\r\n {\r\n return \r\n }\r\n else\r\n {\r\n return \r\n }\r\n }\r\n }\r\n \r\n}\r\n\r\nexport default withStyles(styles)(LoginForm);\r\n","import React from \"react\";\r\n\r\nimport { AzureLogin } from \"./Login.jsx\";\r\n\r\nexport default function AzureAuthentication() {\r\n\r\n return ();\r\n\r\n}","/*!\r\n\r\n =========================================================\r\n * Material Dashboard React - v1.6.0 based on Material Dashboard - v1.2.0\r\n =========================================================\r\n\r\n * Product Page: http://www.creative-tim.com/product/material-dashboard-react\r\n * Copyright 2018 Creative Tim (http://www.creative-tim.com)\r\n * Licensed under MIT (https://github.com/creativetimofficial/material-dashboard-react/blob/master/LICENSE.md)\r\n\r\n =========================================================\r\n\r\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\n */\r\n\r\n// ##############################\r\n// // // Function that converts from hex color to rgb color\r\n// // // Example: input = #9c27b0 => output = 156, 39, 176\r\n// // // Example: input = 9c27b0 => output = 156, 39, 176\r\n// // // Example: input = #999 => output = 153, 153, 153\r\n// // // Example: input = 999 => output = 153, 153, 153\r\n// #############################\r\nconst hexToRgb = input => {\r\n input = input + \"\";\r\n input = input.replace(\"#\", \"\");\r\n let hexRegex = /[0-9A-Fa-f]/g;\r\n if (!hexRegex.test(input) || (input.length !== 3 && input.length !== 6)) {\r\n throw new Error(\"input is not a valid hex color.\");\r\n }\r\n if (input.length === 3) {\r\n let first = input[0];\r\n let second = input[1];\r\n let last = input[2];\r\n input = first + first + second + second + last + last;\r\n }\r\n input = input.toUpperCase(input);\r\n let first = input[0] + input[1];\r\n let second = input[2] + input[3];\r\n let last = input[4] + input[5];\r\n return (\r\n parseInt(first, 16) +\r\n \", \" +\r\n parseInt(second, 16) +\r\n \", \" +\r\n parseInt(last, 16)\r\n );\r\n};\r\n\r\n// ##############################\r\n// // // Variables - Styles that are used on more than one component\r\n// #############################\r\n\r\nconst drawerWidth = 260;\r\n\r\nconst transition = {\r\n transition: \"all 0.33s cubic-bezier(0.685, 0.0473, 0.346, 1)\"\r\n};\r\n\r\nconst container = {\r\n height: \"100%\",\r\n paddingRight: \"15px\",\r\n paddingLeft: \"15px\",\r\n marginRight: \"auto\",\r\n marginLeft: \"auto\"\r\n};\r\n\r\nconst defaultFont = {\r\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n fontWeight: \"300\",\r\n lineHeight: \"1.5em\"\r\n};\r\n\r\n// const primaryColor = [\"#9c27b0\", \"#ab47bc\", \"#8e24aa\", \"#af2cc5\"];\r\nconst primaryColor = [\"#113366\", \"#225566\", \"#00365f\", \"#223377\"];\r\nconst secondaryColor = [\"#229988\", \"#33BB88\", \"#14937A\", \"#33AA99\"];\r\nconst warningColor = [\"#ff9800\", \"#ffa726\", \"#fb8c00\", \"#ffa21a\"];\r\nconst dangerColor = [\"#f44336\", \"#ef5350\", \"#e53935\", \"#f55a4e\"];\r\nconst successColor = [\"#4caf50\", \"#66bb6a\", \"#43a047\", \"#5cb860\"];\r\nconst infoColor = [\"#00acc1\", \"#26c6da\", \"#00acc1\", \"#00d3ee\"];\r\nconst roseColor = [\"#e91e63\", \"#ec407a\", \"#d81b60\", \"#eb3573\"];\r\nconst grayColor = [\r\n \"#999\",\r\n \"#777\",\r\n \"#3C4858\",\r\n \"#AAAAAA\",\r\n \"#D2D2D2\",\r\n \"#DDD\",\r\n \"#b4b4b4\",\r\n \"#555555\",\r\n \"#333\",\r\n \"#a9afbb\",\r\n \"#eee\",\r\n \"#e7e7e7\"\r\n];\r\nconst blackColor = \"#000\";\r\nconst whiteColor = \"#FFF\";\r\n\r\nconst boxShadow = {\r\n boxShadow:\r\n \"0 10px 30px -12px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.42), 0 4px 25px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\"\r\n};\r\n\r\nconst primaryBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \",.4)\"\r\n};\r\nconst infoBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.4)\"\r\n};\r\nconst successBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.4)\"\r\n};\r\nconst warningBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.4)\"\r\n};\r\nconst dangerBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.4)\"\r\n};\r\nconst roseBoxShadow = {\r\n boxShadow:\r\n \"0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.14), 0 7px 10px -5px rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \",.4)\"\r\n};\r\n\r\nconst warningCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + warningColor[1] + \", \" + warningColor[2] + \")\",\r\n ...warningBoxShadow\r\n};\r\nconst successCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + successColor[1] + \", \" + successColor[2] + \")\",\r\n ...successBoxShadow\r\n};\r\nconst dangerCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + dangerColor[1] + \", \" + dangerColor[2] + \")\",\r\n ...dangerBoxShadow\r\n};\r\nconst infoCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + infoColor[1] + \", \" + infoColor[2] + \")\",\r\n ...infoBoxShadow\r\n};\r\nconst primaryCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + primaryColor[1] + \", \" + primaryColor[2] + \")\",\r\n ...primaryBoxShadow\r\n};\r\nconst roseCardHeader = {\r\n background:\r\n \"linear-gradient(60deg, \" + roseColor[1] + \", \" + roseColor[2] + \")\",\r\n ...roseBoxShadow\r\n};\r\n\r\nconst cardActions = {\r\n margin: \"0 20px 10px\",\r\n paddingTop: \"10px\",\r\n borderTop: \"1px solid \" + grayColor[10],\r\n height: \"auto\",\r\n ...defaultFont\r\n};\r\n\r\nconst cardHeader = {\r\n margin: \"-20px 15px 0\",\r\n borderRadius: \"3px\",\r\n padding: \"15px\"\r\n};\r\n\r\nconst card = {\r\n display: \"inline-block\",\r\n position: \"relative\",\r\n width: \"100%\",\r\n margin: \"25px 0\",\r\n boxShadow: \"0 1px 4px 0 rgba(\" + hexToRgb(blackColor) + \", 0.14)\",\r\n borderRadius: \"3px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.87)\",\r\n background: whiteColor\r\n};\r\n\r\nconst defaultBoxShadow = {\r\n border: \"0\",\r\n borderRadius: \"3px\",\r\n boxShadow:\r\n \"0 10px 20px -12px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.42), 0 3px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\",\r\n padding: \"10px 0\",\r\n transition: \"all 150ms ease 0s\"\r\n};\r\n\r\nconst title = {\r\n color: grayColor[2],\r\n textDecoration: \"none\",\r\n fontWeight: \"300\",\r\n marginTop: \"30px\",\r\n marginBottom: \"25px\",\r\n minHeight: \"32px\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n \"& small\": {\r\n color: grayColor[1],\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n};\r\n\r\nconst cardTitle = {\r\n ...title,\r\n marginTop: \"0\",\r\n marginBottom: \"3px\",\r\n minHeight: \"auto\",\r\n \"& a\": {\r\n ...title,\r\n marginTop: \".625rem\",\r\n marginBottom: \"0.75rem\",\r\n minHeight: \"auto\"\r\n }\r\n};\r\n\r\nconst cardSubtitle = {\r\n marginTop: \"-.375rem\"\r\n};\r\n\r\nconst cardLink = {\r\n \"& + $cardLink\": {\r\n marginLeft: \"1.25rem\"\r\n }\r\n};\r\n\r\nexport {\r\n hexToRgb,\r\n //variables\r\n drawerWidth,\r\n transition,\r\n container,\r\n boxShadow,\r\n card,\r\n defaultFont,\r\n primaryColor,\r\n secondaryColor,\r\n warningColor,\r\n dangerColor,\r\n successColor,\r\n infoColor,\r\n roseColor,\r\n grayColor,\r\n blackColor,\r\n whiteColor,\r\n primaryBoxShadow,\r\n infoBoxShadow,\r\n successBoxShadow,\r\n warningBoxShadow,\r\n dangerBoxShadow,\r\n roseBoxShadow,\r\n warningCardHeader,\r\n successCardHeader,\r\n dangerCardHeader,\r\n infoCardHeader,\r\n primaryCardHeader,\r\n roseCardHeader,\r\n cardActions,\r\n cardHeader,\r\n defaultBoxShadow,\r\n title,\r\n cardTitle,\r\n cardSubtitle,\r\n cardLink\r\n};\r\n","import {\r\n grayColor,\r\n primaryColor,\r\n secondaryColor,\r\n infoColor,\r\n successColor,\r\n warningColor,\r\n dangerColor,\r\n roseColor,\r\n whiteColor,\r\n blackColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst buttonStyle = {\r\n button: {\r\n minHeight: \"auto\",\r\n minWidth: \"auto\",\r\n backgroundColor: grayColor[0],\r\n color: whiteColor,\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.12)\",\r\n border: \"none\",\r\n borderRadius: \"3px\",\r\n position: \"relative\",\r\n padding: \"12px 30px\",\r\n margin: \".3125rem 1px\",\r\n fontSize: \"12px\",\r\n fontWeight: \"400\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0\",\r\n willChange: \"box-shadow, transform\",\r\n transition:\r\n \"box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\r\n lineHeight: \"1.42857143\",\r\n textAlign: \"center\",\r\n whiteSpace: \"nowrap\",\r\n verticalAlign: \"middle\",\r\n touchAction: \"manipulation\",\r\n cursor: \"pointer\",\r\n \"&:hover,&:focus\": {\r\n color: whiteColor,\r\n backgroundColor: grayColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(grayColor[0]) +\r\n \", 0.2)\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal, &.material-icons\": {\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n top: \"0\",\r\n marginTop: \"-1em\",\r\n marginBottom: \"-1em\",\r\n fontSize: \"1.1rem\",\r\n marginRight: \"4px\",\r\n verticalAlign: \"middle\"\r\n },\r\n \"& svg\": {\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n top: \"0\",\r\n width: \"18px\",\r\n height: \"18px\",\r\n marginRight: \"4px\",\r\n verticalAlign: \"middle\"\r\n },\r\n \"&$justIcon\": {\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n marginTop: \"0px\",\r\n position: \"absolute\",\r\n width: \"100%\",\r\n transform: \"none\",\r\n left: \"0px\",\r\n top: \"0px\",\r\n height: \"100%\",\r\n lineHeight: \"41px\",\r\n fontSize: \"20px\"\r\n }\r\n }\r\n },\r\n white: {\r\n \"&,&:focus,&:hover\": {\r\n backgroundColor: whiteColor,\r\n color: primaryColor[0]\r\n }\r\n },\r\n rose: {\r\n backgroundColor: roseColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: roseColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(roseColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n primary: {\r\n backgroundColor: primaryColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: primaryColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(primaryColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n secondary: {\r\n backgroundColor: secondaryColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(secondaryColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(secondaryColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(secondaryColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: secondaryColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(secondaryColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(secondaryColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n info: {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n success: {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n warning: {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n danger: {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 2px 2px 0 rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.14), 0 3px 1px -2px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.2), 0 1px 5px 0 rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.12)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 14px 26px -12px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.42), 0 4px 23px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \", 0.2)\"\r\n }\r\n },\r\n simple: {\r\n \"&,&:focus,&:hover\": {\r\n color: whiteColor,\r\n background: \"transparent\",\r\n boxShadow: \"none\"\r\n },\r\n \"&$rose\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: roseColor[0]\r\n }\r\n },\r\n \"&$primary\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: primaryColor[0]\r\n }\r\n },\r\n \"&$secondary\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: secondaryColor[0]\r\n }\r\n },\r\n \"&$info\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: infoColor[0]\r\n }\r\n },\r\n \"&$success\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: successColor[0]\r\n }\r\n },\r\n \"&$warning\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: warningColor[0]\r\n }\r\n },\r\n \"&$danger\": {\r\n \"&,&:focus,&:hover,&:visited\": {\r\n color: dangerColor[0]\r\n }\r\n }\r\n },\r\n transparent: {\r\n \"&,&:focus,&:hover\": {\r\n color: \"inherit\",\r\n background: \"transparent\",\r\n boxShadow: \"none\"\r\n }\r\n },\r\n disabled: {\r\n opacity: \"0.65\",\r\n pointerEvents: \"none\"\r\n },\r\n lg: {\r\n padding: \"1.125rem 2.25rem\",\r\n fontSize: \"0.875rem\",\r\n lineHeight: \"1.333333\",\r\n borderRadius: \"0.2rem\"\r\n },\r\n sm: {\r\n padding: \"0.40625rem 1.25rem\",\r\n fontSize: \"0.6875rem\",\r\n lineHeight: \"1.5\",\r\n borderRadius: \"0.2rem\"\r\n },\r\n round: {\r\n borderRadius: \"30px\"\r\n },\r\n block: {\r\n width: \"100% !important\"\r\n },\r\n link: {\r\n \"&,&:hover,&:focus\": {\r\n backgroundColor: \"transparent\",\r\n color: grayColor[0],\r\n boxShadow: \"none\"\r\n }\r\n },\r\n justIcon: {\r\n paddingLeft: \"12px\",\r\n paddingRight: \"12px\",\r\n fontSize: \"20px\",\r\n height: \"41px\",\r\n minWidth: \"41px\",\r\n width: \"41px\",\r\n \"& .fab,& .fas,& .far,& .fal,& svg,& .material-icons\": {\r\n marginRight: \"0px\"\r\n },\r\n \"&$lg\": {\r\n height: \"57px\",\r\n minWidth: \"57px\",\r\n width: \"57px\",\r\n lineHeight: \"56px\",\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n fontSize: \"32px\",\r\n lineHeight: \"56px\"\r\n },\r\n \"& svg\": {\r\n width: \"32px\",\r\n height: \"32px\"\r\n }\r\n },\r\n \"&$sm\": {\r\n height: \"30px\",\r\n minWidth: \"30px\",\r\n width: \"30px\",\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n fontSize: \"17px\",\r\n lineHeight: \"29px\"\r\n },\r\n \"& svg\": {\r\n width: \"17px\",\r\n height: \"17px\"\r\n }\r\n }\r\n }\r\n};\r\n\r\nexport default buttonStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n\r\n// material-ui components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Button from \"@material-ui/core/Button\";\r\n\r\nimport buttonStyle from \"assets/jss/material-dashboard-react/components/buttonStyle.jsx\";\r\nfunction RegularButton({ ...props }) {\r\n const {\r\n classes,\r\n color,\r\n round,\r\n children,\r\n disabled,\r\n simple,\r\n size,\r\n block,\r\n link,\r\n justIcon,\r\n className,\r\n muiClasses,\r\n ...rest\r\n } = props;\r\n const btnClasses = classNames({\r\n [classes.button]: true,\r\n [classes[size]]: size,\r\n [classes[color]]: color,\r\n [classes.round]: round,\r\n [classes.disabled]: disabled,\r\n [classes.simple]: simple,\r\n [classes.block]: block,\r\n [classes.link]: link,\r\n [classes.justIcon]: justIcon,\r\n [className]: className\r\n });\r\n return (\r\n \r\n );\r\n}\r\n\r\nRegularButton.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n color: PropTypes.oneOf([\r\n \"primary\",\r\n \"secondary\",\r\n \"info\",\r\n \"success\",\r\n \"warning\",\r\n \"danger\",\r\n \"rose\",\r\n \"white\",\r\n \"transparent\"\r\n ]),\r\n size: PropTypes.oneOf([\"sm\", \"lg\"]),\r\n simple: PropTypes.bool,\r\n round: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n block: PropTypes.bool,\r\n link: PropTypes.bool,\r\n justIcon: PropTypes.bool,\r\n className: PropTypes.string,\r\n // use this to pass the classes props from Material-UI\r\n muiClasses: PropTypes.object\r\n};\r\n\r\nexport default withStyles(buttonStyle)(RegularButton);\r\n","import {\r\n primaryColor,\r\n whiteColor,\r\n primaryBoxShadow,\r\n defaultFont,\r\n blackColor,\r\n grayColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst dropdownStyle = theme => ({\r\n buttonLink: {\r\n [theme.breakpoints.down(\"md\")]: {\r\n display: \"flex\",\r\n marginLeft: \"30px\",\r\n width: \"auto\"\r\n }\r\n },\r\n links: {\r\n width: \"20px\",\r\n height: \"20px\",\r\n zIndex: \"4\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n display: \"block\",\r\n width: \"30px\",\r\n height: \"30px\",\r\n color: grayColor[9],\r\n marginRight: \"15px\"\r\n }\r\n },\r\n linkText: {\r\n zIndex: \"4\",\r\n ...defaultFont,\r\n fontSize: \"14px\"\r\n },\r\n popperClose: {\r\n pointerEvents: \"none\"\r\n },\r\n pooperResponsive: {\r\n [theme.breakpoints.down(\"md\")]: {\r\n zIndex: \"1640\",\r\n position: \"static\",\r\n float: \"none\",\r\n width: \"auto\",\r\n marginTop: \"0\",\r\n backgroundColor: \"transparent\",\r\n border: \"0\",\r\n WebkitBoxShadow: \"none\",\r\n boxShadow: \"none\",\r\n color: \"black\"\r\n }\r\n },\r\n pooperNav: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n position: \"static !important\",\r\n left: \"unset !important\",\r\n top: \"unset !important\",\r\n transform: \"none !important\",\r\n willChange: \"none !important\",\r\n \"& > div\": {\r\n boxShadow: \"none !important\",\r\n marginLeft: \"0rem\",\r\n marginRight: \"0rem\",\r\n transition: \"none !important\",\r\n marginTop: \"0px !important\",\r\n marginBottom: \"0px !important\",\r\n padding: \"0px !important\",\r\n backgroundColor: \"transparent !important\",\r\n \"& ul li\": {\r\n color: whiteColor + \" !important\",\r\n margin: \"10px 15px 0!important\",\r\n padding: \"10px 15px !important\",\r\n \"&:hover\": {\r\n backgroundColor: \"hsla(0,0%,78%,.2)\",\r\n boxShadow: \"none\"\r\n }\r\n }\r\n }\r\n }\r\n },\r\n dropdown: {\r\n borderRadius: \"3px\",\r\n border: \"0\",\r\n boxShadow: \"0 2px 5px 0 rgba(\" + hexToRgb(blackColor) + \", 0.26)\",\r\n top: \"100%\",\r\n zIndex: \"1000\",\r\n minWidth: \"160px\",\r\n padding: \"5px 0\",\r\n margin: \"2px 0 0\",\r\n fontSize: \"14px\",\r\n textAlign: \"left\",\r\n listStyle: \"none\",\r\n backgroundColor: whiteColor,\r\n WebkitBackgroundClip: \"padding-box\",\r\n backgroundClip: \"padding-box\"\r\n },\r\n dropdownItem: {\r\n ...defaultFont,\r\n fontSize: \"13px\",\r\n padding: \"10px 20px\",\r\n margin: \"0 5px\",\r\n borderRadius: \"2px\",\r\n WebkitTransition: \"all 150ms linear\",\r\n MozTransition: \"all 150ms linear\",\r\n OTransition: \"all 150ms linear\",\r\n MsTransition: \"all 150ms linear\",\r\n transition: \"all 150ms linear\",\r\n display: \"block\",\r\n clear: \"both\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1.42857143\",\r\n color: grayColor[8],\r\n whiteSpace: \"nowrap\",\r\n height: \"unset\",\r\n \"&:hover\": {\r\n backgroundColor: primaryColor[0],\r\n color: whiteColor,\r\n ...primaryBoxShadow\r\n }\r\n }\r\n});\r\n\r\nexport default dropdownStyle;\r\n","import {\r\n defaultFont,\r\n dangerColor,\r\n whiteColor\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nimport dropdownStyle from \"assets/jss/material-dashboard-react/dropdownStyle.jsx\";\r\n\r\nconst headerLinksStyle = theme => ({\r\n ...dropdownStyle(theme),\r\n search: {\r\n \"& > div\": {\r\n marginTop: \"0\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n margin: \"10px 15px !important\",\r\n float: \"none !important\",\r\n paddingTop: \"1px\",\r\n paddingBottom: \"1px\",\r\n padding: \"0!important\",\r\n width: \"60%\",\r\n marginTop: \"40px\",\r\n \"& input\": {\r\n color: whiteColor\r\n }\r\n }\r\n },\r\n linkText: {\r\n zIndex: \"4\",\r\n ...defaultFont,\r\n fontSize: \"14px\",\r\n margin: \"0px\"\r\n },\r\n buttonLink: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"flex\",\r\n // margin: \"10px 15px 0\",\r\n width: \"-webkit-fill-available\",\r\n \"& svg\": {\r\n width: \"24px\",\r\n height: \"30px\",\r\n marginRight: \"15px\",\r\n marginLeft: \"-15px\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n fontSize: \"24px\",\r\n lineHeight: \"30px\",\r\n width: \"24px\",\r\n height: \"30px\",\r\n marginRight: \"15px\",\r\n marginLeft: \"-15px\"\r\n },\r\n \"& > span\": {\r\n justifyContent: \"flex-start\",\r\n width: \"100%\"\r\n }\r\n }\r\n },\r\n searchButton: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n top: \"-50px !important\",\r\n marginRight: \"22px\",\r\n float: \"right\"\r\n }\r\n },\r\n margin: {\r\n zIndex: \"4\",\r\n margin: \"0\"\r\n },\r\n searchIcon: {\r\n width: \"17px\",\r\n zIndex: \"4\"\r\n },\r\n notifications: {\r\n zIndex: \"4\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n position: \"absolute\",\r\n top: \"2px\",\r\n border: \"1px solid \" + whiteColor,\r\n right: \"4px\",\r\n fontSize: \"9px\",\r\n background: dangerColor[0],\r\n color: whiteColor,\r\n minWidth: \"16px\",\r\n height: \"16px\",\r\n borderRadius: \"10px\",\r\n textAlign: \"center\",\r\n lineHeight: \"16px\",\r\n verticalAlign: \"middle\",\r\n display: \"block\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n ...defaultFont,\r\n fontSize: \"14px\",\r\n marginRight: \"8px\"\r\n }\r\n },\r\n manager: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\"\r\n },\r\n display: \"inline-block\"\r\n },\r\n searchWrapper: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"-webkit-fill-available\",\r\n margin: \"10px 15px 0\"\r\n },\r\n display: \"inline-block\"\r\n }\r\n});\r\n\r\nexport default headerLinksStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport { NavLink } from 'react-router-dom'\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport MenuList from \"@material-ui/core/MenuList\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport Poppers from \"@material-ui/core/Popper\";\r\n// @material-ui/icons\r\nimport Person from \"@material-ui/icons/Person\";\r\nimport Notifications from \"@material-ui/icons/Notifications\";\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\n\r\nimport headerLinksStyle from \"assets/jss/material-dashboard-react/components/headerLinksStyle.jsx\";\r\n// Extra libs\r\nimport Cookies from \"js-cookie\";\r\n\r\nclass HeaderLinks extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n open: false,\r\n openProfileMenu: false\r\n };\r\n }\r\n\r\n handleToggle = () => \r\n {\r\n this.setState(state => ({ open: !state.open }));\r\n };\r\n\r\n handleProfileMenuToggle = () =>\r\n {\r\n this.setState(state => ({ openProfileMenu: !state.open }));\r\n }\r\n\r\n handleClose = event => \r\n {\r\n if (this.anchorEl.contains(event.target)) \r\n {\r\n return;\r\n }\r\n\r\n this.setState({ open: false });\r\n };\r\n\r\n handleProfileMenuClose = event => \r\n {\r\n if (this.anchorEl.contains(event.target)) \r\n {\r\n return;\r\n }\r\n\r\n this.setState({ openProfileMenu: false });\r\n };\r\n\r\n render() \r\n {\r\n const { classes } = this.props;\r\n const { open, openProfileMenu } = this.state;\r\n \r\n return (\r\n
\r\n
\r\n {/* {\r\n this.anchorEl = node;\r\n }}\r\n color={window.innerWidth > 959 ? \"transparent\" : \"white\"}\r\n justIcon={window.innerWidth > 959}\r\n simple={!(window.innerWidth > 959)}\r\n aria-owns={open ? \"menu-list-grow\" : null}\r\n aria-haspopup=\"true\"\r\n onClick={this.handleToggle}\r\n className={classes.buttonLink}>\r\n \r\n \r\n 3\r\n \r\n

\r\n Notification\r\n

\r\n
\r\n */}\r\n\r\n \r\n \r\n {({ TransitionProps, placement }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Mike John responded to your email\r\n \r\n \r\n You have 5 new tasks\r\n \r\n \r\n You're now friend with Andrew\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n\r\n\r\n
\r\n \r\n {\r\n this.anchorEl = node;\r\n }}\r\n color={window.innerWidth > 959 ? \"transparent\" : \"white\"}\r\n justIcon={window.innerWidth > 959}\r\n simple={!(window.innerWidth > 959)}\r\n aria-owns={openProfileMenu ? \"menu-list-grow\" : null}\r\n aria-haspopup=\"true\"\r\n aria-label=\"Person\"\r\n onClick={this.handleProfileMenuToggle}\r\n className={classes.buttonLink}>\r\n\r\n \r\n \r\n \r\n

{globalData.loggedInUser.FullName}

\r\n
\r\n \r\n \r\n \r\n {({ TransitionProps, placement }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n My Profile\r\n \r\n \r\n \r\n \r\n {\r\n Cookies.remove(\"auth\");\r\n Cookies.set(\"logoutSession\", \"true\");\r\n }}>\r\n Sign out\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 withStyles(headerLinksStyle)(HeaderLinks);\r\n","import {\r\n container,\r\n defaultFont,\r\n primaryColor,\r\n defaultBoxShadow,\r\n infoColor,\r\n successColor,\r\n warningColor,\r\n dangerColor,\r\n whiteColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst headerStyle = theme => ({\r\n appBar: {\r\n backgroundColor: \"transparent\",\r\n boxShadow: \"none\",\r\n borderBottom: \"0\",\r\n marginBottom: \"0\",\r\n position: \"absolute\",\r\n width: \"100%\",\r\n paddingTop: \"10px\",\r\n zIndex: \"1029\",\r\n color: grayColor[7],\r\n border: \"0\",\r\n borderRadius: \"3px\",\r\n padding: \"10px 0\",\r\n transition: \"all 150ms ease 0s\",\r\n minHeight: \"50px\",\r\n display: \"block\"\r\n },\r\n container: {\r\n ...container,\r\n minHeight: \"50px\"\r\n },\r\n flex: {\r\n flex: 1\r\n },\r\n title: {\r\n ...defaultFont,\r\n lineHeight: \"30px\",\r\n fontSize: \"18px\",\r\n borderRadius: \"3px\",\r\n textTransform: \"none\",\r\n color: \"inherit\",\r\n margin: \"0\",\r\n \"&:hover,&:focus\": {\r\n background: \"transparent\"\r\n }\r\n },\r\n appResponsive: {\r\n top: \"8px\"\r\n },\r\n primary: {\r\n backgroundColor: primaryColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n info: {\r\n backgroundColor: infoColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n success: {\r\n backgroundColor: successColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n warning: {\r\n backgroundColor: warningColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n danger: {\r\n backgroundColor: dangerColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n }\r\n});\r\n\r\nexport default headerStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\n// @material-ui/icons\r\nimport Menu from \"@material-ui/icons/Menu\";\r\n// core components\r\nimport AdminNavbarLinks from \"./AdminNavbarLinks.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\n\r\nimport headerStyle from \"assets/jss/material-dashboard-react/components/headerStyle.jsx\";\r\n\r\nfunction Header({ ...props }) \r\n{\r\n function makeBrand() \r\n {\r\n var name;\r\n props.routes.map((prop, key) => \r\n {\r\n if (prop.path === props.location.pathname) \r\n {\r\n name = props.rtlActive ? prop.rtlName : prop.name;\r\n }\r\n return null;\r\n });\r\n return name;\r\n }\r\n const { classes, color } = props;\r\n const appBarClasses = classNames({\r\n [\" \" + classes[color]]: color\r\n });\r\n return (\r\n \r\n \r\n
\r\n {/* Here we create navbar brand, based on route name */}\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\nHeader.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n color: PropTypes.oneOf([\"primary\", \"info\", \"success\", \"warning\", \"danger\"])\r\n};\r\n\r\nexport default withStyles(headerStyle)(Header);\r\n","import {\r\n defaultFont,\r\n container,\r\n primaryColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst footerStyle = {\r\n block: {\r\n color: \"inherit\",\r\n padding: \"15px\",\r\n textTransform: \"uppercase\",\r\n borderRadius: \"3px\",\r\n textDecoration: \"none\",\r\n position: \"relative\",\r\n display: \"block\",\r\n ...defaultFont,\r\n fontWeight: \"500\",\r\n fontSize: \"12px\"\r\n },\r\n left: {\r\n float: \"left!important\",\r\n display: \"block\"\r\n },\r\n right: {\r\n padding: \"15px 0\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n float: \"right!important\"\r\n },\r\n footer: {\r\n bottom: \"0\",\r\n borderTop: \"1px solid \" + grayColor[11],\r\n padding: \"0\",\r\n ...defaultFont\r\n },\r\n container,\r\n a: {\r\n color: primaryColor,\r\n textDecoration: \"none\",\r\n backgroundColor: \"transparent\"\r\n },\r\n list: {\r\n marginBottom: \"0\",\r\n padding: \"0\",\r\n marginTop: \"0\"\r\n },\r\n inlineBlock: {\r\n display: \"inline-block\",\r\n padding: \"0px\",\r\n width: \"auto\"\r\n }\r\n};\r\nexport default footerStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport footerStyle from \"assets/jss/material-dashboard-react/components/footerStyle.jsx\";\r\n\r\nfunction Footer({ ...props }) {\r\n const { classes } = props;\r\n return (\r\n \r\n );\r\n}\r\n\r\nFooter.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(footerStyle)(Footer);\r\n","import {\r\n drawerWidth,\r\n transition,\r\n boxShadow,\r\n defaultFont,\r\n primaryColor,\r\n primaryBoxShadow,\r\n infoColor,\r\n successColor,\r\n warningColor,\r\n dangerColor,\r\n whiteColor,\r\n grayColor,\r\n blackColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst sidebarStyle = theme => ({\r\n drawerPaper: {\r\n border: \"none\",\r\n position: \"fixed\",\r\n top: \"0\",\r\n bottom: \"0\",\r\n left: \"0\",\r\n zIndex: \"1\",\r\n ...boxShadow,\r\n width: drawerWidth,\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: drawerWidth,\r\n position: \"fixed\",\r\n height: \"100%\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: drawerWidth,\r\n ...boxShadow,\r\n position: \"fixed\",\r\n display: \"block\",\r\n top: \"0\",\r\n height: \"100vh\",\r\n right: \"0\",\r\n left: \"auto\",\r\n zIndex: \"1032\",\r\n visibility: \"visible\",\r\n overflowY: \"visible\",\r\n borderTop: \"none\",\r\n textAlign: \"left\",\r\n paddingRight: \"0px\",\r\n paddingLeft: \"0\",\r\n transform: `translate3d(${drawerWidth}px, 0, 0)`,\r\n ...transition\r\n }\r\n },\r\n drawerPaperRTL: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n left: \"auto !important\",\r\n right: \"0 !important\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n left: \"0 !important\",\r\n right: \"auto !important\"\r\n }\r\n },\r\n logo: {\r\n position: \"relative\",\r\n padding: \"15px 15px\",\r\n zIndex: \"4\",\r\n \"&:after\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n bottom: \"0\",\r\n\r\n height: \"1px\",\r\n right: \"15px\",\r\n width: \"calc(100% - 30px)\",\r\n backgroundColor: \"rgba(\" + hexToRgb(grayColor[6]) + \", 0.3)\"\r\n }\r\n },\r\n logoLink: {\r\n ...defaultFont,\r\n textTransform: \"uppercase\",\r\n padding: \"5px 0\",\r\n display: \"block\",\r\n fontSize: \"18px\",\r\n textAlign: \"left\",\r\n fontWeight: \"400\",\r\n lineHeight: \"30px\",\r\n textDecoration: \"none\",\r\n backgroundColor: \"transparent\",\r\n \"&,&:hover\": {\r\n color: whiteColor\r\n }\r\n },\r\n textOnlyLink: {\r\n ...defaultFont,\r\n textTransform: \"uppercase\",\r\n marginLeft: \"15px\",\r\n padding: \"5px 0\",\r\n display: \"block\",\r\n fontSize: \"18px\",\r\n textAlign: \"left\",\r\n fontWeight: \"400\",\r\n lineHeight: \"30px\",\r\n textDecoration: \"none\",\r\n backgroundColor: \"transparent\",\r\n \"&,&:hover\": {\r\n color: whiteColor\r\n }\r\n },\r\n logoLinkRTL: {\r\n textAlign: \"right\"\r\n },\r\n logoImage: {\r\n width: \"30px\",\r\n display: \"inline-block\",\r\n maxHeight: \"30px\",\r\n marginLeft: \"10px\",\r\n marginRight: \"15px\"\r\n },\r\n img: {\r\n width: \"35px\",\r\n top: \"22px\",\r\n position: \"absolute\",\r\n verticalAlign: \"middle\",\r\n border: \"0\"\r\n },\r\n background: {\r\n position: \"absolute\",\r\n zIndex: \"1\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n display: \"block\",\r\n top: \"0\",\r\n left: \"0\",\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center center\",\r\n \"&:after\": {\r\n position: \"absolute\",\r\n zIndex: \"3\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n content: '\"\"',\r\n display: \"block\",\r\n background: blackColor,\r\n opacity: \".8\"\r\n }\r\n },\r\n list: {\r\n marginTop: \"20px\",\r\n paddingLeft: \"0\",\r\n paddingTop: \"0\",\r\n paddingBottom: \"0\",\r\n marginBottom: \"0\",\r\n listStyle: \"none\",\r\n position: \"unset\"\r\n },\r\n item: {\r\n position: \"relative\",\r\n display: \"block\",\r\n textDecoration: \"none\",\r\n \"&:hover,&:focus,&:visited,&\": {\r\n color: whiteColor\r\n }\r\n },\r\n itemLink: {\r\n width: \"auto\",\r\n transition: \"all 300ms linear\",\r\n // margin: \"10px 15px 0\",\r\n borderRadius: \"3px\",\r\n position: \"relative\",\r\n display: \"block\",\r\n padding: \"10px 15px\",\r\n backgroundColor: \"transparent\",\r\n ...defaultFont\r\n },\r\n itemIcon: {\r\n width: \"24px\",\r\n height: \"30px\",\r\n fontSize: \"24px\",\r\n lineHeight: \"30px\",\r\n float: \"left\",\r\n marginRight: \"15px\",\r\n textAlign: \"center\",\r\n verticalAlign: \"middle\",\r\n color: \"rgba(\" + hexToRgb(whiteColor) + \", 0.8)\"\r\n },\r\n itemIconRTL: {\r\n marginRight: \"3px\",\r\n marginLeft: \"15px\",\r\n float: \"right\"\r\n },\r\n itemText: {\r\n ...defaultFont,\r\n margin: \"0\",\r\n lineHeight: \"30px\",\r\n fontSize: \"14px\",\r\n color: whiteColor\r\n },\r\n subItemText: {\r\n ...defaultFont,\r\n margin: \"0\",\r\n lineHeight: \"10px\",\r\n fontSize: \"13px\",\r\n color: whiteColor\r\n },\r\n itemTextRTL: {\r\n textAlign: \"right\"\r\n },\r\n whiteFont: {\r\n color: whiteColor\r\n },\r\n purple: {\r\n backgroundColor: primaryColor[0],\r\n ...primaryBoxShadow,\r\n \"&:hover\": {\r\n backgroundColor: primaryColor[0],\r\n ...primaryBoxShadow\r\n }\r\n },\r\n blue: {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.2)\",\r\n \"&:hover\": {\r\n backgroundColor: infoColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(infoColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n green: {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.2)\",\r\n \"&:hover\": {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n orange: {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.2)\",\r\n \"&:hover\": {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n red: {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.2)\",\r\n \"&:hover\": {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n neutral: \r\n {\r\n backgroundColor: \"#adadad99\",\r\n \"&:hover\": \r\n {\r\n backgroundColor: \"#adadad99\"\r\n }\r\n },\r\n sidebarWrapper: {\r\n position: \"relative\",\r\n height: \"calc(100vh - 75px)\",\r\n overflow: \"auto\",\r\n width: \"260px\",\r\n zIndex: \"4\",\r\n overflowScrolling: \"touch\"\r\n },\r\n activePro: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n bottom: \"13px\"\r\n }\r\n }\r\n});\r\n\r\nexport default sidebarStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\nimport { NavLink } from \"react-router-dom\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport Icon from \"@material-ui/core/Icon\";\r\n// core components\r\nimport AdminNavbarLinks from \"components/Navbars/AdminNavbarLinks.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nimport sidebarStyle from \"assets/jss/material-dashboard-react/components/sidebarStyle.jsx\";\r\n\r\nconst Sidebar = ({ ...props }) => \r\n{\r\n /**\r\n * Verifies if the current page contains the provided routeName.\r\n * @param {*} routeName \r\n */\r\n function activeRoute(routeName) \r\n {\r\n return props.location.pathname.indexOf(routeName) > -1 ? true : false;\r\n }\r\n\r\n function urlContainsParentRoute(parentRoute)\r\n {\r\n // If no parentRoute was specified, return true.\r\n if (parentRoute === null)\r\n return true;\r\n\r\n // Check if current url contains the specified parentroute.\r\n return props.location.pathname.indexOf(parentRoute) > -1 ? true : false;\r\n }\r\n\r\n const { classes, color, image, logoText, routes } = props;\r\n\r\n var links = (\r\n \r\n {\r\n routes.map((prop, key) => \r\n {\r\n // Don't render route has displayRoute = false.\r\n // Don't render route if the user doesn't own the required permissions.\r\n // Don't render route if the route is a subroute, and parent route is not in the current page url.\r\n if (!prop.displayRoute || \r\n !PMUtils.userHasAllRequiredPermissions(prop.portalPermissionsMinimum, globalData.loggedInUser.PortalPermissions) ||\r\n !PMUtils.userHasAnyRequiredPermissions(prop.portalPermissions, globalData.loggedInUser.PortalPermissions) || \r\n !urlContainsParentRoute(prop.parentRoute))\r\n {\r\n return null;\r\n }\r\n\r\n var activePro = \" \";\r\n var listItemClasses;\r\n\r\n // Add css to sidebar items.\r\n listItemClasses = classNames(\r\n {\r\n [\" \" + classes[color]]: activeRoute(prop.path)\r\n });\r\n\r\n const whiteFontClasses = classNames(\r\n {\r\n [\" \" + classes.whiteFont]: activeRoute(prop.path)\r\n });\r\n \r\n if (!prop.isLink)\r\n {\r\n return (\r\n \r\n \r\n \r\n {\r\n typeof prop.icon === \"string\" || prop.icon === null\r\n ? \r\n (\r\n \r\n {prop.icon}\r\n \r\n ) \r\n : \r\n (\r\n \r\n )}\r\n \r\n {\r\n // Check if the route is a subroute\r\n // If it is, render a subroute, else render a parent route.\r\n prop.parentRoute === null \r\n ?\r\n (\r\n // Render parent route\r\n \r\n )\r\n :\r\n (\r\n // Render subroute\r\n \r\n )\r\n } \r\n \r\n \r\n );\r\n }\r\n else\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n typeof prop.icon === \"string\" || prop.icon === null\r\n ? \r\n (\r\n \r\n {prop.icon}\r\n \r\n ) \r\n : \r\n (\r\n \r\n )}\r\n \r\n {\r\n // Check if the route is a subroute\r\n // If it is, render a subroute, else render a parent route.\r\n prop.parentRoute === null \r\n ?\r\n (\r\n // Render parent route\r\n \r\n )\r\n :\r\n (\r\n // Render subroute\r\n \r\n )\r\n } \r\n \r\n \r\n );\r\n }\r\n })}\r\n \r\n );\r\n\r\n var brand = (\r\n
\r\n \r\n {logoText}\r\n \r\n
\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n {brand}\r\n
\r\n \r\n {links}\r\n
\r\n {image !== undefined ? (\r\n \r\n ) : null}\r\n \r\n
\r\n \r\n \r\n {brand}\r\n
{links}
\r\n {image !== undefined ? (\r\n \r\n ) : null}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nSidebar.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(sidebarStyle)(Sidebar);\r\n","import React from \"react\";\r\n\r\nimport Spinner from \"assets/img/svg/spinner.svg\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nfunction LoadingIndicator({ ...props }) \r\n{\r\n const { loadingText, fullScreen, bigSpinner } = props;\r\n\r\n const style =\r\n {\r\n width: \"100%\",\r\n height: \"75%\",\r\n \r\n position: (fullScreen ? \"absolute\" : \"\"),\r\n top:0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n \r\n textAlign: \"center\",\r\n margin: \"auto\"\r\n }\r\n\r\n return (\r\n
\r\n {\r\n bigSpinner ? \"Spinner\" : \r\n } \r\n
\r\n {loadingText}\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default (LoadingIndicator);","import React from \"react\";\r\n\r\nimport ErrorLogo from \"assets/img/broken-cloud.png\";\r\n\r\nfunction ErrorIndicator({ ...props }) \r\n{\r\n const { errorText } = props;\r\n\r\n const style =\r\n {\r\n width: \"100%\",\r\n height: \"75%\",\r\n \r\n //position: \"absolute\",\r\n top:0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0,\r\n \r\n textAlign: \"center\",\r\n margin: \"auto\"\r\n }\r\n\r\n const imageStyle =\r\n {\r\n width: \"190px\",\r\n height: \"130px\"\r\n }\r\n\r\n return (\r\n
\r\n \"Error\"\r\n
\r\n {errorText}\r\n
\r\n \r\n );\r\n}\r\n\r\nexport default (ErrorIndicator);","import React from \"react\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nconst style = theme => ({\r\n grid: {\r\n padding: \"0 15px !important\"\r\n }\r\n});\r\n\r\nfunction GridItem({ ...props }) {\r\n const { classes, children, ...rest } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default withStyles(style)(GridItem);\r\n","import React from \"react\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\nconst style = {\r\n grid: {\r\n margin: \"0 -15px !important\",\r\n width: \"unset\"\r\n }\r\n};\r\n\r\nfunction GridContainer(props) {\r\n const { classes, children, ...rest } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default withStyles(style)(GridContainer);\r\n","import {\r\n blackColor,\r\n whiteColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst cardStyle = {\r\n card: {\r\n border: \"0\",\r\n marginBottom: \"30px\",\r\n marginTop: \"30px\",\r\n borderRadius: \"6px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.87)\",\r\n background: whiteColor,\r\n width: \"100%\",\r\n boxShadow: \"0 1px 4px 0 rgba(\" + hexToRgb(blackColor) + \", 0.14)\",\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n minWidth: \"0\",\r\n wordWrap: \"break-word\",\r\n fontSize: \".875rem\"\r\n },\r\n cardPlain: {\r\n background: \"transparent\",\r\n boxShadow: \"none\"\r\n },\r\n cardProfile: {\r\n marginTop: \"30px\",\r\n textAlign: \"center\"\r\n },\r\n cardChart: {\r\n \"& p\": {\r\n marginTop: \"0px\",\r\n paddingTop: \"0px\"\r\n }\r\n }\r\n};\r\n\r\nexport default cardStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport cardStyle from \"assets/jss/material-dashboard-react/components/cardStyle.jsx\";\r\n\r\nfunction Card({ ...props }) {\r\n const {\r\n classes,\r\n className,\r\n children,\r\n plain,\r\n profile,\r\n chart,\r\n ...rest\r\n } = props;\r\n \r\n const cardClasses = classNames({\r\n [classes.card]: true,\r\n [classes.cardPlain]: plain,\r\n [classes.cardProfile]: profile,\r\n [classes.cardChart]: chart,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCard.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n plain: PropTypes.bool,\r\n profile: PropTypes.bool,\r\n chart: PropTypes.bool\r\n};\r\n\r\nexport default withStyles(cardStyle)(Card);\r\n","import {\r\n warningCardHeader,\r\n successCardHeader,\r\n dangerCardHeader,\r\n infoCardHeader,\r\n primaryCardHeader,\r\n roseCardHeader,\r\n whiteColor\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst cardHeaderStyle = {\r\n cardHeader: {\r\n padding: \"0.75rem 1.25rem\",\r\n marginBottom: \"0\",\r\n borderBottom: \"none\",\r\n background: \"transparent\",\r\n zIndex: \"3 !important\",\r\n \"&$cardHeaderPlain,&$cardHeaderIcon,&$cardHeaderStats,&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\r\n margin: \"0 15px\",\r\n padding: \"0\",\r\n position: \"relative\",\r\n color: whiteColor\r\n },\r\n \"&:first-child\": {\r\n borderRadius: \"calc(.25rem - 1px) calc(.25rem - 1px) 0 0\"\r\n },\r\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\r\n \"&:not($cardHeaderIcon)\": {\r\n borderRadius: \"3px\",\r\n marginTop: \"-20px\",\r\n padding: \"15px\"\r\n }\r\n },\r\n \"&$cardHeaderStats svg\": {\r\n fontSize: \"36px\",\r\n lineHeight: \"56px\",\r\n textAlign: \"center\",\r\n width: \"36px\",\r\n height: \"36px\",\r\n margin: \"10px 10px 4px\"\r\n },\r\n \"&$cardHeaderStats i,&$cardHeaderStats .material-icons\": {\r\n fontSize: \"36px\",\r\n lineHeight: \"56px\",\r\n width: \"56px\",\r\n height: \"56px\",\r\n textAlign: \"center\",\r\n overflow: \"unset\",\r\n marginBottom: \"1px\"\r\n },\r\n \"&$cardHeaderStats$cardHeaderIcon\": {\r\n textAlign: \"right\"\r\n }\r\n },\r\n cardHeaderPlain: {\r\n marginLeft: \"0px !important\",\r\n marginRight: \"0px !important\"\r\n },\r\n cardHeaderStats: {\r\n \"& $cardHeaderIcon\": {\r\n textAlign: \"right\"\r\n },\r\n \"& h1,& h2,& h3,& h4,& h5,& h6\": {\r\n margin: \"0 !important\"\r\n }\r\n },\r\n cardHeaderIcon: {\r\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\r\n background: \"transparent\",\r\n boxShadow: \"none\"\r\n },\r\n \"& i,& .material-icons\": {\r\n width: \"33px\",\r\n height: \"33px\",\r\n textAlign: \"center\",\r\n lineHeight: \"33px\"\r\n },\r\n \"& svg\": {\r\n width: \"24px\",\r\n height: \"24px\",\r\n textAlign: \"center\",\r\n lineHeight: \"33px\",\r\n margin: \"5px 4px 0px\"\r\n }\r\n },\r\n warningCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...warningCardHeader\r\n }\r\n },\r\n successCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...successCardHeader\r\n }\r\n },\r\n dangerCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...dangerCardHeader\r\n }\r\n },\r\n infoCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...infoCardHeader\r\n }\r\n },\r\n primaryCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...primaryCardHeader\r\n }\r\n },\r\n roseCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...roseCardHeader\r\n }\r\n }\r\n};\r\n\r\nexport default cardHeaderStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport cardHeaderStyle from \"assets/jss/material-dashboard-react/components/cardHeaderStyle.jsx\";\r\n\r\nfunction CardHeader({ ...props }) {\r\n const {\r\n classes,\r\n className,\r\n children,\r\n color,\r\n plain,\r\n stats,\r\n icon,\r\n ...rest\r\n } = props;\r\n const cardHeaderClasses = classNames({\r\n [classes.cardHeader]: true,\r\n [classes[color + \"CardHeader\"]]: color,\r\n [classes.cardHeaderPlain]: plain,\r\n [classes.cardHeaderStats]: stats,\r\n [classes.cardHeaderIcon]: icon,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCardHeader.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n color: PropTypes.oneOf([\r\n \"warning\",\r\n \"success\",\r\n \"danger\",\r\n \"info\",\r\n \"primary\",\r\n \"rose\"\r\n ]),\r\n plain: PropTypes.bool,\r\n stats: PropTypes.bool,\r\n icon: PropTypes.bool\r\n};\r\n\r\nexport default withStyles(cardHeaderStyle)(CardHeader);\r\n","import {\r\n warningCardHeader,\r\n successCardHeader,\r\n dangerCardHeader,\r\n infoCardHeader,\r\n primaryCardHeader,\r\n roseCardHeader,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst cardIconStyle = {\r\n cardIcon: {\r\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\r\n borderRadius: \"3px\",\r\n backgroundColor: grayColor[0],\r\n padding: \"15px\",\r\n marginTop: \"-20px\",\r\n marginRight: \"15px\",\r\n float: \"left\"\r\n }\r\n },\r\n warningCardHeader,\r\n successCardHeader,\r\n dangerCardHeader,\r\n infoCardHeader,\r\n primaryCardHeader,\r\n roseCardHeader\r\n};\r\n\r\nexport default cardIconStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport cardIconStyle from \"assets/jss/material-dashboard-react/components/cardIconStyle.jsx\";\r\n\r\nfunction CardIcon({ ...props }) {\r\n const { classes, className, children, color, ...rest } = props;\r\n const cardIconClasses = classNames({\r\n [classes.cardIcon]: true,\r\n [classes[color + \"CardHeader\"]]: color,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCardIcon.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n color: PropTypes.oneOf([\r\n \"warning\",\r\n \"success\",\r\n \"danger\",\r\n \"info\",\r\n \"primary\",\r\n \"rose\"\r\n ])\r\n};\r\n\r\nexport default withStyles(cardIconStyle)(CardIcon);\r\n","import { grayColor } from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst cardFooterStyle = {\r\n cardFooter: {\r\n padding: \"0\",\r\n paddingTop: \"10px\",\r\n margin: \"0 15px 10px\",\r\n borderRadius: \"0\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n backgroundColor: \"transparent\",\r\n border: \"0\"\r\n },\r\n cardFooterProfile: {\r\n marginTop: \"-15px\"\r\n },\r\n cardFooterPlain: {\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\",\r\n backgroundColor: \"transparent\"\r\n },\r\n cardFooterStats: {\r\n borderTop: \"1px solid \" + grayColor[10],\r\n marginTop: \"20px\",\r\n \"& svg\": {\r\n position: \"relative\",\r\n top: \"4px\",\r\n marginRight: \"3px\",\r\n marginLeft: \"3px\",\r\n width: \"16px\",\r\n height: \"16px\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n fontSize: \"16px\",\r\n position: \"relative\",\r\n top: \"4px\",\r\n marginRight: \"3px\",\r\n marginLeft: \"3px\"\r\n }\r\n },\r\n cardFooterChart: {\r\n borderTop: \"1px solid \" + grayColor[10]\r\n }\r\n};\r\n\r\nexport default cardFooterStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport cardFooterStyle from \"assets/jss/material-dashboard-react/components/cardFooterStyle.jsx\";\r\n\r\nfunction CardFooter({ ...props }) {\r\n const {\r\n classes,\r\n className,\r\n children,\r\n plain,\r\n profile,\r\n stats,\r\n chart,\r\n ...rest\r\n } = props;\r\n const cardFooterClasses = classNames({\r\n [classes.cardFooter]: true,\r\n [classes.cardFooterPlain]: plain,\r\n [classes.cardFooterProfile]: profile,\r\n [classes.cardFooterStats]: stats,\r\n [classes.cardFooterChart]: chart,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCardFooter.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n plain: PropTypes.bool,\r\n profile: PropTypes.bool,\r\n stats: PropTypes.bool,\r\n chart: PropTypes.bool\r\n};\r\n\r\nexport default withStyles(cardFooterStyle)(CardFooter);\r\n","// Extra libs\r\nimport Cookies from \"js-cookie\";\r\nimport Constants from \"variables/constants.jsx\"\r\n\r\n/**\r\n * Executes API GET call to provided api path.\r\n * @param {string} apiPath Endpoint to call (without backslash prefix).\r\n * @throws Throws Error object containing errorMessage if the web request failed.\r\n * @returns Returns promise containing web request result.\r\n */\r\nexport function apiGet(apiPath)\r\n{\r\n // Get authentication token.\r\n var token = Cookies.get(\"auth\");\r\n\r\n return fetch(Constants.ApiBaseUrl + apiPath,\r\n {\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token\r\n }\r\n })\r\n .then((response) => response.json().then(body => ({ status: response.status, data: body })))\r\n .then((result) =>\r\n {\r\n if (result.status !== 200)\r\n {\r\n throw result;\r\n }\r\n\r\n return result; \r\n });\r\n}\r\n\r\n/**\r\n * Executes API POST call to provided api path.\r\n * @param {string} apiPath Endpoint to call (e.g. /cases OR /users/me). \r\n * @throws Throws Error object containing errorMessage if the web request failed.\r\n * @returns Returns promise containing web request result.\r\n */\r\nexport function apiPost(apiPath)\r\n{\r\n // Get authentication token.\r\n var token = Cookies.get(\"auth\");\r\n\r\n return fetch(Constants.ApiBaseUrl + apiPath, \r\n {\r\n method: \"POST\",\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token\r\n }\r\n })\r\n .then((response) => response.json().then(body => ({ status: response.status, data: body })))\r\n .then((result) =>\r\n {\r\n if (result.status !== 200)\r\n {\r\n throw result;\r\n }\r\n\r\n return result; \r\n });\r\n}\r\n\r\n/**\r\n * Executes API POST call to provided api path.\r\n * @param {string} apiPath Endpoint to call (e.g. /cases OR /users/me). \r\n * @param {object} jsonBody Json object to pass a the request body (don't stringify the object).\r\n * @throws Throws Error object containing errorMessage if the web request failed.\r\n * @returns Returns promise containing web request result.\r\n */\r\nexport function apiPostJson(apiPath, jsonBody)\r\n{\r\n // Get authentication token.\r\n var token = Cookies.get(\"auth\");\r\n\r\n return fetch(Constants.ApiBaseUrl + apiPath, \r\n {\r\n method: \"POST\",\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(jsonBody)\r\n })\r\n .then((response) => response.json().then(body => ({ status: response.status, data: body })))\r\n .then((result) =>\r\n {\r\n if (result.status !== 200)\r\n {\r\n throw result;\r\n }\r\n \r\n return result; \r\n });\r\n}\r\n\r\n/**\r\n * Executes API POST call to provided api path.\r\n * @param {string} apiPath Endpoint to call (e.g. /cases OR /users/me). \r\n * @param {object} FormData object to pass a the request body.\r\n * @throws Throws Error object containing errorMessage if the web request failed.\r\n * @returns Returns promise containing web request result.\r\n */\r\nexport function apiPostFormData(apiPath, formData)\r\n{\r\n // Get authentication token.\r\n var token = Cookies.get(\"auth\");\r\n\r\n return fetch(Constants.ApiBaseUrl + apiPath, \r\n {\r\n method: \"POST\",\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token\r\n },\r\n body: formData\r\n })\r\n .then((response) => response.json().then(body => ({ status: response.status, data: body })))\r\n .then((result) =>\r\n {\r\n if (result.status !== 200)\r\n {\r\n throw result;\r\n }\r\n \r\n return result; \r\n });\r\n}\r\n\r\n/**\r\n * Executes API GET call to provided api path.\r\n * Tries to fetch a file via the API.\r\n * @param {string} apiPath Endpoint to call (without backslash prefix).\r\n * @throws Throws Error object containing errorMessage if the web request failed.\r\n * @returns Returns promise containing web request result.\r\n */\r\nexport function apiGetFile(apiPath)\r\n{\r\n // Get authentication token.\r\n var token = Cookies.get(\"auth\");\r\n\r\n return fetch(Constants.ApiBaseUrl + apiPath,\r\n {\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token\r\n }\r\n })\r\n .then((response) => \r\n {\r\n if (response.status !== 200)\r\n {\r\n throw new Error(response.status);\r\n }\r\n\r\n return response.blob();\r\n });\r\n}\r\n\r\n/**\r\n * Executes API GET call to provided api path.\r\n * Tries to fetch a file via the API.\r\n * @param {string} apiPath Endpoint to call (without backslash prefix).\r\n * @throws Throws Error object containing errorMessage if the web request failed.\r\n * @returns Returns promise containing web request result.\r\n */\r\nexport function apiPostFileJson(apiPath, jsonBody)\r\n{\r\n // Get authentication token.\r\n var token = Cookies.get(\"auth\");\r\n\r\n return fetch(Constants.ApiBaseUrl + apiPath,\r\n {\r\n method: \"POST\",\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(jsonBody)\r\n })\r\n .then((response) => \r\n {\r\n if (response.status !== 200)\r\n {\r\n throw new Error(response.status);\r\n }\r\n\r\n return response.blob();\r\n });\r\n}","import {\r\n successColor,\r\n whiteColor,\r\n grayColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst dashboardStyle = {\r\n successText: {\r\n color: successColor[0]\r\n },\r\n upArrowCardCategory: {\r\n width: \"16px\",\r\n height: \"16px\"\r\n },\r\n stats: {\r\n color: grayColor[0],\r\n display: \"inline-flex\",\r\n fontSize: \"12px\",\r\n lineHeight: \"22px\",\r\n \"& svg\": {\r\n top: \"4px\",\r\n width: \"16px\",\r\n height: \"16px\",\r\n position: \"relative\",\r\n marginRight: \"3px\",\r\n marginLeft: \"3px\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n top: \"4px\",\r\n fontSize: \"16px\",\r\n position: \"relative\",\r\n marginRight: \"3px\",\r\n marginLeft: \"3px\"\r\n }\r\n },\r\n cardCategory: {\r\n color: grayColor[0],\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n paddingTop: \"10px\",\r\n marginBottom: \"0\"\r\n },\r\n cardCategoryWhite: {\r\n color: \"rgba(\" + hexToRgb(whiteColor) + \",.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n cardTitle: {\r\n color: grayColor[2],\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: grayColor[1],\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: whiteColor,\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: grayColor[1],\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nexport default dashboardStyle;\r\n","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// @material-ui/icons\r\nimport AllInbox from \"@material-ui/icons/AllInbox\";\r\n\r\n// core components\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardIcon from \"components/Card/CardIcon.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst allowedPortalPermissions =\r\n[\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASES\",\r\n \"READALLCASESPERSONALWRITE\"\r\n]\r\n\r\nclass PortalCasesWidget extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n casesCount: 0\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get active cases count\r\n this.getCasesCount();\r\n }\r\n\r\n getCasesCount()\r\n {\r\n apiGet(\"cases/count\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n casesCount: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { classes } = this.props;\r\n const { isLoaded, error, casesCount } = this.state;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

Support Cases

\r\n

{ casesCount === 1 ? \"1 ticket\" : (casesCount + \" tickets\")}

\r\n
\r\n \r\n \r\n Go to support cases\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default withStyles(dashboardStyle)(PortalCasesWidget);","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// @material-ui/icons\r\nimport QueuesIcon from \"@material-ui/icons/ViewHeadline\";\r\n\r\n// core components\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardIcon from \"components/Card/CardIcon.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [ \r\n \"UCALLMANAGER.QUEUES.VIEW\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nclass UCallManagerQueuesWidget extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n queuesCount: 0\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) || !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get queues count\r\n this.getQueuesCount();\r\n }\r\n\r\n getQueuesCount()\r\n {\r\n apiGet(\"ucm/queues/count\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n queuesCount: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { classes } = this.props;\r\n const { error, isLoaded, queuesCount } = this.state;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

Call Queues

\r\n

{queuesCount === 1 ? \"1 queue\" : (queuesCount + \" queues\")}

\r\n
\r\n \r\n \r\n Go to uCallManager call queues\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default withStyles(dashboardStyle)(UCallManagerQueuesWidget);","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// @material-ui/icons\r\nimport PeopleIcon from \"@material-ui/icons/People\";\r\n\r\n// core components\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardIcon from \"components/Card/CardIcon.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst requiredPortalPermissions = [ \r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.AGENTS.VIEW\",\r\n \"UCALLMANAGER.AGENTS.EDIT\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nclass UCallManagerAgentsWidget extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n agentsCount: 0\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) ||\r\n !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get agents count\r\n this.getAgentsCount();\r\n }\r\n\r\n getAgentsCount()\r\n {\r\n apiGet(\"ucm/agents/count\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n agentsCount: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { classes } = this.props;\r\n const { isLoaded, error, agentsCount } = this.state;\r\n \r\n if (!isLoaded)\r\n {\r\n \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

Agents

\r\n

{agentsCount === 1 ? \"1 agent\" : (agentsCount + \" agents\")}

\r\n
\r\n \r\n \r\n Go to uCallManager agents\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default withStyles(dashboardStyle)(UCallManagerAgentsWidget);","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// @material-ui/icons\r\nimport HolidayIcon from \"@material-ui/icons/Today\";\r\n\r\n// core components\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardIcon from \"components/Card/CardIcon.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\n// Extra libs\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst requiredPortalPermissions = [ \r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nclass UCallManagerHolidaysWidget extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n holidaysCount: 0\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get holidays count\r\n this.getHolidaysCount();\r\n }\r\n\r\n getHolidaysCount()\r\n {\r\n apiGet(\"ucm/holidays/count\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n holidaysCount: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { classes } = this.props;\r\n const { isLoaded, error, holidaysCount } = this.state;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

Holidays

\r\n

{holidaysCount === 1 ? \"1 holiday\" : (holidaysCount + \" holidays\")}

\r\n
\r\n \r\n \r\n Go to uCallManager holidays\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default withStyles(dashboardStyle)(UCallManagerHolidaysWidget);","import React from \"react\";\r\n\r\nimport PropTypes from \"prop-types\";\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\n\r\nimport Divider from '@material-ui/core/Divider';\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nimport PortalCasesWidget from \"./PortalWidgets/PortalCasesWidget\"\r\nimport UCallManagerQueuesWidget from \"./uCallManagerWidgets/UCallManagerQueuesWidget\"\r\nimport UCallManagerAgentsWidget from \"./uCallManagerWidgets/UCallManagerAgentsWidget\"\r\nimport UCallManagerHolidaysWidget from \"./uCallManagerWidgets/UCallManagerHolidaysWidget\"\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst allowedPortalCasesPermissions =\r\n[\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASES\",\r\n \"READALLCASESPERSONALWRITE\"\r\n]\r\n\r\nconst requiredUCallManagerPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedUCallManagerQueuesPermissions = [ \r\n \"UCALLMANAGER.QUEUES.VIEW\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nconst allowedUCallManagerAgentsPermissions = [ \r\n \"UCALLMANAGER.AGENTS.VIEW\",\r\n \"UCALLMANAGER.AGENTS.EDIT\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nconst allowedUCallManagerHolidaysPermissions = [ \r\n \"UCALLMANAGER.HOLIDAYS.VIEW\",\r\n \"UCALLMANAGER.HOLIDAYS.EDIT\"\r\n]\r\n\r\nclass Dashboard extends React.Component {\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n
\r\n

Welcome, {globalData.loggedInUser.FullName}!

\r\n\r\n {\r\n // Customer Portal dashboard\r\n PMUtils.userHasAnyRequiredPermissions(allowedPortalCasesPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n
\r\n

Customer Portal

\r\n \r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions(allowedPortalCasesPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n \r\n
\r\n )\r\n :\r\n null\r\n }\r\n \r\n {\r\n // uCallManager dashboard\r\n PMUtils.userHasAllRequiredPermissions(requiredUCallManagerPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n
\r\n

uCallManager

\r\n \r\n
\r\n \r\n\r\n {\r\n PMUtils.userHasAnyRequiredPermissions(allowedUCallManagerQueuesPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n\r\n {\r\n PMUtils.userHasAnyRequiredPermissions(allowedUCallManagerAgentsPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n\r\n {\r\n PMUtils.userHasAnyRequiredPermissions(allowedUCallManagerHolidaysPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n\r\n \r\n
\r\n )\r\n :\r\n null\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nDashboard.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(dashboardStyle)(Dashboard);\r\n","import { hexToRgb, blackColor } from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst cardAvatarStyle = {\r\n cardAvatar: {\r\n \"&$cardAvatarProfile img\": {\r\n width: \"100%\",\r\n height: \"auto\"\r\n }\r\n },\r\n cardAvatarProfile: {\r\n maxWidth: \"130px\",\r\n maxHeight: \"130px\",\r\n margin: \"-50px auto 0\",\r\n borderRadius: \"50%\",\r\n overflow: \"hidden\",\r\n padding: \"0\",\r\n boxShadow:\r\n \"0 16px 38px -12px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.56), 0 4px 25px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 8px 10px -5px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\",\r\n \"&$cardAvatarPlain\": {\r\n marginTop: \"0\"\r\n }\r\n },\r\n cardAvatarPlain: {}\r\n};\r\n\r\nexport default cardAvatarStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// @material-ui/icons\r\n// core components\r\n\r\nimport cardAvatarStyle from \"assets/jss/material-dashboard-react/components/cardAvatarStyle.jsx\";\r\n\r\nfunction CardAvatar({ ...props }) {\r\n const { classes, children, className, plain, profile, ...rest } = props;\r\n const cardAvatarClasses = classNames({\r\n [classes.cardAvatar]: true,\r\n [classes.cardAvatarProfile]: profile,\r\n [classes.cardAvatarPlain]: plain,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCardAvatar.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n className: PropTypes.string,\r\n profile: PropTypes.bool,\r\n plain: PropTypes.bool\r\n};\r\n\r\nexport default withStyles(cardAvatarStyle)(CardAvatar);\r\n","const cardBodyStyle = {\r\n cardBody: {\r\n padding: \"0.9375rem 20px\",\r\n flex: \"1 1 auto\",\r\n WebkitBoxFlex: \"1\",\r\n position: \"relative\"\r\n },\r\n cardBodyPlain: {\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\"\r\n },\r\n cardBodyProfile: {\r\n marginTop: \"15px\"\r\n }\r\n};\r\n\r\nexport default cardBodyStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport cardBodyStyle from \"assets/jss/material-dashboard-react/components/cardBodyStyle.jsx\";\r\n\r\nfunction CardBody({ ...props }) {\r\n const { classes, className, children, plain, profile, ...rest } = props;\r\n const cardBodyClasses = classNames({\r\n [classes.cardBody]: true,\r\n [classes.cardBodyPlain]: plain,\r\n [classes.cardBodyProfile]: profile,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCardBody.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string,\r\n plain: PropTypes.bool,\r\n profile: PropTypes.bool\r\n};\r\n\r\nexport default withStyles(cardBodyStyle)(CardBody);\r\n","import React from \"react\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardAvatar from \"components/Card/CardAvatar.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\n\r\nimport avatar from \"assets/img/faces/profile.png\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\"\r\n }\r\n};\r\n\r\nfunction UserProfile(props) {\r\n const { classes } = props;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \"...\"\r\n \r\n \r\n
{globalData.loggedInUser.Organization.Name}
\r\n

{globalData.loggedInUser.FullName}

\r\n

Email Address: {globalData.loggedInUser.Email}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default withStyles(styles)(UserProfile);\r\n","import {\r\n warningColor,\r\n primaryColor,\r\n dangerColor,\r\n successColor,\r\n infoColor,\r\n roseColor,\r\n grayColor,\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst tableStyle = theme => ({\r\n warningTableHeader: {\r\n color: warningColor[0]\r\n },\r\n primaryTableHeader: {\r\n color: primaryColor[0]\r\n },\r\n dangerTableHeader: {\r\n color: dangerColor[0]\r\n },\r\n successTableHeader: {\r\n color: successColor[0]\r\n },\r\n infoTableHeader: {\r\n color: infoColor[0]\r\n },\r\n roseTableHeader: {\r\n color: roseColor[0]\r\n },\r\n grayTableHeader: {\r\n color: grayColor[0]\r\n },\r\n table: {\r\n marginBottom: \"0\",\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n backgroundColor: \"transparent\",\r\n borderSpacing: \"0\",\r\n borderCollapse: \"collapse\"\r\n },\r\n tableHeadCell: {\r\n color: \"inherit\",\r\n ...defaultFont,\r\n fontSize: \"1em\",\r\n fontWeight: \"450 !important\"\r\n },\r\n tableCell: {\r\n ...defaultFont,\r\n lineHeight: \"1.42857143\",\r\n padding: \"12px 8px\",\r\n verticalAlign: \"middle\"\r\n },\r\n tableButtonCell: {\r\n paddingRight: \"0px !important\",\r\n width: \"50px !important\",\r\n textAlign: \"center\",\r\n border:\"none\"\r\n },\r\n tableResponsive: {\r\n width: \"100%\",\r\n marginTop: theme.spacing.unit * 1,\r\n overflowX: \"auto\"\r\n },\r\n dialogContent: {\r\n whiteSpace: \"pre-wrap\"\r\n }\r\n});\r\n\r\nexport default tableStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\n// core components\r\nimport tableStyle from \"assets/jss/material-dashboard-react/components/tableStyle.jsx\";\r\n\r\nfunction CustomTable({ ...props }) {\r\n const { classes, tableHead, tableData, tableHeaderColor } = props;\r\n return (\r\n
\r\n \r\n {tableHead !== undefined ? (\r\n \r\n \r\n {tableHead.map((prop, key) => {\r\n return (\r\n \r\n {prop}\r\n \r\n );\r\n })}\r\n \r\n \r\n ) : null}\r\n \r\n {tableData.map((prop, key) => {\r\n return (\r\n \r\n {prop.map((prop, key) => {\r\n return (\r\n \r\n {prop}\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\nCustomTable.defaultProps = {\r\n tableHeaderColor: \"gray\"\r\n};\r\n\r\nCustomTable.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n tableHeaderColor: PropTypes.oneOf([\r\n \"warning\",\r\n \"primary\",\r\n \"danger\",\r\n \"success\",\r\n \"info\",\r\n \"rose\",\r\n \"gray\"\r\n ]),\r\n tableHead: PropTypes.arrayOf(PropTypes.string),\r\n tableData: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string))\r\n};\r\n\r\nexport default withStyles(tableStyle)(CustomTable);\r\n","import React from \"react\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport Table from \"components/Table/Table.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nfunction TableList(props) {\r\n const { classes } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n

Simple Table

\r\n

\r\n Here is a subtitle for this table\r\n

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

\r\n Table on Plain Background\r\n

\r\n

\r\n Here is a subtitle for this table\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 withStyles(styles)(TableList);\r\n","import {\r\n defaultFont,\r\n primaryColor,\r\n infoColor,\r\n successColor,\r\n warningColor,\r\n dangerColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst typographyStyle = {\r\n defaultFontStyle: {\r\n ...defaultFont,\r\n fontSize: \"14px\"\r\n },\r\n defaultHeaderMargins: {\r\n marginTop: \"20px\",\r\n marginBottom: \"10px\"\r\n },\r\n quote: {\r\n padding: \"10px 20px\",\r\n margin: \"0 0 20px\",\r\n fontSize: \"17.5px\",\r\n borderLeft: \"5px solid \" + grayColor[10]\r\n },\r\n quoteText: {\r\n margin: \"0 0 10px\",\r\n fontStyle: \"italic\"\r\n },\r\n quoteAuthor: {\r\n display: \"block\",\r\n fontSize: \"80%\",\r\n lineHeight: \"1.42857143\",\r\n color: grayColor[1]\r\n },\r\n mutedText: {\r\n color: grayColor[1]\r\n },\r\n primaryText: {\r\n color: primaryColor[0]\r\n },\r\n infoText: {\r\n color: infoColor[0]\r\n },\r\n successText: {\r\n color: successColor[0]\r\n },\r\n warningText: {\r\n color: warningColor[0]\r\n },\r\n dangerText: {\r\n color: dangerColor[0]\r\n }\r\n};\r\n\r\nexport default typographyStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport typographyStyle from \"assets/jss/material-dashboard-react/components/typographyStyle.jsx\";\r\n\r\nfunction Quote({ ...props }) {\r\n const { classes, text, author } = props;\r\n return (\r\n
\r\n

{text}

\r\n {author}\r\n
\r\n );\r\n}\r\n\r\nQuote.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n text: PropTypes.node,\r\n author: PropTypes.node\r\n};\r\n\r\nexport default withStyles(typographyStyle)(Quote);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport typographyStyle from \"assets/jss/material-dashboard-react/components/typographyStyle.jsx\";\r\n\r\nfunction Muted({ ...props }) {\r\n const { classes, children } = props;\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nMuted.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(typographyStyle)(Muted);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport typographyStyle from \"assets/jss/material-dashboard-react/components/typographyStyle.jsx\";\r\n\r\nfunction Primary({ ...props }) {\r\n const { classes, children } = props;\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nPrimary.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(typographyStyle)(Primary);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport typographyStyle from \"assets/jss/material-dashboard-react/components/typographyStyle.jsx\";\r\n\r\nfunction Info({ ...props }) {\r\n const { classes, children } = props;\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nInfo.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(typographyStyle)(Info);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport typographyStyle from \"assets/jss/material-dashboard-react/components/typographyStyle.jsx\";\r\n\r\nfunction Success({ ...props }) {\r\n const { classes, children } = props;\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nSuccess.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(typographyStyle)(Success);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport typographyStyle from \"assets/jss/material-dashboard-react/components/typographyStyle.jsx\";\r\n\r\nfunction Warning({ ...props }) {\r\n const { classes, children } = props;\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nWarning.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(typographyStyle)(Warning);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport typographyStyle from \"assets/jss/material-dashboard-react/components/typographyStyle.jsx\";\r\n\r\nfunction Danger({ ...props }) {\r\n const { classes, children, visible } = props;\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\n\r\nDanger.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(typographyStyle)(Danger);\r\n","import React from \"react\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport Quote from \"components/Typography/Quote.jsx\";\r\nimport Muted from \"components/Typography/Muted.jsx\";\r\nimport Primary from \"components/Typography/Primary.jsx\";\r\nimport Info from \"components/Typography/Info.jsx\";\r\nimport Success from \"components/Typography/Success.jsx\";\r\nimport Warning from \"components/Typography/Warning.jsx\";\r\nimport Danger from \"components/Typography/Danger.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\n\r\nconst style = {\r\n typo: {\r\n paddingLeft: \"25%\",\r\n marginBottom: \"40px\",\r\n position: \"relative\"\r\n },\r\n note: {\r\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n bottom: \"10px\",\r\n color: \"#c0c1c2\",\r\n display: \"block\",\r\n fontWeight: \"400\",\r\n fontSize: \"13px\",\r\n lineHeight: \"13px\",\r\n left: \"0\",\r\n marginLeft: \"20px\",\r\n position: \"absolute\",\r\n width: \"260px\"\r\n },\r\n cardCategoryWhite: {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\"\r\n }\r\n};\r\nfunction TypographyPage(props) {\r\n const { classes } = props;\r\n return (\r\n \r\n \r\n

Material Dashboard Heading

\r\n

\r\n Created using Roboto Font Family\r\n

\r\n
\r\n \r\n
\r\n
Header 1
\r\n

The Life of Material Dashboard

\r\n
\r\n
\r\n
Header 2
\r\n

The Life of Material Dashboard

\r\n
\r\n
\r\n
Header 3
\r\n

The Life of Material Dashboard

\r\n
\r\n
\r\n
Header 4
\r\n

The Life of Material Dashboard

\r\n
\r\n
\r\n
Header 5
\r\n
The Life of Material Dashboard
\r\n
\r\n
\r\n
Header 6
\r\n
The Life of Material Dashboard
\r\n
\r\n
\r\n
Paragraph
\r\n

\r\n I will be the leader of a company that ends up being worth billions\r\n of dollars, because I got the answers. I understand culture. I am\r\n the nucleus. I think that’s a responsibility that I have, to push\r\n possibilities, to show people, this is the level that things could\r\n be at.\r\n

\r\n
\r\n
\r\n
Quote
\r\n \r\n
\r\n
\r\n
Muted Text
\r\n \r\n I will be the leader of a company that ends up being worth billions\r\n of dollars, because I got the answers...\r\n \r\n
\r\n
\r\n
Primary Text
\r\n \r\n I will be the leader of a company that ends up being worth billions\r\n of dollars, because I got the answers...\r\n \r\n
\r\n
\r\n
Info Text
\r\n \r\n I will be the leader of a company that ends up being worth billions\r\n of dollars, because I got the answers...\r\n \r\n
\r\n
\r\n
Success Text
\r\n \r\n I will be the leader of a company that ends up being worth billions\r\n of dollars, because I got the answers...\r\n \r\n
\r\n
\r\n
Warning Text
\r\n \r\n I will be the leader of a company that ends up being worth billions\r\n of dollars, because I got the answers...\r\n \r\n
\r\n
\r\n
Danger Text
\r\n \r\n I will be the leader of a company that ends up being worth billions\r\n of dollars, because I got the answers...\r\n \r\n
\r\n
\r\n
Small Tag
\r\n

\r\n Header with small subtitle\r\n
\r\n Use \"Small\" tag for the headers\r\n

\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default withStyles(style)(TypographyPage);\r\n","import {\r\n boxShadow,\r\n whiteColor,\r\n grayColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst iconsStyle = {\r\n iframe: {\r\n width: \"100%\",\r\n height: \"500px\",\r\n border: \"0\",\r\n ...boxShadow\r\n },\r\n iframeContainer: {\r\n margin: \"0 -20px 0\"\r\n },\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(\" + hexToRgb(whiteColor) + \",.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: whiteColor\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: whiteColor,\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: grayColor[1],\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nexport default iconsStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\n\r\nimport iconsStyle from \"assets/jss/material-dashboard-react/views/iconsStyle.jsx\";\r\n\r\nfunction Icons(props) {\r\n const { classes } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n

Material Design Icons

\r\n

\r\n Handcrafted by our friends from{\" \"}\r\n \r\n Google\r\n \r\n

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

Your browser does not support iframes.

\r\n \r\n
\r\n \r\n \r\n
\r\n The icons are visible on Desktop mode inside an iframe. Since\r\n the iframe is not working on Mobile and Tablets please visit\r\n the icons on their original page on Google. Check the\r\n \r\n Material Icons\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nIcons.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(iconsStyle)(Icons);\r\n","import {\r\n defaultFont,\r\n primaryBoxShadow,\r\n infoBoxShadow,\r\n successBoxShadow,\r\n warningBoxShadow,\r\n dangerBoxShadow,\r\n roseBoxShadow,\r\n whiteColor,\r\n blackColor,\r\n grayColor,\r\n infoColor,\r\n successColor,\r\n dangerColor,\r\n roseColor,\r\n primaryColor,\r\n warningColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst snackbarContentStyle = {\r\n root: {\r\n ...defaultFont,\r\n flexWrap: \"unset\",\r\n position: \"relative\",\r\n padding: \"20px 15px\",\r\n lineHeight: \"20px\",\r\n marginBottom: \"20px\",\r\n fontSize: \"14px\",\r\n backgroundColor: whiteColor,\r\n color: grayColor[7],\r\n borderRadius: \"3px\",\r\n minWidth: \"unset\",\r\n maxWidth: \"unset\",\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(whiteColor) +\r\n \", 0.28), 0 4px 20px 0px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(whiteColor) +\r\n \", 0.2)\"\r\n },\r\n top20: {\r\n top: \"20px\"\r\n },\r\n top40: {\r\n top: \"40px\"\r\n },\r\n info: {\r\n backgroundColor: infoColor[3],\r\n color: whiteColor,\r\n ...infoBoxShadow\r\n },\r\n success: {\r\n backgroundColor: successColor[3],\r\n color: whiteColor,\r\n ...successBoxShadow\r\n },\r\n warning: {\r\n backgroundColor: warningColor[3],\r\n color: whiteColor,\r\n ...warningBoxShadow\r\n },\r\n danger: {\r\n backgroundColor: dangerColor[3],\r\n color: whiteColor,\r\n ...dangerBoxShadow\r\n },\r\n primary: {\r\n backgroundColor: primaryColor[3],\r\n color: whiteColor,\r\n ...primaryBoxShadow\r\n },\r\n rose: {\r\n backgroundColor: roseColor[3],\r\n color: whiteColor,\r\n ...roseBoxShadow\r\n },\r\n message: {\r\n padding: \"0\",\r\n display: \"block\",\r\n maxWidth: \"89%\"\r\n },\r\n close: {\r\n width: \"11px\",\r\n height: \"11px\"\r\n },\r\n iconButton: {\r\n width: \"24px\",\r\n height: \"24px\",\r\n padding: \"0px\"\r\n },\r\n icon: {\r\n display: \"block\",\r\n left: \"15px\",\r\n position: \"absolute\",\r\n top: \"50%\",\r\n marginTop: \"-15px\",\r\n width: \"30px\",\r\n height: \"30px\"\r\n },\r\n infoIcon: {\r\n color: infoColor[3]\r\n },\r\n successIcon: {\r\n color: successColor[3]\r\n },\r\n warningIcon: {\r\n color: warningColor[3]\r\n },\r\n dangerIcon: {\r\n color: dangerColor[3]\r\n },\r\n primaryIcon: {\r\n color: primaryColor[3]\r\n },\r\n roseIcon: {\r\n color: roseColor[3]\r\n },\r\n iconMessage: {\r\n paddingLeft: \"50px\",\r\n display: \"block\"\r\n },\r\n actionRTL: {\r\n marginLeft: \"-8px\",\r\n marginRight: \"auto\"\r\n }\r\n};\r\n\r\nexport default snackbarContentStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classNames from \"classnames\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Snack from \"@material-ui/core/SnackbarContent\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\n// @material-ui/icons\r\nimport Close from \"@material-ui/icons/Close\";\r\n// core components\r\nimport snackbarContentStyle from \"assets/jss/material-dashboard-react/components/snackbarContentStyle.jsx\";\r\n\r\nfunction SnackbarContent({ ...props }) {\r\n const { classes, message, color, close, icon, rtlActive } = props;\r\n var action = [];\r\n const messageClasses = classNames({\r\n [classes.iconMessage]: icon !== undefined\r\n });\r\n if (close !== undefined) {\r\n action = [\r\n \r\n \r\n \r\n ];\r\n }\r\n return (\r\n \r\n {icon !== undefined ? : null}\r\n {message}\r\n \r\n }\r\n classes={{\r\n root: classes.root + \" \" + classes[color],\r\n message: classes.message,\r\n action: classNames({ [classes.actionRTL]: rtlActive })\r\n }}\r\n action={action}\r\n />\r\n );\r\n}\r\n\r\nSnackbarContent.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n message: PropTypes.node.isRequired,\r\n color: PropTypes.oneOf([\"info\", \"success\", \"warning\", \"danger\", \"primary\"]),\r\n close: PropTypes.bool,\r\n icon: PropTypes.func,\r\n rtlActive: PropTypes.bool\r\n};\r\n\r\nexport default withStyles(snackbarContentStyle)(SnackbarContent);\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Snack from \"@material-ui/core/Snackbar\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\n// @material-ui/icons\r\nimport Close from \"@material-ui/icons/Close\";\r\n// core components\r\nimport snackbarContentStyle from \"assets/jss/material-dashboard-react/components/snackbarContentStyle.jsx\";\r\n\r\nfunction Snackbar({ ...props }) {\r\n const {\r\n classes,\r\n message,\r\n color,\r\n close,\r\n icon,\r\n place,\r\n open,\r\n rtlActive\r\n } = props;\r\n var action = [];\r\n const messageClasses = classNames({\r\n [classes.iconMessage]: icon !== undefined\r\n });\r\n if (close !== undefined) {\r\n action = [\r\n props.closeNotification()}\r\n >\r\n \r\n \r\n ];\r\n }\r\n return (\r\n \r\n {icon !== undefined ? : null}\r\n {message}\r\n \r\n }\r\n action={action}\r\n ContentProps={{\r\n classes: {\r\n root: classes.root + \" \" + classes[color],\r\n message: classes.message,\r\n action: classNames({ [classes.actionRTL]: rtlActive })\r\n }\r\n }}\r\n />\r\n );\r\n}\r\n\r\nSnackbar.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n message: PropTypes.node.isRequired,\r\n color: PropTypes.oneOf([\"info\", \"success\", \"warning\", \"danger\", \"primary\"]),\r\n close: PropTypes.bool,\r\n icon: PropTypes.func,\r\n place: PropTypes.oneOf([\"tl\", \"tr\", \"tc\", \"br\", \"bl\", \"bc\"]),\r\n open: PropTypes.bool,\r\n rtlActive: PropTypes.bool\r\n};\r\n\r\nexport default withStyles(snackbarContentStyle)(Snackbar);\r\n","/* eslint-disable */\r\nimport React from \"react\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// @material-ui/icons\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nclass Notifications extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tl: false,\r\n tc: false,\r\n tr: false,\r\n bl: false,\r\n bc: false,\r\n br: false\r\n };\r\n }\r\n // to stop the warning of calling setState of unmounted component\r\n componentWillUnmount() {\r\n var id = window.setTimeout(null, 0);\r\n while (id--) {\r\n window.clearTimeout(id);\r\n }\r\n }\r\n showNotification(place) {\r\n var x = [];\r\n x[place] = true;\r\n this.setState(x);\r\n this.alertTimeout = setTimeout(\r\n function() {\r\n x[place] = false;\r\n this.setState(x);\r\n }.bind(this),\r\n 6000\r\n );\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n

Notifications

\r\n

\r\n Handcrafted by our friends from{\" \"}\r\n \r\n Material UI\r\n {\" \"}\r\n and styled by{\" \"}\r\n \r\n Creative Tim\r\n \r\n . Please checkout the{\" \"}\r\n \r\n full documentation\r\n \r\n .\r\n

\r\n
\r\n \r\n \r\n \r\n
Notifications Style
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
Notifications States
\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 Notifications Places\r\n
\r\n Click to view notifications\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n this.showNotification(\"tl\")}\r\n >\r\n Top Left\r\n \r\n this.setState({ tl: false })}\r\n close\r\n />\r\n \r\n \r\n this.showNotification(\"tc\")}\r\n >\r\n Top Center\r\n \r\n this.setState({ tc: false })}\r\n close\r\n />\r\n \r\n \r\n this.showNotification(\"tr\")}\r\n >\r\n Top Right\r\n \r\n this.setState({ tr: false })}\r\n close\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.showNotification(\"bl\")}\r\n >\r\n Bottom Left\r\n \r\n this.setState({ bl: false })}\r\n close\r\n />\r\n \r\n \r\n this.showNotification(\"bc\")}\r\n >\r\n Bottom Center\r\n \r\n this.setState({ bc: false })}\r\n close\r\n />\r\n \r\n \r\n this.showNotification(\"br\")}\r\n >\r\n Bottom Right\r\n \r\n this.setState({ br: false })}\r\n close\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 withStyles(styles)(Notifications);\r\n","import {\r\n primaryColor,\r\n dangerColor,\r\n successColor,\r\n grayColor,\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst customInputStyle = {\r\n disabled: {\r\n \"&:before\": {\r\n backgroundColor: \"transparent !important\"\r\n }\r\n },\r\n underline: {\r\n \"&:hover:not($disabled):before,&:before\": {\r\n borderColor: grayColor[4] + \" !important\",\r\n borderWidth: \"1px !important\"\r\n },\r\n \"&:after\": {\r\n borderColor: primaryColor[0]\r\n }\r\n },\r\n underlineError: {\r\n \"&:after\": {\r\n borderColor: dangerColor[0]\r\n }\r\n },\r\n underlineSuccess: {\r\n \"&:after\": {\r\n borderColor: successColor[0]\r\n }\r\n },\r\n labelRoot: {\r\n ...defaultFont,\r\n color: grayColor[3] + \" !important\",\r\n fontWeight: \"400\",\r\n fontSize: \"14px\",\r\n lineHeight: \"1.42857\"\r\n },\r\n labelRootError: {\r\n color: dangerColor[0]\r\n },\r\n labelRootSuccess: {\r\n color: successColor[0]\r\n },\r\n feedback: {\r\n position: \"absolute\",\r\n top: \"18px\",\r\n right: \"0\",\r\n zIndex: \"2\",\r\n display: \"block\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n textAlign: \"center\",\r\n pointerEvents: \"none\"\r\n },\r\n marginTop: {\r\n marginTop: \"16px\"\r\n },\r\n formControl: {\r\n paddingBottom: \"10px\",\r\n margin: \"27px 0 0 0\",\r\n position: \"relative\",\r\n verticalAlign: \"unset\"\r\n }\r\n};\r\n\r\nexport default customInputStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\n\r\n// material-ui components\r\nimport InfoIcon from '@material-ui/icons/Info';\r\n\r\nconst styles = {\r\n}\r\n\r\nfunction InputInfoButton({ ...props }) {\r\n const {\r\n text,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nInputInfoButton.propTypes = {\r\n text: PropTypes.string\r\n};\r\n\r\nexport default withStyles (styles)(InputInfoButton)\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport Input from \"@material-ui/core/Input\";\r\n// @material-ui/icons\r\nimport Clear from \"@material-ui/icons/Clear\";\r\nimport Check from \"@material-ui/icons/Check\";\r\nimport InfoIcon from '@material-ui/icons/Info';\r\n\r\n// core components\r\nimport customInputStyle from \"assets/jss/material-dashboard-react/components/customInputStyle.jsx\";\r\nimport InputInfoButton from \"components/CustomInput/InputInfoButton.jsx\";\r\n\r\nfunction CustomInput({ ...props }) {\r\n const\r\n {\r\n classes,\r\n formControlProps,\r\n labelText,\r\n id,\r\n labelProps,\r\n inputProps,\r\n error,\r\n success,\r\n multiline,\r\n rows,\r\n onValueChange,\r\n infoText\r\n } = props;\r\n\r\n const labelClasses = classNames({\r\n [\" \" + classes.labelRootError]: error,\r\n [\" \" + classes.labelRootSuccess]: success && !error\r\n });\r\n\r\n const underlineClasses = classNames({\r\n [classes.underlineError]: error,\r\n [classes.underlineSuccess]: success && !error,\r\n [classes.underline]: true\r\n });\r\n\r\n const marginTop = classNames({\r\n [classes.marginTop]: labelText === undefined\r\n });\r\n\r\n return (\r\n \r\n {\r\n labelText !== undefined ?\r\n (\r\n \r\n {labelText}\r\n \r\n ) : null\r\n }\r\n\r\n onValueChange ? onValueChange(event.target.value) : null}\r\n multiline={multiline}\r\n rows={rows}\r\n endAdornment={\r\n infoText\r\n ?\r\n \r\n : null\r\n } />\r\n\r\n {\r\n error ?\r\n (\r\n \r\n ) : success ?\r\n (\r\n \r\n ) : null\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nCustomInput.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n labelText: PropTypes.node,\r\n labelProps: PropTypes.object,\r\n id: PropTypes.string,\r\n inputProps: PropTypes.object,\r\n formControlProps: PropTypes.object,\r\n error: PropTypes.bool,\r\n success: PropTypes.bool,\r\n multiline: PropTypes.bool,\r\n rows: PropTypes.number,\r\n onValueChange: PropTypes.func,\r\n infoText: PropTypes.string\r\n};\r\n\r\nexport default withStyles(customInputStyle)(CustomInput);\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { withRouter } from 'react-router-dom'\r\n\r\n// @material-ui/\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport ApproveIcon from \"@material-ui/icons/CheckCircleOutline\";\r\nimport DisapproveIcon from \"@material-ui/icons/HighlightOff\"\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\n\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\n\r\n// styles\r\nimport tableStyle from \"assets/jss/material-dashboard-react/components/tableStyle.jsx\";\r\n\r\n\r\n// TODO: Clear up this class\r\nfunction CustomTableJson({ ...props }) \r\n{\r\n const \r\n { \r\n classes, \r\n\r\n tableHead, \r\n tableData, \r\n tableHeadDataMap, \r\n\r\n tableHeaderColor,\r\n\r\n tableDayOfWeekColumns,\r\n tableNumericColumns,\r\n tableDateColumns,\r\n\r\n tableIgnoreSortColumns,\r\n\r\n isClickable,\r\n\r\n onClickLink,\r\n \r\n selectableRows,\r\n selectedItems,\r\n\r\n infoFieldIndex,\r\n infoFieldLinkText,\r\n infoModalTitle,\r\n\r\n onListItemClicked,\r\n onApproveButtonClicked,\r\n onDisapproveButtonClicked,\r\n onDeleteButtonClicked,\r\n onEditButtonClicked,\r\n initialOrderBy,\r\n initialSortingOrder,\r\n isSortable\r\n } = props;\r\n \r\n const [tempToggle, setTempToggle] = React.useState(false); // TODO: Somehow the TableRow doesn't update it's style if not updating this variable...\r\n const [localSelectedItems, setLocalSelectedItems] = React.useState([]);\r\n const [open, setOpen] = React.useState(false);\r\n const [modalDescription, setModalDescription] = React.useState(false);\r\n const [sortingOrder, setSortingOrder] = React.useState(initialSortingOrder ? initialSortingOrder : \"asc\");\r\n const [orderBy, setOrderBy] = React.useState(initialOrderBy ? initialOrderBy : \"\");\r\n\r\n const selectedRowStyle =\r\n {\r\n backgroundColor: \"Red\"\r\n }\r\n\r\n const handleClickOpen = (description) => \r\n {\r\n setOpen(true);\r\n setModalDescription(description);\r\n };\r\n\r\n function handleClose() {\r\n setOpen(false);\r\n }\r\n\r\n /**\r\n * Generates a sortable tableHead if isSortable is true.\r\n * If isSortable is false, it will return a normal tableHead.\r\n * @param {*} props Represents onRequestSort callback function.\r\n */\r\n function SortableTableHead(props)\r\n {\r\n const { onRequestSort } = props;\r\n\r\n const createSortHandler = dataColumnName => event => \r\n {\r\n onRequestSort(event, dataColumnName);\r\n }\r\n\r\n return(\r\n \r\n \r\n {\r\n tableHead.map((prop, index) => \r\n {\r\n var dataColumnName = tableHeadDataMap[index];\r\n\r\n // Check if tableHeaders should be sorted and return sortable tableHeaders.\r\n // If tableHeaders shouldn't be sorted or if they should be ignored, return normal tableHeaders.\r\n if (isSortable && (tableIgnoreSortColumns ? !tableIgnoreSortColumns.includes(dataColumnName) : true))\r\n {\r\n return (\r\n \r\n \r\n {prop}\r\n \r\n \r\n );\r\n }\r\n else\r\n {\r\n return (\r\n \r\n {prop}\r\n \r\n );\r\n }\r\n })\r\n }\r\n \r\n \r\n )\r\n }\r\n\r\n /**\r\n * Updates sortingOrder and orderBy variables \r\n * @param {*} event clickEvent\r\n * @param {*} orderByProperty property the data should be sorted by.\r\n */\r\n function handleRequestSort(event, orderByProperty) \r\n {\r\n // If same property is clicked, sort data descending. Otherwise sort data ascending.\r\n const sortDescending = orderBy === orderByProperty && sortingOrder === 'asc';\r\n\r\n // Set sorting direction and orderBy property\r\n setSortingOrder(sortDescending ? \"desc\" : \"asc\");\r\n setOrderBy(orderByProperty);\r\n }\r\n\r\n /**\r\n * Compares the provided obj1 and obj2 in an ascending order\r\n * @param {*} obj1 Object 1 to compare\r\n * @param {*} obj2 Object 2 to compare\r\n * @param {*} orderBy Property to compare between the two objects.\r\n */\r\n function compareDataAscending(obj1, obj2, orderBy) \r\n {\r\n var valueToCompare1 = \"\";\r\n var valueToCompare2 = \"\";\r\n\r\n // Check if data should be sorted on child of a property (only goes one layer deep).\r\n if (orderBy.includes('.'))\r\n {\r\n var orderBySplit = orderBy.split('.');\r\n\r\n valueToCompare1 = obj1[orderBySplit[0]][orderBySplit[1]];\r\n valueToCompare2 = obj2[orderBySplit[0]][orderBySplit[1]];\r\n }\r\n else\r\n {\r\n valueToCompare1 = obj1[orderBy];\r\n valueToCompare2 = obj2[orderBy];\r\n }\r\n\r\n //Check null values\r\n if (valueToCompare1 == null) \r\n {\r\n return -1;\r\n }\r\n else if (valueToCompare2 == null) \r\n {\r\n return 1;\r\n }\r\n\r\n // Check if value is a number, date or text and handle comparisons\r\n if (tableNumericColumns && tableNumericColumns.includes(orderBy))\r\n { \r\n if (valueToCompare2 - valueToCompare1 > 0) \r\n {\r\n return -1;\r\n }\r\n if (valueToCompare2 - valueToCompare1 < 0) \r\n {\r\n return 1;\r\n }\r\n }\r\n else if (tableDateColumns && tableDateColumns.includes(orderBy))\r\n {\r\n // Assumes date is in DAY-MONTH-YEAR HOUR:MINUTE format.\r\n var splitDateTime1 = valueToCompare1.split(' ');\r\n var splitDateTime2 = valueToCompare2.split(' ');\r\n\r\n var date1 = splitDateTime1[0].split('-');\r\n var date2 = splitDateTime2[0].split('-');\r\n\r\n // If date contained time, add time to new date object\r\n if (splitDateTime1[1] && splitDateTime2[1])\r\n {\r\n var time1 = splitDateTime1[1].split(':');\r\n var time2 = splitDateTime2[1].split(':');\r\n \r\n valueToCompare1 = new Date(date1[2], date1[1], date1[0], time1[0], time1[1]);\r\n valueToCompare2 = new Date(date2[2], date2[1], date2[0], time2[0], time2[1]);\r\n }\r\n else\r\n {\r\n valueToCompare1 = new Date(date1[2], date1[1], date1[0]);\r\n valueToCompare2 = new Date(date2[2], date2[1], date2[0]);\r\n }\r\n\r\n if (valueToCompare2 > valueToCompare1) \r\n {\r\n return -1;\r\n }\r\n if (valueToCompare2 < valueToCompare1) \r\n {\r\n return 1;\r\n }\r\n }\r\n else if (tableDayOfWeekColumns && tableDayOfWeekColumns.includes(orderBy))\r\n {\r\n var daysOfWeek = { \r\n 'MON': 0,\r\n 'TUE': 1,\r\n 'WED': 2,\r\n 'THU': 3,\r\n 'FRI': 4, \r\n 'SAT': 5, \r\n 'SUN': 6 \r\n };\r\n\r\n var value1 = daysOfWeek[valueToCompare1];\r\n var value2 = daysOfWeek[valueToCompare2];\r\n\r\n if (value1 < value2)\r\n {\r\n return -1;\r\n }\r\n else if (value1 > value2)\r\n {\r\n return 1;\r\n }\r\n }\r\n else\r\n { \r\n valueToCompare1 = valueToCompare1.toString();\r\n valueToCompare2 = valueToCompare2.toString();\r\n \r\n if (valueToCompare2.toLowerCase() > valueToCompare1.toLowerCase()) \r\n {\r\n return -1;\r\n }\r\n if (valueToCompare2.toLowerCase() < valueToCompare1.toLowerCase()) \r\n {\r\n return 1;\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Sort provided data by the provided property\r\n * @param {*} data Data to sort\r\n * @param {*} orderBy Property to sort data by\r\n */\r\n function sortTableByProperty(data, orderBy) \r\n {\r\n if (!orderBy)\r\n {\r\n return data;\r\n }\r\n\r\n var sortedData = data.sort((obj1, obj2) =>\r\n {\r\n if (sortingOrder === \"asc\")\r\n {\r\n return compareDataAscending(obj1, obj2, orderBy);\r\n }\r\n else\r\n {\r\n return -compareDataAscending(obj1, obj2, orderBy);\r\n }\r\n });\r\n\r\n return sortedData;\r\n }\r\n\r\n /**\r\n * Custom TableRow component which is able to perform an action on click\r\n */\r\n const RouterTableRow = withRouter(({rowKey, hoverStyle, listItem, history }) => (\r\n \r\n {\r\n // Somehow the TableRow doesn't update without setting this variable... \r\n setTempToggle(!tempToggle);\r\n\r\n // Check if TableRow is clickable\r\n if (!isClickable)\r\n {\r\n return;\r\n }\r\n\r\n // Check if a click event should be sent back to the place where this control is defined.\r\n if (onListItemClicked)\r\n onListItemClicked(listItem)\r\n\r\n // Check if an onClickLink has been passed to this control.\r\n if (onClickLink)\r\n {\r\n // Get single parameter from url.\r\n var matches = onClickLink.match(/\\{([^)]+)\\}/)\r\n \r\n var newLink = onClickLink;\r\n \r\n // If any parameter enclosed by { } was found,\r\n // try to fetch a listItemValue using the parameter\r\n // and replace the parameter by the found listItemValue.\r\n // e.g: /cases/ticket?no={ticketnumber} -> /cases/ticket?no=TIC-12345-67890\r\n if (matches)\r\n {\r\n var parameter = matches[1];\r\n var listItemValue = listItem[parameter];\r\n \r\n newLink = newLink.replace(matches[0], listItemValue);\r\n }\r\n \r\n history.push(newLink); \r\n }\r\n\r\n // Check if rows should be selected\r\n else if (selectableRows && selectedItems)\r\n {\r\n if (selectedItems.includes(listItem))\r\n {\r\n var itemIndex = selectedItems.indexOf(listItem);\r\n selectedItems.splice(itemIndex, 1);\r\n\r\n setLocalSelectedItems(selectedItems);\r\n }\r\n else\r\n {\r\n selectedItems.push(listItem);\r\n setLocalSelectedItems(selectedItems);\r\n }\r\n }\r\n }}>\r\n\r\n {\r\n createPropertyArrayFromJsonObject(listItem, tableHeadDataMap).map((property, index) =>\r\n { \r\n if (listItem[\"CallTo\"] != null)\r\n { \r\n if (listItem[\"CallTo\"].toString().includes(\"playing\"))\r\n {\r\n return (\r\n \r\n { \r\n // If current item index is equal to the infoFieldIndex,\r\n // Show info field as a link.\r\n (infoFieldIndex === index) \r\n ? handleClickOpen(property)}>{infoFieldLinkText} \r\n : property.toString()\r\n }\r\n \r\n ); \r\n } \r\n else\r\n {\r\n return (\r\n \r\n { \r\n // If current item index is equal to the infoFieldIndex,\r\n // Show info field as a link.\r\n (infoFieldIndex === index) \r\n ? handleClickOpen(property)}>{infoFieldLinkText} \r\n : property.toString()\r\n }\r\n \r\n ); \r\n } \r\n }\r\n else\r\n {\r\n return (\r\n \r\n { \r\n // If current item index is equal to the infoFieldIndex,\r\n // Show info field as a link.\r\n (infoFieldIndex === index) \r\n ? handleClickOpen(property)}>{infoFieldLinkText} \r\n : property.toString()\r\n }\r\n \r\n ); \r\n }\r\n }\r\n )\r\n }\r\n\r\n {\r\n // Show delete button if onDeleteButtonClicked is not null\r\n onDeleteButtonClicked || onEditButtonClicked || onApproveButtonClicked || onDisapproveButtonClicked\r\n ?\r\n \r\n {\r\n onApproveButtonClicked ? onApproveButtonClicked(listItem)}/> : null\r\n }\r\n {\r\n onDisapproveButtonClicked ? onDisapproveButtonClicked(listItem)}/> : null\r\n }\r\n {\r\n onEditButtonClicked ? onEditButtonClicked(listItem)}/> : null\r\n }\r\n {\r\n onDeleteButtonClicked ? onDeleteButtonClicked(listItem)}/> : null\r\n } \r\n \r\n :\r\n null\r\n }\r\n\r\n \r\n ))\r\n\r\n return (\r\n // TODO: Maybe create global modal.\r\n
\r\n
\r\n \r\n {infoModalTitle}\r\n \r\n \r\n {modalDescription} \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n {\r\n tableHead !== undefined ?\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n {\r\n sortTableByProperty(tableData, orderBy).map((listItem, rowKey) =>\r\n { \r\n var hoverStyle =\r\n {\r\n cursor: \"pointer\"\r\n }\r\n\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\n/**\r\n * Creates array of property values from the provided Json object. \r\n * Properties are returned in the order specified in the Keys parameter.\r\n * @param {*} jsonObject Json object containing property keys and values.\r\n * @param {*} keys Array of keys that should be fetched from the Json object. \r\n */\r\nfunction createPropertyArrayFromJsonObject(jsonObject, keys)\r\n{\r\n var propertyValueArray = []\r\n\r\n for (var i = 0; i < keys.length; i++) \r\n {\r\n // Check if key contains child key (key.subkey).\r\n var key = keys[i];\r\n\r\n var splitKeys = key.split('.');\r\n \r\n // Check if parentObject is null, return empty string.\r\n var parentObject = jsonObject[splitKeys[0]];\r\n\r\n if (parentObject === null) \r\n {\r\n propertyValueArray.push(\"\");\r\n continue;\r\n }\r\n\r\n // If key contains childKey, fetch value of the childkey. \r\n if (splitKeys.length > 1)\r\n {\r\n propertyValueArray.push(jsonObject[splitKeys[0]][splitKeys[1]])\r\n }\r\n else\r\n {\r\n propertyValueArray.push(parentObject)\r\n }\r\n }\r\n\r\n return propertyValueArray;\r\n}\r\n\r\nCustomTableJson.defaultProps = {\r\n tableHeaderColor: \"gray\"\r\n};\r\n\r\nCustomTableJson.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n tableHeaderColor: PropTypes.oneOf([\r\n \"warning\",\r\n \"primary\",\r\n \"danger\",\r\n \"success\",\r\n \"info\",\r\n \"rose\",\r\n \"gray\"\r\n ]),\r\n tableHead: PropTypes.arrayOf(PropTypes.string),\r\n tableData: PropTypes.arrayOf(PropTypes.object),\r\n tableHeadDataMap : PropTypes.arrayOf(PropTypes.any), \r\n onClickLink : PropTypes.string,\r\n descriptionModal : PropTypes.bool\r\n};\r\n\r\nexport default withStyles(tableStyle)(CustomTableJson);\r\n","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\n// Extra libs\r\nimport Cookies from \"js-cookie\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nconst allowedPortalPermissions =\r\n[\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASES\",\r\n \"READALLCASESPERSONALWRITE\"\r\n]\r\n\r\nclass Cases extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n cases: []\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get cases\r\n apiGet(\"cases\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n cases: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n\r\n render() \r\n {\r\n const { error, isLoaded, cases } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n

Active Cases

\r\n

\r\n All active cases of my organization. \r\n

\r\n
\r\n \r\n\r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"ADMINCASES\", \"PERSONALCASESONLY\", \"READALLCASESPERSONALWRITE\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n : null\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 withStyles(styles)(Cases)","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport Input from \"@material-ui/core/Input\";\r\nimport NativeSelect from \"@material-ui/core/NativeSelect\";\r\n\r\n// @material-ui/icons\r\nimport Clear from \"@material-ui/icons/Clear\";\r\nimport Check from \"@material-ui/icons/Check\";\r\nimport InfoIcon from '@material-ui/icons/Info';\r\n\r\n// core components\r\nimport customSelectStyle from \"assets/jss/material-dashboard-react/components/customInputStyle.jsx\";\r\nimport InputInfoButton from \"components/CustomInput/InputInfoButton.jsx\";\r\n\r\nfunction CustomSelect({ ...props }) \r\n{\r\n const \r\n {\r\n classes,\r\n formControlProps,\r\n labelText,\r\n id,\r\n labelProps,\r\n inputProps,\r\n error,\r\n success,\r\n onValueChange,\r\n selectedValue,\r\n values,\r\n keyColumn,\r\n valueColumn,\r\n infoText\r\n } = props;\r\n\r\n const labelClasses = classNames({\r\n [\" \" + classes.labelRootError]: error,\r\n [\" \" + classes.labelRootSuccess]: success && !error\r\n });\r\n\r\n const marginTop = classNames({\r\n [classes.marginTop]: labelText === undefined\r\n });\r\n \r\n const createOptionItemsFromValues = () =>\r\n {\r\n // If keycolumn is not null, use the key and value column. Else use the item.\r\n if (keyColumn)\r\n {\r\n return values.map((item, key) =>\r\n {\r\n return()\r\n });\r\n }\r\n else\r\n {\r\n return values.map((item, key) =>\r\n {\r\n return()\r\n });\r\n }\r\n }\r\n\r\n return (\r\n \r\n {\r\n labelText !== undefined ? \r\n (\r\n \r\n {labelText}\r\n \r\n ) : null\r\n }\r\n \r\n onValueChange ? onValueChange(event.target.value) : null}\r\n value={selectedValue}\r\n input={\r\n :\r\n null\r\n } />}>\r\n \r\n {\r\n createOptionItemsFromValues()\r\n }\r\n \r\n \r\n {\r\n error ? \r\n (\r\n \r\n ) : success ? \r\n (\r\n \r\n ) : null\r\n }\r\n \r\n );\r\n}\r\n\r\nCustomSelect.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n labelText: PropTypes.node,\r\n labelProps: PropTypes.object,\r\n id: PropTypes.string,\r\n inputProps: PropTypes.object,\r\n formControlProps: PropTypes.object,\r\n error: PropTypes.bool,\r\n success: PropTypes.bool,\r\n onValueChange: PropTypes.func,\r\n values: PropTypes.array,\r\n keyColumn: PropTypes.string,\r\n valueColumn: PropTypes.string,\r\n infoText: PropTypes.string\r\n};\r\n\r\nexport default withStyles(customSelectStyle)(CustomSelect);\r\n","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport CustomSelect from \"../../components/CustomInput/CustomSelect\";\r\nimport Danger from \"components/Typography/Danger.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\n// Local scripts\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\"\r\n }\r\n };\r\n\r\nvar allowedPortalPermissions = [\r\n \"ADMINCASES\", \r\n \"PERSONALCASESONLY\", \r\n \"READALLCASESPERSONALWRITE\"\r\n]\r\n\r\nclass NewCase extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n creatingCase: false,\r\n createCaseError: null,\r\n caseCreated: false,\r\n\r\n caseTypes: [],\r\n entitlements: [],\r\n subjects:[],\r\n\r\n caseTitle: \"\",\r\n caseType: \"\",\r\n caseSubject: \"\",\r\n caseEntitlement: \"\",\r\n caseDescription: \"\"\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Fetch case meta data\r\n apiGet(\"cases/meta\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n var formattedSubjects = this.flattenSubjectTree(result.data.SubjectTree);\r\n\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n caseTypes: result.data.CaseTypes,\r\n entitlements: result.data.Entitlements,\r\n subjects: formattedSubjects,\r\n caseOriginCodes: result.data.CaseOriginCodes\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data.Message\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Put all parent and child subjects in the same list.\r\n */\r\n flattenSubjectTree = (parentSubject) =>\r\n {\r\n var subjects = []\r\n\r\n parentSubject.ChildSubjects.map((childSubject) =>\r\n {\r\n subjects.push(childSubject);\r\n\r\n if (childSubject.ChildSubjects != null)\r\n {\r\n this.flattenSubjectTree(childSubject).map((childChildSubject) =>\r\n {\r\n childChildSubject.ChildSubjects = null;\r\n childChildSubject.Title = childSubject.Title + \" / \" + childChildSubject.Title;\r\n subjects.push(childChildSubject);\r\n });\r\n }\r\n });\r\n\r\n return subjects;\r\n }\r\n\r\n createNewCase = () => \r\n {\r\n this.setState({creatingCase: true})\r\n\r\n // TODO: authentication\r\n const { caseTitle, caseType, caseSubject, caseEntitlement, caseDescription, caseOriginCodes } = this.state;\r\n \r\n // Get Web origin code\r\n var originCodeKey = -1;\r\n\r\n for (var i = 0; i < caseOriginCodes.length; i++) \r\n {\r\n var originCode = caseOriginCodes[i];\r\n \r\n if (originCode.Name === \"Web\")\r\n {\r\n originCodeKey = originCode.Key;\r\n break;\r\n }\r\n } \r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n SubjectId : caseSubject,\r\n CaseTypeKey: caseType,\r\n Title : caseTitle,\r\n EntitlementId : caseEntitlement,\r\n Description : caseDescription,\r\n CaseOriginKey : originCodeKey\r\n }\r\n\r\n // Create case\r\n apiPostJson(\"cases/create\", requestBody).then(() =>\r\n {\r\n this.setState(\r\n {\r\n caseCreated: true\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n createCaseError: error.data, \r\n creatingCase: false\r\n });\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded, creatingCase, createCaseError, caseCreated, caseTypes, entitlements, subjects, caseType, caseSubject, caseEntitlement } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n // TODO: Proper error handling\r\n return \r\n }\r\n else if (caseCreated)\r\n {\r\n // If case was created, navigate to cases page.\r\n return ()\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
{e.preventDefault(); this.createNewCase()}}>\r\n \r\n

Create new case

\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { this.setState({caseTitle: value}); }\r\n }\r\n inputProps={{\r\n autoFocus: true\r\n }}\r\n />\r\n \r\n \r\n { this.setState({caseType: value}); }\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n { this.setState({caseSubject: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({caseEntitlement: value}); }\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n { this.setState({caseDescription: value}); }\r\n }\r\n multiline={true}\r\n rows={5}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {createCaseError ? \"Oops, something went wrong: \" + createCaseError.message : \"\"}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(NewCase);","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\n// Extra libs\r\nimport Cookies from \"js-cookie\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nconst allowedPortalPermissions =\r\n[\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASES\",\r\n \"READALLCASESPERSONALWRITE\"\r\n]\r\n\r\nclass ClosedCases extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n cases: []\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get cases\r\n apiGet(\"cases/closedcases\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n cases: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n\r\n render() \r\n {\r\n const { error, isLoaded, cases } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n

Closed Cases

\r\n

\r\n Closed cases (in the last 12 months) of my organization. \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 withStyles(styles)(ClosedCases)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\n// Extra libs\r\nimport globalData from \"variables/globalData.jsx\";\r\n\r\nimport { apiGet, apiPost } from \"utils/webRequestUtils.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = theme => (\r\n{\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nclass ClosedCaseDetails extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n\r\n confirmDialogOpen: false,\r\n closingCase: false,\r\n caseClosed: false,\r\n\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n isCaseOwner: false,\r\n caseDetails: null\r\n }\r\n }\r\n\r\n // TODO: This is a temporary solution.\r\n // TODO: Duplicatie code (CaseDetails / CaseActivities)\r\n getOwnerDetails = () =>\r\n {\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Check if user is case owner\r\n apiGet(\"cases/owner/\" + ticketNumber).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedOwnerDetails:true,\r\n isCaseOwner: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedOwnerDetails: true,\r\n error: error.data,\r\n isCaseOwner: false\r\n });\r\n });\r\n }\r\n \r\n componentDidMount()\r\n {\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Get details of case\r\n apiGet(\"cases/get/closed/\" + ticketNumber).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n caseDetails: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n\r\n // Get case ownership info\r\n this.getOwnerDetails();\r\n }\r\n \r\n handleConfirmDialogOpen = () =>\r\n {\r\n this.setState({\r\n confirmDialogOpen: true\r\n })\r\n }\r\n\r\n handleConfirmDialogClose = () => \r\n {\r\n this.setState({\r\n confirmDialogOpen: false\r\n })\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n render() \r\n { \r\n const { error, isLoaded, confirmDialogOpen, closingCase, caseClosed, toastOpen, toastColor, toastText, isCaseOwner, caseDetails } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else if (caseClosed)\r\n {\r\n // If case was closed, navigate to cases page.\r\n return ()\r\n }\r\n\r\n return (\r\n
\r\n\r\n {/* Popup alert */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n /> \r\n\r\n {/* Case details card */}\r\n \r\n \r\n \r\n \r\n

Case Details

\r\n

{caseDetails.Title}

\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 {/* Description */}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(ClosedCaseDetails)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport SendIcon from '@material-ui/icons/Send';\r\nimport PublishIcon from '@material-ui/icons/Publish';\r\n\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\n// Extra libs\r\nimport { apiGet, apiPostFormData } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => (\r\n{\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n rightIcon:{\r\n marginLeft: \"4px\"\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nclass ClosedCaseActivities extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoadedActivities: false,\r\n isLoadedOwnerDetails: false,\r\n\r\n replyDialogOpen: false,\r\n sendingPortalresponse: false,\r\n\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n caseActivities: null,\r\n isCaseOwner: false,\r\n\r\n replySubject: \"\",\r\n replyMessage: \"\",\r\n\r\n selectedFilesText: \"No file(s) selected.\"\r\n }\r\n }\r\n\r\n // Prevent timeout from setting set when page is closed.\r\n componentWillUnmount() \r\n {\r\n var id = window.setTimeout(null, 0);\r\n while (id--) \r\n {\r\n window.clearTimeout(id);\r\n }\r\n }\r\n\r\n handleReplyDialogOpen = () =>\r\n {\r\n this.setState({\r\n replyDialogOpen: true\r\n })\r\n }\r\n \r\n handleReplyDialogClose = () => \r\n {\r\n this.setState({\r\n replyDialogOpen: false,\r\n selectedFilesText: \"No file(s) selected.\"\r\n })\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Get activities and case ownership details\r\n this.getActivities();\r\n this.getOwnerDetails();\r\n }\r\n\r\n getActivities = () =>\r\n {\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Get activities of ticket\r\n apiGet(\"activities/get/\" + ticketNumber).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedActivities:true,\r\n caseActivities: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedActivities: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n // TODO: This is a temporary solution.\r\n // TODO: Duplicatie code (CaseDetails / CaseActivities)\r\n getOwnerDetails = () =>\r\n {\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Check if user is case owner\r\n apiGet(\"cases/owner/\" + ticketNumber).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedOwnerDetails:true,\r\n isCaseOwner: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedOwnerDetails: true,\r\n error: error.data,\r\n isCaseOwner: false\r\n });\r\n });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n setSelectedFilesText = () =>\r\n {\r\n var fileName = \"\";\r\n var fileInput = document.getElementById(\"file-upload\");\r\n \r\n if( fileInput.files && fileInput.files.length > 1 )\r\n {\r\n var fileSize = 0;\r\n\r\n for (var i = 0; i < fileInput.files.length; i++)\r\n {\r\n fileSize += parseFloat((fileInput.files[i].size / 1000000).toFixed(2));\r\n }\r\n\r\n\t\t\tfileName = fileInput.files.length + \" files selected (\" + fileSize + \" MB).\";\r\n }\r\n else\r\n {\r\n\t\t\tfileName = fileInput.value.split( '\\\\' ).pop() + \" (\" + parseFloat((fileInput.files[0].size / 1000000).toFixed(2)) + \" MB).\";\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedFilesText: fileName\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { error, isLoadedActivities, isLoadedOwnerDetails, replyDialogOpen, sendingPortalresponse, toastOpen, toastColor, toastText, caseActivities, isCaseOwner, selectedFilesText } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoadedActivities || !isLoadedOwnerDetails)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n \r\n \r\n \r\n \r\n

Closed Case Activities

\r\n

All closed case activities.

\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 withStyles(styles)(ClosedCaseActivities)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport CaseDetails from \"views/Cases/CaseInfo/ClosedCaseDetails.jsx\";\r\nimport CaseActivities from \"views/Cases/CaseInfo/ClosedCaseActivities.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = \r\n{\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst allowedPortalPermissions =\r\n[\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASES\",\r\n \"READALLCASESPERSONALWRITE\"\r\n]\r\n\r\nclass ClosedCaseInfoPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n error: \"Access denied\"\r\n });\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoaded: true\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { isLoaded, error } = this.state;\r\n\r\n if (!isLoaded)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(ClosedCaseInfoPage)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\n// Extra libs\r\nimport globalData from \"variables/globalData.jsx\";\r\n\r\nimport { apiGet, apiPost } from \"utils/webRequestUtils.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = theme => (\r\n{\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nclass CaseDetails extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n\r\n confirmDialogOpen: false,\r\n closingCase: false,\r\n caseClosed: false,\r\n\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n isCaseOwner: false,\r\n caseDetails: null\r\n }\r\n }\r\n\r\n // TODO: This is a temporary solution.\r\n // TODO: Duplicatie code (CaseDetails / CaseActivities)\r\n getOwnerDetails = () =>\r\n {\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Check if user is case owner\r\n apiGet(\"cases/owner/\" + ticketNumber).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedOwnerDetails:true,\r\n isCaseOwner: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedOwnerDetails: true,\r\n error: error.data,\r\n isCaseOwner: false\r\n });\r\n });\r\n }\r\n \r\n componentDidMount()\r\n {\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Get details of case\r\n apiGet(\"cases/get/\" + ticketNumber).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n caseDetails: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n\r\n // Get case ownership info\r\n this.getOwnerDetails();\r\n }\r\n \r\n handleConfirmDialogOpen = () =>\r\n {\r\n this.setState({\r\n confirmDialogOpen: true\r\n })\r\n }\r\n\r\n handleConfirmDialogClose = () => \r\n {\r\n this.setState({\r\n confirmDialogOpen: false\r\n })\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n closeCase = () =>\r\n {\r\n this.setState({closingCase:true});\r\n\r\n // TODO: Getting ticketnumber is duplicate at this point.\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Close case\r\n apiPost(\"cases/close/\" + ticketNumber).then(() => \r\n {\r\n this.setState(\r\n {\r\n closingCase: false,\r\n caseClosed: true\r\n }); \r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n closingCase: false\r\n });\r\n\r\n this.handleConfirmDialogClose();\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { error, isLoaded, confirmDialogOpen, closingCase, caseClosed, toastOpen, toastColor, toastText, isCaseOwner, caseDetails } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else if (caseClosed)\r\n {\r\n // If case was closed, navigate to cases page.\r\n return ()\r\n }\r\n\r\n return (\r\n
\r\n\r\n {/* Popup alert */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Close case dialog */}\r\n this.handleConfirmDialogClose()} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {\"Are you sure you want to close this case?\"}\r\n \r\n \r\n Closed cases can't be reopened from the Universal Customer Portal again.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Case details card */}\r\n \r\n \r\n \r\n \r\n

Case Details

\r\n

{caseDetails.Title}

\r\n
\r\n \r\n { \r\n PMUtils.userHasAnyRequiredPermissions([\"ADMINCASES\"], globalData.loggedInUser.PortalPermissions) ||\r\n (PMUtils.userHasAnyRequiredPermissions([\"PERSONALCASESONLY\", \"READALLCASESPERSONALWRITE\"], globalData.loggedInUser.PortalPermissions) && isCaseOwner)\r\n ? \r\n () \r\n : null\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 {/* Description */}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(CaseDetails)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport SendIcon from '@material-ui/icons/Send';\r\nimport PublishIcon from '@material-ui/icons/Publish';\r\n\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\n// Extra libs\r\nimport { apiGet, apiPostFormData } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => (\r\n{\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n rightIcon:{\r\n marginLeft: \"4px\"\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nclass CaseActivities extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoadedActivities: false,\r\n isLoadedOwnerDetails: false,\r\n\r\n replyDialogOpen: false,\r\n sendingPortalresponse: false,\r\n\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n caseActivities: null,\r\n isCaseOwner: false,\r\n\r\n replySubject: \"\",\r\n replyMessage: \"\",\r\n\r\n selectedFilesText: \"No file(s) selected.\"\r\n }\r\n }\r\n\r\n // Prevent timeout from setting set when page is closed.\r\n componentWillUnmount() \r\n {\r\n var id = window.setTimeout(null, 0);\r\n while (id--) \r\n {\r\n window.clearTimeout(id);\r\n }\r\n }\r\n\r\n handleReplyDialogOpen = () =>\r\n {\r\n this.setState({\r\n replyDialogOpen: true\r\n })\r\n }\r\n \r\n handleReplyDialogClose = () => \r\n {\r\n this.setState({\r\n replyDialogOpen: false,\r\n selectedFilesText: \"No file(s) selected.\"\r\n })\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Get activities and case ownership details\r\n this.getActivities();\r\n this.getOwnerDetails();\r\n }\r\n\r\n getActivities = () =>\r\n {\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Get activities of ticket\r\n apiGet(\"activities/get/\" + ticketNumber).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedActivities:true,\r\n caseActivities: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedActivities: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n // TODO: This is a temporary solution.\r\n // TODO: Duplicatie code (CaseDetails / CaseActivities)\r\n getOwnerDetails = () =>\r\n {\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Check if user is case owner\r\n apiGet(\"cases/owner/\" + ticketNumber).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedOwnerDetails:true,\r\n isCaseOwner: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedOwnerDetails: true,\r\n error: error.data,\r\n isCaseOwner: false\r\n });\r\n });\r\n }\r\n\r\n sendPortalresponse = () => \r\n {\r\n this.setState({sendingPortalresponse: true})\r\n\r\n // TODO: authentication\r\n const { replySubject, replyMessage } = this.state;\r\n\r\n // TODO: Getting ticketnumber is duplicate at this point.\r\n // Get case ticketnumber from url parameter.\r\n var url = new URL(window.location.href);\r\n var ticketNumber = url.searchParams.get(\"no\");\r\n\r\n // Create request body\r\n var formDataRequestBody = new FormData();\r\n formDataRequestBody.append(\"subject\", replySubject);\r\n formDataRequestBody.append(\"description\", replyMessage);\r\n formDataRequestBody.append(\"ticketNumber\", ticketNumber);\r\n\r\n var filesToUpload = document.getElementById(\"file-upload\").files;\r\n\r\n for (var i = 0; i < filesToUpload.length; i++) { \r\n var file = filesToUpload[i];\r\n\r\n if (file.size > 15000000)\r\n {\r\n this.setState({ sendingPortalresponse: false });\r\n\r\n this.showNotification(\"danger\", \"Oops, file size can not be bigger than 15 MB.\");\r\n return;\r\n }\r\n\r\n formDataRequestBody.append(\"attachments\", file);\r\n }\r\n\r\n // Send portal response\r\n apiPostFormData(\"activities/sendmessage\", formDataRequestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n sendingPortalresponse: false\r\n });\r\n\r\n this.handleReplyDialogClose();\r\n this.showNotification(\"success\", \"Portal response sent!\");\r\n\r\n this.getActivities();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n //createCaseError: error, \r\n sendingPortalresponse: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n setSelectedFilesText = () =>\r\n {\r\n var fileName = \"\";\r\n var fileInput = document.getElementById(\"file-upload\");\r\n \r\n if( fileInput.files && fileInput.files.length > 1 )\r\n {\r\n var fileSize = 0;\r\n\r\n for (var i = 0; i < fileInput.files.length; i++)\r\n {\r\n fileSize += parseFloat((fileInput.files[i].size / 1000000).toFixed(2));\r\n }\r\n\r\n\t\t\tfileName = fileInput.files.length + \" files selected (\" + fileSize + \" MB).\";\r\n }\r\n else\r\n {\r\n\t\t\tfileName = fileInput.value.split( '\\\\' ).pop() + \" (\" + parseFloat((fileInput.files[0].size / 1000000).toFixed(2)) + \" MB).\";\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedFilesText: fileName\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { error, isLoadedActivities, isLoadedOwnerDetails, replyDialogOpen, sendingPortalresponse, toastOpen, toastColor, toastText, caseActivities, isCaseOwner, selectedFilesText } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoadedActivities || !isLoadedOwnerDetails)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n this.handleReplyDialogClose()} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.sendPortalresponse()}}>\r\n Reply To Case\r\n \r\n \r\n Please, enter the details of your message down below.\r\n \r\n\r\n { this.setState({replySubject: value}); }\r\n }\r\n /> \r\n { this.setState({replyMessage: value}); }\r\n }\r\n multiline={true}\r\n rows={5}\r\n /> \r\n \r\n {/* TODO: Create reusable control */}\r\n
\r\n \r\n
\r\n \r\n {selectedFilesText}\r\n\r\n this.setSelectedFilesText()}> \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

Case Activities

\r\n

All case activities.

\r\n
\r\n \r\n { \r\n PMUtils.userHasAnyRequiredPermissions([\"ADMINCASES\"], globalData.loggedInUser.PortalPermissions) ||\r\n (PMUtils.userHasAnyRequiredPermissions([\"PERSONALCASESONLY\", \"READALLCASESPERSONALWRITE\"], globalData.loggedInUser.PortalPermissions) && isCaseOwner)\r\n ? \r\n () \r\n : null\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 withStyles(styles)(CaseActivities)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport CaseDetails from \"views/Cases/CaseInfo/CaseDetails.jsx\";\r\nimport CaseActivities from \"views/Cases/CaseInfo/CaseActivities.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = \r\n{\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst allowedPortalPermissions =\r\n[\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASES\",\r\n \"READALLCASESPERSONALWRITE\"\r\n]\r\n\r\nclass CaseInfoPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n error: \"Access denied\"\r\n });\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoaded: true\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { isLoaded, error } = this.state;\r\n\r\n if (!isLoaded)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(CaseInfoPage)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// @material-ui/icons\r\nimport FolderIcon from \"@material-ui/icons/FolderOpen\";\r\n\r\n// core components\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardIcon from \"components/Card/CardIcon.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.AGENTS.VIEW\",\r\n \"UCALLMANAGER.AGENTS.EDIT\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nclass PortalGeneralDocumentsWidget extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state =\r\n {\r\n error: null,\r\n isLoaded: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) ||\r\n !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions)) {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoaded: true\r\n });\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n const { isLoaded, error } = this.state;\r\n\r\n if (!isLoaded) {\r\n\r\n return \r\n }\r\n else if (error) {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

General Documents

\r\n
\r\n \r\n \r\n Go to General Documents\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default withStyles(dashboardStyle)(PortalGeneralDocumentsWidget);","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// @material-ui/icons\r\nimport FolderIcon from \"@material-ui/icons/FolderOpen\";\r\n\r\n// core components\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardIcon from \"components/Card/CardIcon.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst requiredPortalPermissions = [ \r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.AGENTS.VIEW\",\r\n \"UCALLMANAGER.AGENTS.EDIT\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nclass UCallManagerAgentsWidget extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) ||\r\n !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoaded: true\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { classes } = this.props;\r\n const { isLoaded, error } = this.state;\r\n \r\n if (!isLoaded)\r\n {\r\n \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

Contracts

\r\n
\r\n \r\n \r\n Go to Contracts\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default withStyles(dashboardStyle)(UCallManagerAgentsWidget);","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// @material-ui/icons\r\nimport FolderIcon from \"@material-ui/icons/FolderOpen\";\r\n\r\n// core components\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardIcon from \"components/Card/CardIcon.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.AGENTS.VIEW\",\r\n \"UCALLMANAGER.AGENTS.EDIT\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nclass UCallManagerAgentsWidget extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state =\r\n {\r\n error: null,\r\n isLoaded: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) ||\r\n !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions)) {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoaded: true\r\n });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const { isLoaded, error } = this.state;\r\n\r\n if (!isLoaded) {\r\n\r\n return \r\n }\r\n else if (error) {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

Invoices

\r\n
\r\n \r\n \r\n Go to Invoices\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default withStyles(dashboardStyle)(UCallManagerAgentsWidget);","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport GeneralDocumentsWidget from \"views/Dashboard/PortalWidgets/PortalGeneralDocumentsWidget.jsx\";\r\nimport ContractsWidget from \"views/Dashboard/PortalWidgets/PortalContractsWidget.jsx\";\r\nimport InvoicesWidget from \"views/Dashboard/PortalWidgets/PortalInvoicesWidget.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst allowedPortalPermissions =\r\n [\r\n \"UCP.DOCUMENTS.GENERAL.VIEW\",\r\n \"VIEWCONTRACTS\",\r\n \"ADMININVOICES\"\r\n ]\r\n\r\nconst requiredGeneralDocsPermissions = [\r\n \"UCP.DOCUMENTS.GENERAL.VIEW\",\r\n]\r\n\r\nconst requiredContractsPermissions = [\r\n \"VIEWCONTRACTS\",\r\n]\r\n\r\nconst requiredInvoicesPermissions = [\r\n \"ADMININVOICES\"\r\n]\r\n\r\nclass DocumentsOverviewPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n error: null,\r\n isLoaded: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions)) {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoaded: true\r\n });\r\n }\r\n\r\n render() {\r\n const { error, isLoaded } = this.state;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n

Documents

\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions(requiredGeneralDocsPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n\r\n {\r\n PMUtils.userHasAnyRequiredPermissions(requiredContractsPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n\r\n {\r\n PMUtils.userHasAnyRequiredPermissions(requiredInvoicesPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(DocumentsOverviewPage)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPostJson, apiPostFileJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst allowedPortalPermissions =\r\n [\r\n \"UCP.DOCUMENTS.GENERAL.VIEW\"\r\n ]\r\n\r\nclass GeneralDocumentsPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n generalDocs: [],\r\n selectedDocuments: [],\r\n triggerRender: \"\",\r\n\r\n downloading: false\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions)) {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get list of general documents\r\n apiGet(\"documents/general\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n generalDocs: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n downloadDocuments = () =>\r\n {\r\n const { selectedDocuments } = this.state;\r\n\r\n this.setState(\r\n {\r\n downloading: true\r\n });\r\n\r\n var requestBody = selectedDocuments;\r\n\r\n // Get downloadable zip file containing selected documents.\r\n apiPostFileJson(\"documents/general/get\", requestBody).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n downloading: false,\r\n });\r\n\r\n // Trigger file download\r\n const data = window.URL.createObjectURL(result);\r\n var link = document.createElement('a');\r\n link.href = data;\r\n link.download=\"documents.zip\";\r\n link.click();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n downloading: false,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() {\r\n const { error, isLoaded, generalDocs, selectedDocuments, downloading } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

General Documents

\r\n

\r\n Overview of general documents.\r\n

\r\n
\r\n \r\n {\r\n selectedDocuments.length > 0\r\n ?\r\n (\r\n \r\n \r\n {selectedDocuments.length === 1 ? \"1 document selected\" : selectedDocuments.length + \" documents selected\"}\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n } \r\n\r\n this.setState({ triggerRender: \"\" }) }\r\n initialOrderBy={\"CreationTime\"}\r\n initialSortingOrder={\"desc\"}\r\n tableDateColumns={[\"CreationTime\"]}\r\n />\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(GeneralDocumentsPage)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPostJson, apiPostFileJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst allowedPortalPermissions =\r\n [\r\n \"VIEWCONTRACTS\"\r\n ]\r\n\r\nclass ContractsPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n contracts: [],\r\n\r\n selectedContracts: [],\r\n triggerRender: \"\",\r\n\r\n downloading: false\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions)) {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get list of recordings\r\n apiGet(\"documents/contracts\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n contracts: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n downloadContracts = () =>\r\n {\r\n const { selectedContracts } = this.state;\r\n\r\n this.setState(\r\n {\r\n downloading: true\r\n });\r\n\r\n var requestBody = selectedContracts;\r\n\r\n // Get downloadable zip file containing selected contracts.\r\n apiPostFileJson(\"documents/contracts/get\", requestBody).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n downloading: false,\r\n });\r\n\r\n // Trigger file download\r\n const data = window.URL.createObjectURL(result);\r\n var link = document.createElement('a');\r\n link.href = data;\r\n link.download=\"contracts.zip\";\r\n link.click();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n downloading: false,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() {\r\n const { error, isLoaded, contracts, selectedContracts, downloading } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

Contracts

\r\n

\r\n Overview of contracts.\r\n

\r\n
\r\n \r\n {\r\n selectedContracts.length > 0\r\n ?\r\n (\r\n \r\n \r\n {selectedContracts.length === 1 ? \"1 contract selected\" : selectedContracts.length + \" contracts selected\"}\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n } \r\n\r\n this.setState({ triggerRender: \"\" }) }\r\n initialOrderBy={\"CreationTime\"}\r\n initialSortingOrder={\"desc\"}\r\n tableDateColumns={[\"CreationTime\"]}\r\n />\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(ContractsPage)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPostJson, apiPostFileJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst allowedPortalPermissions =\r\n [\r\n \"ADMININVOICES\"\r\n ]\r\n\r\nclass InvoicesPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n invoices: [],\r\n\r\n selectedInvoices: [],\r\n triggerRender: \"\",\r\n\r\n downloading: false\r\n }\r\n\r\n }\r\n\r\n componentDidMount() {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions)) {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get list of invoices\r\n apiGet(\"documents/invoices\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n invoices: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n downloadInvoices = () =>\r\n {\r\n const { selectedInvoices } = this.state;\r\n\r\n this.setState(\r\n {\r\n downloading: true\r\n });\r\n\r\n var requestBody = selectedInvoices;\r\n\r\n // Get downloadable zip file containing selected invoices.\r\n apiPostFileJson(\"documents/invoices/get\", requestBody).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n downloading: false,\r\n });\r\n\r\n // Trigger file download\r\n const data = window.URL.createObjectURL(result);\r\n var link = document.createElement('a');\r\n link.href = data;\r\n link.download=\"invoices.zip\";\r\n link.click();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n downloading: false,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() {\r\n const { error, isLoaded, invoices, selectedInvoices, downloading } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n

Invoices

\r\n

\r\n Overview of invoices.\r\n

\r\n
\r\n \r\n {\r\n selectedInvoices.length > 0\r\n ?\r\n (\r\n \r\n \r\n {selectedInvoices.length === 1 ? \"1 invoice selected\" : selectedInvoices.length + \" invoices selected\"}\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n } \r\n\r\n this.setState({ triggerRender: \"\" }) }\r\n initialOrderBy={\"CreationTime\"}\r\n initialSortingOrder={\"desc\"}\r\n tableDateColumns={[\"CreationTime\"]}\r\n />\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(InvoicesPage)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nconst allowedPortalPermissions =\r\n[\r\n \"READORDERS\",\r\n \"ADMINORDERS\"\r\n]\r\n\r\nclass OrdersPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n orders: []\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get orders\r\n apiGet(\"orders/pending\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n orders: this.appendDescriptionToOrders(result.data)\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n appendDescriptionToOrders(orders)\r\n {\r\n var newOrders = [];\r\n\r\n for (var orderIndex = 0; orderIndex < orders.length; orderIndex++)\r\n {\r\n var order = orders[orderIndex];\r\n\r\n var productsDescription = \"\";\r\n\r\n for (var productIndex = 0; productIndex < order[\"Products\"].length; productIndex++)\r\n {\r\n var productAmount = order[\"Products\"][productIndex][\"Amount\"];\r\n var productName = order[\"Products\"][productIndex][\"IsAddOn\"] === true\r\n ?\r\n order[\"Products\"][productIndex][\"ProductDisplayName\"]\r\n :\r\n order[\"Products\"][productIndex][\"ProductName\"];\r\n\r\n\r\n productsDescription += (\"- \" + \"(\" + productAmount + \"x) \" + productName) + \"\\n\";\r\n }\r\n\r\n order[\"ProductsDescription\"] = productsDescription;\r\n\r\n newOrders.push(order);\r\n }\r\n\r\n return newOrders;\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded, orders } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n

Pending Orders

\r\n

\r\n All pending orders of my organization. \r\n

\r\n
\r\n \r\n\r\n \r\n \r\n Pricelists\r\n
\r\n Microsoft 365 CSP Pricelist\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"ADMINORDERS\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n : null\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 withStyles(styles)(OrdersPage)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost } from \"utils/webRequestUtils.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nconst requiredPortalPermissions =\r\n[\r\n \"UNIVERSALGENERATEPRICELIST\"\r\n]\r\n\r\nclass ApproveOrder extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n approvingOrder: false,\r\n removingOrder: false,\r\n orderToRemove: null,\r\n orderToApprove: null,\r\n approveOrderDialogOpen: false,\r\n removeOrderDialogOpen: false,\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n orders: []\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions)) {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoaded: true\r\n });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) => {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function () {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n generateList() {\r\n this.setState({ generatingList: true });\r\n\r\n // Approve Order\r\n apiGet(\"pc/products/generate\").then(() => {\r\n this.setState(\r\n {\r\n generatingList: false\r\n });\r\n\r\n this.showNotification(\"success\", \"List has been generated\");\r\n },\r\n (error) => {\r\n this.setState(\r\n {\r\n //TODO: User friendly error. \r\n generatingList: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n } \r\n\r\n render() \r\n {\r\n const { error, isLoaded, toastColor, toastText, toastOpen, generatingList: generatingList } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else\r\n {\r\n return (\r\n \r\n
\r\n\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n \r\n \r\n \r\n \r\n

Generate price list

\r\n

\r\n Click the button below to generate a new price 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\nexport default withStyles(styles)(ApproveOrder)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost } from \"utils/webRequestUtils.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nconst requiredPortalPermissions =\r\n[\r\n \"UNIVERSALAPPROVEORDERS\"\r\n]\r\n\r\nclass ApproveOrder extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n approvingOrder: false,\r\n removingOrder: false,\r\n orderToRemove: null,\r\n orderToApprove: null,\r\n approveOrderDialogOpen: false,\r\n removeOrderDialogOpen: false,\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n orders: []\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions)) {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.getOrders();\r\n }\r\n\r\n toggleConfirmDialogOpen = (isOpen) => {\r\n this.setState({\r\n confirmDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n getOrders() {\r\n\r\n // Get orders\r\n apiGet(\"orders/pendingapproval\").then((result) => {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n orders: this.appendDescriptionToOrders(result.data)\r\n });\r\n },\r\n (error) => {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n toggleRemoveOrderDialogOpen = (isOpen) => {\r\n this.setState({\r\n removeOrderDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) => {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function () {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n removeOrder() {\r\n this.setState({ removingOrder: true });\r\n\r\n const { orderToRemove, removeOrderDialogOpen } = this.state;\r\n\r\n // Remove Order\r\n apiPost(\"orders/disapprove?orderId=\" + orderToRemove.OrderId).then(() => {\r\n this.setState(\r\n {\r\n removingOrder: false\r\n });\r\n\r\n this.toggleRemoveOrderDialogOpen(removeOrderDialogOpen);\r\n this.showNotification(\"success\", \"Order removed!\");\r\n\r\n this.getOrders();\r\n },\r\n (error) => {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingOrder: false\r\n });\r\n\r\n this.toggleRemoveOrderDialogOpen(removeOrderDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n toggleApproveOrderDialogOpen = (isOpen) => {\r\n this.setState({\r\n approveOrderDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n approveOrder() {\r\n this.setState({ approvingOrder: true });\r\n\r\n const { orderToApprove, approveOrderDialogOpen } = this.state;\r\n\r\n // Approve Order\r\n apiPost(\"orders/approve?orderId=\" + orderToApprove.OrderId).then(() => {\r\n this.setState(\r\n {\r\n approvingOrder: false\r\n });\r\n\r\n this.toggleApproveOrderDialogOpen(approveOrderDialogOpen);\r\n this.showNotification(\"success\", \"Order approved!\");\r\n\r\n this.getOrders();\r\n },\r\n (error) => {\r\n this.setState(\r\n {\r\n //TODO: User friendly error. \r\n approvingOrder: false\r\n });\r\n\r\n this.toggleApproveOrderDialogOpen(approveOrderDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n } \r\n\r\n appendDescriptionToOrders(orders)\r\n {\r\n var newOrders = [];\r\n\r\n for (var orderIndex = 0; orderIndex < orders.length; orderIndex++)\r\n {\r\n var order = orders[orderIndex];\r\n\r\n var productsDescription = \"\";\r\n\r\n for (var productIndex = 0; productIndex < order[\"Products\"].length; productIndex++)\r\n {\r\n var productAmount = order[\"Products\"][productIndex][\"Amount\"];\r\n var productName = order[\"Products\"][productIndex][\"IsAddOn\"] === true\r\n ?\r\n order[\"Products\"][productIndex][\"ProductDisplayName\"]\r\n :\r\n order[\"Products\"][productIndex][\"ProductName\"];\r\n\r\n\r\n productsDescription += (\"- \" + \"(\" + productAmount + \"x) \" + productName) + \"\\n\";\r\n }\r\n\r\n order[\"ProductsDescription\"] = productsDescription;\r\n\r\n newOrders.push(order);\r\n }\r\n\r\n return newOrders;\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded, orders, toastColor, toastText, toastOpen, removeOrderDialogOpen, approveOrderDialogOpen, removingOrder, approvingOrder } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else\r\n {\r\n return (\r\n \r\n
\r\n\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Disapprove order confirmation dialog */}\r\n this.toggleRemoveOrderDialogOpen(removeOrderDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {\"Are you sure you want to disapprove this order?\"}\r\n \r\n \r\n This step will be irreversible.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Approve order confirmation dialog */}\r\n this.toggleApproveOrderDialogOpen(approveOrderDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {\"Are you sure you want to approve this order?\"}\r\n \r\n \r\n This step will be irreversible.\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

Pending Orders

\r\n

\r\n All pending orders (to be approved by an Universal employee). \r\n

\r\n
\r\n \r\n \r\n { this.setState({ orderToApprove: clickedItem }); this.toggleApproveOrderDialogOpen(approveOrderDialogOpen); }\r\n : null\r\n }\r\n onDisapproveButtonClicked=\r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UNIVERSALAPPROVEORDERS\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (clickedItem) => { this.setState({ orderToRemove: clickedItem }); this.toggleRemoveOrderDialogOpen(removeOrderDialogOpen); }\r\n : null\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 withStyles(styles)(ApproveOrder)","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { withRouter } from 'react-router-dom'\r\n\r\n// @material-ui/\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\n\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\n\r\n// styles\r\nimport tableStyle from \"assets/jss/material-dashboard-react/components/tableStyle.jsx\";\r\n\r\n\r\n// TODO: Clear up this class\r\nfunction CustomTableJson({ ...props }) \r\n{\r\n const \r\n { \r\n classes, \r\n\r\n tableHead, \r\n tableData, \r\n tableHeadDataMap, \r\n\r\n tableHeaderColor,\r\n\r\n tableNumericColumns,\r\n tableDateColumns,\r\n\r\n tableIgnoreSortColumns,\r\n\r\n isClickable,\r\n\r\n onClickLink,\r\n \r\n selectableRows,\r\n selectedItems,\r\n\r\n infoFieldIndex,\r\n infoFieldLinkText,\r\n infoModalTitle,\r\n\r\n amountEditFieldIndex, // TODO: Very specific. Please clean up\r\n minimumAmountColumnName,\r\n maximumAmountColumnName,\r\n amountUnitColumnName,\r\n\r\n onListItemClicked,\r\n onDeleteButtonClicked,\r\n onEditButtonClicked,\r\n initialOrderBy,\r\n initialSortingOrder,\r\n isSortable\r\n } = props;\r\n \r\n const [tempToggle, setTempToggle] = React.useState(false); // TODO: Somehow the TableRow doesn't update it's style if not updating this variable...\r\n const [localSelectedItems, setLocalSelectedItems] = React.useState(selectedItems);\r\n const [open, setOpen] = React.useState(false);\r\n const [modalDescription, setModalDescription] = React.useState(false);\r\n const [sortingOrder, setSortingOrder] = React.useState(initialSortingOrder ? initialSortingOrder : \"asc\");\r\n const [orderBy, setOrderBy] = React.useState(initialOrderBy ? initialOrderBy : \"\");\r\n\r\n const selectedRowStyle =\r\n {\r\n backgroundColor: \"Red\"\r\n }\r\n\r\n const amountFieldStyle = \r\n {\r\n margin: \"0px\",\r\n verticalAlign: \"Bottom\",\r\n padding: \"0px 10px 0px 0px\"\r\n }\r\n\r\n const handleClickOpen = (description) => \r\n {\r\n setOpen(true);\r\n setModalDescription(description);\r\n };\r\n\r\n function handleClose() {\r\n setOpen(false);\r\n }\r\n\r\n /**\r\n * Generates a sortable tableHead if isSortable is true.\r\n * If isSortable is false, it will return a normal tableHead.\r\n * @param {*} props Represents onRequestSort callback function.\r\n */\r\n function SortableTableHead(props)\r\n {\r\n const { onRequestSort } = props;\r\n\r\n const createSortHandler = dataColumnName => event => \r\n {\r\n onRequestSort(event, dataColumnName);\r\n }\r\n\r\n return(\r\n \r\n \r\n {\r\n tableHead.map((prop, index) => \r\n {\r\n var dataColumnName = tableHeadDataMap[index];\r\n\r\n // Check if tableHeaders should be sorted and return sortable tableHeaders.\r\n // If tableHeaders shouldn't be sorted or if they should be ignored, return normal tableHeaders.\r\n if (isSortable && (tableIgnoreSortColumns ? !tableIgnoreSortColumns.includes(prop) : true))\r\n {\r\n return (\r\n \r\n \r\n {prop}\r\n \r\n \r\n );\r\n }\r\n else\r\n {\r\n return (\r\n \r\n {prop}\r\n \r\n );\r\n }\r\n })\r\n }\r\n \r\n \r\n )\r\n }\r\n\r\n /**\r\n * Updates sortingOrder and orderBy variables \r\n * @param {*} event clickEvent\r\n * @param {*} orderByProperty property the data should be sorted by.\r\n */\r\n function handleRequestSort(event, orderByProperty) \r\n {\r\n // If same property is clicked, sort data descending. Otherwise sort data ascending.\r\n const sortDescending = orderBy === orderByProperty && sortingOrder === 'asc';\r\n\r\n // Set sorting direction and orderBy property\r\n setSortingOrder(sortDescending ? \"desc\" : \"asc\");\r\n setOrderBy(orderByProperty);\r\n }\r\n\r\n /**\r\n * Compares the provided obj1 and obj2 in an ascending order\r\n * @param {*} obj1 Object 1 to compare\r\n * @param {*} obj2 Object 2 to compare\r\n * @param {*} orderBy Property to compare between the two objects.\r\n */\r\n function compareDataAscending(obj1, obj2, orderBy) \r\n {\r\n var valueToCompare1 = \"\";\r\n var valueToCompare2 = \"\";\r\n\r\n // Check if data should be sorted on child of a property (only goes one layer deep).\r\n if (orderBy.includes('.'))\r\n {\r\n var orderBySplit = orderBy.split('.');\r\n\r\n valueToCompare1 = obj1[orderBySplit[0]][orderBySplit[1]];\r\n valueToCompare2 = obj2[orderBySplit[0]][orderBySplit[1]];\r\n }\r\n else\r\n {\r\n valueToCompare1 = obj1[orderBy];\r\n valueToCompare2 = obj2[orderBy];\r\n }\r\n\r\n // Check if value is a number, date or text and handle comparisons\r\n if (tableNumericColumns && tableNumericColumns.includes(orderBy))\r\n { \r\n if (valueToCompare2 - valueToCompare1 > 0) \r\n {\r\n return -1;\r\n }\r\n if (valueToCompare2 - valueToCompare1 < 0) \r\n {\r\n return 1;\r\n }\r\n }\r\n else if (tableDateColumns && tableDateColumns.includes(orderBy))\r\n {\r\n // Assumes date is in DAY-MONTH-YEAR HOUR:MINUTE format.\r\n var splitDateTime1 = valueToCompare1.split(' ');\r\n var splitDateTime2 = valueToCompare2.split(' ');\r\n\r\n var date1 = splitDateTime1[0].split('-');\r\n var date2 = splitDateTime2[0].split('-');\r\n\r\n // If date contained time, add time to new date object\r\n if (splitDateTime1[1] && splitDateTime2[1])\r\n {\r\n var time1 = splitDateTime1[1].split(':');\r\n var time2 = splitDateTime2[1].split(':');\r\n \r\n valueToCompare1 = new Date(date1[2], date1[1], date1[0], time1[0], time1[1]);\r\n valueToCompare2 = new Date(date2[2], date2[1], date2[0], time2[0], time2[1]);\r\n }\r\n else\r\n {\r\n valueToCompare1 = new Date(date1[2], date1[1], date1[0]);\r\n valueToCompare2 = new Date(date2[2], date2[1], date2[0]);\r\n }\r\n\r\n if (valueToCompare2 > valueToCompare1) \r\n {\r\n return -1;\r\n }\r\n if (valueToCompare2 < valueToCompare1) \r\n {\r\n return 1;\r\n }\r\n }\r\n else\r\n {\r\n valueToCompare1 = valueToCompare1.toString();\r\n valueToCompare2 = valueToCompare2.toString();\r\n \r\n if (valueToCompare2.toLowerCase() > valueToCompare1.toLowerCase()) \r\n {\r\n return -1;\r\n }\r\n if (valueToCompare2.toLowerCase() < valueToCompare1.toLowerCase()) \r\n {\r\n return 1;\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n /**\r\n * Sort provided data by the provided property\r\n * @param {*} data Data to sort\r\n * @param {*} orderBy Property to sort data by\r\n */\r\n function sortTableByProperty(data, orderBy) \r\n {\r\n if (!orderBy)\r\n {\r\n return data;\r\n }\r\n\r\n var sortedData = data.sort((obj1, obj2) =>\r\n {\r\n if (sortingOrder === \"asc\")\r\n {\r\n return compareDataAscending(obj1, obj2, orderBy);\r\n }\r\n else\r\n {\r\n return -compareDataAscending(obj1, obj2, orderBy);\r\n }\r\n });\r\n\r\n return sortedData;\r\n }\r\n\r\n /**\r\n * Custom TableRow component which is able to perform an action on click\r\n */\r\n const RouterTableRow = withRouter(({rowKey, hoverStyle, listItem, history }) => (\r\n \r\n\r\n {\r\n createPropertyArrayFromJsonObject(listItem, tableHeadDataMap).map((property, index) =>\r\n { \r\n // If current item index is equal to the amountEditFieldIndex,\r\n // and if current item is selected.\r\n // Show an editable numeric field\r\n if (amountEditFieldIndex && amountEditFieldIndex === index)\r\n {\r\n var inputProps = \r\n {\r\n title: \"Only numbers allowed\",\r\n placeholder: \"0\",\r\n defaultValue: listItem[\"Amount\"] ? listItem[\"Amount\"] : \"\",\r\n type: \"number\"\r\n }\r\n\r\n if (minimumAmountColumnName)\r\n {\r\n inputProps[\"title\"] += \" (min: \" + listItem[minimumAmountColumnName] + \")\";\r\n inputProps[\"min\"] = listItem[minimumAmountColumnName];\r\n }\r\n if (maximumAmountColumnName)\r\n {\r\n inputProps[\"title\"] += \" (max: \" + listItem[maximumAmountColumnName] + \")\";\r\n inputProps[\"max\"] = listItem[maximumAmountColumnName];\r\n }\r\n\r\n return (\r\n \r\n {\r\n localSelectedItems.includes(listItem)\r\n ?\r\n
\r\n { listItem[\"Amount\"] = value }\r\n }\r\n\r\n inputProps={ inputProps } \r\n />\r\n \r\n { listItem[amountUnitColumnName] }\r\n \r\n
\r\n : null\r\n } \r\n
\r\n ); \r\n } \r\n\r\n // Else return a default TableCell column\r\n else\r\n { \r\n return (\r\n \r\n {\r\n // Somehow the TableRow doesn't update without setting this variable... \r\n setTempToggle(!tempToggle);\r\n \r\n // Check if TableRow is clickable\r\n if (!isClickable)\r\n {\r\n return;\r\n }\r\n \r\n // Check if a click event should be sent back to the place where this control is defined.\r\n if (onListItemClicked)\r\n onListItemClicked(listItem)\r\n \r\n // Check if an onClickLink has been passed to this control.\r\n if (onClickLink)\r\n {\r\n // Get single parameter from url.\r\n var matches = onClickLink.match(/\\{([^)]+)\\}/)\r\n \r\n var newLink = onClickLink;\r\n \r\n // If any parameter enclosed by { } was found,\r\n // try to fetch a listItemValue using the parameter\r\n // and replace the parameter by the found listItemValue.\r\n // e.g: /cases/ticket?no={ticketnumber} -> /cases/ticket?no=TIC-12345-67890\r\n if (matches)\r\n {\r\n var parameter = matches[1];\r\n var listItemValue = listItem[parameter];\r\n \r\n newLink = newLink.replace(matches[0], listItemValue);\r\n }\r\n \r\n history.push(newLink); \r\n }\r\n \r\n // Check if rows should be selected\r\n else if (selectableRows && selectedItems)\r\n {\r\n if (selectedItems.includes(listItem))\r\n {\r\n var itemIndex = selectedItems.indexOf(listItem);\r\n selectedItems.splice(itemIndex, 1);\r\n \r\n setLocalSelectedItems(selectedItems);\r\n }\r\n else\r\n {\r\n selectedItems.push(listItem);\r\n setLocalSelectedItems(selectedItems);\r\n }\r\n }\r\n }}>\r\n { \r\n // If current item index is equal to the infoFieldIndex,\r\n // Show info field as a link.\r\n (infoFieldIndex === index) \r\n ? handleClickOpen(property)}>{infoFieldLinkText} \r\n : property.toString()\r\n }\r\n \r\n );\r\n } \r\n })\r\n }\r\n\r\n {\r\n // Show delete button if onDeleteButtonClicked is not null\r\n onDeleteButtonClicked || onEditButtonClicked\r\n ?\r\n \r\n {\r\n onEditButtonClicked ? onEditButtonClicked(listItem)}/> : null\r\n }\r\n {\r\n onDeleteButtonClicked ? onDeleteButtonClicked(listItem)}/> : null\r\n } \r\n \r\n :\r\n null\r\n }\r\n\r\n
\r\n ))\r\n\r\n return (\r\n // TODO: Maybe create global modal.\r\n
\r\n
\r\n \r\n {infoModalTitle}\r\n \r\n \r\n {modalDescription} \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n {\r\n tableHead !== undefined ?\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n {\r\n sortTableByProperty(tableData, orderBy).map((listItem, rowKey) =>\r\n { \r\n var hoverStyle =\r\n {\r\n cursor: \"pointer\"\r\n }\r\n\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\n/**\r\n * Creates array of property values from the provided Json object. \r\n * Properties are returned in the order specified in the Keys parameter.\r\n * @param {*} jsonObject Json object containing property keys and values.\r\n * @param {*} keys Array of keys that should be fetched from the Json object. \r\n */\r\nfunction createPropertyArrayFromJsonObject(jsonObject, keys)\r\n{\r\n var propertyValueArray = []\r\n\r\n for (var i = 0; i < keys.length; i++) \r\n {\r\n // Check if key contains child key (key.subkey).\r\n var key = keys[i];\r\n\r\n var splitKeys = key.split('.');\r\n \r\n // Check if parentObject is null, return empty string.\r\n var parentObject = jsonObject[splitKeys[0]];\r\n\r\n if (parentObject === null) \r\n {\r\n propertyValueArray.push(\"\");\r\n continue;\r\n }\r\n\r\n // If key contains childKey, fetch value of the childkey. \r\n if (splitKeys.length > 1)\r\n {\r\n propertyValueArray.push(jsonObject[splitKeys[0]][splitKeys[1]])\r\n }\r\n else\r\n {\r\n propertyValueArray.push(parentObject)\r\n }\r\n }\r\n\r\n return propertyValueArray;\r\n}\r\n\r\nCustomTableJson.defaultProps = {\r\n tableHeaderColor: \"gray\"\r\n};\r\n\r\nCustomTableJson.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n tableHeaderColor: PropTypes.oneOf([\r\n \"warning\",\r\n \"primary\",\r\n \"danger\",\r\n \"success\",\r\n \"info\",\r\n \"rose\",\r\n \"gray\"\r\n ]),\r\n tableHead: PropTypes.arrayOf(PropTypes.string),\r\n tableData: PropTypes.arrayOf(PropTypes.object),\r\n tableHeadDataMap : PropTypes.arrayOf(PropTypes.any), \r\n onClickLink : PropTypes.string,\r\n descriptionModal : PropTypes.bool\r\n};\r\n\r\nexport default withStyles(tableStyle)(CustomTableJson);\r\n","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nclass NewOrderConfirmation extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n }\r\n\r\n render() \r\n {\r\n const { products, tenant, agreementAccepted, onAgreementAccept, productNameFieldKey } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n

Account Name

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

{globalData.loggedInUser.Organization.Name}

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

Tenant

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

{tenant}

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

Created By

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

{globalData.loggedInUser.FullName}

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

Products

\r\n
    \r\n {\r\n products.map((product, index) => \r\n {\r\n return
  • {product.Amount} x {product[productNameFieldKey]}
  • \r\n })\r\n }\r\n
\r\n
\r\n
\r\n \r\n \r\n

Microsoft Customer Agreement

\r\n onAgreementAccept(value) } color=\"primary\" required={true} />\r\n }\r\n label={(I confirm that I have read, understand and agree to the Microsoft Customer Agreement)}\r\n />\r\n
\r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(NewOrderConfirmation)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nclass NewOrderTenantSelect extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n }\r\n\r\n render() \r\n {\r\n const { tenant, onSelectTenant, tenants } = this.props;\r\n \r\n return (\r\n
\r\n \r\n \r\n { onSelectTenant(value) }\r\n }\r\n />\r\n \r\n \r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(NewOrderTenantSelect)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport DoneIcon from '@material-ui/icons/Done';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport ProductPicker from \"components/Table/TableJsonProductPicker.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\n\r\nimport NewOrderConfirmationTab from \"views/Orders/NewOrder/NewOrderConfirmation.jsx\";\r\nimport NewOrderTenantSelectTab from \"views/Orders/NewOrder/NewOrderTenantSelect.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nconst invisibleStyle = {\r\n display: \"none\"\r\n}\r\n\r\nconst previousTabButtonStyle = {\r\n float: \"left\",\r\n backgroundColor: \"#229988\"\r\n}\r\n\r\nconst nextTabButtonStyle = {\r\n float: \"right\",\r\n backgroundColor: \"#229988\"\r\n}\r\n\r\nconst previousTabButtonStyleFixed = {\r\n //position: \"absolute\",\r\n float: \"left\"\r\n}\r\n\r\nconst nextTabButtonStyleFixed = {\r\n //position: \"absolute\",\r\n float: \"right\"\r\n}\r\n\r\nconst allowedPortalPermissions =\r\n[\r\n \"ADMINORDERS\"\r\n]\r\n\r\nclass NewOrderPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n offersAreLoaded: false,\r\n tenantIdsAreLoaded: false,\r\n offers: [],\r\n tenants: [], \r\n data: [],\r\n searchText: \"\",\r\n\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n selectedTenantName: \"\",\r\n selectedTenantId: \"\",\r\n selectedOffers: [],\r\n previousSelectedTenantId: \"\",\r\n\r\n agreementAccepted: false,\r\n\r\n activeStepIndex: 0,\r\n\r\n previousButtonStyle: invisibleStyle,\r\n previousButtonText: \"\",\r\n nextButtonText: \"Select Products\",\r\n\r\n creatingOrder: false,\r\n orderCreated: false\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n offersAreLoaded: true,\r\n tenantIdsAreLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get tenants\r\n apiGet(\"tenantids\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n tenantIdsAreLoaded:true,\r\n tenants: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n tenantIdsAreLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n getOffers = (selectedTenant) => \r\n {\r\n apiGet(\"pc/products/\" + selectedTenant).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n offersAreLoaded: true,\r\n offers: result.data,\r\n data: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n offersAreLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n previousStepClicked = () =>\r\n {\r\n const { activeStepIndex } = this.state;\r\n\r\n var newStepIndex = activeStepIndex === 0 ? 0 : activeStepIndex - 1;\r\n \r\n this.setPreviousAndNextButtonVariables(newStepIndex);\r\n \r\n document.getElementById(\"mainpanel\").scrollTop = 0; // Get pagecontainer by id and scroll to top of it.\r\n \r\n this.setState({ activeStepIndex: newStepIndex });\r\n\r\n }\r\n\r\n validateFormAndGoToNextStep = () =>\r\n {\r\n const { selectedTenantId, previousSelectedTenantId, selectedOffers, activeStepIndex } = this.state;\r\n\r\n // If current active tab is select-tenant, try fetching orders if tenant changed.\r\n if (activeStepIndex === 0 && previousSelectedTenantId !== selectedTenantId)\r\n {\r\n this.setState({ previousSelectedTenantId: selectedTenantId, offersAreLoaded: false, selectedOffers: [] });\r\n this.getOffers(selectedTenantId);\r\n }\r\n\r\n // If current active tab is select-orders, check if any orders have been filled in.\r\n else if (activeStepIndex === 1 && selectedOffers.length < 1)\r\n { \r\n this.showNotification(\"warning\", \"Please, select an offer to continue.\");\r\n return false;\r\n }\r\n\r\n else if (selectedOffers.length > 0 && activeStepIndex === 1) {\r\n for(var i = 0; i < selectedOffers.length; i++) { \r\n if (selectedOffers[i].Amount == 0)\r\n {\r\n this.showNotification(\"warning\", \"Please, select a correct amount for the chosen offers to continue.\");\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n else if (activeStepIndex === 2)\r\n {\r\n this.confirmOrder();\r\n return true;\r\n }\r\n\r\n this.nextStepClicked();\r\n return true;\r\n }\r\n\r\n nextStepClicked = () =>\r\n {\r\n const { activeStepIndex } = this.state;\r\n\r\n var newStepIndex = activeStepIndex === 2 ? 2 : activeStepIndex + 1;\r\n\r\n this.setPreviousAndNextButtonVariables(newStepIndex);\r\n\r\n document.getElementById(\"mainpanel\").scrollTop = 0; // Get pagecontainer by id and scroll to top of it.\r\n\r\n this.setState({ activeStepIndex: newStepIndex });\r\n\r\n }\r\n\r\n setPreviousAndNextButtonVariables = (stepIndex) =>\r\n { \r\n if (stepIndex === 0)\r\n {\r\n this.setState(\r\n { \r\n previousButtonStyle : invisibleStyle,\r\n previousButtonText: \"\",\r\n nextButtonText: \"Select Products\"\r\n });\r\n }\r\n else if (stepIndex === 1)\r\n {\r\n this.setState(\r\n { \r\n previousButtonStyle : previousTabButtonStyle,\r\n previousButtonText: \"Select Tenant\",\r\n nextButtonText: \"Confirm Order\"\r\n });\r\n }\r\n else if (stepIndex === 2)\r\n {\r\n this.setState(\r\n { \r\n previousButtonStyle : previousTabButtonStyle,\r\n previousButtonText: \"Select Products\",\r\n nextButtonText: \"Confirm\"\r\n });\r\n }\r\n }\r\n\r\n setNewSelectedTenantValues = (tenantId) =>\r\n {\r\n const { tenants } = this.state;\r\n\r\n // Get tenantName by id and set states\r\n var tenantName;\r\n\r\n for (var i = 0; i < tenants.length; i++)\r\n {\r\n if (tenants[i].ID === tenantId)\r\n {\r\n tenantName = tenants[i].TenantName;\r\n break;\r\n }\r\n }\r\n\r\n this.setState({selectedTenantName: tenantName, selectedTenantId: tenantId})\r\n }\r\n\r\n confirmOrder = () =>\r\n {\r\n this.setState({creatingOrder: true})\r\n \r\n // TODO: authentication\r\n const { selectedTenantId, selectedOffers } = this.state;\r\n \r\n // Create request body\r\n var requestBody = \r\n {\r\n TenantId: selectedTenantId,\r\n Products: selectedOffers\r\n }\r\n\r\n // Create order\r\n apiPostJson(\"orders/new\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n orderCreated: true\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n creatingOrder: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n \r\n }\r\n\r\n setSearch = (searchTerm) => {\r\n const { offers, searchText, data } = this.state; \r\n const search = offers.filter(\r\n item =>\r\n item.Name.toLowerCase().indexOf(searchTerm.toLowerCase()) > -1,\r\n );\r\n if (searchTerm == \"\") {\r\n this.setState( { data: offers, searchText: searchTerm });\r\n }\r\n else { \r\n this.setState( { data: search, searchText: searchTerm }); \r\n } \r\n }\r\n\r\n render() \r\n {\r\n const { error, offersAreLoaded, tenantIdsAreLoaded,\r\n toastColor, toastText, toastOpen, data, searchText,\r\n offers, tenants, selectedOffers, selectedTenantName, selectedTenantId, agreementAccepted, activeStepIndex, previousButtonStyle, previousButtonText, nextButtonText, creatingOrder, orderCreated } = this.state;\r\n const { classes } = this.props;\r\n \r\n const handleSearch = (event) => {\r\n if (offersAreLoaded)\r\n { \r\n this.setSearch(event);\r\n }\r\n };\r\n\r\n if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else if (orderCreated)\r\n {\r\n // If order was created, navigate to orders page.\r\n return ()\r\n }\r\n\r\n return (\r\n
\r\n\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Content */}\r\n \r\n \r\n \r\n
{ e.preventDefault(); return this.validateFormAndGoToNextStep(); }}>\r\n \r\n \r\n

New order

\r\n
\r\n \r\n \r\n \r\n Select Tenant\r\n \r\n \r\n Select Products\r\n \r\n \r\n Confirm Order\r\n \r\n \r\n\r\n {\r\n activeStepIndex === 0 ?\r\n tenantIdsAreLoaded === true ?\r\n this.setNewSelectedTenantValues(tenantId) } tenants={tenants}/>\r\n :\r\n \r\n : null\r\n }\r\n \r\n {\r\n activeStepIndex === 1 ?\r\n offersAreLoaded === true ?\r\n offers.length > 0 ?\r\n <>\r\n \r\n \r\n \r\n :\r\n

No products found for tenant {selectedTenantName}.

\r\n :\r\n \r\n : null\r\n }\r\n\r\n {\r\n activeStepIndex === 2 ?\r\n this.setState({agreementAccepted: !agreementAccepted})}/>\r\n : null\r\n }\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n {/* this.previousStepClicked()} disabled={creatingOrder}>\r\n {previousButtonText}\r\n \r\n \r\n \r\n {(creatingOrder ? \"Creating Order...\" : nextButtonText)}\r\n {\r\n activeStepIndex === 2\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 withStyles(styles)(NewOrderPage)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport DoneIcon from '@material-ui/icons/Done';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport ProductPicker from \"components/Table/TableJsonProductPicker.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\n\r\nimport NewOrderConfirmationTab from \"views/Orders/NewOrder/NewOrderConfirmation.jsx\";\r\nimport NewOrderTenantSelectTab from \"views/Orders/NewOrder/NewOrderTenantSelect.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\n// Extra libs\r\nimport Cookies from \"js-cookie\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nconst invisibleStyle = {\r\n display: \"none\"\r\n}\r\n\r\nconst previousTabButtonStyle = {\r\n float: \"left\",\r\n backgroundColor: \"#229988\"\r\n}\r\n\r\nconst nextTabButtonStyle = {\r\n float: \"right\",\r\n backgroundColor: \"#229988\"\r\n}\r\n\r\nconst previousTabButtonStyleFixed = {\r\n //position: \"absolute\",\r\n float: \"left\"\r\n}\r\n\r\nconst nextTabButtonStyleFixed = {\r\n //position: \"absolute\",\r\n float: \"right\"\r\n}\r\n\r\nconst allowedPortalPermissions =\r\n[\r\n \"ADMINORDERS\"\r\n]\r\n\r\nclass NewAddOnOrderPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n offersAreLoaded: false,\r\n tenantIdsAreLoaded: false,\r\n offers: [],\r\n tenants: [],\r\n\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n selectedTenantName: \"\",\r\n selectedTenantId: \"\",\r\n selectedOffers: [],\r\n previousSelectedTenantId: \"\",\r\n\r\n agreementAccepted: false,\r\n\r\n activeStepIndex: 0,\r\n\r\n previousButtonStyle: invisibleStyle,\r\n previousButtonText: \"\",\r\n nextButtonText: \"Select Add-ons\",\r\n\r\n creatingOrder: false,\r\n orderCreated: false\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n offersAreLoaded: true,\r\n tenantIdsAreLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get tenants\r\n apiGet(\"tenantids\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n tenantIdsAreLoaded:true,\r\n tenants: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n tenantIdsAreLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n getOffers = (selectedTenant) => \r\n {\r\n apiGet(\"pc/offers/addons/\" + selectedTenant).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n offersAreLoaded: true,\r\n offers: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n offersAreLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n previousStepClicked = () =>\r\n {\r\n const { activeStepIndex } = this.state;\r\n\r\n var newStepIndex = activeStepIndex === 0 ? 0 : activeStepIndex - 1;\r\n \r\n this.setPreviousAndNextButtonVariables(newStepIndex);\r\n \r\n document.getElementById(\"mainpanel\").scrollTop = 0; // Get pagecontainer by id and scroll to top of it.\r\n \r\n this.setState({ activeStepIndex: newStepIndex });\r\n\r\n }\r\n\r\n validateFormAndGoToNextStep = () =>\r\n {\r\n const { selectedTenantId, previousSelectedTenantId, selectedOffers, activeStepIndex } = this.state;\r\n\r\n // If current active tab is select-tenant, try fetching orders if tenant changed.\r\n if (activeStepIndex === 0 && previousSelectedTenantId !== selectedTenantId)\r\n {\r\n this.setState({ previousSelectedTenantId: selectedTenantId, offersAreLoaded: false, selectedOffers: [] });\r\n this.getOffers(selectedTenantId);\r\n }\r\n\r\n // If current active tab is select-orders, check if any orders have been filled in.\r\n else if (activeStepIndex === 1 && selectedOffers.length < 1)\r\n { \r\n this.showNotification(\"warning\", \"Please, select an offer to continue.\");\r\n return false;\r\n }\r\n\r\n else if (activeStepIndex === 2)\r\n {\r\n this.confirmOrder();\r\n return true;\r\n }\r\n\r\n this.nextStepClicked();\r\n return true;\r\n }\r\n\r\n nextStepClicked = () =>\r\n {\r\n const { activeStepIndex } = this.state;\r\n\r\n var newStepIndex = activeStepIndex === 2 ? 2 : activeStepIndex + 1;\r\n\r\n this.setPreviousAndNextButtonVariables(newStepIndex);\r\n\r\n document.getElementById(\"mainpanel\").scrollTop = 0; // Get pagecontainer by id and scroll to top of it.\r\n\r\n this.setState({ activeStepIndex: newStepIndex });\r\n\r\n }\r\n\r\n setPreviousAndNextButtonVariables = (stepIndex) =>\r\n { \r\n if (stepIndex === 0)\r\n {\r\n this.setState(\r\n { \r\n previousButtonStyle : invisibleStyle,\r\n previousButtonText: \"\",\r\n nextButtonText: \"Select Add-ons\"\r\n });\r\n }\r\n else if (stepIndex === 1)\r\n {\r\n this.setState(\r\n { \r\n previousButtonStyle : previousTabButtonStyle,\r\n previousButtonText: \"Select Tenant\",\r\n nextButtonText: \"Confirm Order\"\r\n });\r\n }\r\n else if (stepIndex === 2)\r\n {\r\n this.setState(\r\n { \r\n previousButtonStyle : previousTabButtonStyle,\r\n previousButtonText: \"Select Add-ons\",\r\n nextButtonText: \"Confirm\"\r\n });\r\n }\r\n }\r\n\r\n setNewSelectedTenantValues = (tenantId) =>\r\n {\r\n const { tenants } = this.state;\r\n\r\n // Get tenantName by id and set states\r\n var tenantName;\r\n\r\n for (var i = 0; i < tenants.length; i++)\r\n {\r\n if (tenants[i].ID === tenantId)\r\n {\r\n tenantName = tenants[i].TenantName;\r\n break;\r\n }\r\n }\r\n\r\n this.setState({selectedTenantName: tenantName, selectedTenantId: tenantId})\r\n }\r\n\r\n confirmOrder = () =>\r\n {\r\n this.setState({creatingOrder: true})\r\n \r\n // TODO: authentication\r\n const { selectedTenantId, selectedOffers } = this.state;\r\n \r\n // Create request body\r\n var requestBody = \r\n {\r\n TenantId: selectedTenantId,\r\n Products: selectedOffers\r\n }\r\n\r\n // Create order\r\n apiPostJson(\"orders/addons/new\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n orderCreated: true\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n creatingOrder: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { error, offersAreLoaded, tenantIdsAreLoaded,\r\n toastColor, toastText, toastOpen,\r\n offers, tenants, selectedOffers, selectedTenantName, selectedTenantId, agreementAccepted, activeStepIndex, previousButtonStyle, previousButtonText, nextButtonText, creatingOrder, orderCreated } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else if (orderCreated)\r\n {\r\n // If order was created, navigate to orders page.\r\n return ()\r\n }\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Content */}\r\n \r\n \r\n
{ e.preventDefault(); return this.validateFormAndGoToNextStep(); }}>\r\n \r\n \r\n

New add-on order

\r\n
\r\n \r\n \r\n \r\n Select Tenant\r\n \r\n \r\n Select Add-ons\r\n \r\n \r\n Confirm Order\r\n \r\n \r\n\r\n {\r\n activeStepIndex === 0 ?\r\n tenantIdsAreLoaded === true ?\r\n this.setNewSelectedTenantValues(tenantId) } tenants={tenants}/>\r\n :\r\n \r\n : null\r\n }\r\n \r\n {\r\n activeStepIndex === 1 ?\r\n offersAreLoaded ?\r\n offers.length > 0 ?\r\n \r\n :\r\n

No add-ons found for tenant {selectedTenantName}.

\r\n :\r\n \r\n : null\r\n }\r\n\r\n {\r\n activeStepIndex === 2 ?\r\n this.setState({agreementAccepted: !agreementAccepted})}/>\r\n : null\r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n {/* this.previousStepClicked()} disabled={creatingOrder}>\r\n {previousButtonText}\r\n \r\n \r\n \r\n {(creatingOrder ? \"Creating Order...\" : nextButtonText)}\r\n {\r\n activeStepIndex === 2\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 withStyles(styles)(NewAddOnOrderPage)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// core components\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n };\r\n\r\nconst allowedPortalPermissions =\r\n[\r\n \"READORDERS\",\r\n \"ADMINORDERS\"\r\n]\r\n\r\nclass OrderHistoryPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n orders: []\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get orders\r\n apiGet(\"orders/history\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n orders: this.appendDescriptionToOrders(result.data)\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n appendDescriptionToOrders(orders)\r\n {\r\n var newOrders = [];\r\n\r\n for (var orderIndex = 0; orderIndex < orders.length; orderIndex++)\r\n {\r\n var order = orders[orderIndex];\r\n\r\n var productsDescription = \"\";\r\n\r\n for (var productIndex = 0; productIndex < order[\"Products\"].length; productIndex++)\r\n {\r\n var productAmount = order[\"Products\"][productIndex][\"Amount\"];\r\n var productName = order[\"Products\"][productIndex][\"IsAddOn\"] === true\r\n ?\r\n order[\"Products\"][productIndex][\"ProductDisplayName\"]\r\n :\r\n order[\"Products\"][productIndex][\"ProductName\"];\r\n\r\n\r\n productsDescription += (\"- \" + \"(\" + productAmount + \"x) \" + productName) + \"\\n\";\r\n }\r\n\r\n order[\"ProductsDescription\"] = productsDescription;\r\n\r\n newOrders.push(order);\r\n }\r\n\r\n return newOrders;\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded, orders } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n

Order History

\r\n

\r\n Order history of my organization. \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 withStyles(styles)(OrderHistoryPage)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// @material-ui/icons\r\nimport CodeIcon from \"@material-ui/icons/Code\";\r\n\r\n// core components\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardIcon from \"components/Card/CardIcon.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nclass PortalSettingsGraphApiWidget extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n

Graph API Settings

\r\n
\r\n \r\n \r\n Go to Graph API settings\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default withStyles(dashboardStyle)(PortalSettingsGraphApiWidget);","import React from \"react\";\r\n\r\nimport PropTypes from \"prop-types\";\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport GraphAPIWidget from \"views/Dashboard/PortalWidgets/PortalSettingsGraphApiWidget.jsx\";\r\n\r\nimport Divider from '@material-ui/core/Divider';\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst requiredPermissions = [\r\n \"UCP.SETTINGS.ACCESS\"\r\n ]\r\n \r\n const allowedGraphApiPermissions = [ \r\n \"UCP.SETTINGS.GRAPHAPI.EDIT\"\r\n ]\r\n\r\nclass SettingsOverview extends React.Component {\r\n\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const { error } = this.state;\r\n\r\n if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n return (\r\n
\r\n

Settings

\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions(allowedGraphApiPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nSettingsOverview.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(dashboardStyle)(SettingsOverview);\r\n","import React from \"react\";\r\n\r\nimport PropTypes from \"prop-types\";\r\n\r\n// @material-ui/core\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// core components\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\n\r\nimport Divider from '@material-ui/core/Divider';\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nimport Cookies from \"js-cookie\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCP.SETTINGS.ACCESS\",\r\n \"UCP.SETTINGS.GRAPHAPI.EDIT\"\r\n]\r\n\r\nclass SettingsGraphApi extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state =\r\n {\r\n // Component loading\r\n error: null,\r\n checkingGraphApiConnection: true,\r\n\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Graph\r\n connectedToGraph: false,\r\n connectedUserFullName: \"\",\r\n connectedUserEmail: \"\"\r\n }\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) => {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function () {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n componentDidMount() {\r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions)) {\r\n this.setState(\r\n {\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n \r\n // Check if 'code' parameter was provided in url. If it is, fetch new refresh token and access token.\r\n var url = new URL(window.location.href);\r\n var code = url.searchParams.get(\"code\");\r\n\r\n if (code) {\r\n this.getGraphApiTokenByAuthorizationCode(code);\r\n return;\r\n }\r\n\r\n // If no code parameter was provided, check if a token cookie exists. If no token cookie exists, try to fetch token from UCP API.\r\n // If a token cookie exists, try to fetch connected graph user info.\r\n var graphToken = Cookies.get(\"auth-graph\");\r\n\r\n if (graphToken)\r\n {\r\n this.getGraphApiConnectedUserInfo();\r\n }\r\n else\r\n {\r\n this.getNewGraphApiToken();\r\n }\r\n }\r\n\r\n redirectUserToGraphAPIAuthorization = () => {\r\n window.location.replace(\"https://login.microsoftonline.com/common/oauth2/v2.0/authorize?\"\r\n + \"client_id=8db7dd71-98a1-4a9e-83f8-c1f90a74f44e\"\r\n + \"&response_type=code\"\r\n //+ \"&redirect_uri=https%3A%2F%2Flocalhost%3A3000%2Fsettings%2Fgraph-api\"\r\n + \"&redirect_uri=https%3A%2F%2Fportal.universal.cloud%2Fsettings%2Fgraph-api\"\r\n + \"&response_mode=query\"\r\n + \"&scope=user.read user.read.all group.read.all\");\r\n //TODO: Add state parameter.\r\n }\r\n\r\n /**\r\n * Fetch access and refresh token by authorization code\r\n */\r\n getGraphApiTokenByAuthorizationCode = (code) => \r\n { \r\n apiPostJson(\"graph-api/auth\", code).then((result) => \r\n {\r\n Cookies.set(\"auth-graph\", result.data, { expires: 1 / 24, secure: true, sameSite: \"lax\" }); // TODO: Add Secure, http only & SameSite flags. Write documentation about why these flags are added.\r\n this.getGraphApiConnectedUserInfo(result.data);\r\n },\r\n (error) => \r\n {\r\n this.setState({\r\n checkingGraphApiConnection: false\r\n })\r\n\r\n this.showNotification(\"danger\", \"Could not fetch token: \" + error.data);\r\n });\r\n }\r\n\r\n logoutFromGraphAPI = () =>\r\n {\r\n var graphToken = Cookies.get(\"auth-graph\");\r\n \r\n apiPostJson(\"graph-api/auth/logout\", graphToken).then((result) => \r\n {\r\n Cookies.remove(\"auth-graph\");\r\n\r\n this.setState({ \r\n checkingGraphApiConnection: false,\r\n connectedToGraph: false,\r\n connectedUserEmail: \"\",\r\n connectedUserFullName: \"\"\r\n })\r\n },\r\n (error) => {\r\n this.setState({\r\n checkingGraphApiConnection: false\r\n })\r\n });\r\n }\r\n\r\n /**\r\n * Try to fetch Graph API access token from cookie or API, and fetch graph API user info.\r\n */\r\n getGraphApiConnectedUserInfo = (token) => \r\n {\r\n var graphToken = token;\r\n\r\n if (!graphToken)\r\n {\r\n graphToken = Cookies.get(\"auth-graph\");\r\n }\r\n\r\n fetch(\"https://graph.microsoft.com/v1.0/me/\",\r\n {\r\n method: \"GET\",\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + graphToken\r\n }\r\n })\r\n .then((response) => \r\n {\r\n response.json().then((result) => \r\n {\r\n // If no token was provided intitially and the request failed, try to fetch one from the UCP API.\r\n if (!token && response.status !== 200)\r\n {\r\n this.getNewGraphApiToken();\r\n return;\r\n }\r\n\r\n // If a token was provided and the request failed, no valid tokens can be fetched. User needs to reconnect to Graph.\r\n else if (response.status !== 200)\r\n {\r\n throw new Error(result.error_description);\r\n }\r\n\r\n // If request as succesful, show data.\r\n this.setState({\r\n checkingGraphApiConnection: false,\r\n connectedToGraph: true,\r\n connectedUserEmail: result.mail,\r\n connectedUserFullName: result.displayName\r\n })\r\n })\r\n .catch((error) => \r\n {\r\n console.log(error);\r\n\r\n this.setState({\r\n checkingGraphApiConnection: false\r\n })\r\n });\r\n })\r\n }\r\n\r\n /**\r\n * Try to fetch Graph API access token from UCP API.\r\n */\r\n getNewGraphApiToken = () =>\r\n {\r\n apiGet(\"graph-api/auth\").then((result) => \r\n {\r\n Cookies.set(\"auth-graph\", result.data, { expires: 1 / 24, secure: true, sameSite: \"lax\" }); // TODO: Add Secure, http only & SameSite flags. Write documentation about why these flags are added.\r\n this.getGraphApiConnectedUserInfo(result.data);\r\n },\r\n (error) => {\r\n this.setState({\r\n checkingGraphApiConnection: false\r\n })\r\n });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const { error, checkingGraphApiConnection,\r\n toastColor, toastText, toastOpen,\r\n connectedToGraph, connectedUserEmail, connectedUserFullName } = this.state;\r\n\r\n if (error) {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/*

What is the Graph API?

\r\n

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. (What is graph api, need admin consent, will only access ... data).

\r\n */}\r\n {\r\n checkingGraphApiConnection\r\n ?\r\n \r\n :\r\n (\r\n
\r\n
\r\n { \r\n connectedToGraph \r\n ? \"Connected to Graph API (\" + connectedUserFullName +\", \" + connectedUserEmail + \")!\" \r\n : \"Not connected to Graph API.\"\r\n }\r\n
\r\n {\r\n !connectedToGraph\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\nSettingsGraphApi.propTypes = {\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default withStyles(dashboardStyle)(SettingsGraphApi);\r\n","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\n\r\n// Extra libs\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nimport UCallManagerQueuesWidget from \"views/Dashboard/uCallManagerWidgets/UCallManagerQueuesWidget\"\r\nimport UCallManagerAgentsWidget from \"views/Dashboard/uCallManagerWidgets/UCallManagerAgentsWidget\"\r\nimport UCallManagerHolidaysWidget from \"views/Dashboard/uCallManagerWidgets/UCallManagerHolidaysWidget\"\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/views/dashboardStyle.jsx\";\r\n\r\nconst requiredUCallManagerPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n ]\r\n \r\n const allowedUCallManagerQueuesPermissions = [ \r\n \"UCALLMANAGER.QUEUES.VIEW\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n ]\r\n \r\n const allowedUCallManagerAgentsPermissions = [ \r\n \"UCALLMANAGER.AGENTS.VIEW\",\r\n \"UCALLMANAGER.AGENTS.EDIT\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n ]\r\n \r\n const allowedUCallManagerHolidaysPermissions = [ \r\n \"UCALLMANAGER.HOLIDAYS.VIEW\",\r\n \"UCALLMANAGER.HOLIDAYS.EDIT\"\r\n ]\r\n\r\nclass UCallManagerPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n }\r\n }\r\n\r\n render() \r\n {\r\n return (\r\n
\r\n

Dashboard

\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions(allowedUCallManagerQueuesPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n\r\n {\r\n PMUtils.userHasAnyRequiredPermissions(allowedUCallManagerAgentsPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n\r\n { \r\n PMUtils.userHasAnyRequiredPermissions(allowedUCallManagerHolidaysPermissions, globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (\r\n \r\n \r\n \r\n )\r\n :\r\n null\r\n }\r\n \r\n
\r\n ) \r\n }\r\n}\r\n\r\nexport default withStyles(dashboardStyle)(UCallManagerPage)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport QueuesIcon from \"@material-ui/icons/ViewHeadline\";\r\n\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\n// Extra libs\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n textCursive:{\r\n fontStyle: \"italic\"\r\n }\r\n};\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [ \r\n \"UCALLMANAGER.QUEUES.VIEW\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nclass QueuesPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoaded: false, \r\n \r\n // Data\r\n queues: []\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) || !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get queues\r\n this.getQueues();\r\n }\r\n\r\n getQueues()\r\n {\r\n apiGet(\"ucm/queues\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n queues: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded, queues } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n

Call Queues

\r\n

Overview of call queues.

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

Click queue to view or edit.

\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.QUEUES.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n : null\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 withStyles(styles)(QueuesPage)","// Extra libs\r\nimport Cookies from \"js-cookie\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst Graph_Api_Base_Url = \"https://graph.microsoft.com/v1.0/\";\r\nconst Graph_Api_Base_Url_Beta = \"https://graph.microsoft.com/beta/\";\r\n\r\n/**\r\n * Executes GraphAPI GET call to provided api path.\r\n * @param {string} apiPath Endpoint to call (without backslash prefix).\r\n * @param {boolean} useBeta Should this call use the beta endpoint of the GraphAPI?.\r\n * @param {boolean} isRetry Indicates if this call is a retry attempt because of a previous call failing.\r\n * @throws Throws Error object containing errorMessage if the web request failed.\r\n * @returns Returns promise containing web request result.\r\n */\r\nexport function graphApiGet(apiPath, useBeta = false, isRetry = false)\r\n{\r\n var baseUrl = useBeta ? Graph_Api_Base_Url_Beta : Graph_Api_Base_Url;\r\n\r\n // Get authentication token.\r\n var token = document.cookie.replace(/(?:(?:^|.*;\\s*)auth-graph\\s*\\=\\s*([^;]*).*$)|^.*$/, \"$1\")\r\n \r\n return fetch(baseUrl + apiPath,\r\n {\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token\r\n }\r\n })\r\n .then((response) => response.json().then(body => ({ status: response.status, data: body })))\r\n .then((result) =>\r\n {\r\n // If unauthorized is returned, try to fetch new token from UCP API and retry to call the GraphAPI.\r\n if (result.status === 401 && !isRetry)\r\n {\r\n return getNewGraphApiToken().then(() =>\r\n {\r\n return graphApiGet(apiPath, useBeta, true);\r\n });\r\n }\r\n else if (result.status !== 200)\r\n {\r\n throw result;\r\n }\r\n else\r\n {\r\n return result; \r\n } \r\n });\r\n}\r\n\r\n/**\r\n * Executes GraphAPI POST call to provided api path.\r\n * @param {string} apiPath Endpoint to call (without backslash prefix). \r\n * @param {boolean} useBeta Should this call use the beta endpoint of the GraphAPI?.\r\n * @param {boolean} isRetry Indicates if this call is a retry attempt because of a previous call failing.\r\n * @throws Throws Error object containing errorMessage if the web request failed.\r\n * @returns Returns promise containing web request result.\r\n */\r\nexport function graphApiPost(apiPath, useBeta = false, isRetry = false)\r\n{\r\n var baseUrl = useBeta ? Graph_Api_Base_Url_Beta : Graph_Api_Base_Url;\r\n\r\n // Get authentication token.\r\n var token = document.cookie.replace(/(?:(?:^|.*;\\s*)auth-graph\\s*\\=\\s*([^;]*).*$)|^.*$/, \"$1\")\r\n\r\n return fetch(baseUrl + apiPath,\r\n {\r\n method: \"POST\",\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token\r\n }\r\n })\r\n .then((response) => response.json().then(body => ({ status: response.status, data: body })))\r\n .then((result) =>\r\n {\r\n // If unauthorized is returned, try to fetch new token from UCP API and retry to call the GraphAPI.\r\n if (result.status === 401 && !isRetry)\r\n {\r\n return getNewGraphApiToken().then(() =>\r\n {\r\n return graphApiGet(apiPath, useBeta, true);\r\n });\r\n }\r\n else if (result.status !== 200)\r\n {\r\n throw result;\r\n }\r\n\r\n return result; \r\n });\r\n}\r\n\r\n/**\r\n * Executes GraphAPI POST call to provided api path.\r\n * @param {string} apiPath Endpoint to call (e.g. /cases OR /users/me). \r\n * @param {object} jsonBody Json object to pass a the request body (don't stringify the object).\r\n * @param {boolean} useBeta Should this call use the beta endpoint of the GraphAPI?.\r\n * @param {boolean} isRetry Indicates if this call is a retry attempt because of a previous call failing.\r\n * @throws Throws Error object containing errorMessage if the web request failed.\r\n * @returns Returns promise containing web request result.\r\n */\r\nexport function graphPostJson(apiPath, jsonBody, useBeta = false, isRetry = false)\r\n{\r\n var baseUrl = useBeta ? Graph_Api_Base_Url_Beta : Graph_Api_Base_Url;\r\n\r\n // Get authentication token.\r\n var token = document.cookie.replace(/(?:(?:^|.*;\\s*)auth-graph\\s*\\=\\s*([^;]*).*$)|^.*$/, \"$1\")\r\n\r\n return fetch(baseUrl + apiPath,\r\n {\r\n method: \"POST\",\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token,\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(jsonBody)\r\n })\r\n .then((response) => response.json().then(body => ({ status: response.status, data: body })))\r\n .then((result) =>\r\n {\r\n // If unauthorized is returned, try to fetch new token from UCP API and retry to call the GraphAPI.\r\n if (result.status === 401 && !isRetry)\r\n {\r\n return getNewGraphApiToken().then(() =>\r\n {\r\n return graphApiGet(apiPath, useBeta, true);\r\n });\r\n }\r\n else if (result.status !== 200)\r\n {\r\n throw result;\r\n }\r\n\r\n return result; \r\n });\r\n}\r\n\r\n/**\r\n* Try to fetch Graph API access token from UCP API.\r\n*/\r\nfunction getNewGraphApiToken()\r\n{\r\n return apiGet(\"graph-api/auth\").then((result) => \r\n {\r\n Cookies.set(\"auth-graph\", result.data, { expires: 1 / 24, secure: true, sameSite: \"lax\" }); // TODO: Add Secure, http only & SameSite flags. Write documentation about why these flags are added.\r\n });\r\n}","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { graphApiGet } from \"utils/graphApi/graphApiWebRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nconst AntTabs = withStyles({\r\n root: {\r\n borderBottom: '1px solid #e8e8e8',\r\n },\r\n indicator: {\r\n backgroundColor: '#1890ff',\r\n },\r\n })(Tabs);\r\n\r\nconst AntTab = withStyles(theme => ({\r\n root: {\r\n textTransform: 'none',\r\n minWidth: 72,\r\n fontWeight: theme.typography.fontWeightRegular,\r\n fontFamily: [\r\n '-apple-system',\r\n 'BlinkMacSystemFont',\r\n '\"Segoe UI\"',\r\n 'Roboto',\r\n '\"Helvetica Neue\"',\r\n 'Arial',\r\n 'sans-serif',\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"',\r\n ].join(','),\r\n '&:hover': {\r\n color: '#40a9ff',\r\n opacity: 1,\r\n },\r\n '&$selected': {\r\n color: '#1890ff',\r\n fontWeight: theme.typography.fontWeightMedium,\r\n },\r\n '&:focus': {\r\n color: '#40a9ff',\r\n },\r\n },\r\n selected: {},\r\n }))(props => );\r\n\r\nclass QueueDetails extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoadedDetails: false,\r\n isLoadedMeta: false,\r\n isLoadedTeams: false,\r\n \r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Tabs\r\n selectedTab: 0,\r\n \r\n // Meta\r\n foundTeams: [],\r\n\r\n // Data\r\n queueDetails: null,\r\n newQueueMeta: null,\r\n\r\n // Remove queue \r\n confirmDialogOpen: false,\r\n removingQueue: false,\r\n queueToRemove: \"\",\r\n\r\n queueRemoved: false,\r\n\r\n // Update queue\r\n updateQueueDialogOpen: false,\r\n updateQueueName: \"\",\r\n updateMaxMembers: \"\",\r\n updatePhoneNumber: \"\",\r\n updateTimeOut: \"\",\r\n updateRetry: \"\",\r\n updateAbsoluteTimeOut: \"\",\r\n updateServiceLevel: 0,\r\n updateHuntWhenAway: \"\",\r\n updateShowOnWallboard: \"\",\r\n updateStrategy: \"\",\r\n updateJoinEmpty: \"\",\r\n updateLeaveWhenEmpty: \"\",\r\n updateNextQueue: \"\",\r\n updateNextQueueOutsideBusinessHours: \"\",\r\n updateAudioRecording: \"\",\r\n updateMusicOnHold: \"\",\r\n updateClosedSound: \"\",\r\n updateOpenSound: \"\",\r\n updateMSTeamsTeamId: \"\",\r\n\r\n updatingQueue: false,\r\n\r\n // Fetch shifts\r\n fetchShiftsDialogOpen: false,\r\n fetchingShifts: false,\r\n dateFrom: this.getDateString(0),\r\n dateTo: this.getDateString(7),\r\n }\r\n }\r\n\r\n // Get valid date string for use in date input control.\r\n getDateString = (daysToAdd) =>\r\n {\r\n var dateToday = new Date();\r\n var year = dateToday.getFullYear();\r\n var month = dateToday.getMonth() + 1;\r\n var day = dateToday.getDate();\r\n\r\n if (daysToAdd)\r\n {\r\n day = day + daysToAdd\r\n }\r\n \r\n if (month < 10)\r\n {\r\n month = \"0\" + month;\r\n }\r\n\r\n if (day < 10)\r\n {\r\n day = \"0\" + day;\r\n }\r\n\r\n return year + \"-\" + month + \"-\" + day\r\n }\r\n \r\n componentDidMount()\r\n { \r\n this.getQueueDetails();\r\n this.getNewQueueMeta();\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n toggleConfirmDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n confirmDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n getNewQueueMeta()\r\n {\r\n // Fetch queue meta data\r\n apiGet(\"ucm/queues/meta\").then((result) => \r\n {\r\n var queueMeta = result.data;\r\n\r\n this.setState(\r\n {\r\n isLoadedMeta:true,\r\n newQueueMeta: queueMeta\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedMeta: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n \r\n getTeamsFromGraphApi()\r\n {\r\n graphApiGet(\"me/joinedTeams?$select=id,displayName\").then((result) =>\r\n {\r\n this.setState({\r\n isLoadedTeams: true,\r\n foundTeams: result.data.value\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState({\r\n isLoadedTeams: true,\r\n foundTeams: []\r\n });\r\n }); \r\n }\r\n\r\n getQueueDetails()\r\n {\r\n // Check if queue data is already fetched, if not, fetch it again.\r\n if (globalData.currentlyViewingQueue !== null)\r\n {\r\n this.setState(\r\n {\r\n isLoadedDetails: true,\r\n queueDetails: globalData.currentlyViewingQueue\r\n });\r\n \r\n if (globalData.currentlyViewingQueue.QueueType.Type === \"shift\")\r\n {\r\n this.getTeamsFromGraphApi();\r\n }\r\n\r\n this.setQueueUpdateData(globalData.currentlyViewingQueue);\r\n return;\r\n }\r\n\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n \r\n // Get details of queue\r\n apiGet(\"ucm/queues/get?queueName=\" + queueName).then((result) => \r\n {\r\n globalData.currentlyViewingQueue = result.data;\r\n \r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedDetails: true,\r\n queueDetails: result.data\r\n });\r\n \r\n if (result.data.QueueType.Type === \"shift\")\r\n {\r\n this.getTeamsFromGraphApi();\r\n }\r\n\r\n this.setQueueUpdateData(result.data);\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedDetails: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n updateQueue()\r\n {\r\n this.setState({updatingQueue: true})\r\n \r\n // TODO: authentication\r\n const { updateQueueDialogOpen,\r\n updateQueueName,\r\n updateMaxMembers,\r\n updatePhoneNumber,\r\n updateTimeOut,\r\n updateRetry,\r\n updateAbsoluteTimeOut,\r\n updateServiceLevel,\r\n updateHuntWhenAway,\r\n updateStrategy,\r\n updateJoinEmpty,\r\n updateLeaveWhenEmpty,\r\n updateNextQueue,\r\n updateNextQueueOutsideBusinessHours,\r\n updateAudioRecording,\r\n updateMusicOnHold,\r\n updateClosedSound,\r\n updateOpenSound,\r\n updateShowOnWallboard,\r\n updateMSTeamsTeamId } = this.state;\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n QueueName: updateQueueName,\r\n MaxMembers: updateMaxMembers,\r\n PhoneNumber: updatePhoneNumber,\r\n TimeOut: updateTimeOut,\r\n Retry: updateRetry,\r\n AbsoluteTimeOut: updateAbsoluteTimeOut,\r\n ServiceLevel: updateServiceLevel,\r\n HuntWhenAway: updateHuntWhenAway,\r\n Strategy: updateStrategy,\r\n JoinEmpty: updateJoinEmpty,\r\n LeaveWhenEmpty: updateLeaveWhenEmpty,\r\n NextQueue: updateNextQueue,\r\n NextQueueOutsideBusinessHours: updateNextQueueOutsideBusinessHours,\r\n AudioRecording: updateAudioRecording,\r\n MusicOnHold: updateMusicOnHold,\r\n ClosedSound: updateClosedSound,\r\n ShowOnWallboard: updateShowOnWallboard,\r\n OpenSound: updateOpenSound,\r\n MSTeamsTeamId: updateMSTeamsTeamId\r\n }\r\n\r\n // Create queue\r\n apiPostJson(\"ucm/queues/update\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n updatingQueue: false\r\n });\r\n\r\n this.toggleUpdateQueueDialogOpen(updateQueueDialogOpen);\r\n this.showNotification(\"success\", \"Queue updated!\");\r\n globalData.currentlyViewingQueue = null;\r\n this.getQueueDetails();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n updatingQueue: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n setQueueUpdateData(queueData)\r\n {\r\n this.setState(\r\n {\r\n updateQueueName: queueData.QueueName,\r\n updateMaxMembers: queueData.MaxMembers,\r\n updatePhoneNumber: queueData.PhoneNumber,\r\n updateTimeOut: queueData.TimeOut,\r\n updateRetry: queueData.Retry,\r\n updateAbsoluteTimeOut: queueData.AbsoluteTimeOut,\r\n updateServiceLevel: queueData.ServiceLevel,\r\n updateHuntWhenAway: queueData.HuntWhenAway,\r\n updateStrategy: queueData.Strategy.StrategyType,\r\n updateJoinEmpty: queueData.JoinEmpty,\r\n updateLeaveWhenEmpty: queueData.LeaveWhenEmpty,\r\n updateNextQueue: queueData.NextQueue,\r\n updateNextQueueOutsideBusinessHours: queueData.NextQueueOutsideBusinessHours,\r\n updateAudioRecording: queueData.AudioRecording,\r\n updateMusicOnHold: queueData.MusicOnHold,\r\n updateClosedSound: queueData.ClosedSound,\r\n updateOpenSound: queueData.OpenSound,\r\n updateShowOnWallboard: queueData.ShowOnWallboard,\r\n updateMSTeamsTeamId: queueData.MSTeamsTeamId\r\n });\r\n }\r\n\r\n removeQueue()\r\n {\r\n this.setState({removingQueue: true});\r\n\r\n const { queueToRemove, confirmDialogOpen } = this.state;\r\n\r\n // Remove agent\r\n apiPost(\"ucm/queues/remove?queueName=\" + queueToRemove).then(() => \r\n {\r\n this.setState(\r\n {\r\n queueRemoved: true\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingQueue: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n selectedTabChanged(newSelectedTab) \r\n {\r\n this.setState({\r\n selectedTab: newSelectedTab\r\n })\r\n }\r\n\r\n toggleUpdateQueueDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n updateQueueDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n toggleFetchShiftsDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n fetchShiftsDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n render() \r\n { \r\n var { isLoadedDetails, isLoadedMeta, isLoadedTeams, \r\n error, confirmDialogOpen, toastColor, toastText, toastOpen, selectedTab, \r\n queueDetails, newQueueMeta,\r\n foundTeams,\r\n removingQueue, queueToRemove, queueRemoved, \r\n updateQueueDialogOpen, updatingQueue, \r\n updateQueueName,\r\n updateMaxMembers,\r\n updatePhoneNumber,\r\n updateTimeOut,\r\n updateRetry,\r\n updateAbsoluteTimeOut,\r\n updateServiceLevel,\r\n updateHuntWhenAway,\r\n updateStrategy,\r\n updateJoinEmpty,\r\n updateLeaveWhenEmpty,\r\n updateNextQueue,\r\n updateNextQueueOutsideBusinessHours,\r\n updateAudioRecording,\r\n updateMusicOnHold,\r\n updateClosedSound,\r\n updateOpenSound,\r\n updateShowOnWallboard,\r\n updateMSTeamsTeamId,\r\n fetchShiftsDialogOpen,\r\n fetchingShifts,\r\n dateFrom,\r\n dateTo } = this.state;\r\n\r\n const { classes } = this.props; \r\n\r\n if (!isLoadedDetails || !isLoadedMeta)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n else if (queueRemoved)\r\n {\r\n return ()\r\n }\r\n \r\n // Add current phone number to selectable phone numbers list.\r\n if (!newQueueMeta.PhoneNumbers.includes(queueDetails.PhoneNumber))\r\n {\r\n newQueueMeta.PhoneNumbers.push(queueDetails.PhoneNumber);\r\n }\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Fetch shifts dialog */}\r\n {/* this.toggleFetchShiftsDialogOpen(fetchShiftsDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); }}>\r\n Fetch Shifts\r\n \r\n \r\n \r\n { this.setState({dateFrom: value}) }\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n type: \"date\",\r\n defaultValue: dateFrom,\r\n min: dateFrom\r\n }}\r\n />\r\n \r\n \r\n { this.setState({dateTo: value}) }\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n type: \"date\",\r\n defaultValue: dateTo,\r\n min: dateFrom\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 {/* Update queue dialog */}\r\n this.toggleUpdateQueueDialogOpen(updateQueueDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.updateQueue() }}>\r\n Update Queue\r\n \r\n
Required Settings
\r\n \r\n \r\n \r\n { this.setState({updateQueueName: value}) }\r\n }\r\n inputProps={{\r\n disabled: true,\r\n maxLength: 30,\r\n defaultValue: updateQueueName\r\n }}\r\n />\r\n { this.setState({updateMaxMembers: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\" ,\r\n defaultValue: updateMaxMembers\r\n }}\r\n />\r\n { this.setState({updateShowOnWallboard: (value === \"Yes\")}) }\r\n }\r\n />\r\n \r\n \r\n { this.setState({updatePhoneNumber: value}) }\r\n }\r\n />\r\n { this.setState({updateStrategy: value}) }\r\n }\r\n /> \r\n \r\n \r\n\r\n {\r\n queueDetails.QueueType.Type === \"shift\"\r\n ? \r\n
\r\n
Shifts Queue Settings
\r\n \r\n \r\n \r\n {\r\n isLoadedTeams\r\n ?\r\n { this.setState({updateMSTeamsTeamId: value}); }\r\n }\r\n />\r\n :\r\n

Loading teams...

\r\n }\r\n
\r\n
\r\n
\r\n :\r\n null\r\n }\r\n \r\n
Hunting Settings
\r\n \r\n \r\n \r\n { this.setState({updateTimeOut: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\",\r\n defaultValue: updateTimeOut \r\n }}\r\n />\r\n { this.setState({updateRetry: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\" ,\r\n defaultValue: updateRetry\r\n }}\r\n />\r\n \r\n \r\n { this.setState({updateAbsoluteTimeOut: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\",\r\n defaultValue: updateAbsoluteTimeOut \r\n }}\r\n />\r\n { this.setState({updateServiceLevel: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\",\r\n defaultValue: updateServiceLevel \r\n }}\r\n />\r\n \r\n \r\n { this.setState({updateHuntWhenAway: (value === \"Yes\")}) }\r\n }\r\n />\r\n \r\n \r\n\r\n
Queue Navigation Settings
\r\n \r\n \r\n \r\n { this.setState({updateJoinEmpty: (value === \"Yes\")}) }\r\n }\r\n />\r\n { this.setState({updateLeaveWhenEmpty: (value === \"Yes\")}) }\r\n }\r\n />\r\n \r\n \r\n { this.setState({updateNextQueue: value}) }\r\n }\r\n />\r\n { this.setState({updateNextQueueOutsideBusinessHours: value}) }\r\n }\r\n />\r\n \r\n \r\n\r\n
Sound Settings
\r\n \r\n \r\n \r\n { this.setState({updateAudioRecording: (value === \"Yes\")}) }\r\n }\r\n />\r\n { this.setState({updateMusicOnHold: value}) }\r\n }\r\n />\r\n \r\n \r\n { this.setState({updateOpenSound: value}) }\r\n }\r\n />\r\n { this.setState({updateClosedSound: value}) }\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 {/* Remove queue confirmation dialog */}\r\n this.toggleConfirmDialogOpen(confirmDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {\"Are you sure you want to remove this queue?\"}\r\n \r\n \r\n All data of this queue will be lost!\r\n \r\n { this.setState({ queueToRemove: value}) }\r\n }\r\n /> \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Details card */}\r\n \r\n \r\n

Queue: {queueDetails.QueueName}

\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.QUEUES.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ? \r\n \r\n {/* {\r\n queueDetails.QueueType.Type === \"shift\"\r\n ?\r\n \r\n : null\r\n } */}\r\n \r\n \r\n \r\n : null\r\n }\r\n\r\n
\r\n this.selectedTabChanged(value)}>\r\n \r\n \r\n \r\n \r\n {\r\n queueDetails.QueueType.Type === \"shift\" ? : null\r\n }\r\n \r\n \r\n
\r\n\r\n {\r\n selectedTab === 0 &&\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 selectedTab === 1 &&\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 selectedTab === 2 &&\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 selectedTab === 3 &&\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 selectedTab === 4 &&\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 withStyles(styles)(QueueDetails)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport ScheduleIcon from \"@material-ui/icons/Schedule\";\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\n// Extra libs\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nclass QueueBusinessHours extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoaded: false,\r\n\r\n // Dialogs\r\n addBusinessHoursDialogOpen: false,\r\n addingBusinessHours: false, \r\n confirmDialogOpen: false,\r\n removingBusinessHours: false, \r\n\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Data\r\n hours: null,\r\n\r\n // Add hours\r\n monChecked: false,\r\n tueChecked: false,\r\n wedChecked: false,\r\n thuChecked: false,\r\n friChecked: false,\r\n satChecked: false,\r\n sunChecked: false,\r\n openTime: \"08:30\",\r\n closeTime: \"17:00\",\r\n\r\n // Remove hours\r\n businessHoursToRemove: null\r\n }\r\n }\r\n\r\n toggleAddBusinessHoursDialogOpen = (isOpen) =>\r\n {\r\n if (isOpen) \r\n // Set checkboxes to false if the AddBusinessHours dialog is about to close. \r\n this.setState(\r\n { \r\n addBusinessHoursDialogOpen: !isOpen,\r\n monChecked: false,\r\n tueChecked: false,\r\n wedChecked: false,\r\n thuChecked: false,\r\n friChecked: false,\r\n satChecked: false,\r\n sunChecked: false\r\n })\r\n else \r\n this.setState({ addBusinessHoursDialogOpen: !isOpen })\r\n }\r\n\r\n toggleConfirmDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n confirmDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Get queue business hours.\r\n this.getQueueBusinessHours();\r\n }\r\n\r\n getQueueBusinessHours()\r\n { \r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n apiGet(\"ucm/queues/hours/queue/\" + queueName).then((result) => \r\n {\r\n var hoursList = [];\r\n\r\n for (var i = 0; i < result.data.length; i++)\r\n {\r\n var hoursRecord = result.data[i];\r\n\r\n var newHoursRecord = \r\n {\r\n DayOfWeek: hoursRecord.DayOfWeek,\r\n OpenHours: hoursRecord.StartTime + \" - \" + hoursRecord.EndTime\r\n }\r\n\r\n hoursList.push(newHoursRecord);\r\n }\r\n\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n hours: hoursList\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n addBusinessHours()\r\n {\r\n this.setState({addingBusinessHours: true})\r\n\r\n // TODO: authentication\r\n const { openTime, closeTime, monChecked, tueChecked, wedChecked, thuChecked, friChecked, satChecked, sunChecked, addBusinessHoursDialogOpen } = this.state;\r\n\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n // Create selected days array\r\n var selectedDays = [];\r\n\r\n if (monChecked) selectedDays.push(\"MON\");\r\n if (tueChecked) selectedDays.push(\"TUE\");\r\n if (wedChecked) selectedDays.push(\"WED\");\r\n if (thuChecked) selectedDays.push(\"THU\");\r\n if (friChecked) selectedDays.push(\"FRI\");\r\n if (satChecked) selectedDays.push(\"SAT\");\r\n if (sunChecked) selectedDays.push(\"SUN\");\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n queueName: queueName,\r\n openTime : openTime,\r\n closeTime : closeTime,\r\n days : selectedDays\r\n }\r\n\r\n // Add business hours\r\n apiPostJson(\"ucm/queues/hours/add\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n addingBusinessHours: false\r\n });\r\n\r\n this.toggleAddBusinessHoursDialogOpen(addBusinessHoursDialogOpen);\r\n this.showNotification(\"success\", \"Business hours assigned to queue!\");\r\n\r\n this.getQueueBusinessHours();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n addingBusinessHours: false\r\n });\r\n\r\n this.toggleAddBusinessHoursDialogOpen(addBusinessHoursDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n removeBusinessHours()\r\n {\r\n this.setState({removingBusinessHours: true});\r\n\r\n const { businessHoursToRemove, confirmDialogOpen } = this.state;\r\n \r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n // Get start and endtime\r\n var splitStartEndtime = businessHoursToRemove.OpenHours.split(\" - \");\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n QueueName: queueName,\r\n StartTime : splitStartEndtime[0],\r\n EndTime : splitStartEndtime[1],\r\n DayOfWeek : businessHoursToRemove.DayOfWeek\r\n }\r\n\r\n // Remove business hours\r\n apiPostJson(\"ucm/queues/hours/remove\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n removingBusinessHours: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"success\", \"Business hours removed!\");\r\n\r\n this.getQueueBusinessHours();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingBusinessHours: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n render() \r\n {\r\n // Dialogs\r\n const { error, isLoaded, addBusinessHoursDialogOpen, addingBusinessHours, confirmDialogOpen, removingBusinessHours, toastOpen, toastColor, toastText, hours, monChecked, tueChecked, wedChecked, thuChecked, friChecked, satChecked, sunChecked, openTime, closeTime } = this.state;\r\n const { classes } = this.props; \r\n \r\n if (!isLoaded)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Business Hours dialog */}\r\n this.toggleAddBusinessHoursDialogOpen(addBusinessHoursDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.addBusinessHours();}}>\r\n Add new business hour record to queue.\r\n \r\n \r\n Please, enter the desired hours below.\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ monChecked: event.target.checked })}/>}\r\n label=\"Monday\"\r\n />\r\n this.setState({ tueChecked: event.target.checked })}/>}\r\n label=\"Tuesday\"\r\n />\r\n this.setState({ wedChecked: event.target.checked })}/>}\r\n label=\"Wednesday\"\r\n />\r\n this.setState({ thuChecked: event.target.checked })}/>}\r\n label=\"Thursday\"\r\n />\r\n this.setState({ friChecked: event.target.checked })}/>}\r\n label=\"Friday\"\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ satChecked: event.target.checked })}/>}\r\n label=\"Saturday\"\r\n />\r\n this.setState({ sunChecked: event.target.checked })}/>}\r\n label=\"Sunday\"\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.setState({ openTime: value })\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n type: \"time\",\r\n defaultValue: openTime\r\n }}\r\n />\r\n \r\n\r\n \r\n this.setState({ closeTime: value })\r\n }\r\n inputProps={{\r\n type: \"time\",\r\n defaultValue: closeTime\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 {/* Remove business hours confirmation dialog */}\r\n this.toggleConfirmDialogOpen(confirmDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {\"Are you sure you want to remove this business hour record?\"}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Business Hours card */}\r\n \r\n \r\n \r\n \r\n

Business Hours

\r\n

Business hours per day

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.QUEUES.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n : null\r\n } \r\n\r\n {this.setState({businessHoursToRemove: clickedItem}); this.toggleConfirmDialogOpen(confirmDialogOpen);}\r\n : null\r\n }\r\n />\r\n \r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(QueueBusinessHours)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport HolidayIcon from \"@material-ui/icons/Today\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nimport { apiGet, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nclass QueueHolidays extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoadedQueueHolidays: false,\r\n isLoadedAllHolidays: false,\r\n\r\n // Dialogs \r\n addHolidaysDialogOpen: false,\r\n addingHoliday: false,\r\n confirmDialogOpen: false,\r\n removingHoliday: false,\r\n\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Data\r\n queueHolidays: [],\r\n allHolidays: [],\r\n \r\n // New holiday\r\n holidayIdToAssign: \"\",\r\n\r\n // Removing holiday\r\n holidayToRemove: null\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n this.getQueueHolidays();\r\n this.getAllHolidays();\r\n }\r\n\r\n getQueueHolidays()\r\n {\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n apiGet(\"ucm/holidays/queue/\" + queueName).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedQueueHolidays:true,\r\n queueHolidays: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedQueueHolidays: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n getAllHolidays()\r\n {\r\n // Check if user has permission to fetch customer holidays. If not, leave holidays array empty.\r\n if (!PMUtils.userHasAllRequiredPermissions([\"UCALLMANAGER.QUEUES.EDIT\"], globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoadedAllHolidays: true,\r\n allHolidays: []\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get customer holidays\r\n apiGet(\"ucm/holidays\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedAllHolidays:true,\r\n allHolidays: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedAllHolidays:true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n addHoliday()\r\n {\r\n this.setState({addingHoliday: true})\r\n\r\n // TODO: authentication\r\n const { holidayIdToAssign, addHolidaysDialogOpen } = this.state;\r\n\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n holidayId : holidayIdToAssign,\r\n queueName : queueName\r\n }\r\n\r\n // Add holiday\r\n apiPostJson(\"ucm/queues/holidays/add\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n addingHoliday: false\r\n });\r\n\r\n this.toggleAddHolidaysDialogOpen(addHolidaysDialogOpen);\r\n this.showNotification(\"success\", \"Holiday assigned to queue!\");\r\n\r\n this.getQueueHolidays();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n addingHoliday: false\r\n });\r\n\r\n this.toggleAddHolidaysDialogOpen(addHolidaysDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n removeHoliday()\r\n {\r\n this.setState({removingHoliday: true});\r\n\r\n const { holidayToRemove, confirmDialogOpen } = this.state;\r\n\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n holidayId : holidayToRemove.ID,\r\n queueName : queueName\r\n }\r\n\r\n // Add holiday\r\n apiPostJson(\"ucm/queues/holidays/remove\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n removingHoliday: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"success\", \"Holiday removed from queue!\");\r\n\r\n this.getQueueHolidays();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingHoliday: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n toggleAddHolidaysDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n addHolidaysDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n toggleConfirmDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n confirmDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n render() \r\n { \r\n const { isLoadedQueueHolidays, isLoadedAllHolidays, error, addHolidaysDialogOpen, addingHoliday, confirmDialogOpen, removingHoliday, toastOpen, toastColor, toastText, queueHolidays, allHolidays, holidayIdToAssign } = this.state;\r\n const { classes } = this.props; \r\n\r\n if (!isLoadedQueueHolidays || !isLoadedAllHolidays)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Add holidays dialog */}\r\n this.toggleAddHolidaysDialogOpen(addHolidaysDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.addHoliday()}}>\r\n Assign holiday to queue\r\n \r\n \r\n Please, select the holiday you would like to assign to the queue.\r\n \r\n\r\n { this.setState({holidayIdToAssign: value}); }\r\n }\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Remove holiday confirmation dialog */}\r\n this.toggleConfirmDialogOpen(confirmDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {\"Are you sure you want to remove this holiday from the queue?\"}\r\n \r\n \r\n This will not affect other queues.\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

Holidays

\r\n

Holidays linked to queue

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.QUEUES.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n : null\r\n }\r\n\r\n {this.setState({holidayToRemove: clickedItem}); this.toggleConfirmDialogOpen(confirmDialogOpen);}\r\n : null\r\n }\r\n isSortable={true}\r\n initialOrderBy={\"Date\"}\r\n tableDateColumns={[\"Date\"]}\r\n />\r\n \r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(QueueHolidays)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport PeopleIcon from \"@material-ui/icons/People\";\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nimport { apiGet, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nclass QueueAgents extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoadedDetails: false,\r\n isLoadedQueueAgents: false,\r\n isLoadedAllAgents: false,\r\n\r\n // Dialogs \r\n addAgentDialogOpen: false,\r\n addingAgent: false, \r\n updateAgentDialogOpen: false,\r\n updatingAgent: false,\r\n confirmDialogOpen: false,\r\n removingAgent: false,\r\n\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Data\r\n queueDetails: null,\r\n queueAgents: [],\r\n allAgents: [],\r\n \r\n // New agent\r\n agentIdToAssign: \"\",\r\n agentPenalty: 0,\r\n\r\n // Removing agent\r\n agentToRemove: null,\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n this.getQueueDetails();\r\n this.getQueueAgents();\r\n this.getAllAgents();\r\n }\r\n\r\n getQueueAgents()\r\n {\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n apiGet(\"ucm/queues/agents?queueName=\" + queueName).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedQueueAgents: true,\r\n queueAgents: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedQueueAgents: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n getQueueDetails()\r\n {\r\n // Check if queue data is already fetched, if not, fetch it again.\r\n if (globalData.currentlyViewingQueue !== null)\r\n {\r\n this.setState(\r\n {\r\n isLoadedDetails: true,\r\n queueDetails: globalData.currentlyViewingQueue\r\n });\r\n\r\n return;\r\n }\r\n\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n \r\n // Get details of queue\r\n apiGet(\"ucm/queues/get?queueName=\" + queueName).then((result) => \r\n {\r\n globalData.currentlyViewingQueue = result.data;\r\n\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedDetails:true,\r\n queueDetails: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedDetails: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n getAllAgents()\r\n {\r\n // Check if user has permission to fetch customer agents. If not, leave agents array empty.\r\n if (!PMUtils.userHasAllRequiredPermissions([\"UCALLMANAGER.QUEUES.EDIT\"], globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoadedAllAgents: true,\r\n allAgents: []\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get all agents of customer\r\n apiGet(\"ucm/agents\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedAllAgents:true,\r\n allAgents: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedAllAgents:true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n addAgent()\r\n {\r\n this.setState({addingAgent: true})\r\n\r\n // TODO: authentication\r\n const { agentIdToAssign, addAgentDialogOpen, agentPenalty } = this.state;\r\n\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n agentId : agentIdToAssign,\r\n queueName : queueName,\r\n penalty : agentPenalty\r\n }\r\n\r\n // Add agent\r\n apiPostJson(\"ucm/queues/agents/add\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n addingAgent: false\r\n });\r\n\r\n this.toggleAddAgentDialogOpen(addAgentDialogOpen);\r\n this.showNotification(\"success\", \"Agent assigned to queue!\");\r\n\r\n this.getQueueAgents();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n addingAgent: false\r\n });\r\n\r\n this.toggleAddAgentDialogOpen(addAgentDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n updateAgent()\r\n {\r\n this.setState({updatingAgent: true})\r\n\r\n // TODO: authentication\r\n const { agentIdToAssign, updateAgentDialogOpen, agentPenalty } = this.state;\r\n\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n AgentID : agentIdToAssign,\r\n QueueName : queueName,\r\n Penalty : agentPenalty\r\n }\r\n\r\n // Update agent\r\n apiPostJson(\"ucm/queues/agents/update\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n updatingAgent: false\r\n });\r\n\r\n this.toggleUpdateAgentDialogOpen(updateAgentDialogOpen);\r\n this.showNotification(\"success\", \"Agent updated!\");\r\n\r\n this.getQueueAgents();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n updatingAgent: false\r\n });\r\n\r\n this.toggleUpdateAgentDialogOpen(updateAgentDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n removeAgent()\r\n {\r\n this.setState({removingAgent: true});\r\n\r\n const { agentToRemove, confirmDialogOpen } = this.state;\r\n\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n agentID : agentToRemove.AgentID,\r\n queueName : queueName\r\n }\r\n\r\n // Add agent\r\n apiPostJson(\"ucm/queues/agents/remove\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n removingAgent: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"success\", \"Agent removed from queue!\");\r\n\r\n this.getQueueAgents();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingAgent: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n setUpdateAgentStateValues(agentToUpdate)\r\n {\r\n this.setState({\r\n agentIdToAssign: agentToUpdate.AgentID,\r\n agentPenalty: agentToUpdate.Penalty\r\n })\r\n }\r\n\r\n toggleAddAgentDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n addAgentDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n toggleUpdateAgentDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n updateAgentDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n toggleConfirmDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n confirmDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n render() \r\n { \r\n const { isLoadedDetails, isLoadedQueueAgents, isLoadedAllAgents, \r\n error, addAgentDialogOpen, addingAgent, updateAgentDialogOpen, updatingAgent, confirmDialogOpen, removingAgent, toastOpen, toastColor, toastText, queueDetails, queueAgents, allAgents, agentIdToAssign, agentPenalty } = this.state;\r\n const { classes } = this.props; \r\n\r\n if (!isLoadedDetails || !isLoadedQueueAgents || !isLoadedAllAgents)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Add agents dialog */}\r\n this.toggleAddAgentDialogOpen(addAgentDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.addAgent()}}>\r\n Assign agent to queue\r\n \r\n \r\n Please, select the agent you would like to assign to the queue.\r\n \r\n\r\n { this.setState({agentIdToAssign: value}); }\r\n }\r\n />\r\n\r\n { this.setState({agentPenalty: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9][0-9]?$|^100$\",\r\n maxLength: 3,\r\n title: \"Only numbers between 0 and 100 allowed\",\r\n defaultValue: 0\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {/* Update agent dialog */}\r\n this.toggleUpdateAgentDialogOpen(updateAgentDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.updateAgent()}}>\r\n Update Queue Agent\r\n \r\n { this.setState({agentPenalty: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9][0-9]?$|^100$\",\r\n maxLength: 3,\r\n title: \"Only numbers between 0 and 100 allowed\",\r\n defaultValue: agentPenalty\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Remove agent confirmation dialog */}\r\n this.toggleConfirmDialogOpen(confirmDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {\"Are you sure you want to remove this agent from the queue?\"}\r\n \r\n \r\n This will not affect other queues.\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

Queue Agents

\r\n

Agents linked to queue

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.QUEUES.EDIT\"], globalData.loggedInUser.PortalPermissions) && queueDetails.QueueType.Type !== \"shift\"\r\n ?\r\n \r\n \r\n \r\n : null\r\n }\r\n\r\n {\r\n queueDetails.QueueType.Type === \"shift\"\r\n ?\r\n

These agents are dynamically fetched from MS Teams shifts (refreshed hourly).

\r\n :\r\n null\r\n }\r\n\r\n {this.setState({agentToRemove: clickedItem}); this.toggleConfirmDialogOpen(confirmDialogOpen);}\r\n : null\r\n }\r\n onEditButtonClicked=\r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.QUEUES.EDIT\"], globalData.loggedInUser.PortalPermissions) && queueDetails.QueueType.Type !== \"shift\"\r\n ?\r\n (clickedItem) => { this.setUpdateAgentStateValues(clickedItem); this.toggleUpdateAgentDialogOpen(updateAgentDialogOpen) }\r\n : null\r\n }\r\n isSortable={true}\r\n initialOrderBy={\"Agent\"}\r\n tableNumericColumns={[\"Number\", \"Penalty\"]}\r\n />\r\n
\r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(QueueAgents)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport QueueDetails from \"views/UCallManager/Queues/ViewQueue/QueueDetails.jsx\";\r\nimport QueueBusinessHours from \"views/UCallManager/Queues/ViewQueue/QueueBusinessHours.jsx\";\r\nimport QueueHolidays from \"views/UCallManager/Queues/ViewQueue/QueueHolidays.jsx\";\r\nimport QueueAgents from \"views/UCallManager/Queues/ViewQueue/QueueAgents.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.QUEUES.VIEW\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\n// ClassName\r\nclass ViewQueuePage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n queueDetails: null\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) || !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n error: \"Access denied\"\r\n });\r\n }\r\n\r\n this.getQueueDetails();\r\n }\r\n\r\n getQueueDetails()\r\n {\r\n // TODO: Duplicate fetch queueName\r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var queueName = url.searchParams.get(\"no\");\r\n \r\n // Get details of queue\r\n apiGet(\"ucm/queues/get?queueName=\" + queueName).then((result) => \r\n {\r\n globalData.currentlyViewingQueue = result.data;\r\n\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n queueDetails: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { isLoaded, error, queueDetails } = this.state;\r\n\r\n if (!isLoaded)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n \r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n // Hide content based on queuetype\r\n queueDetails.QueueType.Type !== \"shift\"\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 null\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/*

Voice Prompts

*/}\r\n
\r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(ViewQueuePage)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\n\r\n// Local scripts\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\nimport { graphApiGet } from \"utils/graphApi/graphApiWebRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\"\r\n }\r\n };\r\n\r\n const requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nclass NewQueue extends React.Component\r\n{\r\n constructor(props)\r\n {\r\n super(props);\r\n\r\n this.state =\r\n {\r\n // Component loading\r\n error: null,\r\n isLoaded: false,\r\n isLoadedTeams: false,\r\n\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Data\r\n newQueueMeta: null,\r\n\r\n // New queue\r\n queueName: \"\",\r\n queueType: \"\",\r\n maxMembers: 0,\r\n phoneNumber: \"\",\r\n strategy: \"\",\r\n\r\n timeOut: 0,\r\n retry: 0,\r\n absoluteTimeOut: 0,\r\n serviceLevel: 0,\r\n huntWhenAway: true,\r\n\r\n joinEmpty: false,\r\n leaveWhenEmpty: false,\r\n nextQueue: \"\",\r\n nextQueueOutsideBusinessHours: \"\",\r\n\r\n audioRecording: false,\r\n onHoldMusic: \"\",\r\n closedSound: \"\",\r\n openSound: \"\",\r\n showOnWallboard: true,\r\n\r\n // New Shift Queue properties\r\n foundTeams: [],\r\n selectedTeam: \"\",\r\n\r\n // New queue state\r\n showShiftQueueProperties: false,\r\n creatingQueue: false,\r\n queueCreated: false\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) ||\r\n !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.getNewQueueMeta();\r\n }\r\n\r\n getNewQueueMeta()\r\n {\r\n // Fetch queue meta data\r\n apiGet(\"ucm/queues/meta\").then((result) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n newQueueMeta: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n createQueue()\r\n {\r\n this.setState({creatingQueue: true})\r\n\r\n // TODO: authentication\r\n const { queueName, queueType, maxMembers, phoneNumber, timeOut, retry, absoluteTimeOut, serviceLevel, strategy, huntWhenAway, joinEmpty, leaveWhenEmpty, nextQueue, nextQueueOutsideBusinessHours, audioRecording, onHoldMusic, closedSound, openSound, showOnWallboard } = this.state;\r\n\r\n // Create request body\r\n var requestBody =\r\n {\r\n QueueName: queueName,\r\n QueueType: queueType,\r\n MaxMembers: maxMembers,\r\n PhoneNumber: phoneNumber,\r\n TimeOut: timeOut,\r\n Retry: retry,\r\n AbsoluteTimeOut: absoluteTimeOut,\r\n ServiceLevel: serviceLevel,\r\n Strategy: strategy,\r\n HuntWhenAway: huntWhenAway,\r\n JoinEmpty: joinEmpty,\r\n LeaveWhenEmpty: leaveWhenEmpty,\r\n NextQueue: nextQueue,\r\n NextQueueOutsideBusinessHours: nextQueueOutsideBusinessHours,\r\n AudioRecording: audioRecording,\r\n MusicOnHold: onHoldMusic,\r\n ClosedSound: closedSound,\r\n OpenSound: openSound,\r\n ShowOnWallboard: showOnWallboard\r\n }\r\n\r\n if (queueType === \"default\")\r\n {\r\n this.createDefaultQueue(requestBody)\r\n }\r\n else\r\n {\r\n this.createShiftQueue(requestBody)\r\n }\r\n }\r\n\r\n createDefaultQueue(requestBody)\r\n {\r\n // Create queue\r\n apiPostJson(\"ucm/queues/add\", requestBody).then(() =>\r\n {\r\n this.setState(\r\n {\r\n queueCreated: true\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n creatingQueue: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n createShiftQueue(requestBody)\r\n {\r\n var { selectedTeam } = this.state;\r\n\r\n requestBody[\"MSTeamsTeamId\"] = selectedTeam;\r\n \r\n // Create queue\r\n apiPostJson(\"ucm/queues/add/with-graph-connection\", requestBody).then(() =>\r\n {\r\n this.setState(\r\n {\r\n queueCreated: true\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n creatingQueue: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function()\r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n showSpecificQueueTypeProperties(queueType)\r\n {\r\n if (queueType === \"shift\")\r\n {\r\n this.showShiftQueueProperties();\r\n }\r\n }\r\n\r\n showShiftQueueProperties()\r\n {\r\n this.setState({\r\n showShiftQueueProperties: true\r\n });\r\n\r\n graphApiGet(\"me/joinedTeams?$select=id,displayName\").then((result) =>\r\n {\r\n this.setState({\r\n isLoadedTeams: true,\r\n foundTeams: result.data.value\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState({\r\n isLoadedTeams: true,\r\n foundTeams: []\r\n });\r\n }); \r\n }\r\n\r\n render()\r\n {\r\n const { error, isLoaded, isLoadedTeams,\r\n toastColor, toastText, toastOpen,\r\n newQueueMeta,\r\n queueName, queueType, maxMembers, phoneNumber, strategy, timeOut, retry, absoluteTimeOut, serviceLevel, huntWhenAway, joinEmpty, leaveWhenEmpty, nextQueue, nextQueueOutsideBusinessHours, audioRecording, onHoldMusic, closedSound, openSound,\r\n foundTeams, selectedTeam, showOnWallboard,\r\n showShiftQueueProperties, creatingQueue, queueCreated } = this.state;\r\n\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n // TODO: Proper error handling\r\n return \r\n }\r\n else if (queueCreated)\r\n {\r\n // If case was created, navigate to cases page.\r\n return ()\r\n }\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n \r\n \r\n \r\n
{ e.preventDefault(); this.createQueue() }}>\r\n \r\n

Create New Queue

\r\n
\r\n \r\n
Required Settings
\r\n \r\n \r\n \r\n { this.setState({queueName: value}) }\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n maxLength: 30\r\n }}\r\n />\r\n { this.setState({queueType: value}); this.showSpecificQueueTypeProperties(value); }\r\n }\r\n />\r\n { this.setState({showOnWallboard: (value === \"Yes\")}); }\r\n }\r\n />\r\n { this.setState({maxMembers: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\"\r\n }}\r\n />\r\n \r\n \r\n { this.setState({phoneNumber: value}); }\r\n }\r\n />\r\n\r\n { this.setState({strategy: value}); }\r\n }\r\n />\r\n \r\n \r\n\r\n {\r\n showShiftQueueProperties ?\r\n (\r\n
\r\n
Shifts Queue Settings
\r\n \r\n \r\n \r\n {\r\n isLoadedTeams\r\n ?\r\n { this.setState({selectedTeam: value}); }\r\n }\r\n />\r\n :\r\n

Loading teams...

\r\n }\r\n
\r\n
\r\n
\r\n )\r\n :\r\n null\r\n }\r\n\r\n
Hunting Settings
\r\n \r\n \r\n \r\n { this.setState({timeOut: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\"\r\n }}\r\n />\r\n { this.setState({retry: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\"\r\n }}\r\n />\r\n \r\n \r\n { this.setState({absoluteTimeOut: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\"\r\n }}\r\n />\r\n { this.setState({serviceLevel: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9]*$\",\r\n title: \"Only numbers allowed\"\r\n }}\r\n />\r\n \r\n \r\n { this.setState({huntWhenAway: (value === \"Yes\")}); }\r\n }\r\n />\r\n \r\n \r\n\r\n
Queue Navigation Settings
\r\n \r\n \r\n \r\n { this.setState({joinEmpty: (value === \"Yes\")}); }\r\n }\r\n />\r\n { this.setState({leaveWhenEmpty: (value === \"Yes\")}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({nextQueue: value}); }\r\n }\r\n />\r\n { this.setState({nextQueueOutsideBusinessHours: value}); }\r\n }\r\n />\r\n \r\n \r\n\r\n
Sound Settings
\r\n \r\n \r\n \r\n { this.setState({audioRecording: (value === \"Yes\")}); }\r\n }\r\n />\r\n { this.setState({onHoldMusic: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({openSound: value}); }\r\n }\r\n />\r\n { this.setState({closedSound: value}); }\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 withStyles(styles)(NewQueue);","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport Input from \"@material-ui/core/Input\";\r\nimport NativeSelect from \"@material-ui/core/NativeSelect\";\r\n\r\n// @material-ui/icons\r\nimport Clear from \"@material-ui/icons/Clear\";\r\nimport Check from \"@material-ui/icons/Check\";\r\nimport InfoIcon from '@material-ui/icons/Info';\r\n\r\n// core components\r\nimport customSelectStyle from \"assets/jss/material-dashboard-react/components/customInputStyle.jsx\";\r\nimport InputInfoButton from \"components/CustomInput/InputInfoButton.jsx\";\r\n\r\nfunction CustomEntrySelect({ ...props }) \r\n{\r\n const \r\n {\r\n onPress,\r\n classes,\r\n formControlProps,\r\n labelText,\r\n id,\r\n labelProps,\r\n inputProps,\r\n error,\r\n success,\r\n onValueChange,\r\n selectedValue,\r\n selectedName,\r\n values,\r\n keyColumn,\r\n valueColumn,\r\n infoText\r\n } = props;\r\n\r\n const labelClasses = classNames({\r\n [\" \" + classes.labelRootError]: error,\r\n [\" \" + classes.labelRootSuccess]: success && !error\r\n });\r\n\r\n const marginTop = classNames({\r\n [classes.marginTop]: labelText === undefined\r\n });\r\n \r\n const createOptionItemsFromValues = () =>\r\n {\r\n // If keycolumn is not null, use the key and value column. Else use the item.\r\n if (keyColumn)\r\n {\r\n return values.map((item, key) =>\r\n {\r\n return()\r\n });\r\n }\r\n else\r\n {\r\n return values.map((item, key) =>\r\n {\r\n return()\r\n });\r\n }\r\n }\r\n\r\n return (\r\n
\r\n\r\n
Currently selected: {selectedName}


\r\n\r\n
\r\n {values && values.length > 0 ? (\r\n values.map((user) => ( \r\n
onPress(user.id, user.userPrincipalName)} className=\"user\" style={{cursor:'pointer'}}> \r\n {user.name}  {user.id == selectedValue ? : \"\"}
\r\n ({user.userPrincipalName})

\r\n
\r\n ))\r\n ) : (\r\n
No results found!
\r\n )}\r\n
\r\n
\r\n );\r\n}\r\n\r\nCustomEntrySelect.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n labelText: PropTypes.node,\r\n labelProps: PropTypes.object,\r\n id: PropTypes.string,\r\n inputProps: PropTypes.object,\r\n formControlProps: PropTypes.object,\r\n error: PropTypes.bool,\r\n success: PropTypes.bool,\r\n onValueChange: PropTypes.func,\r\n values: PropTypes.array,\r\n keyColumn: PropTypes.string,\r\n valueColumn: PropTypes.string,\r\n infoText: PropTypes.string\r\n};\r\n\r\nexport default withStyles(customSelectStyle)(CustomEntrySelect);\r\n","import React from \"react\";\r\n\r\n// @material-ui\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport PeopleIcon from \"@material-ui/icons/People\";\r\n\r\n// core components\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\nimport CustomEntrySelect from \"components/CustomInput/CustomEntrySelect\";\r\n\r\n// Extra libs\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { graphApiGet } from \"utils/graphApi/graphApiWebRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nconst requiredPortalPermissions = [ \r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.AGENTS.VIEW\",\r\n \"UCALLMANAGER.AGENTS.EDIT\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n]\r\n\r\nclass AgentsPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n interfacesLoaded: false,\r\n agentsLoaded: false,\r\n error: null,\r\n\r\n // State\r\n loadingOffice365Users: false,\r\n\r\n // Meta\r\n foundOffice365Users: \"\",\r\n data: \"\",\r\n \r\n // Dialogs \r\n addAgentsDialogOpen: false,\r\n addingAgent: false,\r\n\r\n updateAgentsDialogOpen: false,\r\n updatingAgent: false,\r\n\r\n confirmDialogOpen: false,\r\n removingAgent: false,\r\n\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Data\r\n interfaces: [],\r\n agents: [],\r\n\r\n // Add / update agent\r\n oldAgent: \"\",\r\n agent: \"\", \r\n number: \"\",\r\n fallbackNumber: \"\",\r\n selectedInterfaceTypeId: \"\",\r\n isAlwaysAvailableChecked: false,\r\n isRingInUseChecked: false,\r\n selectedOffice365User: \"\",\r\n foundUserPrincipalName: \"\", \r\n\r\n agentID: \"\",\r\n\r\n // Remove agent\r\n agentToRemove: \"\",\r\n\r\n searchText: \"\",\r\n }\r\n } \r\n \r\n handleAgentSelection = (id, userPrincipalName) => {\r\n //return function () {\r\n this.setState({\r\n selectedOffice365User: id,\r\n foundUserPrincipalName: userPrincipalName\r\n }) \r\n //} \r\n };\r\n\r\n toggleAddAgentsDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n addAgentsDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n toggleUpdateAgentsDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n updateAgentsDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n toggleConfirmDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n confirmDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n setSearch = (searchTerm) => {\r\n const { foundOffice365Users, searchText, data } = this.state; \r\n \r\n const search = foundOffice365Users.filter(\r\n item =>\r\n item.name.toLowerCase().indexOf(searchText.toLowerCase()) > -1,\r\n );\r\n if (searchTerm == \"\" || searchTerm.length == 0) {\r\n this.setState( { data: foundOffice365Users, searchText: searchTerm });\r\n this.getOffice365UsersFromGraphApi();\r\n }\r\n else if (searchTerm.length >= 3) { \r\n console.log(searchTerm); \r\n this.getFilteredOffice365UsersFromGraphApi(searchTerm); \r\n this.setState( { data: search, searchText: searchTerm }); \r\n } \r\n else {\r\n this.setState( { searchText: searchTerm });\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) &&\r\n !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n interfacesLoaded: true,\r\n agentsLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get interface & agents\r\n this.getInterfaces();\r\n this.getAgents();\r\n }\r\n\r\n getInterfaces()\r\n {\r\n // Check if user has permission to fetch interfaces. If not, leave interfaces array empty.\r\n if (!PMUtils.userHasAllRequiredPermissions([\"UCALLMANAGER.AGENTS.EDIT\"], globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n interfacesLoaded: true,\r\n interfaces: []\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get interfaces\r\n apiGet(\"ucm/interfaces\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n interfacesLoaded: true,\r\n interfaces: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n interfacesLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n getAgents()\r\n {\r\n apiGet(\"ucm/agents\").then((result) => \r\n {\r\n var fetchedAgents = [];\r\n \r\n for (var i = 0; i < result.data.length; i++)\r\n {\r\n var agent = result.data[i];\r\n\r\n var newAgentRecord = \r\n {\r\n AgentID: agent.AgentID,\r\n Agent: agent.Agent,\r\n Number: agent.Number,\r\n IsAlwaysAvailable: agent.IsAlwaysAvailable,\r\n Penalty: agent.Penalty,\r\n FallbackNumber: agent.FallbackNumber,\r\n Office365UserId: agent.Office365UserId,\r\n UserPrincipalName: agent.UserPrincipalName,\r\n InterfaceType: agent.InterfaceType,\r\n RingInUse: agent.RingInUse\r\n }\r\n\r\n fetchedAgents.push(newAgentRecord);\r\n }\r\n\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n agentsLoaded:true,\r\n agents: fetchedAgents\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n agentsLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n addAgent()\r\n {\r\n this.setState({addingAgent: true})\r\n\r\n // TODO: authentication\r\n const { agent, number, fallbackNumber, selectedInterfaceTypeId, isAlwaysAvailableChecked, addAgentsDialogOpen, selectedOffice365User, isRingInUseChecked, foundUserPrincipalName } = this.state;\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n Agent: agent,\r\n Number: number,\r\n FallbackNumber: fallbackNumber,\r\n InterfaceTypeId: selectedInterfaceTypeId,\r\n IsAlwaysAvailable: isAlwaysAvailableChecked,\r\n Office365UserId: selectedOffice365User,\r\n UserPrincipalName: foundUserPrincipalName,\r\n RingInUse: isRingInUseChecked\r\n }\r\n\r\n // Add agent\r\n apiPostJson(\"ucm/agents/add\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n addingAgent: false,\r\n\r\n fallbackNumber: \"\"\r\n });\r\n\r\n this.toggleAddAgentsDialogOpen(addAgentsDialogOpen);\r\n this.showNotification(\"success\", \"Agent added!\");\r\n\r\n this.getAgents();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n addingAgent: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data); \r\n });\r\n }\r\n\r\n updateAgent()\r\n {\r\n this.setState({updatingAgent: true})\r\n\r\n // TODO: authentication\r\n const { oldAgent, agent, agentID, number, fallbackNumber, selectedInterfaceTypeId, isAlwaysAvailableChecked, selectedOffice365User, updateAgentsDialogOpen, isRingInUseChecked, foundUserPrincipalName } = this.state;\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n OldAgent: oldAgent,\r\n AgentID: agentID,\r\n Agent : agent,\r\n Number: number,\r\n FallbackNumber : fallbackNumber,\r\n InterfaceTypeId: selectedInterfaceTypeId,\r\n IsAlwaysAvailable: isAlwaysAvailableChecked,\r\n Office365UserId: selectedOffice365User, \r\n UserPrincipalName: foundUserPrincipalName, \r\n RingInUse: isRingInUseChecked\r\n }\r\n\r\n // Add agent\r\n apiPostJson(\"ucm/agents/update\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n updatingAgent: false\r\n });\r\n\r\n this.toggleUpdateAgentsDialogOpen(updateAgentsDialogOpen);\r\n this.showNotification(\"success\", \"Agent updated!\");\r\n\r\n this.getAgents();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n updatingAgent: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n setUpdateAgentStateValues(agentToUpdate)\r\n {\r\n console.log(agentToUpdate.RingInUse);\r\n this.setState({\r\n oldAgent: agentToUpdate.Agent,\r\n agentID: agentToUpdate.AgentID,\r\n agent: agentToUpdate.Agent, \r\n number: agentToUpdate.Number,\r\n fallbackNumber: agentToUpdate.FallbackNumber,\r\n selectedInterfaceTypeId: agentToUpdate.InterfaceType.ID,\r\n isAlwaysAvailableChecked: agentToUpdate.IsAlwaysAvailable,\r\n selectedOffice365User: agentToUpdate.Office365UserId,\r\n foundUserPrincipalName: agentToUpdate.UserPrincipalName,\r\n isRingInUseChecked: agentToUpdate.RingInUse\r\n })\r\n }\r\n\r\n removeAgent()\r\n {\r\n this.setState({removingAgent: true});\r\n\r\n const { agentToRemove, confirmDialogOpen } = this.state;\r\n\r\n // Remove agent\r\n apiPost(\"ucm/agents/remove?agentId=\" + agentToRemove).then(() => \r\n {\r\n this.setState(\r\n {\r\n removingAgent: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"success\", \"Agent removed!\");\r\n\r\n this.getAgents();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingAgent: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n getFilteredOffice365UsersFromGraphApi(searchTerm)\r\n {\r\n this.setState({\r\n loadingOffice365Users: true\r\n });\r\n\r\n const { searchText } = this.state;\r\n\r\n graphApiGet(\"users?$select=id,displayName,userPrincipalName&$filter=startswith(userPrincipalName,'\" + searchTerm + \"')\").then((result) =>\r\n //graphApiGet(\"users?$select=id,displayName,userPrincipalName &$filter=userType eq 'Member'\").then((result) =>\r\n {\r\n var office365Users = [];\r\n \r\n for (var i = 0; i < result.data.value.length; i++)\r\n {\r\n var office365User = result.data.value[i];\r\n\r\n var newUserRecord = \r\n {\r\n id: office365User.id,\r\n name: office365User.displayName,\r\n displayName: office365User.displayName + \" (\" + office365User.userPrincipalName + \")\",\r\n userPrincipalName: office365User.userPrincipalName\r\n }\r\n\r\n office365Users.push(newUserRecord);\r\n }\r\n\r\n office365Users.sort(this.graphApiUsersComparer);\r\n\r\n this.setState({\r\n foundOffice365Users: office365Users,\r\n data: office365Users,\r\n loadingOffice365Users: false\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.showNotification(\"danger\", \"Could not fetch users from Office 365.\");\r\n }); \r\n }\r\n\r\n getOffice365UsersFromGraphApi()\r\n {\r\n this.setState({\r\n loadingOffice365Users: true\r\n });\r\n\r\n //graphApiGet(\"users?$select=id,displayName,userPrincipalName &$filter=userType eq 'Member'&$filter=startswith(displayName,'')\").then((result) =>\r\n graphApiGet(\"users?$select=id,displayName,userPrincipalName\").then((result) =>\r\n {\r\n var office365Users = [];\r\n \r\n for (var i = 0; i < result.data.value.length; i++)\r\n {\r\n var office365User = result.data.value[i];\r\n\r\n var newUserRecord = \r\n {\r\n id: office365User.id,\r\n name: office365User.displayName,\r\n displayName: office365User.displayName + \" (\" + office365User.userPrincipalName + \")\",\r\n userPrincipalName: office365User.userPrincipalName\r\n }\r\n\r\n office365Users.push(newUserRecord);\r\n }\r\n\r\n office365Users.sort(this.graphApiUsersComparer);\r\n\r\n this.setState({\r\n foundOffice365Users: office365Users,\r\n data: office365Users,\r\n loadingOffice365Users: false\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.showNotification(\"danger\", \"Could not fetch users from Office 365.\");\r\n }); \r\n }\r\n\r\n graphApiUsersComparer(user1, user2) \r\n {\r\n if ( user1.displayName < user2.displayName ){\r\n return -1;\r\n }\r\n if ( user1.displayName > user2.displayName ){\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n render() \r\n {\r\n const { error, interfacesLoaded, agentsLoaded, loadingOffice365Users,\r\n foundOffice365Users, searchText, data,\r\n addAgentsDialogOpen, addingAgent, updateAgentsDialogOpen, updatingAgent, confirmDialogOpen, removingAgent, \r\n toastColor, toastText, toastOpen, \r\n agents, interfaces, \r\n agent, number, fallbackNumber, selectedInterfaceTypeId, isAlwaysAvailableChecked, isRingInUseChecked, selectedOffice365User, foundUserPrincipalName } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!interfacesLoaded || !agentsLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n const handleSearch = (event) => {\r\n //if (agentsLoaded)\r\n //{ \r\n this.setSearch(event);\r\n //}\r\n };\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Add agents dialog */}\r\n this.toggleAddAgentsDialogOpen(addAgentsDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.addAgent()}}>\r\n Add new agent\r\n \r\n \r\n Please, fill in the agent details.\r\n \r\n\r\n \r\n \r\n { this.setState({ agent: value}) }\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n maxLength: 200\r\n }}\r\n />\r\n \r\n\r\n \r\n { this.setState({selectedInterfaceTypeId: value}); }\r\n }\r\n />\r\n \r\n\r\n \r\n { this.setState({isAlwaysAvailableChecked: (value === \"Yes\")}); }\r\n }\r\n />\r\n \r\n\r\n \r\n { this.setState({ isRingInUseChecked: (value === \"Yes\") }); }\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n \r\n

+

\r\n
\r\n \r\n { this.setState({ number: value}) }\r\n }\r\n inputProps ={{\r\n maxLength: 13,\r\n pattern: \"^[0-9]*$\",\r\n title: \"Numbers only, max 13 characters allowed\" \r\n }}\r\n /> \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n

+

\r\n
\r\n \r\n { this.setState({ fallbackNumber: value}) }\r\n }\r\n inputProps ={{\r\n maxLength: 13,\r\n pattern: \"^[0-9]*$\",\r\n title: \"Numbers only, max 13 characters allowed\" \r\n }}\r\n /> \r\n \r\n
\r\n
\r\n \r\n {\r\n foundOffice365Users ?\r\n ( \r\n \r\n \r\n { \r\n \r\n //Reset the user principal name first\r\n this.setState({foundUserPrincipalName: null});\r\n\r\n if (data.length > 0) {\r\n\r\n for (var i = 0; i < data.length; i++)\r\n { \r\n if (data[i].id == value) { \r\n this.setState({foundUserPrincipalName: data[i].userPrincipalName}); \r\n }\r\n }\r\n\r\n }\r\n \r\n this.setState({selectedOffice365User: value}) \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 {/* this.setState({ isAlwaysAvailableChecked: event.target.checked })}/>}\r\n label=\"Is always available\"\r\n /> */}\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Update agents dialog */}\r\n this.toggleUpdateAgentsDialogOpen(updateAgentsDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.updateAgent()}}>\r\n Update agent\r\n \r\n \r\n Please, fill in the agent details.\r\n \r\n \r\n \r\n \r\n { this.setState({ agent: value}) }\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n maxLength: 200,\r\n defaultValue: agent\r\n }}\r\n />\r\n \r\n \r\n \r\n { this.setState({selectedInterfaceTypeId: value}); }\r\n }\r\n />\r\n \r\n\r\n \r\n { this.setState({isAlwaysAvailableChecked: (value === \"Yes\")}); }\r\n }\r\n />\r\n \r\n\r\n \r\n { this.setState({ isRingInUseChecked: (value === \"Yes\") }); }\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n \r\n

+

\r\n
\r\n \r\n { this.setState({ number: value}) }\r\n }\r\n inputProps ={{\r\n maxLength: 13,\r\n pattern: \"^[0-9]*$\",\r\n title: \"Numbers only, max 13 characters allowed\", \r\n defaultValue: number\r\n }}\r\n /> \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n

+

\r\n
\r\n \r\n { this.setState({ fallbackNumber: value}) }\r\n }\r\n inputProps ={{\r\n maxLength: 13,\r\n pattern: \"^[0-9]*$\",\r\n title: \"Numbers only, max 13 characters allowed\", \r\n defaultValue: fallbackNumber\r\n }}\r\n /> \r\n \r\n
\r\n
\r\n
\r\n\r\n {\r\n foundOffice365Users ?\r\n ( \r\n \r\n \r\n { \r\n \r\n //Reset the user principal name first\r\n this.setState({foundUserPrincipalName: null});\r\n\r\n if (data.length > 0) {\r\n\r\n for (var i = 0; i < data.length; i++)\r\n {\r\n if (data[i].id == value) { \r\n this.setState({foundUserPrincipalName: data[i].userPrincipalName}); \r\n }\r\n }\r\n\r\n }\r\n \r\n this.setState({selectedOffice365User: value}) \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 {/* Remove agent confirmation dialog */}\r\n this.toggleConfirmDialogOpen(confirmDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {\"Are you sure you want to remove this agent?\"}\r\n \r\n \r\n This will also remove the agent from all assigned queues.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Cards */}\r\n \r\n \r\n {/* Agents overview card */}\r\n \r\n \r\n \r\n \r\n

Agents

\r\n

Available agents

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.AGENTS.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n : null\r\n }\r\n\r\n {this.setState({agentToRemove: clickedItem.AgentID}); this.toggleConfirmDialogOpen(confirmDialogOpen);}\r\n : null\r\n }\r\n onEditButtonClicked=\r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.AGENTS.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (clickedItem) => { this.setUpdateAgentStateValues(clickedItem); this.toggleUpdateAgentsDialogOpen(updateAgentsDialogOpen); }\r\n : null\r\n }\r\n isSortable={true}\r\n initialOrderBy={\"Agent\"}\r\n tableNumericColumns={[\"Number\", \"FallbackNumber\"]}\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(AgentsPage)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport HolidayIcon from \"@material-ui/icons/Today\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\n// Extra libs\r\nimport { apiGet, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nconst requiredPortalPermissions = [ \r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nclass HolidaysPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoaded: false,\r\n\r\n // Dialogs \r\n addHolidaysDialogOpen: false,\r\n addingHoliday: false,\r\n\r\n updateHolidaysDialogOpen: false,\r\n updatingHoliday: false,\r\n\r\n confirmDialogOpen: false,\r\n removingHoliday: false,\r\n\r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Data\r\n holidays: [],\r\n minHolidayDate: new Date().getFullYear() + \"-01-01\",\r\n\r\n // New holiday\r\n newHolidayDate: new Date().getFullYear() + \"-01-01\",\r\n newHolidayName: null,\r\n\r\n // Update holiday\r\n holidayToUpdate: null,\r\n\r\n // Removing holiday\r\n holidayToRemove: null\r\n }\r\n }\r\n \r\n toggleAddHolidaysDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n addHolidaysDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n toggleUpdateHolidaysDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n updateHolidaysDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n toggleConfirmDialogOpen = (isOpen) => \r\n {\r\n this.setState({\r\n confirmDialogOpen: !isOpen\r\n })\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get holidays\r\n this.getHolidays();\r\n }\r\n\r\n getHolidays()\r\n {\r\n apiGet(\"ucm/holidays\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n holidays: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n addHoliday()\r\n {\r\n this.setState({addingHoliday: true})\r\n\r\n // TODO: authentication\r\n const { newHolidayDate, newHolidayName, addHolidaysDialogOpen } = this.state;\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n day : newHolidayDate,\r\n description: newHolidayName\r\n }\r\n\r\n // Add holiday\r\n apiPostJson(\"ucm/holidays/add\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n addingHoliday: false\r\n });\r\n\r\n this.toggleAddHolidaysDialogOpen(addHolidaysDialogOpen);\r\n this.showNotification(\"success\", \"Holiday added!\");\r\n\r\n this.getHolidays();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n addingHoliday: false\r\n });\r\n\r\n this.toggleAddHolidaysDialogOpen(addHolidaysDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n updateHoliday()\r\n {\r\n this.setState({updatingHoliday: true})\r\n\r\n // TODO: authentication\r\n const { holidayToUpdate, updateHolidaysDialogOpen } = this.state;\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n id: holidayToUpdate.ID,\r\n date : holidayToUpdate.Date,\r\n description: holidayToUpdate.Description\r\n }\r\n\r\n // Add holiday\r\n apiPostJson(\"ucm/holidays/update\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n updatingHoliday: false\r\n });\r\n\r\n this.toggleUpdateHolidaysDialogOpen(updateHolidaysDialogOpen);\r\n this.showNotification(\"success\", \"Holiday updated!\");\r\n\r\n this.getHolidays();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n updatingHoliday: false\r\n });\r\n\r\n this.toggleUpdateHolidaysDialogOpen(updateHolidaysDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n removeHoliday()\r\n {\r\n this.setState({removingHoliday: true});\r\n\r\n const { holidayToRemove, confirmDialogOpen } = this.state;\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n id : holidayToRemove.ID,\r\n sipcustomer: holidayToRemove.PrimarySipCustomer\r\n }\r\n\r\n // Remove holiday\r\n apiPostJson(\"ucm/holidays/remove\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n removingHoliday: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"success\", \"Holiday removed!\");\r\n\r\n this.getHolidays();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingHoliday: false\r\n });\r\n\r\n this.toggleConfirmDialogOpen(confirmDialogOpen);\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n /**\r\n * Takes dd-mm-yyyy date string and formats it to yyyy-mm-dd\r\n * @param {*} date Date string to format.\r\n */\r\n formatDate(date)\r\n {\r\n var day = date.substr(0,2),\r\n month = date.substr(3,2),\r\n year = date.substr(6,4);\r\n\r\n return year + \"-\" + month + \"-\" + day;\r\n }\r\n\r\n setUpdateData(clickedItem)\r\n {\r\n var holidayToUpdate = \r\n {\r\n ID: clickedItem.ID,\r\n Date: this.formatDate(clickedItem.Date),\r\n Description: clickedItem.Description\r\n }\r\n\r\n this.setState({holidayToUpdate: holidayToUpdate})\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded, \r\n addHolidaysDialogOpen, addingHoliday, \r\n updateHolidaysDialogOpen, updatingHoliday, \r\n confirmDialogOpen, removingHoliday, \r\n toastOpen, toastColor, toastText, \r\n holidays, minHolidayDate,\r\n newHolidayDate, newHolidayName, holidayToUpdate } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n \r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Add holidays dialog */}\r\n this.toggleAddHolidaysDialogOpen(addHolidaysDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.addHoliday()}}>\r\n Add Holiday\r\n \r\n \r\n Please, enter the desired day below.\r\n \r\n\r\n { this.setState({newHolidayDate: value}) }\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n type: \"date\",\r\n defaultValue: newHolidayDate,\r\n min: minHolidayDate\r\n }}\r\n />\r\n\r\n { this.setState({newHolidayName: value}); }\r\n }\r\n inputProps={{\r\n maxLength: 100\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Update holidays dialog */}\r\n this.toggleUpdateHolidaysDialogOpen(updateHolidaysDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n
{e.preventDefault(); this.updateHoliday()}}>\r\n Update Holiday\r\n \r\n\r\n { holidayToUpdate.Date = value; this.setState({holidayToUpdate: holidayToUpdate}) }\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n type: \"date\",\r\n min: newHolidayDate,\r\n defaultValue: holidayToUpdate ? holidayToUpdate.Date : \"\"\r\n }}\r\n />\r\n\r\n { holidayToUpdate.Description = value; this.setState({holidayToUpdate: holidayToUpdate}); }\r\n }\r\n inputProps={{\r\n maxLength: 100,\r\n defaultValue: holidayToUpdate ? holidayToUpdate.Description : \"\"\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Remove holiday confirmation dialog */}\r\n this.toggleConfirmDialogOpen(confirmDialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {\"Are you sure you want to remove this holiday?\"}\r\n \r\n \r\n This will also remove the holiday from all assigned queues.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Cards */}\r\n \r\n \r\n {/* Holidays overview card */}\r\n \r\n \r\n \r\n \r\n

Holidays

\r\n

Holidays this year

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.HOLIDAYS.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n : null\r\n }\r\n\r\n { this.setUpdateData(clickedItem); this.toggleUpdateHolidaysDialogOpen(updateHolidaysDialogOpen);}\r\n : null\r\n }\r\n onDeleteButtonClicked=\r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.HOLIDAYS.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (clickedItem) => {this.setState({holidayToRemove: clickedItem}); this.toggleConfirmDialogOpen(confirmDialogOpen);}\r\n : null\r\n }\r\n isSortable={true}\r\n initialOrderBy={\"Date\"}\r\n tableDateColumns={[\"Date\"]}\r\n />\r\n \r\n
\r\n
\r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(HolidaysPage)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// core components\r\n\r\n// Extra libs\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nclass VoicePromptsPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n }\r\n }\r\n\r\n render() \r\n {\r\n return (

Voice Prompts page!

) \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(VoicePromptsPage)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport IVRIcon from \"@material-ui/icons/CallSplit\";\r\n\r\n// Extra libs\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [ \r\n \"UCALLMANAGER.IVR.VIEW\",\r\n \"UCALLMANAGER.IVR.EDIT\"\r\n]\r\n\r\nclass IVROverviewPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoaded: false, \r\n\r\n ivrs: []\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) || !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.getIVRs()\r\n }\r\n\r\n getIVRs()\r\n {\r\n apiGet(\"ucm/ivr/all\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n ivrs: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data.Message\r\n });\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded } = this.state;\r\n const { ivrs } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n

IVR

\r\n

Overview of Interactive Voice Responses.

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

Click IVR to view or edit.

\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.IVR.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n : null\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 withStyles(styles)(IVROverviewPage)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\n\r\n// Local scripts\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\nimport { graphApiGet } from \"utils/graphApi/graphApiWebRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\"\r\n }\r\n };\r\n\r\n const requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.IVR.EDIT\"\r\n]\r\n\r\nclass NewIVR extends React.Component\r\n{\r\n constructor(props)\r\n {\r\n super(props);\r\n\r\n this.state =\r\n {\r\n // Component loading\r\n error: null,\r\n isLoaded: false,\r\n \r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // IVR Meta\r\n newIVRMeta: null,\r\n\r\n // New IVR data\r\n ivrName: \"\",\r\n isRoot: \"\",\r\n linkedPhoneNumber: \"\",\r\n parentIVR: \"\",\r\n ivrPrompt: \"\",\r\n welcomeVoicePrompt: \"\",\r\n closedVoicePrompt: \"\",\r\n fallbackQueue: \"\",\r\n\r\n // States\r\n creatingIVR: false,\r\n ivrCreated: false\r\n }\r\n\r\n this.getNewIVRMeta();\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) ||\r\n !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function()\r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n \r\n getNewIVRMeta()\r\n {\r\n // Fetch IVR meta data\r\n apiGet(\"ucm/ivr/meta\").then((result) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n newIVRMeta: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n createIVR()\r\n {\r\n this.setState({creatingIVR: true})\r\n\r\n const { ivrName, isRoot, linkedPhoneNumber, parentIVR, ivrPrompt, welcomeVoicePrompt, closedVoicePrompt, fallbackQueue } = this.state;\r\n \r\n // Create request body\r\n var requestBody =\r\n {\r\n IVRName: ivrName,\r\n IsRoot: isRoot,\r\n LinkedPhoneNumber: linkedPhoneNumber,\r\n ParentIVR: parentIVR,\r\n IVRPrompt: ivrPrompt,\r\n WelcomeVoicePrompt: welcomeVoicePrompt,\r\n ClosedVoicePrompt: closedVoicePrompt,\r\n FallbackQueue: fallbackQueue\r\n };\r\n\r\n // Create IVR\r\n apiPostJson(\"ucm/ivr/add\", requestBody).then(() =>\r\n {\r\n this.setState(\r\n {\r\n ivrCreated: true\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n creatingIVR: false\r\n });\r\n\r\n this.showNotification(\"danger\", error.data);\r\n });\r\n }\r\n\r\n render()\r\n {\r\n const { error, isLoaded } = this.state;\r\n const { toastColor, toastText, toastOpen } = this.state;\r\n const { newIVRMeta } = this.state;\r\n const { ivrName, isRoot, linkedPhoneNumber, parentIVR, ivrPrompt, welcomeVoicePrompt, closedVoicePrompt, fallbackQueue } = this.state;\r\n const { creatingIVR, ivrCreated } = this.state;\r\n\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n // TODO: Proper error handling\r\n return \r\n }\r\n else if (ivrCreated)\r\n { \r\n // If IVR was created, navigate to the page of the newly created IVR.\r\n return ()\r\n }\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n \r\n \r\n \r\n
{ e.preventDefault(); this.createIVR() }}>\r\n \r\n

Create New IVR

\r\n
\r\n \r\n
Generic Settings
\r\n \r\n \r\n \r\n { this.setState({ivrName: value}) }\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n maxLength: 50\r\n }}\r\n />\r\n \r\n \r\n { this.setState({isRoot: (value === \"Yes\")}) }\r\n }\r\n />\r\n \r\n \r\n { this.setState({linkedPhoneNumber: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({parentIVR: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({fallbackQueue: value}); }\r\n }\r\n />\r\n \r\n \r\n\r\n
\r\n\r\n
Audio Settings
\r\n \r\n \r\n \r\n { this.setState({ivrPrompt: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({welcomeVoicePrompt: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({closedVoicePrompt: value}); }\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 withStyles(styles)(NewIVR);","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass IVRDetailsEditDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n updatingIVR: false,\r\n\r\n // Meta data\r\n phoneNumbers: [],\r\n\r\n // Data\r\n ivrName: \"\",\r\n isRoot: \"\",\r\n linkedPhoneNumber: \"\",\r\n parentIVR: \"\",\r\n ivrPrompt: \"\",\r\n welcomeVoicePrompt: \"\",\r\n closedVoicePrompt: \"\",\r\n fallbackQueue: \"\"\r\n }\r\n }\r\n \r\n componentDidMount()\r\n {\r\n this.setStateValues();\r\n }\r\n\r\n setStateValues()\r\n {\r\n const { ivrDetails } = this.props;\r\n\r\n var phoneNumbers = this.props.updateIVRMeta.PhoneNumbers;\r\n\r\n // Add current phone number to selectable phone numbers list.\r\n if (ivrDetails.LinkedPhoneNumber)\r\n {\r\n phoneNumbers.push(ivrDetails.LinkedPhoneNumber)\r\n }\r\n\r\n this.setState({\r\n phoneNumbers: phoneNumbers,\r\n\r\n ivrName: ivrDetails.IVRName ? ivrDetails.IVRName : \"\",\r\n isRoot: ivrDetails.IsRoot ? ivrDetails.IsRoot : \"\",\r\n linkedPhoneNumber: ivrDetails.LinkedPhoneNumber ? ivrDetails.LinkedPhoneNumber : \"\",\r\n parentIVR: ivrDetails.ParentIVR ? ivrDetails.ParentIVR : \"\",\r\n ivrPrompt: ivrDetails.IVRPrompt ? ivrDetails.IVRPrompt : \"\",\r\n welcomeVoicePrompt: ivrDetails.WelcomeVoicePrompt ? ivrDetails.WelcomeVoicePrompt : \"\",\r\n closedVoicePrompt: ivrDetails.ClosedVoicePrompt ? ivrDetails.ClosedVoicePrompt : \"\",\r\n fallbackQueue: ivrDetails.FallbackQueue ? ivrDetails.FallbackQueue : \"\"\r\n })\r\n }\r\n\r\n submitForm()\r\n {\r\n this.setState({\r\n updatingIVR: true\r\n });\r\n \r\n // TODO: authentication\r\n const { ivrName, isRoot, linkedPhoneNumber, parentIVR, ivrPrompt, welcomeVoicePrompt, closedVoicePrompt, fallbackQueue } = this.state;\r\n \r\n // Create request body\r\n var requestBody =\r\n {\r\n IVRName: ivrName,\r\n IsRoot: isRoot,\r\n LinkedPhoneNumber: linkedPhoneNumber,\r\n ParentIVR: parentIVR,\r\n IVRPrompt: ivrPrompt,\r\n WelcomeVoicePrompt: welcomeVoicePrompt, \r\n ClosedVoicePrompt: closedVoicePrompt,\r\n FallbackQueue: fallbackQueue\r\n };\r\n\r\n // Create queue\r\n apiPostJson(\"ucm/ivr/update\", requestBody).then(() => \r\n {\r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n updatingIVR: false\r\n });\r\n\r\n this.props.onSubmitError(error.data);\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { updatingIVR } = this.state;\r\n const { phoneNumbers } = this.state;\r\n const { ivrName, isRoot, linkedPhoneNumber, parentIVR, ivrPrompt, welcomeVoicePrompt, closedVoicePrompt, fallbackQueue } = this.state;\r\n \r\n if (!ivrName)\r\n {\r\n return \r\n }\r\n\r\n return (\r\n
{e.preventDefault(); this.submitForm()}}>\r\n Update IVR\r\n \r\n
Generic Settings
\r\n \r\n \r\n \r\n { this.setState({ivrName: value}) }\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n maxLength: 50,\r\n defaultValue: ivrName,\r\n disabled: true\r\n }}\r\n />\r\n \r\n \r\n { this.setState({isRoot: (value === \"Yes\")}) }\r\n }\r\n />\r\n \r\n \r\n { this.setState({linkedPhoneNumber: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({parentIVR: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({fallbackQueue: value}); }\r\n }\r\n />\r\n \r\n \r\n\r\n
\r\n\r\n
Audio Settings
\r\n \r\n \r\n \r\n { this.setState({ivrPrompt: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({welcomeVoicePrompt: value}); }\r\n }\r\n />\r\n \r\n \r\n { this.setState({closedVoicePrompt: value}); }\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\nIVRDetailsEditDialog.propTypes = {\r\n ivrDetails: PropTypes.object,\r\n updateIVRMeta: PropTypes.object,\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(IVRDetailsEditDialog)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass IVRDetailsDeleteDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n removingIVR: false,\r\n ivrRemoved: false,\r\n\r\n // Data\r\n ivrToRemove: \"\",\r\n }\r\n }\r\n\r\n removeIVR()\r\n {\r\n this.setState({removingIVR: true});\r\n\r\n const { ivrToRemove } = this.state;\r\n\r\n // Remove IVR\r\n apiPost(\"ucm/ivr/remove?ivrName=\" + ivrToRemove).then(() => \r\n {\r\n this.setState(\r\n {\r\n ivrRemoved: true\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingIVR: false\r\n });\r\n\r\n this.props.onSubmitError(error.data);\r\n this.props.onDialogClose();\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { removingIVR } = this.state;\r\n const { ivrRemoved, ivrToRemove } = this.state;\r\n \r\n if (ivrRemoved)\r\n {\r\n return ()\r\n }\r\n \r\n return (\r\n
\r\n {\"Are you sure you want to remove this IVR?\"}\r\n \r\n \r\n All data of this IVR will be lost!\r\n \r\n { this.setState({ ivrToRemove: value}) }\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\nIVRDetailsDeleteDialog.propTypes = {\r\n ivrName: PropTypes.string,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(IVRDetailsDeleteDialog)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\nimport IVRDetailsEditDialog from \"./IVRDetailsEditDialog.jsx\"\r\nimport IVRDetailsDeleteDialog from \"./IVRDetailsDeleteDialog.jsx\"\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nconst AntTabs = withStyles({\r\n root: {\r\n borderBottom: '1px solid #e8e8e8',\r\n },\r\n indicator: {\r\n backgroundColor: '#1890ff',\r\n },\r\n })(Tabs);\r\n\r\nconst AntTab = withStyles(theme => ({\r\n root: {\r\n textTransform: 'none',\r\n minWidth: 72,\r\n fontWeight: theme.typography.fontWeightRegular,\r\n fontFamily: [\r\n '-apple-system',\r\n 'BlinkMacSystemFont',\r\n '\"Segoe UI\"',\r\n 'Roboto',\r\n '\"Helvetica Neue\"',\r\n 'Arial',\r\n 'sans-serif',\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"',\r\n ].join(','),\r\n '&:hover': {\r\n color: '#40a9ff',\r\n opacity: 1,\r\n },\r\n '&$selected': {\r\n color: '#1890ff',\r\n fontWeight: theme.typography.fontWeightMedium,\r\n },\r\n '&:focus': {\r\n color: '#40a9ff',\r\n },\r\n },\r\n selected: {},\r\n }))(props => );\r\n\r\nclass IVRDetails extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoadedDetails: false,\r\n isLoadedMeta: false,\r\n \r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // IVR update meta\r\n updateIVRMeta: null,\r\n\r\n // Dialog\r\n dialogOpen: false,\r\n dialogType: \"\",\r\n\r\n // Tabs\r\n selectedTab: 0,\r\n\r\n // Data\r\n ivrDetails: null\r\n }\r\n }\r\n \r\n componentDidMount()\r\n {\r\n this.getIVRDetails();\r\n this.getUpdateIVRMeta();\r\n }\r\n\r\n selectedTabChanged(newSelectedTab) \r\n {\r\n this.setState({\r\n selectedTab: newSelectedTab\r\n })\r\n }\r\n \r\n getIVRDetails()\r\n {\r\n // TODO: Check fetched ivr\r\n\r\n \r\n // Get queue name from url parameter.\r\n var url = new URL(window.location.href);\r\n var ivrName = url.searchParams.get(\"no\");\r\n\r\n apiGet(\"ucm/ivr/get?ivrName=\" + ivrName).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedDetails:true,\r\n ivrDetails: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedDetails: true,\r\n error: error.data.Message\r\n });\r\n });\r\n }\r\n \r\n getUpdateIVRMeta()\r\n {\r\n // Fetch IVR meta data\r\n apiGet(\"ucm/ivr/meta\").then((result) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedMeta:true,\r\n updateIVRMeta: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedMeta: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n openIVRUpdateDialog() \r\n {\r\n this.setState({ dialogType: \"update\", dialogOpen: true });\r\n }\r\n\r\n openIVRDeleteDialog() \r\n {\r\n this.setState({ dialogType: \"delete\", dialogOpen: true });\r\n }\r\n\r\n toggleDialogOpen = (isOpen) => \r\n {\r\n this.setState({ dialogOpen: !isOpen });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n render() \r\n { \r\n const { error, isLoadedDetails, isLoadedMeta } = this.state;\r\n const { toastColor, toastText, toastOpen } = this.state;\r\n const { updateIVRMeta } = this.state;\r\n const { dialogOpen, dialogType } = this.state;\r\n const { deleteConfirmDialogOpen } = this.state;\r\n const { selectedTab } = this.state;\r\n const { ivrDetails } = this.state;\r\n\r\n const { classes } = this.props; \r\n\r\n if (!isLoadedDetails || !isLoadedMeta)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Dialog */}\r\n this.toggleDialogOpen(dialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {(() => {\r\n switch (dialogType) {\r\n case 'update':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"IVR updated!\"); this.getIVRDetails(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n case 'delete':\r\n return this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n default:\r\n return
;\r\n }\r\n })()}\r\n
\r\n\r\n {/* Details card */}\r\n \r\n \r\n

IVR: {ivrDetails.IVRName}

\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.IVR.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n \r\n : null\r\n }\r\n\r\n
\r\n this.selectedTabChanged(value)}>\r\n \r\n \r\n \r\n \r\n
\r\n\r\n {\r\n selectedTab === 0 &&\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 selectedTab === 1 &&\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 withStyles(styles)(IVRDetails)","import React from \"react\";\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\n\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\n\r\nimport { apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass IVRBusinessHoursAddDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n addingBusinessHours: false,\r\n\r\n // Data\r\n monChecked: false,\r\n tueChecked: false,\r\n wedChecked: false,\r\n thuChecked: false,\r\n friChecked: false,\r\n satChecked: false,\r\n sunChecked: false,\r\n openTime: \"08:30\",\r\n closeTime: \"17:00\"\r\n }\r\n }\r\n \r\n submitForm()\r\n {\r\n this.setState({addingBusinessHours: true})\r\n\r\n // TODO: authentication\r\n const { openTime, closeTime, monChecked, tueChecked, wedChecked, thuChecked, friChecked, satChecked, sunChecked } = this.state;\r\n\r\n // Create selected days array\r\n var selectedDays = [];\r\n\r\n if (monChecked) selectedDays.push(\"MON\");\r\n if (tueChecked) selectedDays.push(\"TUE\");\r\n if (wedChecked) selectedDays.push(\"WED\");\r\n if (thuChecked) selectedDays.push(\"THU\");\r\n if (friChecked) selectedDays.push(\"FRI\");\r\n if (satChecked) selectedDays.push(\"SAT\");\r\n if (sunChecked) selectedDays.push(\"SUN\");\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n IVRName: this.props.ivrName,\r\n OpenTime : openTime,\r\n ClosedTime : closeTime,\r\n Days : selectedDays\r\n }\r\n\r\n // Add business hours\r\n apiPostJson(\"ucm/ivr/hours/add\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n addingBusinessHours: false\r\n });\r\n \r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n addingBusinessHours: false\r\n });\r\n\r\n this.props.onSubmitError(error.data);\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { classes } = this.props; \r\n const { addingBusinessHours } = this.state;\r\n const { openTime, closeTime, monChecked, tueChecked, wedChecked, thuChecked, friChecked, satChecked, sunChecked } = this.state;\r\n\r\n return (\r\n
{e.preventDefault(); this.submitForm();}}>\r\n Add new business hour record to IVR.\r\n \r\n \r\n Please, enter the desired hours below.\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ monChecked: event.target.checked })}/>}\r\n label=\"Monday\"\r\n />\r\n this.setState({ tueChecked: event.target.checked })}/>}\r\n label=\"Tuesday\"\r\n />\r\n this.setState({ wedChecked: event.target.checked })}/>}\r\n label=\"Wednesday\"\r\n />\r\n this.setState({ thuChecked: event.target.checked })}/>}\r\n label=\"Thursday\"\r\n />\r\n this.setState({ friChecked: event.target.checked })}/>}\r\n label=\"Friday\"\r\n />\r\n \r\n \r\n \r\n \r\n this.setState({ satChecked: event.target.checked })}/>}\r\n label=\"Saturday\"\r\n />\r\n this.setState({ sunChecked: event.target.checked })}/>}\r\n label=\"Sunday\"\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.setState({ openTime: value })\r\n }\r\n inputProps={{\r\n autoFocus: true,\r\n type: \"time\",\r\n defaultValue: openTime\r\n }}\r\n />\r\n \r\n\r\n \r\n this.setState({ closeTime: value })\r\n }\r\n inputProps={{\r\n type: \"time\",\r\n defaultValue: closeTime\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\nIVRBusinessHoursAddDialog.propTypes = {\r\n ivrName: PropTypes.string,\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(IVRBusinessHoursAddDialog)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass IVRBusinessHoursDeleteDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n removingBusinessHours: false\r\n }\r\n }\r\n\r\n removeIVRBusinessHours()\r\n {\r\n this.setState({removingBusinessHours: true});\r\n\r\n const { businessHoursID } = this.props;\r\n \r\n // Remove IVR\r\n apiPost(\"ucm/ivr/hours/remove?businessHoursID=\" + businessHoursID).then(() => \r\n {\r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingBusinessHours: false\r\n });\r\n\r\n this.props.onSubmitError(error.data.Message);\r\n this.props.onDialogClose();\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { removingBusinessHours } = this.state;\r\n\r\n return (\r\n
\r\n {\"Are you sure you want to remove these business hours from the IVR?\"}\r\n \r\n \r\n This will not affect other IVR's.\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n ); \r\n }\r\n}\r\n\r\nIVRBusinessHoursDeleteDialog.propTypes = {\r\n businessHoursID: PropTypes.number,\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(IVRBusinessHoursDeleteDialog)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport Divider from '@material-ui/core/Divider';\r\nimport ScheduleIcon from \"@material-ui/icons/Schedule\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\nimport IVRBusinessHoursAddDialog from \"./IVRBusinessHoursAddDialog.jsx\"\r\nimport IVRBusinessHoursDeleteDialog from \"./IVRBusinessHoursDeleteDialog.jsx\"\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nconst AntTabs = withStyles({\r\n root: {\r\n borderBottom: '1px solid #e8e8e8',\r\n },\r\n indicator: {\r\n backgroundColor: '#1890ff',\r\n },\r\n })(Tabs);\r\n\r\nconst AntTab = withStyles(theme => ({\r\n root: {\r\n textTransform: 'none',\r\n minWidth: 72,\r\n fontWeight: theme.typography.fontWeightRegular,\r\n fontFamily: [\r\n '-apple-system',\r\n 'BlinkMacSystemFont',\r\n '\"Segoe UI\"',\r\n 'Roboto',\r\n '\"Helvetica Neue\"',\r\n 'Arial',\r\n 'sans-serif',\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"',\r\n ].join(','),\r\n '&:hover': {\r\n color: '#40a9ff',\r\n opacity: 1,\r\n },\r\n '&$selected': {\r\n color: '#1890ff',\r\n fontWeight: theme.typography.fontWeightMedium,\r\n },\r\n '&:focus': {\r\n color: '#40a9ff',\r\n },\r\n },\r\n selected: {},\r\n }))(props => );\r\n\r\nclass IVRBusinessHours extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoaded: false,\r\n \r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Dialog\r\n dialogOpen: false,\r\n dialogType: \"\",\r\n\r\n // Data\r\n hours: [],\r\n selectedBusinessHours: null\r\n }\r\n }\r\n \r\n componentDidMount()\r\n {\r\n this.getIVRBusinessHours();\r\n }\r\n\r\n openBusinessHoursAddDialog() \r\n {\r\n this.setState({ dialogType: \"add\", dialogOpen: true });\r\n }\r\n\r\n openBusinessHoursDeleteDialog(selectedBusinessHours) \r\n {\r\n this.setState({ selectedBusinessHours: selectedBusinessHours, dialogType: \"delete\", dialogOpen: true });\r\n }\r\n\r\n toggleDialogOpen = (isOpen) => \r\n {\r\n this.setState({ dialogOpen: !isOpen });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n getIVRBusinessHours()\r\n {\r\n // TODO: Check fetched ivr\r\n\r\n // Get IVR name from url parameter.\r\n var url = new URL(window.location.href);\r\n var ivrName = url.searchParams.get(\"no\");\r\n\r\n apiGet(\"ucm/ivr/hours/get?ivrName=\" + ivrName).then((result) => \r\n {\r\n var hoursList = [];\r\n\r\n for (var i = 0; i < result.data.length; i++)\r\n {\r\n var hoursRecord = result.data[i];\r\n\r\n var newHoursRecord = \r\n {\r\n ID: hoursRecord.ID,\r\n DayOfWeek: hoursRecord.DayOfWeek,\r\n OpenHours: hoursRecord.OpenTime + \" - \" + hoursRecord.ClosedTime\r\n }\r\n\r\n hoursList.push(newHoursRecord);\r\n }\r\n\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n hours: hoursList\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data.Message\r\n });\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { error, isLoaded } = this.state;\r\n const { toastColor, toastText, toastOpen } = this.state;\r\n const { dialogOpen, dialogType } = this.state;\r\n const { hours, selectedBusinessHours } = this.state;\r\n\r\n const { classes } = this.props; \r\n\r\n if (!isLoaded)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n \r\n // Get IVR name from url parameter.\r\n var url = new URL(window.location.href);\r\n var ivrName = url.searchParams.get(\"no\");\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Dialog */}\r\n this.toggleDialogOpen(dialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {(() => {\r\n switch (dialogType) {\r\n case 'add':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"Business hours added!\"); this.getIVRBusinessHours(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n case 'delete':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"Business hours removed!\"); this.getIVRBusinessHours(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n default:\r\n return
;\r\n }\r\n })()}\r\n
\r\n\r\n {/* Business Hours card */}\r\n \r\n \r\n \r\n \r\n

Business Hours

\r\n

Business hours per day

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.IVR.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n : null\r\n } \r\n\r\n { this.openBusinessHoursDeleteDialog(clickedItem); }\r\n : null\r\n }\r\n />\r\n \r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(IVRBusinessHours)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass IVRMenuOptionsAddDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n addingMenuOption: false,\r\n\r\n // Data\r\n menuOptionIndex: 0,\r\n actionType: \"\",\r\n action: \"\",\r\n acknowledgeAudio: \"\"\r\n }\r\n }\r\n \r\n submitForm()\r\n {\r\n this.setState({\r\n addingMenuOption: true\r\n });\r\n \r\n // TODO: authentication\r\n const { menuOptionIndex, actionType, action, acknowledgeAudio } = this.state;\r\n \r\n // Create request body\r\n var requestBody =\r\n {\r\n Option: menuOptionIndex,\r\n ActionType: actionType,\r\n Action: action,\r\n AcknowledgeAudio: acknowledgeAudio,\r\n IVRname: this.props.ivrName\r\n };\r\n\r\n if (this.props.existingOptionIndices.includes(Number(menuOptionIndex)))\r\n {\r\n this.props.onSubmitError(\"Menu option index is already in use.\");\r\n\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n addingMenuOption: false\r\n });\r\n\r\n return;\r\n }\r\n \r\n // Create menu option\r\n apiPostJson(\"ucm/ivr/options/add\", requestBody).then(() => \r\n {\r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n addingMenuOption: false\r\n });\r\n\r\n this.props.onSubmitError(error.data);\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { addingMenuOption } = this.state;\r\n const { actionType, action, acknowledgeAudio } = this.state;\r\n\r\n return (\r\n
{e.preventDefault(); this.submitForm()}}>\r\n Add Menu Option\r\n \r\n { this.setState({menuOptionIndex: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9][0-9]?$|^100$\",\r\n maxLength: 3,\r\n title: \"Only numbers between 0 and 100 allowed\",\r\n defaultValue: 0,\r\n autoFocus: true\r\n }}\r\n />\r\n\r\n { this.setState({actionType: value, action: \"\"}); }\r\n }\r\n />\r\n\r\n {(() => {\r\n switch (actionType) {\r\n case \"RETURN_TO_PARENT_IVR\":\r\n return
\r\n \r\n case \"JUMP_TO_IVR\":\r\n return { this.setState({action: value}); }\r\n }\r\n />\r\n \r\n case \"JUMP_TO_QUEUE\":\r\n return { this.setState({action: value}); }\r\n }\r\n />\r\n \r\n case \"REPEAT_CURRENT_IVR\":\r\n return
\r\n \r\n case \"HUNT_AGENT\":\r\n return { this.setState({action: value}); }\r\n }\r\n />\r\n\r\n default:\r\n return
\r\n }\r\n })()} \r\n\r\n { this.setState({acknowledgeAudio: value}); }\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\nIVRMenuOptionsAddDialog.propTypes = {\r\n ivrMenuOptionsMeta: PropTypes.object,\r\n ivrName: PropTypes.string,\r\n existingOptionIndices: PropTypes.arrayOf(PropTypes.number),\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(IVRMenuOptionsAddDialog)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass IVRMenuOptionsEditDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n updatingMenuOption: false,\r\n\r\n // Data\r\n id: -1,\r\n menuOptionIndex: 0,\r\n actionType: \"\",\r\n action: \"\",\r\n acknowledgeAudio: \"\"\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n this.setStateValues();\r\n }\r\n\r\n setStateValues()\r\n {\r\n const { menuOptionData, ivrMenuOptionsMeta } = this.props;\r\n\r\n // Map provided ActionType to the correct keys\r\n var actionType = menuOptionData.ActionType ? menuOptionData.ActionType : \"\";\r\n\r\n for(var i = 0; i < ivrMenuOptionsMeta.ActionTypes.length; i++)\r\n {\r\n if (ivrMenuOptionsMeta.ActionTypes[i].Value === actionType)\r\n {\r\n actionType = ivrMenuOptionsMeta.ActionTypes[i].Key;\r\n }\r\n }\r\n\r\n this.setState({\r\n id: menuOptionData.ID,\r\n menuOptionIndex: menuOptionData.Option,\r\n actionType: actionType,\r\n action: menuOptionData.Action ? menuOptionData.Action : \"\",\r\n acknowledgeAudio: menuOptionData.AcknowledgeAudio ? menuOptionData.AcknowledgeAudio : \"\"\r\n })\r\n }\r\n \r\n submitForm()\r\n {\r\n this.setState({\r\n updatingMenuOption: true\r\n });\r\n \r\n // TODO: authentication\r\n const { id, menuOptionIndex, actionType, action, acknowledgeAudio } = this.state;\r\n \r\n // Create request body\r\n var requestBody =\r\n {\r\n ID: id,\r\n Option: menuOptionIndex,\r\n ActionType: actionType,\r\n Action: action,\r\n AcknowledgeAudio: acknowledgeAudio,\r\n IVRname: this.props.ivrName\r\n };\r\n \r\n // Check if option hasn't already been defined (unless it hasn't been changed).\r\n if (Number(menuOptionIndex) !== this.props.menuOptionData.Option)\r\n {\r\n if (this.props.existingOptionIndices.includes(Number(menuOptionIndex)))\r\n {\r\n this.props.onSubmitError(\"Menu option index is already in use.\");\r\n \r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n updatingMenuOption: false\r\n });\r\n \r\n return;\r\n }\r\n }\r\n \r\n // Create menu option\r\n apiPostJson(\"ucm/ivr/options/update\", requestBody).then(() => \r\n {\r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n updatingMenuOption: false\r\n });\r\n\r\n this.props.onSubmitError(error.data);\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { updatingMenuOption } = this.state;\r\n const { id, menuOptionIndex, actionType, action, acknowledgeAudio } = this.state;\r\n \r\n if (id <= 0)\r\n {\r\n return \r\n }\r\n\r\n return (\r\n
{e.preventDefault(); this.submitForm()}}>\r\n Update Menu Option\r\n \r\n { this.setState({menuOptionIndex: value}) }\r\n }\r\n inputProps={{\r\n pattern: \"^[0-9][0-9]?$|^100$\",\r\n maxLength: 3,\r\n title: \"Only numbers between 0 and 100 allowed\",\r\n defaultValue: menuOptionIndex,\r\n autoFocus: true\r\n }}\r\n />\r\n\r\n { this.setState({actionType: value, action: \"\"}); }\r\n }\r\n />\r\n\r\n {(() => {\r\n switch (actionType) {\r\n case \"RETURN_TO_PARENT_IVR\":\r\n return
\r\n \r\n case \"JUMP_TO_IVR\":\r\n return { this.setState({action: value}); }\r\n }\r\n />\r\n \r\n case \"JUMP_TO_QUEUE\":\r\n return { this.setState({action: value}); }\r\n }\r\n />\r\n \r\n case \"REPEAT_CURRENT_IVR\":\r\n return
\r\n \r\n case \"HUNT_AGENT\":\r\n return { this.setState({action: value}); }\r\n }\r\n />\r\n\r\n default:\r\n return
\r\n }\r\n })()} \r\n\r\n { this.setState({acknowledgeAudio: value}); }\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\nIVRMenuOptionsEditDialog.propTypes = {\r\n ivrMenuOptionsMeta: PropTypes.object,\r\n ivrName: PropTypes.string,\r\n menuOptionData: PropTypes.object,\r\n existingOptionIndices: PropTypes.arrayOf(PropTypes.number),\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(IVRMenuOptionsEditDialog)","import React from \"react\";\r\nimport { Redirect } from 'react-router-dom'\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport RefreshIcon from \"@material-ui/icons/Refresh\";\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet, apiPost, apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass IVRMenuOptionsDeleteDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n removingMenuOption: false\r\n }\r\n }\r\n\r\n removeIVRMenuOption()\r\n {\r\n this.setState({removingMenuOption: true});\r\n\r\n const { menuOptionID } = this.props;\r\n\r\n // Remove IVR\r\n apiPost(\"ucm/ivr/options/remove?menuOptionID=\" + menuOptionID).then(() => \r\n {\r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingMenuOption: false\r\n });\r\n\r\n this.props.onSubmitError(error.data);\r\n this.props.onDialogClose();\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { removingMenuOption } = this.state;\r\n\r\n return (\r\n
\r\n {\"Are you sure you want to remove this IVR menu option from the IVR?\"}\r\n \r\n \r\n This will not affect other IVR's.\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n ); \r\n }\r\n}\r\n\r\nIVRMenuOptionsDeleteDialog.propTypes = {\r\n menuOptionID: PropTypes.number,\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(IVRMenuOptionsDeleteDialog)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport DialpadIcon from \"@material-ui/icons/Dialpad\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\n\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\nimport IVRMenuOptionsAddDialog from \"./IVRMenuOptionsAddDialog\"\r\nimport IVRMenuOptionsEditDialog from \"./IVRMenuOptionsEditDialog\"\r\nimport IVRMenuOptionsDeleteDialog from \"./IVRMenuOptionsDeleteDialog\"\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nconst AntTabs = withStyles({\r\n root: {\r\n borderBottom: '1px solid #e8e8e8',\r\n },\r\n indicator: {\r\n backgroundColor: '#1890ff',\r\n },\r\n })(Tabs);\r\n\r\nconst AntTab = withStyles(theme => ({\r\n root: {\r\n textTransform: 'none',\r\n minWidth: 72,\r\n fontWeight: theme.typography.fontWeightRegular,\r\n fontFamily: [\r\n '-apple-system',\r\n 'BlinkMacSystemFont',\r\n '\"Segoe UI\"',\r\n 'Roboto',\r\n '\"Helvetica Neue\"',\r\n 'Arial',\r\n 'sans-serif',\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"',\r\n ].join(','),\r\n '&:hover': {\r\n color: '#40a9ff',\r\n opacity: 1,\r\n },\r\n '&$selected': {\r\n color: '#1890ff',\r\n fontWeight: theme.typography.fontWeightMedium,\r\n },\r\n '&:focus': {\r\n color: '#40a9ff',\r\n },\r\n },\r\n selected: {},\r\n }))(props => );\r\n\r\nclass IVRMenuOptions extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoadedOptions: false,\r\n isLoadedMeta: false,\r\n \r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Meta,\r\n ivrMenuOptionsMeta : null,\r\n\r\n // Dialog\r\n dialogOpen: false,\r\n dialogType: \"\",\r\n\r\n // Data\r\n ivrMenuOptions: [],\r\n selectedMenuOption: null\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n this.getIVRMenuOptionsMeta();\r\n this.getIVRMenuOptions()\r\n }\r\n\r\n getIVRMenuOptionsMeta()\r\n {\r\n // Fetch IVR meta data\r\n apiGet(\"ucm/ivr/options/meta\").then((result) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedMeta:true,\r\n ivrMenuOptionsMeta: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedMeta: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n getIVRMenuOptions()\r\n {\r\n // TODO: Check fetched ivr\r\n\r\n // Get IVR name from url parameter.\r\n var url = new URL(window.location.href);\r\n var ivrName = url.searchParams.get(\"no\");\r\n\r\n apiGet(\"ucm/ivr/options/get?ivrName=\" + ivrName).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedOptions:true,\r\n ivrMenuOptions: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedOptions: true,\r\n error: error.data.Message\r\n });\r\n });\r\n }\r\n\r\n openMenuOptionAddDialog() \r\n {\r\n this.setState({ dialogType: \"add\", dialogOpen: true });\r\n }\r\n\r\n openMenuOptionUpdateDialog(selectedMenuOption) \r\n {\r\n this.setState({ selectedMenuOption: selectedMenuOption, dialogType: \"update\", dialogOpen: true });\r\n }\r\n\r\n openMenuOptionDeleteDialog(selectedMenuOption) \r\n {\r\n this.setState({ selectedMenuOption: selectedMenuOption, dialogType: \"delete\", dialogOpen: true });\r\n }\r\n\r\n toggleDialogOpen = (isOpen) => \r\n {\r\n this.setState({ dialogOpen: !isOpen });\r\n }\r\n\r\n getExistingMenuOptionIndices()\r\n { \r\n const { ivrMenuOptions } = this.state;\r\n\r\n var menuOptionIndices = [];\r\n\r\n for(var i = 0; i < ivrMenuOptions.length; i++)\r\n {\r\n menuOptionIndices[i] = ivrMenuOptions[i].Option;\r\n }\r\n\r\n return menuOptionIndices;\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n render() \r\n { \r\n const { error, isLoadedOptions, isLoadedMeta } = this.state;\r\n const { toastColor, toastText, toastOpen } = this.state;\r\n const { ivrMenuOptionsMeta } = this.state;\r\n const { dialogOpen, dialogType } = this.state;\r\n const { ivrMenuOptions, selectedMenuOption } = this.state;\r\n\r\n const { classes } = this.props; \r\n\r\n if (!isLoadedOptions || !isLoadedMeta)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n \r\n // Get IVR name from url parameter.\r\n var url = new URL(window.location.href);\r\n var ivrName = url.searchParams.get(\"no\");\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Dialog */}\r\n this.toggleDialogOpen(dialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {(() => {\r\n switch (dialogType) {\r\n case 'add':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"IVR menu option added!\"); this.getIVRMenuOptions(); this.getIVRMenuOptionsMeta(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n case 'update':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"IVR menu option updated!\"); this.getIVRMenuOptions(); this.getIVRMenuOptionsMeta(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n case 'delete':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"IVR menu option removed!\"); this.getIVRMenuOptions(); this.getIVRMenuOptionsMeta(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n default:\r\n return
;\r\n }\r\n })()}\r\n
\r\n\r\n {/* Menu options overview card */}\r\n \r\n \r\n \r\n \r\n

IVR Menu Options

\r\n

IVR menu options assigned to currently viewing IVR.

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.IVR.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n : null\r\n } \r\n\r\n { this.openMenuOptionDeleteDialog(clickedItem) }\r\n :\r\n null\r\n }\r\n onEditButtonClicked=\r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.IVR.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (clickedItem) => { this.openMenuOptionUpdateDialog(clickedItem); }\r\n :\r\n null\r\n }\r\n />\r\n \r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(IVRMenuOptions)","import React from \"react\";\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nimport { apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass IVRHolidaysAddDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n addingHoliday: false,\r\n\r\n // Data\r\n selectedHolidayID: -1\r\n }\r\n }\r\n \r\n submitForm()\r\n {\r\n this.setState({addingHoliday: true})\r\n\r\n // TODO: authentication\r\n const { selectedHolidayID } = this.state;\r\n\r\n // Create request body\r\n var requestBody = \r\n {\r\n HolidayID : selectedHolidayID,\r\n IVRName : this.props.ivrName\r\n }\r\n\r\n // Add holiday\r\n apiPostJson(\"ucm/ivr/holidays/add\", requestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n addingHoliday: false\r\n });\r\n\r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n addingHoliday: false\r\n });\r\n\r\n this.props.onSubmitError(error.data);\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { addingHoliday } = this.state;\r\n const { selectedHolidayID } = this.state;\r\n\r\n return (\r\n
{e.preventDefault(); this.submitForm()}}>\r\n Assign holiday to IVR\r\n \r\n \r\n Please, select the holiday you would like to assign to the IVR.\r\n \r\n\r\n { this.setState({selectedHolidayID: value}); }\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\nIVRHolidaysAddDialog.propTypes = {\r\n ivrName: PropTypes.string,\r\n allHolidays: PropTypes.array,\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(IVRHolidaysAddDialog)","import React from \"react\";\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\n\r\nimport { apiPostJson } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass IVRHolidaysDeleteDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n removingHoliday: false\r\n }\r\n }\r\n\r\n removeHoliday()\r\n {\r\n this.setState({removingHoliday: true});\r\n\r\n const { selectedHolidayID, ivrName } = this.props;\r\n \r\n var requestBody = \r\n {\r\n HolidayID : selectedHolidayID,\r\n IVRName : ivrName\r\n };\r\n\r\n // Remove IVR\r\n apiPostJson(\"ucm/ivr/holidays/remove\", requestBody).then(() => \r\n {\r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingHoliday: false\r\n });\r\n\r\n this.props.onSubmitError(error.data.Message);\r\n this.props.onDialogClose();\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { removingHoliday } = this.state;\r\n\r\n return (\r\n
\r\n {\"Are you sure you want to remove this holiday from the IVR?\"}\r\n \r\n \r\n This will not affect other IVR's.\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n ); \r\n }\r\n}\r\n\r\nIVRHolidaysDeleteDialog.propTypes = {\r\n selectedHolidayID: PropTypes.number,\r\n ivrName: PropTypes.string,\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(IVRHolidaysDeleteDialog)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport HolidayIcon from \"@material-ui/icons/Today\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\n\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\n\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\nimport IVRHolidaysAddDialog from \"./IVRHolidaysAddDialog.jsx\"\r\nimport IVRHolidaysDeleteDialog from \"./IVRHolidaysDeleteDialog.jsx\"\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\nconst AntTabs = withStyles({\r\n root: {\r\n borderBottom: '1px solid #e8e8e8',\r\n },\r\n indicator: {\r\n backgroundColor: '#1890ff',\r\n },\r\n })(Tabs);\r\n\r\nconst AntTab = withStyles(theme => ({\r\n root: {\r\n textTransform: 'none',\r\n minWidth: 72,\r\n fontWeight: theme.typography.fontWeightRegular,\r\n fontFamily: [\r\n '-apple-system',\r\n 'BlinkMacSystemFont',\r\n '\"Segoe UI\"',\r\n 'Roboto',\r\n '\"Helvetica Neue\"',\r\n 'Arial',\r\n 'sans-serif',\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"',\r\n ].join(','),\r\n '&:hover': {\r\n color: '#40a9ff',\r\n opacity: 1,\r\n },\r\n '&$selected': {\r\n color: '#1890ff',\r\n fontWeight: theme.typography.fontWeightMedium,\r\n },\r\n '&:focus': {\r\n color: '#40a9ff',\r\n },\r\n },\r\n selected: {},\r\n }))(props => );\r\n\r\nclass IVRHolidays extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoadedAllHolidays: false,\r\n isLoadedIVRHolidays: false,\r\n \r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Dialog\r\n dialogOpen: false,\r\n dialogType: \"\",\r\n\r\n // Meta\r\n allHolidays: [],\r\n\r\n // Data\r\n holidays: [],\r\n selectedHoliday: null\r\n }\r\n }\r\n \r\n componentDidMount()\r\n {\r\n this.getAllHolidays();\r\n this.getIVRHolidays();\r\n }\r\n\r\n openHolidaysAddDialog() \r\n {\r\n this.setState({ dialogType: \"add\", dialogOpen: true });\r\n }\r\n\r\n openHolidaysDeleteDialog(selectedHoliday) \r\n {\r\n this.setState({ selectedHoliday: selectedHoliday, dialogType: \"delete\", dialogOpen: true });\r\n }\r\n\r\n toggleDialogOpen = (isOpen) => \r\n {\r\n this.setState({ dialogOpen: !isOpen });\r\n }\r\n\r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n getAllHolidays()\r\n {\r\n // Check if user has permission to fetch customer holidays. If not, leave holidays array empty.\r\n if (!PMUtils.userHasAllRequiredPermissions([\"UCALLMANAGER.IVR.EDIT\"], globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoadedAllHolidays: true,\r\n allHolidays: []\r\n });\r\n\r\n return;\r\n }\r\n\r\n // Get customer holidays\r\n apiGet(\"ucm/holidays\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedAllHolidays: true,\r\n allHolidays: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedAllHolidays: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n getIVRHolidays()\r\n {\r\n // Get IVR name from url parameter.\r\n var url = new URL(window.location.href);\r\n var ivrName = url.searchParams.get(\"no\");\r\n\r\n apiGet(\"ucm/ivr/holidays/get?ivrName=\" + ivrName).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoadedIVRHolidays: true,\r\n holidays: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoadedIVRHolidays: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { error, isLoadedAllHolidays, isLoadedIVRHolidays } = this.state;\r\n const { toastColor, toastText, toastOpen } = this.state;\r\n const { dialogOpen, dialogType } = this.state;\r\n const { allHolidays } = this.state;\r\n const { holidays, selectedHoliday } = this.state;\r\n\r\n const { classes } = this.props; \r\n\r\n if (!isLoadedAllHolidays || !isLoadedIVRHolidays)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n // Get IVR name from url parameter.\r\n var url = new URL(window.location.href);\r\n var ivrName = url.searchParams.get(\"no\");\r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Dialog */}\r\n this.toggleDialogOpen(dialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {(() => {\r\n switch (dialogType) {\r\n case 'add':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"Holiday added!\"); this.getIVRHolidays(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n case 'delete':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"Holiday removed!\"); this.getIVRHolidays(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n default:\r\n return
;\r\n }\r\n })()}\r\n
\r\n\r\n {/* Business Hours card */}\r\n \r\n \r\n \r\n \r\n

Holidays

\r\n

Holidays linked to IVR

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.IVR.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n : null\r\n } \r\n\r\n { this.openHolidaysDeleteDialog(clickedItem); }\r\n : null\r\n }\r\n isSortable={true}\r\n initialOrderBy={\"Date\"}\r\n tableDateColumns={[\"Date\"]}\r\n />\r\n \r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(IVRHolidays)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\nimport IVRDetails from \"views/UCallManager/IVR/IVRDetails/SubViews/IVRDetails.jsx\";\r\nimport IVRBusinessHours from \"views/UCallManager/IVR/IVRDetails/SubViews/IVRBusinessHours.jsx\";\r\nimport IVRMenuOptions from \"views/UCallManager/IVR/IVRDetails/SubViews/IVRMenuOptions.jsx\";\r\nimport IVRHolidays from \"views/UCallManager/IVR/IVRDetails/SubViews/IVRHolidays.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.IVR.VIEW\",\r\n \"UCALLMANAGER.IVR.EDIT\"\r\n]\r\n\r\n// ClassName\r\nclass IVRDetailsOverviewPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) || !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n error: \"Access denied\"\r\n });\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoaded: true\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { isLoaded, error } = this.state;\r\n\r\n if (!isLoaded)\r\n { \r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n \r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\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 withStyles(styles)(IVRDetailsOverviewPage)","import React from \"react\";\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport PublishIcon from '@material-ui/icons/Publish';\r\nimport AlertIcon from \"@material-ui/icons/ReportProblemOutlined\"\r\n\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nimport { apiPostFormData } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass AudioLibraryAddDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n uploadingFiles: false,\r\n\r\n selectedFilesText: \"No file(s) selected.\",\r\n warningText: \"\"\r\n }\r\n }\r\n \r\n submitForm()\r\n {\r\n this.setState({uploadingFiles: true})\r\n\r\n // Create request body\r\n var formDataRequestBody = new FormData();\r\n\r\n var filesToUpload = document.getElementById(\"file-upload\").files;\r\n\r\n for (var i = 0; i < filesToUpload.length; i++) { \r\n var file = filesToUpload[i];\r\n\r\n if (file.size > 15000000)\r\n {\r\n this.setState({ uploadingFiles: false });\r\n\r\n this.props.onSubmitError(\"Oops, file size can not be bigger than 15 MB.\");\r\n return;\r\n }\r\n else if (file.type != \"audio/wav\")\r\n {\r\n this.setState({ uploadingFiles: false });\r\n\r\n this.props.onSubmitError(\"Oops, you can only upload .wav files.\");\r\n return;\r\n }\r\n\r\n formDataRequestBody.append(\"attachments\", file);\r\n }\r\n\r\n // Upload new audio file\r\n apiPostFormData(\"ucm/audio/add\", formDataRequestBody).then(() => \r\n {\r\n this.setState(\r\n {\r\n uploadingFiles: false\r\n }); \r\n\r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n uploadingFiles: false\r\n });\r\n\r\n this.props.onSubmitError(error.data);\r\n });\r\n }\r\n\r\n setSelectedFilesText = () =>\r\n {\r\n var selectedFilesText = \"\";\r\n var warningTextBase = \"The following audio files already exist and will be overwritten: \";\r\n var warningText = \"\";\r\n var fileInput = document.getElementById(\"file-upload\");\r\n var existingAudioFiles = this.props.existingAudioFiles.map(function (file) {\r\n return file.Filename;\r\n });\r\n \r\n if( fileInput.files && fileInput.files.length > 1 )\r\n {\r\n var fileSize = 0;\r\n\r\n for (var i = 0; i < fileInput.files.length; i++)\r\n {\r\n fileSize += parseFloat((fileInput.files[i].size / 1000000).toFixed(2));\r\n\r\n if (existingAudioFiles.includes(fileInput.files[i].name))\r\n {\r\n if (warningText === \"\")\r\n {\r\n warningText += fileInput.files[i].name;\r\n }\r\n else \r\n {\r\n warningText += \", \" + fileInput.files[i].name;\r\n }\r\n }\r\n }\r\n\r\n selectedFilesText = fileInput.files.length + \" files selected (\" + fileSize + \" MB).\"; \r\n }\r\n else\r\n {\r\n selectedFilesText = fileInput.value.split( '\\\\' ).pop() + \" (\" + parseFloat((fileInput.files[0].size / 1000000).toFixed(2)) + \" MB).\";\r\n\r\n if (existingAudioFiles.includes(fileInput.files[0].name))\r\n {\r\n warningText += fileInput.files[0].name;\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedFilesText: selectedFilesText,\r\n warningText: warningText ? warningTextBase + warningText : \"\"\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { uploadingFiles } = this.state;\r\n const { selectedFilesText, warningText } = this.state;\r\n\r\n return (\r\n
{e.preventDefault(); this.submitForm()}}>\r\n Upload new audio file(s)\r\n \r\n {/* TODO: Create reusable control */}\r\n

Please note, the files need to match the following criteria:

\r\n Maximum bitrate: 8000Khz
\r\n Audio stream: Mono
\r\n File type: WAV

\r\n
\r\n \r\n
\r\n \r\n {selectedFilesText}\r\n\r\n {\r\n warningText ?


{warningText}

: null\r\n }\r\n\r\n this.setSelectedFilesText()}> \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\nAudioLibraryAddDialog.propTypes = {\r\n existingAudioFiles: PropTypes.array,\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(AudioLibraryAddDialog)","import React from \"react\";\r\nimport PropTypes from 'prop-types';\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\n\r\nimport { apiPost } from \"utils/webRequestUtils.jsx\";\r\n\r\nconst styles = theme => ({\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n },\r\n responsiveDialog:\r\n {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"-33px !important\",\r\n marginRight: \"-33px !important\"\r\n },\r\n }\r\n});\r\n\r\n\r\nclass AudioLibraryDeleteDialog extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // State\r\n removingAudioFile: false\r\n }\r\n }\r\n\r\n removeAudioFile()\r\n {\r\n this.setState({removingAudioFile: true});\r\n\r\n const { audioFileName } = this.props;\r\n \r\n // Remove audio file\r\n apiPost(\"ucm/audio/remove?audioFileName=\" + audioFileName).then(() => \r\n {\r\n this.props.onSubmitSuccess();\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n //TODO: User friendly error.\r\n removingAudioFile: false\r\n });\r\n \r\n this.props.onSubmitError(error.data);\r\n this.props.onDialogClose();\r\n });\r\n }\r\n\r\n render() \r\n { \r\n const { removingAudioFile } = this.state;\r\n\r\n return (\r\n
\r\n {\"Are you sure you want to remove this audio file?\"}\r\n \r\n \r\n This action can't be undone. \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n ); \r\n }\r\n}\r\n\r\nAudioLibraryDeleteDialog.propTypes = {\r\n audioFileName: PropTypes.string,\r\n onSubmitSuccess: PropTypes.func,\r\n onSubmitError: PropTypes.func,\r\n onDialogClose: PropTypes.func\r\n };\r\n\r\nexport default withStyles(styles)(AudioLibraryDeleteDialog)","import React from \"react\";\r\nimport { NavLink } from 'react-router-dom'\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AudioIcon from '@material-ui/icons/Equalizer';\r\nimport Dialog from '@material-ui/core/Dialog';\r\n\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Snackbar from \"components/Snackbar/Snackbar.jsx\";\r\n\r\nimport AudioLibraryAddDialog from \"./AudioLibraryAddDialog.jsx\";\r\nimport AudioLibraryDeleteDialog from \"./AudioLibraryDeleteDialog.jsx\";\r\n\r\n// Extra libs\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [ \r\n \"UCALLMANAGER.IVR.VIEW\",\r\n \"UCALLMANAGER.IVR.EDIT\",\r\n \"UCALLMANAGER.AUDIOLIBRARY.EDIT\"\r\n]\r\n\r\nclass AudioLibraryOverviewPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n // Component loading\r\n error: null,\r\n isLoaded: false,\r\n \r\n // Toast\r\n toastOpen: false,\r\n toastColor: \"success\",\r\n toastText: \"\",\r\n\r\n // Dialog\r\n dialogOpen: false,\r\n dialogType: \"\",\r\n\r\n // Data\r\n audioFiles: [],\r\n selectedAudioFile: \"\"\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) || !PMUtils.userHasAnyRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.getAudioFiles();\r\n }\r\n\r\n getAudioFiles = () =>\r\n {\r\n // Get activities of ticket\r\n apiGet(\"ucm/audio/get-meta\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n audioFiles: result.data\r\n });\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n \r\n openAudioFileAddDialog() \r\n {\r\n this.setState({ dialogType: \"add\", dialogOpen: true });\r\n }\r\n\r\n openAudioFileDeleteDialog(selectedAudioFile) \r\n {console.log(selectedAudioFile)\r\n this.setState({ selectedAudioFile: selectedAudioFile, dialogType: \"delete\", dialogOpen: true });\r\n }\r\n\r\n toggleDialogOpen = (isOpen) => \r\n {\r\n this.setState({ dialogOpen: !isOpen });\r\n }\r\n \r\n // TODO: Check if this method is reusable in other classes.\r\n showNotification = (toastColor, toastText) =>\r\n {\r\n this.setState(\r\n {\r\n toastOpen: true,\r\n toastColor: toastColor,\r\n toastText: toastText\r\n });\r\n\r\n this.alertTimeout = setTimeout(\r\n function() \r\n {\r\n this.setState(\r\n {\r\n toastOpen: false\r\n });\r\n }.bind(this),\r\n 3000\r\n );\r\n }\r\n\r\n render() \r\n {\r\n const { classes } = this.props;\r\n const { error, isLoaded } = this.state;\r\n const { toastColor, toastText, toastOpen } = this.state;\r\n const { dialogOpen, dialogType } = this.state;\r\n const { audioFiles, selectedAudioFile } = this.state;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n return (\r\n
\r\n {/* Toast */}\r\n this.setState({ toastOpen: false })}\r\n close\r\n />\r\n\r\n {/* Dialog */}\r\n this.toggleDialogOpen(dialogOpen)} aria-labelledby=\"form-dialog-title\" fullWidth={true}>\r\n {(() => {\r\n switch (dialogType) {\r\n case 'add':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"Audio file(s) uploaded\"); this.getAudioFiles(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n case 'delete':\r\n return { this.toggleDialogOpen(dialogOpen); this.showNotification(\"success\", \"Audio file removed!\"); this.getAudioFiles(); }}\r\n onSubmitError={(message) => this.showNotification(\"danger\", message)}\r\n onDialogClose={() => this.toggleDialogOpen(dialogOpen)}\r\n >\r\n default:\r\n return
;\r\n }\r\n })()}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n

Audio Library

\r\n

Overview of audio files to be used in uCallManager IVR's.

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.AUDIOLIBRARY.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n \r\n \r\n \r\n : null\r\n } \r\n\r\n { console.log(listItem) }\r\n // }\r\n isSortable={true}\r\n initialOrderBy={\"Filename\"} \r\n onDeleteButtonClicked=\r\n {\r\n PMUtils.userHasAnyRequiredPermissions([\"UCALLMANAGER.AUDIOLIBRARY.EDIT\"], globalData.loggedInUser.PortalPermissions)\r\n ?\r\n (clickedItem) => { this.openAudioFileDeleteDialog(clickedItem.Filename); }\r\n : null\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 withStyles(styles)(AudioLibraryOverviewPage)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport TableJson from \"components/Table/TableJson.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\nimport { apiGet, apiGetFile } from \"utils/webRequestUtils.jsx\";\r\nimport CustomSelect from \"components/CustomInput/CustomSelect\";\r\n\r\nconst styles = {\r\n cardCategoryWhite: {\r\n \"&,& a,& a:hover,& a:focus\": {\r\n color: \"rgba(255,255,255,.62)\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n marginTop: \"0\",\r\n marginBottom: \"0\"\r\n },\r\n \"& a,& a:hover,& a:focus\": {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n cardTitleWhite: {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\",\r\n \"& small\": {\r\n color: \"#777\",\r\n fontSize: \"65%\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1\"\r\n }\r\n }\r\n};\r\n\r\nconst requiredPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n]\r\n\r\nconst allowedPortalPermissions = [\r\n \"UCALLMANAGER.ACCESS\",\r\n \"UCALLMANAGER.CALLRECORDINGS.VIEW\"\r\n]\r\n\r\nclass RecordingsPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n selectedHour: \"X\",\r\n selectedDay: \"X\",\r\n selectedMonth: \"X\",\r\n error: null,\r\n isLoaded: false,\r\n recordings: [],\r\n\r\n audioPlayerSource: null\r\n }\r\n }\r\n\r\n componentDidMount()\r\n {\r\n // Check portal permissions\r\n if (!PMUtils.userHasAllRequiredPermissions(requiredPortalPermissions, globalData.loggedInUser.PortalPermissions) || !PMUtils.userHasAllRequiredPermissions(allowedPortalPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n }); \r\n\r\n return;\r\n } \r\n \r\n this.setState(\r\n {\r\n isLoaded: true \r\n });\r\n }\r\n\r\n getAudioRecordings = () =>\r\n {\r\n const { selectedDay, selectedMonth, selectedHour } = this.state;\r\n\r\n var selectedDayTemp, selectedMonthTemp, selectedHourTemp;\r\n\r\n this.setState(\r\n {\r\n isLoaded:false \r\n });\r\n\r\n if (selectedHour == \"\" || selectedHour == null)\r\n {\r\n selectedHourTemp = \"X\";\r\n }\r\n else\r\n {\r\n selectedHourTemp = selectedHour;\r\n }\r\n \r\n if (selectedMonth == \"\" || selectedMonth == null)\r\n {\r\n selectedMonthTemp = \"X\"; \r\n }\r\n else\r\n {\r\n selectedMonthTemp = selectedMonth; \r\n }\r\n\r\n if (selectedDay == \"\" || selectedDay == null)\r\n {\r\n selectedDayTemp = \"X\"; \r\n }\r\n else\r\n {\r\n selectedDayTemp = selectedDay; \r\n }\r\n\r\n // Get list of recordings\r\n apiGet(\"ucm/recordings/list/\" + selectedMonthTemp + \"/\" + selectedDayTemp + \"/\" + selectedHourTemp).then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded:true,\r\n recordings: result.data,\r\n selectedDay: \"X\",\r\n selectedHour: \"X\",\r\n selectedMonth: \"X\"\r\n });\r\n\r\n // Load first recording if list isn't empty.\r\n if (result.data.length > 0)\r\n {\r\n this.loadAudioFile(result.data[0]);\r\n }\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.message\r\n });\r\n });\r\n }\r\n\r\n loadAudioFile = (callRecording) =>\r\n {\r\n // Get recording file.\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n apiGetFile(\"ucm/recordings/get/\" + callRecording.FileName + \"/\" + callRecording.FileExtension).then((result) => \r\n {\r\n // Create blob from byte array.\r\n var blob = new Blob([result], {type : \"audio/\" + callRecording.FileExtension}); \r\n var blobUrl = URL.createObjectURL(blob);\r\n\r\n this.setState({\r\n audioPlayerSource: blobUrl\r\n });\r\n \r\n // Load audio blob into audio player.\r\n let audio = document.getElementById(\"callRecordingsPlayer\");\r\n\r\n if (audio != null)\r\n {\r\n audio.load();\r\n }\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n error: error.message\r\n });\r\n });\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded, recordings, audioPlayerSource } = this.state;\r\n const { classes } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n

Call Recordings

\r\n

\r\n Overview of past call recordings. \r\n

\r\n
\r\n \r\n \r\n \r\n \r\n
Select a period/date to view the recordings in the list below.
\r\n \r\n\r\n \r\n { this.setState({ selectedMonth: value}) }\r\n }\r\n values={[\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\"]}\r\n />\r\n \r\n \r\n { this.setState({ selectedDay: value}) }\r\n }\r\n values={[\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\",\r\n \"16\", \"17\", \"18\", \"19\", \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\", \"30\", \"31\"]}\r\n />\r\n \r\n \r\n { this.setState({ selectedHour: value}) }\r\n }\r\n values={[\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\",\r\n \"16\", \"17\", \"18\", \"19\", \"20\", \"21\", \"22\", \"23\", \"24\"]}\r\n />\r\n \r\n \r\n\r\n \r\n
\r\n
\r\n\r\n { \r\n \r\n for(var i = 0; i < recordings.length; i++)\r\n {\r\n if (recordings[i].FileName == listItem.FileName)\r\n {\r\n recordings[i].CallTo = recordings[i].CallTo.toString().replace(\" (currently playing)\", \"\");\r\n recordings[i].CallTo = recordings[i].CallTo + \" (currently playing)\"; \r\n }\r\n else\r\n {\r\n recordings[i].CallTo = recordings[i].CallTo.toString().replace(\" (currently playing)\", \"\");\r\n }\r\n }\r\n \r\n this.loadAudioFile(listItem) }\r\n }\r\n isSortable={true}\r\n initialOrderBy={\"CallDateTime\"}\r\n initialSortingOrder={\"desc\"}\r\n tableNumericColumns={[\"CallTo\"]}\r\n tableDateColumns={[\"CallDateTime\"]}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n ); \r\n }\r\n}\r\n\r\nexport default withStyles(styles)(RecordingsPage)","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\n// core components\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\n\r\n// Extra libs\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nimport * as powerbi from 'powerbi-client';\r\nimport $ from 'jquery';\r\n\r\nconst requiredUCallManagerPermissions = [\r\n \"UCALLMANAGER.ACCESS\"\r\n ]\r\n\r\nclass ReportingPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n reportEmbedData: null\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredUCallManagerPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.getDashboardReport();\r\n }\r\n\r\n getDashboardReport()\r\n {\r\n apiGet(\"ucm/reports/dashboard\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n reportEmbedData: result.data\r\n });\r\n\r\n this.loadReport(result.data.AccessToken, result.data.EmbedURL, result.data.ReportID)\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n \r\n loadReport(accessToken, embedUrl, embedReportId) \r\n { \r\n // Fetch viewport width (used for determining if report should be shown in mobile view).\r\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\r\n \r\n // Get Power BI SDK models.\r\n var models = powerbi.models;\r\n \r\n var config;\r\n \r\n // Load normal or mobile report view.\r\n if (screenWidth > 768) {\r\n config = {\r\n type: 'report',\r\n id: embedReportId,\r\n tokenType: models.TokenType.Embed,\r\n accessToken: accessToken,\r\n embedUrl: embedUrl,\r\n permissions: models.Permissions.Read,\r\n settings:\r\n {\r\n filterPaneEnabled: false,\r\n navContentPaneEnabled: false,\r\n }\r\n };\r\n }\r\n else {\r\n config = {\r\n type: 'report',\r\n tokenType: models.TokenType.Embed,\r\n accessToken: accessToken,\r\n embedUrl: embedUrl,\r\n id: embedReportId,\r\n permissions: models.Permissions.Read,\r\n settings:\r\n {\r\n filterPaneEnabled: false,\r\n navContentPaneEnabled: false,\r\n layoutType: models.LayoutType.MobilePortrait\r\n }\r\n };\r\n }\r\n\r\n // Get a reference to the reportcontainer element\r\n var reportContainer = $('#reportContainer')[0];\r\n\r\n if (reportContainer == null)\r\n {\r\n return;\r\n }\r\n\r\n // Embed the report and display it within the div container.\r\n var report = window.powerbi.embed(reportContainer, config);\r\n report.iframe.style.border = \"None\";\r\n\r\n // For updating settings at runtime\r\n // report.updateSettings(newSettings)\r\n // .catch(error => { ... });\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded } = this.state\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n return (\r\n
\r\n ) \r\n }\r\n}\r\n\r\nexport default ReportingPage","import React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\n// core components\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\nimport GridItem from \"components/Grid/GridItem.jsx\";\r\nimport GridContainer from \"components/Grid/GridContainer.jsx\";\r\n\r\n// Extra libs\r\nimport { apiGet } from \"utils/webRequestUtils.jsx\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport PMUtils from \"utils/portalPermissionUtils.jsx\";\r\n\r\nimport * as powerbi from 'powerbi-client';\r\nimport $ from 'jquery';\r\n\r\nconst requiredUCallManagerPermissions = [\r\n \"UCALLMANAGER.ACCESS\",\r\n \"UCALLMANAGER.CALLDETAILRECORDS.VIEW\"\r\n ]\r\n\r\nclass CallDetailRecordsPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n \r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n reportEmbedData: null\r\n }\r\n }\r\n\r\n componentDidMount()\r\n { \r\n // Check portal permissions \r\n if (!PMUtils.userHasAllRequiredPermissions(requiredUCallManagerPermissions, globalData.loggedInUser.PortalPermissions))\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: \"Access denied\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.getDashboardReport();\r\n }\r\n\r\n getDashboardReport()\r\n {\r\n apiGet(\"ucm/reports/cdr\").then((result) => \r\n {\r\n // TODO: Check if 'Authorization has been denied for this request' message is received.\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n reportEmbedData: result.data\r\n });\r\n\r\n this.loadReport(result.data.AccessToken, result.data.EmbedURL, result.data.ReportID)\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error.data\r\n });\r\n });\r\n }\r\n \r\n loadReport(accessToken, embedUrl, embedReportId) \r\n { \r\n // Fetch viewport width (used for determining if report should be shown in mobile view).\r\n var screenWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\r\n \r\n // Get Power BI SDK models.\r\n var models = powerbi.models;\r\n \r\n var config;\r\n \r\n // Load normal or mobile report view.\r\n if (screenWidth > 768) {\r\n config = {\r\n type: 'report',\r\n id: embedReportId,\r\n tokenType: models.TokenType.Embed,\r\n accessToken: accessToken,\r\n embedUrl: embedUrl,\r\n permissions: models.Permissions.Read,\r\n settings:\r\n {\r\n filterPaneEnabled: false,\r\n navContentPaneEnabled: false,\r\n }\r\n };\r\n }\r\n else {\r\n config = {\r\n type: 'report',\r\n tokenType: models.TokenType.Embed,\r\n accessToken: accessToken,\r\n embedUrl: embedUrl,\r\n id: embedReportId,\r\n permissions: models.Permissions.Read,\r\n settings:\r\n {\r\n filterPaneEnabled: false,\r\n navContentPaneEnabled: false,\r\n layoutType: models.LayoutType.MobilePortrait\r\n }\r\n };\r\n }\r\n\r\n // Get a reference to the reportcontainer element\r\n var reportContainer = $('#reportContainer')[0];\r\n\r\n if (reportContainer == null)\r\n {\r\n return;\r\n }\r\n\r\n // Embed the report and display it within the div container.\r\n var report = window.powerbi.embed(reportContainer, config);\r\n report.iframe.style.border = \"None\";\r\n\r\n // For updating settings at runtime\r\n // report.updateSettings(newSettings)\r\n // .catch(error => { ... });\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded } = this.state\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n } \r\n\r\n return (\r\n
\r\n ) \r\n }\r\n}\r\n\r\nexport default CallDetailRecordsPage","// @material-ui/icons\r\nimport Home from \"@material-ui/icons/Home\";\r\nimport LibraryBooks from \"@material-ui/icons/LibraryBooks\";\r\nimport BubbleChart from \"@material-ui/icons/BubbleChart\";\r\nimport Notifications from \"@material-ui/icons/Notifications\";\r\nimport Folder from \"@material-ui/icons/FolderOpen\";\r\nimport AllInbox from \"@material-ui/icons/AllInbox\";\r\nimport Call from \"@material-ui/icons/Call\";\r\nimport ShoppingCart from \"@material-ui/icons/ShoppingCart\";\r\nimport CloudDone from \"@material-ui/icons/CloudDone\";\r\nimport CloudQueue from \"@material-ui/icons/CloudQueue\";\r\nimport DNS from \"@material-ui/icons/Dns\";\r\nimport Settings from \"@material-ui/icons/Settings\";\r\n\r\n// core components/views for Admin layout\r\nimport DashboardPage from \"views/Dashboard/Dashboard.jsx\";\r\nimport UserProfile from \"views/UserProfile/UserProfile.jsx\";\r\nimport TableList from \"views/TableList/TableList.jsx\";\r\nimport Typography from \"views/Typography/Typography.jsx\";\r\nimport Icons from \"views/Icons/Icons.jsx\";\r\nimport NotificationsPage from \"views/Notifications/Notifications.jsx\";\r\n\r\nimport CasesPage from \"views/Cases/Cases.jsx\";\r\nimport NewCasePage from \"views/Cases/NewCase.jsx\";\r\nimport ClosedCasesPage from \"views/Cases/ClosedCases.jsx\";\r\nimport ClosedCaseInfoPage from \"views/Cases/CaseInfo/ClosedCaseInfoPage.jsx\";\r\nimport CaseInfoPage from \"views/Cases/CaseInfo/CaseInfoPage.jsx\";\r\n\r\nimport DocumentsOverviewPage from \"views/Documents/DocumentsOverview.jsx\";\r\nimport GeneralDocumentsPage from \"views/Documents/GeneralDocuments.jsx\";\r\nimport ContractsPage from \"views/Documents/Contracts.jsx\";\r\nimport InvoicesPage from \"views/Documents/Invoices.jsx\";\r\n\r\nimport OrdersPage from \"views/Orders/Orders.jsx\";\r\nimport GeneratePriceListPage from \"views/Orders/GeneratePriceList.jsx\";\r\nimport ApproveOrderPage from \"views/Orders/ApproveOrder.jsx\";\r\nimport NewOrderPage from \"views/Orders/NewOrder.jsx\";\r\nimport NewAddOnOrderPage from \"views/Orders/NewAddOnOrder.jsx\";\r\nimport OrderHistoryPage from \"views/Orders/OrderHistory.jsx\";\r\n\r\nimport SettingsOverviewPage from \"views/Settings/SettingsOverview.jsx\";\r\nimport SettingsGraphApiPage from \"views/Settings/SettingsGraphApi\";\r\n\r\nimport UCallManagerPage from \"views/UCallManager/UCallManager.jsx\";\r\n\r\nimport QueuesPage from \"views/UCallManager/Queues/Queues.jsx\";\r\nimport ViewQueuePage from \"views/UCallManager/Queues/ViewQueue/ViewQueue.jsx\";\r\nimport NewQueuePage from \"views/UCallManager/Queues/NewQueue.jsx\";\r\n\r\nimport AgentsPage from \"views/UCallManager/Agents.jsx\";\r\nimport HolidaysPage from \"views/UCallManager/Holidays.jsx\";\r\nimport VoicePromptsPage from \"views/UCallManager/VoicePrompts.jsx\";\r\n\r\nimport IVROverviewPage from \"views/UCallManager/IVR/IVROverview.jsx\";\r\nimport NewIVRPage from \"views/UCallManager/IVR/NewIVR/NewIVR.jsx\"\r\nimport IVRDetailsOverviewPage from \"views/UCallManager/IVR/IVRDetails/IVRDetailsOverview.jsx\";\r\n\r\nimport AudioLibraryOverviewPage from \"views/UCallManager/AudioLibrary/AudioLibraryOverview.jsx\";\r\n\r\nimport RecordingsPage from \"views/UCallManager/Recordings.jsx\";\r\nimport ReportingPage from \"views/UCallManager/Reporting.jsx\";\r\nimport CallDetailRecordsPage from \"views/UCallManager/CallDetailRecords.jsx\";\r\n\r\nimport Cookies from \"js-cookie\";\r\n\r\nconst dashboardRoutes = [\r\n // ------------------------ Customer Portal ------------------------\r\n // Home\r\n {\r\n path: \"/dashboard\",\r\n name: \"Home\",\r\n icon: Home,\r\n component: DashboardPage,\r\n parentRoute: null,\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: []\r\n },\r\n\r\n // Cases\r\n {\r\n path: \"/cases\",\r\n name: \"Cases\",\r\n icon: AllInbox,\r\n component: CasesPage,\r\n parentRoute: null,\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASES\",\r\n \"READALLCASESPERSONALWRITE\"\r\n ]\r\n },\r\n {\r\n path: \"/cases/new\",\r\n name: \"New Case\",\r\n icon: null,\r\n component: NewCasePage,\r\n parentRoute: \"/cases\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASESPERSONALWRITE\"\r\n ]\r\n },\r\n {\r\n path: \"/cases/closed\",\r\n name: \"Closed Cases\",\r\n icon: null,\r\n component: ClosedCasesPage,\r\n parentRoute: \"/cases\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASESPERSONALWRITE\"\r\n ]\r\n },\r\n {\r\n path: \"/cases/ticket\",\r\n name: \"Ticket\",\r\n icon: null,\r\n component: CaseInfoPage,\r\n parentRoute: \"/cases\",\r\n displayRoute: false,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASES\",\r\n \"READALLCASESPERSONALWRITE\"\r\n ]\r\n },\r\n {\r\n path: \"/cases/closedticket\",\r\n name: \"Ticket\",\r\n icon: null,\r\n component: ClosedCaseInfoPage,\r\n parentRoute: \"/cases\",\r\n displayRoute: false,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"ADMINCASES\",\r\n \"PERSONALCASESONLY\",\r\n \"READALLCASES\",\r\n \"READALLCASESPERSONALWRITE\"\r\n ]\r\n },\r\n // Documents\r\n {\r\n path: \"/documents\",\r\n name: \"Documents\",\r\n icon: Folder,\r\n component: DocumentsOverviewPage,\r\n parentRoute: null,\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"UCP.DOCUMENTS.GENERAL.VIEW\",\r\n \"VIEWCONTRACTS\",\r\n \"ADMININVOICES\"\r\n ]\r\n },\r\n {\r\n path: \"/documents/general\",\r\n name: \"General\",\r\n icon: null,\r\n component: GeneralDocumentsPage,\r\n parentRoute: \"/documents\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"UCP.DOCUMENTS.GENERAL.VIEW\"\r\n ]\r\n },\r\n {\r\n path: \"/documents/contracts\",\r\n name: \"Contracts\",\r\n icon: null,\r\n component: ContractsPage,\r\n parentRoute: \"/documents\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"VIEWCONTRACTS\"\r\n ]\r\n },\r\n {\r\n path: \"/documents/invoices\",\r\n name: \"Invoices\",\r\n icon: null,\r\n component: InvoicesPage,\r\n parentRoute: \"/documents\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"ADMININVOICES\"\r\n ]\r\n },\r\n\r\n // Orders\r\n {\r\n path: \"/orders\",\r\n name: \"Orders\",\r\n icon: ShoppingCart,\r\n component: OrdersPage,\r\n parentRoute: null,\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"READORDERS\",\r\n \"ADMINORDERS\"\r\n ]\r\n },\r\n {\r\n path: \"/orders/approval\",\r\n name: \"Approve order\",\r\n icon: null,\r\n component: ApproveOrderPage,\r\n parentRoute: \"/orders\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"UNIVERSALAPPROVEORDERS\"\r\n ]\r\n },\r\n {\r\n path: \"/orders/generatepricelist\",\r\n name: \"Generate price list\",\r\n icon: null,\r\n component: GeneratePriceListPage,\r\n parentRoute: \"/orders\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"UNIVERSALGENERATEPRICELIST\"\r\n ]\r\n },\r\n {\r\n path: \"/orders/new\",\r\n name: \"New order\",\r\n icon: null,\r\n component: NewOrderPage,\r\n parentRoute: \"/orders\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"ADMINORDERS\"\r\n ]\r\n },\r\n /*{\r\n path: \"/orders/addons/new\",\r\n name: \"New add-on order\",\r\n icon: null,\r\n component: NewAddOnOrderPage,\r\n parentRoute: \"/orders\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"ADMINORDERS\"\r\n ]\r\n },*/\r\n {\r\n path: \"/orders/history\",\r\n name: \"Order history\",\r\n icon: null,\r\n component: OrderHistoryPage,\r\n parentRoute: \"/orders\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: [\r\n \"READORDERS\",\r\n \"ADMINORDERS\"\r\n ]\r\n },\r\n\r\n // Profile\r\n {\r\n path: \"/profile\",\r\n name: \"My Profile\",\r\n icon: null,\r\n component: UserProfile,\r\n parentRoute: \"\",\r\n displayRoute: false,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: []\r\n },\r\n\r\n // ------------------------ UCallManager ------------------------\r\n // Dashboard\r\n {\r\n path: \"/ucm\",\r\n name: \"uCallManager\",\r\n icon: Call,\r\n component: UCallManagerPage,\r\n parentRoute: null,\r\n displayRoute: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\"\r\n ],\r\n portalPermissions: []\r\n },\r\n \r\n // Queues\r\n {\r\n path: \"/ucm/queues\",\r\n name: \"Queues\",\r\n icon: null,\r\n component: QueuesPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\"\r\n ],\r\n portalPermissions: [\r\n \"UCALLMANAGER.QUEUES.VIEW\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n ]\r\n },\r\n {\r\n path: \"/ucm/queues/new\",\r\n name: \"New Queue\",\r\n icon: null,\r\n component: NewQueuePage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: false,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\"\r\n ],\r\n portalPermissions: [\"UCALLMANAGER.QUEUES.EDIT\"] \r\n },\r\n {\r\n path: \"/ucm/queues/view\",\r\n name: \"View Queue\",\r\n icon: null,\r\n component: ViewQueuePage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: false,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\"\r\n ],\r\n portalPermissions: [\r\n \"UCALLMANAGER.QUEUES.VIEW\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"]\r\n },\r\n\r\n // Agents\r\n {\r\n path: \"/ucm/agents\",\r\n name: \"Agents\",\r\n icon: null,\r\n component: AgentsPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\"\r\n ],\r\n portalPermissions: [\r\n \"UCALLMANAGER.AGENTS.VIEW\",\r\n \"UCALLMANAGER.AGENTS.EDIT\",\r\n \"UCALLMANAGER.QUEUES.EDIT\"\r\n ]\r\n },\r\n\r\n // Holidays\r\n {\r\n path: \"/ucm/holidays\",\r\n name: \"Holidays\",\r\n icon: null,\r\n component: HolidaysPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\",\r\n ],\r\n portalPermissions: [\r\n \"UCALLMANAGER.HOLIDAYS.EDIT\",\r\n \"UCALLMANAGER.QUEUES.EDIT\",\r\n \"UCALLMANAGER.IVR.EDIT\"\r\n ]\r\n },\r\n\r\n // // Voice Prompts\r\n // {\r\n // path: \"/ucm/voiceprompts\",\r\n // name: \"Voice Prompts\",\r\n // icon: null,\r\n // component: VoicePromptsPage,\r\n // parentRoute: \"/ucm\",\r\n // displayRoute: true,\r\n // portalPermissionsMinimum: [\r\n // \"UCALLMANAGER.ACCESS\"\r\n // ],\r\n // portalPermissions: []\r\n // },\r\n\r\n // IVR\r\n {\r\n path: \"/ucm/ivr\",\r\n name: \"IVR\",\r\n icon: null,\r\n component: IVROverviewPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\"\r\n ],\r\n portalPermissions: [\r\n \"UCALLMANAGER.IVR.VIEW\",\r\n \"UCALLMANAGER.IVR.EDIT\"]\r\n },\r\n\r\n {\r\n path: \"/ucm/ivr/new\",\r\n name: \"New IVR\",\r\n icon: null,\r\n component: NewIVRPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: false,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\",\r\n \"UCALLMANAGER.IVR.EDIT\"\r\n ],\r\n portalPermissions: []\r\n },\r\n\r\n {\r\n path: \"/ucm/ivr/details\",\r\n name: \"IVR Details\",\r\n icon: null,\r\n component: IVRDetailsOverviewPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: false,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\"\r\n ],\r\n portalPermissions: [\r\n \"UCALLMANAGER.IVR.VIEW\",\r\n \"UCALLMANAGER.IVR.EDIT\"\r\n ]\r\n },\r\n\r\n // Audio Library\r\n {\r\n path: \"/ucm/audio\",\r\n name: \"Audio Library\",\r\n icon: null,\r\n component: AudioLibraryOverviewPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\"\r\n ],\r\n portalPermissions: [\r\n \"UCALLMANAGER.IVR.VIEW\",\r\n \"UCALLMANAGER.IVR.EDIT\",\r\n \"UCALLMANAGER.AUDIOLIBRARY.EDIT\"\r\n ]\r\n },\r\n \r\n // Call Recordings\r\n {\r\n path: \"/ucm/recordings\",\r\n name: \"Recordings\",\r\n icon: null,\r\n component: RecordingsPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\",\r\n \"UCALLMANAGER.CALLRECORDINGS.VIEW\"\r\n ],\r\n portalPermissions: []\r\n },\r\n\r\n // Reporting\r\n {\r\n path: \"/ucm/reporting\",\r\n name: \"Reporting\",\r\n icon: null,\r\n component: ReportingPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\"\r\n ],\r\n portalPermissions: []\r\n},\r\n\r\n // Call Detail Records\r\n {\r\n path: \"/ucm/calldetailrecords\",\r\n name: \"Call Detail Records\",\r\n icon: null,\r\n component: CallDetailRecordsPage,\r\n parentRoute: \"/ucm\",\r\n displayRoute: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\",\r\n \"UCALLMANAGER.CALLDETAILRECORDS.VIEW\"\r\n ],\r\n portalPermissions: []\r\n },\r\n\r\n // UWallboard (link to: https://uwallboard.com)\r\n {\r\n path: \"https://uwallboard.com?user=\", // token to uwallboard is added in sidebar.jsx\r\n name: \"uWallboard (Link)\",\r\n icon: null,\r\n component: null,\r\n parentRoute: \"/ucm\",\r\n displayRoute: true,\r\n isLink: true,\r\n portalPermissionsMinimum: [\r\n \"UCALLMANAGER.ACCESS\",\r\n \"UCALLMANAGER.UWALLBOARD.VIEW\"\r\n ],\r\n portalPermissions: []\r\n },\r\n\r\n \r\n // ------------------------ Customer Portal ------------------------\r\n // Service status (link to: https://status.universal.nl/);\r\n {\r\n path: \"https://status.universal.nl\",\r\n name: \"Service Status (Link)\",\r\n icon: CloudDone,\r\n component: null,\r\n parentRoute: null,\r\n displayRoute: true,\r\n isLink: true,\r\n portalPermissionsMinimum: [\r\n ],\r\n portalPermissions: []\r\n },\r\n\r\n // Universal DNS (link to: https://dns.universal.cloud);\r\n {\r\n path: \"https://dns.universal.cloud/\",\r\n name: \"Universal DNS (Link)\",\r\n icon: DNS,\r\n component: null,\r\n parentRoute: null,\r\n displayRoute: true,\r\n isLink: true,\r\n portalPermissionsMinimum: [\r\n \"UCP.DNS\"\r\n ],\r\n portalPermissions: []\r\n },\r\n\r\n // Control Cloud Service (link to: https://controlcloudservice.com/);\r\n {\r\n path: \"https://controlcloudservice.com/\",\r\n name: \"Control Cloud Service (Link)\",\r\n icon: CloudQueue,\r\n component: null,\r\n parentRoute: null,\r\n displayRoute: true,\r\n isLink: true,\r\n portalPermissionsMinimum: [\r\n \"ADMINCCS\"\r\n ],\r\n portalPermissions: []\r\n },\r\n\r\n // Skype Panel (link to: https://skype.controlcloudservice.com/);\r\n /*{\r\n path: \"https://skype.controlcloudservice.com/\",\r\n name: \"Skype Panel (Link)\",\r\n icon: Dashboard,\r\n component: null,\r\n parentRoute: null,\r\n displayRoute: true,\r\n isLink: true,\r\n portalPermissionsMinimum: [\r\n \"ADMINSKYPECCS\"\r\n ],\r\n portalPermissions: []\r\n },*/\r\n\r\n // Settings page\r\n {\r\n path: \"/settings\",\r\n name: \"Settings\",\r\n icon: Settings,\r\n component: SettingsOverviewPage,\r\n parentRoute: null,\r\n displayRoute: true,\r\n isLink: false,\r\n portalPermissionsMinimum: [\r\n \"UCP.SETTINGS.ACCESS\"\r\n ],\r\n portalPermissions: []\r\n },\r\n {\r\n path: \"/settings/graph-api\",\r\n name: \"Graph API\",\r\n icon: null,\r\n component: SettingsGraphApiPage,\r\n parentRoute: \"/settings\",\r\n displayRoute: true,\r\n isLink: false,\r\n portalPermissionsMinimum: [\r\n \"UCP.SETTINGS.ACCESS\",\r\n \"UCP.SETTINGS.GRAPHAPI.EDIT\"\r\n ],\r\n portalPermissions: []\r\n },\r\n\r\n // Link route example\r\n // {\r\n // path: \"/ucm/calldetailrecords\",\r\n // name: \"Call Detail Records (Link)\",\r\n // icon: null,\r\n // component: null,\r\n // parentRoute: \"/ucm\",\r\n // displayRoute: true,\r\n // isLink: true,\r\n // portalPermissionsMinimum: [\r\n // \"UCALLMANAGER.ACCESS\",\r\n // \"UCALLMANAGER.CALLDETAILRECORDS.VIEW\"\r\n // ],\r\n // portalPermissions: []\r\n // },\r\n\r\n // ------------------------ Samples ------------------------ \r\n // Default\r\n {\r\n path: \"/table\",\r\n name: \"Table List\",\r\n icon: \"content_paste\",\r\n component: TableList,\r\n parentRoute: null,\r\n displayRoute: false,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: []\r\n },\r\n {\r\n path: \"/typography\",\r\n name: \"Typography\",\r\n icon: LibraryBooks,\r\n component: Typography,\r\n parentRoute: null,\r\n displayRoute: false,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: []\r\n },\r\n {\r\n path: \"/icons\",\r\n name: \"Icons\",\r\n icon: BubbleChart,\r\n component: Icons,\r\n parentRoute: null,\r\n displayRoute: false,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: []\r\n },\r\n {\r\n path: \"/notifications\",\r\n name: \"Notifications\",\r\n icon: Notifications,\r\n component: NotificationsPage,\r\n parentRoute: null,\r\n displayRoute: false,\r\n portalPermissionsMinimum: [],\r\n portalPermissions: []\r\n }\r\n];\r\n\r\nexport default dashboardRoutes;\r\n","import {\r\n drawerWidth,\r\n transition,\r\n container\r\n} from \"assets/jss/material-dashboard-react.jsx\";\r\n\r\nconst appStyle = theme => ({\r\n wrapper: {\r\n position: \"relative\",\r\n top: \"0\",\r\n height: \"100vh\"\r\n },\r\n mainPanel: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: `calc(100% - ${drawerWidth}px)`\r\n },\r\n overflow: \"auto\",\r\n position: \"relative\",\r\n float: \"right\",\r\n ...transition,\r\n maxHeight: \"100%\",\r\n width: \"100%\",\r\n overflowScrolling: \"touch\",\r\n\r\n height: \"100vh\",\r\n display: \"flex\",\r\n flexDirection: \"column\"\r\n },\r\n content: {\r\n marginTop: \"70px\",\r\n [theme.breakpoints.up(\"md\")]:{\r\n padding: \"30px 15px\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]:{\r\n padding: \"30px 0px\"\r\n },\r\n flex: \"1\"\r\n //minHeight: \"calc(100vh - 200px)\"\r\n },\r\n container,\r\n map: {\r\n marginTop: \"70px\"\r\n }\r\n});\r\n\r\nexport default appStyle;\r\n","/* eslint-disable */\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Switch, Route, Redirect } from \"react-router-dom\";\r\n// creates a beautiful scrollbar\r\nimport PerfectScrollbar from \"perfect-scrollbar\";\r\nimport \"perfect-scrollbar/css/perfect-scrollbar.css\";\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\n// core components\r\nimport Navbar from \"components/Navbars/Navbar.jsx\";\r\nimport Footer from \"components/Footer/Footer.jsx\";\r\nimport Sidebar from \"components/Sidebar/Sidebar.jsx\";\r\nimport LoadingIndicator from \"components/LoadingIndicator/LoadingIndicator.jsx\";\r\nimport ErrorIndicator from \"components/ErrorIndicator/ErrorIndicator.jsx\";\r\n\r\n// Extra libs\r\nimport Cookies from \"js-cookie\";\r\n\r\nimport routes from \"routes.js\";\r\n\r\nimport dashboardStyle from \"assets/jss/material-dashboard-react/layouts/dashboardStyle.jsx\";\r\n\r\nimport image from \"assets/img/sidebar-2.jpg\";\r\nimport globalData from \"variables/globalData.jsx\";\r\nimport Constants from \"variables/constants.jsx\"\r\n\r\nimport { connect } from \"react-redux\";\r\nimport { addArticle } from \"../stateManagement/actions/index\";\r\n\r\nconst switchRoutes = (\r\n \r\n {\r\n routes.map((prop, key) => \r\n {\r\n return (\r\n \r\n );\r\n })\r\n }\r\n \r\n);\r\n\r\nconst mapStateToProps = state => {\r\n return { articles: state.articles };\r\n};\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n addArticle: article => dispatch(addArticle(article))\r\n };\r\n}\r\n\r\nclass Dashboard extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n this.state = \r\n {\r\n error: null,\r\n isLoaded: false,\r\n\r\n image: image,\r\n color: \"neutral\",\r\n hasImage: true,\r\n fixedClasses: \"dropdown show\",\r\n mobileOpen: false\r\n };\r\n }\r\n\r\n handleImageClick = image => \r\n {\r\n this.setState({ image: image });\r\n };\r\n\r\n handleColorClick = color => \r\n {\r\n this.setState({ color: color });\r\n };\r\n\r\n handleFixedClick = () => \r\n {\r\n if (this.state.fixedClasses === \"dropdown\") {\r\n this.setState({ fixedClasses: \"dropdown show\" });\r\n } else {\r\n this.setState({ fixedClasses: \"dropdown\" });\r\n }\r\n };\r\n \r\n handleDrawerToggle = () => \r\n {\r\n this.setState({ mobileOpen: !this.state.mobileOpen });\r\n };\r\n\r\n resizeFunction = () => \r\n {\r\n if (window.innerWidth >= 960) {\r\n this.setState({ mobileOpen: false });\r\n }\r\n };\r\n\r\n componentDidMount() \r\n {\r\n // TODO: Make use of util method\r\n var token = Cookies.get(\"auth\");\r\n\r\n fetch(Constants.ApiBaseUrl + \"users/me\",\r\n {\r\n headers:\r\n {\r\n \"Authorization\": \"Bearer \" + token\r\n }\r\n })\r\n .then((response) => \r\n {\r\n if (response.status !== 200)\r\n {\r\n throw new Error(response.status);\r\n }\r\n\r\n return response.json()\r\n })\r\n .then((result) => \r\n {\r\n // Store user data globally\r\n globalData.loggedInUser = result;\r\n\r\n this.setState(\r\n {\r\n isLoaded:true\r\n });\r\n\r\n if (navigator.platform.indexOf(\"Win\") > -1) {\r\n const ps = new PerfectScrollbar(this.refs.mainPanel);\r\n }\r\n window.addEventListener(\"resize\", this.resizeFunction);\r\n },\r\n (error) =>\r\n {\r\n this.setState(\r\n {\r\n isLoaded: true,\r\n error: error\r\n });\r\n });\r\n } \r\n\r\n componentDidUpdate(e) \r\n {\r\n if (e.history.location.pathname !== e.location.pathname) {\r\n this.refs.mainPanel.scrollTop = 0;\r\n if (this.state.mobileOpen) {\r\n this.setState({ mobileOpen: false });\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() \r\n { \r\n window.removeEventListener(\"resize\", this.resizeFunction);\r\n }\r\n\r\n render() \r\n {\r\n const { error, isLoaded } = this.state;\r\n const { classes, ...rest } = this.props;\r\n\r\n if (!isLoaded)\r\n {\r\n return \r\n }\r\n else if (error)\r\n {\r\n // TODO: Error logging\r\n return \r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n
{switchRoutes}
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nDashboard.propTypes = \r\n{\r\n classes: PropTypes.object.isRequired\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withStyles(dashboardStyle)(Dashboard));\r\n","import { ADD_ARTICLE } from \"../constants/action-types\";\r\n\r\nexport function addArticle(payload)\r\n{\r\n return {\r\n type: ADD_ARTICLE,\r\n payload\r\n }\r\n}","/* eslint-disable */\r\nimport React from \"react\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\n// core components\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport Danger from \"components/Typography/Danger.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\n\r\n// Extra libs\r\nimport Constants from \"variables/constants.jsx\"\r\n\r\nconst styles = \r\n{\r\n cardTitleWhite: \r\n {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\"\r\n }\r\n};\r\n\r\nclass ResetPasswordPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n\r\n this.state = \r\n {\r\n error: null, \r\n\r\n submittingEmail: false, \r\n requestSuccessful: false,\r\n\r\n email: \"\",\r\n }\r\n }\r\n\r\n submitEmail = () =>\r\n { \r\n const { email } = this.state\r\n \r\n this.setState({submittingEmail: true})\r\n\r\n fetch(Constants.ApiBaseUrl + \"registration/requestpasswordreset\", \r\n {\r\n method: \"POST\",\r\n headers:\r\n {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(email)\r\n })\r\n .then((response) => \r\n {\r\n response.json().then((result) =>\r\n {\r\n if (response.status !== 200)\r\n { \r\n throw new Error(result.error_description);\r\n }\r\n\r\n this.setState(() => ({\r\n submittingEmail: false,\r\n requestSuccessful: true\r\n }));\r\n })\r\n .catch((error) =>\r\n {\r\n this.setState(\r\n {\r\n error: error.message, \r\n submittingEmail: false\r\n })\r\n });\r\n })\r\n }\r\n\r\n render() \r\n { \r\n const { error, submittingEmail, requestSuccessful } = this.state\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n
\r\n \r\n
{e.preventDefault(); this.submitEmail()}}>\r\n \r\n

Forgot my password

\r\n
\r\n {\r\n !requestSuccessful\r\n ?\r\n (\r\n
\r\n \r\n { this.setState({email: value}); }\r\n }\r\n />\r\n {/* TODO: Show dynamic error message based on result. */}\r\n {error}\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n :\r\n

We have sent you an email containing instructions on how to reset your password!

\r\n } \r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(ResetPasswordPage);\r\n","/* eslint-disable */\r\nimport React from \"react\";\r\nimport { Redirect } from \"react-router-dom\";\r\n\r\n// @material-ui/core components\r\nimport withStyles from \"@material-ui/core/styles/withStyles\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\n\r\n// core components\r\nimport CustomInput from \"components/CustomInput/CustomInput.jsx\";\r\nimport Button from \"components/CustomButtons/Button.jsx\";\r\nimport Card from \"components/Card/Card.jsx\";\r\nimport CardHeader from \"components/Card/CardHeader.jsx\";\r\nimport Danger from \"components/Typography/Danger.jsx\";\r\nimport CardBody from \"components/Card/CardBody.jsx\";\r\nimport CardFooter from \"components/Card/CardFooter.jsx\";\r\n\r\n// Extra libs\r\nimport Constants from \"variables/constants.jsx\"\r\n\r\nconst styles = \r\n{\r\n cardTitleWhite: \r\n {\r\n color: \"#FFFFFF\",\r\n marginTop: \"0px\",\r\n minHeight: \"auto\",\r\n fontWeight: \"300\",\r\n fontFamily: \"'Roboto', 'Helvetica', 'Arial', sans-serif\",\r\n marginBottom: \"3px\",\r\n textDecoration: \"none\"\r\n }\r\n};\r\n\r\nclass SetNewPasswordPage extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n\r\n this.state = \r\n {\r\n error: null, \r\n\r\n submittingPasswords: false, \r\n requestSuccessful: false,\r\n loginPageRedictCount: 5,\r\n\r\n password: \"\",\r\n repeatPassword: \"\"\r\n }\r\n }\r\n\r\n submitPasswords = () =>\r\n { \r\n const { password } = this.state\r\n \r\n this.setState({submittingPasswords: true, error: null})\r\n\r\n // Check if passwords are equal\r\n if (!this.checkPasswordsAreEqual())\r\n {\r\n this.setState(\r\n {\r\n error: \"Oops, the two passwords you entered are not equal.\", \r\n submittingPasswords: false\r\n })\r\n return;\r\n }\r\n\r\n // Get registration key from url\r\n var url = new URL(window.location.href);\r\n var registrationKey = url.searchParams.get(\"validate\");\r\n\r\n if (!registrationKey)\r\n {\r\n this.setState(\r\n {\r\n error: \"Your registration key is missing.\", \r\n submittingPasswords: false\r\n })\r\n return;\r\n }\r\n\r\n // Create request body\r\n var requestBody = {\r\n \"RegistrationKey\": registrationKey,\r\n \"Password\": password\r\n }\r\n\r\n // Send request to API\r\n fetch(Constants.ApiBaseUrl + \"registration/newpassword\", \r\n {\r\n method: \"POST\",\r\n headers:\r\n {\r\n \"Content-Type\": \"application/json\"\r\n },\r\n body: JSON.stringify(requestBody)\r\n })\r\n .then((response) => \r\n {\r\n response.json().then((result) =>\r\n {\r\n if (response.status !== 200)\r\n { \r\n throw new Error(result);\r\n }\r\n\r\n this.setState(\r\n {\r\n submittingPasswords: false,\r\n requestSuccessful: true\r\n })\r\n\r\n this.redirectToLoginPageCountDown();\r\n })\r\n .catch((error) =>\r\n {\r\n this.setState(\r\n {\r\n error: error.message, \r\n submittingPasswords: false\r\n })\r\n });\r\n })\r\n }\r\n\r\n redirectToLoginPageCountDown = () =>\r\n {\r\n var timerCounter = 4;\r\n\r\n var timer = setInterval(function() \r\n {\r\n this.setState(\r\n {\r\n loginPageRedictCount: timerCounter\r\n })\r\n\r\n timerCounter--;\r\n\r\n // If the count down is finished, write some text\r\n if (timerCounter < 0) {\r\n clearInterval(timer);\r\n }\r\n }.bind(this), 1000);\r\n }\r\n\r\n checkPasswordsAreEqual = () =>\r\n {\r\n const { password, repeatPassword } = this.state\r\n\r\n if (!password || !repeatPassword)\r\n {\r\n return false;\r\n }\r\n\r\n return (password === repeatPassword);\r\n }\r\n\r\n render() \r\n { \r\n const { error, submittingPasswords, requestSuccessful, loginPageRedictCount } = this.state\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n
\r\n \r\n
{e.preventDefault(); this.submitPasswords()}}>\r\n \r\n

Set new password

\r\n
\r\n {\r\n !requestSuccessful\r\n ?\r\n (\r\n
\r\n \r\n { this.setState({password: value}); }\r\n }\r\n />\r\n { this.setState({repeatPassword: value}); }\r\n }\r\n />\r\n {/* TODO: Show dynamic error message based on result. */}\r\n {error}\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n :\r\n

Your password has successfully been changed! You will be redirected to the login page in {loginPageRedictCount} seconds.

\r\n } \r\n {\r\n loginPageRedictCount === 0\r\n ?\r\n \r\n :\r\n null\r\n } \r\n
\r\n \r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(SetNewPasswordPage);\r\n","/* eslint-disable */\r\nimport React from \"react\";\r\nimport { Switch, Route } from \"react-router-dom\";\r\n// creates a beautiful scrollbar\r\nimport \"perfect-scrollbar/css/perfect-scrollbar.css\";\r\n// @material-ui/core components\r\n\r\nimport AzureAuthentication from \"views/Authentication/Azure.jsx\";\r\nimport ResetPassword from \"views/Authentication/ResetPassword.jsx\";\r\nimport SetNewPassword from \"views/Authentication/SetNewPassword.jsx\";\r\nimport BackgroundImage from \"assets/img/background-1.jpg\";\r\n\r\nclass External extends React.Component \r\n{\r\n constructor(props) \r\n {\r\n super(props);\r\n }\r\n\r\n render() \r\n { \r\n var containerDivStyle = \r\n {\r\n height: \"100%\",\r\n background: \"url(\" + BackgroundImage + \") no-repeat\",\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center center\",\r\n backgroundAttachment: \"fixed\"\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n );\r\n }\r\n}\r\n\r\nexport default (External);\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { PublicClientApplication } from \"@azure/msal-browser\";\r\nimport { MsalProvider } from \"@azure/msal-react\";\r\nimport { createBrowserHistory } from \"history\";\r\nimport { Router, Route, Switch, Redirect } from \"react-router-dom\";\r\nimport { msalConfig } from \"./utils/azuread/authConfig\";\r\nimport { Provider } from \"react-redux\";\r\nimport store from \"./stateManagement/store/index\";\r\nimport AzureAuthentication from \"views/Authentication/Azure.jsx\";\r\nimport AzureAuthenticationLogout from \"views/Authentication/Azure.jsx\";\r\n\r\n// core components\r\nimport Admin from \"layouts/Admin.jsx\";\r\nimport External from \"layouts/External.jsx\";\r\n\r\n// Extra libs\r\nimport Cookies from \"js-cookie\";\r\n\r\nimport \"assets/css/material-dashboard-react.css?v=1.6.0\";\r\n\r\nconst hist = createBrowserHistory();\r\n\r\nconst PrivateRoute = ({ component: Component, ...rest }) => (\r\n \r\n (\r\n tokenIsValid() \r\n ? \r\n \r\n : \r\n \r\n )} />\r\n \r\n)\r\n\r\n// TODO: Better way of checking if token is valid.\r\nfunction tokenIsValid()\r\n{\r\n var token = Cookies.get(\"auth\");\r\n\r\n if (token)\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n return false; \r\n }\r\n}\r\n\r\nexport const msalInstance = new PublicClientApplication(msalConfig);\r\n\r\nReactDOM.render(\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 document.getElementById(\"root\")\r\n);\r\n","// TODO: Replace with redux\r\nvar loggedInUser = null;\r\nvar currentlyViewingQueue = null;\r\n \r\nmodule.exports = \r\n{\r\n loggedInUser,\r\n currentlyViewingQueue\r\n};\r\n ","//const ApiBaseUrl = \"https://localhost:44328/api/\";\r\nconst ApiBaseUrl = \"https://portal.universal.cloud/api/api/\";\r\n\r\nmodule.exports = \r\n{\r\n ApiBaseUrl\r\n}","\r\n/**\r\n * Check if the actualPermissions array contains any permissions from the allowedPermissions array.\r\n * @param {string[]} allowedPermissions Array containing allowed permissions\r\n * @param {string[]} actualPermissions Array containing actual permissions of a user.\r\n * @returns True if actualPermissions contains any permissions from the allowedPermissions array.\r\n */\r\nfunction userHasAnyRequiredPermissions(allowedPermissions, actualPermissions)\r\n{\r\n // If no allowedPermissions are defined, return true (wildcard)\r\n if (allowedPermissions.length === 0)\r\n {\r\n return true;\r\n }\r\n\r\n for (var i = 0; i < allowedPermissions.length; i++)\r\n {\r\n if (actualPermissions.includes(allowedPermissions[i]))\r\n {\r\n return true;\r\n } \r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * Check if the actualPermissions array contains all permissions from the allowedPermissions array.\r\n * @param {string[]} requiredPermissions Array containing required permissions\r\n * @param {string[]} actualPermissions Array containing actual permissions of a user.\r\n * @returns True if actualPermissions contains all permissions from the allowedPermissions array.\r\n */\r\nfunction userHasAllRequiredPermissions(requiredPermissions, actualPermissions)\r\n{\r\n // If no requiredPermissions are defined, return true (wildcard)\r\n if (requiredPermissions.length === 0)\r\n {\r\n return true;\r\n }\r\n\r\n for (var i = 0; i < requiredPermissions.length; i++)\r\n {\r\n if (!actualPermissions.includes(requiredPermissions[i]))\r\n {\r\n return false;\r\n } \r\n }\r\n \r\n return true;\r\n}\r\n\r\nmodule.exports =\r\n{\r\n userHasAnyRequiredPermissions,\r\n userHasAllRequiredPermissions\r\n};"],"sourceRoot":""}