{"version":3,"sources":["images/status_red.svg","images/status_green.svg","images/icon-edit.svg","images/icon-delete.svg","images/icon-warning-large-red.svg","images/icon-success.svg","images/icon-close-white.svg","images/icon-back-prim.svg","images/graphic-enclosures.svg","images/icon-search.svg","images/icon-help.svg","images/icon-user.svg","images/icon-next.svg","images/graphic-facilities.svg","images/icon-facility.svg","images/icon-refresh.svg","images/icon-fullscreen.svg","images/computing-cloud.svg","images/chevron-down.svg","images/icon-nav-enclosures.svg","images/icon-nav-users.svg","images/icon-nav-departments.svg","images/icon-nav-operators.svg","images/icon-warning-white.svg","images/graphic-users.svg","images/graphic-departments.svg","images/graphic-equipment.svg","images/graphic-operators-shadow.svg","images/graphic-operator.svg","images/graphic-operators.svg","images/icon-cycle-frequency.svg","images/icon-add.svg","images/graphic-equipment-single.svg","images/graphic-equipment-multiple.svg","images/icon-warning-small-purple.svg","images/icon-not-communicating.svg","components/common/Auth/PrivateRoute.jsx","services/config.js","helpers/constant.js","services/api.js","helpers/functions.js","components/common/Auth/PublicRoute.jsx","components/common/Header/Profile/EditProfile.jsx","components/common/Header/Header.jsx","components/common/Footer/Footer.jsx","components/common/PullDown/PulldownMenu.jsx","components/common/DotLoading/DotLoading.jsx","components/common/Spinner/Spinner.jsx","components/common/Toaster/ToasterMessage.jsx","components/common/Modal/Modal.jsx","components/common/TextField/TextField.jsx","components/common/Switch/Switch.jsx","components/common/Table/Table.jsx","components/common/Accordion/Accordion.jsx","components/common/Select/Select.jsx","components/login/index.js","components/uv-admin/facilities/Facilities.jsx","components/uv-admin/facilities/ModifyFacilityModal.jsx","components/uv-report/UVReport.jsx","layout/Sub.jsx","components/uv-admin/details/enclosures/Enclosures.jsx","components/uv-admin/details/enclosures/SoftwareSelection.jsx","components/uv-admin/details/enclosures/EditSoftwareModal.jsx","components/uv-admin/details/enclosures/EditEnclosureModal.jsx","components/uv-admin/details/users/Users.jsx","components/uv-admin/details/users/ModifyUser.jsx","components/uv-admin/details/equipments/Equipments.jsx","components/uv-admin/details/departments/Departments.jsx","components/uv-admin/details/departments/EditDepartmentModal.jsx","components/uv-admin/details/operators/Operators.jsx","components/uv-admin/details/operators/ModifyOperatorsModal.jsx","components/uv-admin/details/operators/AddOptions.jsx","components/uv-admin/details/operators/SingleAddModal.jsx","components/uv-admin/details/operators/DeleteModal.jsx","components/uv-admin/details/operators/BulkAddModal.jsx","components/uv-admin/details/equipments/EditEquipmentModal.jsx","components/uv-admin/details/equipments/AddOptions.jsx","components/uv-admin/details/Detail.jsx","components/uv-admin/enclosure-logs/EnclosureLogs.jsx","components/accept_invitation/index.js","components/reset-password/index.js","components/reset-password/InvalidPasswordResetToken.js","routes.js","layout/Main.jsx","App.jsx","serviceWorker.js","index.js"],"names":["module","exports","PrivateRoute","Component","component","authed","rest","render","props","to","pathname","state","from","location","JSON_CONFIG","markInput","toasterMessageType","headerOptions","id","title","path","profileOptions","UVCAdmin","grandHeader","noFacilityDesc","addFacility","editFacility","deleteFacility","deleteQuestion","deleteDescription","loadingScreenMessage","addFacilityModal","key","isRequired","isError","isShow","errorMessage","facilityDetails","loadingMessage","enclosures","grantTitle","noEnclosureDesc","addAnEnclosure","offlineMessage","enclosureModal","softwareSelectionOptions","desc","enclosureDetails","users","noUsersDesc","addAnUsers","addUser","deleteMessage","userModal","headers","width","addUserModal","departments","noDepartmentsDesc","addAnDepartment","departmentModal","equipments","noEquipmentsDesc","addAnEquipments","bulkUpload","deleteEquipmentTypeMessage","deleteEquipmentMessage","addEquipmentNote","overwriteTagIDHelp","equipmentsModal","addEquipmentModal","operators","noOperatorsDesc","duplicateIdHelpText","addAnOperator","operatorModal","addModal","enclosureLogs","UVCFooter","appName","links","iconName","UserProfile","modal","STORAGE","window","localStorage","ERROR_MESSAGE","TOAST_MESSAGE","UVCAcceptInvitation","firstName","lastName","employeeId","department","phone","password","confirmPassword","ResetPassword","newPassword","api","axios","create","baseURL","CONFIG","Pragma","ciis_api","ciis_api_without_version","headerKeys","initialHeader","client","expiry","uid","interceptors","request","use","config","header","browserStorage","getData","objectMapping","error","err","response","Promise","reject","res","savedHeader","saveData","url","method","auth","savedView","delete","then","data","success","isSuccess","clear","setTimeout","replace","formData","post","resp","get","email","payload","put","report","prefix","getFeatured","getGroup","listReports","groupID","viewReport","reportID","downloadReport","responseType","filename","match","fileSaver","saveAs","getFalicities","getFalicitiesByUser","getFalicityById","value","map","user","roles","role","name","version","unshift","updateFacility","facility","patch","fetchOperatorsByFacilityId","search","opt","getDepartmentById","updateUVE","addUVE","userPayload","updateUser","userId","roleName","role_name","deleteUser","resendInvitation","facilityId","user_id","facility_id","addDepartment","updateDepartment","addNewEquipmentByDepartmentId","addNewEquipmentByDepartmentIdWithExistProtocolId","deptId","protId","removeEquipmentType","active","removeEquipment","equipId","searchEquipment","searchValue","addOperator","editOpertor","operatorId","operator","removeOperator","getEnclosureLogs","enclosureId","profile","setItem","JSON","stringify","getItem","charAt","parse","saveSessionData","sessionStorage","getSessionData","removeData","removeItem","primaryObj","secondaryObj","keyArr","Object","keys","filter","includes","reduce","obj","sq","num","pastDateCalculator","pastTimeStamp","times","d","Date","diff","now","getTime","Math","floor","formatRole","isLogin","ciisToken","existFlag","_","forEach","undefined","cleanObject","validateEmail","test","String","toLowerCase","PublicRoute","DialogTitle","children","onClose","classes","other","disableTypography","className","onClick","src","iconClose","alt","EditProfile","componentDidUpdate","prevProps","isUserSessionExpire","handleClose","onChange","val","AsYouType","input","setState","prevState","formValue","formValidation","stateProfile","acc","curr","push","Boolean","find","updateProfile","isProcessing","first_name","last_name","employee_id","phone_number","userAPI","toasterMessage","toasterType","catch","handleError","status","errors","hasOwnProperty","handleRemoveInputError","this","open","Fragment","icon","iconError","iconSuccess","cb","Dialog","aria-labelledby","DialogContent","Grid","container","spacing","justify","alignItems","field","item","xs","requiredStyle","errorName","e","onFocus","DialogActions","fullscreen","React","Header","isPullDownMenuOpen","isOpen","ciisUserInfo","pullDownMenuRef","createRef","componentWillUnmount","removeEventListener","handleOutsidePulldownClick","current","contains","target","setHeaderMenuFlag","handleRedirect","history","handleOpenEditProfile","logout","handleCloseEditProfile","redefinedName","addEventListener","currentPath","split","Badge","max","color","badgeContent","colorPrimary","preventDefault","Notifications","ref","iconuser","withRouter","Footer","currentDate","isShowSublinks","setActiveSubTab","getFullYear","link","index","PulldownMenu","classNames","DotLoading","Spinner","ToasterMessageTemplate","ToasterMessage","closeToaster","reason","actionFn","actionTitle","isPersistent","Snackbar","anchorOrigin","vertical","horizontal","disableWindowBlurListener","message","autoHideDuration","Modal","loading","content","action","TextField","containerStyle","style","maxLength","Switch","setValue","checked","disabled","type","CustomizeTable","pagination","TableContainer","Table","stickyHeader","TableHead","TableRow","TableCell","align","root","minWidth","maxWidth","variant","TableBody","CustomizeAccordion","isOpenTitle","mouseEnter","scrollWidth","clientWidth","titleStyle","badge","additionalInfo","Accordion","elevation","AccordionSummary","aria-controls","iconChevronNext","Tooltip","placement","disableHoverListener","onMouseEnter","AccordionDetails","CustomizeSelect","options","indx","handleChange","required","onOpen","FormControl","InputLabel","shrink","Select","labelId","displayEmpty","IconComponent","KeyboardArrowDown","el","MenuItem","overflow","textOverflow","FormHelperText","Login","onLogin","event","username","loginError","isLoginProcessing","authAPI","length","loggedIn","isNoRoles","savedFacility","info","featureReport","facilityReport","setUsername","resetPassword","inputError","currentTab","forgotEmail","onChangeHandler","nam","handleKeypress","charCode","tab","placeholder","autoFocus","onKeyPress","ADD","UVAdmin","facilities","isOpenAddr","closeAndResetForm","isAddFacilityModalOpen","selectedFacility","getFacilitiesByUser","isLoading","reportAPI","singleFacility","totalEquipments","dept","getFacilityId","addrFacility","address_1","address_2","city","zip","facilityAction","setStackToaster","flex","alignContent","md","lg","xl","padding","stopPropagation","iconEdit","iconFacility","Typography","addrElementRef","iconNoFacility","onSubmit","mes","opts","ModifyFacilityModal","initialState","facilityModals","facilityInfo","stopFlag","componentDidMount","initializeModal","excludedKey","stateData","stateModal","modifyFacility","fiteredNewFacility","errorModal","indexOf","result","assign","pbiKeys","UVReport","onGetFeaturedReport","resetActivityTimer","userActive","refreshFlag","isReportLoaded","userFacilities","isEmpty","featuredReport","resolve","console","log","showReport","showOtherReport","visualPage1","visualPage2","visualPage3","currentSelectedReport","setReportTimer","expiration","getOtherReports","reponse","alert","total","items","otherReportID","othergroupID","enableOtherReport","viewOtherReports","otherReport","tokenExpiration","currentTime","timeout","showToasterMessage","timerID","clearTimeout","refreshReport","displayToaster","setNewFilter","onReportLoaded","onPageChanged","setNewFilterUsingVisual","getPages","pages","activePage","page","isActive","setVisualOnPage","savedFacilites","checkedFacilities","curMonth","getMonth","toString","curDate","getDate","curDateString","padStart","setMonth","sixMonth","dateFilter","$schema","table","column","logicalOperator","conditions","filterType","models","FilterType","Advanced","getVisuals","visuals","visual","setSlicerState","filters","setUpFacilityCheckboxes","onReportRendered","savedInfo","view","requests","exportData","ExportDataType","Summarized","getSlicerState","all","visualizeFacilities","transformPBIExportData","filteredFacilities","filterPullDownFacilities","finally","onShowOtherReport","featuredChecked","onFeaturedReport","onFullscreen","mode","visualFacilities","values","vf","trim","uf","isReportDownload","isDownloadError","isChartType","dataArr","shift","checkboxesListView","isHeaderMenu","iconrefresh","readOnly","htmlFor","iconDownload","height","iconChevronDown","textTransform","iconFullscreen","position","embedConfig","embedUrl","embed_url","accessToken","token","tokenType","TokenType","Embed","cssClassName","eventHandlers","Map","getEmbeddedComponent","embeddedReport","settings","navContentPanelEnabled","layoutType","LayoutType","Custom","customLayout","displayOption","DisplayOption","FitToPage","fullscreenMode","Sub","activeNavItem","activeTab","iconRender","iconEnclosures","iconUsers","iconDepartments","iconOperators","changeActiveNabItem","setActiveTab","loadingTitle","Enclosures","selectedEnclosure","isEditVersionModalOpen","isEditEnclosureModalOpen","enclosureAction","isOpenLocation","isOpenUdi","isOpenLastCI","softwareVersions","fetchFacilityDetail","setToaster","enclosure","sm","iconWarning","versions","msg","SoftwareSelection","setVersion","selectedVersion","EditSoftwareModal","softwareOptions","isUVESoftwareProcessing","transformVersion","versionName","possibleVersion","ver","updateSoftware","toISOString","nickname","software_version","FormControlLabel","control","Checkbox","disableRipple","disableFocusRipple","label","EditEnclosureModal","selectedSoftwareOption","isResetPassword","isUVEProcessing","isPasswordError","configurationTypes","passwordFields","renderInitialValue","onChangeChecked","isPassword","slice","editEnclosure","addEnclosure","omit","updatedEnclosure","callback","toggleResetPassword","autoComplete","Users","rowsPerPage","currentPage","userAction","isEditUserModal","selectedUser","openModifyUserModal","row","hover","iconDelete","Pagination","count","ceil","ul","showFirstButton","showLastButton","size","shape","iconEmptyUsers","showFlag","reloadFlag","ModifyUser","isAddAnotherUser","userRoles","isReloadNeeded","submitUser","isFormValidated","errEmailInput","errUserRoleInput","modifyUserModalConstants","warningIcon","ADD_EQUIPMENT","BULK_ADD_EQUIPMENT","Equipments","isSearchProcessing","typingTimer","handleChangeSearch","getEquipmentbySearch","setEmptySeachData","searchData","equipmentInfo","handleOpenDeparmentDialog","handleOpenEquipmentDialog","setSelectedEquipmentType","setSelectedEquipment","groupedEquipment","iconSearch","defaultExpanded","protocols","equipment_type_name","iconNoEquipments","Departments","selectedDepartment","equipmentGeneralInfo","isEditDepartmentModal","modalDepartment","equipmentAction","isEditEquipmentDialog","selectedEquipmentType","selectedEquipment","isAddEquipmentFired","handleGetDepartmentBasedOnFlag","savedDepartment","newDepartment","some","savedDept","getDeparmentsInfo","reGroupEquipments","deptInfo","stateKey","types","protocol","groupedEquipments","groupBy","onChangeDepartment","zeroMinWidth","iconNoDepartments","setAddEquipmentFired","equipment","EditDepartmentModal","isDepartmentProcessing","newDeparment","Operators","searchText","operatorAction","isEditOperatorModal","selectedOperator","searchedOperators","ungroupedOperators","getOperators","reGroupOperators","searchOperator","onSearchChange","typeData","isOpenName","isOpenBadge","rawOperators","ModifyOperator","setInitialValue","filteredDepartments","switchTab","handleSubmit","number","changeTitle","closeForm","setTab","submit","goBack","AddOptions","singleOperator","bulkOperators","SingleAddModal","operatorPayload","isOperatorProcessing","clearModalError","initialModal","addNewOperator","editOperator","initialEquipmentPayload","equipmentPayload","marginTop","DeleteModal","deleteOperator","BulkAddModal","uploadedFile","isOverwriteDuplicateId","uploadFieldRef","handleUpload","files","onInputClick","addBulkOperator","FormData","append","operators_upload","margin","borderTop","href","accept","EditEquipment","newEquipmentType","isAddNewType","newTypeError","selectedTypeFrequency","isEditSelectedTypeFrequency","equipmentModal","isOverwriteDupId","isEquipmentProcessing","isEquipmentTypeDeclared","hideAddNewType","isTempEquipmentExist","isEditEquipmentTypeName","newEquipmentTypeName","indicatorRef","cycleRef","default","equipmentList","equipment_types","setSelectedType","prot","equipment_type_id","frequency","tag_id","scrollIntoView","behavior","block","base","addTemporaryEquipmentType","tempEquipmentType","equipment_id","addNewEquipment","protocolId","bulkUploadEquipment","equipment_items_upload","dataWithNewType","editEquipmentType","equipmentType","titleRender","isCreate","arrActions","Close","Check","iconAdd","iconCycle","iconSuccessBlue","tooltipPlacementTop","iconHelp","openDialog","singleEquipment","bulkEquipments","Detail","selectedId","currentSubTab","isEditFacilityModalOpen","addFacilityFields","isSubmitting","params","getFacilityDetail","onBack","transformUsers","userList","updateRole","iconBack","EnclosureLogs","isLogsLoading","getFacilities","pstTimeConverter","setSelectedFacility","logs","flatten","connectionStatusRendering","ok","iconLostConnection","utcTime","pstDate","toLocaleString","timeZone","enCloseureMouseEnter","justifyContent","udi","TextMaskCustom","inputRef","inputElement","mask","placeholderChar","showMask","initForm","isRequire","messageError","AcceptInvitation","useLocation","enqueueSnackbar","useSnackbar","useState","forms","setForms","setIsProcessing","formatPhoneNumber","isNaN","join","trimText","text","trimStart","trimEnd","onCreateAccount","a","oldForms","invalid","getPhone","invitation_token","profile_attributes","password_confirmation","origin","reload","newForms","require","Input","inputComponent","SendResetPassword","useHistory","setCurrentTab","URLSearchParams","useEffect","tempHeaders","setMessage","form","onResetPassword","InvalidPasswordResetToken","routes","FacilityDetails","exact","redirect","pathTo","actionEvents","MainLayout","ciisInfo","userSessionCouting","checkLoggedIn","evt","clearInterval","interval","handleOpenStackSnackbar","handleCloseStackSnackbar","closeSnackbar","sessionWarning","offsetTime","expiryDate","getTimeout","parseInt","timeoutWarning","showExpireModal","showExpireToaster","expireTimeId","warningTimeId","persist","refresh","isShowUserExpiredToaster","refreshPBIKey","otherReports","groups","reports","reportId","groupId","adminUser","onLogout","isLoggingOut","userExpireCleanUp","isHeaderMenuOpen","prop","isUVCAdmin","performance","getEntriesByType","withSnackbar","theme","createMuiTheme","breakpoints","App","intervalLimit","ThemeProvider","maxSnack","hideIconVariant","ciisUser","hostname","ReactDOM","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"mGAAAA,EAAOC,QAAU,IAA0B,wC,mBCA3CD,EAAOC,QAAU,IAA0B,0C,6CCA3CD,EAAOC,QAAU,IAA0B,uC,2BCA3CD,EAAOC,QAAU,IAA0B,yC,qBCA3CD,EAAOC,QAAU,IAA0B,oD,2SCA3CD,EAAOC,QAAU,IAA0B,0C,wBCA3CD,EAAOC,QAAU,IAA0B,8C,qBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,yC,wBCA3CD,EAAOC,QAAU,IAA0B,uC,mDCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,iBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,kD,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,sD,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,iBCA3CD,EAAOC,QAAU,IAA0B,kD,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,sD,gBCA3CD,EAAOC,QAAU,IAA0B,wD,gBCA3CD,EAAOC,QAAU,IAA0B,uD,gBCA3CD,EAAOC,QAAU,IAA0B,oD,moBCe5BC,EAZM,SAAC,GAAD,IAAcC,EAAd,EAAGC,UAAsBC,EAAzB,EAAyBA,OAAWC,EAApC,6CAGjB,kBAAC,IAAD,iBACQA,EADR,CAEIC,OAAQ,SAACC,GAAD,OAAsB,IAAXH,EACb,kBAACF,EAAcK,GACjB,kBAAC,IAAD,CAAUC,GAAI,CAACC,SAAU,SAAUC,MAAO,CAACC,KAAMJ,EAAMK,kB,yBCRpD,EAEE,WACT,OAAOC,EAAW,aAHX,EAUS,WAChB,OAAOA,EAAW,oBAXX,EAcY,WACnB,OAAOA,EAAW,qBAfX,EAkBS,WAChB,OAAOA,EAAW,gBAnBX,EAsBW,WAClB,OAAOA,EAAW,kB,kBCpBbC,EAAY,CACvB,IACA,QACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,MAGWC,EACF,EADEA,EAEJ,EAGIC,EAAgB,CAC3B,CACEC,GAAI,mBACJC,MAAO,QACPC,KAAM,eAER,CACEF,GAAI,oBACJC,MAAO,UACPC,KAAM,YAIGC,EAAiB,CAC5B,CACEH,GAAI,iBACJC,MAAO,eACPC,KAAM,gBAER,CACEF,GAAI,gBACJC,MAAO,SACPC,KAAM,OAIGE,EAAW,CACtBC,YAAa,gBACbC,eAAgB,oCAChBC,YAAa,iBACbC,aAAc,gBACdC,eAAgB,sBAChBC,eAAgB,kCAChBC,kBACE,oEACFC,qBAAsB,wBACtBC,iBAAkB,CAChB,CACEC,IAAK,OACLb,MAAO,gBACPc,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,aAAc,IAEhB,CACEJ,IAAK,YACLb,MAAO,YACPc,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,aAAc,IAEhB,CACEJ,IAAK,YACLb,MAAO,YACPc,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,aAAc,IAEhB,CACEJ,IAAK,OACLb,MAAO,OACPc,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,aAAc,IAEhB,CACEJ,IAAK,QACLb,MAAO,wBACPc,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,aAAc,IAEhB,CACEJ,IAAK,MACLb,MAAO,kBACPc,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,aAAc,IAEhB,CACEJ,IAAK,KACLb,MAAO,cACPc,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,aAAc,KAIlBC,gBAAiB,CACfC,eAAgB,yCAChBC,WAAY,CACVC,WAAY,gBACZC,gBAAiB,oCACjBC,eAAgB,gBAChBC,eACE,kFACFC,eAAgB,CACd,CACEZ,IAAK,WACLb,MAAO,IAET,CACEa,IAAK,gBACLb,MAAO,mBAET,CACEa,IAAK,WACLb,MAAO,YAET,CACEa,IAAK,2BACLb,MAAO,sBAET,CACEa,IAAK,MACLb,MAAO,OAET,CACEa,IAAK,qBACLb,MAAO,sBAET,CACEa,IAAK,mBACLb,MAAO,OAGX0B,yBAA0B,CACxB,CACEb,IAAK,cACLc,KAAM,6BAER,CACEd,IAAK,uBACLc,KAAM,4CAER,CACEd,IAAK,wBACLc,KAAM,4CAER,CACEd,IAAK,mBACLc,KAAM,8BAER,CACEd,IAAK,uBACLc,KAAM,4CAER,CACEd,IAAK,oBACLc,KAAM,2CAER,CACEd,IAAK,uBACLc,KAAM,wCAGVC,iBAAkB,CAChB,CACEf,IAAK,WACLb,MAAO,eACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,MACLb,MAAO,MACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,WACLb,MAAO,uBACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,qBACLb,MAAO,cACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,2BACLb,MAAO,sCACPgB,QAAQ,GAEV,CACEH,IAAK,gCACLG,QAAQ,GAEV,CACEH,IAAK,WACLb,MAAO,WACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,wBACLb,MAAO,mBACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,KAIda,MAAO,CACLR,WAAY,QACZS,YAAa,+BACbC,WAAY,cACZC,QAAS,WACTC,cAAe,6BACfC,UAAW,CACTC,QAAS,CACP,CACEtB,IAAK,OACLb,MAAO,OACPgB,QAAQ,GAEV,CACEH,IAAK,QACLb,MAAO,QACPgB,QAAQ,EACRoB,MAAO,SAET,CACEvB,IAAK,YACLb,MAAO,OACPgB,QAAQ,EACRoB,MAAO,SAET,CACEvB,IAAK,qBACLb,MAAO,GACPgB,QAAQ,EACRoB,MAAO,SAET,CACEvB,IAAK,KACLb,MAAO,GACPgB,QAAQ,GAEV,CACEH,IAAK,kBACLb,MAAO,GACPgB,QAAQ,EACRoB,MAAO,SAET,CACEvB,IAAK,UACLb,MAAO,GACPgB,QAAQ,EACRoB,MAAO,UAGXC,aAAc,CACZ,CACExB,IAAK,QACLb,MAAO,QACPc,YAAY,EACZ,UAAW,GAEb,CACED,IAAK,YACLb,MAAO,OACPc,YAAY,EACZ,UAAW,MAKnBwB,YAAa,CACXjB,WAAY,cACZkB,kBAAmB,qCACnBC,gBAAiB,oBACjBC,gBAAiB,CACf,CACE5B,IAAK,QACLb,MAAO,kBACPc,YAAY,EACZC,SAAS,EACTE,aAAc,GACdD,QAAQ,KAId0B,WAAY,CACVrB,WAAY,YACZsB,iBAAkB,6CAClBC,gBAAiB,iBACjBC,WAAY,cACZC,2BAA4B,uCAC5BC,uBAAwB,kCACxBC,iBACE,iHACFC,mBACE,oKACFC,gBAAiB,CACff,QAAS,CACP,CACEtB,IAAK,SACLb,MAAO,mBACPoC,MAAO,QACPpB,QAAQ,GAEV,CACEH,IAAK,eACLb,MAAO,eACPoC,MAAO,QACPpB,QAAQ,GAEV,CACEH,IAAK,yBACLb,MAAO,aACPgB,QAAQ,GAEV,CACEH,IAAK,iBACLb,MAAO,GACPgB,QAAQ,GAEV,CACEH,IAAK,KACLb,MAAO,GACPgB,QAAQ,GAEV,CACEH,IAAK,cACLb,MAAO,GACPgB,QAAQ,GAEV,CACEH,IAAK,SACLb,MAAO,GACPgB,QAAQ,IAGZmC,kBAAmB,CACjB,CACEtC,IAAK,SACLb,MAAO,mBACPgB,QAAQ,EACRF,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,IAEhB,CACEJ,IAAK,eACLb,MAAO,eACPgB,QAAQ,EACRF,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,IAEhB,CACEJ,IAAK,4BACLb,MAAO,GACPgB,QAAQ,EACRF,YAAY,EACZ,UAAW,GACXC,SAAS,EACTE,aAAc,IAEhB,CACEJ,IAAK,oBACLb,MAAO,GACPgB,QAAQ,EACRF,YAAY,EACZ,UAAW,GACXC,SAAS,EACTE,aAAc,IAEhB,CACEJ,IAAK,YACLb,MAAO,GACPgB,QAAQ,EACRF,YAAY,EACZ,UAAW,GACXC,SAAS,EACTE,aAAc,OAKtBmC,UAAW,CACTjC,eAAgB,uBAChBE,WAAY,YACZY,cAAe,mCACfoB,gBAAiB,mCACjBC,oBACE,oJACFC,cAAe,iBACfC,cAAe,CACbrB,QAAS,CACP,CACEtB,IAAK,OACLb,MAAO,OACPoC,MAAO,QACPpB,QAAQ,GAEV,CACEH,IAAK,WACLb,MAAO,WACPgB,QAAQ,GAEV,CACEH,IAAK,gBACLb,MAAO,gBACPgB,QAAQ,GAEV,CACEH,IAAK,kBACLb,MAAO,kBACPgB,QAAQ,GAEV,CACEH,IAAK,KACLb,MAAO,GACPgB,QAAQ,IAGZyC,SAAU,CACR,CACE5C,IAAK,aACLb,MAAO,aACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,YACLb,MAAO,YACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,WACLb,MAAO,WACPc,YAAY,EACZ,UAAW,GACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,8BACLb,MAAO,iCACPc,YAAY,EACZ,UAAW,GACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,gBACLb,MAAO,aACPc,YAAY,EACZ,UAAW,GACXC,SAAS,EACTE,aAAc,GACdD,QAAQ,GAEV,CACEH,IAAK,KACLb,MAAO,GACPgB,QAAQ,OAOlB0C,cAAe,CACbvB,QAAS,CACP,CACEtB,IAAK,eACLb,MAAO,YACPoC,MAAO,QACPpB,QAAQ,GAEV,CACEH,IAAK,aACLb,MAAO,aACPoC,MAAO,QACPpB,QAAQ,GAEV,CACEH,IAAK,oBACLb,MAAO,gBACPgB,QAAQ,GAEV,CACEH,IAAK,KACLb,MAAO,GACPgB,QAAQ,MAMH2C,EAAY,CACvBC,QAAS,cACTC,MAAO,CACL,CACEhD,IAAK,sBACLb,MAAO,gBACP8D,SAAU,kBAEZ,CACEjD,IAAK,kBACLb,MAAO,QACP8D,SAAU,aAEZ,CACEjD,IAAK,wBACLb,MAAO,cACP8D,SAAU,mBAEZ,CACEjD,IAAK,qBACLb,MAAO,YACP8D,SAAU,mBAKHC,EAAc,CACzB/D,MAAO,eACPgE,MAAO,CACL,CACEnD,IAAK,aACLb,MAAO,aACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,IAEhB,CACEJ,IAAK,YACLb,MAAO,YACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,IAEhB,CACEJ,IAAK,QACLb,MAAO,QACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,IAEhB,CACEJ,IAAK,cACLb,MAAO,cACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,IAEhB,CACEJ,IAAK,aACLb,MAAO,aACPc,YAAY,EACZ,UAAW,GACXC,SAAS,EACTE,aAAc,IAEhB,CACEJ,IAAK,eACLb,MAAO,QACPc,YAAY,EACZ,UAAW,EACXC,SAAS,EACTE,aAAc,MAKPgD,EAAUC,OAAOC,aAIjBC,EACK,iBADLA,EAEI,gBAFJA,EAGa,yBAHbA,EAIE,yCAJFA,EAKO,uBAGPC,EACO,8BADPA,EAGT,iEAHSA,EAIgB,0BAJhBA,EAMT,iEANSA,EAOK,gCAPLA,EAQe,2BARfA,EASI,gBATJA,EAUI,+EAGJC,EACJ,oBADIA,EAGT,2EAHSA,EAID,WAJCA,EAKJ,CACLC,UAAW,aACXC,SAAU,YACVxE,MAAO,QACPyE,WAAY,cACZC,WAAY,aACZC,MAAO,QACPC,SAAU,WACVC,gBAAiB,oBAbRP,GAeU,iBAGVQ,GACJ,iBADIA,GAEE,iCAFFA,GAIJ,CACLC,YAAa,wBACbF,gBAAiB,oBANRC,GAQU,kBCzpBjBE,GAAMC,IAAMC,OAAO,CACvBC,QAASC,IACTjD,QAAS,CAAE,gBAAiB,WAAYkD,OAAQ,cAG5CC,GAAWL,IAAMC,OAAO,CAC5BC,QAASC,IARY,MASrBjD,QAAS,CAAE,gBAAiB,WAAYkD,OAAQ,cAG5CE,GAA2BN,IAAMC,OAAO,CAC5CC,QAASC,IACTjD,QAAS,CAAE,gBAAiB,WAAYkD,OAAQ,cAG5CG,GAAa,CAAC,eAAgB,SAAU,SAAU,aAAc,OAChEC,GAAgB,CACpB,eAAgB,KAChBC,OAAQ,KACRC,OAAQ,KACR,aAAc,KACdC,IAAK,MAGPZ,GAAIa,aAAaC,QAAQC,KACvB,SAAUC,GACR,IAAMC,EAASC,GAAeC,QAAQ,UAKtC,OAJe,OAAXF,IACFD,EAAO7D,QAAUiE,GAAcH,EAAQ,KAAMT,KAGxCQ,KAET,SAAUK,GAER,IAAMC,EAAMD,EAAME,SACZN,EAASC,GAAeC,QAAQ,UAItC,OAHe,OAAXF,IACFK,EAAInE,QAAUiE,GAAcH,EAAQ,KAAMT,KAErCgB,QAAQC,OAAOJ,MAI1BrB,GAAIa,aAAaU,SAASR,KACxB,SAAUW,GACR,IAAMC,EAAcT,GAAeC,QAAQ,UAC3C,GAAIO,EAAIvE,QAAQ,gBAAiB,CAC/B,IAAM8D,EAASG,GAAcM,EAAIvE,QAASwE,EAAanB,IACvDU,GAAeU,SAAS,SAAUX,GAEpC,OAAOS,KAET,SAAUL,GAER,GAAIA,GAASA,EAAME,SAAU,CAC3B,IAAMD,EAAMD,EAAME,SACZI,EAAcT,GAAeC,QAAQ,UAC3C,GAAIG,EAAInE,QAAQ,gBAAiB,CAC/B,IAAM8D,EAASG,GAAcE,EAAInE,QAASwE,EAAanB,IACvDU,GAAeU,SAAS,SAAUX,IAGtC,OAAOO,QAAQC,OAAOJ,MAM1Bf,GAASO,aAAaC,QAAQC,KAC5B,SAAUC,GACR,IAAMC,EAASC,GAAeC,QAAQ,UAKtC,OAJe,OAAXF,IACFD,EAAO7D,QAAUiE,GAAcH,EAAQ,KAAMT,KAGxCQ,KAET,SAAUK,GAER,IAAMC,EAAMD,EAAME,SACZN,EAASC,GAAeC,QAAQ,UAItC,OAHe,OAAXF,IACFK,EAAInE,QAAUiE,GAAcH,EAAQ,KAAMT,KAErCgB,QAAQC,OAAOJ,MAI1Bf,GAASO,aAAaU,SAASR,KAC7B,SAAUW,GACR,IAAMC,EAAcT,GAAeC,QAAQ,UAC3C,GAAIO,EAAIvE,QAAQ,gBAAiB,CAC/B,IAAM8D,EAASG,GAAcM,EAAIvE,QAASwE,EAAanB,IACvDU,GAAeU,SAAS,SAAUX,GAEpC,OAAOS,KAET,SAAUL,GAER,GAAIA,GAASA,EAAME,SAAU,CAC3B,IAAMD,EAAMD,EAAME,SACZI,EAAcT,GAAeC,QAAQ,UAC3C,GAAIG,EAAInE,QAAQ,gBAAiB,CAC/B,IAAM8D,EAASG,GAAcE,EAAInE,QAASwE,EAAanB,IACvDU,GAAeU,SAAS,SAAUX,IAGtC,OAAOO,QAAQC,OAAOJ,MAI1Bd,GAAyBM,aAAaC,QAAQC,KAC5C,SAAUC,GACR,IAAMa,EAAMb,EAAOa,IACbC,EAASd,EAAOc,OAClBb,EAASC,GAAeC,QAAQ,UAUpC,MARY,kBAARU,GAAsC,QAAXC,IAC7Bb,EAASC,GAAeC,QAAQ,gBAGnB,OAAXF,IACFD,EAAO7D,QAAUiE,GAAcH,EAAQ,KAAMT,KAGxCQ,KAET,SAAUK,GAER,IAAMC,EAAMD,EAAME,SACZN,EAASC,GAAeC,QAAQ,UAItC,OAHe,OAAXF,IACFK,EAAInE,QAAUiE,GAAcH,EAAQ,KAAMT,KAErCgB,QAAQC,OAAOJ,MAI1Bd,GAAyBM,aAAaU,SAASR,KAC7C,SAAUW,GACR,IAAMG,EAAMH,EAAIV,OAAOa,IACjBC,EAASJ,EAAIV,OAAOc,OACtBH,EAAcT,GAAeC,QAAQ,UACrCtF,EAAM,SAMV,GALY,kBAARgG,GAAsC,QAAXC,IAC7BH,EAAcT,GAAeC,QAAQ,eACrCtF,EAAM,eAGJ6F,EAAIvE,QAAQ,gBAAiB,CAC/B,IAAM8D,EAASG,GAAcM,EAAIvE,QAASwE,EAAanB,IACvDU,GAAeU,SAAS/F,EAAKoF,GAE/B,OAAOS,KAET,SAAUL,GAER,GAAIA,GAASA,EAAME,SAAU,CAC3B,IAAMD,EAAMD,EAAME,SACZM,EAAMP,EAAIN,OAAOa,IACjBC,EAASR,EAAIN,OAAOc,OACtBH,EAAcT,GAAeC,QAAQ,UACrCtF,EAAM,SAKV,GAJY,kBAARgG,GAAsC,QAAXC,IAC7BH,EAAcT,GAAeC,QAAQ,eACrCtF,EAAM,eAEJyF,EAAInE,QAAQ,gBAAiB,CAC/B,IAAM8D,EAASG,GAAcE,EAAInE,QAASwE,EAAanB,IACvDU,GAAeU,SAAS/F,EAAKoF,IAGjC,OAAOO,QAAQC,OAAOJ,MAMnB,IAAMU,GASH,WAEN,IAAMC,EAAYd,GAAeC,QAAQ,iBACnCF,EAASC,GAAeC,QAAQ,UAEtCZ,GACG0B,OAAO,gBAAiBhB,GACxBiB,MAAK,SAACR,GACL,OAAOA,EAAIS,KAAKC,WAEjBF,MAAK,SAACG,GACDA,IACFpD,EAAQqD,QACRpB,GAAeU,SAAS,gBAAiBI,OAG5CE,MAAK,kBACJK,YACE,kBAAMrD,OAAOxE,SAAS8H,QAAQ,+BAC9B,SA5BGT,GA6CC,SAACU,GAAD,OACVlC,GACGmC,KADH,eACwBD,EAAU,CAC9BtF,QAASsD,KAEVyB,MAAK,SAACS,GAEL,OADcA,EAAKR,KAAKA,SAnDnBJ,GAuDK,kBACdxB,GAAyBqC,IAAzB,uBAAoDV,MAAK,SAACS,GACxD,OAAOA,EAAKR,KAAKA,SAzDVJ,GA4DI,SAACc,GAAD,OACbtC,GACGmC,KAAK,gBAAiB,CAAE,MAASG,EAAO,aAAgB,oBACxDX,MAAK,SAACS,GAEL,OADcA,EAAKR,SAhEdJ,GAmEC,SAACe,GAAD,OACVvC,GACGwC,IAAI,gBAAiBD,EAAS,CAC7B3F,QAASsD,KAEVyB,MAAK,SAACS,GAEL,OADcA,EAAKR,SAzEdJ,GA4EQ,SAACe,GAAD,OACjBvC,GACGwC,IAAI,gBAAiBD,GACrBZ,MAAK,SAACS,GAEL,OADcA,EAAKR,SAOda,GAAS,CACpBC,OAAO,MAEPC,YAAa,kBACXlD,GAAI4C,IAAJ,UAAWI,GAAOC,OAAlB,iBAAwCf,MAAK,SAACS,GAE5C,OADcA,EAAKR,SAIvBgB,SAAU,kBACRnD,GAAI4C,IAAJ,UAAWI,GAAOC,OAAlB,cAAqCf,MAAK,SAACS,GAEzC,OADcA,EAAKR,SAIvBiB,YAAa,SAACC,GAAD,OACXrD,GAAI4C,IAAJ,UAAWI,GAAOC,OAAlB,qBAAqCI,IAAWnB,MAAK,SAACS,GAEpD,OADcA,EAAKR,SAIvBmB,WAAY,SAACD,EAASE,GAAV,OACVvD,GACG4C,IADH,UACUI,GAAOC,OADjB,4BAC2CI,EAD3C,YACsDE,IACnDrB,MAAK,SAACS,GAEL,OADcA,EAAKR,SAKzBqB,eAAgB,SAACzI,GAAD,OACduF,GACGsC,IADH,sBACsB7H,EADtB,yBACiD,CAC7C0I,aAAc,SAEfvB,MAAK,SAACS,GACL,IACIe,EADSf,EAAKxF,QAAQ,uBACJwG,MAAM,mBAAmB,GAC/CC,IAAUC,OAAOlB,EAAKR,KAAMuB,OAGlCI,cAAe,kBACbxD,GAASsC,IAAT,uBAAoCV,MAAK,SAACR,GAExC,OADcA,EAAIS,SAGtB4B,oBAAqB,kBACnBzD,GAASsC,IAAT,eAA4BV,MAAK,SAACR,GAEhC,OADcA,EAAIS,SAItB6B,gBAAiB,SAACjJ,GAAD,OACfuF,GAASsC,IAAT,sBAA4B7H,IAAMmH,MAAK,SAACR,GACtC,IAAMuC,EAAQvC,EAAIS,KAuBlB,OAtBA8B,EAAMpH,MAAMqH,KAAI,SAACC,GAYf,OAXAA,EAAKC,MAAMF,KAAI,SAACG,GAGd,OAFAA,EAAI,UAAgBA,EAAKC,YAClBD,EAAKC,KACLD,KAELF,EAAI,mBACNA,EAAI,mBAAyB,MAE7BA,EAAI,mBAAyB,KAGxBA,KAETF,EAAK,kBAAsBC,KAAI,SAACK,GAK9B,OAJAA,EAAO,IAAUA,EAAQxJ,GACzBwJ,EAAO,MAAYA,EAAQA,eACpBA,EAAQxJ,UACRwJ,EAAQA,QACRA,KAETN,EAAK,kBAAsBO,QAAQ,CAAE3I,KAAM,EAAGb,MAAO,SAC9CiJ,MAGXQ,eAAgB,SAAC1J,EAAI2J,GAAL,OACdpE,GAASqE,MAAT,sBAA8B5J,GAAM2J,GAAUxC,MAAK,SAACR,GAElD,OADcA,EAAIS,SAItB7G,YAAa,SAACoJ,GAAD,OACXpE,GAASoC,KAAK,cAAegC,GAAUxC,MAAK,SAACR,GAE3C,OADcA,EAAIS,SAItByC,2BAA4B,SAAC7J,EAAI8J,GAC/B,OAAIA,EACKvE,GACJsC,IADI,sBACe7H,EADf,6BACsC8J,IAC1C3C,MAAK,SAACR,GACL,IAAMuC,EAAQvC,EAAIS,KAOlB,OANA8B,EAAMC,KAAI,SAACY,GAIT,OAHAA,EAAG,KAAH,UAAiBA,EAAG,WAApB,YAAsCA,EAAG,kBAClCA,EAAG,kBACHA,EAAG,UACHA,KAEFb,KAGJ3D,GAASsC,IAAT,sBAA4B7H,EAA5B,eAA4CmH,MAAK,SAACR,GACvD,IAAMuC,EAAQvC,EAAIS,KAKlB,OAJA8B,EAAMC,KAAI,SAACY,GAET,OADAA,EAAG,KAAH,UAAiBA,EAAG,WAApB,YAAsCA,EAAG,WAClCA,KAEFb,MAKbc,kBAAmB,SAAChK,GAAD,OACjBuF,GAASsC,IAAT,uBAA6B7H,IAAMmH,MAAK,SAACR,GAEvC,OADcA,EAAIS,SAItB6C,UAAW,SAACjK,EAAIoH,GAAL,OACT7B,GAASqE,MAAT,sBAA8B5J,GAAMoH,GAAMD,MAAK,SAACR,GAE9C,OADcA,EAAIS,SAItB8C,OAAQ,SAAC9C,GAAD,OACN7B,GAASoC,KAAT,cAA6BP,GAAMD,MAAK,SAACR,GAEvC,OADcA,EAAIS,SAItBnF,QAAS,SAACjC,EAAImK,GAAL,OACP5E,GAASoC,KAAT,sBAA6B3H,EAA7B,UAAyCmK,GAAahD,MAAK,SAACR,GAE1D,OADcA,EAAIS,SAItBgD,WAAY,SAACpK,EAAIqK,EAAQC,GAAb,OACV/E,GACGqE,MADH,sBACwB5J,EADxB,kBACoCqK,GAAU,CAAEE,UAAWD,IACxDnD,MAAK,SAACR,GAEL,OADcA,EAAIS,SAIxBoD,WAAY,SAACxK,EAAIqK,GAAL,OACV9E,GACGqE,MADH,sBACwB5J,EADxB,kBACoCqK,GAAU,CAAEE,UAAW,KACxDpD,MAAK,SAACR,GAEL,OADcA,EAAIS,SAIxBqD,iBAAkB,SAACC,EAAYL,GAAb,OAChB9E,GACGoC,KADH,sBAC+B,CAAEgD,QAASN,EAAQO,YAAaF,IAC5DvD,MAAK,SAACR,GAEL,OADcA,EAAIS,SAGxByD,cAAe,SAACzD,GAAD,OACb7B,GAASoC,KAAT,eAA8BP,GAAMD,MAAK,SAACR,GAExC,OADcA,EAAIS,SAGtB0D,iBAAkB,SAAC9K,EAAIoH,GAAL,OAChB7B,GAASqE,MAAT,uBAA+B5J,GAAMoH,GAAMD,MAAK,SAACR,GAE/C,OADcA,EAAIS,SAGtB2D,8BAA+B,SAAC/K,EAAIoH,GAAL,OAC7B7B,GAASoC,KAAT,uBAA8B3H,EAA9B,cAA8CoH,GAAMD,MAAK,SAACR,GAExD,OADcA,EAAIS,SAGtB4D,iDAAkD,SAACC,EAAQC,EAAQ9D,GAAjB,OAChD7B,GACGqE,MADH,uBACyBqB,EADzB,sBAC6CC,GAAU9D,GACpDD,MAAK,SAACR,GAEL,OADcA,EAAIS,SAGxB+D,oBAAqB,SAACF,EAAQC,GAAT,OACnB3F,GACGqE,MADH,uBACyBqB,EADzB,4BACmDC,GAAU,CACzDE,QAAQ,IAETjE,MAAK,SAACR,GAEL,OADcA,EAAIS,SAGxBiE,gBAAiB,SAACJ,EAAQK,GAAT,OACf/F,GACGqE,MADH,uBACyBqB,EADzB,4BACmDK,GAAW,CAC1DF,QAAQ,IAETjE,MAAK,SAACR,GAEL,OADcA,EAAIS,SAGxBmE,gBAAiB,SAACN,EAAQO,GAAT,OACfjG,GACGsC,IADH,uBACuBoD,EADvB,mCACwDO,IACrDrE,MAAK,SAACR,GAEL,OADcA,EAAIS,SAGxBqE,YAAa,SAACf,EAAYtD,GAAb,OACX7B,GAASoC,KAAT,sBAA6B+C,EAA7B,cAAqDtD,GAAMD,MAAK,SAACR,GAE/D,OADcA,EAAIS,SAGtBsE,YAAa,SAAChB,EAAYiB,EAAYvE,GAAzB,OACX7B,GACGqE,MADH,sBACwBc,EADxB,sBACgDiB,GAAc,CAC1DC,SAAUxE,IAEXD,MAAK,SAACR,GAEL,OADcA,EAAIS,SAGxByE,eAAgB,SAACnB,EAAYiB,GAAb,OACdpG,GACGqE,MADH,sBACwBc,EADxB,sBACgDiB,GAAc,CAC1DP,QAAQ,IAETjE,MAAK,SAACR,GAEL,OADcA,EAAIS,SAGxB0E,iBAAkB,SAACC,GAAD,OAChBxG,GACGsC,IADH,sBACsBkE,EADtB,8BAEG5E,MAAK,SAACR,GAEL,OADcA,EAAIS,UAObgC,GAYI,SAACiB,EAAQ2B,GAAT,OACbzG,GAASqE,MAAT,oBAA4BS,GAAU2B,GAAS7E,MAAK,SAACR,GAEnD,OADcA,EAAIS,SAmBXjB,GAAiB,CAC5BU,SAAU,SAAC/F,EAAKoI,GACO,kBAAVA,EACThF,EAAQ+H,QAAQnL,EAAKoL,KAAKC,UAAUjD,IAEpChF,EAAQ+H,QAAQnL,EAAKoI,IAIzB9C,QAAS,SAACtF,GACR,IAAMsG,EAAOlD,EAAQkI,QAAQtL,GAC7B,OAAIsG,EACqB,MAAnBA,EAAKiF,OAAO,GACPH,KAAKI,MAAMlF,GAEXA,EAGF,MAIXmF,gBAAiB,SAACzL,EAAKoI,GACA,kBAAVA,EACTsD,eAAeP,QAAQnL,EAAKoL,KAAKC,UAAUjD,IAE3CsD,eAAeP,QAAQnL,EAAKoI,IAIhCuD,eAAgB,SAAC3L,GACf,IAAMsG,EAAOoF,eAAeJ,QAAQtL,GACpC,OAAIsG,EACqB,MAAnBA,EAAKiF,OAAO,GACPH,KAAKI,MAAMlF,GAEXA,EAGF,MAIXsF,WAAY,SAAC5L,GACXoD,EAAQyI,WAAW7L,K,mBCtlBVuF,GAAgB,SAACuG,EAAYC,EAAcC,GAStD,OARaC,OAAOC,KAAKJ,GACtBK,QAAO,SAAAnM,GAAG,OAAIgM,EAAOI,SAASpM,MAC9BqM,QAAO,SAACC,EAAKtM,GAIV,OAHAsM,EAAItM,GAAwB,OAAjB+L,EACCD,EAAW9L,IAAQ+L,EAAa/L,GAChC8L,EAAW9L,GAChBsM,IACR,KAIMC,GAAK,SAACC,GACjB,OAAOA,EAAIA,GAGAC,GAAqB,SAACC,GACjC,IAAIC,EACK,GADLA,EAEMJ,GAAG,IAFTI,EAGe,GAATJ,GAAG,IAHTI,EAIgB,GAATJ,GAAG,IAAW,EAJrBI,EAKiB,GAATJ,GAAG,IAAW,EAAI,EAL1BI,EAMgB,GAATJ,GAAG,IAAW,EAAI,EAAI,GAGjC,IAAIG,EAAe,MAAO,8BAC1B,IAAIE,EAAI,IAAIC,KAAKH,GACbI,GAASD,KAAKE,MAAQH,EAAEI,WAAa,IACrC,OAAIF,EAAOH,EACF,MACEG,EAAOH,EACTM,KAAKC,MAAMJ,EAAOH,GAAa,WAC7BG,EAAOH,EACTM,KAAKC,MAAMJ,EAAOH,GAAc,aAC9BG,EAAOH,EACTM,KAAKC,MAAMJ,EAAOH,GAAa,YAC7BG,EAAOH,EACTM,KAAKC,MAAMJ,EAAOH,GAAc,aAC9BG,EAAOH,EACTM,KAAKC,MAAMJ,EAAOH,GAAe,cAEnC,mBAGAQ,GAAa,SAAC3E,GAQzB,OANIA,EAAK4D,SAAS,KACV5D,EAAK7B,QAAQ,IAAK,KAGlB6B,GAKG4E,GAAU,WACrB,IAAMC,EAAYhI,GAAeC,QAAQ,UACrCgI,GAAY,EAOhB,OANAC,KAAErB,KAAKmB,GAAWG,SAAQ,SAAAxN,GAIxB,OAHIqN,EAAUrN,IAA2B,OAAnBqN,EAAUrN,SAAoCyN,IAAnBJ,EAAUrN,KACzDsN,GAAY,GAEPA,OAELA,GAMOI,GAAc,SAACpB,GAC1B,IAAK,IAAItM,KAAOsM,EACG,OAAbA,EAAItM,SAA8ByN,IAAbnB,EAAItM,IAAmC,KAAbsM,EAAItM,WAC9CsM,EAAItM,GAIf,OAAOsM,GAGIqB,GAAgB,SAAC3G,GAE5B,MADW,wJACD4G,KAAKC,OAAO7G,GAAO8G,gBClFhBC,GAXK,SAAC,GAAD,IAAc5P,EAAd,EAAGC,UAAyBE,EAA5B,oCAGhB,kBAAC,IAAD,iBACQA,EADR,CAEIC,OAAQ,SAAAC,GAAK,OACR4O,KAAuC,kBAAC,IAAD,CAAU3O,GAAG,MAAxC,kBAACN,EAAcK,Q,2MCWlCwP,GAAc,SAACxP,GAAW,IACpByP,EAAyCzP,EAAzCyP,SAAmBC,GAAsB1P,EAA/B2P,QAA+B3P,EAAtB0P,SAAYE,EADZ,YACsB5P,EADtB,kCAE3B,OACI,kBAAC,KAAD,eAAgB6P,mBAAiB,EAACC,UAAU,eAAkBF,GAC1D,yBAAKE,UAAU,SAASL,GACxB,4BAAQK,UAAU,oCAAoCC,QAASL,GAC3D,yBAAKM,IAAKC,KAAWC,IAAI,GAAGnN,MAAM,UAK7BoN,G,kDACjB,WAAYnQ,GAAQ,IAAD,8BACf,cAAMA,IAoBVoQ,mBAAqB,SAACC,GACfA,EAAUC,sBAAwB,EAAKtQ,MAAMsQ,sBAA0D,IAAnC,EAAKtQ,MAAMsQ,qBAC9E,EAAKC,YAAY,OAvBN,EA2BnBC,SAAW,SAAChP,EAAKoI,GACb,IAAI6G,EAAM7G,EACE,iBAARpI,IACAiP,EAAM7G,EAAQ,IAAI8G,KAAU,MAAMC,MAAM/G,GAASA,GAErD,EAAKgH,UAAS,SAACC,GAAD,MAAgB,CAC1BC,UAAU,6BACHD,EAAUC,WADR,mBAEJtP,EAAMiP,SAnCA,EAwCnBM,eAAiB,WAAO,IAAD,EACiB,EAAK5Q,MAAjC6Q,EADW,EACXA,aAAcF,EADH,EACGA,UAChBnM,EAAQqM,EAAanD,QAAO,SAACoD,EAAKC,GAMpC,OALIA,EAAKzP,YAAsC,KAAxBqP,EAAUI,EAAK1P,OAClC0P,EAAKxP,SAAU,EACfwP,EAAKtP,aAAemD,GAExBkM,EAAIE,KAAKD,GACFD,IACR,IAEH,OADA,EAAKL,SAAS,CAAEI,aAAcrM,IACvByM,QAAQrC,KAAEsC,KAAK1M,EAAO,CAAC,WAAW,MAnD1B,EAsDnB2M,cAAgB,WACZ,IAAI,EAAKP,iBAAT,CAGI,EAAKH,SAAS,CAAEW,cAAc,IAD3B,IAEKT,EAAc,EAAK3Q,MAAnB2Q,UACFhJ,EAAO,CACTpH,GAAIoQ,EAAUpQ,GACd8Q,WAAYV,EAAUU,WACtBC,UAAWX,EAAUW,UACrBC,YAAaZ,EAAUY,YACvBC,aAAcb,EAAUa,aACxBtM,WAAYyL,EAAUzL,WACtB1E,MAAOmQ,EAAUnQ,MACjB0K,QAASyF,EAAUzF,SAEvB,OAAOuG,GAAsB9J,EAAKpH,GAAIoH,GACjCD,MAAK,SAAAR,GACEA,GACA,EAAKuJ,SAAS,CACVW,cAAc,IACf,WACC,EAAKX,SAAS,CACViB,eAAgB7M,EAChB8M,YAAatR,IAEjB,EAAK+P,YAAYlJ,SAI5B0K,OAAM,SAAA9K,GAAG,OAAI,EAAK+K,YAAY/K,QApFxB,EAwFnB+K,YAAc,SAAC/K,GAAS,IACZ+J,EAAiB,EAAK7Q,MAAtB6Q,aACR,GAAI/J,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,QAAkC,MAAxBhL,EAAIC,SAAS+K,OAAgB,CAC3E,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,OACzBvN,EAAQqM,EAAanD,QAAO,SAACoD,EAAKC,GAMpC,OALIgB,EAAOC,eAAejB,EAAK1P,OAC3B0P,EAAKxP,SAAU,EACfwP,EAAKtP,aAAesQ,EAAOhB,EAAK1P,KAAK,IAEzCyP,EAAIE,KAAKD,GACFD,IACR,IACH,EAAKL,SAAS,CAAEI,aAAcrM,SAC3B,GAAIsC,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,OAAQ,CACnD,IAAMjL,EAAQC,EAAIC,SAASY,KAAKd,MAChC,EAAK4J,SAAS,CACViB,eAAgB7K,EAChB8K,YAAatR,IAEjB,EAAK+P,YAAY,WAEjB,EAAKK,SAAS,CACViB,eAAgB7M,EAChB8M,YAAatR,IAEjB,EAAK+P,YAAY,MAErB,EAAKK,SAAS,CAAEW,cAAc,KAnHf,EAsHnBhB,YAAc,SAAC7D,GACX,IAAM/H,EAAQ,EAAKxE,MAAM6Q,aAAanD,QAAO,SAACoD,EAAKC,GAI/C,OAHAA,EAAKxP,SAAU,EACfwP,EAAKtP,aAAe,GACpBqP,EAAIE,KAAKD,GACFD,IACR,IACH,EAAKjR,MAAM0P,QAAQhD,GACnB,IAAMoE,EAAYpE,EAAO,6BAClBA,GADkB,IAErBiF,aAAc,IAAIjB,KAAU,MAAMC,MAAMjE,EAAQiF,gBAF3B,6BAKd,EAAK3R,MAAM0M,SALG,IAMjBiF,aAAc,IAAIjB,KAAU,MAAMC,MAAM,EAAK3Q,MAAM0M,QAAQiF,gBAEnE,EAAKf,SAAS,CAAEE,YAAWE,aAAcrM,KAtI1B,EAyInByN,uBAAyB,SAAC5Q,GACtB,IAAMmD,EAAQ,EAAKxE,MAAM6Q,aAAanD,QAAO,SAACoD,EAAKC,GAM/C,OALIA,EAAK1P,MAAQA,IACb0P,EAAKxP,SAAU,EACfwP,EAAKtP,aAAe,IAExBqP,EAAIE,KAAKD,GACFD,IACR,IACH,EAAKL,SAAS,CAAEI,aAAcrM,KAhJ9B,EAAKxE,MAAQ,CACToR,cAAc,EACdT,UAAW,GACXE,aAAc,GACda,eAAgB,KAChBC,YAAa,MAPF,E,gEAWE,IAAD,OAChBO,KAAKzB,UAAS,SAACC,GAAD,MAAgB,CAC1BC,UAAU,6BACH,EAAK9Q,MAAM0M,SADT,IAELiF,aAAc,IAAIjB,KAAU,MAAMC,MAAM,EAAK3Q,MAAM0M,QAAQiF,gBAE/DX,aAActM,EAAYC,Y,+BAoIxB,IAAD,OACG2N,EAASD,KAAKrS,MAAdsS,KADH,EAE0ED,KAAKlS,MAA5E2Q,EAFH,EAEGA,UAAWE,EAFd,EAEcA,aAAca,EAF5B,EAE4BA,eAAgBC,EAF5C,EAE4CA,YAAaP,EAFzD,EAEyDA,aAC9D,OACI,kBAAC,IAAMgB,SAAP,KACI,kBAAC,GAAD,CACID,KAAyB,OAAnBT,EACNlR,MAAOkR,EACPW,KAAMV,IAAgBtR,EAA2BiS,KAAYC,KAC7DnC,YAAa,SAACoC,GAAD,OAAQ,EAAK/B,SAAS,CAAEiB,eAAgBc,OACzD,kBAACC,GAAA,EAAD,CACIN,KAAMA,EACN5C,QAAS,kBAAM,EAAKa,YAAY,OAChCsC,kBAAgB,gBAEhB,kBAAC,GAAD,CAAanS,GAAG,eAAegP,QAAS,kBAAM,EAAKa,YAAY,QAC1D7L,EAAY/D,OAEjB,kBAACmS,GAAA,EAAD,KACI,0BAAMhD,UAAU,sBACZ,kBAAC,IAAMyC,SAAP,KACI,yBAAKzC,UAAU,2BACX,wBAAIA,UAAU,0BAAd,aAEJ,kBAACiD,GAAA,EAAD,CAAMC,WAAS,EAACC,QAAS,EAAGC,QAAQ,aAAaC,WAAW,UAAUrD,UAAU,uBAC3EkB,EAAanH,KAAI,SAACuJ,GAAD,OACd,kBAACL,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,WAAY5R,IAAK4R,EAAM5R,KACxC,kBAAC,GAAD,CACIb,MAAOyS,EAAMzS,MACbD,GAAI0S,EAAM5R,IACV+R,cAAeH,EAAM3R,WAAa,WAAa,GAC/C+R,UAAWJ,EAAM1R,SAAW0R,EAAMxR,aAClCgI,MAAOkH,GAAaA,EAAUsC,EAAM5R,KAAOsP,EAAUsC,EAAM5R,KAAO,GAClEgP,SAAU,SAACiD,GAAD,OAAO,EAAKjD,SAAS4C,EAAM5R,IAAKiS,IAC1CC,QAAS,kBAAM,EAAKtB,uBAAuBgB,EAAM5R,gBAQ7E,kBAACmS,GAAA,EAAD,KACKpC,EACG,kBAAC,GAAD,CAASe,KAAMf,EAAcqC,YAAY,IAEzC,oCACI,4BAAQ9D,UAAU,yBAAyBC,QAAS,kBAAM,EAAKQ,YAAY,QAA3E,UAGA,4BAAQT,UAAU,0BAA0BC,QAASsC,KAAKf,eAA1D,gB,GAxMSuC,IAAMlU,WCnBzCmU,G,4MACF3T,MAAQ,CACJ4T,oBAAoB,EACpBC,QAAQ,EACR/J,KAAM,KACNyC,QAAS,EAAK1M,MAAMiU,aAAavH,S,EAGrCwH,gBAAkBL,IAAMM,Y,EAQxBC,qBAAuB,WACnBvP,OAAOwP,oBAAoB,SAAS,SAACZ,GAAD,OAAO,EAAKa,2BAA2Bb,O,EAG/Ea,2BAA6B,SAACb,GACtB,EAAKS,iBAAmB,EAAKA,gBAAgBK,UAAY,EAAKL,gBAAgBK,QAAQC,SAASf,EAAEgB,UACjG,EAAK7D,SAAS,CAAEmD,oBAAoB,IACpC,EAAK/T,MAAM0U,mBAAkB,K,EAIrCC,eAAiB,SAAC/T,GACVA,GAAiB,iBAATA,EACR,EAAKZ,MAAM4U,QAAQzD,KAAKvQ,GACR,iBAATA,EACP,EAAKiU,wBAEL,EAAK7U,MAAM8U,OAAO,IAEtB,EAAKlE,SAAS,CAAEmD,oBAAoB,K,EAGxCc,sBAAwB,WACpB,EAAKjE,SAAS,CAAEoD,QAAQ,K,EAG5Be,uBAAyB,SAACrI,GACtB,EAAKkE,SAAS,CAAEoD,QAAQ,IACxBtH,GAAW,EAAKsI,cAActI,I,EAGlCsI,cAAgB,SAACtI,GACb,IAAMzC,EAAOyC,EAAUA,EAAO,WAAiB,IAAMA,EAAO,UAAcK,OAAO,GAAK,IAAM,KAC5F,EAAK6D,SAAS,CAAE3G,OAAMyC,a,kEAvCL,IAAD,OACVA,EAAU2F,KAAKrS,MAAMiU,aAAavH,SAAW,KACnD2F,KAAK2C,cAActI,GACnB7H,OAAOoQ,iBAAiB,SAAS,SAACxB,GAAD,OAAO,EAAKa,2BAA2Bb,Q,+BAuClE,IAAD,SACiDpB,KAAKlS,MAAnD4T,EADH,EACGA,mBAAoBC,EADvB,EACuBA,OAAQ/J,EAD/B,EAC+BA,KAAMyC,EADrC,EACqCA,QADrC,EAEsE2F,KAAKrS,MAAxEK,EAFH,EAEGA,SAAU4T,EAFb,EAEaA,aAAcS,EAF3B,EAE2BA,kBAAmBpE,EAF9C,EAE8CA,oBAC7C4E,EAAc7U,EAASH,SAC7B,OACI,oCACI,gCACI,yBAAK4P,UAAU,SACf,yBAAKA,UAAU,iBACX,yBAAKA,UAAU,0BACVrP,EAAcoJ,KAAI,SAAAwJ,GAAI,OACnB,4BACI7R,IAAK6R,EAAK3S,GACVoP,UACIoF,EAAYC,MAAM,KAAK,KAAO9B,EAAKzS,KAAKuH,QAAQ,IAAK,KAClB,eAA/BkL,EAAKzS,KAAKuH,QAAQ,IAAK,KAAsD,mBAA9B+M,EAAYC,MAAM,KAAK,GACpE,qCACA,8BAEVpF,QAAS,kBAAM,EAAK4E,eAAetB,EAAKzS,QAAQyS,EAAK1S,WAIjE,4BAAQmP,UAAU,iDACd,kBAACsF,GAAA,EAAD,CACItF,UAAU,oBACVuF,IAAK,GACLC,MAAM,UACNC,aAActB,EAAY,oBAC1BtE,QAAS,CACL6F,aAAc,sBAElBzF,QAAS,SAAC0D,GACNA,EAAEgC,iBACF,EAAKd,eAAe,qBAGxB,kBAACe,GAAA,EAAD,CAAe5F,UAAU,uBAGjC,yBAAKA,UAAU,oBAAoB6F,IAAKtD,KAAK6B,iBACzC,4BACIpE,UAAU,uCACVC,QAAS,kBACL,EAAKa,SAAS,CACVmD,oBAAqBA,IACtB,kBAAMW,GAAmBX,QAGhC,yBAAKjE,UAAU,YAAYE,IAAK4F,KAAU1F,IAAI,KAC9C,8BAAOjG,IAEX,kBAAC,GAAD,CAAcqI,KAAMyB,EAAoBjE,UAAU,UAC7CjP,EAAegJ,KAAI,SAACwJ,GAAD,OAChB,4BACI3S,GAAI2S,EAAK3S,GACTc,IAAK6R,EAAK3S,GACVoP,UAAU,uCACVC,QAAS,kBAAM,EAAK4E,eAAetB,EAAKzS,QAEvCyS,EAAK1S,YAKtB,kBAAC,GAAD,CACI2R,KAAM0B,EACNtE,QAAS2C,KAAK0C,uBACdrI,QAASA,EACT4D,oBAAqBA,W,GAzH5BuD,IAAMlU,WAkIZkW,eAAW/B,ICxILgC,I,mNACjB3V,MAAQ,CACJ4V,YAAa,IAAI1H,M,EAGrBtO,OAAS,WAAO,IACJgW,EAAgB,EAAK5V,MAArB4V,YADG,EAEiC,EAAK/V,MAAzCgW,EAFG,EAEHA,eAAgBC,EAFb,EAEaA,gBAExB,OACI,4BAAQnG,UAAU,iBACd,4BACI,sCACA,mCACCiG,EAAYG,cACb,mCACA,8BACI,gCAAS5R,EAAUC,SACnB,mCACC,wBAGT,yBAAKuL,UAAU,gBACdkG,GACG,yBAAKlG,UAAU,kBACVxL,EAAUE,MAAMqF,KAAI,SAACsM,EAAMC,GAAP,OACjB,4BAAQtG,UAAU,yBAAyBpP,GAAIyV,EAAK3U,IAAKA,IAAK2U,EAAK3U,IAAKuO,QAAS,kBAAMkG,EAAgBG,KAClGD,EAAKxV,a,YA3BFkT,IAAMlU,Y,oBCDrB0W,I,mNAEjBtW,OAAS,WAAO,IAAD,EAC2B,EAAKC,MAAnCsS,EADG,EACHA,KAAM7C,EADH,EACGA,SAAUK,EADb,EACaA,UAExB,OAAO,yBAAKA,UAAWwC,EAAOgE,KAAW,YAAaxG,GAAa,UAAWL,I,YAL5CoE,IAAMlU,YCF3B4W,I,mNACjBxW,OAAS,WAAO,IAAD,EACkB,EAAKC,MAA1BW,EADG,EACHA,MAAOmP,EADJ,EACIA,UAEf,OACI,yBAAKA,UAAS,wBAAmBA,GAAaA,IAC1C,yBAAKA,UAAU,yBACX,yBAAKA,UAAU,iBAEnB,4BAAKnP,K,YATmBkT,IAAMlU,YCDzB6W,I,mNACnBzW,OAAS,WAAO,IAAD,EACgB,EAAKC,MAA1BsS,EADK,EACLA,KAAMsB,EADD,EACCA,WACd,OACE,kBAAC,IAAMrB,SAAP,KACGD,GACC,6BACGsB,EACC,kBAAC,IAAMrB,SAAP,KACE,yBAAKzC,UAAU,qBACb,yBAAKA,UAAU,mBAEjB,yBAAKA,UAAU,mBAGjB,yBAAKA,UAAU,qBACb,yBAAKA,UAAU,uB,YAhBM+D,IAAMlU,Y,UCmB9B8W,I,OAjBoC5C,IAAMlU,UAiBvD,4MACII,OAAS,WAAO,IAAD,EACa,EAAKC,MAArBwS,EADG,EACHA,KAAM7R,EADH,EACGA,MACd,OACI,yBAAKmP,UAAU,kBACX,yBAAKA,UAAU,uBACX,yBAAKA,UAAU,YAAYE,IAAKwC,EAAMtC,IAAI,KAC1C,8BAAOvP,MAP3B,YAA4CkT,IAAMlU,YAc7B+W,G,4MAEjBC,aAAe,SAAClD,EAAGmD,GACf,IAAG,EAAK5W,MAAM6W,SACd,MAAc,YAAXD,GAAwB,EAAK5W,MAAMuQ,YAC3B,EAAKvQ,MAAMuQ,YAAY,WADlC,G,EAKJxQ,OAAS,WAAO,IAAD,EACwD,EAAKC,MAAhEsS,EADG,EACHA,KAAM3R,EADH,EACGA,MAAOkW,EADV,EACUA,SAAUC,EADpB,EACoBA,YAAatE,EADjC,EACiCA,KAAMuE,EADvC,EACuCA,aAElD,OACI,kBAACC,GAAA,EAAD,CACIlH,UAAU,oBACVwC,KAAMA,EACN2E,aAAc,CAACC,SAAU,MAAOC,WAAY,UAC5CC,2BAAyB,EACzBC,QACIR,EACI,yBAAK/G,UAAU,kBACX,yBAAKA,UAAU,yBACX,8BAAOnP,GACP,4BAAQmP,UAAU,0BAA0BC,QAAS,kBAAM8G,MACvD,yBAAK/G,UAAU,YAAYE,IAAKwC,EAAMtC,IAAI,KACzC4G,KAKb,yBAAKhH,UAAU,kBACX,yBAAKA,UAAU,uBACX,yBAAKA,UAAU,YAAYE,IAAKwC,EAAMtC,IAAI,KAC1C,8BAAOvP,KAKvB+O,QAAS,SAAC+D,EAAGmD,GAAJ,OAAe,EAAKD,aAAalD,EAAGmD,IAC7CU,iBAAkBP,IAAiC,IAAjBA,EAAwB,KAAO,O,YAvCrClD,IAAMlU,WC9B7B4X,I,mNACjBhH,YAAc,SAACiH,GACNA,GACD,EAAKxX,MAAM0P,SAAQ,I,EAI3B3P,OAAS,WAAO,IAAD,EACuC,EAAKC,MAA/CsS,EADG,EACHA,KAAM3R,EADH,EACGA,MAAO8W,EADV,EACUA,QAASC,EADnB,EACmBA,OAAQF,EAD3B,EAC2BA,QAEtC,OACI,kBAAC,IAAMjF,SAAP,KACKD,GACG,6BACI,yBAAKxC,UAAU,WAAWC,QAAS,kBAAM,EAAKQ,YAAYiH,MAC1D,yBAAK1H,UAAU,mBACX,yBAAKA,UAAU,gBACX,wBAAIA,UAAU,SAASnP,GACvB,4BAAQmP,UAAU,oCAAoCC,QAAS,kBAAM,EAAKQ,YAAYiH,KAClF,yBAAKxH,IAAKC,KAAWC,IAAI,GAAGnN,MAAM,SAG1C,yBAAK+M,UAAU,iBAAiB2H,GAC/BD,EACG,yBAAK1H,UAAU,2BACX,kBAAC,GAAD,CAASwC,KAAMkF,EAAS5D,YAAY,KAGxC,kBAAC,IAAMrB,SAAP,KAAiBmF,GAAU,yBAAK5H,UAAU,gBAAgB4H,EAAO,yBAAK5H,UAAU,iB,YA5B7E+D,IAAMlU,YCApBgY,I,mNACnB5X,OAAS,WAAO,IAAD,EAYT,EAAKC,MAVPW,EAFW,EAEXA,MACAmP,EAHW,EAGXA,UACAlG,EAJW,EAIXA,MACA2J,EALW,EAKXA,cACAqE,EANW,EAMXA,eACApE,EAPW,EAOXA,UACA9S,EARW,EAQXA,GACA8P,EATW,EASXA,SACAqH,EAVW,EAUXA,MACG7X,EAXQ,kHAcb,OACE,yBACE8P,UACE8H,EACItB,KAAW,kBAAmBsB,GAC9B,mBAGLrE,EACC,yBAAKzD,UAAU,kBACb,wBAAIA,UAAU,SAASnP,GACvB,yBAAKmP,UAAU,sBACb,wBAAIA,UAAWyD,GAAf,OAIJ,wBAAIzD,UAAU,SAASnP,GAGzB,2CACMX,EADN,CAEEU,GAAE,UAAKC,EAAL,YAAcD,GAChBkJ,MAAOA,EACPiO,MAAOA,EACPC,UAAS,UAAK/R,KACd+J,UACE0D,EACI8C,KAAW,QAASxG,EAAW,SAC/BwG,KAAW,QAASxG,GAE1BU,SAAU,SAACiD,GAAD,OAAOjD,EAASiD,EAAEgB,OAAO7K,MAAO6J,EAAEgB,OAAOxK,UAErD,wBAAI6F,UAAU,eAAe0D,K,YA/CEK,IAAMlU,YCDxBoY,I,mNACjBhY,OAAS,WAAO,IAAD,EACyD,EAAKC,MAAjEgY,EADG,EACHA,SAAUrX,EADP,EACOA,MAAOsX,EADd,EACcA,QAASnI,EADvB,EACuBA,UAAWoI,EADlC,EACkCA,SAAalY,EAD/C,qEAGX,OACI,yBAAK8P,UAAU,2BACX,wBAAIA,UAAU,gBAAgBnP,GAC9B,yCAAOmP,UAAWwG,KAAW,SAAUxG,IAAgB9P,GACnD,2BAAOmY,KAAK,WAAWF,QAASA,EAASzH,SAAU,SAACiD,GAAD,OAAOuE,EAASvE,EAAEgB,OAAOwD,UAAUC,SAAUA,GAAYA,IAC5G,0BAAMpI,UAAU,oB,YATA+D,IAAMlU,Y,4DCArByY,I,mNACjBrY,OAAS,WAAO,IAAD,EAC+B,EAAKC,MAAvC8C,EADG,EACHA,QAAS2M,EADN,EACMA,SAAU4I,EADhB,EACgBA,WAE3B,OACI,kBAAC,IAAM9F,SAAP,KACI,kBAAC+F,GAAA,EAAD,CAAgBxI,UAAWuI,EAAa,6BAA+B,cACnE,kBAACE,GAAA,EAAD,CAAOC,cAAY,EAAC1I,UAAU,mBAC1B,kBAAC2I,GAAA,EAAD,KACI,kBAACC,GAAA,EAAD,KACK5V,EAAQ+G,KACL,SAACjD,GAAD,OACIA,EAAOjF,QACH,kBAACgX,GAAA,EAAD,CACInX,IAAKoF,EAAOpF,IACZoX,MAAM,OACNjJ,QAAS,CACLkJ,KAAM,yBACNL,aAAc,gBAElBX,MAAO,CACHiB,SAAUlS,EAAOkS,UAAYlS,EAAOkS,SACpCC,SAAUnS,EAAOmS,UAAYnS,EAAOmS,SACpChW,MAAO6D,EAAO7D,MAAQ6D,EAAO7D,MAAQ,QAEzCiW,QAAQ,QAEPpS,EAAOjG,YAMhC,kBAACsY,GAAA,EAAD,KAAYxJ,KAGnB4I,GAAcA,I,YApCaxE,IAAMlU,Y,sECC7BuZ,G,4MAEjB/Y,MAAQ,CACJgZ,aAAa,G,EAGjBC,WAAa,SAAC3F,GACNA,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,aAChC,EAAK1I,SAAS,CAAEuI,aAAa,K,EAGrCpZ,OAAS,WAAO,IAAD,EAC8D,EAAKC,MAAtEW,EADG,EACHA,MAAO4Y,EADJ,EACIA,WAAY9J,EADhB,EACgBA,SAAU+J,EAD1B,EAC0BA,MAAOC,EADjC,EACiCA,eAAmBzZ,EADpD,0EAEX,OACI,6BACI,kBAAC0Z,GAAA,EAAD,eAAWC,UAAW,EAAG7J,UAAU,kBAAqB9P,GACpD,kBAAC4Z,GAAA,EAAD,CAAkBlZ,GAAE,UAAKC,EAAL,WAAqBkZ,gBAAA,UAAkBlZ,EAAlB,YAAmCmP,UAAU,gCAClF,yBAAKA,UAAU,8BACX,yBAAKA,UAAWyJ,EAAU,oCAAgCA,GAAe,6BACrE,yBAAKvJ,IAAK8J,KAAiB5J,IAAI,GAAGJ,UAAU,mBAC5B,yBAAfyJ,EACG,yBAAKzJ,UAAU,mBAAmBnP,GAEtC,kBAACoZ,GAAA,EAAD,CAASpZ,MAAOA,EAAOqZ,UAAU,MAAMC,sBAAuB,EAAK9Z,MAAMgZ,aACrE,wBAAIe,aAAc,EAAKd,WAAYtJ,UAAU,mBAAmBnP,KAIvE6Y,GAAS,yBAAK1J,UAAU,mBAAmB0J,GAC3CC,GAAkB,yBAAK3J,UAAU,mBAAmB2J,KAG7D,kBAACU,GAAA,EAAD,CAAkBrK,UAAU,+BAA+BL,M,YAhC/BoE,IAAMlU,W,qECCjCya,G,4MACjBja,MAAQ,CACJka,QAAS,EAAKra,MAAMqa,S,EAGxBjB,WAAa,SAAC3F,EAAGjS,GACb,IAAM6Y,EAAU,EAAKla,MAAMka,QAAQxQ,KAAI,SAACD,EAAO0Q,GAM3C,OALI1Q,EAAMpI,MAAQA,GAAOiS,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,YACrD1P,EAAMuP,aAAc,EAEpBvP,EAAMuP,aAAc,EAEjBvP,KAEX,EAAKgH,SAAS,CAAEyJ,a,EAGpBta,OAAS,WAAO,IAAD,EACyF,EAAKC,MAAjGU,EADG,EACHA,GAAIC,EADD,EACCA,MAAOiJ,EADR,EACQA,MAAO2Q,EADf,EACeA,aAAcC,EAD7B,EAC6BA,SAAU1K,EADvC,EACuCA,UAAWoI,EADlD,EACkDA,SAAUlR,EAD5D,EAC4DA,MAAOwM,EADnE,EACmEA,UAAWiH,EAD9E,EAC8EA,OAEzF,OACI,kBAACC,GAAA,EAAD,CAAa5K,UAAS,2BAAsBA,GAAaoI,SAAUA,EAAUlR,MAAOA,IAAgB,GAChG,kBAAC2T,GAAA,EAAD,CAAYC,QAAM,EAAC9K,UAAW0K,EAAWlE,KAAW,eAAgB,YAAc,gBAC7E3V,GAEL,kBAACka,GAAA,EAAD,CACIC,QAAO,UAAKpa,EAAKC,GACjBD,GAAE,UAAKA,EAAKC,GACZiJ,MAAOA,EACPmR,cAAY,EACZvK,SAAU,SAACiD,GAAD,OAAO8G,EAAa9G,EAAEgB,OAAO7K,QACvC6Q,OAAQ,SAAChH,GAAD,OAAOgH,GAAUA,EAAOhH,IAChCuF,QAAQ,WACRlJ,UAAU,YACVkL,cAAeC,MAEd,EAAK9a,MAAMka,QAAQxQ,KAAI,SAACqR,GAAD,OACpB,kBAACC,GAAA,EAAD,CAAUvR,MAAOsR,EAAG1Z,IAAKA,IAAK0Z,EAAG1Z,KAC7B,kBAACuY,GAAA,EAAD,CAASpZ,MAAOua,EAAGva,MAAOqZ,UAAU,MAAMC,sBAAuBiB,EAAG/B,aAChE,yBAAKe,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAGyH,EAAG1Z,MAAMqW,MAAO,CAAEuD,SAAU,SAAUC,aAAc,aAC5FH,EAAGva,aAMvB6S,GAAa,kBAAC8H,GAAA,EAAD,CAAgBxL,UAAU,oBAAoB0D,K,YA9C/BK,IAAMlU,WCqB7C4b,G,kDACF,WAAYvb,GAAQ,IAAD,8BACf,cAAMA,IAwBVwb,QAAU,SAACC,GAAW,IAAD,EACc,EAAKtb,MAA5Bub,EADS,EACTA,SAAUnW,EADD,EACCA,SAalB,OAVA,EAAKqL,SAAS,CACV+K,YAAY,EACZC,mBAAmB,IAQhBC,GALU,CACbrT,MAAOkT,EACPnW,SAAUA,IAITsC,MAAK,SAACS,GACH,GAAIA,GAA8B,IAAtBA,EAAKyB,MAAM+R,OACnB,EAAKlL,SAAS,CACVmL,UAAU,EACV9H,aAAc,KACd0H,YAAY,EACZC,mBAAmB,EACnBI,WAAW,IAEfnV,GAAeuG,WAAW,cACvB,CAMH,GALA,EAAKwD,SAAS,CACVqD,aAAc3L,EACdyT,UAAU,EACVH,mBAAmB,IAEnB/U,GAAeC,QAAQ,iBAAkB,CACzC,IAAImV,EAAgBpV,GAAeC,QAAQ,iBACtCD,GAAeC,QAAQ,iBAAiBwB,EAAKoE,QAAQrB,WACtD4Q,EAAc,GAAD,OAAI3T,EAAKoE,QAAQrB,UAAa,CACvCqQ,SAAUpT,EAAKoE,QAAQrB,QACvB6Q,KAAM5T,EACN6T,cAAe,KACfC,eAAgB,OAIxBvV,GAAeU,SAAS,gBAAiB0U,GAE7C,EAAKjc,MAAMqc,YAAY/T,OAG9ByJ,OAAM,SAAC9K,GACJ,EAAK2J,SAAS,CACVmL,UAAU,EACV9H,aAAc,KACd0H,YAAY,EACZC,mBAAmB,QA7EhB,EAkFnBU,cAAgB,SAAC9T,GACb,QAAQ,GACJ,KAAe,OAAVA,EACL,IAAe,KAAVA,EACL,UAAeyG,IAAVzG,EAED,YADA,EAAKoI,SAAS,CAAC2L,WAAY,mBAE/B,KAAMpN,GAAc3G,GAEhB,YADA,EAAKoI,SAAS,CAAC2L,WAAY,0BAE/B,QAEI,OADA,EAAK3L,SAAS,CAACgL,mBAAmB,IAC3BC,GAAsBrT,GACxBX,MAAK,SAACR,GACAA,GACC,EAAKuJ,SAAS,CACVgL,mBAAmB,EACnBY,WArGQ,EAsGRC,YAAa,QAIxB1K,OAAM,SAAA9K,GACH,EAAK2J,SAAS,CACVgL,mBAAmB,EACnBW,WAAYtV,EAAIC,SAASY,KAAKoK,OAAO,UA3G1C,EAiHnBwK,gBAAkB,SAAC9S,EAAOK,GACtB,IAAI0S,EAAM1S,EACNwG,EAAM7G,EACV,EAAKgH,SAAL,gBAAiB+L,EAAMlM,KApHR,EAuHnBmM,eAAiB,SAACnJ,GAEK,KAAfA,EAAEoJ,UA7HY,IA6HO,EAAK1c,MAAMqc,YAChC,EAAKhB,UAGU,KAAf/H,EAAEoJ,UAhIa,IAgIM,EAAK1c,MAAMqc,YAChC,EAAKF,cAAc,EAAKnc,MAAMsc,cA5HlC,EAAKtc,MAAQ,CACTqX,SAAS,EACTuE,UAAU,EACV9H,aAAc,KACdyH,SAAU,GACVnW,SAAU,GACVoW,YAAY,EACZC,mBAAmB,EACnBY,WAdc,EAedC,YAAa,GACbF,WAAY,KACZP,WAAW,GAbA,E,gEAiBE,IAAD,IACc3J,KAAKrS,MAA3B4U,EADQ,EACRA,QAASvU,EADD,EACCA,UACjB,UAAIA,EAASF,aAAb,aAAI,EAAgB2c,OAChBzK,KAAKzB,SAAS,CAAE4L,WAAYnc,EAASF,MAAM2c,MAC3ClI,EAAQzM,a,+BA6GN,IAAD,SACkEkK,KAAKlS,MAApEwb,EADH,EACGA,WAAYa,EADf,EACeA,WAAYC,EAD3B,EAC2BA,YAAaF,EADxC,EACwCA,WAAYP,EADpD,EACoDA,UAEzD,OACI,6BAGI,yBAAKlM,UAAU,mBACX,gCACI,yBAAKA,UAAU,UAEnB,yBAAKA,UAAU,SAjJT,IAkJD0M,GACG,yBAAK1M,UAAU,iBACX,qCACA,kEAEA,yBAAKA,UAAU,UACX,yBAAKA,UAAU,SACX,kBAAC,GAAD,CACInP,MAAM,QACNwX,KAAK,OACLrI,UAAU,0BACViN,YAAY,QACZC,WAAS,EACTpT,MAAOyI,KAAKlS,MAAMub,SAClBzR,KAAK,WACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAe,EAAKyS,gBAAgBjM,EAAKxG,IACnDgT,WAAY5K,KAAKuK,kBAKzB,yBAAK9M,UAAU,SACX,kBAAC,GAAD,CACInP,MAAM,WACNwX,KAAK,WACLrI,UAAU,0BACViN,YAAY,WACZ9S,KAAK,WACLL,MAAOyI,KAAKlS,MAAMoF,SAClBiL,SAAU,SAACC,EAAKxG,GAAN,OAAe,EAAKyS,gBAAgBjM,EAAKxG,IACnDgT,WAAY5K,KAAKuK,kBAIzB,yBAAK9M,UAAU,mBACX,4BACIA,UAAU,qCACVC,QAAS,kBAAM,EAAKa,SAAS,CAAC4L,WAtL/C,MAoLa,sBAQPb,GAAc,yBAAK7L,UAAU,iBAAiBkM,EAAY,0FAA4F,mCAEvJ,yBAAKlM,UAAU,gBACX,kBAAC,GAAD,CAASwC,KAAMD,KAAKlS,MAAMyb,kBAAmBhI,YAAY,KACvDvB,KAAKlS,MAAMyb,mBACT,4BAAQ9L,UAAU,+BAA+BC,QAAS,kBAAM,EAAKyL,WAAWyB,WAAY5K,KAAKuK,gBAAjG,WAjMb,IAyMFJ,GACG,yBAAK1M,UAAU,iBACX,8CACA,8EACmD,6BADnD,qCAIA,yBAAKA,UAAU,2BACX,wBAAIA,UAAU,0BAAd,aAEJ,yBAAKA,UAAU,UACX,yBAAKA,UAAU,SACX,kBAAC,GAAD,CACInP,MAAM,QACNwX,KAAK,QACLrI,UAAU,0BACVyD,cAAc,WACdwJ,YAAY,QACZC,WAAS,EACTxJ,UAAW+I,EACX3S,MAAO6S,EACPxS,KAAK,cACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAe,EAAKyS,gBAAgBjM,EAAKxG,IACnDgT,WAAY5K,KAAKuK,eACjBlJ,QAAS,kBAAM,EAAK9C,SAAS,CAAC2L,WAAY,YAItD,yBAAKzM,UAAU,iCACX,kBAAC,GAAD,CAASwC,KAAMD,KAAKlS,MAAMyb,kBAAmBhI,YAAY,KACvDvB,KAAKlS,MAAMyb,mBACT,kBAAC,IAAMrJ,SAAP,KACI,4BACIzC,UAAU,2BACVC,QAAS,kBAAM,EAAKa,SAAS,CAAC4L,WA5OpD,MA0OkB,UAKA,4BACI1M,UAAU,0BACVC,QAAS,kBAAM,EAAKuM,cAAcG,KAFtC,qBA7OJ,IAwPfD,GACG,yBAAK1M,UAAU,gCACX,kDACA,kFACuD,6BADvD,+B,GA1PZ+D,IAAMlU,WAuQXkW,eAAW0F,I,iFC/Qb2B,GAAM,MAGbC,G,kDACF,WAAYnd,GAAQ,IAAD,8BACf,cAAMA,IAiBVoZ,WAAa,SAAC3F,EAAG/S,EAAIyX,GACjB,IAAMiF,EAAa,EAAKjd,MAAMid,WAAWvT,KAAI,SAACD,EAAO0Q,GAOjD,OANI1Q,EAAMlJ,KAAOA,GAAM+S,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,YAC1C,UAATnB,EAAmBvO,EAAMuP,aAAc,EAAOvP,EAAMyT,YAAa,GAEjEzT,EAAMuP,aAAc,EACpBvP,EAAMyT,YAAa,GAEhBzT,KAEX,EAAKgH,SAAS,CAAEwM,gBA5BD,EA+BnBE,kBAAoB,SAAC3K,GACjB,EAAK/B,SAAS,CACV2M,uBAAwB5K,EACxB6K,iBAAkB,QAlCP,EAsCnBC,oBAAsB,WAElB,OADA,EAAK7M,SAAS,CAAE8M,WAAW,IACpBC,GACFlU,gBACA5B,MAAK,SAACuV,GACH,KAAGA,EAAWtB,OAAS,GAYlB,OAAIsB,EAAWtB,OAAS,GAAKsB,EAAWtB,QAAU,OACnD,EAAK9b,MAAM4U,QAAQzD,KAAK,CACpBjR,SAAS,eAAD,OAAiBkd,EAAW,GAAG1c,IACvCP,MAAO,CAACyd,gBAAgB,UAI5B,EAAKhN,SAAS,CAAE8M,WAAW,IAlB3BN,EAAWpO,SAAQ,SAAA3E,GACf,IAAIwT,EAAkB,EAClBxT,EAASpH,aACToH,EAASpH,YAAY+L,SAAQ,SAAA8O,GACzB,OAAOD,GAAmBC,EAAI,mBAGtCzT,EAAQ,iBAAuBwT,KAEnC,EAAKjN,SAAS,CAAEwM,aAAYM,WAAW,OAa9C3L,OAAM,SAAC9K,GACJ,EAAK2J,SAAS,CAAE8M,WAAW,QAnEpB,EAuEnBK,cAAgB,SAACrd,GACb,EAAKV,MAAM4U,QAAQzD,KAAK,CACpBjR,SAAS,eAAD,OAAiBQ,GACzBP,MAAO,CAACyd,gBAAgB,MA1Eb,EA8EnBI,aAAe,SAAC3T,GAAD,gBAAiBA,EAAS4T,UAA1B,YAA8D,OAAvB5T,EAAS6T,WAA6C,KAAvB7T,EAAS6T,UAAmB7T,EAAS6T,UAAY,KAAO,IAA9H,OAAmI7T,EAAS8T,KAA5I,aAAqJ9T,EAASlK,MAA9J,YAAuKkK,EAAS+T,MA9E5K,EAgFnBre,OAAS,WAAO,IAAD,EASP,EAAKI,MAPLod,EAFO,EAEPA,uBACAC,EAHO,EAGPA,iBACAa,EAJO,EAIPA,eACAjB,EALO,EAKPA,WACAM,EANO,EAMPA,UACA5L,EAPO,EAOPA,YACAD,EARO,EAQPA,eARO,EAW6C,EAAK7R,MAArD+J,EAXG,EAWHA,MAAOuG,EAXJ,EAWIA,oBAAqBgO,EAXzB,EAWyBA,gBAEpC,OACI,kBAAC,IAAM/L,SAAP,KACI,kBAAC,GAAD,CAAgBD,KAAyB,OAAnBT,EAAyBlR,MAAOkR,EAAgBW,KAAMV,IAAgBtR,EAA2BiS,KAAYC,KAAanC,YAAa,SAACoC,GAAD,OAAQ,EAAK/B,SAAS,CAAEiB,eAAgBc,OACrM,yBAAK7C,UAAU,mCACX,wBAAIA,UAAU,yBAAyBhP,EAASC,aAChD,yBAAK8W,MAAO,CAAE0G,KAAM,KACnBnB,GAAcA,EAAWtB,OAAS,GAC/B,4BACIhM,UAAU,yBACVC,QAAS,kBACL,EAAKa,SAAS,CACV2M,wBAAwB,EACxBc,eAAgBnB,MAGxBrF,MAAO,CAAC,WACJ9I,KAAEsC,KAAKtH,EAAO,CAAC,KlBpInB,ckBqIM,UACA,WAELjJ,EAASG,cAItB,yBAAK6O,UAAU,uBACT4N,EA8EE,kBAAC,GAAD,CAAY/c,MAAOG,EAASQ,uBA7E5B8b,EAAWtB,OAAS,EAChB,kBAAC/I,GAAA,EAAD,CAAMC,WAAS,EAAClD,UAAU,qBAAqB0O,aAAa,cACvDpB,EAAWvT,KAAI,SAACQ,GAAD,OACZ,kBAAC0I,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,GAAImL,GAAI,EAAGC,GAAI,EAAGC,GAAI,EAAGnd,IAAK6I,EAAS3J,GAAImX,MAAO,CAAE+G,QAAS,SACxE,yBAAKpd,IAAK6I,EAAS3J,GAAIoP,UAAU,gBAAgBC,QAAS,kBAAM,EAAKgO,cAAc1T,EAAS3J,MACtFqO,KAAEsC,KAAKtH,EAAO,CAAC,KlBnJjC,ekBoJoB,yBAAK+F,UAAU,cACX,4BACIA,UAAU,uCACVC,QAAS,SAAC0D,GACNA,EAAEoL,kBACF,EAAKjO,SAAS,CACV4M,iBAAkBnT,EAClBkT,wBAAwB,EACxBc,eAxI1C,WA4IkC,yBAAKrO,IAAK8O,KAAU/b,MAAM,KAAKmN,IAAI,oBAI/C,yBAAKJ,UAAU,SACX,yBAAKE,IAAK+O,KAAchc,MAAM,KAAK+M,UAAU,MAAMI,IAAG,wBAAmB7F,EAAS3J,MAClF,kBAACqZ,GAAA,EAAD,CAASpZ,MAAO0J,EAASJ,KAAM+P,UAAU,MAAMC,sBAAuB5P,EAAS8O,aAC3E,kBAAC6F,GAAA,EAAD,CAAY9E,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAGpJ,EAAS3J,GAAI,UAAUsY,QAAQ,KAAKlJ,UAAU,kBAAkBzF,EAASJ,OAEjI,kBAAC8P,GAAA,EAAD,CAASpE,IAAK,EAAKsJ,eAAgBte,MAAO,EAAKqd,aAAa3T,GAAW2P,UAAU,MAAMC,sBAAuB5P,EAASgT,YACnH,kBAAC2B,GAAA,EAAD,CAAY9E,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAGpJ,EAAS3J,GAAI,SAASsY,QAAQ,KAAKlJ,UAAU,oBAAoB,EAAKkO,aAAa3T,KAE3I,yBAAKyF,UAAU,mBACX,yBAAKA,UAAU,QACX,6CACA,8BACA,0BAAMA,UAAU,oBAAoBzF,EAAStI,aAEjD,yBAAK+N,UAAU,QACX,2CACA,8BACA,0BAAMA,UAAU,oBAAoBzF,EAASpH,YAAcoH,EAASpH,YAAY6Y,OAAS,MAE7F,yBAAKhM,UAAU,QACX,yCACA,8BACA,0BAAMA,UAAU,oBAAoBzF,EAAQ,2BASxE,yBAAKyF,UAAU,eACX,yBAAKA,UAAU,iBACX,yBAAKE,IAAKkP,KAAgBhP,IAAI,cAAcnN,MAAM,SAEtD,yBAAK+M,UAAU,qBACX,6BACI,4BAAKhP,EAASC,aACd,4BAAKD,EAASE,gBACd,4BACI8O,UAAU,yBACVC,QAAS,kBACL,EAAKa,SAAS,CACV2M,wBAAwB,EACxBc,eAAgBnB,OAIvBpc,EAASG,iBAYtC,kBAAC,GAAD,CACIqR,KAAMiL,EACN7F,OAAQ2G,EACRhU,SAAUmT,EACV9N,QAAS,SAACiD,GAAD,OAAQ,EAAK2K,kBAAkB3K,IACxCwM,SAAU,SAACxM,GACP,EAAK/B,SAAS,CACV2M,uBAAwB5K,EACxB6K,iBAAkB,KAClBJ,WAAY,GACZiB,eAAgBnB,KAEpB,EAAKO,uBAETa,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,MAtNjC,EAAKnQ,MAAQ,CACTod,wBAAwB,EACxBC,iBAAkB,KAClBa,eAAgBnB,GAChBE,WAAY,GACZM,WAAW,EACXG,gBAAiB,EACjBhM,eAAgB,KAChBC,YAAatR,GAVF,E,gEAef6R,KAAKoL,0B,GAhBS5J,IAAMlU,WA+NbkW,eAAWsH,ICzOLmC,G,4MACjBC,aAAe,CACXC,eAAgB1e,EAASS,iBACzBke,aAAc,KACd/B,WAAW,EACXgC,UAAU,G,EAEdvf,M,gBAAY,EAAKof,c,EAEjBI,kBAAoB,WAChB,EAAKxf,MAAMqf,eAAexQ,SAAQ,SAAAoE,GAC9B,EAAKxC,UAAS,SAAAC,GAAS,MAAK,CACxB4O,aAAa,6BACN5O,EAAU4O,cADL,mBAEPrM,EAAM5R,IAAM,a,EAM7B4O,mBAAqB,SAACC,EAAWQ,GAC7B,IAAKR,EAAUhG,WAAa,EAAKrK,MAAMqK,UAAc,EAAKrK,MAAMU,KAAO,EAAKP,MAAMuf,WAC3E,EAAK1f,MAAMqK,UDdJ,SCeP,EAAKrK,MAAM0X,OAAmB,CAC7B,IAAIkI,EAAkB,EAAKzf,MAAMqf,eAAe3V,KAAI,SAAAuJ,GAEhD,OADO,6BAAOA,GAAP,IAAc1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAAC6O,aAAc,EAAKzf,MAAMqK,SAAUqV,UAAU,EAAMF,eAAgBI,IAG1F,GAAGvP,EAAUiC,OAAS,EAAKtS,MAAMsS,MAAQ,EAAKtS,MAAM0X,SAAWwF,GAAK,CAChE,IAAI0C,EAAkB,EAAKzf,MAAMqf,eAAe3V,KAAI,SAAAuJ,GAEhD,OADO,6BAAOA,GAAP,IAAc1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAAC4O,eAAgBI,IAEhCvP,EAAUC,sBAAwB,EAAKtQ,MAAMsQ,sBAA0D,IAAnC,EAAKtQ,MAAMsQ,qBAC9E,EAAKC,e,EAIbQ,eAAiB,SAAC8O,EAAaC,EAAWC,GACtC,IAAIjY,EAAO,EAAK3H,MAAM2f,GAClBnb,EAAQ,EAAKxE,MAAM4f,GAgBvB,OAfApb,EAAMqK,SAAQ,SAAAkM,GACV,GAAIA,EAAG1Z,MAAQqe,IAA6B,IAAd3E,EAAGvZ,OAC7B,QAAO,GACH,KAAMmG,EACN,KAAKA,GAAyB,KAAjBA,EAAKoT,EAAG1Z,KACjB0Z,EAAGxZ,SAAU,EACbwZ,EAAGtZ,aAAe,iBAClB,EAAKgP,SAAL,gBAAgBmP,EAAapb,IAC7B,MACJ,QACI,EAAKiM,SAAL,gBAAgBmP,EAAapb,SAKrCyM,QAAQrC,KAAEsC,KAAK1M,EAAO,CAAC,WAAW,M,EAG9C4V,aAAe,SAAC/Y,EAAKiP,GACjB,EAAKG,UACD,SAACC,GAAD,MAAgB,CACZ4O,aAAa,6BACN5O,EAAU4O,cADL,mBAEPje,EAAMiP,S,EAMvBF,YAAc,SAACoC,GACX,IAAIiN,EAAkB,EAAKzf,MAAMqf,eAAe3V,KAAI,SAAAuJ,GAEhD,OADO,6BAAOA,GAAP,IAAc1R,SAAS,EAAOE,aAAc,QAGvDge,EAAgB5Q,SAAQ,SAAAoE,GACpB,EAAKxC,UAAS,SAAAC,GAAS,MAAK,CACxB2O,eAAgBI,EAChBH,aAAa,6BACN5O,EAAU4O,cADL,mBAEPrM,EAAM5R,IAAM,SAEjB,kBAAM,EAAKxB,MAAM0P,QAAQiD,SAE7B,EAAKxS,MAAMuf,UACX,EAAK9O,SAAS,CAAC8O,UAAU,K,EAIjCM,eAAiB,WACb,GAAI,EAAKjP,eAAe,YAAa,eAAgB,kBAGhD,CACD,IAAMrQ,EAAK,EAAKP,MAAMsf,aAAa/e,GAEnC,OADA,EAAKkQ,SAAS,CAAC8M,WAAW,IACnBC,GAAUvT,eAAe1J,EAAI,EAAKP,MAAMsf,cAC1C5X,MAAK,SAAAR,GACCA,IACC,EAAKuJ,SAAS,CACV8M,WAAW,EACX+B,aAAc,OAElB,EAAKzf,MAAMmf,UAAS,GAEpB,EAAKnf,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,2BAM1BoR,OAAM,SAAA9K,GACH,EAAK+K,YAAY/K,Q,EAKjChG,YAAc,WACV,GAAI,EAAK8P,eAAe,YAAa,eAAgB,kBAGhD,CACD,EAAKH,SAAS,CAAC8M,WAAW,IAC1B,IAAIuC,EAAqB/Q,GAAY,EAAK/O,MAAMsf,cAEhD,OAAO9B,GAAU1c,YAAYgf,GACxBpY,MAAK,SAAAR,GACCA,IACC,EAAKuJ,SAAS,CACV8M,WAAW,EACX+B,aAAc,OAElB,EAAKzf,MAAMmf,UAAS,OAG3BpN,OAAM,SAAA9K,GACH,EAAK+K,YAAY/K,Q,EAKjC+K,YAAc,SAAC/K,GACX,GAAIA,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,QAAkC,MAAxBhL,EAAIC,SAAS+K,OAAgB,CAC3E,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,OAC3BgO,EAAa,EAAK/f,MAAMqf,eAAe3V,KAAI,SAAAuJ,GAI3C,OAHoD,IAA1CrE,KAAEoR,QAAQpR,KAAErB,KAAKwE,GAASkB,EAAM5R,KAAhC,6BACI4R,GADJ,IACW1R,SAAS,EAAME,aAAemN,KAAEqR,OAAOlO,EAAQkB,EAAM5R,OADhE,6BAEI4R,GAFJ,IAEW1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAAC4O,eAAgBU,SAI/B,EAAKlgB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAO,4CAKvB,EAAKiQ,SAAS,CACV8M,WAAW,K,EAInB3d,OAAS,WAAO,IAAD,EACc,EAAKC,MAAtBsS,EADG,EACHA,KAAMoF,EADH,EACGA,OADH,EAEyC,EAAKvX,MAAjDqf,EAFG,EAEHA,eAAgBC,EAFb,EAEaA,aAAc/B,EAF3B,EAE2BA,UAEtC,OACI,kBAAC,GAAD,CACIpL,KAAMA,EACN3R,MAAO+W,IAAWwF,GAAMpc,EAASG,YAAcH,EAASI,aACxDuW,QACI,0BAAM3H,UAAU,uBACV4H,IAAWwF,IDnLf,SCmLsBxF,IAChB,kBAAC,IAAMnF,SAAP,KACI,yBAAKzC,UAAU,qBACX,wBAAIA,UAAU,kBAAd,aAEJ,yBAAKA,UAAU,wBACV0P,EAAe3V,KACZ,SAACuJ,EAAOgD,GAAR,MACkB,OAAdhD,EAAM5R,KACF,kBAAC,GAAD,CACIb,MAAOyS,EAAMzS,MACbD,GAAII,EAASC,YACbS,IAAK4R,EAAM5R,IACX+R,cAAeH,EAAM3R,YAAc,WACnCmW,eAAc,oBAAexB,EAAQ,GACrC5C,UAAWJ,EAAM1R,SAAW0R,EAAMxR,aAClCgI,MACI6V,GAAgBA,EAAarM,EAAM5R,KACjCie,EAAarM,EAAM5R,KACnB,GACNgP,SAAU,SAACC,GAAD,OAAS,EAAK8J,aAAanH,EAAM5R,IAAKiP,IAChDiD,QAAS,SAACD,GAAD,OAAO,EAAK7C,UAAS,SAACC,GAAD,MAAgB,CAC1C2O,eAAgB3O,EAAU2O,eAAe3V,KAAI,SAACiE,GAAD,OACzCA,EAAItM,MAAQ4R,EAAM5R,KAAOsM,EAAIpM,QAC3B+L,OAAO4S,OAAOvS,EAAK,CAACpM,SAAS,EAAOE,aAAc,KAClDkM,UAGVkP,UAAWtF,IAAWwF,IAAqB,SAAd9J,EAAM5R,IAAiB,YAAc,WAStGkW,OACI,yBAAK5H,UAAU,sBACX,yBAAKA,UAAU,oBACX,4BAAQA,UAAU,2BAA2BC,QAAS,kBAAM,EAAKQ,aAAY,KAA7E,UD3NN,SC8NOmH,GACG,4BAAQ5H,UAAU,0BAA0BC,QAAS,kBAAM,EAAKiQ,mBAC3D,QAGRtI,IAAWwF,IACR,4BAAQpN,UAAU,0BAA0BC,QAAS,kBAAM,EAAK9O,gBAC3D,kBAMrByO,QAAS,SAACiD,GAAD,OAAQ,EAAKpC,YAAYoC,IAClC6E,QAASkG,K,YApPwB7J,IAAMlU,W,gHCW1C2gB,GAAUzZ,GAAeC,QAAQ,WAExCyZ,G,kDACJ,WAAYvgB,GAAQ,IAAD,8BACjB,cAAMA,IAgCR2f,kBAAoB,WAClB,EAAKa,qBAAoB,GACzB3b,OAAOoQ,iBAAiB,YAAa,EAAKwL,oBAC1C5b,OAAOoQ,iBAAiB,SAAS,SAACxB,GAAD,OAAO,EAAKa,2BAA2Bb,OApCvD,EAwCnBW,qBAAuB,WACrBvP,OAAOwP,oBAAoB,YAAa,EAAKoM,oBAC7C5b,OAAOwP,oBAAoB,SAAS,SAACZ,GAAD,OAClC,EAAKa,2BAA2Bb,OA3CjB,EAgDnBgN,mBAAqB,WAGnB,EAAK7P,SAAS,CACZ8P,YAAY,KApDG,EAwDnBF,oBAAsB,SAACG,GAMrB,OALIA,EACF,EAAK/P,SAAS,CAAEgQ,gBAAgB,IAEhC,EAAKhQ,SAAS,CAAEgQ,gBAAgB,IAE3BjD,GACJjU,sBACA7B,MAAK,SAACuV,GAEL,OADA,EAAKxM,SAAS,CAAEiQ,eAAgBzD,IAE9BkD,KACCvR,KAAE+R,QAAQR,KACXA,GAAQnO,eAAe,mBACvBmO,GAAQS,eAED5Z,QAAQ6Z,QAAQV,GAAQS,gBAExBpD,GAAU9U,iBAGpBhB,MAAK,SAACR,GACL4Z,QAAQC,IAAI,gCAAiC7Z,GAC7C,EAAKuJ,SACH,CACEmQ,eAAgB1Z,EAChB8Z,YAAY,EACZC,iBAAiB,EACjBC,aAAa,EACbC,aAAa,EACbC,aAAa,EACbC,sBAAuB,kBAEzB,WACE,EAAKC,eAAe,EAAKthB,MAAM4gB,eAAeW,eAGlD,EAAKC,qBAEN5P,OAAM,SAAC9K,GACFA,EAAI2a,SAAmC,MAAxB3a,EAAIC,SAAS+K,QAC9B4P,MAAM,oBAAD,OAAqB5a,EAAIC,SAASY,KAAKoK,OAAO,KAGrD,EAAKtB,SAAS,CACZmQ,eAAgB,KAChBI,YAAY,QAtGD,EA2GnBQ,gBAAkB,WAChBhE,GACG7U,WACAjB,MAAK,SAACR,GAGL,GAFA4Z,QAAQC,IAAI,6BAA8B7Z,GAEtCA,EAAIya,MAAQ,EAAG,CACjB,IAAM9Y,EAAU3B,EAAI0a,MAAM,GAAGrhB,GAE7Bid,GACG5U,YAAYC,GACZnB,MAAK,SAACR,GAGL,GAFA4Z,QAAQC,IAAI,gCAAiC7Z,GAEzCA,EAAIya,MAAQ,EAAG,CACjB,IAAM5Y,EAAW7B,EAAI0a,MAAM,GAAGrhB,GAE1B,EAAKP,MAAM4gB,eAAe1N,KAAK3S,KAAOwI,GACxC,EAAK0H,SAAS,CACZoR,cAAe9Y,EACf+Y,aAAcjZ,EACdkZ,mBAAmB,QAK1BnQ,OAAM,SAAC9K,GACNga,QAAQC,IAAI,yBAA0Bja,UAI7C8K,OAAM,SAAC9K,GACNga,QAAQC,IAAI,sBAAuBja,OA3ItB,EA+InBkb,iBAAmB,SAACxB,GAMlB,OALIA,EACF,EAAK/P,SAAS,CAAEgQ,gBAAgB,IAEhC,EAAKhQ,SAAS,CAAEgQ,gBAAgB,IAE3BjD,GACJjU,sBACA7B,MAAK,SAACuV,GAEL,OADA,EAAKxM,SAAS,CAAEiQ,eAAgBzD,IAE9BkD,KACCvR,KAAE+R,QAAQR,KACXA,GAAQnO,eAAe,mBACvBmO,GAAQlE,eAEDjV,QAAQ6Z,QAAQV,GAAQlE,gBAExBuB,GAAU1U,WACf,EAAK9I,MAAM8hB,aACX,EAAK9hB,MAAM6hB,kBAIhBna,MAAK,SAACR,GACL4Z,QAAQC,IAAI,+BAAgC7Z,GAC5C,EAAKuJ,SACH,CACEwR,YAAa/a,EACb8Z,YAAY,EACZC,iBAAiB,EACjBC,aAAa,EACbC,aAAa,EACbC,aAAa,EACbC,sBAAuB,mBAEzB,WACE,EAAKC,eAAe,EAAKthB,MAAMiiB,YAAYV,kBAIhD3P,OAAM,SAAC9K,GACNga,QAAQC,IAAI,wBAAyBja,GAErC,EAAK2J,SAAS,CACZwR,YAAa,KACbhB,iBAAiB,QA7LN,EAkMnBK,eAAiB,SAACY,GAChB,IAAIC,EAAcjU,KAAKE,MAKnBgU,EAJalU,KAAKrB,MAAMqV,GAIDC,EAHN,IAIrB,GAAIC,GAAW,EAEb,EAAKC,yBACA,CACD,EAAKriB,MAAMsiB,SACbC,aAAa,EAAKviB,MAAMsiB,SAE1B,IAAM/hB,EAAKwH,WAAW,EAAKsa,mBAAoBD,GAC/C,EAAK3R,SAAS,CACZ6R,QAAS/hB,MAlNI,EAuNnB8hB,mBAAqB,WACnBvB,QAAQC,IAAI,4BAGR,EAAK/gB,MAAMugB,WAEb,EAAK9P,SACH,CACE8P,YAAY,IAEd,kBAAM,EAAKiC,mBAGb,EAAK/R,SAAS,CACZgS,gBAAgB,EAChB/Q,eAAgB,6BAtOH,EA2OnB8Q,cAAgB,WACd,EAAK/R,SACH,CACEgS,gBAAgB,IAElB,YACgC,IAA1B,EAAKziB,MAAMghB,WACb,EAAKX,qBAAoB,IACe,IAA/B,EAAKrgB,MAAMihB,iBACpB,EAAKe,kBAAiB,GAExB,EAAKvR,SAAS,CAAEiB,eAAgB,WAtPnB,EA2PnBgR,aAAe,aA3PI,EAkRnBC,eAAiB,WACf7B,QAAQC,IAAI,qBAnRK,EAsRnB6B,cAAgB,WACd9B,QAAQC,IAAI,gBACZ,EAAK8B,2BAxRY,EA2RnBA,wBAA0B,WAIxB,EAAK7iB,MAAMwI,OACRsa,WACApb,MAAK,SAACqb,GACL,IAAIC,EAAaD,EAAM7R,MAAK,SAAU+R,GACpC,OAAOA,EAAKC,YAGd,EAAKC,gBAAgBH,MAEtBpR,OAAM,SAAUG,GACf+O,QAAQC,IAAIhP,OAzSC,EA6SnBoR,gBAAkB,SAACF,GAIjB,IAAMzb,EAAYd,GAAeC,QAAQ,iBACnCyc,EACJ5b,EAAU,EAAK3H,MAAMiK,MAArB,UAA8B,EAAK9J,MAAMqhB,yBAC6B,OAAtE7Z,EAAU,EAAK3H,MAAMiK,MAArB,UAA8B,EAAK9J,MAAMqhB,wBACrC7Z,EAAU,EAAK3H,MAAMiK,MAArB,UAA8B,EAAK9J,MAAMqhB,wBACtCgC,kBACH,KAGFzN,EAAc,IAAI1H,KAChBoV,GAAY1N,EAAY2N,WAAa,GAAGC,WACxCC,EAAU7N,EAAY8N,UAAUF,WAElCG,EACF/N,EAAYG,cACZ,IACAuN,EAASM,SAAS,EAAG,KACrB,IACAH,EAAQG,SAAS,EAAG,KACpB,YAGFhO,EAAYiO,SAASjO,EAAY2N,WAAa,GAC9C,IAAMO,GAAYlO,EAAY2N,WAAa,GAAGC,WASxCO,EAAa,CACjBC,QAAS,6CACT1P,OAAQ,CACN2P,MAAO,UACPC,OAAQ,QAMVC,gBAAiB,MACjBC,WAAY,CACV,CACEjY,SAAU,qBACV1C,MArBJmM,EAAYG,cACZ,IACA+N,EAASF,SAAS,EAAG,KAFrBhO,gBAwBE,CACEzJ,SAAU,kBACV1C,MAAOka,IAIXU,WAAYC,UAAOC,WAAWC,UAGhCvB,EACGwB,aACA/c,MAAK,SAACgd,GAELA,EAAQ7V,SAAQ,SAAC8V,GACM,gCAAjBA,EAAOnkB,QACJ,EAAKR,MAAMkhB,cAGdyD,EACGC,eAAe,CACdC,QAAS,CAACd,KAEXrc,MAAK,kBACJ,EAAKod,wBAAwBJ,EAAStB,MAGvCxR,OAAM,SAAUG,GACf+O,QAAQC,IAAIhP,MAGhB,EAAKtB,SAAS,CACZyQ,aAAa,MAIE,qCAAjByD,EAAOnkB,QACJ,EAAKR,MAAMohB,cACdN,QAAQC,IAAI,0BAA2B4D,GAGvCA,EACGC,eAAe,CACdC,QAAS,CAACd,KAEXrc,MAAK,kBACJ,EAAKod,wBAAwBJ,EAAStB,MAGvCxR,OAAM,SAAUG,GACf+O,QAAQC,IAAIhP,MAGhB,EAAKtB,SAAS,CACZ2Q,aAAa,MAIE,6BAAjBuD,EAAOnkB,QACJ,EAAKR,MAAMmhB,cAEdL,QAAQC,IAAI,2BAA4B4D,GAGxCA,EACGC,eAAe,CACdC,QAAS,CAACd,KAEXrc,MAAK,kBACJ,EAAKod,wBAAwBJ,EAAStB,MAGvCxR,OAAM,SAAUG,GACf+O,QAAQC,IAAIhP,MAEhB,EAAKtB,SAAS,CACZ0Q,aAAa,YAMtBvP,OAAM,SAAUG,GACf+O,QAAQC,IAAIhP,OApbC,EAwbnBgT,iBAAmB,WAGjB,GAFAjE,QAAQC,IAAI,mBAEP,EAAK/gB,MAAMwI,OAGhB,OAAO,EAAKxI,MAAMwI,OACfsa,WACApb,MAAK,SAACqb,GAEL,OADmBA,EAAM7R,MAAK,SAAC+R,GAAD,OAAUA,EAAKC,YAC3BuB,gBAEnB/c,MAAK,SAACgd,GACL,IAAIM,EAAYte,GAAeC,QAAQ,kBACvC+d,EAAUA,EAAQlX,QAAO,SAACyX,GAAD,YAAyBnW,IAAfmW,EAAKzkB,UAChCqO,SAAQ,SAACoW,GACf,QAAQ,GAUN,IAAoB,sCAAfA,EAAKzkB,MACR,IAAM0kB,EAAW,CACfD,EAAKE,WACHb,UAAOc,eAAeC,WACtBzf,KAEFqf,EAAKK,kBAEP,OAAOte,QAAQue,IAAIL,GAChBxd,MAAK,SAACR,GACL,GAAIA,EAAK,CACP,IAAMsG,EAAStG,EAAI,GAAKA,EAAI,GAAG2d,QAAQ,GAAK,KAExCW,EAAsBte,EAAI,GAC1B,EAAKue,uBAAuBve,EAAI,IAChC,KAQJ,OANA8d,EAAU,EAAKnlB,MAAMiK,MACnB,EAAK9J,MAAMqhB,uBACT,CACFgC,kBAAmB7V,GAAkB,MAEvC9G,GAAeU,SAAS,gBAAiB4d,GAClCQ,MAGV9d,MAAK,SAAC8d,GACL,EAAK/U,SAAS,CACZiV,mBAAoBF,EAChB,EAAKG,yBACHH,EACA,EAAKxlB,MAAM0gB,gBAEb,UAGP9O,OAAM,SAAC9K,GAAD,OAASga,QAAQC,IAAIja,MAChC,QACE,cAIP8K,OAAM,SAAC9K,GACNga,QAAQC,IAAIja,GACZ,EAAK2J,SAAS,CACZgQ,gBAAgB,OAGnBmF,SAAQ,WACP,EAAKnV,SAAS,CACZgQ,gBAAgB,QApgBL,EAygBnBoF,kBAAoB,WAClB,EAAK7D,kBAAiB,GAkBtB,EAAKvR,SAAS,CAAEqV,iBAAiB,KA5hBhB,EA+hBnBC,iBAAmB,WACjB,EAAK1F,qBAAoB,GAYzB,EAAK5P,SAAS,CAAEqV,iBAAiB,KA5iBhB,EA+iBnBE,aAAe,SAACC,GACd,EAAKjmB,MAAMwI,OAAOiL,cAhjBD,EAyjBnBU,2BAA6B,SAACb,GAE1B,EAAKS,iBACL,EAAKA,gBAAgBK,UACpB,EAAKL,gBAAgBK,QAAQC,SAASf,EAAEgB,SAEzC,EAAK7D,SAAS,CAAEmD,oBAAoB,KA/jBrB,EAmkBnB+R,yBAA2B,SAACO,EAAkBxF,GAE5C,GAGQ,OAFNha,GAAeC,QAAQ,iBAAiB,EAAK9G,MAAMiK,MAAnD,UACK,EAAK9J,MAAMqhB,wBAEhB,CACA,IAAM7Z,EACJd,GAAeC,QAAQ,iBAAiB,EAAK9G,MAAMiK,MAAnD,UACK,EAAK9J,MAAMqhB,wBAkBlB,OAfkC,OAAhC7Z,EAAU6b,mBACV7b,EAAU6b,kBAAkB8C,QAC5B3e,EAAU6b,kBAAkB8C,OAAOxK,OAAS,EAEjC+E,EAAelT,QAAO,SAACuN,GAAD,OAC/BvT,EAAU6b,kBAAkB8C,OAAO1Y,SAASsN,EAAGjR,SAGtCoc,EAAiBxc,KAAI,SAAC0c,GAG/B,OAFAA,EAAKA,EAAGC,OACE3F,EAAexP,MAAK,SAACoV,GAAD,OAAQA,EAAGxc,KAAKuc,SAAWD,SAIzC5Y,QAAO,SAACuN,GAAD,YAAejM,IAAPiM,OA7lBpB,EAkmBnB/R,eAAiB,SAACiC,GAMhB,OALA,EAAKwF,SAAS,CACZ8V,kBAAkB,EAClB3S,oBAAoB,IAGf4J,GACJxU,eAAeiC,GACfvD,MAAK,SAACR,GACL,EAAKuJ,SAAS,CACZ8V,kBAAkB,EAClB7U,eAAgB,kCAChB8U,iBAAiB,OAGpB5U,OAAM,SAAC9K,GACN,EAAK2J,SAAS,CACZ8V,kBAAkB,EAClB7U,eAAgB,iCAChB8U,iBAAiB,QArnBN,EA0nBnBC,YAAc,SAACzO,GACb,MACW,eAATA,GACS,aAATA,GACS,gBAATA,GACS,aAATA,GA/nBe,EAmoBnByN,uBAAyB,SAACN,GACxB,IAAIuB,EAAUvB,EAAWxd,KAAKqN,MAAM,MAC9BxU,EAAQkmB,EAAQC,QAKtB,OAHAD,GADAA,EAAUA,EAAQlZ,QAAO,SAACuN,GAAD,MAAe,KAAPA,GAAaA,IAAOva,MACnCkJ,KAAI,SAACqR,GACrB,OAAOA,EAAGsL,WAxoBK,EA6oBnBvB,wBAA0B,SAACJ,EAAStB,GAClC,IAAIwD,EAAqBlC,EAAQlX,QAC/B,SAACmX,GAAD,MAA6B,sCAAjBA,EAAOnkB,SACnB,GACF,OAAOomB,EACJzB,WAAWb,UAAOc,eAAeC,WAAYzf,KAC7C8B,MAAK,SAACC,GACL,IAAMsV,EAAa,EAAKwI,uBAAuB9d,GAC3C0b,EAAoB,KACxB,QAAQ,GACN,KAAwB,OAAnBD,EACHC,EAAoB,KACpB,MACF,KAAKD,EAAe+C,OAAOxK,OAAS,EAClC,IAAIzU,EAAMkc,EAAe+C,OAAO3Y,QAC9B,SAACuN,GAAD,OAAQkC,EAAWxP,SAASsN,EAAGsL,SAAWpJ,EAAWxP,SAASsN,MAEhE,GAAmB,IAAf7T,EAAIyU,OAAc,CACpB0H,EAAoB,KACpB,MAEAD,EAAe+C,OAASjf,EACxBmc,EAAoBD,EAO1B,OAAOwD,EAAmBhC,eAAe,CACvCC,QAAS,CAACxB,QAGbzR,OAAM,SAAC9K,GAAD,OAASga,QAAQC,IAAIja,OA9qBb,EA0rBnBlH,OAAS,WAAO,IAAD,EAWT,EAAKI,MATP4gB,EAFW,EAEXA,eACAI,EAHW,EAGXA,WACAyB,EAJW,EAIXA,eACAxB,EALW,EAKXA,gBACAgB,EANW,EAMXA,YACAyD,EAPW,EAOXA,mBACAhU,EARW,EAQXA,eACA6U,EATW,EASXA,iBACAC,EAVW,EAUXA,gBAEMK,EAAiB,EAAKhnB,MAAtBgnB,aAGR,OACE,kBAAC,IAAMzU,SAAP,KAEE,kBAAC,GAAD,CACED,KAAMsQ,EACNjiB,MAAOkR,EACPgF,SAAU,kBAAM,EAAK8L,iBACrB7L,YAAY,iBACZtE,KAAMyU,OAGR,kBAAC,GAAD,CACE3U,MAAOoU,GAAuC,OAAnB7U,IAA4B+Q,EACvDjiB,MAAOkR,EACPW,KAAMmU,EAAkBlU,KAAYC,KACpCnC,YAAa,SAACoC,GAAD,OAAQ,EAAK/B,SAAS,CAAEiB,eAAgBc,OAEvD,yBAAK7C,UAAU,qBACX,EAAK3P,MAAM+hB,mBACX,yBAAKpS,UAAU,SACb,2BACEqI,KAAK,QACLzX,GAAG,IACHuJ,KAAK,SACLgO,QAAS,EAAK9X,MAAM8lB,gBACpBlW,QAAS,kBAAM,EAAKmW,oBACpBgB,UAAQ,IAEV,2BAAOC,QAAQ,KACb,0BAAMrX,UAAU,gBAAhB,qBAIL,EAAK3P,MAAM+hB,mBACV,yBAAKpS,UAAU,SACb,2BACEqI,KAAK,QACLzX,GAAG,IACHuJ,KAAK,SACLgO,QAAS,EAAK9X,MAAM8lB,gBACpBlW,QAAS,kBAAM,EAAKmW,oBACpBgB,UAAQ,IAEV,2BAAOC,QAAQ,KACb,0BAAMrX,UAAU,gBAAhB,oBAGF,2BACEqI,KAAK,QACLzX,GAAG,IACHuJ,KAAK,SACLgO,SAAU,EAAK9X,MAAM8lB,gBACrBlW,QAAS,kBAAM,EAAKiW,qBACpBkB,UAAQ,IAEV,2BAAOC,QAAQ,KACb,0BAAMrX,UAAU,gBAAhB,qBAKN,yBAAKA,UAAU,sBACb,yBAAKA,UAAU,qBAAqB6F,IAAK,EAAKzB,iBAC5C,yBAAKpE,UAAU,4BACb,kBAAC,GAAD,CACEwC,KAAM,EAAKnS,MAAMumB,iBACjB9S,YAAY,KAGhB,yBAAK9D,UAAU,SACb,4BACEA,UAAU,+CACVC,QAAS,SAAC0D,GACRA,EAAEgC,iBACF,EAAK7E,SAAS,CACZmD,oBAAqB,EAAK5T,MAAM4T,sBAGpCmE,UACG,EAAK/X,MAAMygB,gBAAkB,EAAKzgB,MAAMumB,kBAG3C,0BAAM5W,UAAU,aACd,yBAAKE,IAAKoX,KAAclX,IAAI,GAAGnN,MAAM,KAAKskB,OAAO,QAbrD,iBAgBE,0BAAMvX,UAAU,cACd,yBACEA,UACE,EAAK3P,MAAM4T,mBAAqB,SAAW,WAE7C/D,IAAKsX,KACLvkB,MAAM,KACNskB,OAAO,KACPnX,IAAI,OAIV,kBAAC,GAAD,CAAcoC,KAAM,EAAKnS,MAAM4T,oBAC5B8R,GACCA,EAAmBhc,KAAI,SAACwJ,GAAD,OACrB,4BACE7R,IAAK6R,EAAK3S,GACVoP,UAAU,wCACVC,QAAS,kBAAM,EAAK5G,eAAekK,EAAK3S,KACxCmX,MAAO,CAAE0P,cAAe,eAEvBlU,EAAKpJ,YAOlB,4BACE6F,UAAU,qCACVC,QAAS,kBAAM,EAAKoW,cAAa,KAEjC,0BAAMrW,UAAU,aACd,yBAAKE,IAAKwX,KAAgBtX,IAAI,MALlC,gBAWJ,yBACEJ,UAAU,2BACV+H,MAAO,CAAE4P,SAAU,aAEnB,yBAAK3X,UAAU,wBAEX,EAAK3P,MAAMygB,gBACX,kBAAC,GAAD,CAAYjgB,MAAM,uCAEnBwgB,GACC,kBAAC,gBAAD,CACEuG,YAAa,CACXvP,KA3IE,SA4IFzX,GAAIqgB,EAAe1N,KAAK3S,GACxBinB,SAAU5G,EAAe6G,UACzBC,YAAa9G,EAAe+G,MAC5BC,UAAWtD,UAAOuD,UAAUC,OAI9BC,aAAc,qBACdC,cACE,IAAIC,IAAI,CAEN,CACE,WACA,WACE,EAAKlD,qBAGT,CACE,cACA,WACE,EAAKnC,oBAKbsF,qBAAsB,SAACC,GACrB,EAAK1X,SAAS,CACZjI,OAAQ2f,OAKflH,GACC,kBAAC,gBAAD,CACEsG,YAAa,CACXvP,KA/KE,SAgLFzX,GAAI0hB,EAAY/O,KAAK3S,GACrBinB,SAAUvF,EAAYwF,UACtBC,YAAazF,EAAY0F,MACzBC,UAAWtD,UAAOuD,UAAUC,OAI9BC,aAAc,qBACdC,cACE,IAAIC,IAAI,CAEN,CACE,WACA,WACE,EAAKlD,qBAGT,CACE,cACA,WACE,EAAKnC,oBAKbwF,SAAU,CACRC,wBAAwB,EACxBC,WAAYhE,UAAOiE,WAAWC,OAC9BC,aAAc,CACZC,cAAepE,UAAOqE,cAAcC,YAGxCV,qBAAsB,SAACC,GACrB,EAAK1X,SAAS,CACZjI,OAAQ2f,SAMhB,EAAKnoB,MAAM4T,oBAAsBiT,IACjC,yBAAKlX,UAAU,eA75BvB,EAAKoE,gBAAkBL,IAAMM,YAE7B,EAAKhU,MAAQ,CACXghB,YAAY,EACZJ,eAAgB,KAChBK,iBAAiB,EACjBgB,YAAa,KACbQ,gBAAgB,EAChBja,OAAQ,KACR0Y,aAAa,EACbC,aAAa,EACbC,aAAa,EACbb,YAAY,EACZuF,iBAAiB,EACjBjE,cAAe,KACfC,aAAc,KACdC,mBAAmB,EACnBO,QAAS,KACTuG,gBAAgB,EAChBxH,sBAAuB,KACvBZ,gBAAgB,EAChB7M,oBAAoB,EACpB8R,mBAAoB,KACpBa,kBAAkB,EAClBC,iBAAiB,EACjB9U,eAAgB,KAChBgP,eAAgB,MA7BD,E,UADEhN,IAAMlU,WA86BdkW,eAAW0K,I,4GC97BL0I,G,4MACjB9oB,MAAQ,CACJ+oB,cAAe,EAAKlpB,MAAMmpB,W,EAG9B/Y,mBAAqB,SAACC,EAAWQ,GACzBR,EAAU8Y,YAAc,EAAKnpB,MAAMmpB,WACnC,EAAKvY,SAAS,CAAEsY,cAAe,EAAKlpB,MAAMmpB,a,EAIlDC,WAAa,SAAC3kB,GACV,OAAQA,GACJ,IAAK,iBACD,OAAO4kB,KACX,IAAK,YACD,OAAOC,KACX,IAAK,kBACD,OAAOC,KACX,IAAK,gBACD,OAAOC,KACX,QACI,S,EAIZC,oBAAsB,SAACrT,GACnB,EAAKxF,SAAS,CAAEsY,cAAe9S,IAC/B,EAAKpW,MAAM0pB,aAAatT,I,EAG5BrW,OAAS,WAAO,IAAD,EACwC,EAAKC,MAAhDyP,EADG,EACHA,SAAU9O,EADP,EACOA,MAAO6W,EADd,EACcA,QAASmS,EADvB,EACuBA,aAC1BT,EAAkB,EAAK/oB,MAAvB+oB,cAER,OACI,kBAAC,IAAM3W,SAAP,KACI,yBAAKzC,UAAU,oBAAoBnP,GAASA,GAC3C6W,EACG,kBAAC,GAAD,CAAY1H,UAAU,kBAAkBnP,MAAOgpB,IAE/C,kBAAC,IAAMpX,SAAP,KACI,yBAAKzC,UAAU,sBACX,yBAAKA,UAAU,WACVxL,EAAUE,MAAMqF,KAAI,SAACwJ,EAAM+C,GAAP,OACjB,yBAAK5U,IAAK6R,EAAK7R,IAAKsO,UAAU,eAAeC,QAAS,kBAAM,EAAK0Z,oBAAoBrT,KACjF,yBAAKtG,UAAWsG,IAAU8S,EAAgB,SAAW,SACjD,yBAAKlZ,IAAK,EAAKoZ,WAAW/V,EAAK5O,UAAWyL,IAAI,KAC9C,4BAAkB,wBAAbmD,EAAK7R,IAAgC6R,EAAK1S,MAAMwU,MAAM,KAAK,GAAK9B,EAAK1S,aAK1F,yBAAKmP,UAAU,WAAWL,O,YArDrBoE,IAAMlU,W,6DCSlBiqB,G,4MACjBzpB,MAAQ,CACJ0pB,kBAAmB,KACnBC,wBAAwB,EACxBC,0BAA0B,EAC1BC,gBANqB,MAOrBjoB,WAAY,EAAK/B,MAAM+B,Y,EAG3BqX,WAAa,SAAC3F,EAAG/S,EAAIyX,GACjB,IAAMpW,EAAa,EAAK5B,MAAM4B,WAAW8H,KAAI,SAACD,EAAO0Q,GAYjD,OAXI1Q,EAAMlJ,KAAOA,GAAM+S,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,aACtC,UAATnB,IAAkBvO,EAAMuP,aAAc,GAC7B,aAAThB,IAAqBvO,EAAMqgB,gBAAiB,GACnC,QAAT9R,IAAgBvO,EAAMsgB,WAAY,GACzB,kBAAT/R,IAA0BvO,EAAMugB,cAAe,KAEnDvgB,EAAMuP,aAAc,EACpBvP,EAAMqgB,gBAAiB,EACvBrgB,EAAMsgB,WAAY,EAClBtgB,EAAMugB,cAAe,GAElBvgB,KAGX,EAAKgH,SAAS,CAAE7O,gB,EAGpBhC,OAAS,WAAO,IAAD,EAC4G,EAAKC,MAApHoqB,EADG,EACHA,iBAAkBrgB,EADf,EACeA,MAAOsgB,EADtB,EACsBA,oBAAqBC,EAD3C,EAC2CA,WAAYlf,EADvD,EACuDA,WAAYkT,EADnE,EACmEA,gBAAiBhO,EADpF,EACoFA,oBADpF,EAQP,EAAKnQ,MALL2pB,EAHO,EAGPA,uBACAD,EAJO,EAIPA,kBACAE,EALO,EAKPA,yBACAC,EANO,EAMPA,gBACAjoB,EAPO,EAOPA,WAGJ,OACI,kBAAC,IAAMwQ,SAAP,KACI,yBAAKzC,UAAU,oBAAoBpP,GAAG,cACjCqB,EAAW+Z,OAAS,EACjB,kBAAC,IAAMvJ,SAAP,KACI,yBAAKzC,UAAU,kBACX,wBAAIA,UAAU,SAAShP,EAASe,gBAAgBE,WAAWC,YAC3D,yBAAK8N,UAAU,gBACdf,KAAEsC,KAAKtH,EAAO,CAAEE,KtBhErB,YsBgEyCqB,YAAa,QAC9C,4BAAQwE,UAAU,yBAAyBC,QAAS,kBAAM,EAAKa,SAAS,CAAEmZ,0BAA0B,EAAMC,gBAhDjH,UAiDY,qBAIb,kBAACjX,GAAA,EAAD,CAAMC,WAAS,EAACC,QAAS,EAAGC,QAAQ,aAAaC,WAAW,UAAUqL,aAAa,aAAa1O,UAAU,sBACrG/N,EAAW8H,KAAI,SAAC0gB,GAAD,OACZ,kBAACxX,GAAA,EAAD,CAAMM,MAAI,EAACmX,GAAI,GAAI9L,GAAI,EAAGld,IAAK+oB,EAAU7pB,IACrC,yBAAKoP,UAAU,aACX,yBAAKA,UAAU,sBACX,kBAACiK,GAAA,EAAD,CAASpZ,MAAO4pB,EAAS,SAAcvQ,UAAU,MAAMC,sBAAuBsQ,EAAUpR,aACpF,wBAAIrJ,UAAU,WAAWoK,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAG8W,EAAU7pB,GAAI,WAAW6pB,EAAS,WAEvG,yBAAKza,UAAU,oBAAf,kBACgBya,EAAS,kBAAwB,YAEhDnZ,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAEE,KtBjF7C,YsBiFiEqB,YAAa,QACtD,yBAAKwE,UAAU,uCACX,4BACIA,UAAU,0BACVC,QAAS,kBAAM,EAAKa,SAAS,CAAEkZ,wBAAwB,EAAMD,kBAAmBU,MAEhF,yBAAKva,IAAK8O,KAAU5O,IAAI,OAIhC,yBAAKJ,UAAU,gBAEnB,yBAAKA,UAAU,iBACbsB,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAEE,KtB9F9C,YsB8FkEqB,YAAa,SAAY8F,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAEE,KtB7F9G,iBsB6FuIqB,YAAaF,OACjI,yBAAK0E,UAAU,kBACX,4BACIA,UAAU,0BACVC,QAAS,kBAAM,EAAKa,SAAS,CAAEmZ,0BAA0B,EAAMF,kBAAmBU,EAAWP,gBAlF3H,WAoF8B,yBAAKha,IAAK8O,KAAU5O,IAAI,QAKxC,kBAAC6C,GAAA,EAAD,CAAMC,WAAS,EAACC,QAAS,EAAGC,QAAQ,aAAapD,UAAU,sBACtDhP,EAASe,gBAAgBE,WAAWK,eAAeyH,KAChD,SAACwJ,GAAD,MACiB,aAAbA,EAAK7R,KACD,kBAACuR,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,EAAG9R,IAAK6R,EAAK7R,KACxB,yBAAKA,IAAK6R,EAAK7R,IAAKsO,UAAU,iBACzBya,EAAUpY,eAAekB,EAAK7R,MAC3B,kBAAC,IAAM+Q,SAAP,KACI,kBAACyM,GAAA,EAAD,CAAYhG,QAAQ,MAAM3F,EAAK1S,QAC7B,CAAC,gBAAiB,2BAA4B,WAAY,OAAOiN,SAASyF,EAAK7R,MAC9E,4BAAK+oB,EAAUlX,EAAK7R,MAET,kBAAb6R,EAAK7R,KAEE,kBAACuY,GAAA,EAAD,CAASpZ,MAAOsN,GAAmBsc,EAAUlX,EAAK7R,MAAOwY,UAAU,MAAMC,sBAAuBsQ,EAAUJ,cACtG,kBAACnL,GAAA,EAAD,CAAYhG,QAAQ,KAAKkB,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAG8W,EAAU7pB,GAAI2S,EAAK7R,OAAOyM,GAAmBsc,EAAUlX,EAAK7R,QAK3H,6BAAb6R,EAAK7R,KAEE,kBAACwd,GAAA,EAAD,CAAYhG,QAAQ,MACoB,SAAnCuR,EAAUlX,EAAK7R,KAAKmiB,WAAwB,MAAQ,OAGlD,aAAbtQ,EAAK7R,KAAmC,QAAb6R,EAAK7R,MAE1B,kBAACuY,GAAA,EAAD,CAASpZ,MAAO4pB,EAAUlX,EAAK7R,KAAMwY,UAAU,MAAMC,qBAAmC,aAAb5G,EAAK7R,KAAsB+oB,EAAUN,gBAAkBM,EAAUL,WACxI,kBAAClL,GAAA,EAAD,CAAYhG,QAAQ,KAAKkB,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAG8W,EAAU7pB,GAAI2S,EAAK7R,OAAO+oB,EAAUlX,EAAK7R,cAUtJ,yBAAKsO,UAAU,qBAlI5B,oBAmIkBya,EAAS,mBACN,yBAAKza,UAAU,SACX,4BACI,8BACI,yBAAKE,IAAKya,KAAava,IAAI,MAE9BpP,EAASe,gBAAgBE,WAAWI,yBAWzE,yBAAK2N,UAAU,cACX,yBAAKA,UAAU,iBACX,yBAAKE,IAAKqZ,KAAgBnZ,IAAI,gBAAgBnN,MAAM,SAExD,yBAAK+M,UAAU,qBACX,6BACI,4BAAKhP,EAASe,gBAAgBE,WAAWC,YACzC,4BAAKlB,EAASe,gBAAgBE,WAAWE,iBACxC8M,KAAEsC,KAAKtH,EAAO,CAAEE,KtB1KzB,esB2KY,4BACI6F,UAAU,yBACVC,QAAS,kBAAM,EAAKa,SAAS,CACzBmZ,0BAA0B,EAC1BC,gBA9JnB,UA+JgBlpB,EAASe,gBAAgBE,WAAWG,oBAQjE,kBAAC,GAAD,CACIoQ,KAAMwX,EACNY,SAAUN,EACVG,UAAWV,EACXna,QAAS,SAACiD,GAAD,OAAQ,EAAK/B,SAAS,CAAEkZ,uBAAwBnX,EAAIkX,kBAAmB,QAChF1K,SAAU,SAACxM,GACP,EAAK/B,SAAS,CACVkZ,uBAAwBnX,EACxBkX,kBAAmB,OAEvBQ,KAEJC,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,IAEzB,kBAAC,GAAD,CACIvG,MAAOA,EACPqB,WAAYA,EACZkH,KAAMyX,EACNra,QAAS,SAACiD,GACN,EAAK/B,SAAS,CACVmZ,yBAA0BpX,EAC1BkX,kBAAmB,QAG3B1K,SAAU,SAACxM,GACP,EAAK/B,SAAS,CACVmZ,yBAA0BpX,EAC1BkX,kBAAmB,OAEvBQ,KAEJE,UAAWV,EACXnS,OAAQsS,EACRU,SAAUN,EACVE,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,M,YA5MDuD,IAAMlU,WCdzBirB,G,4MAEnB7qB,OAAS,WAAO,IAAD,EACuC,EAAKC,MAA/C6qB,EADG,EACHA,WAAYC,EADT,EACSA,gBAAiBJ,EAD1B,EAC0BA,SAErC,OACI,yBAAK5a,UAAU,gCACV4a,GACG,kBAAC,GAAD,CAAiBhqB,GAAG,WAAWC,MAAM,4BAA4B6Z,UAAQ,EAACD,aAAc,SAAC9J,GAAD,OAASoa,EAAWpa,IAAM7G,MAAOkhB,EAAiBzQ,QAASqQ,M,YARtH7W,IAAMlU,W,oBCQhCorB,G,4MACjB5qB,MAAQ,CACJoqB,UAAW,KACXS,gBAAgB,aAAKlqB,EAASe,gBAAgBE,WAAWM,0BACzD4oB,yBAAyB,EACzB9R,aAAa,G,EAGjB/I,mBAAqB,SAACC,EAAWQ,GACzBR,EAAUka,YAAc,EAAKvqB,MAAMuqB,WAAsC,OAAzB,EAAKvqB,MAAMuqB,WAC3D,EAAK3Z,SAAS,CAAE2Z,UAAW,EAAKvqB,MAAMuqB,YAEvCla,EAAUC,sBAAwB,EAAKtQ,MAAMsQ,sBAA0D,IAAnC,EAAKtQ,MAAMsQ,qBAC9E,EAAKC,aAAY,I,EAIzBgK,aAAe,SAAC/Y,EAAKiP,GACjB,EAAKG,UAAS,SAACC,GAAD,MAAgB,CAC1B0Z,UAAU,6BACH1Z,EAAU0Z,WADR,mBAEJ/oB,EAAMiP,S,EAKnBya,iBAAmB,SAACC,GAChB,IAAIC,EAAkB,EAAKprB,MAAM0qB,SAAS/c,QAAO,SAAA0d,GAAG,OAAIA,EAAI1qB,QAAUwqB,KAAa,GACnF,OAAOC,EAAkBA,EAAe,IAAU,I,EAGtDP,WAAa,SAACpa,GACV,IAAI0a,EAAc,EAAKnrB,MAAM0qB,SAAS/c,QAAO,SAAA0d,GAAG,OAAIA,EAAI7pB,MAAQiP,KAAK,GAAnD,MAClB,EAAK8J,aAAa,eAAgB4Q,GAClC,EAAK5Q,aAAa,gCAAiC9J,I,EAGvDF,YAAc,SAACoC,GACX,EAAK3S,MAAM0P,QAAQiD,GACnB,EAAK/B,SAAS,CAAE2Z,UAAW,Q,EAG/Be,eAAiB,WACb,IAAIld,EAAI,IAAIC,KACZ,EAAKuC,SAAS,CAACqa,yBAAyB,IACxC,IAAIV,EAAS,6BAAO,EAAKpqB,MAAMoqB,WAAlB,IAA6B,wBAA2Bnc,EAAEmd,gBACvE,OAAO5N,GAAUhT,UAAU4f,EAAU7pB,GAAI6pB,GACpC1iB,MAAK,SAACR,GACCA,GACA,EAAKuJ,SAAS,CACVqa,yBAAyB,EACzBV,UAAW,UAItB1iB,MAAK,kBAAM,EAAK7H,MAAMmf,UAAS,MAC/BtX,MAAK,kBAEF,EAAK7H,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,wCAKtBoR,OAAM,SAAA9K,GACH,EAAK2J,SAAS,CACVqa,yBAAyB,IAG7B,EAAKjrB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAO,wC,EAO/ByY,WAAa,SAAC3F,GACNA,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,aAChC,EAAK1I,SAAS,CAAEuI,aAAa,K,EAIrCpZ,OAAS,WAAO,IAAD,EACgB,EAAKC,MAAxBsS,EADG,EACHA,KAAMoY,EADH,EACGA,SADH,EAEkE,EAAKvqB,MAA1EoqB,EAFG,EAEHA,UAAWS,EAFR,EAEQA,gBAAiBC,EAFzB,EAEyBA,wBAAyB9R,EAFlD,EAEkDA,YAE7D,OACI,kBAAC,GAAD,CACI7G,KAAMA,EACN3R,MAAO,wBACP8W,QACI,0BAAM3H,UAAU,sBACZ,yBAAKA,UAAU,2BACX,wBAAIA,UAAU,0BAAd,aAEHya,GACG,kBAAC,IAAMhY,SAAP,KACI,wBAAIzC,UAAU,mBACV,kBAACiK,GAAA,EAAD,CAASpZ,MAAO4pB,EAAUiB,SAAUxR,UAAU,MAAMC,sBAAuBd,GACvE,0BAAMrJ,UAAU,iBAAiBoK,aAAc,EAAKd,YAAamR,EAAUiB,WAE/E,8BAAO,wBACP,0BAAM1b,UAAU,qBAAhB,kBAAgDya,EAAUkB,kBAAoB,aAElF,kBAAC1Y,GAAA,EAAD,CACIC,WAAS,EAACC,QAAS,EACnBnD,UAAU,qCACV,kBAACiD,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,GACX,kBAAC,GAAD,CAAmBoX,SAAUA,EAAUI,gBAAiBP,GAAaA,EAAS,aAAmB,EAAKW,iBAAiBX,EAAS,cAAoBG,EAAS,GAAGlpB,IAAKqpB,WAAY,SAACpa,GAAD,OAAS,EAAKoa,WAAWpa,OAE9M,kBAACsC,GAAA,EAAD,KACI,yBAAKjD,UAAU,cAAc+H,MAAO,CAAE9U,MAAO,YAGrD,kBAACgQ,GAAA,EAAD,CAAMC,WAAS,EAACC,QAAS,EAAGE,WAAW,UAAUrD,UAAU,qCACtDkb,EAAgBnhB,KAAI,SAACY,GAAD,OACjB,kBAACsI,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,EAAG9R,IAAKiJ,EAAIjJ,KACvB,kBAACkqB,GAAA,EAAD,CACI/b,QAAS,CAACkJ,KAAM,iBAChB8S,QACA,kBAACC,GAAA,EAAD,CAAU3T,UAASsS,EAAU9f,EAAIjJ,MAAO+oB,EAAU9f,EAAIjJ,KAClDqqB,eAAa,EACbC,oBAAkB,EAClBxW,MAAM,UACN3F,QAAS,CAAE6F,aAAc,mBACzBhF,SAAU,SAACiD,GAAD,OAAO,EAAK8G,aAAa9P,EAAIjJ,IAAKiS,EAAEgB,OAAOwD,UACrDhO,KAAMQ,EAAInI,OAEdypB,MAAOthB,EAAInI,cAQ3CoN,QAAS,SAACiD,GAAD,OAAQ,EAAKpC,YAAYoC,IAClC+E,OACI,yBAAK5H,UAAU,sBACX,yBAAKA,UAAU,oBACX,4BAAQA,UAAU,2BAA2BC,QAAS,kBAAM,EAAKQ,aAAY,KAA7E,UAGA,4BAAQT,UAAU,0BAA0BC,QAAS,kBAAM,EAAKub,mBAC3D,UAKjB9T,QAASyT,K,YA5JsBpX,IAAMlU,WCEhCqsB,G,4MACjBzM,aAAe,CACXsK,kBAAmB,KACnBoC,uBAAwB,KACxBvM,UAAU,EACVwM,iBAAiB,EACjBC,iBAAiB,EACjBC,iBAAiB,EACjBC,mBAAoB,CAChB,CACI7qB,IAAK,EACLb,MAAO,KAEX,CACIa,IAAK,EACLb,MAAO,KAEX,CACIa,IAAK,EACLb,MAAO,KAEX,CACIa,IAAK,EACLb,MAAO,MAGfqqB,gBAAiBlqB,EAASe,gBAAgBE,WAAWM,yBACrDD,eAAgBtB,EAASe,gBAAgBE,WAAWQ,kB,EAGxDpC,M,gBAAY,EAAKof,c,EACjB+M,eAAiBzY,IAAMM,Y,EAEvB/D,mBAAqB,SAACC,GAIlB,GAHGA,EAAUC,sBAAwB,EAAKtQ,MAAMsQ,sBAA0D,IAAnC,EAAKtQ,MAAMsQ,qBAC9E,EAAKC,aAAY,EAAO,EAAKvQ,MAAM0P,SAEnCW,EAAUka,YAAc,EAAKvqB,MAAMuqB,WHnCjB,SGmC8B,EAAKvqB,MAAM0X,OAA2B,CACtF,IAAIkI,EAAkB,EAAKzf,MAAMiC,eAAeyH,KAAI,SAAAuJ,GAEhD,OADO,6BAAOA,GAAP,IAAc1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAAEiZ,kBAAmB,EAAK7pB,MAAMuqB,UAAWnoB,eAAgBwd,SAExE,GHzCgB,QGyCZ,EAAK5f,MAAM0X,SAA6B,EAAKvX,MAAMuf,SAAU,CAClE,IAAIE,EAAkB,EAAKzf,MAAMiC,eAAeyH,KAAI,SAAAuJ,GAEhD,OADO,6BAAOA,GAAP,IAAc1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAAExO,eAAgBwd,IAChC,EAAKzf,MAAMiC,eAAe4M,SAAQ,SAAAoE,GAC9B,EAAKxC,UAAS,SAAAC,GAAS,MAAK,CACxBgZ,kBAAkB,6BACXhZ,EAAUgZ,mBADA,mBAEZzW,EAAM5R,IAAM,EAAK+qB,mBAAmBnZ,EAAM5R,OAE/Cke,UAAU,SAGlB,EAAKvf,MAAM6qB,gBAAgBhc,SAAQ,SAAAoE,GAC/B,EAAKxC,UAAS,SAAAC,GAAS,MAAK,CACxBob,uBAAuB,6BAChBpb,EAAUob,wBADK,mBAEjB7Y,EAAM5R,KAAM,a,EAOjC+qB,mBAAqB,SAAC/qB,GAClB,OAAOA,GACH,IAAK,2BACD,OAAO,EACX,IAAK,qBACD,OAAO,EAAKrB,MAAMksB,mBAAmB,GAAG7qB,IAC5C,IAAK,gCACD,OAAO,KACX,QAAS,MAAO,K,EAIxBgP,SAAW,SAAChP,EAAKoI,GACb,EAAKgH,UACD,SAACC,GAAD,MAAgB,CACZgZ,kBAAkB,6BACXhZ,EAAUgZ,mBADA,mBAEZroB,EAAMoI,S,EAMvB4iB,gBAAkB,SAAChrB,EAAKoI,GACpB,EAAKgH,UACD,SAACC,GAAD,MAAgB,CACZob,uBAAuB,6BAChBpb,EAAUob,wBADK,mBAEjBzqB,EAAMoI,S,EAMvBshB,iBAAmB,SAACC,GAChB,OAAO,EAAKnrB,MAAM0qB,SAAS/c,QAAO,SAAA0d,GAAG,OAAIA,EAAI1qB,QAAUwqB,KAAa,GAA7D,K,EAGXN,WAAa,SAACpa,GACV,IAAI0a,EAAc,EAAKnrB,MAAM0qB,SAAS/c,QAAO,SAAA0d,GAAG,OAAIA,EAAI7pB,MAAQiP,KAAK,GAAnD,MAClB,EAAKD,SAAS,eAAgB2a,GAC9B,EAAK3a,SAAS,gCAAiCC,I,EAGnDM,eAAiB,SAAC0b,EAAY3M,EAAWC,GACrC,IAAIjY,EAAO,EAAK3H,MAAM2f,GAClBnb,EAAS8nB,EAEC,EAAKtsB,MAAM4f,GADX,EAAK5f,MAAM4f,GAAYpS,QAAO,SAAAuN,GAAE,MAAe,aAAXA,EAAG1Z,KAAiC,0BAAX0Z,EAAG1Z,OAoB9E,OAlBAmD,EAAMqK,SAAQ,SAACkM,EAAI9E,GACf,QAAO,GACH,KAAMtO,EACN,KAAMA,EAAKqK,eAAe+I,EAAG1Z,KAC7B,KAAKsG,GAAyB,KAAjBA,EAAKoT,EAAG1Z,KACjB0Z,EAAGxZ,SAAU,EACbwZ,EAAGtZ,aAAe,iBAK1B,EAAKgP,SAAL,gBACKmP,EADL,uBAEO,EAAK5f,MAAM4f,GAAY2M,MAAM,EAAGtW,IAFvC,CAGI3I,OAAO4S,OAAO,GAAI,EAAKlgB,MAAM4f,GAAY3J,GAAQ8E,IAHrD,aAIO,EAAK/a,MAAM4f,GAAY2M,MAAMtW,EAAQ,WAGxChF,QAAQrC,KAAEsC,KAAK1M,EAAO,CAAC,WAAW,M,EAG9CgoB,cAAgB,WACZ,GAAK,EAAK5b,eAAe,EAAK5Q,MAAM+rB,gBAAiB,oBAAqB,kBAEnE,CAAC,IACErC,EAAsB,EAAK1pB,MAA3B0pB,kBAEN,OADA,EAAKjZ,SAAS,CAACub,iBAAiB,IACzBxO,GAAUhT,UAAUkf,EAAkBnpB,GAAI,CAAC,UAAampB,IAC9DhiB,MAAK,SAACR,GACCA,GACA,EAAKuJ,SAAS,CACVqa,yBAAyB,EACzBpB,kBAAmB,OACpB,WAEC,EAAK7pB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,qCAInB,EAAK4P,aAAY,EAAO,EAAKvQ,MAAMmf,gBAI9CpN,OAAM,SAAA9K,GACH,EAAK+K,YAAY/K,Q,EAK7B2lB,aAAe,WACX,GAAK,EAAK7b,gBAAe,EAAM,oBAAqB,kBAE7C,CACH,IAAIwZ,EAAS,6BAAO,EAAKpqB,MAAM0pB,mBAAlB,IAAqC,YAAe,EAAK7pB,MAAMoL,aAG5E,OAFAmf,EAAYxb,KAAE8d,KAAKtC,EAAW,CAAC,gBAC/B,EAAK3Z,SAAS,CAACub,iBAAiB,IACzBxO,GAAU/S,OAAO,CAAC,UAAa2f,IACjC1iB,MAAK,SAACR,GACH,IAAIylB,EAAmBrf,OAAO4S,OAAOhZ,EAAK,EAAKlH,MAAM8rB,wBACrD,OAAOtO,GAAUhT,UAAUmiB,EAAiBpsB,GAAIosB,MAEnDjlB,MAAK,SAACR,GACAA,GACC,EAAKuJ,SAAS,CACVub,iBAAiB,EACjBtC,kBAAmB,OACpB,WAEC,EAAK7pB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,qCAInB,EAAK4P,aAAY,EAAO,EAAKvQ,MAAMmf,gBAI9CpN,OAAM,SAAA9K,GACH,EAAK+K,YAAY/K,Q,EAKjCsJ,YAAc,SAACE,EAAKsc,GAChB,IAAInN,EAAkB,EAAKzf,MAAMiC,eAAeyH,KAAI,SAAAuJ,GAChD,IAAItF,EAAG,6BAAOsF,GAAP,IAAc1R,SAAS,EAAOE,aAAc,KAQnD,OAPA,EAAKgP,UAAS,SAAAC,GAAS,MAAK,CAExBgZ,kBAAkB,6BACXhZ,EAAUgZ,mBADA,mBAEZzW,EAAM5R,IAAoB,6BAAd4R,EAAM5R,KAAqC,SAGzDsM,KAEX,EAAK8C,SAAS,CAAExO,eAAgBwd,EAAiBsM,iBAAiB,EAAOxM,UAAU,IAAS,WACxFqN,EAAStc,O,EAKjBuc,oBAAsB,SAACvZ,GAAO,IAAD,EACiB,EAAKtT,MAAzC+rB,EADmB,EACnBA,gBAAiB9pB,EADE,EACFA,eAIvB,GAHA,EAAKwO,SAAS,CACVsb,iBAAkBA,KAElBA,EAAiB,CACjB,IAAIvnB,EAAQvC,EAAeyH,KAAI,SAAAuJ,GAQ3B,MAPiB,aAAdA,EAAM5R,KAAoC,0BAAd4R,EAAM5R,MACjC4R,EAAK,6BACEA,GADF,IAED1R,SAAS,EACTE,aAAc,MAGfwR,KAEX,EAAKxC,SAAS,CAACxO,eAAgBuC,M,EAIvCyN,uBAAyB,SAAC5Q,GACtB,EAAKoP,UAAS,SAACC,GAAD,MAAgB,CAC1BzO,eAAgByO,EAAUzO,eAAeyH,KAAI,SAACiE,GAC1C,OAAOA,EAAItM,MAAQA,GAAOsM,EAAIpM,QAC5B+L,OAAO4S,OAAOvS,EAAK,CAACpM,SAAS,EAAOE,aAAc,KAClDkM,U,EAKdkE,YAAc,SAAC/K,GACX,GAAIA,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,QAAkC,MAAxBhL,EAAIC,SAAS+K,OAAgB,CAC3E,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,OAC3BgO,EAAa,EAAK/f,MAAMiC,eAAeyH,KAAI,SAAAuJ,GAI3C,OAHoD,IAA1CrE,KAAEoR,QAAQpR,KAAErB,KAAKwE,GAASkB,EAAM5R,KAAhC,6BACI4R,GADJ,IACW1R,SAAS,EAAME,aAAemN,KAAEqR,OAAOlO,EAAQkB,EAAM5R,OADhE,6BAEI4R,GAFJ,IAEW1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAACxO,eAAgB8d,SAI/B,EAAKlgB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAO,oCAKvB,EAAKiQ,SAAS,CACVub,iBAAiB,K,EAIzBpsB,OAAS,WAAO,IAAD,EAMK,EAAKC,MAJjBsS,EAFO,EAEPA,KACAoF,EAHO,EAGPA,OAEA3N,EALO,EAKPA,MACA2F,EANO,EAMPA,QANO,EAgBP,EAAKvP,MARL0pB,EARO,EAQPA,kBACAqC,EATO,EASPA,gBACAG,EAVO,EAUPA,mBAEAjqB,EAZO,EAYPA,eACA+pB,EAbO,EAaPA,gBACAC,EAdO,EAcPA,gBAIJ,OACI,kBAAC,GAAD,CACI9Z,KAAMA,EACN3R,MH/Sc,SG+SP+W,EAA4B,oBAAsB,mBACzDD,QACI,yBAAK3H,UAAU,wBACX,yBAAKA,UAAU,2BACX,wBAAIA,UAAU,0BAAd,aAEJ,kBAAC,IAAMyC,SAAP,KACI,kBAACQ,GAAA,EAAD,CAAMC,WAAS,EAACC,QAAS,EAAGC,QAAQ,SAASC,WAAW,cACnD/Q,EAAeuL,QAAO,SAAAyF,GAAK,OAAIA,EAAMzR,QAAyB,aAAdyR,EAAM5R,KAAoC,0BAAd4R,EAAM5R,OAAkCqI,KAAI,SAACuJ,EAAOgD,GAAR,MACvG,6BAAdhD,EAAM5R,IACF,kBAAC,IAAM+Q,SAAP,CAAgB/Q,IAAK4R,EAAM5R,KACR,uBAAd4R,EAAM5R,IACH,kBAACuR,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,YACjB,kBAAC,GAAD,CACIzS,MAAOyS,EAAMzS,MACbD,GAAI,iBACJc,IAAK4R,EAAM5R,IACX+R,cAAeH,EAAM3R,YAAc,WACnC+R,UAAWJ,EAAM1R,SAAW0R,EAAMxR,aAClCgI,MAAOigB,GAAqBA,EAAkBzW,EAAM5R,KAAOqoB,EAAkBzW,EAAM5R,KAAO,GAC1F0W,SAAwB,QAAb9E,EAAM5R,KACF4P,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,KzBnV7D,oByBoVuByG,SAAU,SAACC,GAAD,OAAS,EAAKD,SAAS4C,EAAM5R,IAAKiP,IAC5CiD,QAAS,SAACD,GAAD,OAAO,EAAKrB,uBAAuBgB,EAAM5R,MAClDwb,UHtU3B,QGsUsCtF,GAA0C,aAAdtE,EAAM5R,IAAqB,YAAc,MAIxF,kBAACuR,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,WAAY5R,IAAK4R,EAAM5R,KACxC,kBAAC,GAAD,CACId,GAAG,qBACHC,MAAOyS,EAAMzS,MACbmP,UAAU,mBACV0K,UAAQ,EACRtC,SAAU9G,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,KzBhWxD,oByBiWuBwQ,aAAc,SAAC9J,GAAD,OAAS,EAAKD,SAAS4C,EAAM5R,IAAKiP,IAChD7G,MAAOigB,GAAqBA,EAAiB,mBAAyBA,EAAkBzW,EAAM5R,KAAO6qB,EAAmB,GAAG7qB,IAC3H6Y,QAASgS,MAKzB,kBAAC,IAAM9Z,SAAP,CAAgB/Q,IAAK4R,EAAM5R,KACtB4P,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,KzB1WxC,eyB2WgB,kBAACgJ,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,IACX,kBAAC,GAAD,CACI3S,MAAOyS,EAAMzS,MACbsX,SAAS4R,IAAqBA,EAAkB1X,eAAeiB,EAAM5R,MAAOqoB,EAAkBzW,EAAM5R,KACpGwW,SAAU,SAACvH,GAAD,OAAS,EAAKD,SAAS4C,EAAM5R,IAAKiP,OAGpD,yBAAKX,UAAU,cAActO,IAAK4R,EAAM5R,WHlWtD,SG2YDkW,GAA6BtG,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,KzB3ZrD,gByB4ZI,yBAAK+F,UAAU,YH5YjB,SG8YD4H,GAA6BtG,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,KzB9ZrD,gByB+ZI,4BACI+F,UAAU,wCACVC,QAAS,SAAC0D,GAAD,OAAO,EAAKuZ,oBAAoBvZ,KAF7C,mBAOFyY,GHrZD,QGqZoBxU,IACjB,kBAAC3E,GAAA,EAAD,CAAM4C,IAAK,EAAK2W,eAAgBtZ,WAAS,EAACC,QAAS,EAAGC,QAAQ,SAASC,WAAW,aAAarD,UAAU,4BACpG1N,EAAeuL,QAAO,SAAAyF,GAAK,MAAkB,aAAdA,EAAM5R,KAAoC,0BAAd4R,EAAM5R,OAAiCqI,KAAI,SAAAuJ,GAAK,OACxG,kBAACL,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,WAAY5R,IAAK4R,EAAM5R,KACxC,kBAAC,GAAD,CACIb,MAAOyS,EAAMzS,MACbD,GAAE,yBAAoB0S,EAAM5R,KAC5B+R,cAAc,WACd4E,KAAK,WACL3E,UAAWJ,EAAM1R,SAAW0R,EAAMxR,aAClCgI,MAAOigB,GAAqBA,EAAkB1X,eAAeiB,EAAM5R,KAAOqoB,EAAkBzW,EAAM5R,KAAO,GACzGgP,SAAU,SAACC,GAAD,OAAS,EAAKD,SAAS4C,EAAM5R,IAAKiP,IAC5Cwc,aAAa,eACbvZ,QAAS,SAACD,GAAD,OAAO,EAAK7C,UAAS,SAACC,GAAD,MAAgB,CAC1CzO,eAAgByO,EAAUzO,eACrByH,KAAI,SAACiE,GACF,MAAmB,aAAZA,EAAItM,KAAkC,0BAAZsM,EAAItM,IACnCiM,OAAO4S,OAAOvS,EAAK,CAACpM,SAAS,EAAOE,aAAc,KAClDkM,KAEVse,iBAAiB,eAO5CA,GAAmB,wBAAItc,UAAU,sBAAd,0BAG5BJ,QAAS,SAACiD,GAAD,OAAQ,EAAKpC,YAAYoC,EAAIjD,IACtCgI,OACI,yBAAK5H,UAAU,wBACX,yBAAKA,UAAU,oBACX,4BAAQA,UAAU,2BAA2BC,QAAS,kBAAM,EAAKQ,aAAY,EAAOb,KAApF,UHxbE,SG2bDgI,EACG,4BAAQ5H,UAAU,0BAA0BC,QAAS,kBAAM,EAAK4c,kBAC/D,QAGD,4BAAQ7c,UAAU,0BAA0BC,QAAS,kBAAM,EAAK6c,iBAC/D,mBAMjBpV,QAAS2U,K,YAzcuBtY,IAAMlU,W,mDCSjCutB,G,4MAEjB/sB,MAAQ,CACJ2C,QAAShC,EAASe,gBAAgBW,MAAMK,UAAUC,QAClDqqB,Y1BxB0B,G0ByB1BC,YAAa,EACbC,WATgB,MAUhBC,iBAAiB,EACjBC,aAAc,M,EAGlBC,oBAAsB,WAClB,EAAK5c,SAAS,CAAC0c,iBAAiB,EAAMD,WAftB,S,EAkBpBliB,iBAAmB,SAACJ,GAChB4S,GAAUxS,iBAAiB,EAAKnL,MAAMoL,WAAYL,GAAQlD,MAAK,SAAAR,GAE3D,EAAKrH,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAOqE,QAIpB,SAACiC,GAEA,EAAKjH,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAOqE,S,EAO3BjF,OAAS,WAAO,IAAD,EACiG,EAAKC,MAAzGwC,EADG,EACHA,MAAO6nB,EADJ,EACIA,oBAAqBC,EADzB,EACyBA,WAAYvgB,EADrC,EACqCA,MAAOqB,EAD5C,EAC4CA,WAAYkT,EADxD,EACwDA,gBAAiBhO,EADzE,EACyEA,oBADzE,EAE8E,EAAKnQ,MAAtF2C,EAFG,EAEHA,QAASqqB,EAFN,EAEMA,YAAaC,EAFnB,EAEmBA,YAAaC,EAFhC,EAEgCA,WAAYC,EAF5C,EAE4CA,gBAAiBC,EAF7D,EAE6DA,aAExE,OACI,kBAAC,IAAMhb,SAAP,KACI,yBAAKzC,UAAU,oBAAoBpP,GAAG,SACjC8B,GAASA,EAAMsZ,OAAS,EACrB,kBAAC,IAAMvJ,SAAP,KACI,yBAAKzC,UAAU,kBACX,wBAAIA,UAAU,SAAShP,EAASe,gBAAgBW,MAAMR,YACtD,yBAAK8N,UAAU,iBACbsB,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,K1B1E7B,Y0B0EmDuB,YAAa,SACzD8F,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,K1B1EzB,iB0B0EoDuB,YAAaF,OAC9D,4BACI0E,UAAU,yBACVC,QAAS,kBAAM,EAAKyd,wBACf1sB,EAASe,gBAAgBW,MAAME,aAIhD,yBAAKoN,UAAU,iBACX,kBAAC,GAAD,CACIhN,QAASA,EACT2M,SACI,kBAAC,IAAM8C,SAAP,KACK/P,EAAMkqB,OAAOU,EAAc,GAAKD,GAAcC,EAAc,GAAKD,EAAcA,GAAatjB,KAAI,SAAC4jB,GAAD,OAC7F,kBAAC/U,GAAA,EAAD,CACIgV,OAAK,EACLlsB,IAAKisB,EAAI/sB,GACTiP,QAAS,CACLkJ,KAAoC,QAA9B4U,EAAG,mBAAmC,eAAiB,gBAGhE3qB,EAAQ+G,KACL,SAACjD,GAAD,OACIA,EAAOjF,QACH,kBAACgX,GAAA,EAAD,CACInX,IAAKoF,EAAOpF,IACZd,GAAIkG,EAAOpF,IACXmO,QAAS,CACLkJ,KAAqB,cAAfjS,EAAOpF,IAAsB,qCAAuC,0BAE9EsO,UAAU,YACV8I,MAAsB,uBAAfhS,EAAOpF,KAA+C,oBAAfoF,EAAOpF,IAA4B,QAAU,OAC3FqW,MAAO,CAAC9U,MAAO6D,EAAO7D,MAAQ6D,EAAO7D,MAAQ,SAE7B,oBAAf6D,EAAOpF,KAA4C,uBAAfoF,EAAOpF,KAA+C,cAAfoF,EAAOpF,KAAuBisB,EAAI7mB,EAAOpF,KACrG,oBAAfoF,EAAOpF,KACyB,QAA9BisB,EAAG,qBACFrc,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,K1BhHnE,Y0BgHyFuB,YAAa,SAAW8F,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,K1B/GnI,iB0B+G8JuB,YAAaF,OACrI,4BAAQ2E,QAAS,kBAAM,EAAK5E,iBAAiBsiB,EAAI/sB,KAAIoP,UAAU,2BAA/D,qBACa,YAAflJ,EAAOpF,KACJ,yBAAKsO,UAAU,eACTsB,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,K1BpHzE,Y0BoH+FuB,YAAa,SACzD8F,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,K1BpHrE,iB0BoHgGuB,YAAaF,OAC9D,kBAAC,IAAMmH,SAAP,KACI,4BACIzC,UAAU,uCACVC,QAAS,kBAAM,EAAKa,SAAS,CAAC0c,iBAAiB,EAAMD,WAtGpH,OAsG2IE,aAAcE,MAC1F,yBAAKzd,IAAK8O,KAAU/b,MAAM,KAAKmN,IAAI,eAEvC,4BACIJ,UAAU,wCACVC,QAAS,kBAAM,EAAKa,SAAS,CAAC0c,iBAAiB,EAAMD,WAzGlH,SAyG2IE,aAAcE,MAC5F,yBAAKzd,IAAK2d,KAAY5qB,MAAM,KAAKmN,IAAI,mBAMzC,uBAAftJ,EAAOpF,KAA8D,QAA9BisB,EAAG,oBAAoC,yBAAK3d,UAAU,oBAAf,WAC/D,cAAflJ,EAAOpF,KAAuBmN,GAAW8e,EAAI7mB,EAAOpF,eAQrF6W,WACI,kBAACuV,GAAA,EAAD,CACIC,MAAOpf,KAAKqf,KAAKtrB,EAAMsZ,OAASqR,GAChCxd,QAAS,CACLkJ,KAAM,aACNkV,GAAI,mBAERC,iBAAe,EACfC,gBAAc,EACdC,KAAK,QACL9K,KAAMgK,EACN5c,SAAU,SAACiD,EAAG2P,GAAJ,OAAa,EAAKxS,SAAS,CAAEwc,YAAahK,KACpD+K,MAAM,gBAO1B,yBAAKre,UAAU,cACX,yBAAKA,UAAU,iBACX,yBAAKE,IAAKoe,KAAgBle,IAAI,WAAWnN,MAAM,SAEnD,yBAAK+M,UAAU,qBACX,6BACI,4BAAKhP,EAASe,gBAAgBW,MAAMR,YACpC,4BAAKlB,EAASe,gBAAgBW,MAAMC,cAClC2O,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,K1BzKjC,Y0ByKuDuB,YAAa,SACzD8F,QAAQrC,KAAEsC,KAAKtH,EAAO,CAAC,K1BzK7B,iB0ByKwDuB,YAAaF,OAC9D,4BAAQ0E,UAAU,yBAAyBC,QAAS,kBAAM,EAAKyd,wBAC1D1sB,EAASe,gBAAgBW,MAAMG,aAQ5D,kBAAC,GAAD,CACI2P,KAAMgb,EACN5V,OAAQ2V,EACRvjB,KAAMyjB,EACNniB,WAAY,EAAKpL,MAAMoL,WACvBsE,QAAS,SAAC2e,EAAUC,GAChB,EAAK1d,SAAS,CACd0c,gBAAiBe,EACjBd,aAAc,OAAO,WACbe,GAAYjE,QAIxBlL,SAAU,SAACxM,GACP,EAAK/B,SAAS,CACV0c,gBAAiB3a,EACjB4a,aAAc,OAElBlD,KAGJC,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,M,YApLNuD,IAAMlU,W,oBCRpB4uB,G,4MACjBpuB,MAAQ,CACJotB,aAAc,KACdiB,kBAAkB,EAClB9O,UAAU,EACV+O,UAAW,CACP,CACIjtB,IAAK,OACLb,MAAO,QAEX,CACIa,IAAK,iBACLb,MAAO,mBAGf+tB,gBAAgB,G,EAGpBte,mBAAqB,SAACC,EAAWQ,GAC1BR,EAAUC,sBAAwB,EAAKtQ,MAAMsQ,sBAA0D,IAAnC,EAAKtQ,MAAMsQ,qBAC9E,EAAKC,aAAY,GAEjBF,EAAUvG,OAAS,EAAK9J,MAAM8J,MDlBjB,SCkB0B,EAAK9J,MAAM0X,QDhBnC,WCgB2D,EAAK1X,MAAM0X,ODjBzE,QCmBL,EAAK1X,MAAM0X,QAAwB,EAAKvX,MAAMuf,UACrD,EAAK9O,SAAS,CACV2c,aAAc,CACV/kB,MAAO,GACPyC,UAAW,EAAK9K,MAAMsuB,UAAU,GAAGjtB,KAEvCke,UAAU,IAPd,EAAK9O,SAAS,CAAE2c,aAAc,EAAKvtB,MAAM8J,KAAM4V,UAAU,K,EAYjElP,SAAW,SAAChP,EAAKoI,GACb,EAAKgH,UAAS,SAACC,GAAD,MAAgB,CAC1B0c,aAAa,6BACN1c,EAAU0c,cADL,mBAEP/rB,EAAMoI,S,EAKnB+kB,WAAa,SAACvjB,GACL,EAAKwjB,oBAGN,EAAKhe,SAAS,CAAEW,cAAc,IAE9BoM,GACKhb,QAAQyI,EAAY,EAAKjL,MAAMotB,cAC/B1lB,MAAK,SAACR,GACCA,GACA,EAAKuJ,SAAS,CACVW,cAAc,EACdgc,aAAc,OACf,kBAEC,EAAKvtB,MAAMse,gBAEH,kBAAC,GAAD,CACA9L,KAAME,KACN/R,MAAOqE,QAMlB,EAAK7E,MAAMquB,iBASZ,EAAK5d,SAAS,CACV8d,gBAAgB,EAChBnB,aAAc,CACV/kB,MAAO,GACPyC,UAAW,EAAK9K,MAAMsuB,UAAU,GAAGjtB,OAZ3C,EAAKoP,SAAS,CACV4d,kBAAkB,EAClBE,gBAAgB,IACjB,WACC,EAAK1uB,MAAM0P,SAAQ,GACnB,EAAK1P,MAAMmf,UAAS,SAY/BpN,OAAM,SAAC9K,GAAD,OAAS,EAAK+K,YAAY/K,Q,EAI7C6D,WAAa,SAACM,GACV,EAAKwF,SAAS,CAAEW,cAAc,IADL,IAEjBgc,EAAiB,EAAKptB,MAAtBotB,aACR,OAAO5P,GAAU7S,WAAWM,EAAYmiB,EAAa7sB,GAAI6sB,EAAatiB,WACjEpD,MAAK,SAAAR,GACEA,GACA,EAAKuJ,SAAS,CACVW,cAAc,EACdgc,aAAc,OACf,WAEC,EAAKvtB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,qCAInB,EAAKX,MAAMmf,UAAS,SAI/BpN,OAAM,SAAA9K,GAAG,OAAI,EAAK+K,YAAY/K,O,EAGvCiE,WAAa,SAACE,GACV,EAAKwF,SAAS,CAAEW,cAAc,IADL,IAEjBgc,EAAiB,EAAKptB,MAAtBotB,aACR,OAAO5P,GAAU7S,WAAWM,EAAYmiB,EAAa7sB,GAAI,IACpDmH,MAAK,SAAAR,GACEA,GACA,EAAKuJ,SAAS,CACVW,cAAc,EACdgc,aAAc,OACf,WAEC,EAAKvtB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,4BAInB,EAAKX,MAAMmf,UAAS,SAI/BpN,OAAM,SAAA9K,GAAG,OAAI,EAAK+K,YAAY/K,O,EAGvC+K,YAAc,SAAC/K,GACX,GAAIA,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,QAAkC,MAAxBhL,EAAIC,SAAS+K,OAAgB,CAC3E,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,QACkE,IAA7FnD,KAAEoR,QAAQpR,KAAErB,KAAKwE,GAASpR,EAASe,gBAAgBW,MAAMK,UAAUG,aAAa,GAAGxB,MACnF,EAAKoP,SAAS,CAAEie,cAAe9f,KAAEqR,OAAOlO,EAAQpR,EAASe,gBAAgBW,MAAMK,UAAUG,aAAa,GAAGxB,YAK7G,EAAKxB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAOqE,KAKvB,EAAK4L,SAAS,CACVW,cAAc,K,EAItBqd,gBAAkB,WACd,IAAMrB,EAAe,EAAKptB,MAAMotB,aAEhC,OAAKA,GAAiBA,EAAa/kB,OAAgC,KAAvB+kB,EAAa/kB,QAIhD2G,GAAcoe,EAAa/kB,SAC5B,EAAKoI,SAAS,CAAEie,cAAe9pB,KACxB,IALX,EAAK6L,SAAS,CAAEie,cAAe9pB,KACxB,I,EAUfwL,YAAc,SAACyD,EAAQ0a,GACnB,EAAK9d,SAAS,CACVie,cAAe,KACfC,iBAAkB,KAClBvB,aAAc,KACd7N,UAAU,IACX,kBAAM,EAAK1f,MAAM0P,QAAQsE,EAAQ0a,O,EAGxC3uB,OAAS,WAAO,IAAD,EAC0B,EAAKC,MAAlCsS,EADG,EACHA,KAAMoF,EADH,EACGA,OAAQtM,EADX,EACWA,WADX,EAEwF,EAAKjL,MAAhGsuB,EAFG,EAEHA,UAAWD,EAFR,EAEQA,iBAAkBjB,EAF1B,EAE0BA,aAAcsB,EAFxC,EAEwCA,cAAetd,EAFvD,EAEuDA,aAAcmd,EAFrE,EAEqEA,eAC1EK,EAA2BjuB,EAASe,gBAAgBW,MAAMK,UAAUG,aAC1E,OACI,kBAAC,GAAD,CACIsP,KAAMA,EACN3R,MDhMQ,QCgMD+W,EAAsB,aDjMpB,SCiMmCA,EAAuB,YAAc,cACjFD,QACI,6BACI,0BAAM3H,UAAU,oBDnMhB,QCoMM4H,GDrML,SCqM4BA,IACrB,kBAAC,IAAMnF,SAAP,KACI,yBAAKzC,UAAU,2BACX,wBAAIA,UAAU,0BAAd,aAEJ,kBAACiD,GAAA,EAAD,CAAMC,WAAS,EAACC,QAAS,EAAGC,QAAQ,aAAaC,WAAW,UAAUrD,UAAU,uBAC3Eif,EAAyBllB,KAAI,SAACuJ,GAAD,MACZ,cAAdA,EAAM5R,IACF,kBAACuR,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,WAAY5R,IAAK4R,EAAM5R,KACxC,kBAAC,GAAD,CACIb,MAAOyS,EAAMzS,MACbD,GAAI,YACJ6S,cAAe,WACfC,UAAWqb,EACXjlB,MAAO2jB,GAAgBA,EAAana,EAAM5R,KAAO+rB,EAAana,EAAM5R,KAAO,GAC3E0W,SDpN/B,SCoNyCR,EACVlH,SAAU,SAACiD,GAAD,OAAO,EAAKjD,SAAS4C,EAAM5R,IAAKiS,IAC1CC,QAAS,kBAAM,EAAK9C,SAAS,CAAEie,cAAe,QAC9C7R,UDtNhC,QCsN2CtF,GAAqC,UAAdtE,EAAM5R,IAAkB,YAAc,MAIhF,kBAACuR,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,WAAY5R,IAAK4R,EAAM5R,KACxC,kBAAC,GAAD,CACIsO,UAAU,6BACVnP,MAAOyS,EAAMzS,MACb6Z,UAAQ,EACR5Q,MAAO2jB,GAAgBA,EAAana,EAAM5R,KAAO+rB,EAAana,EAAM5R,KAAOitB,EAAU,GAAGjtB,IACxF6Y,QAASoU,EACTlU,aAAc,SAAC9J,GAAD,OAAS,EAAKD,SAAS4C,EAAM5R,IAAKiP,WDjOhF,QCuOaiH,GACG,kBAAC,GAAD,CACI/W,MAAO,mBACPsX,QAASuW,EACTxW,SAAU,SAACvH,GAAD,OACN,EAAKG,SAAS,CACV4d,iBAAkB/d,QD5O3C,WCmPEiH,GAA0B6V,GACvB,yBAAKzd,UAAU,oBACX,yBAAKE,IAAKgf,KAAalf,UAAU,cAAcI,IAAI,GAAGnN,MAAM,OAC5D,kBAACic,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,kBAAkBhP,EAASe,gBAAgBW,MAAMI,eACpF,kBAACoc,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,gBAAgByd,EAAatjB,MAAQsjB,EAAa/kB,UAMzGkP,OACI,yBAAK5H,UAAU,mBACX,yBAAKA,UAAU,oBACX,4BAAQA,UAAU,2BAA2BC,QAAS,kBAAM,EAAKQ,aAAY,EAAOme,KAApF,UDjQJ,QCoQKhX,GACG,4BAAQ5H,UAAU,0BAA0BC,QAAS,kBAAM,EAAK4e,WAAWvjB,KACtE,YDrQV,WCwQEsM,GACG,4BAAQ5H,UAAU,wCAAwCC,QAAS,kBAAM,EAAK7E,WAAWE,KACpF,UD5QZ,SC+QIsM,GACG,4BAAQ5H,UAAU,0BAA0BC,QAAS,kBAAM,EAAKjF,WAAWM,KACtE,UAMrBsE,QAAS,SAACsE,GAAD,OAAY,EAAKzD,YAAYyD,EAAQ0a,IAC9ClX,QAASjG,K,YA5ResC,IAAMlU,W,8DCDjCsvB,GAAgB,gBAGhBC,GAAqB,qBAKbC,G,4MACjBhvB,MAAQ,CACJ2C,QAAShC,EAASe,gBAAgBwB,WAAWQ,gBAAgBf,QAC7DoJ,YAAa,GACbkjB,oBAAoB,EACpBjW,aAAa,G,EAGjBkW,YAAc,K,EAEdjb,qBAAuB,WACnBsO,aAAa,EAAK2M,c,EAGtBC,mBAAqB,SAAC1lB,GACJ,KAAVA,GACA,EAAKgH,SAAS,CAAEwe,oBAAoB,IAExC1M,aAAa,EAAK2M,aAClB,EAAKze,SAAS,CAAC1E,YAAatC,EAAOwlB,oBAAoB,IAAQ,kBAC3D,EAAKC,YAAcnnB,YAAW,WAC1B,OAAO,EAAK/H,MAAM+L,YACZ,EAAKlM,MAAMuvB,qBAAqB,EAAKpvB,MAAM+L,aAAarE,MAAK,kBAAM,EAAK+I,SAAS,CAAEwe,oBAAoB,QACtG,EAAKpvB,MAAMwvB,oBAAqB,EAAK5e,SAAS,CAAEwe,oBAAoB,OAC5E,S,EAIXhW,WAAa,SAAC3F,GACNA,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,aAChC,EAAK1I,SAAS,CAAEuI,aAAa,K,EAGrCpZ,OAAS,WAAO,IAAD,EAUP,EAAKC,MARLyvB,EAFO,EAEPA,WACAC,EAHO,EAGPA,cACAC,EAJO,EAIPA,0BACAC,EALO,EAKPA,0BACAC,EANO,EAMPA,yBACAC,EAPO,EAOPA,qBACAC,EARO,EAQPA,iBACAzF,EATO,EASPA,WATO,EAWuD,EAAKnqB,MAA/D2C,EAXG,EAWHA,QAASoJ,EAXN,EAWMA,YAAakjB,EAXnB,EAWmBA,mBAAoBjW,EAXvC,EAWuCA,YAElD,OACI,kBAAC,IAAM5G,SAAP,KACI,yBAAKzC,UAAU,oDAAoDpP,GAAG,cAClE,yBAAKoP,UAAU,eACX,kBAACiK,GAAA,EAAD,CAASpZ,MAAO+uB,EAAc/uB,MAAOqZ,UAAU,MAAMC,sBAAuBd,GACxE,0BAAMe,aAAc,EAAKd,YAAasW,EAAc/uB,QAExD,8BACI,yBAAKmP,UAAU,cACX,4BAAQA,UAAU,uCAAuCC,QAAS,kBAAM4f,GAA0B,KAC9F,yBAAK3f,IAAK8O,KAAU/b,MAAM,KAAKmN,IAAI,sBAKlD6f,GAAwD,IAApChhB,KAAErB,KAAKqiB,GAAkBjU,OAC1C,kBAAC,IAAMvJ,SAAP,KACI,wBAAIzC,UAAU,0BAA0BhP,EAASe,gBAAgBwB,WAAWrB,YAC5E,yBAAK8N,UAAU,mCACX,yBAAKA,UAAU,oBACX,yBAAKE,IAAKggB,KAAY9f,IAAI,GAAGnN,MAAM,OACnC,kBAAC,GAAD,CAAWga,YAAY,YAAYjN,UAAU,aAAalG,MAAOsC,EAAasE,SAAU,SAACC,GAAD,OAAS,EAAK6e,mBAAmB7e,OAE7H,yBAAKX,UAAU,gBACf,yBACI6F,IAAK,EAAKzB,gBACV2D,MAAO,CAAC4P,SAAU,aAClB,4BACI3X,UAAU,uCACVC,QAAS,kBAAM6f,GAA0B,EApF5C,2BAqFQ9uB,EAASe,gBAAgBwB,WAAWE,mBAInDksB,GAA6B,OAAfA,GAAwBL,EA4FpC,yBAAKtf,UAAU,6BACX,kBAAC,IAAMyC,SAAP,KACK6c,EACG,kBAAC,GAAD,CAAYzuB,MAAM,eAElB,kBAAC,IAAM4R,SAAP,KACmC,IAA9BxD,KAAErB,KAAK+hB,GAAY3T,QAAgB/M,KAAErB,KAAK+hB,GAAY5lB,KAAI,SAACrI,GAAD,OAEvD,kBAAC,GAAD,CACIyuB,iBAAiB,EACjBzuB,IAAKA,EACLb,MAAOa,EACPiY,eACI,yBAAK3J,UAAU,qCACX,wBAAIA,UAAU,eAAd,mBACA,yBAAKA,UAAU,gCAAf,UACQ4f,EAAcQ,UAAUviB,QAAO,SAAC0F,GAAD,OAAUA,EAAK8c,sBAAwB3uB,KAAK,GAA3E,UADR,UAGA,4BACIsO,UAAU,qCACVC,QAAS,SAAC0D,GACNA,EAAEoL,kBACF+Q,GAA0B,EAxM/D,uBAyMqCC,EAAyBH,EAAcQ,UAAUviB,QAAO,SAAC0F,GAAD,OAAUA,EAAK8c,sBAAwB3uB,KAAK,MAExG,yBAAKwO,IAAK8O,KAAU5O,IAAI,MAE3Bwf,IAAwG,IAAvFA,EAAa,gBAAoB/hB,QAAO,SAAC0F,GAAD,OAAUA,EAAKpJ,OAASzI,KAAK,GAArE,QACd,4BACIsO,UAAU,qCACVC,QAAS,SAAC0D,GACNA,EAAEoL,kBAC4B,IAA3B4Q,EAAWjuB,GAAKsa,QACf8T,GAA0B,EAjNrE,yBAkN2CC,EAAyBH,EAAcQ,UAAUviB,QAAO,SAAC0F,GAAD,OAAUA,EAAK8c,sBAAwB3uB,KAAK,KAGpG8oB,EAAW9pB,EAA0B,6DAI7C,yBAAKwP,IAAK2d,KAAYzd,IAAI,MAG9B,4BACIJ,UAAU,qCACVoI,UAAQ,GACR,yBAAKlI,IAAK2d,KAAYzd,IAAI,OAK1CT,SAC+B,IAA3BggB,EAAWjuB,GAAKsa,OACb,kBAAC,GAAD,CACChZ,QAASA,EACT2M,SACI,kBAAC,IAAM8C,SAAP,KACKkd,EAAWjuB,GAAKqI,KAAI,SAAC4jB,GAAD,OACjB,kBAAC/U,GAAA,EAAD,CACIgV,OAAK,EACLlsB,IAAKisB,EAAI/sB,GACTiP,QAAS,CACLkJ,KAAM,gBAGT/V,EAAQ+G,KACL,SAACjD,GAAD,OACIA,EAAOjF,QACH,kBAACgX,GAAA,EAAD,CAAW7I,UAAU,YAAYtO,IAAKoF,EAAOpF,IAAKd,GAAIkG,EAAOpF,KACzC,WAAfoF,EAAOpF,KAAoBisB,EAAI7mB,EAAOpF,KACvB,WAAfoF,EAAOpF,KACJ,4BACIsO,UAAU,sDACVC,QAAS,WACL6f,GAA0B,EAzPtG,oBA0P4EE,EAAqBrC,KAEzB,yBAAKzd,IAAK2d,KAAYzd,IAAI,iBAWlE,kBAAC8O,GAAA,EAAD,CAAYlP,UAAU,kBAAkBkJ,QAAQ,MAAhD,+EAKe,IAA9BjK,KAAErB,KAAK+hB,GAAY3T,QAChB,yBAAKhM,UAAU,0BACX,kBAACkP,GAAA,EAAD,CAAYlP,UAAU,4BAA4BkJ,QAAQ,MAA1D,0BA5LkC,yBAAKlJ,UAAU,sBACxEf,KAAErB,KAAKqiB,GAAkBlmB,KAAI,SAACrI,GAAD,OAC1BkuB,EAAcQ,UAAUviB,QAAO,SAAC0F,GAAD,OAAUA,EAAK8c,sBAAwB3uB,KAAK,IAEvE,kBAAC,GAAD,CACIA,IAAKA,EACLb,MAAOa,EACP+X,WAAW,kBACXE,eACI,yBAAK3J,UAAU,qCACX,wBAAIA,UAAU,eAAd,mBACA,yBAAKA,UAAU,gCAAf,UACQ4f,EAAcQ,UAAUviB,QAAO,SAAC0F,GAAD,OAAUA,EAAK8c,sBAAwB3uB,KAAK,GAA3E,UADR,UAGA,4BACIsO,UAAU,qCACVC,QAAS,SAAC0D,GACNA,EAAEoL,kBACF+Q,GAA0B,EAxGnD,uBAyGyBC,EAAyBH,EAAcQ,UAAUviB,QAAO,SAAC0F,GAAD,OAAUA,EAAK8c,sBAAwB3uB,KAAK,MAExG,yBAAKwO,IAAK8O,KAAU5O,IAAI,MAE3Bwf,IAAwG,IAAvFA,EAAa,gBAAoB/hB,QAAO,SAAC0F,GAAD,OAAUA,EAAKpJ,OAASzI,KAAK,GAArE,QACd,4BACIsO,UAAU,qCACVC,QAAS,SAAC0D,GACNA,EAAEoL,kBACkC,IAAjCkR,EAAiBvuB,GAAKsa,QACrB8T,GAA0B,EAjHzD,yBAkH+BC,EAAyBH,EAAcQ,UAAUviB,QAAO,SAAC0F,GAAD,OAAUA,EAAK8c,sBAAwB3uB,KAAK,KAGpGouB,GAA0B,EApHjD,mCAwHe,yBAAK5f,IAAK2d,KAAYzd,IAAI,MAG9B,4BACIJ,UAAU,qCACVoI,UAAQ,GACR,yBAAKlI,IAAK2d,KAAYzd,IAAI,OAK1CT,SACqC,IAAjCsgB,EAAiBvuB,GAAKsa,OACnB,kBAAC,GAAD,CACChZ,QAASA,EACT2M,SACI,kBAAC,IAAM8C,SAAP,KACKwd,EAAiBvuB,GAAKqI,KAAI,SAAC4jB,GAAD,OACvB,kBAAC/U,GAAA,EAAD,CACIgV,OAAK,EACLlsB,IAAKisB,EAAI/sB,GACTiP,QAAS,CACLkJ,KAAM,gBAGT/V,EAAQ+G,KACL,SAACjD,GAAD,OACIA,EAAOjF,QACH,kBAACgX,GAAA,EAAD,CAAW7I,UAAU,YAAYtO,IAAKoF,EAAOpF,IAAKd,GAAIkG,EAAOpF,IAC7DqW,MAAO,CAAC9U,MAAO6D,EAAO7D,MAAQ6D,EAAO7D,MAAQ,SACzB,WAAf6D,EAAOpF,KAAoBisB,EAAI7mB,EAAOpF,KACvB,WAAfoF,EAAOpF,KACJ,4BACIsO,UAAU,sDACVC,QAAS,WACL6f,GAA0B,EA1J1F,oBA2JgEE,EAAqBrC,KAEzB,yBAAKzd,IAAK2d,KAAYzd,IAAI,iBAWlE,kBAAC8O,GAAA,EAAD,CAAYlP,UAAU,kBAAkBkJ,QAAQ,MAAhD,iFAiH5B,yBAAKlJ,UAAU,cACX,yBAAKA,UAAU,iBACX,yBAAKE,IAAKogB,KAAkBlgB,IAAI,gBAAgBnN,MAAM,SAE1D,yBAAK+M,UAAU,qBACX,6BACI,4BAAKhP,EAASe,gBAAgBwB,WAAWrB,YACzC,4BAAKlB,EAASe,gBAAgBwB,WAAWC,kBACzC,4BAAQwM,UAAU,yBAAyBC,QAAS,kBAAM6f,GAA0B,EAxSnF,2BAySI9uB,EAASe,gBAAgBwB,WAAWE,uB,YAhSrCsQ,IAAMlU,WCLzB0wB,G,4MACjBlwB,MAAQ,CACJmwB,mBAAoB,KACpBC,qBAAsB,KACtB7S,WAAW,EACXhG,OARsB,MAStB8Y,uBAAuB,EACvBC,gBAAiB,KACjBC,gBAAiBzB,GACjB0B,uBAAuB,EACvBC,sBAAuB,KACvBC,kBAAmB,KACnBd,iBAAkB,KAClBN,WAAY,KACZqB,qBAAqB,EACrB7tB,YAAa,EAAKjD,MAAMiD,a,EAG5B0c,kBAAoB,WACZ,EAAK3f,MAAMiD,YAAY6Y,OAAS,GAChC,EAAKiV,kC,EAIbA,+BAAiC,WAC7B,GAAIlsB,OAAOqI,eAAeJ,QAAQ,wBACyC,SAApEjI,OAAOqI,eAAeJ,QAAQ,uBAAuB6W,WAAuB,CAC3E,IAAMqN,EAAkBpkB,KAAKI,MAAMnI,OAAOqI,eAAeJ,QAAQ,sBAC7DmkB,EAAgB,EAAKjxB,MAAMiD,YAAY0K,QAAO,SAAAtI,GAAU,OACvD2rB,EAAgBE,MAAK,SAAAC,GAAS,OAAIA,EAAUzwB,KAAO2E,EAAW3E,SAAK,GACxE,EAAKkQ,SAAS,CACV0f,mBAAoBW,IACrB,kBAAM,EAAKG,kBAAkB,EAAKjxB,MAAMmwB,mBAAmB5vB,YAGlE,EAAKkQ,SAAS,CACV0f,mBAAoB,EAAKtwB,MAAMiD,YAAY,KAC5C,kBAAM,EAAKmuB,kBAAkB,EAAKjxB,MAAMmwB,mBAAmB5vB,Q,EAItE0wB,kBAAoB,SAAC1wB,GAGjB,OAFA,EAAKkQ,SAAS,CAAE8M,WAAW,EAAM6S,qBAAsB,KAAMd,WAAY,OAElE9R,GACFjT,kBAAkBhK,GAClBmH,MAAK,SAACC,GAEH,OADA,EAAK8I,SAAS,CAAE8M,WAAW,EAAO6S,qBAAsBzoB,IACjDA,KAEVD,MAAK,SAAAR,GAAG,OAAI,EAAKgqB,kBAAkB,mBAAoBhqB,EAAG,gBAAqB,iBAAkBA,EAAG,gBAAqBA,EAAG,cAC5H0K,OAAM,SAAC9K,GACJ,EAAK2J,SAAS,CAAE8M,WAAW,OAE9BqI,SAAQ,WACDlhB,OAAOqI,eAAeJ,QAAQ,wBACqC,SAApEjI,OAAOqI,eAAeJ,QAAQ,uBAAuB6W,YACpD,EAAK/S,SAAS,CACV+f,uBAAuB,EACvBD,gBAAiBzB,GACjBwB,gBAAiB,EAAKtwB,MAAMowB,2B,EAMhDhB,qBAAuB,SAAC7uB,EAAI+P,EAAK6gB,GAC7B,OAAO3T,GAAU1R,gBAAgBvL,EAAI+P,GACpC5I,MAAK,SAACC,GACH,EAAKupB,kBAAkB,aAAcvpB,EAAM,iBAAkBwpB,EAAQ,gBAAqBA,EAAQ,e,EAI1GD,kBAAoB,SAACE,EAAUluB,EAAY7B,EAAKgwB,EAAOC,GACnD,GAAIpuB,GAAcmuB,GAA6B,IAApBC,EAAS3V,OAAc,CAC9C,IAAI4V,EAAoB3iB,KAAE4iB,QAAQtuB,EAAY7B,GAC7B,qBAAb+vB,GACAC,EAAMxiB,SAAQ,SAAAqE,GACNqe,EAAkBvf,eAAekB,EAAKpJ,QACtCynB,EAAiB,6BAAOA,GAAP,mBAA2Bre,EAAKpJ,KAAO,SAIpE,EAAK2G,SAAL,gBAAiB2gB,EACbG,SAIJ,EAAK9gB,SAAL,gBAAiB2gB,EACb,Q,EAKZK,mBAAqB,SAACnhB,GAClB,EAAKG,SAAS,CAAE0f,mBAAoB7f,IAAO,WACvC,EAAK2gB,kBAAkB3gB,EAAI/P,Q,EAInCkvB,0BAA2B,SAACjd,EAAI+E,GAC5B,EAAK9G,SAAS,CACV+f,sBAAuBhe,EACvB+d,gBAAiBhZ,K,EAIzB0B,WAAa,SAAC3F,EAAG/S,GACb,IAAMuC,EAAc,EAAK9C,MAAM8C,YAAY4G,KAAI,SAACD,EAAO0Q,GAMnD,OALI1Q,EAAMlJ,KAAOA,GAAM+S,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,YACnD1P,EAAMuP,aAAc,EAEpBvP,EAAMuP,aAAc,EAEjBvP,KAEX,EAAKgH,SAAS,CAAE3N,iB,EAEpBlD,OAAS,WAAO,IAAD,EAeP,EAAKI,MAbLmwB,EAFO,EAEPA,mBACAC,EAHO,EAGPA,qBACAC,EAJO,EAIPA,sBACA9Y,EALO,EAKPA,OACA+Y,EANO,EAMPA,gBACAC,EAPO,EAOPA,gBACAC,EARO,EAQPA,sBACAC,EATO,EASPA,sBACAC,EAVO,EAUPA,kBACAd,EAXO,EAWPA,iBACAN,EAZO,EAYPA,WACAqB,EAbO,EAaPA,oBACA7tB,EAdO,EAcPA,YAdO,EAgBmF,EAAKjD,MAA3FsqB,EAhBG,EAgBHA,WAAYD,EAhBT,EAgBSA,oBAAqBjf,EAhB9B,EAgB8BA,WAAYkT,EAhB1C,EAgB0CA,gBAAiBhO,EAhB3D,EAgB2DA,oBAEtE,OACI,kBAAC,IAAMiC,SAAP,KACI,yBAAKzC,UAAU,oBAAoBpP,GAAG,eAC7BuC,GAAeA,EAAY6Y,OAAS,GAAKwU,EACtC,kBAAC,IAAM/d,SAAP,KACI,wBAAIzC,UAAU,eAAehP,EAASe,gBAAgBoB,YAAYjB,YAClE,yBAAK8N,UAAU,uBACX,kBAACiD,GAAA,EAAD,CAAMC,WAAS,EAAClD,UAAU,8BACtB,kBAACiD,GAAA,EAAD,CAAMM,MAAI,EAACwe,cAAY,EAACve,GAAI,EAAGxD,UAAU,yBACrC,4BACIA,UAAU,yBACVC,QAAS,kBACL,EAAKa,SAAS,CACV4f,uBAAuB,EACvB9Y,OAzJ1B,UAoJc,OAWA,yBAAK5H,UAAU,0BACV7M,EAAY4G,KAAI,SAACiU,GAAD,OACb,yBAAKhO,UAAWgO,EAAKpd,KAAO4vB,EAAmB5vB,GAAK,cAAgB,OAAQc,IAAKsc,EAAKpd,GAAIqP,QAAS,kBAAM,EAAK6hB,mBAAmB9T,KAC7H,kBAAC/D,GAAA,EAAD,CAASpZ,MAAOmd,EAAKnd,MAAOqZ,UAAU,MAAMC,sBAAuB6D,EAAK3E,aACpE,kBAAC6F,GAAA,EAAD,CAAYhG,QAAQ,KAAKkB,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAGqK,EAAKpd,MAAMod,EAAKnd,cAMrG,kBAACoS,GAAA,EAAD,CAAMM,MAAI,EAACwe,cAAY,EAACve,GAAI,GAAIxD,UAAU,wBAAwB+H,MAAO,CAAE4P,SAAU,aAChF8I,EACG,kBAAC,GAAD,CACId,WAAYA,EACZC,cAAea,EACfR,iBAAkBA,EAClBJ,0BAA2B,SAAChd,GAAD,OACvB,EAAK/B,SAAS,CACV4f,sBAAuB7d,EACvB+E,OAjL7B,OAkL6B+Y,gBAAiBF,KAGzBX,0BAA2B,SAACjd,EAAI+E,GAAL,OACvB,EAAK9G,SAAS,CACV+f,sBAAuBhe,EACvB+d,gBAAiBhZ,EACjB+Y,gBAAiBF,KAGzBV,yBAA0B,SAACld,GACvB,EAAK/B,SAAS,CAACggB,sBAAuBje,KAE1Cmd,qBAAsB,SAACnd,GACnB,EAAK/B,SAAS,CAACigB,kBAAmBle,KAEtC2X,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrDkQ,qBAAsB,SAAC9e,GAAD,OAAS,EAAK8e,qBAAqBe,EAAmB5vB,GAAI+P,EAAK8f,IACrFf,kBAAmB,kBAAM,EAAK5e,SAAS,CAAC6e,WAAY,UAGxD,kBAAC,GAAD,CAAY9uB,MAAM,6BAOtC,yBAAKmP,UAAU,cACX,yBAAKA,UAAU,iBACX,yBAAKE,IAAK8hB,KAAmB5hB,IAAI,gBAAgBnN,MAAM,SAE3D,yBAAK+M,UAAU,qBACX,6BACI,4BAAKhP,EAASe,gBAAgBoB,YAAYjB,YAC1C,4BAAKlB,EAASe,gBAAgBoB,YAAYC,mBAC1C,4BACI4M,UAAU,yBACVC,QAAS,kBACL,EAAKa,SAAS,CACV4f,uBAAuB,EACvB9Y,OA7NtB,UAgOe5W,EAASe,gBAAgBoB,YAAYE,qBAOlE,kBAAC,GAAD,CACImP,KAAMke,EACN9Y,OAAQA,EACRtM,WAAYA,EACZ0lB,oBAAqBA,EACrBiB,qBAAsB,SAACthB,GACnB5L,OAAOqI,eAAeP,QAAQ,sBAAuB8D,GACrD5L,OAAOqI,eAAeP,QAAQ,oBAAqBC,KAAKC,UAAU,EAAK7M,MAAMiD,eAEjFoC,WAAYorB,EACZ/gB,QAAS,SAACiD,GAAD,OAAQ,EAAK/B,SAAS,CAC3B4f,sBAAuB7d,EACvB8d,gBAAiB,QAErBtR,SAAU,SAACxM,GAAD,OAAQ,EAAK/B,SAAS,CAC5B4f,sBAAuB7d,EACvB8d,gBAAiB,OAClB,kBAAMpG,QACTC,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,IAEzB,kBAAC,GAAD,CACIgC,KAAMqe,EACNjZ,OAAQgZ,EACRvY,KAAMyY,EACNvrB,WAAYorB,EACZuB,UAAWnB,EACXnhB,QAAS,SAACiD,GAAD,OAAQ,EAAK/B,SAAS,CAC3B+f,sBAAuBhe,EACvB8d,gBAAiB,OAClB,WACK5rB,OAAOqI,eAAeJ,QAAQ,wBACqC,SAApEjI,OAAOqI,eAAeJ,QAAQ,uBAAuB6W,YACpD9e,OAAOqI,eAAeP,QAAQ,uBAAuB,OAG7DwS,SAAU,SAACrB,EAAMnL,GAAP,OAAc,EAAK/B,SAAS,CAClC+f,sBAAuBhe,EACvB8d,gBAAiB,KACjBhB,WAAY,OACb,WACC,EAAK7e,SAAS,CAAC0f,mBAAoBxS,IACnC,EAAKsT,kBAAkBtT,EAAKpd,IACxBmE,OAAOqI,eAAeJ,QAAQ,wBACqC,SAApEjI,OAAOqI,eAAeJ,QAAQ,uBAAuB6W,YACpD9e,OAAOqI,eAAeP,QAAQ,uBAAuB,OAG7D2d,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,EACrBmK,OAAQ,EAAKmV,8B,YAxRQ/b,IAAMlU,WCJ1BsyB,G,4MACjB9xB,MAAQ,CACJmwB,mBAAoB,KACpBltB,gBAAiBtC,EAASe,gBAAgBoB,YAAYG,gBACtDsc,UAAU,EACVwS,wBAAwB,EACxBpB,qBAAqB,G,EAGzB1gB,mBAAqB,SAACC,GAIlB,GAHGA,EAAUC,sBAAwB,EAAKtQ,MAAMsQ,sBAA0D,IAAnC,EAAKtQ,MAAMsQ,qBAC9E,EAAKC,aAAY,EAAO,EAAKvQ,MAAM0P,SAEpCW,EAAUhL,aAAe,EAAKrF,MAAMqF,YDXhB,SCW8B,EAAKrF,MAAM0X,OAA4B,CACxF,IAAIkI,EAAkB,EAAKzf,MAAMiD,gBAAgByG,KAAI,SAAAuJ,GAEjD,OADO,6BAAOA,GAAP,IAAc1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAAC0f,mBAAoB,EAAKtwB,MAAMqF,WAAYjC,gBAAiBwc,SAErE,EAAKzf,MAAMuf,UDnBC,QCmBW,EAAK1f,MAAM0X,QACxC,EAAKvX,MAAMiD,gBAAgB4L,SAAQ,SAAAoE,GAC/B,EAAKxC,UAAS,SAAAC,GAAS,MAAK,CACxByf,mBAAmB,6BACZzf,EAAUyf,oBADC,mBAEbld,EAAM5R,IAAM,KAEjBke,UAAU,U,EAM1BlP,SAAW,SAAChP,EAAKoI,GACb,EAAKgH,UACD,SAACC,GAAD,MAAgB,CACZyf,mBAAmB,6BACZzf,EAAUyf,oBADC,mBAEb9uB,EAAMoI,S,EAMvBmH,eAAiB,SAAC+O,EAAWC,GACzB,IAAIjY,EAAO,EAAK3H,MAAM2f,GAClBnb,EAAQ,EAAKxE,MAAM4f,GAmBvB,OAlBApb,EAAMqK,SAAQ,SAACkM,EAAI9E,GACf,QAAO,GACH,KAAMtO,EACN,KAAMA,EAAKqK,eAAe+I,EAAG1Z,KAC7B,KAAKsG,GAAyB,KAAjBA,EAAKoT,EAAG1Z,KACjB0Z,EAAGxZ,SAAU,EACbwZ,EAAGtZ,aAAe,iBAK1B,EAAKgP,SAAL,gBACKmP,EADL,uBAEO,EAAK5f,MAAM4f,GAAY2M,MAAM,EAAGtW,IAFvC,CAGI3I,OAAO4S,OAAO,GAAI,EAAKlgB,MAAM4f,GAAY3J,GAAQ8E,IAHrD,aAIO,EAAK/a,MAAM4f,GAAY2M,MAAMtW,EAAQ,WAGxChF,QAAQrC,KAAEsC,KAAK1M,EAAO,CAAC,WAAW,M,EAG9C4G,cAAgB,WACZ,GAAK,EAAKwF,eAAe,qBAAsB,mBAG1C,CACD,IAAIohB,EAAY,6BAAO,EAAKhyB,MAAMmwB,oBAAlB,IAAsC,YAAe,EAAKtwB,MAAMoL,aAEhF,OADA,EAAKwF,SAAS,CAACshB,wBAAwB,IAChCvU,GAAUpS,cAAc4mB,GAC1BtqB,MAAK,SAAAR,GACCA,GACC,EAAKuJ,SAAS,CACVshB,wBAAwB,EACxB5B,mBAAoB,OACrB,WACC,EAAKnwB,MAAM2wB,sBAC2B,IAAnC,EAAK3wB,MAAM2wB,qBACX,EAAK9wB,MAAM+xB,qBAAqB,EAAK5xB,MAAM2wB,qBAE9C,EAAK9wB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,uCAInB,EAAK4P,aAAY,EAAO,EAAKvQ,MAAMmf,gBAK9CpN,OAAM,SAAA9K,GAAG,OAAI,EAAK+K,YAAY/K,Q,EAK3CuE,iBAAmB,WACf,GAAI,EAAKuF,eAAe,qBAAsB,mBAGzC,CAAC,IACMuf,EAAuB,EAAKnwB,MAA5BmwB,mBAER,OADA,EAAK1f,SAAS,CAACshB,wBAAwB,IAChCvU,GAAUnS,iBAAiB8kB,EAAmB5vB,GAAI4vB,GACpDzoB,MAAK,SAAAR,GACCA,GACC,EAAKuJ,SAAS,CACVshB,wBAAwB,EACxB5B,mBAAoB,OACrB,WAEC,EAAKtwB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,sCAInB,EAAK4P,aAAY,EAAO,EAAKvQ,MAAMmf,gBAI9CpN,OAAM,SAAA9K,GAAG,OAAI,EAAK+K,YAAY/K,Q,EAI3CsJ,YAAc,SAACoC,EAAIoa,GACf,IAAInN,EAAkB,EAAKzf,MAAMiD,gBAAgByG,KAAI,SAAAuJ,GAEjD,OADO,6BAAOA,GAAP,IAAc1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAAExN,gBAAiBwc,EAAiBkR,qBAAqB,IACvElR,EAAgB5Q,SAAQ,SAAAoE,GACpB,EAAKxC,UAAS,SAAAC,GAAS,MAAK,CACxByf,mBAAmB,6BACZzf,EAAUyf,oBADC,mBAEbld,EAAM5R,IAAM,KAEjBke,UAAU,MACV,kBAAMqN,EAASpa,U,EAI3BX,YAAc,SAAC/K,GACX,GAAIA,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,QAAkC,MAAxBhL,EAAIC,SAAS+K,OAAgB,CAC3E,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,OAC3BgO,EAAa,EAAK/f,MAAMiD,gBAAgByG,KAAI,SAAAuJ,GAI5C,OAHoD,IAA1CrE,KAAEoR,QAAQpR,KAAErB,KAAKwE,GAASkB,EAAM5R,KAAhC,6BACI4R,GADJ,IACW1R,SAAS,EAAME,aAAemN,KAAEqR,OAAOlO,EAAQkB,EAAM5R,OADhE,6BAEI4R,GAFJ,IAEW1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAACxN,gBAAiB8c,SAIhC,EAAKlgB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAO,qCAKvB,EAAKiQ,SAAS,CACVshB,wBAAwB,K,EAIhCnyB,OAAS,WAAO,IAAD,EACuB,EAAKC,MAA/BsS,EADG,EACHA,KAAMoF,EADH,EACGA,OAAQhI,EADX,EACWA,QADX,EAEkF,EAAKvP,MAA1FiD,EAFG,EAEHA,gBAAiBktB,EAFd,EAEcA,mBAAoB4B,EAFlC,EAEkCA,uBAAwBpB,EAF1D,EAE0DA,oBAErE,OACI,kBAAC,GAAD,CACIxe,KAAMA,EACN3R,MDzLc,QCyLP+W,EAA4B,mBAAqB,kBACxDD,QACI,yBAAK3H,UAAU,yBACX,yBAAKA,UAAU,2BACX,wBAAIA,UAAU,0BAAd,aAEJ,kBAAC,IAAMyC,SAAP,KACKnP,EAAgByG,KAAI,SAAAuJ,GAAK,OACtB,kBAAC,GAAD,CACIzS,MAAOyS,EAAMzS,MACbD,GAAI,kBACJc,IAAK4R,EAAM5R,IACX+R,cAAeH,EAAM3R,YAAc,WACnC+R,UAAWJ,EAAM1R,SAAW0R,EAAMxR,aAClCgI,MAAO0mB,GAAsBA,EAAmBld,EAAM5R,KAAO8uB,EAAmBld,EAAM5R,KAAO,GAC7FgP,SAAU,SAACC,GAAD,OAAS,EAAKD,SAAS4C,EAAM5R,IAAKiP,IAC5CiD,QAAS,SAACD,GAAD,OAAO,EAAK7C,UAAS,SAACC,GAAD,MAAgB,CAC1CzN,gBAAiByN,EAAUzN,gBAAgByG,KAAI,SAACiE,GAAD,OAC3CA,EAAItM,MAAQ4R,EAAM5R,KAAOsM,EAAIpM,QAC3B+L,OAAO4S,OAAOvS,EAAK,CAACpM,SAAS,EAAOE,aAAc,KAClDkM,UAGVkP,UDhNN,QCgNiBtF,GAA2C,UAAdtE,EAAM5R,IAAkB,YAAc,SDhNpF,QCoNLkW,GACG,kBAAC,GAAD,CACI/W,MAAO,mCACPsX,QAAS6Y,EACT9Y,SAAU,SAACvH,GAAD,OAAS,EAAKG,SAAS,CAACkgB,oBAAqBrgB,QAIvEf,QAAS,SAACiD,GAAD,OAAQ,EAAKpC,YAAYoC,EAAIjD,IACtCgI,OACI,yBAAK5H,UAAU,wBACX,yBAAKA,UAAU,oBACX,4BACIA,UAAU,2BACVC,QAAS,kBAAM,EAAKQ,aAAY,EAAOb,KAF3C,UD/NG,SCoOFgI,EACG,4BACI5H,UAAU,0BACVC,QAAS,kBAAM,EAAKvE,qBACvB,QAGD,4BACIsE,UAAU,0BACVC,QAAS,kBAAM,EAAKxE,kBACvB,oBAMjBiM,QAAS0a,K,YAtPwBre,IAAMlU,W,qBCOlCyyB,G,4MACjBjyB,MAAQ,CACJ2C,QAAShC,EAASe,gBAAgBkC,UAAUI,cAAcrB,QAC1DiB,UAAW,KACX2Z,WAAW,EACX2U,WAAY,GACZC,eAVoB,MAWpBC,qBAAqB,EACrBC,iBAAkB,KAClBC,kBAAmB,KACnBrD,oBAAoB,EACpBsD,mBAAoB,M,EAGxBrD,YAAc,K,EAEd1P,kBAAoB,WAChB,EAAKgT,aAAa,EAAK3yB,MAAMoL,a,EAGjCgJ,qBAAuB,WACnBsO,aAAa,EAAK2M,c,EAGtBsD,aAAe,SAACjyB,GAEZ,OADA,EAAKkQ,SAAS,CAAE8M,WAAW,EAAM3Z,UAAW,OACrC4Z,GACFpT,2BAA2B7J,GAC3BmH,MAAK,SAACC,GACH,EAAK8qB,iBAAiB,YAAa9qB,EAAM,mBACzC,EAAK8I,SAAS,CAAE8M,WAAW,EAAOgV,mBAAoB5qB,OAEzDiK,OAAM,SAAC9K,GACJ,EAAK2J,SAAS,CAAE8M,WAAW,Q,EAIvCmV,eAAiB,SAACnyB,EAAI8J,GAClB,OAAOmT,GACFpT,2BAA2B7J,EAAI8J,GAC/B3C,MAAK,SAAAC,GACF,EAAK8I,SAAS,CAAE8hB,mBAAoB5qB,IACpC,EAAK8qB,iBAAiB,oBAAqB9qB,EAAM,sBAEpDD,MAAK,kBAAM,EAAK+I,SAAS,CAACwe,oBAAoB,OAC9Crd,OAAM,SAAC9K,GACJ,EAAK2J,SAAS,CAAEwe,oBAAoB,Q,EAIhDwD,iBAAmB,SAACrB,EAAUxtB,EAAWvC,GACrC,GAAyB,IAArBuC,EAAU+X,OAAd,CAIA,IAAIzU,EAAM0H,KAAE4iB,QAAQ5tB,EAAWvC,GAC/B,EAAKoP,SAAL,gBAAiB2gB,EAAWlqB,SAJxB,EAAKuJ,SAAL,gBAAiB2gB,EAAW,M,EAOpCuB,eAAiB,SAAClpB,GACA,KAAVA,GACA,EAAKgH,SAAS,CAAEwe,oBAAoB,IAExC1M,aAAa,EAAK2M,aAClB,EAAKze,SAAS,CAAEyhB,WAAYzoB,EAAOwlB,oBAAoB,IAAQ,kBAC3D,EAAKC,YAAcnnB,YAAW,WAC1B,OAAO,EAAK/H,MAAMkyB,WAChB,EAAKQ,eAAe,EAAK7yB,MAAMoL,WAAY,EAAKjL,MAAMkyB,YACtD,EAAKzhB,SAAS,CAAC6hB,kBAAmB,KAAMrD,oBAAoB,MAC/D,S,EAGXhW,WAAa,SAAC3F,EAAG/S,EAAIc,EAAK2W,EAAM4a,GAC5B,IAAMhvB,EAAY,EAAK5D,MAAM4yB,GAAUvxB,GAAKqI,KAAI,SAACD,EAAO0Q,GAOpD,OANI1Q,EAAMlJ,KAAOA,GAAM+S,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,YAC1C,SAATnB,EAAkBvO,EAAMopB,YAAa,EAAOppB,EAAMqpB,aAAc,GAEhErpB,EAAMopB,YAAa,EACnBppB,EAAMqpB,aAAc,GAEjBrpB,KAEX,EAAKgH,SAAL,gBAAiBmiB,EAAjB,6BAAiC,EAAK5yB,MAAM4yB,IAA5C,mBAAwDvxB,EAAMuC,O,EAGlEhE,OAAS,WAAO,IAAD,EAYP,EAAKI,MAVL2C,EAFO,EAEPA,QACAiB,EAHO,EAGPA,UACA2Z,EAJO,EAIPA,UACA2U,EALO,EAKPA,WACAC,EANO,EAMPA,eACAC,EAPO,EAOPA,oBACAC,EARO,EAQPA,iBACAC,EATO,EASPA,kBACArD,EAVO,EAUPA,mBACAsD,EAXO,EAWPA,mBAXO,EAa2E,EAAK1yB,MAAnFiD,EAbG,EAaHA,YAAamI,EAbV,EAaUA,WAAYkf,EAbtB,EAasBA,WAAYhM,EAblC,EAakCA,gBAAiBhO,EAbnD,EAamDA,oBAE9D,OACI,kBAAC,IAAMiC,SAAP,KACI,yBAAKzC,UAAU,oBAAoBpP,GAAG,aAE7Bgd,EACG,kBAAC,GAAD,CAAY/c,MAAOG,EAASe,gBAAgBkC,UAAUjC,iBAEtD,kBAAC,IAAMyQ,SAAP,KACKxO,GAA0C,IAA7BgL,KAAErB,KAAK3J,GAAW+X,OAC5B,kBAAC,IAAMvJ,SAAP,KACI,wBAAIzC,UAAU,eAAehP,EAASe,gBAAgBkC,UAAU/B,YAChE,yBAAK8N,UAAU,kBACX,yBAAKA,UAAU,oBACX,yBAAKE,IAAKggB,KAAY9f,IAAI,GAAGnN,MAAM,OACnC,kBAAC,GAAD,CACIga,YAAY,YACZjN,UAAU,aACVpP,GAAII,EAASe,gBAAgBkC,UAAU/B,WACvC4H,MAAOyoB,EACP7hB,SAAU,SAACC,GAAD,OAAS,EAAKqiB,eAAeriB,OAE/C,yBAAKX,UAAU,gBACf,4BACIA,UAAU,uCACVoI,SAAUwF,EACV3N,QAAS,kBAAM,EAAKa,SAAS,CAAC2hB,qBAAqB,EAAMD,eAjI7E,UAkIqBxxB,EAASe,gBAAgBkC,UAAUG,gBAG1CuuB,GAA2C,OAAtBA,GAA+BrD,EAqElD,yBAAKtf,UAAU,4BACVsf,EACG,kBAAC,GAAD,CAAYzuB,MAAM,eAElB,kBAAC,IAAM4R,SAAP,KAC0C,IAArCxD,KAAErB,KAAK+kB,GAAmB3W,QAAgB/M,KAAErB,KAAK+kB,GAAmB5oB,KAAI,SAACrI,GAAD,OACrE,kBAAC,GAAD,CACIyuB,iBAAe,EACfzuB,IAAKA,EAAM,SACXb,MAAOa,EACP+X,WAAW,iBACXC,MAAK,UAAKiZ,EAAkBjxB,GAAKsa,OAA5B,cACLrM,SACI,kBAAC,GAAD,CACI3M,QAASA,EACT2M,SACI,kBAAC,IAAM8C,SAAP,KACKkgB,EAAkBjxB,GAAKqI,KAAI,SAAC4jB,GAAD,OACxB,kBAAC/U,GAAA,EAAD,CACIgV,OAAK,EACLlsB,IAAKisB,EAAI/sB,GACTiP,QAAS,CACLkJ,KAAM,gBAGT/V,EAAQ+G,KACL,SAACjD,GAAD,OACIA,EAAOjF,QACH,kBAACgX,GAAA,EAAD,CAAWnX,IAAKoF,EAAOpF,IAAKd,GAAIkG,EAAOpF,KACnB,OAAfoF,EAAOpF,KAEA,kBAACuY,GAAA,EAAD,CAASpZ,MAAO8sB,EAAI7mB,EAAOpF,KAAMwY,UAAU,MAAMC,qBAAqC,SAAfrT,EAAOpF,KAAkBisB,EAAIuF,YAAcvF,EAAIwF,aAClH,yBAAK/Y,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAGga,EAAI/sB,GAAIc,EAAKoF,EAAOpF,IAAK,uBACjEisB,EAAI7mB,EAAOpF,OAIZ,OAAfoF,EAAOpF,KACJ,yBAAKsO,UAAU,cACX,4BACIA,UAAU,uCACVC,QAAS,kBAAM,EAAKa,SAAS,CACzB2hB,qBAAqB,EACrBD,eApP3F,OAqP2FE,iBAAkB/E,MAEtB,yBAAKzd,IAAK8O,KAAU/b,MAAM,KAAKmN,IAAI,mBAEvC,4BACIJ,UAAU,wCACVC,QAAS,kBAAM,EAAKa,SAAS,CACzB2hB,qBAAqB,EACrBD,eA5PzF,SA6PyFE,iBAAkB/E,MAEtB,yBAAKzd,IAAK2d,KAAY5qB,MAAM,KAAKmN,IAAI,sCAe3D,IAArCnB,KAAErB,KAAK+kB,GAAmB3W,QACvB,kBAACkD,GAAA,EAAD,CAAYlP,UAAU,iBAAiBkJ,QAAQ,MAA/C,wBA3IhB,yBAAKlJ,UAAU,qBACVf,KAAErB,KAAK3J,GAAW8F,KAAI,SAACrI,GAAD,OACnB,kBAAC,GAAD,CACIA,IAAKA,EACLb,MAAOa,EACP+X,WAAW,iBACXC,MAAK,UAAKzV,EAAUvC,GAAKsa,OAApB,cACLrM,SACI,kBAAC,GAAD,CACI3M,QAASA,EACT2M,SACI,kBAAC,IAAM8C,SAAP,KACKxO,EAAUvC,GAAKqI,KAAI,SAAC4jB,GAAD,OAChB,kBAAC/U,GAAA,EAAD,CACIgV,OAAK,EACLlsB,IAAKisB,EAAI/sB,GACTiP,QAAS,CACLkJ,KAAM,gBAGT/V,EAAQ+G,KACL,SAACjD,GAAD,OACIA,EAAOjF,QACH,kBAACgX,GAAA,EAAD,CAAWnX,IAAKoF,EAAOpF,IAAKd,GAAIkG,EAAOpF,IAAKqW,MAAO,CAAC9U,MAAO6D,EAAO7D,MAAQ6D,EAAO7D,MAAQ,SACrE,OAAf6D,EAAOpF,KAEA,kBAACuY,GAAA,EAAD,CAASpZ,MAAO8sB,EAAI7mB,EAAOpF,KAAMwY,UAAU,MAAMC,qBAAqC,SAAfrT,EAAOpF,KAAkBisB,EAAIuF,YAAcvF,EAAIwF,aAClH,yBAAK/Y,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAGga,EAAI/sB,GAAIc,EAAKoF,EAAOpF,IAAK,eACjEisB,EAAI7mB,EAAOpF,OAKZ,OAAfoF,EAAOpF,KACJ,yBAAKsO,UAAU,cACX,4BACIA,UAAU,uCACVC,QAAS,kBAAM,EAAKa,SAAS,CACzB2hB,qBAAqB,EACrBD,eA5KnF,OA6KmFE,iBAAkB/E,MAEtB,yBAAKzd,IAAK8O,KAAU/b,MAAM,KAAKmN,IAAI,mBAEvC,4BACIJ,UAAU,wCACVC,QAAS,kBAAM,EAAKa,SAAS,CACzB2hB,qBAAqB,EACrBD,eApLjF,SAqLiFE,iBAAkB/E,MAEtB,yBAAKzd,IAAK2d,KAAY5qB,MAAM,KAAKmN,IAAI,wCAgG7G,yBAAKJ,UAAU,+BACX,yBAAKA,UAAU,iBACX,yBAAKE,IAAKwZ,KAAetZ,IAAI,WAAWnN,MAAM,SAElD,yBAAK+M,UAAU,oCACX,6BACI,4BAAKhP,EAASe,gBAAgBkC,UAAU/B,YACxC,4BAAKlB,EAASe,gBAAgBkC,UAAUC,iBACxC,4BACI8L,UAAU,yBACVC,QAAS,kBAAM,EAAKa,SAAS,CAAC2hB,qBAAqB,EAAMD,eAnSjF,UAsS4BxxB,EAASe,gBACJkC,UAAUG,oBAUvD,kBAAC,GAAD,CACIoO,KAAMigB,EACN7a,OAAQ4a,EACR5iB,QAAS,SAACiD,GAAD,OAAQ,EAAK/B,SAAS,CAAC2hB,oBAAqB5f,EAAI6f,iBAAkB,QAC3ErT,SAAU,SAACxM,GAAD,OAAQ,EAAK/B,SAAS,CAC5B2hB,oBAAqB5f,EACrB8f,kBAAmB,KACnBD,iBAAkB,KAClBH,WAAY,KAAK,kBAAM,EAAKM,aAAa,EAAK3yB,MAAMoL,gBACxDkB,SAAUkmB,EACVU,aAAcR,EACdzvB,YAAaA,EACbmI,WAAYA,EACZkf,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,M,YA5TFuD,IAAMlU,WCRxBwzB,G,4MACjB5T,aAAe,CACX/C,WAN4B,EAO5B7b,MAAO,gBACPsC,YAAa,KACbuvB,iBAAkB,M,EAGtBryB,M,gBAAY,EAAKof,c,EAEjBnP,mBAAqB,SAACC,GACfA,EAAUiC,OAAS,EAAKtS,MAAMsS,MAC7B,EAAK8gB,gBAAgB,EAAKpzB,MAAM0X,QAEjCrH,EAAUC,sBAAwB,EAAKtQ,MAAMsQ,sBAA0D,IAAnC,EAAKtQ,MAAMsQ,qBAC9E,EAAKC,aAAY,I,EAIzB6iB,gBAAkB,SAAC1b,GACf,OAAOA,GACH,IDjBgB,MCkBhB,IDjBiB,OCkBb,IAAI2b,EAAsB,GAC1BtkB,KAAEC,QAAQ,EAAKhP,MAAMiD,aAAa,SAACmQ,GAC/B,IAAItF,EAAM,GACVA,EAAG,IAAUsF,EAAM1S,GACnBoN,EAAG,MAAYsF,EAAMzS,MACrB0yB,EAAoBliB,KAAKrD,MAE7B,EAAK8C,SDzBQ,SCyBC8G,EACR,CAACzU,YAAaowB,EAAqBb,iBAAkB,EAAKxyB,MAAMsM,UAChE,CAACrJ,YAAaowB,ID3BP,SC4BV3b,EACC,EAAK4b,UArCU,GAwCf,EAAKA,UAzCW,GA2CpB,MACJ,IDlCmB,SCmCf,EAAK1iB,SAAS,CAAC4hB,iBAAkB,EAAKxyB,MAAMsM,WAC5C,EAAKgnB,WAAW,GAChB,MACJ,QAAS,S,EAIjB/iB,YAAc,SAACoC,GACX,EAAK/B,SAAS,EAAK2O,cAAc,kBAAM,EAAKvf,MAAM0P,QAAQiD,O,EAG9D4gB,aAAe,SAAC5gB,GACZ,EAAK/B,SAAS,EAAK2O,cAAc,kBAAM,EAAKvf,MAAMmf,SAASxM,O,EAG/D2gB,UAAY,SAACE,GACT,EAAK5iB,SAAS,CACV4L,WAAYgX,IACb,kBAAM,EAAKC,YDtDO,SCsDK,EAAKzzB,MAAM0X,QAA4B,EAAI8b,O,EAGzEC,YAAc,SAACD,GACX,OAAQA,GACJ,KApEwB,EAqEpB,OAAO,EAAK5iB,SAAS,CAACjQ,MAAO,kBACjC,KArEuB,EAsEnB,OAAO,EAAKiQ,SAAS,CAACjQ,MAAO,oBACjC,KAtEsB,EAuElB,OAAO,EAAKiQ,SAAS,CAACjQ,MAAO,0BACjC,KAAM,EACF,OAAO,EAAKiQ,SAAS,CAACjQ,MAAO,oBACjC,KAAM,EACF,OAAO,EAAKiQ,SAAS,CAACjQ,MAAO,kBACjC,QACI,OAAO,EAAKiQ,SAAS,CAACjQ,MAAO,O,EAIzCZ,OAAS,WAAO,IAAD,EACqE,EAAKC,MAA7EsS,EADG,EACHA,KAAMoF,EADH,EACGA,OAAQtM,EADX,EACWA,WAAYkf,EADvB,EACuBA,WAAY4I,EADnC,EACmCA,aAAc5U,EADjD,EACiDA,gBADjD,EAEkD,EAAKne,MAA1Dqc,EAFG,EAEHA,WAAY7b,EAFT,EAESA,MAAOsC,EAFhB,EAEgBA,YAAauvB,EAF7B,EAE6BA,iBAExC,OACI,kBAAC,GAAD,CACIlgB,KAAMA,EACN3R,MAAOA,EACP8W,QACI,kBAAC,IAAMlF,SAAP,KDlFW,WCmFNmF,GACG,0BAAM5H,UAAU,uBA9FR,IA+FH0M,GAAuC,kBAAC,GAAD,CACpCM,IAAKN,EACLkX,UAAW,SAAC/gB,GAAD,OAAQ,EAAKpC,YAAYoC,IACpCghB,OAAQ,SAAC7W,GAAD,OAAS,EAAKwW,UAAUxW,MAjGjC,IAmGFN,GAAsC,kBAAC,GAAD,CACnC9E,OAAQA,EACRoF,IAAKN,EACLkX,UAAW,SAAC/gB,GAAD,OAAQ,EAAKpC,YAAYoC,IACpCihB,OAAQ,SAACjhB,GAAD,OAAQ,EAAK4gB,aAAa5gB,IAClCkhB,OAAQ,kBAAM,EAAKP,UAzGnB,IA0GArwB,YAAaA,EACbqJ,SDlGP,SCmGWoL,GACG8a,GACAU,EAAavlB,QAAO,SAAAlD,GAAG,OAAIA,EAAI/J,KAAO8xB,EAAiB9xB,MAAI,GAClE0K,WAAYA,EACZkf,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,MA/GvD,IAiHD7C,GAAqC,kBAAC,GAAD,CAClCpR,WAAYA,EACZsoB,UAAW,SAAC/gB,GAAD,OAAQ,EAAKpC,YAAYoC,IACpCihB,OAAQ,SAACjhB,GAAD,OAAQ,EAAK4gB,aAAa5gB,IAClC2X,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CkJ,OAAQ,kBAAM,EAAKP,UAxHnB,IAyHAhV,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,OD/G1D,WCmHN3H,GAA8B8a,GAC3B,kBAAC,GAAD,CACIlmB,SAAUkmB,EACVpnB,WAAYA,EACZsoB,UAAW,SAAC/gB,GAAD,OAAQ,EAAKpC,YAAYoC,IACpCihB,OAAQ,SAACjhB,GAAD,OAAQ,EAAK4gB,aAAa5gB,IAClC2X,WAAY,SAACnS,EAAMwS,GAAP,OAAeL,EAAWnS,EAAMwS,IAC5CrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,OAKrE3P,QAAS,SAACiD,GAAD,OAAQ,EAAKpC,YAAYoC,O,YArINkB,IAAMlU,W,0CCJ7Bm0B,G,4MACjB/zB,OAAS,WAAO,IAAD,EACmB,EAAKC,MAA3B0zB,EADG,EACHA,UAAWC,EADR,EACQA,OAEnB,OACI,yBAAK7jB,UAAU,iBACX,kBAACiD,GAAA,EAAD,CAAMC,WAAS,EAACE,QAAQ,SAASC,WAAW,SAASqL,aAAa,SAASvL,QAAS,GAChF,kBAACF,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,GACX,yBAAKxD,UAAU,kBAAkBC,QAAS,kBAAM4jB,EDPrC,KCQP,6BACI,yBAAK3jB,IAAK+jB,KAAgB7jB,IAAI,GAAGnN,MAAM,OACvC,4BAAI,uDAIhB,kBAACgQ,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,GACX,yBAAKxD,UAAU,iBAAiBC,QAAS,kBAAM4jB,EDdrC,KCeN,6BACI,yBAAK3jB,IAAKgkB,KAAe9jB,IAAI,GAAGnN,MAAM,QACtC,4BAAI,gCAAS,eAAuB,6BAAK,gCAAS,aAAqB,6BAAM,kBAK7F,yBAAK+M,UAAU,kCACX,yBAAKA,UAAU,eACf,4BAAQA,UAAU,2BAA2BC,QAAS,kBAAM2jB,GAAU,KAAtE,UAGA,yBAAK5jB,UAAU,kB,YA7BK+D,IAAMlU,WCQzBs0B,G,4MACjB1U,aAAe,CACXpb,cAAerD,EAASe,gBAAgBkC,UAAUI,cAAcC,SAChE8vB,gBAAiB,KACjBC,sBAAsB,EACtBzU,UAAU,G,EAGdvf,M,gBAAY,EAAKof,c,EAEjBI,kBAAoB,WAChB,GHXoB,QGWjB,EAAK3f,MAAM0X,QFlBa,IEkBc,EAAK1X,MAAM8c,IAA6B,CAC7E,IAAI3Y,EAAgB,EAAKiwB,kBACrBC,EAAe,GACnBlwB,EAAc6K,SAAQ,SAAAoE,GAClBihB,EAAajhB,EAAM5R,KAAO,EAAK+qB,mBAAmBnZ,EAAM5R,QAE5D,EAAKoP,SAAS,CACVsjB,gBAAiBG,M,EAK7BjkB,mBAAqB,SAACC,GAClB,GAAG,EAAKrQ,MAAMsM,WACN,EAAKnM,MAAMuf,UHxBE,SGyBd,EAAK1f,MAAM0X,OAA0B,CACxC,IAAIvT,EAAgB,EAAKiwB,kBACrBC,EAAe,GACnBlwB,EAAc6K,SAAQ,SAAAoE,GAClBihB,EAAajhB,EAAM5R,KAAO,EAAKxB,MAAMsM,SAAS8G,EAAM5R,QAExD,EAAKoP,SAAS,CACVsjB,gBAAiBG,EACjB3U,UAAU,M,EAKtB6M,mBAAqB,SAAC/qB,GAClB,OAAQA,GACJ,IAAK,8BAA+B,OAAO,EAC3C,IAAK,gBACD,OAAO,EAAKxB,MAAMqF,YAC0B,IAAjC,EAAKrF,MAAMqF,WAAWyW,OACvB,EAAK9b,MAAMiD,YAAY,GAAGzB,IAC1B,GACd,QAAS,MAAO,K,EAIxBuP,eAAiB,SAAC+O,EAAWC,GACzB,IAAMjY,EAAO,EAAK3H,MAAM2f,GAClBnb,EHrDc,QGqDN,EAAK3E,MAAM0X,OACT,EAAKvX,MAAM4f,GAAYpS,QAAO,SAAAuN,GAAE,MAAe,OAAXA,EAAG1Z,OACvC,EAAKrB,MAAM4f,GAmB3B,OAlBApb,EAAMqK,SAAQ,SAACkM,EAAI9E,GACf,QAAO,GACH,KAAMtO,EACN,KAAMA,EAAKqK,eAAe+I,EAAG1Z,KAC7B,KAAKsG,GAAyB,KAAjBA,EAAKoT,EAAG1Z,KACjB0Z,EAAGxZ,SAAU,EACbwZ,EAAGtZ,aAAe,iBAK1B,EAAKgP,SAAL,gBACKmP,EADL,uBAEO,EAAK5f,MAAM4f,GAAY2M,MAAM,EAAGtW,IAFvC,CAGI3I,OAAO4S,OAAO,GAAI,EAAKlgB,MAAM4f,GAAY3J,GAAQ8E,IAHrD,aAIO,EAAK/a,MAAM4f,GAAY2M,MAAMtW,EAAQ,WAGxChF,QAAQrC,KAAEsC,KAAK1M,EAAO,CAAC,WAAW,M,EAG9C6L,SAAW,SAAChP,EAAKoI,GACb,EAAKgH,UACD,SAACC,GAAD,MAAgB,CACZqjB,gBAAgB,6BACTrjB,EAAUqjB,iBADF,mBAEV1yB,EAAMoI,S,EAMvBoI,YAAc,SAAC/K,GACX,GAAIA,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,QAAkC,MAAxBhL,EAAIC,SAAS+K,OAAgB,CAC3E,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,OAC3BgO,EAAa,EAAK/f,MAAMgE,cAAc0F,KAAI,SAAAuJ,GAI1C,OAHoD,IAA1CrE,KAAEoR,QAAQpR,KAAErB,KAAKwE,GAASkB,EAAM5R,KAAhC,6BACI4R,GADJ,IACW1R,SAAS,EAAME,aAAemN,KAAEqR,OAAOlO,EAAQkB,EAAM5R,OADhE,6BAEI4R,GAFJ,IAEW1R,SAAS,EAAOE,aAAc,QAGvD,EAAKgP,SAAS,CAACzM,cAAe+b,SAG9B,EAAKlgB,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAO,0CAKvB,EAAKiQ,SAAS,CACVujB,sBAAsB,K,EAI9BG,eAAiB,SAAC7gB,GAEd,OADAA,EAAEgC,iBACG,EAAK1E,eAAe,kBAAmB,kBAGxC,EAAKH,SAAS,CAACujB,sBAAsB,IAC9BxW,GAAUxR,YAAY,EAAKnM,MAAMoL,WAAY,EAAKjL,MAAM+zB,iBAC9DrsB,MAAK,SAAAR,GACCA,GACC,EAAKuJ,SAAS,CACVujB,sBAAsB,IACvB,WACC,EAAKn0B,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,qCAInB,EAAK4P,aAAY,EAAO,EAAKvQ,MAAM4zB,cAI9C7hB,OAAM,SAAA9K,GAAG,OAAI,EAAK+K,YAAY/K,YArB/B,G,EAyBRstB,aAAe,SAAC9gB,GACZA,EAAEgC,iBACF,EAAK7E,SAAS,CAACujB,sBAAsB,IACrC,IAAMrsB,EAAO,CACT,cAAiB,EAAK3H,MAAM+zB,gBAAX,eAErB,OAAOvW,GAAUvR,YAAY,EAAKpM,MAAMoL,WAAY,EAAKjL,MAAM+zB,gBAAgBxzB,GAAIoH,GAClFD,MAAK,SAAAR,GACCA,GACC,EAAKuJ,SAAS,CACVujB,sBAAsB,IACvB,WACC,EAAKn0B,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,iCAInB,EAAK4P,aAAY,EAAO,EAAKvQ,MAAM4zB,cAI9C7hB,OAAM,SAAA9K,GAAG,OAAI,EAAK+K,YAAY/K,O,EAGnCmtB,gBAAkB,WACd,IAAIxU,EAAkB,EAAKzf,MAAMgE,cAAc0F,KAAI,SAAAuJ,GAE/C,OADO,6BAAOA,GAAP,IAAc1R,SAAS,EAAOE,aAAc,QAIvD,OADA,EAAKgP,SAAS,CAAEzM,cAAeyb,IACxBA,G,EAGXrP,YAAc,SAACE,EAAKkC,GAChB,EAAK/B,SAAS,EAAK2O,cAAc,WAC7B,IAAIiV,EAA0B,GACR,EAAKJ,kBACXplB,SAAQ,SAAAoE,GACpBohB,EAAwBphB,EAAM5R,KAAO,EAAK+qB,mBAAmBnZ,EAAM5R,QAEvE,EAAKoP,SAAS,CACV6jB,iBAAkBD,IACnB,kBAAM7hB,EAAGlC,U,EAIpB1Q,OAAS,WAAO,IAAD,EACwC,EAAKC,MAAhD0zB,EADG,EACHA,UAAWG,EADR,EACQA,OAAQ5wB,EADhB,EACgBA,YAAayU,EAD7B,EAC6BA,OAD7B,EAEsD,EAAKvX,MAA9DgE,EAFG,EAEHA,cAAe+vB,EAFZ,EAEYA,gBAAiBC,EAF7B,EAE6BA,qBAExC,OACI,kBAAC,IAAM5hB,SAAP,KACI,yBAAKzC,UAAU,2BACX,wBAAIA,UAAU,0BAAd,aAEJ,kBAACiD,GAAA,EAAD,CAAMC,WAAS,EAACE,QAAQ,SAASC,WAAW,aAAaqL,aAAa,aAAavL,QAAS,GACvFihB,GAAmB/vB,EAAcwJ,QAAO,SAAAyF,GAAK,OAAIA,EAAMzR,UAAQkI,KAAI,SAAAuJ,GAAK,MAAkB,gCAAdA,EAAM5R,KAAuD,kBAAd4R,EAAM5R,IAC9H,kBAACuR,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,WAAY5R,IAAK4R,EAAM5R,KACxC,kBAAC,GAAD,CACQb,MAAOyS,EAAMzS,MACbD,GAAI,iBACJc,IAAK4R,EAAM5R,IACX0W,SH9MP,SG8MiBR,EACVnE,cAAeH,EAAM3R,YAAc,WACnC+R,UAAWJ,EAAM1R,SAAW0R,EAAMxR,aAClCgI,MAAOsqB,EAAgB9gB,EAAM5R,KAC7BgP,SAAU,SAACC,GAAD,OAAS,EAAKD,SAAS4C,EAAM5R,IAAKiP,IAC5CiD,QAAS,SAACD,GAAD,OAAO,EAAK7C,UAAS,SAACC,GAAD,MAAgB,CAC1C1M,cAAe0M,EAAU1M,cAAc0F,KAAI,SAACiE,GAAD,OACvCA,EAAItM,MAAQ4R,EAAM5R,KAAOsM,EAAIpM,QAC3B+L,OAAO4S,OAAOvS,EAAK,CAACpM,SAAS,EAAOE,aAAc,KAClDkM,UAGdkP,UAAyB,eAAd5J,EAAM5R,IAAuB,YAAc,MAI/C,gCAAd4R,EAAM5R,IACH,kBAACuR,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,WAAY5R,IAAK4R,EAAM5R,KHhO5C,QGiOKkW,GACG,yBAAK5H,UAAU,kBACX,kBAAC,GAAD,CACInP,MAAOyS,EAAMzS,MACbsX,QAASic,EAAgB9gB,EAAM5R,KAC/BwW,SAAU,SAACvH,GACP,EAAKD,SAAS4C,EAAM5R,IAAKiP,GACzB,EAAK2jB,qBAGb,kBAACpV,GAAA,EAAD,CAAYhG,QAAQ,MAChB,+CACClY,EAASe,gBAAgBkC,UAAUE,uBAMpD,kBAAC8O,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,WAAY5R,IAAK4R,EAAM5R,KACxC,yBAAKsO,UAAU,oBACX,kBAAC,GAAD,CACI9I,MAAOoM,EAAM1R,QACb8R,UAAWJ,EAAMxR,aACjBlB,GAAG,oBACHC,MAAOyS,EAAMzS,MACbmP,UAAU,uBACV0K,UAAQ,EACRH,QAASpX,EACT2G,MAAOsqB,EAAgB9gB,EAAM5R,KAC7B+Y,aAAc,SAAC9J,GAAD,OAAS,EAAKD,SAAS4C,EAAM5R,IAAKiP,IAChDgK,OAAQ,SAAChH,GAAD,OAAO,EAAK7C,UAAS,SAACC,GAAD,MAAgB,CACzC1M,cAAe0M,EAAU1M,cAAc0F,KAAI,SAACiE,GAAD,OACvCA,EAAItM,MAAQ4R,EAAM5R,KAAOsM,EAAIpM,QAC3B+L,OAAO4S,OAAOvS,EAAK,CAACpM,SAAS,EAAOE,aAAc,KAClDkM,kBHnQtB,QG4QX4J,GAA2Bwc,IAAoBC,GAC5C,yBAAKrkB,UAAU,qCACX,4BAAQA,UAAU,2BAA2BC,QAAS,kBAAM,EAAKQ,YAAY,KAAMsjB,KAAnF,QAGA,4BAAQ/jB,UAAU,2BAA2BC,QAAS,kBAAM,EAAKQ,aAAY,EAAOmjB,KAApF,UAGA,4BAAQ5jB,UAAU,0BAA0BC,QAAS,SAAC0D,GAAD,OAAO,EAAK6gB,eAAe7gB,KAAhF,iBHnRK,SGwRZiE,GAA4Bwc,IAAoBC,GAC7C,yBAAKrkB,UAAU,mBAAmB+H,MAAO,CAAE6c,UAAW,SAClD,4BAAQ5kB,UAAU,2BAA2BC,QAAS,kBAAM,EAAKQ,aAAY,EAAOmjB,KAApF,UAGA,4BAAQ5jB,UAAU,0BAA0BC,QAAS,SAAC0D,GAAD,OAAO,EAAK8gB,aAAa9gB,KAA9E,SAKP0gB,GACG,yBAAKrkB,UAAU,qCACX,yBAAKA,UAAU,eACf,kBAAC,GAAD,CAASwC,KAAM6hB,EAAsBvgB,YAAY,IACjD,yBAAK9D,UAAU,kB,YAvSK+D,IAAMlU,WCJ7Bg1B,G,4MACjBpV,aAAe,CACX4U,sBAAsB,G,EAG1Bh0B,M,gBAAa,EAAKof,c,EAElBqV,eAAiB,SAACnhB,EAAG/S,GAGjB,OAFA+S,EAAEgC,iBACF,EAAK7E,SAAS,CAACujB,sBAAsB,IAC9BxW,GAAUpR,eAAe,EAAKvM,MAAMoL,WAAY1K,GAClDmH,MAAK,SAAAR,GACCA,GACC,EAAKuJ,SAAS,CACVujB,sBAAsB,IACvB,WAEC,EAAKn0B,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAO,wCAInB,EAAKX,MAAM4zB,QAAO,SAI7B7hB,OAAM,SAAA9K,GAAG,OAAI,EAAK+K,YAAY/K,O,EAGvC+K,YAAc,SAAC/K,GACPA,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,QAAkC,MAAxBhL,EAAIC,SAAS+K,OAC3D,EAAKrB,SAAS,CACVujB,sBAAsB,IACvB,WAEC,EAAKn0B,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAOsG,EAAIC,SAASY,KAAKoK,aAOzC,EAAKtB,SAAS,CACVujB,sBAAsB,IACvB,WAEC,EAAKn0B,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAO,0C,EAQ/BZ,OAAS,WAAO,IAAD,EACqB,EAAKC,MAA7B0zB,EADG,EACHA,UAAWpnB,EADR,EACQA,SACX6nB,EAAyB,EAAKh0B,MAA9Bg0B,qBAER,OACI,yBAAKrkB,UAAU,uBACX,yBAAKA,UAAU,oBACX,yBAAKE,IAAKgf,KAAalf,UAAU,cAAcI,IAAI,GAAGnN,MAAM,OAC5D,kBAACic,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,kBAAkBhP,EAASe,gBAAgBkC,UAAUnB,eACxF,kBAACoc,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,gBAAgBxD,EAAQ,OAE7D6nB,EAeE,yBAAKrkB,UAAU,qCACX,yBAAKA,UAAU,eACf,kBAAC,GAAD,CAASwC,KAAM6hB,EAAsBvgB,YAAY,IACjD,yBAAK9D,UAAU,gBAjBnB,yBAAKA,UAAU,8BACX,4BACIA,UAAU,2BACVC,QAAS,kBAAM2jB,GAAU,KAF7B,UAKA,4BACI5jB,UAAU,wCACVC,QAAS,SAAC0D,GAAD,OAAO,EAAKmhB,eAAenhB,EAAGnH,EAAS5L,MAE/C,a,YAvFYmT,IAAMlU,W,oBCC1Bk1B,G,4MACjBtV,aAAe,CACXuV,aAAc,KACdC,wBAAwB,EACxBZ,sBAAsB,G,EAG1Bh0B,M,gBAAY,EAAKof,c,EAEjByV,eAAiBnhB,IAAMM,Y,EAEvB8gB,aAAe,SAACxhB,GAAD,OAAO,EAAK7C,SAAS,CAAEkkB,aAAcrhB,EAAEgB,OAAOygB,MAAM,M,EAEnEC,aAAe,SAAC1Z,GAAD,OAAWA,EAAMhH,OAAO7K,MAAQ,I,EAE/C2G,YAAc,SAACE,EAAKkC,GAAN,OAAa,EAAK/B,SAAS,EAAK2O,cAAc,kBAAM5M,EAAGlC,O,EAErE2kB,gBAAkB,SAAC3hB,GACfA,EAAEgC,iBACF,EAAK7E,SAAS,CAACujB,sBAAsB,IAFhB,MAG0B,EAAKh0B,MAA9C20B,EAHe,EAGfA,aAAcC,EAHC,EAGDA,uBAEhBjtB,EAAO,IAAIutB,SAGf,OAFAvtB,EAAKwtB,OAAO,6BAA8BR,GAC1ChtB,EAAKwtB,OAAO,wCAAyCP,GAC9CpX,GAAUxR,YAAY,EAAKnM,MAAMoL,WAAYtD,GACnDD,MAAK,SAAAR,IACCA,GAAe,IAARA,IACN,EAAKuJ,SAAS,CACVujB,sBAAsB,IACvB,WAEC,EAAKn0B,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAME,KACN/R,MAAK,UAAK0G,EAAL,oCAIjB,EAAKkJ,aAAY,EAAO,EAAKvQ,MAAM4zB,cAI9C7hB,OAAM,SAAA9K,GAAG,OAAI,EAAK+K,YAAY/K,O,EAGnC+K,YAAc,SAAC/K,GACX,QAAO,GACH,KAAKA,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,QAAkC,MAAxBhL,EAAIC,SAAS+K,OAC5D,EAAKrB,SAAS,CACVujB,sBAAsB,IACvB,WACC,EAAKn0B,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAOsG,EAAIC,SAASY,KAAKoK,OAAOqjB,uBAKhD,MACJ,KAAKtuB,GAAOA,EAAIC,UAAYD,EAAIC,SAAS+K,QAAkC,MAAxBhL,EAAIC,SAAS+K,OAC5D,EAAKrB,SAAS,CACVujB,sBAAsB,IACvB,WAEC,EAAKn0B,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAM,wGAKtB,MACJ,KAAMsG,EAAIgL,OACN,EAAKrB,SAAS,CACVujB,sBAAsB,IACvB,WAEC,EAAKn0B,MAAMse,gBAEH,kBAAC,GAAD,CACI9L,KAAMC,KACN9R,MAAO,oCAKvB,MACJ,QAAS,S,EAIjBZ,OAAS,WAAO,IAAD,EAC4D,EAAKI,MAApE20B,EADG,EACHA,aAAcC,EADX,EACWA,uBAAwBZ,EADnC,EACmCA,qBADnC,EAEmB,EAAKn0B,MAA3B6zB,EAFG,EAEHA,OAAQH,EAFL,EAEKA,UAEhB,OACI,kBAAC,IAAMnhB,SAAP,KACI,yBAAKzC,UAAU,0BAA0B+H,MAAO,CAAC2d,OAAQ,mBACrD,wBAAI1lB,UAAU,0BAAd,aAEJ,yBAAKA,UAAU,0BAA0B+H,MAAO,CAAC4d,UAAW,UACxD,kBAACzW,GAAA,EAAD,CAAYhG,QAAQ,MAApB,kEAGA,uBACIlJ,UAAU,0CACV4lB,KAAI,UAAK3vB,IAA8BoP,MAAM,KAAK,GAA9C,aAAqDpP,IAA8BoP,MAAM,KAAK,GAA9F,gCAFR,qBAKA,kBAAC6J,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,WAAW+H,MAAO,CAAC6c,UAAW,SAAjE,kCAGA,yBAAK5kB,UAAU,eACX,2BAAOqX,QAAQ,6BACX,0BACIrX,UAAU,2BADd,UAGA,2BACI6F,IAAK,EAAKqf,eACVW,OAAO,OACPj1B,GAAG,4BACHyX,KAAK,OACL3H,SAAU,EAAKykB,aACfllB,QAAS,EAAKolB,gBAGrBL,GAAgB,kBAAC9V,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,aAC/CglB,EAAa7qB,KACd,8BACI,yBAAK+F,IAAK0C,KAAaxC,IAAI,GAAGnN,MAAM,UAIhD,yBAAK+M,UAAU,4BACX,kBAAC,GAAD,CACInP,MAAOG,EAASe,gBAAgBkC,UAAUI,cAAcC,SAASuJ,QAAO,SAAAG,GAAG,MAAgB,gCAAZA,EAAItM,OAAuC,GAAGb,MAC7HsX,QAAS8c,EACT/c,SAAU,SAACvH,GAAD,OAAS,EAAKG,SAAS,CAACmkB,uBAAwBtkB,OAE9D,kBAACuO,GAAA,EAAD,CAAYhG,QAAQ,MAChB,+CACClY,EAASe,gBAAgBkC,UAAUE,sBAG1CkwB,EAaE,yBAAKrkB,UAAU,qCACX,yBAAKA,UAAU,eACf,kBAAC,GAAD,CAASwC,KAAM6hB,EAAsBvgB,YAAY,IACjD,yBAAK9D,UAAU,gBAfvB,yBAAKA,UAAU,qCACX,4BAAQA,UAAU,2BAA2BC,QAAS,kBAAM,EAAKQ,YAAY,KAAMsjB,KAAnF,QAGA,4BAAQ/jB,UAAU,2BAA2BC,QAAS,kBAAM,EAAKQ,aAAY,EAAOmjB,KAApF,UAGA,4BAAQ5jB,UAAU,0BAA0BC,QAAS,SAAC0D,GAAD,OAAO,EAAK2hB,gBAAgB3hB,IAAIyE,UAAW4c,GAAhG,kB,YA9JkBjhB,IAAMlU,W,6FCiB3Bi2B,G,4MACnBrW,aAAe,CACbG,UAAU,EACVmW,iBAAkB,GAClBC,cAAc,EACdC,aAAc,GACdC,sBAAuB,GACvBC,6BAA6B,EAC7BC,eACEp1B,EAASe,gBAAgBwB,WAAWQ,gBAAgBC,kBACtDqyB,kBAAkB,EAClBrB,aAAc,KACdL,iBAAkB,KAClB2B,uBAAuB,EACvBC,yBAAyB,EACzBhxB,WAAY,EAAKrF,MAAMqF,WACvBixB,gBAAgB,EAChBC,sBAAsB,EACtB1F,kBAAmB,KACnB2F,yBAAyB,EACzBC,qBAAsB,GACtBC,aAAc,KACdC,SAAU,M,EAGZ3B,eAAiBnhB,IAAMM,Y,EACvBwiB,SAAW9iB,IAAMM,Y,EACjBuiB,aAAe7iB,IAAMM,Y,EAErBhU,M,gBAAa,EAAKof,c,EAElBnP,mBAAqB,SAACC,GAOpB,OALEA,EAAUC,sBAAwB,EAAKtQ,MAAMsQ,sBACV,IAAnC,EAAKtQ,MAAMsQ,qBAEX,EAAKC,YAAY,MAAM,EAAO,EAAKvQ,MAAM0P,UAEnC,GACN,KAAMW,EAAUhL,aAAe,EAAKrF,MAAMqF,YACxCgL,EAAU8H,OAAS,EAAKnY,MAAMmY,OAC7B,EAAKhY,MAAMuf,WACZ,EAAK1f,MAAMmY,MACX,EAAKnY,MAAMqF,aTzDgB,wBS0D1B,EAAKrF,MAAM0X,QTxDiB,0BSyD3B,EAAK1X,MAAM0X,QACb,EAAK9G,SACH,CACE6jB,iBAAkB,EAAKz0B,MAAMmY,KAC7B9S,WAAY,EAAKrF,MAAMqF,WACvBqa,UAAU,EACV8W,yBAGmB,IAFjB,EAAKx2B,MAAMqF,WAAX,gBAAyCsI,QACvC,SAACyF,GAAD,OAAWA,EAAM1S,KAAO,EAAKV,MAAMmY,KAAX,qBACxB,GAAGye,UAIT,WACM,EAAKz2B,MAAMq2B,yBACb,EAAK5lB,SAAS,CACZ6lB,qBAAsB,EAAKz2B,MAAMmY,KAAX,sBAG1B,EAAKic,qBAGT,MACF,KAAM/jB,EAAUhL,aAAe,EAAKrF,MAAMqF,aACvC,EAAKlF,MAAMuf,WACZ,EAAK1f,MAAMqF,aACV,EAAKrF,MAAM0X,SAAWuX,IACrB,EAAKjvB,MAAM0X,SAAWwX,IACxB,EAAK/uB,MAAM+1B,eAAelnB,SAAQ,SAACoE,GACjC,EAAKxC,UAAS,SAACC,GAAD,MAAgB,CAC5B4jB,iBAAiB,6BACZ5jB,EAAU4jB,kBADC,mBAEbrhB,EAAM5R,IAAM,EAAK+qB,mBAAmBnZ,EAAM5R,cAIjD,IAAIq1B,EAAgB,EAAK72B,MAAMqF,WAAX,gBAAyCsI,QAC3D,SAACuN,GAAD,MAAkB,QAAVA,EAAGxa,MAEb,EAAKkQ,SACH,CACEvL,WAAW,6BACN,EAAKrF,MAAMqF,YADN,IAERyxB,gBAAiBD,IAEnBnX,UAAU,IAEZ,kBAAM,EAAK0U,qBAEb,MACF,KAAM/jB,EAAUhL,aAAe,EAAKrF,MAAMqF,YACxCgL,EAAU2hB,YAAc,EAAKhyB,MAAMgyB,YAClC,EAAK7xB,MAAMuf,WACZ,EAAK1f,MAAMqF,YACX,EAAKrF,MAAMgyB,WT7Ga,qBS8GxB,EAAKhyB,MAAM0X,OACX,EAAK9G,SAAS,CACZigB,kBAAmB,EAAK7wB,MAAMgyB,UAC9B3sB,WAAY,EAAKrF,MAAMqF,WACvBqa,UAAU,IAEZ,MACF,QACE,S,EAIN6M,mBAAqB,SAAC/qB,GACpB,OAAQA,GACN,IAAK,4BACH,OAAO,EACT,QACE,MAAO,K,EAIbgP,SAAW,SAAChP,EAAKoI,GACf,EAAKgH,UAAS,SAACC,GAAD,MAAgB,CAC5B4jB,iBAAiB,6BACZ5jB,EAAU4jB,kBADC,mBAEbjzB,EAAMoI,S,EAKbmtB,gBAAkB,SAACr2B,GACjB,GAAW,QAAPA,EAAc,CAChB,IAAI+wB,EAAW,EAAKtxB,MAAMkF,WAAW6qB,UAAUviB,QAC7C,SAACqpB,GAAD,OAAUA,EAAKC,oBAAsBv2B,KAEvC,EAAK8P,SAAS,oBAAqB9P,GACnC,EAAK8P,SACH,YACAihB,EAAS3V,OAAS,EAAI2V,EAAS,GAAGyF,UAAY,IAEhD,EAAK1mB,SAAS,SAAU,IACxB,EAAKA,SAAS,eAAgB,IAC9B,IAAIqmB,EAAgB,EAAK12B,MAAMkF,WAAX,gBAAyCsI,QAC3D,SAACuN,GAAD,MAAkB,QAAVA,EAAGxa,MAGb,EAAKkQ,SAAS,CACZqlB,6BAA6B,EAC7BI,wBAAyB5E,EAAS3V,OAAS,EAC3Cwa,gBAAgB,EAChBR,cAAc,EACdD,iBAAkB,GAClBE,aAAc,GACd1wB,WAAW,6BACN,EAAKlF,MAAMkF,YADN,IAERyxB,gBAAiBD,IAEnBN,sBAAsB,IAExB,EAAKnC,oB,EAITa,aAAe,SAACxhB,GAAD,OAAO,EAAK7C,SAAS,CAAEkkB,aAAcrhB,EAAEgB,OAAOygB,MAAM,M,EAEnEC,aAAe,SAAC1Z,GAAD,OAAWA,EAAMhH,OAAO7K,MAAQ,I,EAE/CoI,YAAc,SAAC/K,GACb,GACEA,GACAA,EAAIC,UACJD,EAAIC,SAAS+K,QACW,MAAxBhL,EAAIC,SAAS+K,OACb,CACA,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,OAC3BA,EAAOilB,QACT,EAAKT,aAAaniB,QAAQ6iB,eAAe,CACvCC,SAAU,SACVC,MAAO,UAGX,IAAIpX,EAAa,EAAK/f,MAAM+1B,eAAersB,KAAI,SAACuJ,GAqB9C,MApBc,WAAVA,GACF,EAAKsjB,aAAaniB,QAAQ6iB,eAAe,CACvCC,SAAU,SACVC,MAAO,UAGG,cAAVlkB,GACF,EAAKujB,SAASpiB,QAAQ6iB,eAAe,CACnCC,SAAU,SACVC,MAAO,WAIiC,IAA1CvoB,KAAEoR,QAAQpR,KAAErB,KAAKwE,GAASkB,EAAM5R,KAAhC,6BAES4R,GAFT,IAGM1R,SAAS,EACTE,aAAcmN,KAAEqR,OAAOlO,EAAQkB,EAAM5R,OAJ3C,6BAMS4R,GANT,IAMgB1R,SAAS,EAAOE,aAAc,QAGlD,QAAQ,GACN,KAAK,EAAKzB,MAAMo2B,sBACdrkB,EAAOC,eAAe,uBACmB,OAArCD,EAAO,uBAAuB,GAChC,EAAKtB,SACH,CACEklB,cAAc,EACdQ,gBAAgB,EAChBjxB,WAAW,6BACN,EAAKlF,MAAMkF,YADN,IAERyxB,gBAAiB,EAAK32B,MAAMkF,WAAX,gBAEfsI,QAAO,SAACuN,GAAD,MAAkB,QAAVA,EAAGxa,QAEtBq1B,aAAc7jB,EAAO,uBACrBgkB,eAAgBhW,EAChBuU,iBAAiB,6BACZ,EAAKt0B,MAAMs0B,kBADA,IAEdwC,kBAAmB,OAKzB,EAAKrmB,SAAS,CACZslB,eAAgBhW,IAIpB,MACF,KAAK,EAAK/f,MAAMq2B,wBACd,EAAK5lB,SAAS,CACZmlB,aAAc7jB,EAAOqlB,KACrBnB,uBAAuB,EACvBF,eAAgBhW,IAElB,MACF,QACE,EAAKtP,SAAS,CAAEslB,eAAgBhW,UAKpC,EAAKlgB,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAMC,KACN9R,MAAO,qCAIb,EAAKiQ,SAAS,CACZwlB,uBAAuB,K,EAI3B7lB,YAAc,SAAC7P,EAAI+P,EAAKsc,GACtB,EAAKnc,SAAS,EAAK2O,cAAc,WAC/B,IAAIK,EAAkB,EAAKwU,kBACvBI,EAA0B,GAC9B5U,EAAgB5Q,SAAQ,SAACoE,GACvBohB,EAAwBphB,EAAM5R,KAAO,EAAK+qB,mBAAmBnZ,EAAM5R,QAErE,EAAKoP,SACH,CACE6jB,iBAAkBD,EAClB9U,UAAU,IAEZ,kBAAOhf,EAAKqsB,EAASrsB,EAAI+P,GAAOsc,EAAStc,U,EAK/CM,eAAiB,SAAC+O,EAAWC,GAC3B,IACIjY,EACF,EAAK9H,MAAM0X,SAAWwX,GAClBngB,KAAE8d,KAAK,EAAK1sB,MAAM2f,GAAY,CAAC,SAAU,iBACzC,EAAK3f,MAAM2f,GACbnb,EAAQ,EAAKxE,MAAM4f,GAiCvB,GAhCApb,EAAMqK,SAAQ,SAACkM,EAAI9E,GACjB,QAAQ,GACN,KAAMtO,EACN,KAAKA,IAA0B,IAAlBoT,EAAGzZ,YAAwC,KAAjBqG,EAAKoT,EAAG1Z,KAC7C0Z,EAAGxZ,SAAU,EAEE,WAAXwZ,EAAG1Z,KACL,EAAKk1B,aAAaniB,QAAQ6iB,eAAe,CACvCC,SAAU,SACVC,MAAO,UAGI,cAAXpc,EAAG1Z,KACL,EAAKm1B,SAASpiB,QAAQ6iB,eAAe,CACnCC,SAAU,SACVC,MAAO,UAIXpc,EAAGtZ,aAAe,iBAKtB,EAAKgP,SAAL,gBACGmP,EADH,uBAEO,EAAK5f,MAAM4f,GAAY2M,MAAM,EAAGtW,IAFvC,CAGI3I,OAAO4S,OAAO,GAAI,EAAKlgB,MAAM4f,GAAY3J,GAAQ8E,IAHrD,aAIO,EAAK/a,MAAM4f,GAAY2M,MAAMtW,EAAQ,WAK5C,EAAKjW,MAAMq2B,yBACyB,KAApC,EAAKr2B,MAAMs2B,qBAaX,OAAQrlB,QAAQrC,KAAEsC,KAAK1M,EAAO,CAAC,WAAW,KAX1C,EAAKiM,SACH,CACEmlB,aAAc,iBACdK,uBAAuB,IAEzB,WAEE,OADc,IACShlB,QAAQrC,KAAEsC,KAAK1M,EAAO,CAAC,WAAW,S,EAQjE6yB,0BAA4B,WAC1B,GAAoC,KAAhC,EAAKr3B,MAAM01B,iBAGR,GACLzkB,QACErC,KAAEsC,KAAK,EAAKlR,MAAMkF,WAAX,gBAA0C,CAC/C,OACA,EAAKlF,MAAM01B,oBAIf,EAAKjlB,SAAS,CAAEmlB,aAAc,yCARzB,CAWL,IAAI1wB,EAAa,EAAKlF,MAAMkF,WACxBoyB,EAAoB,CACtB/2B,GAAI,MACJuJ,KAAM,EAAK9J,MAAM01B,iBACjBe,SAAS,GAEXvxB,EAAU,gBAAoB8L,KAAKsmB,GACnC,EAAK7mB,SAAS,CACZvL,WAAYA,EACZywB,cAAc,EACdrB,iBAAiB,6BACZ,EAAKt0B,MAAMs0B,kBADA,IAEdwC,kBAAmB,MACnBC,UAAW,GACXC,OAAQ,GACRO,aAAc,KAEhBpB,gBAAgB,EAChBC,sBAAsB,EACtBN,6BAA6B,SAhC/B,EAAKrlB,SAAS,CAAEmlB,aAAc,oB,EAqClC4B,gBAAkB,SAACtyB,GACjB,GAAK,EAAK0L,eAAe,mBAAoB,kBAA7C,CAgBQ,IAAD,EAEH,EAAK5Q,MADDs0B,EADD,EACCA,iBAAkB4B,EADnB,EACmBA,wBAAyBE,EAD5C,EAC4CA,qBAEjD,EAAK3lB,SAAS,CAAEwlB,uBAAuB,IACvC,IAAI3E,EAAW,IAAI4D,SACnB,QAAQ,GACN,KAAMkB,EACJ,GAAIF,EAAyB,CAC3B,IAAIuB,EAC8B,IAAhCvyB,EAAW6qB,UAAUpU,OACjBzW,EAAW6qB,UAAUviB,QACnB,SAACG,GAAD,OACEA,EAAG,oBACH2mB,EAAgB,qBAClB,GAAG/zB,GACL,GAON,OALAqO,KAAErB,KAAK+mB,GAAkBzlB,SAAQ,SAACxN,GACF,KAA1BizB,EAAiBjzB,IACnBiwB,EAAS6D,OAAT,mBAA4B9zB,EAA5B,KAAoCizB,EAAiBjzB,OAGlDmc,GACJjS,iDACC,EAAK1L,MAAMqF,WAAW3E,GACtBk3B,EACAnG,GAED5pB,MAAK,SAACR,GACDA,GACF,EAAKuJ,SACH,CACEwlB,uBAAuB,IAEzB,WAEE,EAAKp2B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAME,KACN/R,MAAO,iCAGX,EAAK4P,YACH,EAAKvQ,MAAMqF,YACX,EACA,EAAKrF,MAAMmf,gBAMpBpN,OAAM,SAAC9K,GAAD,OAAS,EAAK+K,YAAY/K,MAOnC,OALA8H,KAAErB,KAAK+mB,GAAkBzlB,SAAQ,SAACxN,GACF,KAA1BizB,EAAiBjzB,IACnBiwB,EAAS6D,OAAT,mBAA4B9zB,EAA5B,KAAoCizB,EAAiBjzB,OAGlDmc,GACJlS,8BAA8B,EAAKzL,MAAMqF,WAAW3E,GAAI+wB,GACxD5pB,MAAK,SAACR,GACDA,GACF,EAAKuJ,SACH,CACEwlB,uBAAuB,IAEzB,WACE,EAAKp2B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAME,KACN/R,MAAO,iCAGX,EAAK4P,YACH,EAAKvQ,MAAMqF,YACX,EACA,EAAKrF,MAAMmf,gBAMpBpN,OAAM,SAAC9K,GAAD,OAAS,EAAK+K,YAAY/K,MAEvC,KAAKsvB,EAiBH,OAhBAxnB,KAAErB,KAAK+mB,GACJ9mB,QACC,SAACnM,GAAD,MACU,sBAARA,GAAyD,KAA1BizB,EAAiBjzB,MAEnDwN,SAAQ,SAACxN,GACRiwB,EAAS6D,OAAT,mBAA4B9zB,EAA5B,KAAoCizB,EAAiBjzB,OAEzDiwB,EAAS6D,OACP,4CACA,EAAKn1B,MAAM01B,kBAEbpE,EAAS6D,OACP,qDACA,EAAKt1B,MAAMqF,WAAW3E,IAEjBid,GACJlS,8BAA8B,EAAKzL,MAAMqF,WAAW3E,GAAI+wB,GACxD5pB,MAAK,SAACR,GACDA,GACF,EAAKuJ,SACH,CACEwlB,uBAAuB,IAEzB,WAEE,EAAKp2B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAME,KACN/R,MAAO,iCAGX,EAAK4P,YACH,EAAKvQ,MAAMqF,YACX,EACA,EAAKrF,MAAMmf,gBAMpBpN,OAAM,SAAC9K,GAAD,OAAS,EAAK+K,YAAY/K,MACrC,QACE,YAhJN,CAAiE,IAAD,iBAC7C,EAAK9G,MAAM+1B,gBADkC,IAC9D,2BAA4C,CAAC,IAApC7iB,EAAmC,QACzB,cAAbA,EAAK7R,KAAuB6R,EAAK3R,SACnC,EAAKi1B,SAASpiB,QAAQ6iB,eAAe,CACnCC,SAAU,SACVC,MAAO,UAGM,WAAbjkB,EAAK7R,KAAoB6R,EAAK3R,SAChC,EAAKg1B,aAAaniB,QAAQ6iB,eAAe,CACvCC,SAAU,SACVC,MAAO,WAXiD,iC,EAqJlEO,oBAAsB,SAACxyB,GAAgB,IAAD,EAMhC,EAAKlF,MAJPs0B,EAFkC,EAElCA,iBACAK,EAHkC,EAGlCA,aACAqB,EAJkC,EAIlCA,iBACAI,EALkC,EAKlCA,qBAGF,GAAK,EAAKxlB,eAAe,mBAAoB,kBAI3C,OADA,EAAKH,SAAS,CAAEwlB,uBAAuB,KAC/B,GACN,KAAMG,EACJ,IAAI9E,EAAWpsB,EAAW6qB,UAAUviB,QAClC,SAACG,GAAD,OACEA,EAAG,oBAA0B2mB,EAAgB,qBAC/C,GACE3sB,EAAO,IAAIutB,SACf,OAAI5D,GACF3pB,EAAKwtB,OAAO,mCAAoCR,GAChDhtB,EAAKwtB,OAAO,8BAA+B7D,EAAS/wB,IACpDoH,EAAKwtB,OACH,sCACAa,GAEKxY,GACJjS,iDACCrG,EAAW3E,GACX+wB,EAAS/wB,GACToH,GAEDD,MAAK,SAACR,GACDA,GACF,EAAKuJ,SACH,CACEwlB,uBAAuB,IAEzB,WAEE,EAAKp2B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAME,KACN/R,MAAK,UAAK0G,EAAIyU,OAAT,iCAGT,EAAKvL,YACH,EAAKvQ,MAAMqF,YACX,EACA,EAAKrF,MAAMmf,gBAMpBpN,OAAM,SAAC9K,GACN,GACEA,GACAA,EAAIC,UACJD,EAAIC,SAAS+K,QACW,MAAxBhL,EAAIC,SAAS+K,OACb,CACA,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,OAE/B,EAAKlS,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAMC,KACN9R,MAAOuR,EAAO4lB,+BAKlB,EAAK93B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAMC,KACN9R,MACE,qGAKR,EAAKiQ,SAAS,CACZwlB,uBAAuB,SAI7BtuB,EAAKwtB,OAAO,sBAAuBb,EAAgB,WACnD3sB,EAAKwtB,OACH,8BACAb,EAAgB,mBAElB3sB,EAAKwtB,OAAO,mCAAoCR,GAChDhtB,EAAKwtB,OACH,sCACAa,GAEKxY,GACJlS,8BAA8BpG,EAAW3E,GAAIoH,GAC7CD,MAAK,SAACR,GACDA,GACF,EAAKuJ,SACH,CACEwlB,uBAAuB,IAEzB,WAEE,EAAKp2B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAME,KACN/R,MAAK,UAAK0G,EAAIyU,OAAT,iCAGT,EAAKvL,YACH,EAAKvQ,MAAMqF,YACX,EACA,EAAKrF,MAAMmf,gBAMpBpN,OAAM,SAAC9K,GACN,GACEA,GACAA,EAAIC,UACJD,EAAIC,SAAS+K,QACW,MAAxBhL,EAAIC,SAAS+K,OACb,CACA,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,OAC/B,EAAKlS,MAAMsqB,WACT9pB,EADF,UAEK0R,EAAO4lB,yBAEZ,EAAK93B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAMC,KACN9R,MAAOuR,EAAO4lB,+BAKlB,EAAK93B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAMC,KACN9R,MACE,qGAKR,EAAKiQ,SAAS,CACZwlB,uBAAuB,QAKjC,KAAKG,EACH,IAAIwB,EAAkB,IAAI1C,SAyB1B,OAxBAtmB,KAAErB,KAAK+mB,GACJ9mB,QACC,SAACnM,GAAD,MACU,sBAARA,GAAyD,KAA1BizB,EAAiBjzB,MAEnDwN,SAAQ,SAACxN,GACRu2B,EAAgBzC,OAAhB,mBAAmC9zB,EAAnC,KAA2CizB,EAAiBjzB,OAEhEu2B,EAAgBzC,OACd,mCACAR,GAEFiD,EAAgBzC,OACd,sCACAa,GAEF4B,EAAgBzC,OACd,4CACA,EAAKn1B,MAAM01B,kBAEbkC,EAAgBzC,OACd,qDACA,EAAKt1B,MAAMqF,WAAW3E,IAEjBid,GACJlS,8BAA8BpG,EAAW3E,GAAIq3B,GAC7ClwB,MAAK,SAACR,GACDA,GACF,EAAKuJ,SACH,CACEwlB,uBAAuB,IAEzB,WAEE,EAAKp2B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAME,KACN/R,MAAK,UAAK0G,EAAIyU,OAAT,iCAGT,EAAKvL,YACH,EAAKvQ,MAAMqF,YACX,EACA,EAAKrF,MAAMmf,gBAMpBpN,OAAM,SAAC9K,GACN,GACEA,GACAA,EAAIC,UACJD,EAAIC,SAAS+K,QACW,MAAxBhL,EAAIC,SAAS+K,OACb,CACA,IAAIC,EAASjL,EAAIC,SAASY,KAAKoK,OAE/BA,EAAOC,eAAe,2BACpB,EAAKnS,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAMC,KACN9R,MAAOuR,EAAM,0BAGnBA,EAAOC,eAAe,wBACpB,EAAKH,YAAY/K,QAGnB,EAAKjH,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAMC,KACN9R,MACE,qGAKR,EAAKiQ,SAAS,CACZwlB,uBAAuB,OAG/B,QACE,S,EAKR4B,kBAAoB,SAAC3yB,GAAgB,IAAD,EAEhC,EAAKlF,MADDs0B,EAD4B,EAC5BA,iBAAkBgC,EADU,EACVA,qBAAsBD,EADZ,EACYA,wBAE9C,GAAK,EAAKzlB,eAAe,mBAAoB,kBAEtC,CACL,EAAKH,SAAS,CAAEwlB,uBAAuB,IACvC,IAAIwB,EAC8B,IAAhCvyB,EAAW6qB,UAAUpU,OACjBzW,EAAW6qB,UAAUviB,QACnB,SAACG,GAAD,OACEA,EAAG,oBACH2mB,EAAgB,qBAClB,GAAG/zB,GACL,GACFoH,EAAO0uB,EACP,CACE/E,SAAS,6BACJgD,GADG,IAENtE,oBAAqBsG,KAGzB,CAAEhF,SAAS,gBAAMgD,IACrB,OAAO9W,GACJjS,iDACC,EAAK1L,MAAMqF,WAAW3E,GACtBk3B,EACA9vB,GAEDD,MAAK,SAACR,GACDA,GACF,EAAKuJ,SACH,CACEwlB,uBAAuB,IAEzB,WAEE,EAAKp2B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAME,KACN/R,MAAO,oCAGX,EAAK4P,YACH,EAAKvQ,MAAMqF,YACX,EACA,EAAKrF,MAAMmf,gBAMpBpN,OAAM,SAAC9K,GAAD,OAAS,EAAK+K,YAAY/K,Q,EAIvC4E,oBAAsB,SAACosB,EAAe5yB,GAEpC,OADA,EAAKuL,SAAS,CAAEwlB,uBAAuB,IAChCzY,GACJ9R,oBAAoBxG,EAAW3E,GAAIu3B,EAAa,mBAChDpwB,MAAK,SAACR,GACDA,GACF,EAAKuJ,SACH,CACEwlB,uBAAuB,IAEzB,WAEE,EAAKp2B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAME,KACN/R,MAAO,iCAGX,EAAK4P,YACH,EAAKvQ,MAAMqF,YACX,EACA,EAAKrF,MAAMmf,gBAMpBpN,OAAM,SAAC9K,GAEJA,GACAA,EAAIC,UACJD,EAAIC,SAAS+K,QACbhL,EAAIC,SAAS+K,OAIb,EAAKjS,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAMC,KACN9R,MAAO,8BAYb,EAAKiQ,SAAS,CACZwlB,uBAAuB,Q,EAK/BrqB,gBAAkB,SAACimB,EAAW3sB,GAE5B,OADA,EAAKuL,SAAS,CAAEwlB,uBAAuB,IAChCzY,GACJ5R,gBAAgB1G,EAAW3E,GAAIsxB,EAAUtxB,IACzCmH,MAAK,SAACR,GACDA,GACF,EAAKuJ,SACH,CACEwlB,uBAAuB,EACvB3B,iBAAkB,OAEpB,WAEE,EAAKz0B,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAME,KACN/R,MAAO,oCAGX,EAAK4P,YACH,EAAKvQ,MAAMqF,YACX,EACA,EAAKrF,MAAMmf,gBAMpBpN,OAAM,SAAC9K,GAEJA,GACAA,EAAIC,UACJD,EAAIC,SAAS+K,QACbhL,EAAIC,SAAS+K,OAIb,EAAKjS,MAAMse,gBACT,kBAAC,GAAD,CACE9L,KAAMC,KACN9R,MAAO,8BAYb,EAAKiQ,SAAS,CACZwlB,uBAAuB,Q,EAK/BhC,gBAAkB,WAChB,IAAIxU,EAAkB,EAAKzf,MAAM+1B,eAAersB,KAAI,SAACuJ,GAEnD,OADO,6BAAQA,GAAR,IAAe1R,SAAS,EAAOE,aAAc,QAItD,OADA,EAAKgP,SAAS,CAAEslB,eAAgBtW,IACzBA,G,EAGTsY,YAAc,SAACxgB,GACb,OAAQA,GACN,KAAKuX,GACL,ITx8B+B,wBSy8B7B,MAAO,gBACT,ITv8B6B,sBSw8B3B,MAAO,sBACT,KAAKC,GACH,MAAO,wBACT,ITz8B+B,wBS08B7B,MAAO,wBACT,ITz8B0B,mBS08BxB,MAAO,mBACT,IT58BuC,gCS68BrC,MAAO,wBACT,QACE,MAAO,K,EAIbiJ,SAAW,SAACzgB,GAAD,MAAY,CAACuX,GAAeC,IAAoBthB,SAAS8J,I,EAEpE0B,WAAa,SAAC3F,EAAG/S,GACf,IAAM8wB,EAAQ,EAAKrxB,MAAMkF,WAAX,gBAAyCwE,KAAI,SAACD,EAAO0Q,GAMjE,OALI1Q,EAAMlJ,KAAOA,GAAM+S,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,YACrD1P,EAAMopB,YAAa,EAEnBppB,EAAMopB,YAAa,EAEdppB,KAET,EAAKgH,SAAS,CAAEvL,WAAW,6BAAM,EAAKlF,MAAMkF,YAAlB,IAA8B,gBAAmBmsB,O,EAG7EzxB,OAAS,WAAO,IAAD,EAC6B,EAAKC,MAAvCsS,EADK,EACLA,KAAMoF,EADD,EACCA,OAAQhI,EADT,EACSA,QAAS+K,EADlB,EACkBA,OADlB,EAiBT,EAAKta,MAdP01B,EAHW,EAGXA,iBACAC,EAJW,EAIXA,aACAC,EALW,EAKXA,aACAG,EANW,EAMXA,eACAD,EAPW,EAOXA,4BACAE,EARW,EAQXA,iBACArB,EATW,EASXA,aACAL,EAVW,EAUXA,iBACA2B,EAXW,EAWXA,sBACA/wB,EAZW,EAYXA,WACAixB,EAbW,EAaXA,eACAzF,EAdW,EAcXA,kBACA2F,EAfW,EAeXA,wBACAC,EAhBW,EAgBXA,qBAEI2B,EAAa,CTp/Bc,wBAEL,mBADa,gCANR,yBS0/BjC,OACE,kBAAC,GAAD,CACE9lB,KAAMA,EACN3R,MAAO,EAAKu3B,YAAYxgB,GACxBD,QACE,yBAAK3H,UAAU,wBACZzK,GACCovB,IACC2D,EAAWxqB,SAAS8J,IACnB,kBAAC,IAAMnF,SAAP,KACE,yBAAKzC,UAAU,2BACb,wBAAIA,UAAU,0BAAd,aTlgCe,wBSogChB4H,GACC,yBAAK5H,UAAU,4BACb,kBAACkP,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,YAAnC,kBAGE0mB,EAKA,yBAAK1mB,UAAU,gCACb,yBAAKA,UAAU,4BACb,kBAAC,GAAD,CACEnP,MAAM,GACNiJ,MAAO6sB,EACP3mB,UAAU,gCACV0D,UAA4B,KAAjBuiB,GAAuBA,EAClCvlB,SAAU,SAACC,GAAD,OACR,EAAKG,SAAS,CAAE6lB,qBAAsBhmB,KAExCiD,QAAS,kBACP,EAAK9C,SAAS,CAAEmlB,aAAc,UAftC,kBAAC/W,GAAA,EAAD,CAAYhG,QAAQ,MACjByb,EAAgB,uBAsBvB/c,IAAWuX,IACXvX,IAAWwX,KACX,yBAAKpf,UAAU,4BACb,kBAACkP,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,YAAnC,4BAGCzK,GACC,kBAAC0N,GAAA,EAAD,CACEjD,UAAU,sBACVkD,WAAS,EACTC,QAAS,EACTC,QAAQ,cAEP7N,EAAU,gBAAoBwE,KAAI,SAACwJ,GAAD,OACjC,kBAACN,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,EAAG9R,IAAK6R,EAAK3S,IAC1B,4BACEoP,UACEuD,EAAK3S,KACL+zB,EAAgB,kBACZ,oDACA,6CAEN1kB,QAAS,kBAAM,EAAKgnB,gBAAgB1jB,EAAK3S,MAEzC,kBAACqZ,GAAA,EAAD,CAASpZ,MAAO0S,EAAKpJ,KAAM+P,UAAU,MAAMC,sBAAuB5G,EAAK2f,YACrE,wBAAI9Y,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAGJ,EAAK3S,MAAM2S,EAAKpJ,cAOtEqsB,GACA,yBAAKxmB,UAAU,gCACZgmB,EACC,yBAAKhmB,UAAU,4BACb,kBAAC,GAAD,CACEnP,MAAM,GACND,GAAI,qBACJkJ,MAAOisB,EACPriB,UAA4B,KAAjBuiB,GAAuBA,EAClCjmB,UAAU,qBACVU,SAAU,SAACC,GAAD,OACR,EAAKG,SAAS,CAAEilB,iBAAkBplB,KAEpCiD,QAAS,kBACP,EAAK9C,SAAS,CAAEmlB,aAAc,QAGlC,yBAAKjmB,UAAU,YACb,4BACEA,UAAU,oCACVC,QAAS,kBACP,EAAKa,SAAS,CACZklB,cAAc,EACdD,iBAAkB,GAClBE,aAAc,OAIlB,kBAACsC,GAAA,EAAD,CAAOvoB,UAAU,cAEnB,4BACEA,UAAU,oCACVC,QAAS,kBACP,EAAKynB,8BAGP,kBAACc,GAAA,EAAD,CAAOxoB,UAAU,gBAKvB,4BACEA,UAAU,qCACVC,QAAS,kBACP,EAAKa,SAAS,CAAEklB,cAAc,IAAQ,kBACpC,EAAK1B,uBAIT,8BACE,yBAAKpkB,IAAKuoB,KAASroB,IAAI,GAAGnN,MAAM,QAElC,8BACE,kBAACic,GAAA,EAAD,CAAYhG,QAAQ,MAApB,oBTlnCA,qBS4nCbtB,GTnoCkB,0BSmoCaA,GAC9B,yBAAK5H,UAAU,wBACb,yBAAK6F,IAAK,EAAKghB,WACf,kBAAC3X,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,YAAnC,mBAGA,yBAAKA,UAAU,oBACb,yBAAKE,IAAKwoB,KAAWz1B,MAAM,KAAKmN,IAAI,KACD,KAAlCukB,EAAgB,WAChBwB,GTzoCU,wBS0oCXve,EAgBE,yBAAK5H,UAAU,kCACZ,EAAK3P,MAAM+1B,eACTvoB,QAAO,SAACyF,GAAD,MAAyB,cAAdA,EAAM5R,OACxBqI,KAAI,SAACuJ,GAAD,OACH,kBAAC,IAAMb,SAAP,CAAgB/Q,IAAK4R,EAAM5R,KACzB,kBAAC,GAAD,CACEb,MAAM,GACNwX,KAAK,SACLzX,GAAI,qBACJkJ,MAAO6qB,EAAiBrhB,EAAM5R,KAC9BgS,UACEJ,EAAM1R,SAAW0R,EAAMxR,aAEzBkO,UAAU,uBACVU,SAAU,SAACC,GACT,EAAKD,SAAS,YAAaC,GAC3B,EAAKG,SAAS,CACZqlB,6BAA6B,KAGjCviB,QAAS,SAACD,GAAD,OACP,EAAK7C,UAAS,SAACC,GAAD,MAAgB,CAC5BqlB,eACErlB,EAAUqlB,eAAersB,KAAI,SAACiE,GAAD,OAC3BA,EAAItM,MAAQ4R,EAAM5R,KAAOsM,EAAIpM,QACzB+L,OAAO4S,OAAOvS,EAAK,CACjBpM,SAAS,EACTE,aAAc,KAEhBkM,YAKd,kBAACkR,GAAA,EAAD,CACEhG,QAAQ,KACRlJ,UACEsD,EAAM1R,QAAU,kBAAoB,QAGrC,eAvDX,yBAAKoO,UAAU,kCACb,kBAACkP,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,cAAnC,oBAEE,0CAAY2kB,EAAgB,UAA5B,cA0DN,yBAAK3kB,UAAU,gBAEjB,kBAACkP,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,mBACjC,+CACA,8BACGhP,EAASe,gBAAgBwB,WAAWM,oBAK5C+T,IAAWwX,IACV,kBAAC,IAAM3c,SAAP,KACE,yBAAKzC,UAAU,2BACb,kBAACkP,GAAA,EAAD,CAAYhG,QAAQ,MAApB,kEAIA,uBACElJ,UAAU,0CACV4lB,KAAI,UACF3vB,IAA8BoP,MAAM,KAAK,GADvC,aAGFpP,IAA8BoP,MAAM,KAAK,GAHvC,sCAFN,qBAUA,yBAAKrF,UAAU,8BACb,+JAKA,2KAMF,kBAACkP,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,YAAnC,kCAGA,yBAAKA,UAAU,eACb,2BAAOqX,QAAQ,8BACb,0BACErX,UACG2kB,EAAgB,kBAEb,0BADA,oCAHR,UASA,2BACE9e,IAAK,EAAKqf,eACVW,OAAO,OACPj1B,GAAG,6BACHyX,KAAK,OACLD,UAAWuc,EAAgB,kBAC7BjkB,SAAU,EAAKykB,aACfllB,QAAS,EAAKolB,gBAGE,OAAjBL,GACC,kBAAC9V,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,aAChCglB,EAAa7qB,KACd,8BACE,yBAAK+F,IAAKyoB,KAAiBvoB,IAAI,GAAGnN,MAAM,WAMlD,yBAAK+M,UAAU,4BACb,kBAAC,GAAD,CACEnP,MAAO,yCACPsX,QAASke,EACTne,SAAU,SAACvH,GAAD,OACR,EAAKG,SAAS,CAAEulB,iBAAkB1lB,OAGtC,kBAACsJ,GAAA,EAAD,CACEpZ,MACEG,EAASe,gBAAgBwB,WACtBO,mBAELoW,UAAU,MACVrK,QAAS,CAAE+oB,oBAAqB,YAEhC,yBAAK1oB,IAAK2oB,KAAUzoB,IAAI,GAAGnN,MAAM,QAEnC,yBAAK+M,UAAU,iBAIsB,KAA1C2kB,EAAgB,mBACf/c,IAAWuX,IACT,yBAAKnf,UAAU,sBACb,kBAACiD,GAAA,EAAD,CACEC,WAAS,EACTC,QAAS,EACTC,QAAQ,SACRsL,aAAa,UAEZ0X,EAAersB,KAAI,SAACuJ,GAAD,MACJ,8BAAdA,EAAM5R,IACJ,kBAAC,IAAM+Q,SAAP,CAAgB/Q,IAAK4R,EAAM5R,KACxB4R,EAAMzR,QACL,kBAACoR,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,YACnB,yBAAKuC,IAAK,EAAK+gB,eAEf,kBAAC,GAAD,CACE/1B,MAAOyS,EAAMzS,MACbD,GAAE,yBAAoB0S,EAAM5R,KAC5B+R,cACEH,EAAM3R,YAAc,WAEtB+R,UACEJ,EAAM1R,SAAW0R,EAAMxR,aAEzBgI,MAAO6qB,EAAiBrhB,EAAM5R,KAC9BgP,SAAU,SAACC,GACT,EAAKD,SAAS4C,EAAM5R,IAAKiP,IAE3BiD,QAAS,SAACD,GAAD,OACP,EAAK7C,UAAS,SAACC,GAAD,MAAgB,CAC5BqlB,eACErlB,EAAUqlB,eAAersB,KACvB,SAACiE,GAAD,OACEA,EAAItM,MAAQ4R,EAAM5R,KAClBsM,EAAIpM,QACA+L,OAAO4S,OAAOvS,EAAK,CACjBpM,SAAS,EACTE,aAAc,KAEhBkM,cAStB,kBAACiF,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAIF,EAAM,WAAY5R,IAAK4R,EAAM5R,KAC1C,yBAAKsO,UAAU,kBACb,kBAAC,GAAD,CACEnP,MACE,yCAEFsX,QAASwc,EAAiBrhB,EAAM5R,KAChCwW,SAAU,SAACvH,GACT,EAAKD,SACH,4BACAC,GAEF,EAAK2jB,qBAGT,kBAACra,GAAA,EAAD,CACEpZ,MACEG,EAASe,gBAAgBwB,WACtBO,mBAELoW,UAAU,MACVrK,QAAS,CAAE+oB,oBAAqB,YAEhC,yBAAK1oB,IAAK2oB,KAAUzoB,IAAI,GAAGnN,MAAM,gBT72ChC,0BSy3CxB2U,GACCrS,GACAovB,GACE,yBAAK3kB,UAAU,oBACb,yBACEE,IAAKgf,KACLlf,UAAU,cACVI,IAAI,GACJnN,MAAM,OAER,kBAACic,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,kBAE/BhP,EAASe,gBAAgBwB,WACtBI,4BAGP,kBAACub,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,gBAChC2kB,EAAgB,sBTz4CQ,kCS84ChC/c,GACC,yBAAK5H,UAAU,oBACb,yBACEE,IAAKgf,KACLlf,UAAU,cACVI,IAAI,GACJnN,MAAM,OAER,kBAACic,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,kBAAnC,4DTr5CgB,qBS25CnB4H,GAA+BmZ,GAAqBxrB,GACnD,yBAAKyK,UAAU,oBACb,yBACEE,IAAKgf,KACLlf,UAAU,cACVI,IAAI,GACJnN,MAAM,OAER,kBAACic,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,kBAChChP,EAASe,gBAAgBwB,WAAWK,wBAEvC,kBAACsb,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,gBAChC+gB,EAAiB,ST96CC,0BSk7CxBnZ,GACC,kBAAC,GAAD,CAAqBkhB,WAAYne,KAGvC/K,QAAS,SAACiD,GAAD,OAAQ,EAAKpC,YAAY,KAAMoC,EAAIjD,IAC5C8H,QAAS4e,EACT1e,OACE,yBAAK5H,UAAU,wBTz7CY,0BS07CxB4H,GTp7CgC,kCSq7CjCA,IACIrS,GAAcovB,GAAqB5D,IACnC,yBAAK/gB,UAAW,EAAKqoB,SAASzgB,GAAU,oCAAsC,oBAC5E,kBAAC,IAAMnF,SAAP,KACG,EAAK4lB,SAASzgB,IACf,4BACI5H,UAAU,2BACVC,QAAS,kBAAM0K,GAAO,ETl8CT,2BSg8CjB,QAMA,4BACE3K,UAAU,2BACVC,QAAS,kBAAM,EAAKQ,YAAY,MAAM,EAAOb,KAF/C,UTn8Ce,wBSy8CdgI,GACC,4BACE5H,UAAU,0BACVC,QAAS,kBAAM,EAAKioB,kBAAkB3yB,KAErC,QAGJqS,IAAWwX,IACV,4BACEpf,UAAU,0BACVoI,UACGuc,EAAgB,oBAChBK,EAEH/kB,QAAS,kBAAM,EAAK8nB,oBAAoBxyB,KAEvC,cAGJqS,IAAWuX,IACV,4BACEnf,UAAU,0BACVC,QAAS,kBAAM,EAAK4nB,gBAAgBtyB,IACpC6S,UAAWuc,EAAgB,mBAE1B,iBTj+CY,0BSo+ChB/c,GACC,4BACE5H,UAAU,wCACVC,QAAS,kBACP,EAAKlE,oBAAoB4oB,EAAkBpvB,KAG5C,UTz+CO,qBS4+CXqS,GACC,4BACE5H,UAAU,wCACVC,QAAS,kBACP,EAAKhE,gBAAgB8kB,EAAmBxrB,KAGzC,YTp/CoB,kCS2/ChCqS,GACC,yBAAK5H,UAAU,kCACZ,IACD,kBAAC,IAAMyC,SAAP,KACE,4BACEzC,UAAU,2BACVC,QAAS,kBAAM,EAAKQ,YAAY,MAAM,EAAOb,KAE5C,QTzgDgB,0BS8gDvBgI,GACE,yBAAK5H,UAAU,kCACb,kBAAC,IAAMyC,SAAP,KACA,4BACIzC,UAAU,2BACVC,QAAS,kBAAM,EAAKQ,YAAY,MAAM,EAAOb,KAC5C,gB,YAngDoBmE,IAAMlU,W,0CCtB5Bm0B,G,4MACjB/zB,OAAS,WAAO,IACJ64B,EAAe,EAAK54B,MAApB44B,WAER,OACI,yBAAK9oB,UAAU,iBACX,kBAACiD,GAAA,EAAD,CAAMC,WAAS,EAACE,QAAQ,SAASC,WAAW,SAASqL,aAAa,SAASvL,QAAS,GAChF,kBAACF,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,GACX,yBAAKxD,UAAU,kBAAkBC,QAAS,kBAAM6oB,GAAW,EAAM3J,MAC7D,6BACI,yBAAKjf,IAAK6oB,KAAiB3oB,IAAI,GAAGnN,MAAM,OACxC,4BAAI,wDAIhB,kBAACgQ,GAAA,EAAD,CAAMM,MAAI,EAACC,GAAI,GACX,yBAAKxD,UAAU,iBAAiBC,QAAS,kBAAM6oB,GAAW,EAAM1J,MAC5D,6BACI,yBAAKlf,IAAK8oB,KAAgB5oB,IAAI,GAAGnN,MAAM,QACvC,4BAAI,gCAAS,eAAuB,6BAAK,gCAAS,aAAqB,6BAAM,oB,YAnBrE8Q,IAAMlU,WCazBo5B,G,4MACjB54B,MAAQ,CACJ64B,WAAYnyB,GAAesG,eAAe,EAAKnN,MAAM0b,UACrDlE,SAAS,EACTnN,SAAU,KACV4uB,cAVkB,EAWlBC,yBAAyB,EACzBC,kBAAkB,aAAKr4B,EAASS,kBAChC63B,cAAc,EACdjgB,aAAa,EACbkE,YAAY,G,EAGhBsC,kBAAoB,WAChB,IAAMvU,EAAa,EAAKpL,MAAMsJ,MAAM+vB,OAAO34B,GACvC0K,GACA,EAAKkuB,kBAAkBluB,GACvB,EAAKpL,MAAM0pB,aAAa,IAExB,EAAK6P,U,EAIbnpB,mBAAqB,SAACC,EAAWQ,GACzBR,EAAUyM,MAAQ,EAAK9c,MAAM8c,KAC7B,EAAKlM,SAAS,CAAEqoB,cAAe,EAAKj5B,MAAM8c,O,EAIlDwc,kBAAoB,SAAC54B,GAEjB,OADA,EAAKkQ,SAAS,CAAE4G,SAAS,IAClBmG,GACFhU,gBAAgBjJ,GAChBmH,MAAK,SAACwC,GACHA,EAAS7H,MAAQ,EAAKg3B,eAAenvB,EAAS7H,MAAO6H,EAAS3J,IAC9D,EAAKkQ,SAAS,CAAEvG,SAAUA,OAE7BxC,MAAK,WACF,EAAK+I,SAAS,CAAE4G,SAAS,OAE5BzF,OAAM,SAAC9K,GACJ,EAAKsyB,a,EAIjBC,eAAiB,SAACC,EAAUruB,GAOxB,OANAquB,EAAS5vB,KAAI,SAACC,GAIV,OAHAA,EAAKC,MAAQD,EAAKC,MAAM4D,QAAO,SAAC3D,GAAD,OAAUA,EAAI,cAAoBoB,KACjEtB,EAAI,UAAgBA,EAAKC,MAAM,GAAX,iBACbD,EAAKC,MACLD,KAEJ2vB,G,EAGXnc,kBAAoB,SAAC3K,GACjB,EAAK/B,SAAS,CACVsoB,wBAAyBvmB,EACzBwmB,kBAAkB,aAAKr4B,EAASS,kBAChCic,iBAAkB,Q,EAI1B+b,OAAS,WACL,EAAKv5B,MAAM0pB,aAAa,GACxB,EAAK1pB,MAAM4U,QAAQzD,KAAK,eACxBtM,OAAOqI,eAAejF,S,EAG1B+V,aAAe,SAAC3T,GAAD,gBAAiBA,EAAS4T,UAA1B,YAA8D,OAAvB5T,EAAS6T,WAA6C,KAAvB7T,EAAS6T,UAAmB7T,EAAS6T,UAAY,KAAO,IAA9H,OAAmI7T,EAAS8T,KAA5I,aAAqJ9T,EAASlK,MAA9J,YAAuKkK,EAAS+T,M,EAE/LhF,WAAa,SAAC3F,EAAG0E,GACT1E,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,cACvB,UAATnB,EAAmB,EAAKvH,SAAS,CAAEuI,aAAa,IAAU,EAAKvI,SAAS,CAAEyM,YAAY,M,EAK9Ftd,OAAS,WAAO,IAAD,EACoF,EAAKI,MAA5FqX,EADG,EACHA,QAASnN,EADN,EACMA,SAAU4uB,EADhB,EACgBA,cAAeC,EAD/B,EAC+BA,wBAAyB/f,EADxD,EACwDA,YAAakE,EADrE,EACqEA,WADrE,EAEiF,EAAKrd,MAAzF+J,EAFG,EAEHA,MAAO1J,EAFJ,EAEIA,SAAUqpB,EAFd,EAEcA,aAAcgQ,EAF5B,EAE4BA,WAAYpb,EAFxC,EAEwCA,gBAAiBhO,EAFzD,EAEyDA,oBAEpE,OACI,kBAAC,IAAMiC,SAAP,KACI,kBAAC,GAAD,CACIiF,QAASA,EACT2R,UAAW8P,EACXvP,aAAc,SAAC/W,GACX,EAAK/B,SAAS,CAAEqoB,cAAetmB,IAC/B+W,EAAa/W,IAEjBgX,aAAc7oB,EAASe,gBAAgBC,eACvCnB,OACK6W,GACG,yBAAK1H,UAAU,oCACX,yBAAKA,UAAU,4BACVzP,EAASF,OACVE,EAASF,MAAMgS,eAAe,oBACI,IAAlC9R,EAASF,MAAMyd,gBACX,4BAAQ9N,UAAU,qCAAqCC,QAAS,kBAAM,EAAKwpB,WACvE,yBAAKvpB,IAAK2pB,KAAUzpB,IAAI,GAAGnN,MAAM,QAGzC,6BACI,yBAAK+M,UAAU,kCACX,kBAACiK,GAAA,EAAD,CAASpZ,MAAO0J,EAASJ,KAAM+P,UAAU,MAAMC,sBAAuBd,GAClE,wBAAIrJ,UAAU,iBAAiBoK,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAG,WAClEpJ,EAASJ,OAGjB8E,KAAEsC,KAAKtH,EAAO,CAAEE,KvCnIjC,YuCmIqDqB,YAAa,QAC9C,4BACIwE,UAAU,wCACVC,QAAS,kBAAM,EAAKa,SAAS,CAAEsoB,yBAAyB,MACxD,yBAAKlpB,IAAK8O,KAAU/b,MAAM,KAAKmN,IAAI,oBAI/C,kBAAC6J,GAAA,EAAD,CAASpZ,MAAO,EAAKqd,aAAa3T,GAAW2P,UAAU,MAAMC,sBAAuBoD,GAChF,wBAAIvN,UAAU,mBAAmBoK,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAG,UAAU,EAAKuK,aAAa3T,OAIjH,yBAAKyF,UAAU,kBAKzB0H,GACE,kBAAC,IAAMjF,SAAP,KAtIE,IAuIG0mB,GAAgC,kBAAC,GAAD,CAC7BlvB,MAAOA,EACPqB,WAAYf,EAAS3J,GACrBqB,WAAYsI,EAAStI,WACrBqoB,iBAAkB/f,EAAQ,kBAC1BggB,oBAAqB,WACjBqP,IACA,EAAKJ,kBAAkB,EAAKt5B,MAAMsJ,MAAM+vB,OAAO34B,KAEnD4pB,WAAY,SAACnS,EAAMwS,GAAP,OAAe,EAAK/Z,SAAS,CACrCiB,eAAgB8Y,EAChB7Y,YAAaqG,KAEjBmG,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,IApJhC,IAuJQ2oB,GACG,kBAAC,GAAD,CACIlvB,MAAOA,EACPqB,WAAYf,EAAS3J,GACrB8B,MAAO6H,EAAS7H,MAChB6nB,oBAAqB,WACjBqP,IACA,EAAKJ,kBAAkB,EAAKt5B,MAAMsJ,MAAM+vB,OAAO34B,KAEnD4pB,WAAY,SAACnS,EAAMwS,GAAP,OACR,EAAK/Z,SAAS,CACViB,eAAgB8Y,EAChB7Y,YAAaqG,KAGrBmG,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,IArKhC,IAyKI2oB,GAA+B,kBAAC,GAAD,CAC5B7tB,WAAYf,EAAS3J,GACrBuC,YAAaoH,EAASpH,YACtBqnB,WAAY,SAACnS,EAAMwS,GAAP,OAAe,EAAK/Z,SAAS,CACrCiB,eAAgB8Y,EAChB7Y,YAAaqG,KAEjBmG,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,IAlL1B,IAoLE2oB,GAAiC,kBAAC,GAAD,CAC9B7tB,WAAYf,EAAS3J,GACrBuC,YAAaoH,EAASpH,YACtBqnB,WAAY,SAACnS,EAAMwS,GAAP,OAAe,EAAK/Z,SAAS,CACrCiB,eAAgB8Y,EAChB7Y,YAAaqG,KAEjBkS,oBAAqB,WACjBqP,IACA,EAAKJ,kBAAkB,EAAKt5B,MAAMsJ,MAAM+vB,OAAO34B,KAEnD4d,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,IAGzB,kBAAC,GAAD,CACI5P,GAAI,EAAKV,MAAMsJ,MAAM+vB,OAAO34B,GAC5B4R,KAAM4mB,EACNxhB,OrBpMV,OqBqMUrN,SAAUA,EACVqF,QAAS,SAACiD,GAAD,OAAQ,EAAK/B,SAAS,CAC3BsoB,wBAAyBvmB,KAC7BwM,SAAU,SAACxM,GACP,EAAK/B,SAAS,CAACsoB,wBAAyBvmB,IACxC,EAAK2mB,kBAAkB,EAAKt5B,MAAMsJ,MAAM+vB,OAAO34B,KAEnD4pB,WAAY,SAACnS,EAAMwS,GAAP,OAAe,EAAK/Z,SAAS,CACrCkB,YAAaqG,EACbtG,eAAgB8Y,KAEpBrM,gBAAiB,SAACc,EAAKC,GAAN,OAAef,EAAgBc,EAAKC,IACrD/O,oBAAqBA,Q,YAhNjBuD,IAAMlU,W,mDCRrBi6B,G,4MACjBra,aAAe,CACXzc,QAAShC,EAASuD,cAAcvB,QAChCsa,WAAY,KACZM,WAAW,EACXF,iBAAkB,KAClBnZ,cAAe,KACfw1B,eAAe,G,EAGnB15B,M,gBAAY,EAAKof,c,EACjB8P,YAAc,K,EAEd1P,kBAAoB,WAChB,EAAKma,gBACL,EAAKC,iBAAiB,6B,EAG1B3lB,qBAAuB,WACnBsO,aAAa,EAAK2M,c,EAGtByK,cAAgB,WAEZ,OADA,EAAKlpB,SAAS,CAAE8M,WAAW,IACpBC,GACFjU,sBACA7B,MAAK,SAACuV,GACH,EAAKxM,SAAS,CAACwM,aAAYM,WAAW,IAClC,kBAAM,EAAKsc,oBAAoB5c,EAAW,UAEjDrL,OAAM,SAAC9K,GACJ,EAAK2J,SAAS,CAAE8M,WAAW,Q,EAIvCsc,oBAAsB,SAAC3vB,GACnB,EAAKuG,SAAS,CACV4M,iBAAkBnT,EAClBwvB,eAAe,IAChB,WACC,IAAIxU,EAAW,GAEf,OADAhb,EAAStI,WAAWiN,SAAQ,SAAAub,GAAS,OAAIlF,EAASlU,KAAKwM,GAAUnR,iBAAiB+d,EAAU7pB,QACrFyG,QAAQue,IAAIL,GACdxd,MAAK,SAAAC,GACF,IAAImyB,EAAOlrB,KAAEmrB,QAAQpyB,GAErB,OADkBiH,KAAE4iB,QAAQsI,EAAM,mBAGrCpyB,MAAK,SAACoyB,GAAD,OAAU,EAAKrpB,SAAS,CAACvM,cAAe41B,EAAMJ,eAAe,OAClE9nB,OAAM,SAAA9K,GAAG,OAAI,EAAK2J,SAAS,CAAEipB,eAAe,W,EAIzDM,0BAA4B,SAACloB,EAAQmoB,GACjC,QAAO,GACH,IAAgB,oBAAXnoB,EACD,OAAO,yBAAKjC,IAAKqqB,KAAoBt3B,MAAM,KAAKmN,IAAI,KACxD,IAAgB,cAAX+B,IAA2BmoB,EAC5B,OAAO,yBAAKpqB,IAAKya,KAAa1nB,MAAM,KAAKmN,IAAI,KACjD,QACI,OAAO,yBAAK2H,MAAO,CAAC9U,MAAO,Y,EAIvCg3B,iBAAmB,SAACO,GAChB,IACIC,EADO,IAAIlsB,KAAKisB,GACDE,eAAe,QAAS,CAACC,SAAU,wBAEtD,OADAF,EAAUA,EAAQpyB,QAAQ,IAAK,MAAQ,Q,EAI3CiR,WAAa,SAAC3F,EAAG/S,GACb,IAAM0c,EAAa,EAAKjd,MAAMid,WAAWvT,KAAI,SAACD,EAAO0Q,GAMjD,OALI1Q,EAAMlJ,KAAOA,GAAM+S,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,YACnD1P,EAAMuP,aAAc,EAEpBvP,EAAMuP,aAAc,EAEjBvP,KAEX,EAAKgH,SAAS,CAAEwM,gB,EAGpBsd,qBAAuB,SAACjnB,EAAG/S,EAAIyX,GAC3B,IAAMpW,EAAa,EAAK5B,MAAMqd,iBAAiBzb,WAAW8H,KAAI,SAACD,EAAO0Q,GASlE,OARI1Q,EAAMlJ,KAAOA,GAAM+S,EAAEgB,OAAO4E,YAAc5F,EAAEgB,OAAO6E,aACtC,UAATnB,IAAkBvO,EAAMuP,aAAc,GAC7B,QAAThB,IAAgBvO,EAAMsgB,WAAY,GACzB,aAAT/R,IAAqBvO,EAAMqgB,gBAAiB,KAEhDrgB,EAAMuP,aAAc,EACpBvP,EAAMsgB,WAAY,GAEftgB,KAEX,EAAKgH,SAAS,CAAE4M,iBAAiB,6BAAM,EAAKrd,MAAMqd,kBAAlB,IAAoCzb,kB,EAGxEhC,OAAS,WAAO,IACJ6U,EAAY,EAAK5U,MAAjB4U,QADG,EASP,EAAKzU,MANLud,EAHO,EAGPA,UACAN,EAJO,EAIPA,WACAI,EALO,EAKPA,iBACAqc,EANO,EAMPA,cACAx1B,EAPO,EAOPA,cACAvB,EARO,EAQPA,QAGJ,OACI,kBAAC,IAAMyP,SAAP,KACI,yBAAKzC,UAAU,6CACX,4BAAQA,UAAU,qCAAqCC,QAAS,kBAAM6E,EAAQzM,QAAQ,iBAClF,yBAAK6H,IAAK2pB,KAAUzpB,IAAI,GAAGnN,MAAM,QAErC,kBAACic,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,yBAAnC,kBACA,yBAAKA,UAAU,eACf,yBAAKA,UAAU,gBAEnB,yBAAKA,UAAU,wBACT4N,GAAaN,GAAcI,GAAoBnZ,GAC7C,yBAAKyL,UAAU,SACX,yBAAKA,UAAU,uBACX,yBAAKA,UAAU,kBACX,kBAACkP,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,YAAnC,YACA,kBAACiD,GAAA,EAAD,CAAMC,WAAS,EAAC2nB,eAAe,aAAaxnB,WAAW,SAASrD,UAAU,wBACrEsN,EAAWvT,KAAI,SAAAwJ,GAAI,OAChB,kBAACN,GAAA,EAAD,CACIM,MAAI,EACJvD,UAAWuD,EAAK3S,KAAO8c,EAAiB9c,GAC1B,8BACA,uBACdc,IAAK6R,EAAK3S,GACVqP,QAAS,kBAAM,EAAKiqB,oBAAoB3mB,KAExC,kBAAC0G,GAAA,EAAD,CAASpZ,MAAO0S,EAAKpJ,KAAM+P,UAAU,MAAMC,sBAAuB5G,EAAK8F,aACnE,kBAAC6F,GAAA,EAAD,CAAYhG,QAAQ,KAAKkB,aAAc,SAACzG,GAAD,OAAO,EAAK2F,WAAW3F,EAAGJ,EAAK3S,MAAM2S,EAAKpJ,OAErF,yBAAK6F,UAAU,oBAAoBuD,EAAI,WAAeyI,cAKtE,yBAAKhM,UAAU,kBACX,kBAACiK,GAAA,EAAD,CAASpZ,MAAO6c,EAAiBvT,KAAM+P,UAAU,OAC7C,kBAACgF,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,kBAAkB0N,EAAiBvT,OAElC,IAAvCuT,EAAiBzb,WAAW+Z,QACzB,yBAAKhM,UAAU,mBACT+pB,GACE,kBAAC,IAAMtnB,SAAP,KACKiL,EAAiBzb,WAAW8H,KAAI,SAAAwJ,GAAI,OACjC,kBAAC,GAAD,CACI7R,IAAK6R,EAAKunB,IACVj6B,MACI,kBAAC,IAAM4R,SAAP,KACI,8BAAO,EAAK4nB,0BAA0B9mB,EAAI,kBAAuBA,EAAK,SACtE,kBAAC0G,GAAA,EAAD,CAASpZ,MAAO0S,EAAKmY,SAAUxR,UAAU,MAAMC,sBAAuB5G,EAAK8F,aACvE,0BAAMe,aAAc,SAACzG,GAAD,OAAO,EAAKinB,qBAAqBjnB,EAAGJ,EAAK3S,GAAI,WAAW2S,EAAKmY,WAErF,kBAACzR,GAAA,EAAD,CAASpZ,MAAO0S,EAAKunB,IAAK5gB,UAAU,MAAMC,sBAAuB5G,EAAK6W,WAClE,0BAAMpa,UAAU,mBAAmBoK,aAAc,SAACzG,GAAD,OAAO,EAAKinB,qBAAqBjnB,EAAGJ,EAAK3S,GAAI,SACzF2S,EAAKunB,OAKtBrhB,WAAW,uBACXE,eACI,kBAACM,GAAA,EAAD,CAASpZ,MAAO0S,EAAKhT,SAAU2Z,UAAU,MAAMC,sBAAuB5G,EAAK4W,gBACvE,kBAACjL,GAAA,EAAD,CAAYhG,QAAQ,KAAKkB,aAAc,SAACzG,GAAD,OAAO,EAAKinB,qBAAqBjnB,EAAGJ,EAAK3S,GAAI,cAAc2S,EAAKhT,WAG/GoP,SACI,kBAAC,IAAM8C,SAAP,KACKlO,EAAcgP,EAAK3S,KAAyC,IAAlC2D,EAAcgP,EAAK3S,IAAIob,OAE9C,kBAAC,GAAD,CACIhZ,QAASA,EAAQ6K,QAAO,SAAAuN,GAAE,OAAIA,EAAGvZ,UACjC8N,SACI,kBAAC,IAAM8C,SAAP,KACKlO,EAAcgP,EAAK3S,IAAImJ,KAAI,SAAA4jB,GAAG,OAC3B,kBAAC/U,GAAA,EAAD,CACIgV,OAAK,EACLlsB,IAAKisB,EAAI/sB,GACTiP,QAAS,CACLkJ,KAAM,gBAGT/V,EAAQ+G,KAAI,SAACjD,GAAD,OAAYA,EAAOjF,QAC5B,kBAACgX,GAAA,EAAD,CAAWd,MAAO,CAAC9U,MAAO6D,EAAO7D,MAAQ6D,EAAO7D,MAAQ,QAAS+M,UAAU,YAAYtO,IAAKoF,EAAOpF,IAAKd,GAAIkG,EAAOpF,KAE9GisB,EAAI7mB,EAAOpF,gBASxC,kBAACwd,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,cAAnC,sCAQ3B+pB,GAAiB,kBAAC,GAAD,CAAYl5B,MAAO,wBAGL,IAAvC6c,EAAiBzb,WAAW+Z,QACzB,yBAAKhM,UAAU,qBACX,yBAAKA,UAAU,qBACX,yBAAKE,IAAKqZ,KAAgBnZ,IAAI,UAAUnN,MAAM,QAC9C,kBAACic,GAAA,EAAD,CAAYhG,QAAQ,MAApB,uCAQ3B0E,GAAa,kBAAC,GAAD,CAAY/c,MAAO,0B,YAhOVkT,IAAMlU,W,4ECGjD,SAASk7B,GAAe76B,GAAQ,IACtB86B,EAAuB96B,EAAvB86B,SAAalrB,EADQ,YACE5P,EADF,cAG7B,OACE,kBAAC,KAAD,iBACM4P,EADN,CAEE+F,IAAK,SAACA,GACJmlB,EAASnlB,EAAMA,EAAIolB,aAAe,OAEpCC,KAAMz6B,EACN06B,gBAAiB,IACjBC,UAAQ,KAKd,IAAMC,GAAW,CACfj2B,UAAW,CAAE0E,MAAO,GAAI5C,OAAO,EAAOo0B,WAAW,EAAMC,aAAc,IACrEl2B,SAAU,CAAEyE,MAAO,GAAI5C,OAAO,EAAOo0B,WAAW,EAAMC,aAAc,IACpE16B,MAAO,CAAEiJ,MAAO,GAAI5C,OAAO,EAAOo0B,WAAW,EAAMC,aAAc,IACjEj2B,WAAY,CAAEwE,MAAO,GAAI5C,OAAO,EAAOo0B,WAAW,EAAOC,aAAc,IACvEh2B,WAAY,CAAEuE,MAAO,GAAI5C,OAAO,EAAOo0B,WAAW,EAAMC,aAAc,IACtE/1B,MAAO,CACLsE,MAAO,gBACP5C,OAAO,EACPo0B,WAAW,EACXC,aAAc,IAEhB91B,SAAU,CAAEqE,MAAO,GAAI5C,OAAO,EAAOo0B,WAAW,EAAMC,aAAc,IACpE71B,gBAAiB,CACfoE,MAAO,GACP5C,OAAO,EACPo0B,WAAW,EACXC,aAAc,KA6UHC,GAzUU,WACvB,IAAMj7B,EAAWk7B,cACTC,EAAoBC,cAApBD,gBAFqB,EAGHE,mBAASP,IAHN,oBAGtBQ,EAHsB,KAGfC,EAHe,OAIWF,oBAAS,GAJpB,oBAItBnqB,EAJsB,KAIRsqB,EAJQ,KAKvBC,EAAoB,SAAClyB,GACzB,OAAOA,EACJuL,MAAM,IACNxH,QAAO,SAAC0F,GAAD,OAAW0oB,MAAM1oB,IAAkB,MAATA,KACjC2oB,KAAK,KAGJC,EAAW,SAACC,GAAU,IAAD,EACzB,cAAOA,QAAP,IAAOA,GAAP,UAAOA,EAAMC,mBAAb,aAAO,EAAmBC,WAGtBC,EAAe,yCAAG,qCAAAC,EAAA,yDAClBC,EAAWZ,EACXa,GAAU,EAEd/uB,OAAOC,KAAKiuB,GAAO3sB,SAAQ,SAACqE,GAC1BkpB,EAAQ,6BACHA,GADG,mBAELlpB,EAFK,6BAGDsoB,EAAMtoB,IAHL,IAIJrM,OAAO,EACPq0B,aAAc,OAGlBO,EAASW,GAET,IAAME,EAAWX,EAAkBH,EAAMr2B,MAAMsE,OAClC,UAATyJ,GAAwC,IAApBopB,EAAS3gB,SAC/BygB,EAAQ,6BACHA,GADG,IAENj3B,MAAM,6BACDq2B,EAAMr2B,OADN,IAEH0B,OAAO,EACPq0B,aAAct2B,MAGlB62B,EAASW,GACTC,GAAU,GAGC,aAATnpB,GAAuBsoB,EAAMp2B,SAASqE,MAAMkS,OAAS,IACvDygB,EAAQ,6BACHA,GADG,mBAELlpB,EAFK,6BAGDsoB,EAAMtoB,IAHL,IAIJrM,OAAO,EACPq0B,aAAct2B,MAGlB62B,EAASW,GACTC,GAAU,GAGD,oBAATnpB,GACAsoB,EAAMp2B,SAASqE,QAAU+xB,EAAMn2B,gBAAgBoE,QAE/C2yB,EAAQ,6BACHA,GADG,mBAELlpB,EAFK,6BAGDsoB,EAAMtoB,IAHL,IAIJrM,OAAO,EACPq0B,aAAct2B,MAGlB62B,EAASW,GACTC,GAAU,GAGD,UAATnpB,GACS,eAATA,GAC6B,IAA7BsoB,EAAMtoB,GAAMzJ,MAAMkS,SAElBygB,EAAQ,6BACHA,GADG,mBAELlpB,EAFK,6BAGDsoB,EAAMtoB,IAHL,IAIJrM,OAAO,EACPq0B,aAAct2B,MAGlB62B,EAASW,GACTC,GAAU,MAGTA,EAzEiB,uBA0EpBX,GAAgB,GACVpzB,EAAU,CACdqB,KAAM,CACJ4yB,kBAAkB,UAAAr8B,EAASmK,OAAO2K,MAAM,YAAtB,eAA6B,IAA7B,UACd9U,EAASmK,OAAO2K,MAAM,YADR,aACd,EAA6B,GAC7B,GACJwnB,mBAAoB,CAClBlrB,UAAWwqB,EAASN,EAAMx2B,SAASyE,OACnC4H,WAAYyqB,EAASN,EAAMz2B,UAAU0E,OACrCjJ,MAAOs7B,EAASN,EAAMh7B,MAAMiJ,OAC5B8H,YAAauqB,EAASN,EAAMv2B,WAAWwE,OACvCvE,WAAY42B,EAASN,EAAMt2B,WAAWuE,OACtC+H,aAAcmqB,EAAkBH,EAAMr2B,MAAMsE,QAE9CrE,SAAU02B,EAASN,EAAMp2B,SAASqE,OAClCgzB,sBAAuBX,EAASN,EAAMn2B,gBAAgBoE,SAzFtC,kBA4FbiS,GACOpT,GACXZ,MAAK,SAACS,GAEL,GADAuzB,GAAgB,GACZh1B,GAAeC,QAAQ,iBAAkB,CAC3C,IAAImV,EAAgBpV,GAAeC,QAAQ,iBAExCD,GAAeC,QAAQ,iBAAiBwB,EAAKoE,QAAQrB,WAEtD4Q,EAAc,GAAD,OAAI3T,EAAKoE,QAAQrB,UAAa,CACzCqQ,SAAUpT,EAAKoE,QAAQrB,QACvB6Q,KAAM5T,EACN6T,cAAe,KACfC,eAAgB,OAIpBvV,GAAeU,SAAS,gBAAiB0U,GAE3C5b,EAASq1B,KAAO7wB,OAAOxE,SAASw8B,OAChCh4B,OAAOxE,SAASy8B,YAEjB/qB,OAAM,SAAC9K,GAAS,IAAD,EAEd,GADA40B,GAAgB,GACc,OAAvB,OAAH50B,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAe+K,QAAgB,CAAC,IAAD,IAC7BC,EAAM,OAAGjL,QAAH,IAAGA,GAAH,UAAGA,EAAKC,gBAAR,iBAAG,EAAeY,YAAlB,aAAG,EAAqBoK,OACf,CAAC,iBAAkB,cACvBtE,SAASyB,OAAM,OAAC6C,QAAD,IAACA,OAAD,EAACA,EAAQwqB,oBACrClB,EACE,kBAAC,GAAD,CACEhpB,KAAMC,KACN9R,MAAOqE,KAKXqK,OAAM,OAAC6C,QAAD,IAACA,OAAD,EAACA,EAAS,2BAChBnN,IAEAw3B,EAAQ,6BACHA,GADG,IAENj3B,MAAM,6BACDq2B,EAAMr2B,OADN,IAEH0B,OAAO,EACPq0B,aAAct2B,MAGlB62B,EAASW,IAEPltB,OAAM,OAAC6C,QAAD,IAACA,OAAD,EAACA,EAAM,YAAoBnN,IACnCw3B,EAAQ,6BACHA,GADG,IAENj3B,MAAM,6BACDq2B,EAAMr2B,OADN,IAEH0B,OAAO,EACPq0B,aAAct2B,MAGlB62B,EAASW,SAtJG,2CAAH,qDA6Jf/rB,EAAW,SAAC5G,EAAOK,GACvB,IAAM8yB,EAAQ,6BACTpB,GADS,mBAEX1xB,EAAO,CACNL,MAAOA,KAGXgyB,EAASmB,IAGX,OACE,yBAAKjtB,UAAU,+CACb,gCACE,yBAAKA,UAAU,UAGjB,8BACE,0BAAMA,UAAU,0BACd,4BAAK7K,GACL,yBAAK6K,UAAU,QACb,8BAAO7K,IAET,yBAAK6K,UAAU,YACb,8BAAO7K,GADT,IAC8C,gCAE9C,yBAAK6K,UAAU,aACb,kBAAC,GAAD,CACEnP,MAAOsE,EAA0BC,UACjCiT,KAAK,OACLrI,UAAU,0BACViN,YAAa9X,EAA0BC,UACvC8X,WAAS,EACTpT,MAAO+xB,EAAMz2B,UAAU0E,MACvBK,KAAK,YACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAeuG,EAASC,EAAKxG,IACvC+yB,QAAQ,UACRzpB,cAAc,WACdC,UAAWmoB,EAAMz2B,UAAU8B,OAAS20B,EAAMz2B,UAAUm2B,eAEtD,kBAAC,GAAD,CACE16B,MAAOsE,EAA0BE,SACjCgT,KAAK,OACLrI,UAAU,0BACViN,YAAa9X,EAA0BE,SACvC6X,WAAS,EACTpT,MAAO+xB,EAAMx2B,SAASyE,MACtBK,KAAK,WACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAeuG,EAASC,EAAKxG,IACvC+yB,QAAQ,UACRzpB,cAAc,WACdC,UAAWmoB,EAAMx2B,SAAS6B,OAAS20B,EAAMx2B,SAASk2B,gBAGtD,yBAAKvrB,UAAU,gBACb,kBAAC,GAAD,CACEnP,MAAOsE,EAA0BtE,MACjCwX,KAAK,OACLrI,UAAU,0BACViN,YAAa9X,EAA0BtE,MACvCqc,WAAS,EACTpT,MAAO+xB,EAAMh7B,MAAMiJ,MACnBK,KAAK,QACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAeuG,EAASC,EAAKxG,IACvC+yB,QAAQ,UACRzpB,cAAc,WACdC,UAAWmoB,EAAMh7B,MAAMqG,OAAS20B,EAAMh7B,MAAM06B,eAE9C,kBAAC,GAAD,CACE16B,MAAOsE,EAA0BG,WACjC+S,KAAK,OACLrI,UAAU,0BACViN,YAAa9X,EAA0BG,WACvC4X,WAAS,EACTpT,MAAO+xB,EAAMv2B,WAAWwE,MACxBK,KAAK,aACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAeuG,EAASC,EAAKxG,MAEzC,kBAAC,GAAD,CACEtJ,MAAOsE,EAA0BI,WACjC8S,KAAK,OACLrI,UAAU,0BACViN,YAAa9X,EAA0BI,WACvC2X,WAAS,EACTpT,MAAO+xB,EAAMt2B,WAAWuE,MACxBK,KAAK,aACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAeuG,EAASC,EAAKxG,IACvC+yB,QAAQ,UACRzpB,cAAc,WACdC,UACEmoB,EAAMt2B,WAAW2B,OAAS20B,EAAMt2B,WAAWg2B,eAG/C,yBAAKvrB,UAAU,eACb,6BACE,8BAAO7K,EAA0BK,OADnC,IACiD,gCAEjD,kBAAC23B,GAAA,EAAD,CACErzB,MAAO+xB,EAAMr2B,MAAMsE,MACnB4G,SAAU,SAACiD,GAAD,OAAOjD,EAASiD,EAAEgB,OAAO7K,MAAO6J,EAAEgB,OAAOxK,OACnDA,KAAK,QACLvJ,GAAG,QACHw8B,eAAgBrC,KAElB,wBAAI/qB,UAAU,eACX6rB,EAAMr2B,MAAM0B,OAAS20B,EAAMr2B,MAAM+1B,gBAIxC,yBAAKvrB,UAAU,aACb,kBAAC,GAAD,CACEnP,MAAOsE,EAA0BM,SACjC4S,KAAK,WACLrI,UAAU,0BACViN,YAAa9X,EAA0BM,SACvCyX,WAAS,EACTpT,MAAO+xB,EAAMp2B,SAASqE,MACtBK,KAAK,WACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAeuG,EAASC,EAAKxG,IACvC+yB,QAAQ,UACRzpB,cAAc,WACdC,UAAWmoB,EAAMp2B,SAASyB,OAAS20B,EAAMp2B,SAAS81B,eAEpD,kBAAC,GAAD,CACE16B,MAAOsE,EAA0BO,gBACjC2S,KAAK,WACLrI,UAAU,0BACViN,YAAa9X,EAA0BO,gBACvCwX,WAAS,EACTpT,MAAO+xB,EAAMn2B,gBAAgBoE,MAC7BK,KAAK,kBACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAeuG,EAASC,EAAKxG,IACvC+yB,QAAQ,UACRzpB,cAAc,WACdC,UACEmoB,EAAMn2B,gBAAgBwB,OACtB20B,EAAMn2B,gBAAgB61B,gBAI5B,yBAAKvrB,UAAU,iBACZyB,EACC,6BACE,kBAAC,GAAD,CAASe,KAAMf,EAAcqC,YAAY,KAG3C,4BAAQuE,KAAK,SAASpI,QAAS,kBAAMssB,MAClCp3B,SCpWXk2B,I,OAAW,CACf51B,SAAU,CAAEqE,MAAO,GAAI5C,OAAO,EAAOvF,YAAY,EAAM45B,aAAc,IACrE71B,gBAAiB,CACfoE,MAAO,GACP5C,OAAO,EACPvF,YAAY,EACZ45B,aAAc,MAwMH8B,GApMW,WACxB,IAAMvoB,EAAUwoB,cACV/8B,EAAWk7B,cAITC,EAAoBC,cAApBD,gBANsB,EAOJE,mBAASP,IAPL,oBAOvBQ,EAPuB,KAOhBC,EAPgB,OAQUF,oBAAS,GARnB,oBAQvBnqB,EARuB,KAQTsqB,EARS,OASMH,mBANb,GAHO,oBASvBlf,EATuB,KASX6gB,EATW,KAUxBhE,EAAS,IAAIiE,gBAAgBj9B,EAASmK,QAE5C+yB,qBAAU,WACR,GAAIlE,EAAO9wB,IAAI,gBAAiB,CAC9B,IAAIi1B,EAAc,CAChB,eAAgBnE,EAAO9wB,IAAI,gBAC3BlC,OAAQgzB,EAAO9wB,IAAI,UACnBjC,OAAQ+yB,EAAO9wB,IAAI,UACnBhC,IAAK8yB,EAAO9wB,IAAI,OAChB,aAAc,UAEhB1B,GAAeU,SAAS,cAAei2B,MAExC,IACH,IAAMC,EAAa,SAACC,EAAMrqB,EAAMrM,EAAO2jB,GACrC,OAAO,6BACF+S,GADL,mBAEGrqB,EAFH,6BAGOsoB,EAAMtoB,IAHb,IAIIrM,QACAq0B,aAAc1Q,OAIdgT,EAAe,yCAAG,iCAAArB,EAAA,yDAClBC,EAAWZ,EACXa,GAAU,EAEd/uB,OAAOC,KAAKiuB,GAAO3sB,SAAQ,SAACqE,GAC1BkpB,EAAWkB,EAAWlB,EAAUlpB,GAAM,EAAO,IAC7CuoB,EAASW,GAEsB,IAA7BZ,EAAMtoB,GAAMzJ,MAAMkS,QAElBygB,EAAWkB,EAAWlB,EAAUlpB,GAAM,EAAMtO,GAC5C62B,EAASW,GACTC,GAAU,IAEG,aAATnpB,GAAuBsoB,EAAMp2B,SAASqE,MAAMkS,OAAS,IACvDygB,EAAWkB,EAAWlB,EAAUlpB,GAAM,EAAjB,UAA0BtO,IAC/C62B,EAASW,GACTC,GAAU,GAGD,oBAATnpB,GACAsoB,EAAMp2B,SAASqE,QAAU+xB,EAAMn2B,gBAAgBoE,QAE/C2yB,EAAWkB,EAAWlB,EAAUlpB,GAAM,EAAjB,UAA0BtO,IAC/C62B,EAASW,GACTC,GAAU,OAKXA,EA9BiB,uBA+BpBX,GAAgB,GACVpzB,EAAU,CACdlD,SAAUo2B,EAAMp2B,SAASqE,MAAM4c,OAC/BoW,sBAAuBjB,EAAMn2B,gBAAgBoE,MAAM4c,QAlCjC,kBAoCb3K,GACcpT,GAClBZ,MAAK,SAACS,GACLxD,aAAauI,WAAW,eACxBwuB,GAAgB,GAChBwB,EAvEuB,MAyExBtrB,OAAM,SAAC9K,GAAS,IAAD,IAEd,GADA40B,GAAgB,GACc,OAAvB,OAAH50B,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAe+K,QAAgB,CAAC,IAAD,IAC7BC,EAAM,OAAGjL,QAAH,IAAGA,GAAH,UAAGA,EAAKC,gBAAR,iBAAG,EAAeY,YAAlB,aAAG,EAAqBoK,OACf,CAAC,aAAc,gBACnBtE,SAASyB,OAAO6C,KAC7BspB,EACE,kBAAC,GAAD,CACEhpB,KAAMC,KACN9R,MAAOqE,KAKf,GAA8B,OAAvB,OAAHiC,QAAG,IAAHA,GAAA,UAAAA,EAAKC,gBAAL,eAAe+K,QAAgB,CAAC,IAAD,IAC7BC,EAAM,OAAGjL,QAAH,IAAGA,GAAH,UAAGA,EAAKC,gBAAR,iBAAG,EAAeY,YAAlB,aAAG,EAAqBoK,QAClC,OAAIA,QAAJ,IAAIA,OAAJ,EAAIA,EAAM,YACRqqB,EAAWkB,EAAWlB,EAAU,YAAY,EAAMltB,OAAM,OAAC6C,QAAD,IAACA,OAAD,EAACA,EAAQ3M,WACjEq2B,EAASW,KAGX,OAAIrqB,QAAJ,IAAIA,OAAJ,EAAIA,EAAM,yBACRqqB,EAAWkB,EAAWlB,EAAU,mBAAmB,EAAMltB,OAAM,OAAC6C,QAAD,IAACA,OAAD,EAACA,EAAM,wBACtE0pB,EAASW,SAlEG,2CAAH,qDAyEf/rB,EAAW,SAAC5G,EAAOK,GACvB,IAAM8yB,EAAQ,6BACTpB,GADS,mBAEX1xB,EAAO,CACNL,MAAOA,KAGXgyB,EAASmB,IAOLjV,EAAQuR,EAAO9wB,IAAI,SACzB,OACE,yBAAKuH,UAAU,mBACb,gCACE,yBAAKA,UAAU,UAEhBgY,GAAU,8BA5HQ,IA6HhBtL,GACC,0BAAM1M,UAAU,uBACd,4BAAKrK,IACL,yBAAKqK,UAAU,QACb,8BAAOrK,KAET,yBAAKqK,UAAU,gBACb,kBAAC,GAAD,CACEnP,MAAO8E,GAAoBC,YAC3ByS,KAAK,WACLrI,UAAU,0BACViN,YAAatX,GAAoBC,YACjCsX,WAAS,EACTpT,MAAO+xB,EAAMp2B,SAASqE,MACtBK,KAAK,WACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAeuG,EAASC,EAAKxG,IACvCuJ,UAAWmoB,EAAMp2B,SAASyB,OAAS20B,EAAMp2B,SAAS81B,eAEpD,kBAAC,GAAD,CACE16B,MAAO8E,GAAoBD,gBAC3B2S,KAAK,WACLrI,UAAU,0BACViN,YAAatX,GAAoBD,gBACjCwX,WAAS,EACTpT,MAAO+xB,EAAMn2B,gBAAgBoE,MAC7BK,KAAK,kBACLuG,SAAU,SAACC,EAAKxG,GAAN,OAAeuG,EAASC,EAAKxG,IACvCuJ,UACEmoB,EAAMn2B,gBAAgBwB,OACtB20B,EAAMn2B,gBAAgB61B,gBAI5B,yBAAKvrB,UAAU,iBACZyB,EACC,6BACE,kBAAC,GAAD,CAASe,KAAMf,EAAcqC,YAAY,KAG3C,4BAAQuE,KAAK,SAASpI,QAAS,kBAAM4tB,MAClCl4B,MApKc,IA2KxB+W,GACC,yBAAK1M,UAAU,gCACb,8DACA,sEACA,4BACEA,UAAU,uCACVC,QAhEQ,WAClB6E,EAAQzD,KAAK,YA6DL,wBAQJ2W,GAAS,kBAAC,IAAD,CAAU7nB,GAAI,CACvBC,SAAU,SACVC,MAAO,CAAE2c,IAAK,QC9LP8gB,GAhBmB,WAAO,IAC/BpC,EAAoBC,cAApBD,gBAWR,OATA+B,qBAAU,WACR/B,EACE,kBAAC,GAAD,CACEhpB,KAAMC,KACN9R,MAAOqE,OAGV,IAEI,kBAAC,IAAD,CAAU/E,GAAG,YCeP49B,GAnCA,CACb,CACEj9B,KAAM,UACNqJ,KAAM,WACNuI,KAAM,GACN5S,UAAW,MAEb,CACEgB,KAAM,UACNqJ,KAAM,YACNuI,KAAM,GACN5S,UAAW2gB,IAEb,CACE3f,KAAM,kBACNqJ,KAAM,WACNuI,KAAM,GACN5S,UAAWk+B,IAEb,CACEl9B,KAAM,kBACNqJ,KAAM,iBACNuI,KAAM,GACN5S,UAAWg6B,IAEb,CACEh5B,KAAM,cACNqJ,KAAM,gBACNuI,KAAM,GACN5S,UAAWud,GACX4gB,OAAO,GAET,CAAEC,UAAU,EAAMp9B,KAAM,IAAKq9B,OAAQ,UAAWh0B,KAAM,cCd3Ci0B,I,OAAe,CAAC,OAAQ,YAAa,YAAa,QAAS,SAAU,aAE5EC,G,kDACF,WAAYn+B,GAAQ,IAAD,8BACf,cAAMA,IAuBV2f,kBAAoB,WACZ,EAAK3f,MAAMo+B,SACX,EAAKxtB,UAAS,SAACC,GAAD,MAAgB,CAC1BoD,aAAa,gBAAM,EAAKjU,MAAMo+B,cAC9B,kBAAM,EAAKC,wBAGf,EAAKC,gBAETJ,GAAalvB,SAAQ,SAAAuvB,GAAG,OAAI15B,OAAOoQ,iBAAiBspB,EAAK,EAAK9d,wBAjC/C,EAoCnBrM,qBAAuB,WACnB8pB,GAAalvB,SAAQ,SAAAuvB,GAAG,OAAI15B,OAAOwP,oBAAoBkqB,EAAK,EAAK9d,uBACjE+d,cAAc,EAAKC,WAtCJ,EAyCnBC,wBAA0B,SAACrnB,EAASgD,GAAV,OAAsB,EAAKra,MAAMw7B,gBAAgBnkB,EAASgD,IAzCjE,EA2CnBskB,yBAA2B,SAACn9B,GAAD,OAASA,EAAM,EAAKxB,MAAM4+B,cAAcp9B,GAAO,EAAKxB,MAAM4+B,iBA3ClE,EA6CnBne,mBAAqB,WACjBQ,QAAQC,IAAI,kBACZ,EAAKtQ,SAAS,CACV8P,YAAY,IACb,WACK,EAAKvgB,MAAM0+B,gBACX,EAAKF,yBAAyB,EAAKx+B,MAAM0+B,oBAnDlC,EAwDnBR,mBAAqB,WACjB,IACI9b,E3C7Ec,SAACjc,GACzB,IAAMw4B,EAA0C,GAA7B/4B,IAAgC,IAC/CgQ,GAAc,IAAI1H,MAAOG,UACzBuwB,EAAa,IAAI1wB,KAAY,IAAP/H,GAAakI,UAEvC,OAAOuwB,EAAahpB,GAAe+oB,EACzBC,EAAahpB,EACbgpB,EAAahpB,EAAc+oB,E2CsEjBE,CAAWC,SAASp4B,GAAeC,QAAQ,UAAUR,SAC/D44B,EAAiB3c,EAFC,KAIlBA,GAAW,EACX,EAAK4c,kBACED,GAAkB,EACzB,EAAKE,qBAED,EAAKj/B,MAAMk/B,cACX3c,aAAa,EAAKviB,MAAMk/B,cAExB,EAAKl/B,MAAMm/B,eACX5c,aAAa,EAAKviB,MAAMm/B,eAE5B,EAAK1uB,SAAS,CACVyuB,aAAcn3B,WAAW,EAAKi3B,gBAAiB5c,GAC/C+c,cAAep3B,WAAW,EAAKk3B,kBAAmBF,OA1E3C,EA+EnBE,kBAAoB,WACZ,EAAKj/B,MAAMugB,YACX,EAAK9P,SAAS,CACViuB,eAAgB,EAAK7+B,MAAMw7B,gBAEnB,kBAAC,GAAD,CACIhpB,KAAMC,KACN9R,MAAM,uDAEX,CACC4+B,SAAS,OAzFV,EAgGnBJ,gBAAkB,WACdle,QAAQC,IAAI,4BACR,EAAK/gB,MAAMugB,WACX,EAAK9P,SAAS,CACV8P,YAAY,IACb,kBAAM,EAAK8e,aAEd,EAAK5uB,SAAS,CACV6uB,0BAA0B,IAC3B,kBAAM,EAAKd,+BAzGH,EA6GnBa,QAAU,WACN,EAAK5uB,SAAS,CACV6uB,0BAA0B,IAC3B,WACC,EAAKnB,oBAjHM,EA6HnBoB,cAAgB,WACZ,IAAIvjB,EAAgB,KAChBwjB,EAAe,GACfrf,EAAUzZ,GAAeC,QAAQ,WACrC,OAAO6W,GAAU9U,cACZhB,MAAK,SAAAR,GAIF,OAHA8U,EAAgB9U,EAChBiZ,EAAO,eAAqBjZ,EAC5BR,GAAeU,SAAS,UAAW+Y,GAC5B3C,GAAU7U,cAEpBjB,MAAK,SAAA+3B,GACF,KAAIA,EAAO9d,OAAS,GAIpB,OADA6d,EAAY,QAAcC,EAAO7d,MAAM,GAAGrhB,GACnCid,GAAU5U,YAAY62B,EAAO7d,MAAM,GAAGrhB,OAEhDmH,MAAK,SAAAg4B,GACF,KAAIA,EAAQ/d,OAAS,GAArB,CAIA,IAAMge,EAAWD,EAAQ9d,MAAM,GAAGrhB,GAClC,OAAGyb,EAAc9I,KAAK3S,KAAOid,IACzBgiB,EAAY,SAAeG,EAEpBniB,GAAU1U,WAAW02B,EAAaI,QAASJ,EAAaG,UAC9Dj4B,MAAK,SAAAR,GACFiZ,EAAO,eAAqBjZ,EAC5BR,GAAeU,SAAS,UAAW+Y,YAN3C,MAUHvO,OAAM,SAAA9K,GAAG,OAAIga,QAAQC,IAAIja,OA/Jf,EAkKnBq3B,cAAgB,WACZ,OAAOziB,KACFhU,MAAK,SAAAm4B,GACF,EAAKpvB,SAAS,CACVmL,UAAU,EACV9H,aAAc+rB,EACdxoB,SAAS,IAEbyJ,QAAQC,IAAI,4BAA6B8e,MAE5Cn4B,MAAK,kBAAM,EAAK63B,mBAChB73B,MAAK,kBAAM,EAAKw2B,wBAChBtsB,OAAM,SAAC9K,GACJga,QAAQC,IAAI,uBAAwBja,GACpC,EAAK2J,SAAS,CACVmL,UAAU,EACV9H,aAAc,KACduD,SAAS,IACV,WACCgnB,cAAc,EAAKC,UACnB/b,aAAa,EAAKviB,MAAMk/B,cACxBv6B,aAAauI,WAAW,UACxBvI,aAAauI,WAAW,WACxBxI,OAAOxE,SAAS8H,QAAQ,iBAzLrB,EA8LnB83B,SAAW,WAEP,OADA,EAAKrvB,SAAS,CAACsvB,cAAc,IACtBrkB,MAhMQ,EAmMnBskB,kBAAoB,WAChB,EAAKvvB,SAAS,CACVmL,UAAU,EACV9H,aAAc,KACduD,SAAS,IACV,WACCgnB,cAAc,EAAKC,UACnB35B,aAAauI,WAAW,UACxBvI,aAAauI,WAAW,WACxBxI,OAAOxE,SAAS8H,QAAQ,cA5Mb,EAgNnBpI,OAAS,WAAO,IAAD,EACsE,EAAKI,MAA9E8T,EADG,EACHA,aAAcuI,EADX,EACWA,WAAY4jB,EADvB,EACuBA,iBAAkBX,EADzC,EACyCA,yBACpD,OACI,kBAAC,IAAMltB,SAAP,KACI,kBAAC,GAAD,CACID,KAAMmtB,EACN9+B,MAAM,qBACN8W,QACI,yBAAK3H,UAAU,4BACX,yBAAKE,IAAKgf,KAAalf,UAAU,cAAcI,IAAI,GAAGnN,MAAM,OAC5D,kBAACic,GAAA,EAAD,CAAYhG,QAAQ,KAAKlJ,UAAU,kBAAnC,yDACA,yBAAKA,UAAU,oBACX,yBAAKA,UAAU,eACf,4BAAQA,UAAU,0BAA0BC,QAAS,kBAAM,EAAKowB,sBAAhE,MACA,yBAAKrwB,UAAU,iBAI3BJ,QAAS,SAACiD,GAAD,OAAQ,EAAKwtB,uBAEzBlsB,EAEG,yBAAKnE,UAAU,sBACX,kBAAC,GAAD,CAAQmE,aAAcA,EAAca,OAAQ,kBAAM,EAAKmrB,YAAYvrB,kBAAmB,SAAC/B,GAAD,OAAQ,EAAK/B,SAAS,CAAEwvB,iBAAkBztB,KAAOrC,oBAAqBmvB,IAE5J,kBAAC,IAAD,KACK5B,GAAOh0B,KAAI,SAACw2B,EAAM7+B,GACf,OAAI6+B,EAAKrC,SAAiB,kBAAC,IAAD,CAAU59B,KAAMigC,EAAKz/B,KAAMX,GAAIogC,EAAKpC,OAAQz8B,IAAKA,IACpE,kBAAC,IAAD,CACHZ,KAAMy/B,EAAKz/B,KACXY,IAAKA,EACLzB,OAAQ,SAACC,GAAD,OACJ,kBAACqgC,EAAKzgC,UAAN,iBACQI,EADR,CAEI8c,IAAKN,EACLwK,aAAcoZ,EACdn2B,KAAI,OAAEgK,QAAF,IAAEA,OAAF,EAAEA,EAAcvH,QAAQrB,QAC5BtB,MAAK,OAAEkK,QAAF,IAAEA,OAAF,EAAEA,EAAclK,MACrB2f,aAAc,SAAC/W,GAAD,OAAQ,EAAK/B,SAAS,CAAC4L,WAAY7J,KACjD2L,gBAAiB,SAACjH,EAASgD,GACvB,EAAKqkB,wBAAwBrnB,EAASgD,IAE1Cqf,WAAY,kBAAM,EAAK4E,iBACvBhuB,oBAAqBmvB,YAIzC,kBAAC,GAAD,CAAQzpB,eAAgB,EAAKhW,MAAM4U,SAAW,EAAK5U,MAAM4U,QAAQvU,SAASH,SAASiV,MAAM,KAAK,GAAIc,gBAAiB,SAACtD,GAAD,OAAQ,EAAK/B,SAAS,CAAE4L,WAAY7J,QAI3J,kBAAC,GAAD,CAAYhS,MAAM,gCAErB,EAAKR,MAAM+/B,cAAgB,kBAAC,GAAD,CAAYv/B,MAAM,qBAnQtD,EAAKR,MAAQ,CACTqX,SAAS,EACTuE,UAAU,EACV9H,aAAc,KACduI,WAAY,EACZ4jB,kBAAkB,EAClBF,cAAc,EACdI,YAAY,EACZ5f,YAAY,EACZ2e,aAAc,KACdC,cAAe,KACfG,0BAA0B,EAC1BZ,eAAgB,MAGpB,EAAKJ,SAAW,KAEb55B,OAAO07B,aAA6E,WAA9D17B,OAAO07B,YAAYC,iBAAiB,cAAc,GAAGroB,MAC1EtT,OAAOqI,eAAeP,QAAQ,uBAAuB,GApB1C,E,UADEkH,IAAMlU,WA4QhB8gC,eAAatC,IC5PtBuC,GAAQC,YAAe,CAC3BC,YAAa,CACXta,OAAQ,CACNhT,GAAI,EACJkX,GAAI,IACJ/L,GAAI,IACJC,GAAI,KACJC,GAAI,SAsFKkiB,G,4MAhFb1gC,MAAQ,CACNi+B,SAAU,KACV0C,cAAe,G,EAGjBnhB,kBAAoB,WACb9Y,GAAeC,QAAQ,kBAC1BD,GAAeU,SAAS,gBAAiB,IAEtCV,GAAeC,QAAQ,YAC1BD,GAAeU,SAAS,UAAW,K,uDAI7B,IAAD,SAC6B8K,KAAKlS,MAAjCi+B,EADD,EACCA,SAAU0C,EADX,EACWA,cAClB,OACE,kBAACC,EAAA,EAAD,CAAeL,MAAOA,IACpB,kBAAC,IAAD,CACEM,SAAU,EACVC,iBAAe,EACf7pB,2BAAyB,EACzBH,aAAc,CACZC,SAAU,MACVC,WAAY,UAEdxH,QAAS,CACPkJ,KAAM,sBAGR,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,GAAD,CACEjY,KAAK,qBACLhB,UAAW,kBAAM,kBAAC,GAAD,SAGnB,kBAAC,GAAD,CACEgB,KAAK,kBACLhB,UAAW,kBAAM,kBAAC,GAAD,SAGnB,kBAAC,GAAD,CACEgB,KAAK,gCACLhB,UAAW,kBAAM,kBAAC,GAAD,SAGnB,kBAAC,GAAD,CACEgB,KAAK,SACLhB,UAAW,kBACT,kBAAC,GAAD,CACEyc,YAAa,SAAC6kB,GAAD,OACX,EAAKtwB,SAAS,CACZwtB,SAAU8C,EACVJ,c9CzGK,U8CgHf,kBAAC,EAAD,CACElgC,KAAK,IACLf,OAAQ+O,KACRhP,UAAW,SAACI,GAAD,OACT,kBAAC,GAAD,CACE4U,QAAS5U,EAAM4U,QACfwpB,SAAUA,GAAYA,EACtB0C,cAAeA,GAAiBA,e,GArElCjtB,IAAMlU,WCtCJyR,QACW,cAA7BvM,OAAOxE,SAAS8gC,UAEe,UAA7Bt8B,OAAOxE,SAAS8gC,UAEhBt8B,OAAOxE,SAAS8gC,SAAS73B,MACvB,2DCZN83B,IAASrhC,OAAO,kBAAC,GAAD,MAASshC,SAASC,eAAe,SD6H3C,kBAAmBC,WACrBA,UAAUC,cAAcC,MACrB55B,MAAK,SAAA65B,GACJA,EAAaC,gBAEd5vB,OAAM,SAAA/K,GACLia,QAAQja,MAAMA,EAAMqQ,c","file":"static/js/main.6a42bfa6.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/status_red.08bbcd0a.svg\";","module.exports = __webpack_public_path__ + \"static/media/status_green.7d486106.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-edit.fd731a70.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-delete.83ffa785.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-warning-large-red.efa6c78a.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-success.876f11d0.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-close-white.c1323da7.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-back-prim.0ca9fbe8.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-enclosures.20096f14.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-search.91469e8c.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-help.086a5b55.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-user.85053dc6.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-next.ee88ad03.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-facilities.667bbd46.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-facility.8ed9214f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-refresh.d963a540.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-fullscreen.53ef7b98.svg\";","module.exports = __webpack_public_path__ + \"static/media/computing-cloud.ee588e98.svg\";","module.exports = __webpack_public_path__ + \"static/media/chevron-down.6e851d78.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-nav-enclosures.d98d1f7f.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-nav-users.ab364aaa.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-nav-departments.8cfab41d.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-nav-operators.a221963b.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-warning-white.46c4494f.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-users.19f72d6d.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-departments.2cb87c65.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-equipment.632c02cc.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-operators-shadow.1b13b2ce.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-operator.348a2e4b.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-operators.2dd04643.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-cycle-frequency.eb146934.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-add.20340ba4.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-equipment-single.f641b786.svg\";","module.exports = __webpack_public_path__ + \"static/media/graphic-equipment-multiple.9cfe6a3a.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-warning-small-purple.ab801d21.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-not-communicating.34b53a36.svg\";","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\n\nconst PrivateRoute = ({ component: Component, authed, ...rest }) => (\n // Show the component only when the user is logged in\n // Otherwise, redirect the user to /signin page\n authed === true \n ? : \n \n }\n />\n);\n\nexport default PrivateRoute;\n","import JSON_CONFIG from \"env.json\"\n\nexport default {\n\n get_api_url: () => {\n return JSON_CONFIG[\"UVC_API_URL\"]\n },\n\n get: (key) => {\n return JSON_CONFIG[key]\n },\n\n get_max_facilities: () => {\n return JSON_CONFIG[\"MAX_FACILITY_COUNT\"]\n },\n\n get_text_field_length: () => {\n return JSON_CONFIG[\"MAX_TEXTFIELD_INPUT\"]\n },\n\n get_offset_timeout: () => {\n return JSON_CONFIG[\"OFFSET_TIMEOUT\"]\n },\n\n get_ciis_service_url: () => {\n return JSON_CONFIG[\"CIIS_SERVICE_URL\"]\n },\n\n get_ciis_service_url_without_version: () => {\n return JSON_CONFIG[\"CIIS_SERVICE_URL_WITHOUT_VERSION\"]\n }\n\n}\n","export const limitInterval = 5;\nexport const uvcAdminRole = 'uvc_admin';\nexport const facilityAdminRole = 'facility_admin';\nexport const userRole = 'user';\nexport const defaultRowsPerPage = 15;\nexport const markInput = [\n '(',\n /[1-9]/,\n /\\d/,\n /\\d/,\n ')',\n ' ',\n /\\d/,\n /\\d/,\n /\\d/,\n '-',\n /\\d/,\n /\\d/,\n /\\d/,\n /\\d/,\n];\n\nexport const toasterMessageType = {\n SUCCESS: 0,\n ERROR: 1,\n};\n\nexport const headerOptions = [\n {\n id: 'button-uvc-admin',\n title: 'Admin',\n path: '/facilities',\n },\n {\n id: 'button-uvc-report',\n title: 'Reports',\n path: '/report',\n },\n];\n\nexport const profileOptions = [\n {\n id: 'button-profile',\n title: 'Edit Account',\n path: 'edit-account',\n },\n {\n id: 'button-logout',\n title: 'Logout',\n path: null,\n },\n];\n\nexport const UVCAdmin = {\n grandHeader: 'My Facilities',\n noFacilityDesc: 'There are currently no facilities',\n addFacility: 'Add a Facility',\n editFacility: 'Edit Facility',\n deleteFacility: 'Delete Confirmation',\n deleteQuestion: 'Are you sure you want to delete',\n deleteDescription:\n \"This item will be deleted immediately, You can't undo this action\",\n loadingScreenMessage: 'Loading facilities...',\n addFacilityModal: [\n {\n key: 'name',\n title: 'Facility Name',\n isRequired: true,\n isError: false,\n isShow: true,\n errorMessage: '',\n },\n {\n key: 'address_1',\n title: 'Address 1',\n isRequired: true,\n isError: false,\n isShow: true,\n errorMessage: '',\n },\n {\n key: 'address_2',\n title: 'Address 2',\n isRequired: false,\n isError: false,\n isShow: true,\n errorMessage: '',\n },\n {\n key: 'city',\n title: 'City',\n isRequired: true,\n isError: false,\n isShow: true,\n errorMessage: '',\n },\n {\n key: 'state',\n title: 'State/Province/Region',\n isRequired: true,\n isError: false,\n isShow: true,\n errorMessage: '',\n },\n {\n key: 'zip',\n title: 'Zip/Postal Code',\n isRequired: true,\n isError: false,\n isShow: true,\n errorMessage: '',\n },\n {\n key: 'id',\n title: 'Facility Id',\n isRequired: true,\n isError: false,\n isShow: false,\n errorMessage: '',\n },\n ],\n\n facilityDetails: {\n loadingMessage: 'Loading Facility detail information...',\n enclosures: {\n grantTitle: 'UV Enclosures',\n noEnclosureDesc: 'There are currently no enclosures',\n addAnEnclosure: 'Add Enclosure',\n offlineMessage:\n 'UVE is not connecting to the cloud. Please contact UV-C Support at 720-310-1101',\n enclosureModal: [\n {\n key: 'nickname',\n title: '',\n },\n {\n key: 'last_check_in',\n title: 'Last Checked in',\n },\n {\n key: 'location',\n title: 'Location',\n },\n {\n key: 'display_due_date_on_tags',\n title: 'Due Dates on Tags?',\n },\n {\n key: 'udi',\n title: 'UDI',\n },\n {\n key: 'configuration_type',\n title: 'Configuration Type',\n },\n {\n key: 'operating_system',\n title: 'OS',\n },\n ],\n softwareSelectionOptions: [\n {\n key: 'disable_pir',\n desc: 'Disable PIR motion sensor',\n },\n {\n key: 'disable_pocket_pinch',\n desc: 'Disable Door Pocket Pinch optical sensor',\n },\n {\n key: 'disable_current_check',\n desc: 'Disable Lamp Module Current level checks',\n },\n {\n key: 'enable_no_camera',\n desc: 'Allow video camera absence',\n },\n {\n key: 'disable_leading_edge',\n desc: 'Disable Door Leading Edge optical sensor',\n },\n {\n key: 'disable_bluetooth',\n desc: 'Disable Bluetooth Tag Scanning/Updating',\n },\n {\n key: 'enable_state_display',\n desc: 'Display UVE and door state on panel',\n },\n ],\n enclosureDetails: [\n {\n key: 'nickname',\n title: 'UVE Nickname',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'udi',\n title: 'UDI',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'location',\n title: 'Location Description',\n isRequired: true,\n 'grid-xs': 9,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'configuration_type',\n title: 'Config Type',\n isRequired: true,\n 'grid-xs': 3,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'display_due_date_on_tags',\n title: 'Display due date on indication tags',\n isShow: true,\n },\n {\n key: 'enclosure_software_package_id',\n isShow: false,\n },\n {\n key: 'password',\n title: 'Password',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'password_confirmation',\n title: 'Confirm Password',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n ],\n },\n users: {\n grantTitle: 'Users',\n noUsersDesc: 'There are currently no users',\n addAnUsers: ' Add a user',\n addUser: 'ADD USER',\n deleteMessage: 'Remove the following user?',\n userModal: {\n headers: [\n {\n key: 'name',\n title: 'Name',\n isShow: true,\n },\n {\n key: 'email',\n title: 'Email',\n isShow: true,\n width: '300px',\n },\n {\n key: 'role_name',\n title: 'Role',\n isShow: true,\n width: '200px',\n },\n {\n key: 'invitation_pending',\n title: '',\n isShow: true,\n width: '200px',\n },\n {\n key: 'id',\n title: '',\n isShow: false,\n },\n {\n key: 'invitation_link',\n title: '',\n isShow: true,\n width: '200px',\n },\n {\n key: 'actions',\n title: '',\n isShow: true,\n width: '200px',\n },\n ],\n addUserModal: [\n {\n key: 'email',\n title: 'Email',\n isRequired: true,\n 'grid-xs': 8,\n },\n {\n key: 'role_name',\n title: 'Role',\n isRequired: true,\n 'grid-xs': 4,\n },\n ],\n },\n },\n departments: {\n grantTitle: 'Departments',\n noDepartmentsDesc: 'There are currently no departments',\n addAnDepartment: ' Add a Department',\n departmentModal: [\n {\n key: 'title',\n title: 'Department Name',\n isRequired: true,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n ],\n },\n equipments: {\n grantTitle: 'Equipment',\n noEquipmentsDesc: 'This department currently has no equipment',\n addAnEquipments: ' Add equipment',\n bulkUpload: 'Bulk upload',\n deleteEquipmentTypeMessage: 'Remove the following equipment type?',\n deleteEquipmentMessage: 'Remove the following equipment?',\n addEquipmentNote:\n 'Updating the frequency of an equipment type will affect all associated equipment, effective on the next cycle.',\n overwriteTagIDHelp:\n 'Overwriting a duplicate Indicator Tag ID will deactivate the previously existing record and make the new one active. No other Indicator Tag IDs will be affected.',\n equipmentsModal: {\n headers: [\n {\n key: 'tag_id',\n title: 'Indicator Tag ID',\n width: '500px',\n isShow: true,\n },\n {\n key: 'equipment_id',\n title: 'Equipment ID',\n width: '500px',\n isShow: true,\n },\n {\n key: 'next_disinfection_date',\n title: 'Next Cycle',\n isShow: true,\n },\n {\n key: 'equipment_type',\n title: '',\n isShow: false,\n },\n {\n key: 'id',\n title: '',\n isShow: false,\n },\n {\n key: 'protocol_id',\n title: '',\n isShow: false,\n },\n {\n key: 'action',\n title: '',\n isShow: true,\n },\n ],\n addEquipmentModal: [\n {\n key: 'tag_id',\n title: 'Indicator Tag ID',\n isShow: true,\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n },\n {\n key: 'equipment_id',\n title: 'Equipment ID',\n isShow: true,\n isRequired: false,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n },\n {\n key: 'deactivate_duplicate_tags',\n title: '',\n isShow: true,\n isRequired: false,\n 'grid-xs': 12,\n isError: false,\n errorMessage: '',\n },\n {\n key: 'equipment_type_id',\n title: '',\n isShow: false,\n isRequired: true,\n 'grid-xs': 12,\n isError: false,\n errorMessage: '',\n },\n {\n key: 'frequency',\n title: '',\n isShow: false,\n isRequired: true,\n 'grid-xs': 12,\n isError: false,\n errorMessage: '',\n },\n ],\n },\n },\n operators: {\n loadingMessage: 'Loading Operators...',\n grantTitle: 'Operators',\n deleteMessage: 'Deactive the following operator?',\n noOperatorsDesc: 'There are currently no operators',\n duplicateIdHelpText:\n 'Overwriting a duplicate Badge ID will deactivate the previously existing record and make the new one active. No other Badge IDs will be affected.',\n addAnOperator: ' Add operators',\n operatorModal: {\n headers: [\n {\n key: 'name',\n title: 'Name',\n width: '700px',\n isShow: true,\n },\n {\n key: 'badge_id',\n title: 'Badge ID',\n isShow: true,\n },\n {\n key: 'department_id',\n title: 'Department ID',\n isShow: false,\n },\n {\n key: 'department_name',\n title: 'Department Name',\n isShow: false,\n },\n {\n key: 'id',\n title: '',\n isShow: true,\n },\n ],\n addModal: [\n {\n key: 'first_name',\n title: 'First Name',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'last_name',\n title: 'Last Name',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'badge_id',\n title: 'Badge ID',\n isRequired: true,\n 'grid-xs': 12,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'deactivate_duplicate_badges',\n title: \"Overwrite duplicate badge ID's\",\n isRequired: true,\n 'grid-xs': 12,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'department_id',\n title: 'Department',\n isRequired: true,\n 'grid-xs': 12,\n isError: false,\n errorMessage: '',\n isShow: true,\n },\n {\n key: 'id',\n title: '',\n isShow: false,\n },\n ],\n },\n },\n },\n\n enclosureLogs: {\n headers: [\n {\n key: 'performed_at',\n title: 'Timestamp',\n width: '300px',\n isShow: true,\n },\n {\n key: 'error_code',\n title: 'Error Code',\n width: '150px',\n isShow: true,\n },\n {\n key: 'error_description',\n title: 'Error Message',\n isShow: true,\n },\n {\n key: 'id',\n title: '',\n isShow: false,\n },\n ],\n },\n};\n\nexport const UVCFooter = {\n appName: 'UV-Concepts',\n links: [\n {\n key: 'uv-footer-enclosure',\n title: 'UV Enclosures',\n iconName: 'iconEnclosures',\n },\n {\n key: 'uv-footer-users',\n title: 'Users',\n iconName: 'iconUsers',\n },\n {\n key: 'uv-footer-departments',\n title: 'Departments',\n iconName: 'iconDepartments',\n },\n {\n key: 'uv-footer-operator',\n title: 'Operators',\n iconName: 'iconOperators',\n },\n ],\n};\n\nexport const UserProfile = {\n title: 'Edit Profile',\n modal: [\n {\n key: 'first_name',\n title: 'First Name',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n },\n {\n key: 'last_name',\n title: 'Last Name',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n },\n {\n key: 'title',\n title: 'Title',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n },\n {\n key: 'employee_id',\n title: 'Employee ID',\n isRequired: false,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n },\n {\n key: 'department',\n title: 'Department',\n isRequired: true,\n 'grid-xs': 12,\n isError: false,\n errorMessage: '',\n },\n {\n key: 'phone_number',\n title: 'Phone',\n isRequired: true,\n 'grid-xs': 6,\n isError: false,\n errorMessage: '',\n },\n ],\n};\n\nexport const STORAGE = window.localStorage;\nexport const USER_INFO = 'USER.INFO';\nexport const IS_LOGIN = 'IS.LOGIN';\n\nexport const ERROR_MESSAGE = {\n REQUIRED_FIELD: 'Required Field',\n INVALID_EMAIL: 'Invalid Email',\n DOES_NOT_MATCH_PASSWORD: `doesn't match password`,\n IS_TOO_SHORT: `is too short (minimum is 8 characters)`,\n IS_INVALID_NUMBER: `is an invalid number`,\n};\n\nexport const TOAST_MESSAGE = {\n ADD_USER_SUCCESS: 'New user added to facility.',\n ADD_USER_ERROR:\n 'A server error occurred. We have been notified of the problem.',\n RESEND_INVITATION_SUCCESS: 'User invitation resent.',\n RESEND_INVITATION_ERROR:\n 'A server error occurred. We have been notified of the problem.',\n UPDATE_PROFILE: 'Profile updated successfully.',\n INVALID_INVITATION_TOKEN: 'Invalid invitation token',\n INVALID_TOKEN: 'Invalid token',\n TOKEN_EXPIRED: 'Invalid Password Reset token. Your token may be expired or was already used.',\n};\n\nexport const UVCAcceptInvitation = {\n title: 'Create an Account',\n description:\n 'Please provide the following information to complete your account setup.',\n required: 'Required',\n forms: {\n firstName: 'First Name',\n lastName: 'Last Name',\n title: 'Title',\n employeeId: 'Employee ID',\n department: 'Department',\n phone: 'Phone',\n password: 'Password',\n confirmPassword: 'Confirm Password',\n },\n createAccountButton: 'CREATE ACCOUNT',\n};\n\nexport const ResetPassword = {\n title: 'Reset Password',\n description: 'Please enter your new password',\n required: 'Required',\n forms: {\n newPassword: 'Create a New Password',\n confirmPassword: 'Confirm Password',\n },\n resetPasswordButton: 'CREATE PASSWORD',\n};","/******************************************************************************\\\n * File: api.js\n *\n * Author: CIIS\n *\n * Description: List of api endpoint functions\n *\n * Notes:\n \\******************************************************************************/\n\n//------------------------------------------------------------------------------\n// Node Modules ----------------------------------------------------------------\nimport axios from 'axios';\nimport CONFIG from './config';\nimport fileSaver from 'file-saver';\n// Helpers\nimport { objectMapping } from 'helpers/functions';\nimport { STORAGE } from 'helpers/constant';\n//------------------------------------------------------------------------------\n// API Instance ----------------------------------------------------------------\n\nconst currentVersion = '/v1';\n\nconst api = axios.create({\n baseURL: CONFIG.get_api_url(),\n headers: { 'Cache-Control': 'no-store', Pragma: 'no-cache' },\n});\n\nconst ciis_api = axios.create({\n baseURL: CONFIG.get_ciis_service_url() + currentVersion,\n headers: { 'Cache-Control': 'no-store', Pragma: 'no-cache' },\n});\n\nconst ciis_api_without_version = axios.create({\n baseURL: CONFIG.get_ciis_service_url(),\n headers: { 'Cache-Control': 'no-store', Pragma: 'no-cache' },\n});\n\nconst headerKeys = ['access-token', 'client', 'expiry', 'token-type', 'uid'];\nconst initialHeader = {\n 'access-token': null,\n client: null,\n expiry: null,\n 'token-type': null,\n uid: null,\n};\n\napi.interceptors.request.use(\n function (config) {\n const header = browserStorage.getData('header');\n if (header !== null) {\n config.headers = objectMapping(header, null, headerKeys);\n }\n\n return config;\n },\n function (error) {\n // Get token from error header to refresh current header\n const err = error.response;\n const header = browserStorage.getData('header');\n if (header !== null) {\n err.headers = objectMapping(header, null, headerKeys);\n }\n return Promise.reject(error);\n }\n);\n\napi.interceptors.response.use(\n function (res) {\n const savedHeader = browserStorage.getData('header');\n if (res.headers['access-token']) {\n const header = objectMapping(res.headers, savedHeader, headerKeys);\n browserStorage.saveData('header', header);\n }\n return res;\n },\n function (error) {\n // Get token from error header to refresh current header\n if (error && error.response) {\n const err = error.response;\n const savedHeader = browserStorage.getData('header');\n if (err.headers['access-token']) {\n const header = objectMapping(err.headers, savedHeader, headerKeys);\n browserStorage.saveData('header', header);\n }\n }\n return Promise.reject(error);\n }\n);\n\n// set/get headers information from CIIS-Service - temporary\n\nciis_api.interceptors.request.use(\n function (config) {\n const header = browserStorage.getData('header');\n if (header !== null) {\n config.headers = objectMapping(header, null, headerKeys);\n }\n\n return config;\n },\n function (error) {\n // Get token from error header to refresh current header\n const err = error.response;\n const header = browserStorage.getData('header');\n if (header !== null) {\n err.headers = objectMapping(header, null, headerKeys);\n }\n return Promise.reject(error);\n }\n);\n\nciis_api.interceptors.response.use(\n function (res) {\n const savedHeader = browserStorage.getData('header');\n if (res.headers['access-token']) {\n const header = objectMapping(res.headers, savedHeader, headerKeys);\n browserStorage.saveData('header', header);\n }\n return res;\n },\n function (error) {\n // Get token from error header to refresh current header\n if (error && error.response) {\n const err = error.response;\n const savedHeader = browserStorage.getData('header');\n if (err.headers['access-token']) {\n const header = objectMapping(err.headers, savedHeader, headerKeys);\n browserStorage.saveData('header', header);\n }\n }\n return Promise.reject(error);\n }\n);\n\nciis_api_without_version.interceptors.request.use(\n function (config) {\n const url = config.url;\n const method = config.method;\n let header = browserStorage.getData('header');\n\n if (url === 'auth/password' && method === 'put') {\n header = browserStorage.getData('tempHeaders');\n }\n\n if (header !== null) {\n config.headers = objectMapping(header, null, headerKeys);\n }\n\n return config;\n },\n function (error) {\n // Get token from error header to refresh current header\n const err = error.response;\n const header = browserStorage.getData('header');\n if (header !== null) {\n err.headers = objectMapping(header, null, headerKeys);\n }\n return Promise.reject(error);\n }\n);\n\nciis_api_without_version.interceptors.response.use(\n function (res) {\n const url = res.config.url;\n const method = res.config.method;\n let savedHeader = browserStorage.getData('header');\n let key = 'header';\n if (url === 'auth/password' && method === 'put') {\n savedHeader = browserStorage.getData('tempHeaders');\n key = 'tempHeaders';\n }\n\n if (res.headers['access-token']) {\n const header = objectMapping(res.headers, savedHeader, headerKeys);\n browserStorage.saveData(key, header);\n }\n return res;\n },\n function (error) {\n // Get token from error header to refresh current header\n if (error && error.response) {\n const err = error.response;\n const url = err.config.url;\n const method = err.config.method;\n let savedHeader = browserStorage.getData('header');\n let key = 'header';\n if (url === 'auth/password' && method === 'put') {\n savedHeader = browserStorage.getData('tempHeaders');\n key = 'tempHeaders';\n }\n if (err.headers['access-token']) {\n const header = objectMapping(err.headers, savedHeader, headerKeys);\n browserStorage.saveData(key, header);\n }\n }\n return Promise.reject(error);\n }\n);\n\n//------------------------------------------------------------------------------\n// Authentication/ Authorization APIs ------------------------------------------\nexport const auth = {\n //prefix: `/login`,\n\n login: (username, password) =>\n api.post(`/login`, { username, password }).then((resp) => {\n const value = resp.data;\n return value;\n }),\n\n logout: () => {\n // keep state in report page when logout\n const savedView = browserStorage.getData('savedFacility');\n const header = browserStorage.getData('header');\n // Call CIIS Logout API\n ciis_api_without_version\n .delete('auth/sign_out', header)\n .then((res) => {\n return res.data.success;\n })\n .then((isSuccess) => {\n if (isSuccess) {\n STORAGE.clear();\n browserStorage.saveData('savedFacility', savedView);\n }\n })\n .then(() =>\n setTimeout(\n () => window.location.replace('http://www.uvconcepts.com'),\n 1000\n )\n );\n },\n\n customer: () =>\n api.get(`/customer`).then((resp) => {\n const { value } = resp.data;\n return value;\n }),\n\n whoami: () =>\n api.get(`/who`).then((resp) => {\n const value = resp.data;\n return value;\n }),\n // Temporary Implement API call for CIIS Services\n ciis_login: (formData) =>\n ciis_api_without_version\n .post(`auth/sign_in`, formData, {\n headers: initialHeader,\n })\n .then((resp) => {\n const value = resp.data.data;\n return value;\n }),\n\n refreshSession: () =>\n ciis_api_without_version.get(`auth/validate_token`).then((resp) => {\n return resp.data.data;\n }),\n\n resetPassword: (email) =>\n ciis_api_without_version\n .post('auth/password', { 'email': email, 'redirect_url': '/reset_password' })\n .then((resp) => {\n const value = resp.data;\n return value;\n }),\n invitation: (payload) =>\n ciis_api_without_version\n .put('v1/invitation', payload, {\n headers: initialHeader,\n })\n .then((resp) => {\n const value = resp.data;\n return value;\n }),\n sendResetPassword: (payload) =>\n ciis_api_without_version\n .put('auth/password', payload)\n .then((resp) => {\n const value = resp.data;\n return value;\n }),\n};\n\n//------------------------------------------------------------\n// Report View APIs ------------------------------------------\nexport const report = {\n prefix: `/bi`,\n\n getFeatured: () =>\n api.get(`${report.prefix}/my/featured`).then((resp) => {\n const value = resp.data;\n return value;\n }),\n\n getGroup: () =>\n api.get(`${report.prefix}/my/group`).then((resp) => {\n const value = resp.data;\n return value;\n }),\n\n listReports: (groupID) =>\n api.get(`${report.prefix}/my/group/${groupID}`).then((resp) => {\n const value = resp.data;\n return value;\n }),\n\n viewReport: (groupID, reportID) =>\n api\n .get(`${report.prefix}/my/group/report/${groupID}/${reportID}`)\n .then((resp) => {\n const value = resp.data;\n return value;\n }),\n // // Temporary Implement for Download Report\n\n downloadReport: (id) =>\n ciis_api\n .get(`/facilities/${id}/disinfection_reports`, {\n responseType: 'blob',\n })\n .then((resp) => {\n var header = resp.headers['content-disposition'];\n let filename = header.match(/filename=\"(.+)\"/)[1];\n fileSaver.saveAs(resp.data, filename);\n }),\n\n getFalicities: () =>\n ciis_api.get(`/facilities/summary`).then((res) => {\n const value = res.data;\n return value;\n }),\n getFalicitiesByUser: () =>\n ciis_api.get(`/facilities`).then((res) => {\n const value = res.data;\n return value;\n }),\n\n getFalicityById: (id) =>\n ciis_api.get(`/facilities/${id}`).then((res) => {\n const value = res.data;\n value.users.map((user) => {\n user.roles.map((role) => {\n role['role_name'] = role.name;\n delete role.name;\n return role;\n });\n if (user['invitation_pending']) {\n user['invitation_pending'] = 'Yes';\n } else {\n user['invitation_pending'] = 'No';\n }\n\n return user;\n });\n value['software_packages'].map((version) => {\n version['key'] = version.id;\n version['title'] = version.version;\n delete version.id;\n delete version.version;\n return version;\n });\n value['software_packages'].unshift({ key: -1, title: 'None' });\n return value;\n }),\n\n updateFacility: (id, facility) =>\n ciis_api.patch(`/facilities/${id}`, facility).then((res) => {\n const value = res.data;\n return value;\n }),\n\n addFacility: (facility) =>\n ciis_api.post('/facilities', facility).then((res) => {\n const value = res.data;\n return value;\n }),\n\n fetchOperatorsByFacilityId: (id, search) => {\n if (search) {\n return ciis_api\n .get(`/facilities/${id}/operators?search=${search}`)\n .then((res) => {\n const value = res.data;\n value.map((opt) => {\n opt['name'] = `${opt['first_name']} ${opt['last_name']}`;\n delete opt['first_name'];\n delete opt['last_name'];\n return opt;\n });\n return value;\n });\n } else {\n return ciis_api.get(`/facilities/${id}/operators`).then((res) => {\n const value = res.data;\n value.map((opt) => {\n opt['name'] = `${opt['first_name']} ${opt['last_name']}`;\n return opt;\n });\n return value;\n });\n }\n },\n\n getDepartmentById: (id) =>\n ciis_api.get(`/departments/${id}`).then((res) => {\n const value = res.data;\n return value;\n }),\n\n updateUVE: (id, data) =>\n ciis_api.patch(`/enclosures/${id}`, data).then((res) => {\n const value = res.data;\n return value;\n }),\n\n addUVE: (data) =>\n ciis_api.post(`/enclosures`, data).then((res) => {\n const value = res.data;\n return value;\n }),\n\n addUser: (id, userPayload) =>\n ciis_api.post(`/facilities/${id}/users`, userPayload).then((res) => {\n const value = res.data;\n return value;\n }),\n\n updateUser: (id, userId, roleName) =>\n ciis_api\n .patch(`/facilities/${id}/users/${userId}`, { role_name: roleName })\n .then((res) => {\n const value = res.data;\n return value;\n }),\n\n deleteUser: (id, userId) =>\n ciis_api\n .patch(`/facilities/${id}/users/${userId}`, { role_name: '' })\n .then((res) => {\n const value = res.data;\n return value;\n }),\n\n resendInvitation: (facilityId, userId) =>\n ciis_api\n .post(`/resend_invitations`, { user_id: userId, facility_id: facilityId })\n .then((res) => {\n const value = res.data;\n return value;\n }),\n addDepartment: (data) =>\n ciis_api.post(`/departments`, data).then((res) => {\n const value = res.data;\n return value;\n }),\n updateDepartment: (id, data) =>\n ciis_api.patch(`/departments/${id}`, data).then((res) => {\n const value = res.data;\n return value;\n }),\n addNewEquipmentByDepartmentId: (id, data) =>\n ciis_api.post(`/departments/${id}/protocols`, data).then((res) => {\n const value = res.data;\n return value;\n }),\n addNewEquipmentByDepartmentIdWithExistProtocolId: (deptId, protId, data) =>\n ciis_api\n .patch(`/departments/${deptId}/protocols/${protId}`, data)\n .then((res) => {\n const value = res.data;\n return value;\n }),\n removeEquipmentType: (deptId, protId) =>\n ciis_api\n .patch(`/departments/${deptId}/equipment_types/${protId}`, {\n active: false,\n })\n .then((res) => {\n const value = res.data;\n return value;\n }),\n removeEquipment: (deptId, equipId) =>\n ciis_api\n .patch(`/departments/${deptId}/equipment_items/${equipId}`, {\n active: false,\n })\n .then((res) => {\n const value = res.data;\n return value;\n }),\n searchEquipment: (deptId, searchValue) =>\n ciis_api\n .get(`/departments/${deptId}/equipment_items?search=${searchValue}`)\n .then((res) => {\n const value = res.data;\n return value;\n }),\n addOperator: (facilityId, data) =>\n ciis_api.post(`/facilities/${facilityId}/operators`, data).then((res) => {\n const value = res.data;\n return value;\n }),\n editOpertor: (facilityId, operatorId, data) =>\n ciis_api\n .patch(`/facilities/${facilityId}/operators/${operatorId}`, {\n operator: data,\n })\n .then((res) => {\n const value = res.data;\n return value;\n }),\n removeOperator: (facilityId, operatorId) =>\n ciis_api\n .patch(`/facilities/${facilityId}/operators/${operatorId}`, {\n active: false,\n })\n .then((res) => {\n const value = res.data;\n return value;\n }),\n getEnclosureLogs: (enclosureId) =>\n ciis_api\n .get(`/enclosures/${enclosureId}/enclosure_logs?limit=100`)\n .then((res) => {\n const value = res.data;\n return value;\n }),\n};\n\n//------------------------------------------------------------\n// Customer/ User APIs ------------------------------------------\nexport const user = {\n // prefix: `/bi`,\n getUsers: () =>\n api.get(`/user`).then((resp) => {\n const value = resp.data;\n return value;\n }),\n getCustomers: () =>\n api.get(`/customer`).then((resp) => {\n const value = resp.data;\n return value;\n }),\n updateProfile: (userId, profile) =>\n ciis_api.patch(`/profiles/${userId}`, profile).then((res) => {\n const value = res.data;\n return value;\n }),\n};\n\n//------------------------------------------------------------\n// Info APIs ------------------------------------------\nexport const info = {\n // prefix: `/bi`,\n\n getUVCInfo: () =>\n api.get(`/info`).then((resp) => {\n const value = resp.data;\n return value;\n }),\n};\n\n//------------------------------------------------------------\n// localStorage APIs -----------------------------------------\nexport const browserStorage = {\n saveData: (key, value) => {\n if (typeof value === 'object') {\n STORAGE.setItem(key, JSON.stringify(value));\n } else {\n STORAGE.setItem(key, value);\n }\n },\n\n getData: (key) => {\n const data = STORAGE.getItem(key);\n if (data) {\n if (data.charAt(0) === '{') {\n return JSON.parse(data);\n } else {\n return data;\n }\n } else {\n return null;\n }\n },\n\n saveSessionData: (key, value) => {\n if (typeof value === 'object') {\n sessionStorage.setItem(key, JSON.stringify(value));\n } else {\n sessionStorage.setItem(key, value);\n }\n },\n\n getSessionData: (key) => {\n const data = sessionStorage.getItem(key);\n if (data) {\n if (data.charAt(0) === '{') {\n return JSON.parse(data);\n } else {\n return data;\n }\n } else {\n return null;\n }\n },\n\n removeData: (key) => {\n STORAGE.removeItem(key);\n },\n};\n","import { browserStorage } from \"services/api\";\nimport CONFIG from \"services/config\";\nimport _ from 'lodash';\n\nexport const getTimeout = (expiry) => {\n const offsetTime = CONFIG.get_offset_timeout() *60*1000 // Set offset time from config file\n let currentDate = new Date().getTime();\n let expiryDate = new Date(expiry*1000).getTime();\n // Calcualate the expire time-range with offset\n return expiryDate - currentDate <= offsetTime \n ? expiryDate - currentDate \n : expiryDate - currentDate - offsetTime;\n}\n\nexport const objectMapping = (primaryObj, secondaryObj, keyArr) => {\n let resObj = Object.keys(primaryObj)\n .filter(key => keyArr.includes(key))\n .reduce((obj, key) => {\n obj[key] = secondaryObj !== null ? \n primaryObj[key] || secondaryObj[key] : \n primaryObj[key];\n return obj\n }, {})\n return resObj\n};\n\nexport const sq = (num) => {\n return num*num\n}\n\nexport const pastDateCalculator = (pastTimeStamp) => {\n let times = {\n \"min\": 60,\n \"hour\": sq(60),\n \"day\": (sq(60) * 24),\n \"week\": (sq(60) * 24 * 7),\n \"month\": (sq(60) * 24 * 7 * 4),\n \"year\": (sq(60) * 24 * 7 * 4 * 12)\n };\n\n if(!pastTimeStamp) return \"Enclosure not yet connected\";\n let d = new Date(pastTimeStamp),\n diff = ((Date.now() - d.getTime()) / 1000);\n if (diff < times.min) {\n return \"now\";\n } else if (diff < times.hour) {\n return Math.floor(diff / times.min) + \" min ago\";\n } else if (diff < times.day) {\n return Math.floor(diff / times.hour) + \" hours ago\";\n } else if (diff < times.week) {\n return Math.floor(diff / times.day) + \" days ago\";\n } else if (diff < times.month) {\n return Math.floor(diff / times.week) + \" weeks ago\";\n } else if (diff < times.year) {\n return Math.floor(diff / times.month) + \" months ago\";\n } //else over a year\n return \"Over a year ago\";\n}\n\nexport const formatRole = (role) => {\n let res = '';\n if (role.includes(\"_\")) {\n res = role.replace(\"_\", \" \")\n }\n else {\n res = role;\n }\n return res;\n}\n\nexport const isLogin = () => {\n const ciisToken = browserStorage.getData('header');\n let existFlag = false;\n _.keys(ciisToken).forEach(key => {\n if (ciisToken[key] && ciisToken[key] !== null && ciisToken[key] !== undefined) {\n existFlag = true;\n }\n return existFlag;\n })\n if (existFlag) {\n return true;\n }\n return false;\n};\n\nexport const cleanObject = (obj) => {\n for (let key in obj) {\n if (obj[key] === null || obj[key] === undefined || obj[key] === '') {\n delete obj[key];\n }\n }\n\n return obj;\n}\n\nexport const validateEmail = (email) => {\n const re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(email).toLowerCase());\n}\n\nexport const intervalWithLimit = (callback, delay, limit) => {\n let limitCount = limit ? limit : 99;\n let intervalId = window.setInterval(() => {\n if(limitCount === 0) {\n window.clearInterval(intervalId);\n return;\n }\n else {\n return callback()\n }\n }, delay) \n}\n\nexport const checkNumberOfDays = (number, min, max) => {\n const reg = new RegExp('^[1-9]\\\\d*$');\n let isNumber = false;\n if (number.match(reg) \n && Number(number) >= min \n && Number(number) <= max \n && Number.isInteger(Number(number))) {\n isNumber = true;\n }\n return isNumber\n}\n","import React from 'react';\nimport { Route, Redirect } from 'react-router-dom';\nimport { isLogin } from 'helpers/functions';\n \nconst PublicRoute = ({ component: Component, ...rest }) => (\n // Show the component only when the user is logged in\n // Otherwise, redirect the user to /signin page\n \n !isLogin() ? : \n }\n />\n);\n \nexport default PublicRoute;\n","import React from \"react\";\nimport _ from \"lodash\";\nimport { Grid } from \"@material-ui/core\";\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\n\nimport \"./style.scss\";\n\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\nimport iconClose from \"images/icon-close-white.svg\";\n\nimport { TextField, ToasterMessage, Spinner } from \"components/common\";\nimport { UserProfile, ERROR_MESSAGE, toasterMessageType, TOAST_MESSAGE } from \"helpers/constant\";\nimport { user as userAPI } from \"services/api\";\n\n// Phone Number Formatting\nimport { AsYouType } from 'libphonenumber-js';\n\nconst DialogTitle = (props) => {\n const { children, classes, onClose, ...other } = props;\n return (\n \n
{children}
\n \n
\n );\n};\nexport default class EditProfile extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isProcessing: false,\n formValue: {},\n stateProfile: [],\n toasterMessage: null,\n toasterType: null,\n };\n }\n\n componentDidMount() {\n this.setState((prevState) => ({\n formValue: {\n ...this.props.profile,\n phone_number: new AsYouType('US').input(this.props.profile.phone_number)\n },\n stateProfile: UserProfile.modal,\n }))\n }\n\n componentDidUpdate = (prevProps) => {\n if(prevProps.isUserSessionExpire !== this.props.isUserSessionExpire && this.props.isUserSessionExpire === true) {\n this.handleClose(null);\n }\n }\n\n onChange = (key, value) => {\n let val = value;\n if (key === 'phone_number') {\n val = value ? new AsYouType('US').input(value) : value;\n }\n this.setState((prevState) => ({\n formValue: {\n ...prevState.formValue,\n [key]: val,\n },\n }));\n };\n\n formValidation = () => {\n const { stateProfile, formValue } = this.state;\n const modal = stateProfile.reduce((acc, curr) => {\n if (curr.isRequired && formValue[curr.key] === \"\") {\n curr.isError = true;\n curr.errorMessage = ERROR_MESSAGE.REQUIRED_FIELD;\n }\n acc.push(curr);\n return acc;\n }, []);\n this.setState({ stateProfile: modal });\n return Boolean(_.find(modal, ['isError', true]))\n }\n\n updateProfile = () => {\n if (this.formValidation()) {\n return;\n } else {\n this.setState({ isProcessing: true });\n const { formValue } = this.state;\n const data = {\n id: formValue.id,\n first_name: formValue.first_name,\n last_name: formValue.last_name,\n employee_id: formValue.employee_id,\n phone_number: formValue.phone_number,\n department: formValue.department,\n title: formValue.title,\n user_id: formValue.user_id\n }\n return userAPI.updateProfile(data.id, data)\n .then(res => {\n if (res) {\n this.setState({\n isProcessing: false,\n }, () => {\n this.setState({\n toasterMessage: TOAST_MESSAGE.UPDATE_PROFILE,\n toasterType: toasterMessageType.SUCCESS,\n })\n this.handleClose(res);\n });\n }\n })\n .catch(err => this.handleError(err))\n }\n }\n\n handleError = (err) => {\n const { stateProfile } = this.state;\n if (err && err.response && err.response.status && err.response.status === 422) {\n let errors = err.response.data.errors;\n const modal = stateProfile.reduce((acc, curr) => {\n if (errors.hasOwnProperty(curr.key)) {\n curr.isError = true;\n curr.errorMessage = errors[curr.key][0];\n }\n acc.push(curr);\n return acc;\n }, []);\n this.setState({ stateProfile: modal });\n } else if (err && err.response && err.response.status) {\n const error = err.response.data.error;\n this.setState({\n toasterMessage: error,\n toasterType: toasterMessageType.ERROR,\n })\n this.handleClose(null);\n } else {\n this.setState({\n toasterMessage: TOAST_MESSAGE.ADD_USER_ERROR,\n toasterType: toasterMessageType.ERROR,\n })\n this.handleClose(null);\n }\n this.setState({ isProcessing: false })\n }\n\n handleClose = (profile) => {\n const modal = this.state.stateProfile.reduce((acc, curr) => {\n curr.isError = false;\n curr.errorMessage = '';\n acc.push(curr);\n return acc;\n }, []);\n this.props.onClose(profile);\n const formValue = profile ? {\n ...profile,\n phone_number: new AsYouType('US').input(profile.phone_number)\n } :\n {\n ...this.props.profile,\n phone_number: new AsYouType('US').input(this.props.profile.phone_number)\n };\n this.setState({ formValue, stateProfile: modal });\n };\n\n handleRemoveInputError = (key) => {\n const modal = this.state.stateProfile.reduce((acc, curr) => {\n if (curr.key === key) {\n curr.isError = false;\n curr.errorMessage = '';\n }\n acc.push(curr);\n return acc;\n }, []);\n this.setState({ stateProfile: modal });\n }\n\n render() {\n const { open } = this.props;\n const { formValue, stateProfile, toasterMessage, toasterType, isProcessing } = this.state;\n return (\n \n this.setState({ toasterMessage: cb })} />\n this.handleClose(null)}\n aria-labelledby=\"dialog-title\"\n >\n this.handleClose(null)}>\n {UserProfile.title}\n \n \n
\n \n
\n
Required
\n
\n \n {stateProfile.map((field) => (\n \n this.onChange(field.key, e)}\n onFocus={() => this.handleRemoveInputError(field.key)}\n />\n \n ))}\n \n
\n
\n
\n \n {isProcessing ? (\n \n ) : (\n <>\n \n \n \n )}\n \n \n
\n );\n };\n}\n","// Node module\nimport React from \"react\";\nimport { withRouter } from \"react-router-dom\";\n// Styles\nimport \"components/common/Header/Header.scss\";\nimport iconuser from \"images/icon-user.svg\";\n// Components\nimport { PullDownMenu } from \"components/common\";\n// Helpers\nimport { headerOptions, profileOptions } from \"helpers/constant\";\nimport { Badge } from \"@material-ui/core\";\nimport { Notifications } from \"@material-ui/icons\";\nimport EditProfile from \"./Profile/EditProfile\";\nclass Header extends React.Component {\n state = {\n isPullDownMenuOpen: false,\n isOpen: false,\n name: null,\n profile: this.props.ciisUserInfo.profile,\n };\n\n pullDownMenuRef = React.createRef();\n\n componentDidMount() {\n const profile = this.props.ciisUserInfo.profile || null;\n this.redefinedName(profile);\n window.addEventListener(\"click\", (e) => this.handleOutsidePulldownClick(e));\n };\n\n componentWillUnmount = () => {\n window.removeEventListener(\"click\", (e) => this.handleOutsidePulldownClick(e));\n };\n\n handleOutsidePulldownClick = (e) => {\n if (this.pullDownMenuRef && this.pullDownMenuRef.current && !this.pullDownMenuRef.current.contains(e.target)) {\n this.setState({ isPullDownMenuOpen: false });\n this.props.setHeaderMenuFlag(false);\n }\n };\n\n handleRedirect = (path) => {\n if (path && path !== 'edit-account') {\n this.props.history.push(path);\n } else if (path === 'edit-account') {\n this.handleOpenEditProfile();\n } else {\n this.props.logout('');\n }\n this.setState({ isPullDownMenuOpen: false })\n }\n\n handleOpenEditProfile = () => {\n this.setState({ isOpen: true });\n }\n\n handleCloseEditProfile = (profile) => {\n this.setState({ isOpen: false });\n profile && this.redefinedName(profile);\n }\n\n redefinedName = (profile) => {\n const name = profile ? profile[\"first_name\"] + \" \" + profile[\"last_name\"].charAt(0) + \".\" : null;\n this.setState({ name, profile });\n }\n\n render() {\n const { isPullDownMenuOpen, isOpen, name, profile } = this.state;\n const { location, ciisUserInfo, setHeaderMenuFlag, isUserSessionExpire } = this.props;\n const currentPath = location.pathname;\n return (\n <>\n
\n
\n
\n
\n {headerOptions.map(item => (\n this.handleRedirect(item.path)}>{item.title}\n \n ))}\n
\n \n
\n \n this.setState({\n isPullDownMenuOpen: !isPullDownMenuOpen,\n }, () => setHeaderMenuFlag(!isPullDownMenuOpen))\n }\n >\n \"\"\n {name}\n \n \n {profileOptions.map((item) => (\n this.handleRedirect(item.path)}\n >\n {item.title}\n \n ))}\n \n
\n \n
\n
\n \n );\n };\n}\n\nexport default withRouter(Header);\n","// Node module\nimport React from \"react\";\n// Styles\nimport \"components/common/Footer/Footer.scss\";\n// Helpers\nimport { UVCFooter } from \"helpers/constant\";\n\nexport default class Footer extends React.Component {\n state = {\n currentDate: new Date(),\n };\n\n render = () => {\n const { currentDate } = this.state;\n const { isShowSublinks, setActiveSubTab } = this.props;\n\n return (\n
\n
\n ©\n \n {currentDate.getFullYear()}\n \n \n {UVCFooter.appName}\n \n {\"All rights reserved\"}\n \n
\n
\n {isShowSublinks && (\n
\n {UVCFooter.links.map((link, index) => (\n \n ))}\n
\n )}\n
\n );\n };\n}\n","// Node modules\nimport React from \"react\";\nimport classNames from \"classnames\";\n// Styles\nimport \"./PulldownMenu.scss\";\n\nexport default class PulldownMenu extends React.Component {\n // Render\n render = () => {\n const { open, children, className } = this.props;\n\n return
{children}
;\n };\n}\n","import React from \"react\";\n\nimport \"components/common/DotLoading/DotLoading.scss\";\n\nexport default class DotLoading extends React.Component {\n render = () => {\n const { title, className } = this.props;\n\n return (\n
\n
\n
\n
\n

{title}

\n
\n );\n };\n}\n","import React from 'react';\nimport './Spinner.scss';\n\nexport default class Spinner extends React.Component {\n render = () => {\n const { open, fullscreen } = this.props;\n return (\n \n {open && (\n
\n {fullscreen ? (\n \n
\n
\n
\n
\n
\n ) : (\n
\n
\n
\n )}\n
\n )}\n
\n );\n };\n}\n","import React from \"react\";\nimport { Snackbar } from \"@material-ui/core\";\n\nimport \"./ToasterMessage.scss\";\n\nexport class ToasterWithFunctionTemplate extends React.Component {\n render = () => {\n const { icon, title, actionFn, actionTitle } = this.props;\n return (\n
\n
\n {title}\n \n
\n
\n )\n }\n}\n\nexport class ToasterMessageTemplate extends React.Component {\n render = () => {\n const { icon, title } = this.props;\n return (\n
\n
\n \"\"\n {title}\n
\n
\n )\n }\n}\n\nexport default class ToasterMessage extends React.Component {\n\n closeToaster = (e, reason) => {\n if(this.props.actionFn) return;\n if(reason === 'timeout' && this.props.handleClose) {\n return this.props.handleClose(null)\n }\n }\n\n render = () => {\n const { open, title, actionFn, actionTitle, icon, isPersistent } = this.props;\n\n return (\n \n
\n {title}\n \n
\n \n ) : (\n
\n
\n \"\"\n {title}\n
\n
\n )\n }\n onClose={(e, reason) => this.closeToaster(e, reason)}\n autoHideDuration={isPersistent || isPersistent === true ? null : 6000}\n />\n );\n };\n}\n","import React from \"react\";\n\nimport \"components/common/Modal/Modal.scss\";\nimport iconClose from \"images/icon-close-white.svg\";\nimport { Spinner } from \"..\";\n\nexport default class Modal extends React.Component {\n handleClose = (loading) => {\n if (!loading) {\n this.props.onClose(false);\n }\n };\n\n render = () => {\n const { open, title, content, action, loading } = this.props;\n\n return (\n \n {open && (\n
\n
this.handleClose(loading)}>
\n
\n
\n

{title}

\n \n
\n
{content}
\n {loading ? (\n
\n \n
\n ) : (\n {action &&
{action}
}
\n )}\n
\n
\n )}\n
\n );\n };\n}\n","import React from 'react';\nimport classNames from 'classnames';\nimport CONFIG from 'services/config';\n\nimport './TextField.scss';\n\nexport default class TextField extends React.Component {\n render = () => {\n const {\n title,\n className,\n value,\n requiredStyle,\n containerStyle,\n errorName,\n id,\n onChange,\n style,\n ...props\n } = this.props;\n\n return (\n \n {requiredStyle ? (\n
\n
{title}
\n
\n
\n
\n
\n ) : (\n
{title}
\n )}\n\n onChange(e.target.value, e.target.name)}\n />\n
{errorName}
\n \n );\n };\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\n\nimport \"./Switch.scss\";\n\nexport default class Switch extends React.Component {\n render = () => {\n const { setValue, title, checked, className, disabled, ...props } = this.props;\n\n return (\n
\n
{title}
\n \n
\n );\n };\n}\n","import React from \"react\";\nimport { Table, TableBody, TableContainer, TableHead, TableRow, TableCell } from \"@material-ui/core\";\n\nimport \"./Table.scss\";\n\nexport default class CustomizeTable extends React.Component {\n render = () => {\n const { headers, children, pagination } = this.props;\n\n return (\n \n \n \n \n \n {headers.map(\n (header) =>\n header.isShow && (\n \n {header.title}\n \n )\n )}\n \n \n {children}\n
\n
\n {pagination && pagination}\n
\n );\n };\n}\n","import React from \"react\";\nimport { Accordion, AccordionSummary, AccordionDetails, Tooltip } from \"@material-ui/core\";\n\nimport \"components/common/Accordion/Accordion.scss\";\nimport iconChevronNext from \"images/icon-next.svg\";\n\nexport default class CustomizeAccordion extends React.Component {\n\n state = {\n isOpenTitle: false,\n }\n\n mouseEnter = (e) => {\n if (e.target.scrollWidth > e.target.clientWidth) {\n this.setState({ isOpenTitle: true });\n }\n }\n render = () => {\n const { title, titleStyle, children, badge, additionalInfo, ...props } = this.props;\n return (\n
\n \n \n
\n
\n \"\"\n {titleStyle === 'enclosure-logs-title' ? (\n
{title}
\n ) : (\n \n

{title}

\n
\n )}\n
\n {badge &&
{badge}
}\n {additionalInfo &&
{additionalInfo}
}\n
\n
\n {children}\n
\n
\n );\n };\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport { FormControl, InputLabel, Select, MenuItem, FormHelperText, Tooltip } from \"@material-ui/core\";\n\nimport \"./Select.scss\";\nimport { KeyboardArrowDown } from '@material-ui/icons'\n\nexport default class CustomizeSelect extends React.Component {\n state = {\n options: this.props.options\n }\n\n mouseEnter = (e, key) => {\n const options = this.state.options.map((value, indx) => {\n if (value.key === key && e.target.scrollWidth > e.target.clientWidth) {\n value.isOpenTitle = true;\n } else {\n value.isOpenTitle = false;\n }\n return value;\n });\n this.setState({ options });\n }\n\n render = () => {\n const { id, title, value, handleChange, required, className, disabled, error, errorName, onOpen } = this.props;\n\n return (\n \n \n {title}\n \n \n {errorName && {errorName}}\n \n );\n };\n}\n","/******************************************************************************\\\n * File: Login.jsx\n *\n * Author: CIIS\n *\n * Description:\n *\n * Notes:\n\\******************************************************************************/\n//------------------------------------------------------------------------------\n// Node Modules ----------------------------------------------------------------\nimport React from \"react\";\n//------------------------------------------------------------------------------\n// Style -----------------------------------------------------------------------\nimport \"./style.scss\";\n//------------------------------------------------------------------------------\n// Components ------------------------------------------------------------------\nimport { Spinner, TextField } from \"components/common\";\n//------------------------------------------------------------------------------\n// Helpers ---------------------------------------------------------------------\nimport { auth as authAPI, browserStorage } from \"services/api\";\nimport { validateEmail } from \"helpers/functions\";\nimport { withRouter } from \"react-router\";\n//------------------------------------------------------------------------------\n\nexport const LOGIN_FORM = 0;\nexport const FORGOT_FORM = 1;\nexport const FORGOT_CONFIRMATION_FORM = 2;\nclass Login extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n loggedIn: false,\n ciisUserInfo: null,\n username: \"\",\n password: \"\",\n loginError: false,\n isLoginProcessing: false,\n currentTab: LOGIN_FORM,\n forgotEmail: '',\n inputError: null,\n isNoRoles: false\n };\n }\n\n componentDidMount() {\n const { history, location } = this.props;\n if (location.state?.tab) {\n this.setState({ currentTab: location.state.tab });\n history.replace();\n }\n }\n\n onLogin = (event) => {\n const { username, password } = this.state;\n //var username = \"CIISService@ciis.canon.com\";\n //var password = \"satbhpW0rd\";\n this.setState({\n loginError: false,\n isLoginProcessing: true,\n });\n\n const formData = {\n email: username,\n password: password,\n };\n\n return authAPI.ciis_login(formData)\n .then((resp) => {\n if (resp && resp.roles.length === 0) {\n this.setState({\n loggedIn: false,\n ciisUserInfo: null,\n loginError: true,\n isLoginProcessing: false,\n isNoRoles: true\n });\n browserStorage.removeData(\"header\");\n } else {\n this.setState({\n ciisUserInfo: resp,\n loggedIn: true,\n isLoginProcessing: false,\n });\n if (browserStorage.getData('savedFacility')) {\n let savedFacility = browserStorage.getData('savedFacility')\n if (!browserStorage.getData('savedFacility')[resp.profile.user_id]) {\n savedFacility[`${resp.profile.user_id}`] = {\n username: resp.profile.user_id,\n info: resp,\n featureReport: null,\n facilityReport: null,\n }\n } \n \n browserStorage.saveData('savedFacility', savedFacility);\n }\n this.props.setUsername(resp);\n }\n })\n .catch((err) => {\n this.setState({\n loggedIn: false,\n ciisUserInfo: null,\n loginError: true,\n isLoginProcessing: false,\n });\n });\n };\n\n resetPassword = (email) => {\n switch (true) {\n case email === null:\n case email === \"\":\n case email === undefined:\n this.setState({inputError: 'Required Field'})\n return;\n case !validateEmail(email):\n this.setState({inputError: 'Invalid Email format!'})\n return;\n default:\n this.setState({isLoginProcessing: true})\n return authAPI.resetPassword(email)\n .then((res) => {\n if(res) {\n this.setState({\n isLoginProcessing: false,\n currentTab: FORGOT_CONFIRMATION_FORM,\n forgotEmail: '',\n })\n }\n })\n .catch(err => {\n this.setState({\n isLoginProcessing: false,\n inputError: err.response.data.errors[0],\n })\n })\n }\n }\n\n onChangeHandler = (value, name) => {\n let nam = name;\n let val = value;\n this.setState({ [nam]: val });\n };\n\n handleKeypress = (e) => {\n //it triggers by pressing the enter key\n if (e.charCode === 13 && this.state.currentTab === LOGIN_FORM) {\n this.onLogin();\n }\n\n if (e.charCode === 13 && this.state.currentTab === FORGOT_FORM) {\n this.resetPassword(this.state.forgotEmail)\n }\n };\n\n render() {\n const { loginError, currentTab, forgotEmail, inputError, isNoRoles } = this.state;\n\n return (\n
\n {/* Since this is not a form keypress is handled on inputs and button*/}\n {/* {!loggedIn && !loading && ( */}\n
\n
\n
\n
\n
\n {currentTab === LOGIN_FORM && (\n
\n

Login

\n

Please login with your credentials

\n\n
\n
\n this.onChangeHandler(val, name)}\n onKeyPress={this.handleKeypress}\n />\n {/* */}\n
\n\n
\n this.onChangeHandler(val, name)}\n onKeyPress={this.handleKeypress}\n />\n {/* */}\n
\n
\n \n
\n
\n\n {loginError &&
{isNoRoles ? \"You are not authorized to access this site, please contact your facility administrator.\" : \"Login failed. Please try again.\" }
}\n\n
\n \n {!this.state.isLoginProcessing && (\n \n )}\n
\n
\n )}\n\n {currentTab === FORGOT_FORM && (\n
\n

Reset Password

\n

\n Please enter your email address and we'll send
\n you a link to reset your password\n

\n
\n
Required
\n
\n
\n
\n this.onChangeHandler(val, name)}\n onKeyPress={this.handleKeypress}\n onFocus={() => this.setState({inputError: null})}\n />\n
\n
\n
\n \n {!this.state.isLoginProcessing && (\n \n \n \n \n )}\n
\n
\n )}\n\n {currentTab === FORGOT_CONFIRMATION_FORM && (\n
\n

Successfully Sent!

\n

\n Please check your email for instructions on how to
\n reset your password\n

\n
\n )}\n
\n
\n
\n );\n }\n}\n\nexport default withRouter(Login);\n","import React from \"react\";\n\nimport _ from 'lodash';\nimport { Grid, Typography, Tooltip } from '@material-ui/core';\nimport { withRouter } from 'react-router-dom';\n\nimport { report as reportAPI } from \"services/api\";\nimport \"./Facilities.scss\";\nimport iconNoFacility from \"images/graphic-facilities.svg\";\nimport iconFacility from \"images/icon-facility.svg\";\nimport iconEdit from \"images/icon-edit.svg\";\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\n\nimport { UVCAdmin, uvcAdminRole, toasterMessageType } from \"helpers/constant\";\n\nimport { DotLoading, ToasterMessage } from \"components/common\";\nimport { ModifyFacilityModal } from \"components\";\n\nexport const DELETE = \"delete\";\nexport const ADD = \"add\";\nexport const MODIFY = \"edit\";\n\nclass UVAdmin extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isAddFacilityModalOpen: false,\n selectedFacility: null,\n facilityAction: ADD,\n facilities: [],\n isLoading: false,\n totalEquipments: 0,\n toasterMessage: null,\n toasterType: toasterMessageType.SUCCESS\n }\n }\n\n componentDidMount() {\n this.getFacilitiesByUser();\n };\n\n mouseEnter = (e, id, type) => {\n const facilities = this.state.facilities.map((value, indx) => {\n if (value.id === id && e.target.scrollWidth > e.target.clientWidth) {\n type === 'title' ? value.isOpenTitle = true : value.isOpenAddr = true;\n } else {\n value.isOpenTitle = false;\n value.isOpenAddr = false;\n }\n return value;\n });\n this.setState({ facilities });\n }\n\n closeAndResetForm = (cb) => {\n this.setState({\n isAddFacilityModalOpen: cb,\n selectedFacility: null,\n });\n };\n\n getFacilitiesByUser = () => {\n this.setState({ isLoading: true });\n return reportAPI\n .getFalicities()\n .then((facilities) => {\n if(facilities.length > 1) {\n facilities.forEach(facility => {\n let totalEquipments = 0;\n if (facility.departments) {\n facility.departments.forEach(dept => {\n return totalEquipments += dept['equipment_items'];\n });\n }\n facility['total_equipments'] = totalEquipments\n })\n this.setState({ facilities, isLoading: false });\n }\n else if (facilities.length > 0 && facilities.length <= 1) {\n this.props.history.push({\n pathname: `/facilities/${facilities[0].id}`,\n state: {singleFacility: true}\n })\n return;\n } else {\n this.setState({ isLoading: false });\n return;\n }\n })\n .catch((err) => {\n this.setState({ isLoading: false });\n });\n };\n\n getFacilityId = (id) => {\n this.props.history.push({\n pathname: `/facilities/${id}`,\n state: {singleFacility: false}\n })\n }\n\n addrFacility = (facility) => `${facility.address_1} ${facility.address_2 !== null && facility.address_2 !== \"\" ? facility.address_2 + \", \" : \"\"}${facility.city}, ${facility.state} ${facility.zip}`;\n\n render = () => {\n const {\n isAddFacilityModalOpen,\n selectedFacility,\n facilityAction,\n facilities,\n isLoading,\n toasterType,\n toasterMessage,\n } = this.state;\n\n const { roles, isUserSessionExpire, setStackToaster } = this.props;\n\n return (\n \n this.setState({ toasterMessage: cb })} />\n
\n

{UVCAdmin.grandHeader}

\n
\n {facilities && facilities.length > 0 && (\n \n this.setState({\n isAddFacilityModalOpen: true,\n facilityAction: ADD,\n })\n }\n style={{'visibility' : \n _.find(roles, {'name': uvcAdminRole})\n ? 'visible'\n : 'hidden'}} \n >\n {UVCAdmin.addFacility}\n \n )}\n
\n
\n {!isLoading ? (\n facilities.length > 0 ? (\n \n {facilities.map((facility) => (\n \n
this.getFacilityId(facility.id)}>\n {(_.find(roles, {'name': uvcAdminRole})) && (\n
\n \n
\n )}\n
\n {`icon-facility-${facility.id}`}\n \n this.mouseEnter(e, facility.id, 'title')} variant=\"h4\" className=\"facility-title\">{facility.name}\n \n \n this.mouseEnter(e, facility.id, 'addr')} variant=\"h5\" className=\"facility-address\">{this.addrFacility(facility)}\n \n
\n
\n
UV Enclosures
\n
\n {facility.enclosures}\n
\n
\n
Departments
\n
\n {facility.departments ? facility.departments.length : \"0\"}\n
\n
\n
Equipment
\n
\n {facility['total_equipments']}\n
\n
\n
\n
\n
\n ))}\n
\n ) : (\n
\n
\n \"No-Facility\"\n
\n
\n
\n

{UVCAdmin.grandHeader}

\n
{UVCAdmin.noFacilityDesc}
\n \n this.setState({\n isAddFacilityModalOpen: true,\n facilityAction: ADD,\n })\n }\n >\n {UVCAdmin.addFacility}\n \n
\n
\n
\n )\n ) : (\n \n )}\n
\n\n {/* Add/Edit facility modal */}\n this.closeAndResetForm(cb)}\n onSubmit={(cb) => {\n this.setState({\n isAddFacilityModalOpen: cb,\n selectedFacility: null,\n facilities: [],\n facilityAction: ADD,\n })\n this.getFacilitiesByUser();\n }}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire} />\n
\n );\n };\n}\n\nexport default withRouter(UVAdmin);\n","import React from \"react\";\nimport _ from \"lodash\";\nimport \"components/uv-admin/facilities/Facilities.scss\";\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\n\nimport { UVCAdmin } from \"helpers/constant\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\";\nimport { cleanObject } from \"helpers/functions\"; \nimport { ADD, MODIFY } from \"components/uv-admin/facilities/Facilities\";\nimport { Modal, TextField } from \"components/common\";\nimport { report as reportAPI } from \"services/api\";\n\nexport default class ModifyFacilityModal extends React.Component {\n initialState = {\n facilityModals: UVCAdmin.addFacilityModal,\n facilityInfo: null,\n isLoading: false,\n stopFlag: false,\n }\n state = {...this.initialState};\n\n componentDidMount = () => {\n this.state.facilityModals.forEach(field => {\n this.setState(prevState => ({\n facilityInfo: {\n ...prevState.facilityInfo,\n [field.key]: ''\n }\n }))\n })\n }\n\n componentDidUpdate = (prevProps, prevState) => {\n if(((prevProps.facility !== this.props.facility) || (this.props.id && !this.state.stopFlag))\n && this.props.facility \n && this.props.action === MODIFY) {\n let initializeModal = this.state.facilityModals.map(field => {\n let obj = {...field, isError: false, errorMessage: ''};\n return obj\n })\n this.setState({facilityInfo: this.props.facility, stopFlag: true, facilityModals: initializeModal})\n \n }\n if(prevProps.open !== this.props.open && this.props.action === ADD) {\n let initializeModal = this.state.facilityModals.map(field => {\n let obj = {...field, isError: false, errorMessage: ''};\n return obj\n })\n this.setState({facilityModals: initializeModal})\n }\n if(prevProps.isUserSessionExpire !== this.props.isUserSessionExpire && this.props.isUserSessionExpire === true) {\n this.handleClose();\n }\n }\n\n formValidation = (excludedKey, stateData, stateModal) => {\n let data = this.state[stateData];\n let modal = this.state[stateModal]; \n modal.forEach(el => {\n if (el.key !== excludedKey && el.isShow !== false) {\n switch(true) {\n case !data:\n case data && data[el.key] === \"\":\n el.isError = true;\n el.errorMessage = \"Required Field\";\n this.setState({[stateModal]: modal});\n break\n default:\n this.setState({[stateModal]: modal}); \n break;\n }\n }\n })\n return !Boolean(_.find(modal, ['isError', true]))\n }\n\n handleChange = (key, val) => {\n this.setState(\n (prevState) => ({\n facilityInfo: {\n ...prevState.facilityInfo,\n [key]: val,\n },\n })\n );\n };\n\n handleClose = (cb) => {\n let initializeModal = this.state.facilityModals.map(field => {\n let obj = {...field, isError: false, errorMessage: ''};\n return obj\n })\n initializeModal.forEach(field => {\n this.setState(prevState => ({\n facilityModals: initializeModal,\n facilityInfo: {\n ...prevState.facilityInfo,\n [field.key]: ''\n }\n }), () => this.props.onClose(cb))\n })\n if (this.state.stopFlag) {\n this.setState({stopFlag: false})\n } \n }\n\n modifyFacility = () => {\n if(!this.formValidation('address_2', 'facilityInfo', 'facilityModals')) {\n return;\n }\n else {\n const id = this.state.facilityInfo.id;\n this.setState({isLoading: true})\n return reportAPI.updateFacility(id, this.state.facilityInfo)\n .then(res => {\n if(res) {\n this.setState({\n isLoading: false,\n facilityInfo: null,\n });\n this.props.onSubmit(false);\n // this.props.setToaster(toasterMessageType.SUCCESS, 'Facility Updated!')\n this.props.setStackToaster(\n (\n \n )\n )\n }\n })\n .catch(err => {\n this.handleError(err)\n })\n }\n }\n\n addFacility = () => {\n if(!this.formValidation('address_2', 'facilityInfo', 'facilityModals')) {\n return;\n }\n else {\n this.setState({isLoading: true})\n let fiteredNewFacility = cleanObject(this.state.facilityInfo);\n \n return reportAPI.addFacility(fiteredNewFacility)\n .then(res => {\n if(res) {\n this.setState({\n isLoading: false,\n facilityInfo: null,\n });\n this.props.onSubmit(false);\n }\n })\n .catch(err => {\n this.handleError(err)\n })\n }\n }\n\n handleError = (err) => {\n if (err && err.response && err.response.status && err.response.status === 422) {\n let errors = err.response.data.errors;\n let errorModal = this.state.facilityModals.map(field => {\n let obj = _.indexOf(_.keys(errors), field.key) !== -1 \n ? {...field, isError: true, errorMessage: _.result(errors, field.key)} \n : {...field, isError: false, errorMessage: ''}\n return obj\n })\n this.setState({facilityModals: errorModal})\n }\n else {\n // this.props.setToaster(toasterMessageType.ERROR, 'Error when creating/updating Facility!')\n this.props.setStackToaster(\n (\n \n )\n )\n }\n this.setState({\n isLoading: false,\n })\n }\n\n render = () => {\n const { open, action } = this.props;\n const { facilityModals, facilityInfo, isLoading } = this.state;\n\n return (\n \n {(action === ADD || action === MODIFY) && (\n \n
\n
Required
\n
\n
\n {facilityModals.map(\n (field, index) =>\n field.key !== \"id\" && (\n this.handleChange(field.key, val)}\n onFocus={(e) => this.setState((prevState) => ({\n facilityModals: prevState.facilityModals.map((obj) => (\n obj.key === field.key && obj.isError\n ? Object.assign(obj, {isError: false, errorMessage: ''})\n : obj\n ))\n }))}\n autoFocus={action === ADD && field.key === 'name' ? 'autoFocus' : ''}\n />\n )\n )}\n
\n
\n )}\n \n }\n action={\n
\n
\n \n {action === MODIFY && (\n \n )}\n {action === ADD && (\n \n )}\n
\n
\n }\n onClose={(cb) => this.handleClose(cb)}\n loading={isLoading}\n />\n );\n };\n}\n","import React from 'react';\nimport _ from 'lodash';\n// Styles\nimport './UVReport.scss';\nimport iconrefresh from 'images/icon-refresh.svg';\nimport iconFullscreen from 'images/icon-fullscreen.svg';\nimport iconDownload from 'images/computing-cloud.svg';\nimport iconChevronDown from 'images/chevron-down.svg';\nimport iconSuccess from 'images/status_green.svg';\nimport iconError from 'images/status_red.svg';\n//Helpers\nimport { report as reportAPI, browserStorage } from 'services/api';\nimport { PowerBIEmbed } from 'powerbi-client-react';\nimport { models } from 'powerbi-client';\nimport CONFIG from 'services/config';\n// Child components\nimport {\n PullDownMenu,\n DotLoading,\n Spinner,\n ToasterMessage,\n} from 'components/common';\nimport { withRouter } from 'react-router';\n\nexport const pbiKeys = browserStorage.getData('pbiKeys');\n\nclass UVReport extends React.Component {\n constructor(props) {\n super(props);\n\n this.pullDownMenuRef = React.createRef();\n\n this.state = {\n showReport: false,\n featuredReport: null,\n showOtherReport: false,\n otherReport: null,\n displayToaster: false,\n report: null,\n visualPage1: false,\n visualPage2: false,\n visualPage3: false,\n userActive: false,\n featuredChecked: true,\n otherReportID: null,\n othergroupID: null,\n enableOtherReport: false,\n timerID: null,\n fullscreenMode: false,\n currentSelectedReport: null,\n isReportLoaded: false,\n isPullDownMenuOpen: false,\n filteredFacilities: null,\n isReportDownload: false,\n isDownloadError: false,\n toasterMessage: null,\n userFacilities: null,\n };\n }\n\n componentDidMount = () => {\n this.onGetFeaturedReport(false);\n window.addEventListener('mousemove', this.resetActivityTimer);\n window.addEventListener('click', (e) => this.handleOutsidePulldownClick(e));\n //document.addEventListener(\"keydown\", this.handleKeypress);\n };\n\n componentWillUnmount = () => {\n window.removeEventListener('mousemove', this.resetActivityTimer);\n window.removeEventListener('click', (e) =>\n this.handleOutsidePulldownClick(e)\n );\n //document.removeEventListener(\"keydown\", this.handleKeypress);\n };\n\n resetActivityTimer = () => {\n //reset the timer as user is active\n //console.log(\"User Active !!!\");\n this.setState({\n userActive: true,\n });\n };\n\n onGetFeaturedReport = (refreshFlag) => {\n if (refreshFlag) {\n this.setState({ isReportLoaded: true });\n } else {\n this.setState({ isReportLoaded: false });\n }\n return reportAPI\n .getFalicitiesByUser()\n .then((facilities) => {\n this.setState({ userFacilities: facilities });\n if (\n pbiKeys &&\n !_.isEmpty(pbiKeys) &&\n pbiKeys.hasOwnProperty('featuredReport') &&\n pbiKeys.featuredReport\n ) {\n return Promise.resolve(pbiKeys.featuredReport);\n } else {\n return reportAPI.getFeatured();\n }\n })\n .then((res) => {\n console.log('success calling getFeatured: ', res);\n this.setState(\n {\n featuredReport: res,\n showReport: true,\n showOtherReport: false,\n visualPage1: false,\n visualPage2: false,\n visualPage3: false,\n currentSelectedReport: 'featureReport',\n },\n () => {\n this.setReportTimer(this.state.featuredReport.expiration);\n }\n );\n this.getOtherReports();\n })\n .catch((err) => {\n if (err.reponse && err.response.status === 401) {\n alert(`Session expired, ${err.response.data.errors[0]}`);\n }\n\n this.setState({\n featuredReport: null,\n showReport: false,\n });\n });\n };\n\n getOtherReports = () => {\n reportAPI\n .getGroup()\n .then((res) => {\n console.log('success calling getGroup: ', res);\n\n if (res.total > 0) {\n const groupID = res.items[0].id;\n\n reportAPI\n .listReports(groupID)\n .then((res) => {\n console.log('success calling listReports: ', res);\n\n if (res.total > 0) {\n const reportID = res.items[0].id;\n\n if (this.state.featuredReport.item.id !== reportID) {\n this.setState({\n otherReportID: reportID,\n othergroupID: groupID,\n enableOtherReport: true,\n });\n }\n }\n })\n .catch((err) => {\n console.log('Error at listReports: ', err);\n });\n }\n })\n .catch((err) => {\n console.log('Error at getGroup: ', err);\n });\n };\n\n viewOtherReports = (refreshFlag) => {\n if (refreshFlag) {\n this.setState({ isReportLoaded: true });\n } else {\n this.setState({ isReportLoaded: false });\n }\n return reportAPI\n .getFalicitiesByUser()\n .then((facilities) => {\n this.setState({ userFacilities: facilities });\n if (\n pbiKeys &&\n !_.isEmpty(pbiKeys) &&\n pbiKeys.hasOwnProperty('facilityReport') &&\n pbiKeys.facilityReport\n ) {\n return Promise.resolve(pbiKeys.facilityReport);\n } else {\n return reportAPI.viewReport(\n this.state.othergroupID,\n this.state.otherReportID\n );\n }\n })\n .then((res) => {\n console.log('success calling viewReport: ', res);\n this.setState(\n {\n otherReport: res,\n showReport: false,\n showOtherReport: true,\n visualPage1: false,\n visualPage2: false,\n visualPage3: false,\n currentSelectedReport: 'facilityReport',\n },\n () => {\n this.setReportTimer(this.state.otherReport.expiration);\n }\n );\n })\n .catch((err) => {\n console.log('Error at viewReport: ', err);\n\n this.setState({\n otherReport: null,\n showOtherReport: false,\n });\n });\n };\n\n setReportTimer = (tokenExpiration) => {\n var currentTime = Date.now();\n var expiration = Date.parse(tokenExpiration);\n var safetyInterval = 1 * 60 * 1000; //1 minute\n\n // time until token refresh in milliseconds\n var timeout = expiration - currentTime - safetyInterval;\n if (timeout <= 0) {\n //show toaster message\n this.showToasterMessage();\n } else {\n if (this.state.timerID) {\n clearTimeout(this.state.timerID);\n }\n const id = setTimeout(this.showToasterMessage, timeout);\n this.setState({\n timerID: id,\n });\n }\n };\n\n showToasterMessage = () => {\n console.log('REPORT TIMER EXPIRED !!!');\n //alert( \" Report has expired, please refresh\");\n\n if (this.state.userActive) {\n //reset the user active for next check\n this.setState(\n {\n userActive: false,\n },\n () => this.refreshReport()\n );\n } else {\n this.setState({\n displayToaster: true,\n toasterMessage: 'This report has expired',\n });\n }\n };\n\n refreshReport = () => {\n this.setState(\n {\n displayToaster: false,\n },\n () => {\n if (this.state.showReport === true) {\n this.onGetFeaturedReport(true);\n } else if (this.state.showOtherReport === true) {\n this.viewOtherReports(true);\n }\n this.setState({ toasterMessage: null });\n }\n );\n };\n\n setNewFilter = () => {\n // if(this.state.report){\n // console.log(\"Setting the filters\");\n // this.state.report.setFilters([dateFilter])\n // .then(resp => {\n // console.log(\"SUCCESS setting filter: \", resp);\n // })\n // .catch(errors => {\n // // Handle error\n // console.log(\"Error setting filter: \", errors);\n // });\n // // this.state.report.getFilters()\n // // .then(filters => {\n // // filters.push(dateFilter);\n // // this.state.report.setFilters(filters);\n // // console.log(\"Filters: \", filters);\n // // })\n // // .catch(err => {\n // // console.log(\"Error gettting filter: \", err);\n // // });\n // }\n };\n\n onReportLoaded = () => {\n console.log('On report Loaded');\n };\n\n onPageChanged = () => {\n console.log('Page Changed');\n this.setNewFilterUsingVisual();\n };\n\n setNewFilterUsingVisual = () => {\n //console.log(\"Set filter using visual \");\n\n // Retrieve the page collection and get the visuals for the first page.\n this.state.report\n .getPages()\n .then((pages) => {\n var activePage = pages.find(function (page) {\n return page.isActive;\n });\n\n this.setVisualOnPage(activePage);\n })\n .catch(function (errors) {\n console.log(errors);\n });\n };\n\n setVisualOnPage = (page) => {\n //Get saved slicer from localstorage if exists\n // const savedDateSlicer = browserStorage.getData(this.props.name).slicerDate;\n //Get checked facilites from localstorage\n const savedView = browserStorage.getData('savedFacility');\n const savedFacilites =\n savedView[this.props.name][`${this.state.currentSelectedReport}`] &&\n savedView[this.props.name][`${this.state.currentSelectedReport}`] !== null\n ? savedView[this.props.name][`${this.state.currentSelectedReport}`]\n .checkedFacilities\n : null;\n\n //Date format has to match \"2020-05-22 00:00:00\" in the date filter\n var currentDate = new Date();\n const curMonth = (currentDate.getMonth() + 1).toString(); // JS counts month from 0 to 11\n const curDate = currentDate.getDate().toString();\n\n var curDateString =\n currentDate.getFullYear() +\n '-' +\n curMonth.padStart(2, '0') +\n '-' +\n curDate.padStart(2, '0') +\n ' 00:00:00';\n //console.log(\"CurrentDate: \", curDateString);\n\n currentDate.setMonth(currentDate.getMonth() - 6);\n const sixMonth = (currentDate.getMonth() + 1).toString(); // JS counts month from 0 to 11\n var sixMonthsString =\n currentDate.getFullYear() +\n '-' +\n sixMonth.padStart(2, '0') +\n '-01' +\n ' 00:00:00';\n //console.log(\"sixMonthsString: \", sixMonthsString);\n\n const dateFilter = {\n $schema: 'http://powerbi.com/product/schema#advanced',\n target: {\n table: 'DimDate',\n column: 'Date',\n },\n // target: {\n // table: \"Run Cycle Master\",\n // column: \"Run-Cycle Date\",\n // },\n logicalOperator: 'AND',\n conditions: [\n {\n operator: 'GreaterThanOrEqual',\n value: sixMonthsString,\n //value: \"2020-05-22 00:00:00\"\n },\n {\n operator: 'LessThanOrEqual',\n value: curDateString,\n //value: \"2020-08-27 00:00:00\"\n },\n ],\n filterType: models.FilterType.Advanced,\n };\n\n page\n .getVisuals()\n .then((visuals) => {\n // Retrieve the wanted visual.\n visuals.forEach((visual) => {\n if (visual.title === 'Run-Cycle Report Date Range') {\n if (!this.state.visualPage1) {\n // Set the filter for the visual.\n // Pay attention that setFilters receives an array.\n visual\n .setSlicerState({\n filters: [dateFilter],\n })\n .then(() =>\n this.setUpFacilityCheckboxes(visuals, savedFacilites)\n )\n // visual.setFilters([dateFilter])\n .catch(function (errors) {\n console.log(errors);\n });\n\n this.setState({\n visualPage1: true,\n });\n }\n }\n if (visual.title === 'Select the Run-Cycle date range:') {\n if (!this.state.visualPage3) {\n console.log('Set filter using visual', visual);\n // Set the filter for the visual.\n // Pay attention that setFilters receives an array.\n visual\n .setSlicerState({\n filters: [dateFilter],\n })\n .then(() =>\n this.setUpFacilityCheckboxes(visuals, savedFacilites)\n )\n // visual.setFilters([dateFilter])\n .catch(function (errors) {\n console.log(errors);\n });\n\n this.setState({\n visualPage3: true,\n });\n }\n }\n if (visual.title === 'Enclosure Log Date Range') {\n if (!this.state.visualPage2) {\n //console.log(\"Setting visual Enclosure Log Date Range\");\n console.log('Set filter using visual ', visual);\n // Set the filter for the visual.\n // Pay attention that setFilters receives an array.\n visual\n .setSlicerState({\n filters: [dateFilter],\n })\n .then(() =>\n this.setUpFacilityCheckboxes(visuals, savedFacilites)\n )\n // visual.setFilters([dateFilter])\n .catch(function (errors) {\n console.log(errors);\n });\n this.setState({\n visualPage2: true,\n });\n }\n }\n });\n })\n .catch(function (errors) {\n console.log(errors);\n });\n };\n\n onReportRendered = () => {\n console.log('report rendered');\n\n if (!this.state.report) {\n return;\n }\n return this.state.report\n .getPages()\n .then((pages) => {\n const activePage = pages.find((page) => page.isActive);\n return activePage.getVisuals();\n })\n .then((visuals) => {\n let savedInfo = browserStorage.getData('savedFacility');\n visuals = visuals.filter((view) => view.title !== undefined);\n visuals.forEach((view) => {\n switch (true) {\n // For saving slicer state\n // case \"Run-Cycle Report Date Range\":\n // case \"Select the Run-Cycle date range:\":\n // return view.getSlicerState()\n // .then(filters => {\n // savedInfo['slicerDate'] = filters.filters[0]\n // browserStorage.saveData(this.props.name, savedInfo);\n // })\n // For saving Facility checking options\n case view.title === '*Use ctrl key to select multiple*':\n const requests = [\n view.exportData(\n models.ExportDataType.Summarized,\n CONFIG.get_max_facilities()\n ),\n view.getSlicerState(),\n ];\n return Promise.all(requests)\n .then((res) => {\n if (res) {\n const filter = res[1] ? res[1].filters[0] : null;\n // Transform visual facility checkboxes into list\n let visualizeFacilities = res[0]\n ? this.transformPBIExportData(res[0])\n : null;\n\n savedInfo[this.props.name][\n this.state.currentSelectedReport\n ] = {\n checkedFacilities: filter ? filter : null,\n };\n browserStorage.saveData('savedFacility', savedInfo);\n return visualizeFacilities;\n }\n })\n .then((visualizeFacilities) => {\n this.setState({\n filteredFacilities: visualizeFacilities\n ? this.filterPullDownFacilities(\n visualizeFacilities,\n this.state.userFacilities\n )\n : null,\n });\n })\n .catch((err) => console.log(err));\n default:\n return;\n }\n });\n })\n .catch((err) => {\n console.log(err);\n this.setState({\n isReportLoaded: true,\n });\n })\n .finally(() => {\n this.setState({\n isReportLoaded: true,\n });\n });\n };\n\n onShowOtherReport = () => {\n this.viewOtherReports(false);\n\n // if(!this.state.otherReport){\n // this.viewOtherReports();\n // }\n // else{\n // this.setState({\n // showReport: false,\n // showOtherReport: true,\n // });\n // }\n\n // this.setState({\n // visualPage1: false,\n // visualPage2: false,\n // visualPage3: false\n // });\n\n this.setState({ featuredChecked: false });\n };\n\n onFeaturedReport = () => {\n this.onGetFeaturedReport(false);\n // if(this.state.featuredReport){\n // this.setState({\n // showReport: true,\n // showOtherReport: false,\n // visualPage1: false,\n // visualPage2: false,\n // visualPage3: false\n // });\n\n // }\n\n this.setState({ featuredChecked: true });\n };\n\n onFullscreen = (mode) => {\n this.state.report.fullscreen();\n // if(mode){\n //this.setState({fullscreenMode: true});\n // }\n // else {\n // this.setState({fullscreenMode: false});\n // }\n };\n\n handleOutsidePulldownClick = (e) => {\n if (\n this.pullDownMenuRef &&\n this.pullDownMenuRef.current &&\n !this.pullDownMenuRef.current.contains(e.target)\n ) {\n this.setState({ isPullDownMenuOpen: false });\n }\n };\n\n filterPullDownFacilities = (visualFacilities, userFacilities) => {\n let filtered = [];\n if (\n browserStorage.getData('savedFacility')[this.props.name][\n `${this.state.currentSelectedReport}`\n ] !== null\n ) {\n const savedView =\n browserStorage.getData('savedFacility')[this.props.name][\n `${this.state.currentSelectedReport}`\n ];\n if (\n savedView.checkedFacilities !== null &&\n savedView.checkedFacilities.values &&\n savedView.checkedFacilities.values.length > 0\n ) {\n filtered = userFacilities.filter((el) =>\n savedView.checkedFacilities.values.includes(el.name)\n );\n } else {\n filtered = visualFacilities.map((vf) => {\n vf = vf.trim();\n let res = userFacilities.find((uf) => uf.name.trim() === vf);\n return res;\n });\n }\n filtered = filtered.filter((el) => el !== undefined);\n return filtered;\n }\n };\n\n downloadReport = (facilityId) => {\n this.setState({\n isReportDownload: true,\n isPullDownMenuOpen: false,\n });\n\n return reportAPI\n .downloadReport(facilityId)\n .then((res) => {\n this.setState({\n isReportDownload: false,\n toasterMessage: 'Report downloaded successfully!',\n isDownloadError: false,\n });\n })\n .catch((err) => {\n this.setState({\n isReportDownload: false,\n toasterMessage: 'Error when downloading report!',\n isDownloadError: true,\n });\n });\n };\n\n isChartType = (type) => {\n return (\n type === 'donutChart' ||\n type === 'barChart' ||\n type === 'columnChart' ||\n type === 'pieChart'\n );\n };\n\n transformPBIExportData = (exportData) => {\n let dataArr = exportData.data.split('\\n');\n const title = dataArr.shift();\n dataArr = dataArr.filter((el) => el !== '' && el !== title);\n dataArr = dataArr.map((el) => {\n return el.trim();\n });\n return dataArr;\n };\n\n setUpFacilityCheckboxes = (visuals, savedFacilites) => {\n let checkboxesListView = visuals.filter(\n (visual) => visual.title === '*Use ctrl key to select multiple*'\n )[0];\n return checkboxesListView\n .exportData(models.ExportDataType.Summarized, CONFIG.get_max_facilities())\n .then((data) => {\n const facilities = this.transformPBIExportData(data);\n let checkedFacilities = null;\n switch (true) {\n case savedFacilites === null:\n checkedFacilities = null;\n break;\n case savedFacilites.values.length > 0:\n let res = savedFacilites.values.filter(\n (el) => facilities.includes(el.trim()) || facilities.includes(el)\n );\n if (res.length === 0) {\n checkedFacilities = null;\n break;\n } else {\n savedFacilites.values = res;\n checkedFacilities = savedFacilites;\n break;\n }\n default:\n break;\n }\n\n return checkboxesListView.setSlicerState({\n filters: [checkedFacilities],\n });\n })\n .catch((err) => console.log(err));\n };\n\n // handleKeypress = (e) => {\n // //it triggers by pressing the esc key\n // console.log(\"Escape key pressed\", e.keyCode );\n\n // if (e.keyCode === 27) {\n // this.onFullscreen(false);\n // }\n // };\n\n render = () => {\n const {\n featuredReport,\n showReport,\n displayToaster,\n showOtherReport,\n otherReport,\n filteredFacilities,\n toasterMessage,\n isReportDownload,\n isDownloadError,\n } = this.state;\n const { isHeaderMenu } = this.props;\n const bi_type = 'report';\n\n return (\n \n {/* Refresh Report Toaster */}\n this.refreshReport()}\n actionTitle='Refresh Report'\n icon={iconrefresh}\n />\n {/* Download Report Toaster */}\n this.setState({ toasterMessage: cb })}\n />\n
\n {!this.state.enableOtherReport && (\n
\n this.onFeaturedReport()}\n readOnly\n />\n \n
\n )}\n {this.state.enableOtherReport && (\n
\n this.onFeaturedReport()}\n readOnly\n />\n \n\n this.onShowOtherReport()}\n readOnly\n />\n \n
\n )}\n\n
\n
\n
\n \n
\n
\n {\n e.preventDefault();\n this.setState({\n isPullDownMenuOpen: !this.state.isPullDownMenuOpen,\n });\n }}\n disabled={\n !this.state.isReportLoaded || this.state.isReportDownload\n }\n >\n \n \n \n Process Report\n \n \n \n \n \n {filteredFacilities &&\n filteredFacilities.map((item) => (\n this.downloadReport(item.id)}\n style={{ textTransform: 'capitalize' }}\n >\n {item.name}\n \n ))}\n \n
\n
\n\n this.onFullscreen(true)}\n >\n \n \n \n Fullscreen\n \n
\n
\n \n
\n {/*
*/}\n {!this.state.isReportLoaded && (\n \n )}\n {showReport && (\n {this.onReportLoaded()}],\n [\n 'rendered',\n () => {\n this.onReportRendered();\n },\n ],\n [\n 'pageChanged',\n () => {\n this.onPageChanged();\n },\n ],\n ])\n }\n getEmbeddedComponent={(embeddedReport) => {\n this.setState({\n report: embeddedReport,\n });\n }}\n />\n )}\n {showOtherReport && (\n {this.onReportLoaded()}],\n [\n 'rendered',\n () => {\n this.onReportRendered();\n },\n ],\n [\n 'pageChanged',\n () => {\n this.onPageChanged();\n },\n ],\n ])\n }\n settings={{\n navContentPanelEnabled: true,\n layoutType: models.LayoutType.Custom,\n customLayout: {\n displayOption: models.DisplayOption.FitToPage,\n },\n }}\n getEmbeddedComponent={(embeddedReport) => {\n this.setState({\n report: embeddedReport,\n });\n }}\n />\n )}\n
\n {(this.state.isPullDownMenuOpen || isHeaderMenu) && (\n
\n )}\n
\n {/* {fullscreenMode &&\n
\n Press Esc to exit fullscreen\n
\n } */}\n
\n );\n };\n}\n\nexport default withRouter(UVReport);\n","import React from \"react\";\n\nimport \"./Sub.scss\";\nimport iconEnclosures from \"images/icon-nav-enclosures.svg\";\nimport iconUsers from \"images/icon-nav-users.svg\";\nimport iconDepartments from \"images/icon-nav-departments.svg\";\nimport iconOperators from \"images/icon-nav-operators.svg\";\n\nimport { UVCFooter } from \"helpers/constant\";\nimport { DotLoading } from \"components/common\";\nexport default class Sub extends React.Component {\n state = {\n activeNavItem: this.props.activeTab,\n };\n\n componentDidUpdate = (prevProps, prevState) => {\n if (prevProps.activeTab !== this.props.activeTab) {\n this.setState({ activeNavItem: this.props.activeTab });\n }\n };\n\n iconRender = (iconName) => {\n switch (iconName) {\n case \"iconEnclosures\":\n return iconEnclosures;\n case \"iconUsers\":\n return iconUsers;\n case \"iconDepartments\":\n return iconDepartments;\n case \"iconOperators\":\n return iconOperators;\n default:\n return;\n }\n };\n\n changeActiveNabItem = (index) => {\n this.setState({ activeNavItem: index });\n this.props.setActiveTab(index);\n };\n\n render = () => {\n const { children, title, loading, loadingTitle } = this.props;\n const { activeNavItem } = this.state;\n\n return (\n \n
{title && title}
\n {loading ? (\n \n ) : (\n \n
\n
\n {UVCFooter.links.map((item, index) => (\n
this.changeActiveNabItem(index)}>\n
\n \"\"\n
{item.key === \"uv-footer-enclosure\" ? item.title.split(\" \")[1] : item.title}
\n
\n
\n ))}\n
\n
{children}
\n
\n
\n )}\n
\n );\n };\n}\n","import React from \"react\";\nimport { Grid, Typography, Tooltip } from \"@material-ui/core\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport iconEdit from \"images/icon-edit.svg\";\nimport iconWarning from \"images/icon-warning-white.svg\";\nimport iconEnclosures from \"images/graphic-enclosures.svg\";\n\nimport { facilityAdminRole, UVCAdmin, uvcAdminRole } from \"helpers/constant\";\nimport { pastDateCalculator } from \"helpers/functions\";\n\nimport { EditEnclosureModal, EditSoftwareModal } from \"components/uv-admin/details\";\nimport _ from \"lodash\";\n\nexport const OFFLINE_STATUS = \"\";\nexport const LOST_CONNECTION = \"lost_connection\";\n\nexport const EDIT_ENCLOSURE = \"edit\";\nexport const ADD_ENCLOSURE = \"add\";\nexport default class Enclosures extends React.Component {\n state = {\n selectedEnclosure: null,\n isEditVersionModalOpen: false,\n isEditEnclosureModalOpen: false,\n enclosureAction: ADD_ENCLOSURE,\n enclosures: this.props.enclosures,\n };\n\n mouseEnter = (e, id, type) => {\n const enclosures = this.state.enclosures.map((value, indx) => {\n if (value.id === id && e.target.scrollWidth > e.target.clientWidth) {\n if (type === 'title') value.isOpenTitle = true;\n if (type === 'location') value.isOpenLocation = true;\n if (type === 'udi') value.isOpenUdi = true;\n if (type === 'last_check_in') value.isOpenLastCI = true;\n } else {\n value.isOpenTitle = false;\n value.isOpenLocation = false;\n value.isOpenUdi = false;\n value.isOpenLastCI = false;\n }\n return value;\n });\n\n this.setState({ enclosures });\n }\n\n render = () => {\n const { softwareVersions, roles, fetchFacilityDetail, setToaster, facilityId, setStackToaster, isUserSessionExpire } = this.props;\n const {\n isEditVersionModalOpen,\n selectedEnclosure,\n isEditEnclosureModalOpen,\n enclosureAction,\n enclosures,\n } = this.state;\n\n return (\n \n
\n {enclosures.length > 0 ? (\n \n
\n
{UVCAdmin.facilityDetails.enclosures.grantTitle}
\n
\n {_.find(roles, { name: uvcAdminRole, facility_id: null }) && (\n \n )}\n
\n \n {enclosures.map((enclosure) => (\n \n
\n
\n \n
this.mouseEnter(e, enclosure.id, 'title')}>{enclosure[\"nickname\"]}
\n
\n
\n {`Version ${enclosure[\"software_version\"] || \"Unknown\"}`}\n
\n {Boolean(_.find(roles, { name: uvcAdminRole, facility_id: null })) ? (\n
\n this.setState({ isEditVersionModalOpen: true, selectedEnclosure: enclosure })}\n >\n \"\"\n \n
\n ) : (\n
\n )}\n
\n {(Boolean(_.find(roles, { name: uvcAdminRole, facility_id: null })) || Boolean(_.find(roles, { name: facilityAdminRole, facility_id: facilityId }))) &&\n
\n this.setState({ isEditEnclosureModalOpen: true, selectedEnclosure: enclosure, enclosureAction: EDIT_ENCLOSURE })}\n >\n \"\"\n \n
\n }\n
\n \n {UVCAdmin.facilityDetails.enclosures.enclosureModal.map(\n (item) =>\n item.key !== \"nickname\" && (\n \n
\n {enclosure.hasOwnProperty(item.key) && (\n \n {item.title}\n {![\"last_check_in\", \"display_due_date_on_tags\", \"location\", \"udi\"].includes(item.key)\n &&
{enclosure[item.key]}
}\n \n {item.key === \"last_check_in\" \n && (\n \n this.mouseEnter(e, enclosure.id, item.key)}>{pastDateCalculator(enclosure[item.key])}\n \n \n )}\n\n {item.key === \"display_due_date_on_tags\"\n && (\n \n {enclosure[item.key].toString() === 'true' ? 'Yes' : 'No'}\n \n )}\n {(item.key === \"location\" || item.key === \"udi\")\n && (\n \n this.mouseEnter(e, enclosure.id, item.key)}>{enclosure[item.key]}\n \n )}\n
\n )}\n
\n
\n )\n )}\n
\n
\n {enclosure[\"connection_status\"] === LOST_CONNECTION && (\n
\n
\n \n \"\"\n \n {UVCAdmin.facilityDetails.enclosures.offlineMessage}\n
\n
\n )}\n
\n
\n
\n ))}\n
\n
\n ) : (\n
\n
\n \"No-Enclosures\"\n
\n
\n
\n

{UVCAdmin.facilityDetails.enclosures.grantTitle}

\n
{UVCAdmin.facilityDetails.enclosures.noEnclosureDesc}
\n {_.find(roles, { name: uvcAdminRole }) && (\n \n )}\n
\n
\n
\n )}\n
\n this.setState({ isEditVersionModalOpen: cb, selectedEnclosure: null })}\n onSubmit={(cb) => {\n this.setState({\n isEditVersionModalOpen: cb,\n selectedEnclosure: null,\n });\n fetchFacilityDetail();\n }}\n setToaster={(type, msg) => setToaster(type, msg)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire}\n />\n {\n this.setState({\n isEditEnclosureModalOpen: cb,\n selectedEnclosure: null,\n });\n }}\n onSubmit={(cb) => {\n this.setState({\n isEditEnclosureModalOpen: cb,\n selectedEnclosure: null,\n });\n fetchFacilityDetail();\n }}\n enclosure={selectedEnclosure}\n action={enclosureAction}\n versions={softwareVersions}\n setToaster={(type, msg) => setToaster(type, msg)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire}\n />\n
\n );\n };\n}\n","import React from 'react'\nimport { CustomizeSelect } from 'components/common';\n\nimport \"components/uv-admin/details/Detail.scss\";\n\nexport default class SoftwareSelection extends React.Component {\n\n render = () => {\n const { setVersion, selectedVersion, versions } = this.props;\n\n return (\n
\n {versions && (\n setVersion(val)} value={selectedVersion} options={versions} />\n )}\n
\n );\n };\n}\n","import React from \"react\";\nimport { Grid, Checkbox, FormControlLabel, Tooltip } from \"@material-ui/core\";\n\nimport { SoftwareSelection } from \"components/uv-admin/details\";\nimport { Modal } from \"components/common\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\";\n\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\n\nimport { UVCAdmin } from \"helpers/constant\";\nimport { report as reportAPI } from \"services/api\";\n\nexport default class EditSoftwareModal extends React.Component {\n state = {\n enclosure: null,\n softwareOptions: [...UVCAdmin.facilityDetails.enclosures.softwareSelectionOptions],\n isUVESoftwareProcessing: false,\n isOpenTitle: false,\n };\n\n componentDidUpdate = (prevProps, prevState) => {\n if (prevProps.enclosure !== this.props.enclosure && this.props.enclosure !== null) {\n this.setState({ enclosure: this.props.enclosure });\n }\n if(prevProps.isUserSessionExpire !== this.props.isUserSessionExpire && this.props.isUserSessionExpire === true) {\n this.handleClose(false);\n }\n };\n\n handleChange = (key, val) => {\n this.setState((prevState) => ({\n enclosure: {\n ...prevState.enclosure,\n [key]: val,\n },\n }));\n };\n\n transformVersion = (versionName) => {\n let possibleVersion = this.props.versions.filter(ver => ver.title === versionName)[0];\n return possibleVersion ? possibleVersion['key'] : \"\";\n }\n\n setVersion = (val) => {\n let versionName = this.props.versions.filter(ver => ver.key === val)[0]['title'];\n this.handleChange('next_version', versionName);\n this.handleChange('enclosure_software_package_id', val);\n }\n\n handleClose = (cb) => {\n this.props.onClose(cb);\n this.setState({ enclosure: null });\n };\n\n updateSoftware = () => {\n let d = new Date();\n this.setState({isUVESoftwareProcessing: true});\n let enclosure = {...this.state.enclosure, 'next_version_updated_at': d.toISOString()}\n return reportAPI.updateUVE(enclosure.id, enclosure)\n .then((res) => {\n if (res) {\n this.setState({\n isUVESoftwareProcessing: false,\n enclosure: null,\n })\n }\n })\n .then(() => this.props.onSubmit(false))\n .then(() => \n // this.props.setToaster(toasterMessageType.SUCCESS, 'Enclosure updated successfully!')\n this.props.setStackToaster(\n (\n \n )\n )\n )\n .catch(err => {\n this.setState({\n isUVESoftwareProcessing: false,\n })\n // this.props.setToaster(toasterMessageType.ERROR, 'Error when updating enclosure!')\n this.props.setStackToaster(\n (\n \n )\n )\n })\n }\n\n mouseEnter = (e) => {\n if (e.target.scrollWidth > e.target.clientWidth) {\n this.setState({ isOpenTitle: true });\n }\n }\n\n render = () => {\n const { open, versions } = this.props;\n const { enclosure, softwareOptions, isUVESoftwareProcessing, isOpenTitle } = this.state;\n\n return (\n \n
\n
Required
\n
\n {enclosure && (\n \n
\n \n {enclosure.nickname}\n \n {' Currently Running: '}\n {`Version ${enclosure.software_version || 'Unknown'}`}\n
\n \n \n this.setVersion(val)} />\n \n \n
\n
\n
\n \n {softwareOptions.map((opt) => (\n \n this.handleChange(opt.key, e.target.checked)} \n name={opt.desc} \n />} \n label={opt.desc} />\n \n ))}\n \n
\n )}\n \n }\n onClose={(cb) => this.handleClose(cb)}\n action={\n
\n
\n \n \n
\n
\n }\n loading={isUVESoftwareProcessing}\n />\n );\n };\n}\n","import React from \"react\";\nimport _ from \"lodash\";\n\n// import { Grid, FormControlLabel, Checkbox } from \"@material-ui/core\";\nimport { Grid } from \"@material-ui/core\";\n\nimport { Modal, TextField, Switch, CustomizeSelect } from \"components/common\";\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\n// import { SoftwareSelection } from \"components/uv-admin/details\";\nimport { EDIT_ENCLOSURE, ADD_ENCLOSURE } from \"components/uv-admin/details/enclosures/Enclosures\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\";\n\nimport { UVCAdmin, facilityAdminRole, uvcAdminRole } from \"helpers/constant\";\nimport { report as reportAPI } from \"services/api\";\nexport default class EditEnclosureModal extends React.Component {\n initialState = {\n selectedEnclosure: null,\n selectedSoftwareOption: null,\n stopFlag: false,\n isResetPassword: false,\n isUVEProcessing: false,\n isPasswordError: false,\n configurationTypes: [\n {\n key: 1,\n title: \"1\",\n },\n {\n key: 2,\n title: \"2\",\n },\n {\n key: 3,\n title: \"3\",\n },\n {\n key: 4,\n title: \"4\",\n },\n ],\n softwareOptions: UVCAdmin.facilityDetails.enclosures.softwareSelectionOptions,\n enclosureModal: UVCAdmin.facilityDetails.enclosures.enclosureDetails,\n };\n\n state = {...this.initialState};\n passwordFields = React.createRef();\n\n componentDidUpdate = (prevProps) => {\n if(prevProps.isUserSessionExpire !== this.props.isUserSessionExpire && this.props.isUserSessionExpire === true) {\n this.handleClose(false, this.props.onClose)\n }\n if (prevProps.enclosure !== this.props.enclosure && this.props.action === EDIT_ENCLOSURE) {\n let initializeModal = this.state.enclosureModal.map(field => {\n let obj = {...field, isError: false, errorMessage: ''};\n return obj\n })\n this.setState({ selectedEnclosure: this.props.enclosure, enclosureModal: initializeModal });\n }\n else if (this.props.action === ADD_ENCLOSURE && !this.state.stopFlag) {\n let initializeModal = this.state.enclosureModal.map(field => {\n let obj = {...field, isError: false, errorMessage: ''};\n return obj\n })\n this.setState({ enclosureModal: initializeModal })\n this.state.enclosureModal.forEach(field => {\n this.setState(prevState => ({\n selectedEnclosure: {\n ...prevState.selectedEnclosure,\n [field.key]: this.renderInitialValue(field.key),\n },\n stopFlag: true\n }))\n })\n this.state.softwareOptions.forEach(field => {\n this.setState(prevState => ({\n selectedSoftwareOption: {\n ...prevState.selectedSoftwareOption,\n [field.key]: false,\n },\n }))\n })\n }\n };\n\n renderInitialValue = (key) => {\n switch(key) {\n case \"display_due_date_on_tags\":\n return true\n case \"configuration_type\":\n return this.state.configurationTypes[0].key\n case \"enclosure_software_package_id\":\n return null;\n default: return \"\";\n }\n }\n\n onChange = (key, value) => {\n this.setState(\n (prevState) => ({\n selectedEnclosure: {\n ...prevState.selectedEnclosure,\n [key]: value,\n },\n })\n );\n };\n\n onChangeChecked = (key, value) => {\n this.setState(\n (prevState) => ({\n selectedSoftwareOption: {\n ...prevState.selectedSoftwareOption,\n [key]: value,\n },\n })\n );\n }\n\n transformVersion = (versionName) => {\n return this.props.versions.filter(ver => ver.title === versionName)[0]['key'];\n }\n\n setVersion = (val) => {\n let versionName = this.props.versions.filter(ver => ver.key === val)[0]['title'];\n this.onChange('next_version', versionName);\n this.onChange('enclosure_software_package_id', val)\n }\n\n formValidation = (isPassword, stateData, stateModal) => {\n let data = this.state[stateData];\n let modal = !isPassword \n ? this.state[stateModal].filter(el => el.key !== 'password' && el.key !== 'password_confirmation') \n : this.state[stateModal];\n modal.forEach((el, index) => {\n switch(true) {\n case !data:\n case !data.hasOwnProperty(el.key):\n case data && data[el.key] === \"\":\n el.isError = true;\n el.errorMessage = \"Required Field\";\n break\n default:\n break;\n }\n this.setState({\n [stateModal]: [\n ...this.state[stateModal].slice(0, index),\n Object.assign({}, this.state[stateModal][index], el),\n ...this.state[stateModal].slice(index + 1),\n ]});\n })\n return !Boolean(_.find(modal, ['isError', true]))\n }\n\n editEnclosure = () => {\n if (!this.formValidation(this.state.isResetPassword, 'selectedEnclosure', 'enclosureModal')) {\n return\n } else {\n let { selectedEnclosure } = this.state;\n this.setState({isUVEProcessing: true}) \n return reportAPI.updateUVE(selectedEnclosure.id, {'enclosure': selectedEnclosure})\n .then((res) => {\n if (res) {\n this.setState({\n isUVESoftwareProcessing: false,\n selectedEnclosure: null,\n }, () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, 'Enclosure updated successfully!');\n this.props.setStackToaster(\n (\n \n )\n )\n this.handleClose(false, this.props.onSubmit)\n })\n }\n })\n .catch(err => {\n this.handleError(err)\n })\n }\n }\n\n addEnclosure = () => {\n if (!this.formValidation(true, 'selectedEnclosure', 'enclosureModal')) {\n return\n } else {\n let enclosure = {...this.state.selectedEnclosure, 'facility_id': this.props.facilityId}\n enclosure = _.omit(enclosure, ['versionName']);\n this.setState({isUVEProcessing: true})\n return reportAPI.addUVE({'enclosure': enclosure})\n .then((res) => {\n let updatedEnclosure = Object.assign(res, this.state.selectedSoftwareOption)\n return reportAPI.updateUVE(updatedEnclosure.id, updatedEnclosure)\n })\n .then((res) => {\n if(res) {\n this.setState({\n isUVEProcessing: false,\n selectedEnclosure: null,\n }, () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, 'New enclosure added to facility');\n this.props.setStackToaster(\n (\n \n )\n )\n this.handleClose(false, this.props.onSubmit)\n })\n }\n })\n .catch(err => {\n this.handleError(err)\n })\n }\n }\n\n handleClose = (val, callback) => {\n let initializeModal = this.state.enclosureModal.map(field => {\n let obj = {...field, isError: false, errorMessage: ''};\n this.setState(prevState => ({\n \n selectedEnclosure: {\n ...prevState.selectedEnclosure,\n [field.key]: field.key !== \"display_due_date_on_tags\" ? '' : false,\n }\n }))\n return obj\n })\n this.setState({ enclosureModal: initializeModal, isResetPassword: false, stopFlag: false }, () => {\n callback(val)\n });\n \n };\n\n toggleResetPassword = (e) => {\n let { isResetPassword, enclosureModal } = this.state;\n this.setState({ \n isResetPassword: !isResetPassword\n })\n if(!isResetPassword) {\n let modal = enclosureModal.map(field => {\n if(field.key === 'password' || field.key === 'password_confirmation') {\n field = {\n ...field,\n isError: false,\n errorMessage: '',\n }\n }\n return field\n })\n this.setState({enclosureModal: modal})\n }\n }\n\n handleRemoveInputError = (key) => {\n this.setState((prevState) => ({\n enclosureModal: prevState.enclosureModal.map((obj) => {\n return obj.key === key && obj.isError\n ? Object.assign(obj, {isError: false, errorMessage: ''})\n : obj\n })\n }))\n }\n\n handleError = (err) => {\n if (err && err.response && err.response.status && err.response.status === 422) {\n let errors = err.response.data.errors;\n let errorModal = this.state.enclosureModal.map(field => {\n let obj = _.indexOf(_.keys(errors), field.key) !== -1 \n ? {...field, isError: true, errorMessage: _.result(errors, field.key)} \n : {...field, isError: false, errorMessage: ''}\n return obj\n })\n this.setState({enclosureModal: errorModal})\n }\n else {\n // this.props.setToaster(toasterMessageType.ERROR, 'Error when updating enclosure!')\n this.props.setStackToaster(\n (\n \n )\n )\n }\n this.setState({\n isUVEProcessing: false,\n })\n }\n\n render = () => {\n const { \n open, \n action, \n // versions, \n roles, \n onClose } = this.props;\n const { \n selectedEnclosure, \n isResetPassword, \n configurationTypes, \n // softwareOptions, \n enclosureModal, \n isUVEProcessing, \n isPasswordError, \n // selectedSoftwareOption \n } = this.state;\n\n return (\n \n
\n
Required
\n
\n \n \n {enclosureModal.filter(field => field.isShow && (field.key !== \"password\" && field.key !== 'password_confirmation')).map((field, index) =>\n field.key !== \"display_due_date_on_tags\" ? (\n \n {field.key !== \"configuration_type\" ? (\n \n this.onChange(field.key, val)}\n onFocus={(e) => this.handleRemoveInputError(field.key)}\n autoFocus={action === ADD_ENCLOSURE && field.key === 'nickname' ? 'autoFocus' : ''}\n />\n \n ) : (\n \n this.onChange(field.key, val)} \n value={selectedEnclosure && selectedEnclosure['configuration_type'] ? selectedEnclosure[field.key] : configurationTypes[0].key} \n options={configurationTypes} />\n \n )}\n \n ) : (\n \n {Boolean(_.find(roles, {'name': uvcAdminRole})) ? (\n \n this.onChange(field.key, val)} />\n \n ) : (\n
\n )}\n
\n )\n )}\n
\n {/* {action === ADD_ENCLOSURE && (\n
\n \n \n \n this.setVersion(val)} />\n \n \n
\n
\n
\n \n {softwareOptions.map((opt) => (\n \n this.onChangeChecked(opt.key, e.target.checked)} \n name={opt.desc} />} \n label={opt.desc} />\n \n ))}\n \n
\n
\n )} */}\n {action === EDIT_ENCLOSURE && Boolean(_.find(roles, {'name': uvcAdminRole})) && (\n
\n )}\n {action === EDIT_ENCLOSURE && Boolean(_.find(roles, {'name': uvcAdminRole})) && (\n \n )}\n {(isResetPassword || action === ADD_ENCLOSURE) && (\n \n {enclosureModal.filter(field => field.key === \"password\" || field.key === 'password_confirmation').map(field => (\n \n this.onChange(field.key, val)} \n autoComplete=\"new-password\" \n onFocus={(e) => this.setState((prevState) => ({\n enclosureModal: prevState.enclosureModal\n .map((obj) => {\n return obj.key === 'password' || obj.key === 'password_confirmation'\n ? Object.assign(obj, {isError: false, errorMessage: ''})\n : obj\n }),\n isPasswordError: false,\n }))} />\n \n ))}\n \n )}\n
\n {isPasswordError &&
Password is not match
}\n \n }\n onClose={(cb) => this.handleClose(cb, onClose)}\n action={\n
\n
\n \n {action === EDIT_ENCLOSURE ? (\n \n ) : (\n \n )}\n
\n
\n }\n loading={isUVEProcessing}\n />\n );\n };\n}\n","import React from \"react\";\nimport _ from \"lodash\";\nimport { TableCell, TableRow } from \"@material-ui/core\";\nimport { Pagination } from \"@material-ui/lab\";\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport iconEmptyUsers from \"images/graphic-users.svg\";\nimport iconEdit from \"images/icon-edit.svg\";\nimport iconDelete from \"images/icon-delete.svg\";\n\nimport { defaultRowsPerPage, UVCAdmin, TOAST_MESSAGE, uvcAdminRole, facilityAdminRole } from \"helpers/constant\";\nimport { formatRole } from \"helpers/functions\";\nimport { report as reportAPI } from \"services/api\";\n\nimport { CustomizeTable } from \"components/common\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\";\nimport { ModifyUserModal } from \"components/uv-admin/details\";\n\nexport const EDIT_USER = \"edit\";\nexport const ADD_USER = \"add\";\nexport const DELETE_USER = \"delete\";\n\nexport default class Users extends React.Component {\n\n state = {\n headers: UVCAdmin.facilityDetails.users.userModal.headers,\n rowsPerPage: defaultRowsPerPage,\n currentPage: 1,\n userAction: ADD_USER,\n isEditUserModal: false,\n selectedUser: null,\n };\n\n openModifyUserModal = () => {\n this.setState({isEditUserModal: true, userAction: ADD_USER});\n }\n\n resendInvitation = (userId) => {\n reportAPI.resendInvitation(this.props.facilityId, userId).then(res => {\n // this.props.setToaster(toasterMessageType.SUCCESS, TOAST_MESSAGE.RESEND_INVITATION_SUCCESS)\n this.props.setStackToaster(\n (\n \n )\n )\n }, (err) => {\n // this.props.setToaster(toasterMessageType.ERROR, TOAST_MESSAGE.RESEND_INVITATION_ERROR);\n this.props.setStackToaster(\n (\n \n )\n )\n });\n }\n\n render = () => {\n const { users, fetchFacilityDetail, setToaster, roles, facilityId, setStackToaster, isUserSessionExpire } = this.props \n const { headers, rowsPerPage, currentPage, userAction, isEditUserModal, selectedUser } = this.state;\n\n return (\n \n
\n {users && users.length > 0 ? (\n \n
\n
{UVCAdmin.facilityDetails.users.grantTitle}
\n
\n {(Boolean(_.find(roles, {'name': uvcAdminRole, facility_id: null }))\n || Boolean(_.find(roles, {'name': facilityAdminRole, facility_id: facilityId}))) && (\n \n )}\n
\n
\n \n {users.slice((currentPage - 1) * rowsPerPage, (currentPage - 1) * rowsPerPage + rowsPerPage).map((row) => (\n \n {headers.map(\n (header) =>\n header.isShow && (\n \n {header.key !== \"invitation_link\" && header.key !== \"invitation_pending\" && header.key !== \"role_name\" && row[header.key]}\n {header.key === \"invitation_link\" \n && row[\"invitation_pending\"] === \"Yes\"\n && (Boolean(_.find(roles, {'name': uvcAdminRole, facility_id: null})) || Boolean(_.find(roles, {'name': facilityAdminRole, facility_id: facilityId})))\n && }\n {header.key === \"actions\" && (\n
\n {(Boolean(_.find(roles, {'name': uvcAdminRole, facility_id: null}))\n || Boolean(_.find(roles, {'name': facilityAdminRole, facility_id: facilityId}))) && (\n \n \n \n \n )}\n
\n )}\n {header.key === \"invitation_pending\" && row[\"invitation_pending\"] === \"Yes\" &&
Pending
}\n {header.key === \"role_name\" && formatRole(row[header.key])}\n \n )\n )}\n \n ))}\n \n }\n pagination={\n this.setState({ currentPage: page })}\n shape=\"rounded\"\n />\n }\n />\n
\n
\n ) : (\n
\n
\n \"No-Users\"\n
\n
\n
\n

{UVCAdmin.facilityDetails.users.grantTitle}

\n
{UVCAdmin.facilityDetails.users.noUsersDesc}
\n {(Boolean(_.find(roles, {'name': uvcAdminRole, facility_id: null}))\n || Boolean(_.find(roles, {'name': facilityAdminRole, facility_id: facilityId}))) && (\n \n )}\n
\n
\n
\n )}\n
\n {\n this.setState({\n isEditUserModal: showFlag,\n selectedUser: null}, () => {\n if (reloadFlag) fetchFacilityDetail();\n });\n \n }}\n onSubmit={(cb) => {\n this.setState({\n isEditUserModal: cb,\n selectedUser: null\n }); \n fetchFacilityDetail()\n }\n }\n setToaster={(type, msg) => setToaster(type, msg)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire}\n />\n
\n );\n };\n}\n","import React from \"react\";\nimport _ from \"lodash\";\nimport { Grid, Typography } from \"@material-ui/core\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport warningIcon from \"images/icon-warning-large-red.svg\";\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\n\nimport { CustomizeSelect, Modal, TextField, Switch } from \"components/common\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\"\nimport { EDIT_USER, ADD_USER, DELETE_USER } from \"components/uv-admin/details/users/Users\";\nimport { UVCAdmin, ERROR_MESSAGE, TOAST_MESSAGE } from \"helpers/constant\";\nimport { validateEmail } from \"helpers/functions\";\nimport { report as reportAPI } from \"services/api\";\n\nexport default class ModifyUser extends React.Component {\n state = {\n selectedUser: null,\n isAddAnotherUser: false,\n stopFlag: false,\n userRoles: [\n {\n key: \"user\",\n title: \"User\",\n },\n {\n key: \"facility_admin\",\n title: \"Facility Admin\",\n },\n ],\n isReloadNeeded: false\n };\n\n componentDidUpdate = (prevProps, prevState) => {\n if(prevProps.isUserSessionExpire !== this.props.isUserSessionExpire && this.props.isUserSessionExpire === true) {\n this.handleClose(false);\n }\n if (prevProps.user !== this.props.user && (this.props.action === EDIT_USER || this.props.action === DELETE_USER)) {\n this.setState({ selectedUser: this.props.user, stopFlag: true });\n } else if (this.props.action === ADD_USER && !this.state.stopFlag) {\n this.setState({\n selectedUser: {\n email: \"\",\n role_name: this.state.userRoles[0].key,\n },\n stopFlag: true,\n });\n }\n };\n\n onChange = (key, value) => {\n this.setState((prevState) => ({\n selectedUser: {\n ...prevState.selectedUser,\n [key]: value,\n },\n }));\n };\n\n submitUser = (facilityId) => {\n if (!this.isFormValidated()) {\n return;\n } else {\n this.setState({ isProcessing: true });\n\n reportAPI\n .addUser(facilityId, this.state.selectedUser)\n .then((res) => {\n if (res) {\n this.setState({\n isProcessing: false,\n selectedUser: null,\n }, () => \n // this.props.setToaster(toasterMessageType.SUCCESS, TOAST_MESSAGE.ADD_USER_SUCCESS)\n this.props.setStackToaster(\n (\n \n )\n )\n );\n }\n if (!this.state.isAddAnotherUser) {\n this.setState({\n isAddAnotherUser: false,\n isReloadNeeded: false\n }, () => {\n this.props.onClose(true);\n this.props.onSubmit(true);\n });\n } else {\n this.setState({\n isReloadNeeded: true,\n selectedUser: {\n email: \"\",\n role_name: this.state.userRoles[0].key,\n }\n })\n }\n })\n .catch((err) => this.handleError(err));\n }\n };\n\n updateUser = (facilityId) => {\n this.setState({ isProcessing: true });\n const { selectedUser } = this.state;\n return reportAPI.updateUser(facilityId, selectedUser.id, selectedUser.role_name)\n .then(res => {\n if (res) {\n this.setState({\n isProcessing: false,\n selectedUser: null,\n }, () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, 'User Role updated successfully!')\n this.props.setStackToaster(\n (\n \n )\n )\n this.props.onSubmit(true);\n });\n }\n })\n .catch(err => this.handleError(err))\n }\n\n deleteUser = (facilityId) => {\n this.setState({ isProcessing: true });\n const { selectedUser } = this.state;\n return reportAPI.updateUser(facilityId, selectedUser.id, '')\n .then(res => {\n if (res) {\n this.setState({\n isProcessing: false,\n selectedUser: null,\n }, () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, 'User has been removed!')\n this.props.setStackToaster(\n (\n \n )\n )\n this.props.onSubmit(true);\n });\n }\n })\n .catch(err => this.handleError(err))\n }\n\n handleError = (err) => {\n if (err && err.response && err.response.status && err.response.status === 422) {\n let errors = err.response.data.errors;\n if (_.indexOf(_.keys(errors), UVCAdmin.facilityDetails.users.userModal.addUserModal[0].key) !== -1) {\n this.setState({ errEmailInput: _.result(errors, UVCAdmin.facilityDetails.users.userModal.addUserModal[0].key )}); \n }\n }\n else {\n // this.props.setToaster(toasterMessageType.ERROR, TOAST_MESSAGE.ADD_USER_ERROR);\n this.props.setStackToaster(\n (\n \n )\n )\n }\n this.setState({\n isProcessing: false,\n })\n }\n\n isFormValidated = () => {\n const selectedUser = this.state.selectedUser;\n\n if (!selectedUser || !selectedUser.email || selectedUser.email === \"\") {\n this.setState({ errEmailInput: ERROR_MESSAGE.REQUIRED_FIELD });\n return false;\n } else {\n if (!validateEmail(selectedUser.email)) {\n this.setState({ errEmailInput: ERROR_MESSAGE.INVALID_EMAIL });\n return false;\n }\n }\n return true;\n };\n\n handleClose = (isOpen, isReloadNeeded) => {\n this.setState({ \n errEmailInput: null, \n errUserRoleInput: null,\n selectedUser: null,\n stopFlag: false, \n }, () => this.props.onClose(isOpen, isReloadNeeded));\n };\n\n render = () => {\n const { open, action, facilityId } = this.props;\n const { userRoles, isAddAnotherUser, selectedUser, errEmailInput, isProcessing, isReloadNeeded } = this.state;\n const modifyUserModalConstants = UVCAdmin.facilityDetails.users.userModal.addUserModal;\n return (\n \n
\n {(action === ADD_USER || action === EDIT_USER) && (\n \n
\n
Required
\n
\n \n {modifyUserModalConstants.map((field) =>\n field.key !== \"role_name\" ? (\n \n this.onChange(field.key, e)}\n onFocus={() => this.setState({ errEmailInput: null })}\n autoFocus={action === ADD_USER && field.key === 'email' ? 'autoFocus' : ''}\n />\n \n ) : (\n \n this.onChange(field.key, val)}\n />\n \n )\n )}\n \n {action === ADD_USER && (\n \n this.setState({\n isAddAnotherUser: val,\n })\n }\n />\n )}\n
\n )}\n {action === DELETE_USER && selectedUser && \n
\n \"\"\n {UVCAdmin.facilityDetails.users.deleteMessage}\n {selectedUser.name || selectedUser.email}\n
\n }\n
\n \n }\n action={\n
\n
\n \n {action === ADD_USER && (\n \n )}\n {action === DELETE_USER && (\n \n )}\n {action === EDIT_USER && (\n \n )}\n
\n
\n }\n onClose={(isOpen) => this.handleClose(isOpen, isReloadNeeded)}\n loading={isProcessing}\n />\n );\n };\n}\n","import React from \"react\";\nimport _ from \"lodash\";\nimport { TableCell, TableRow, Tooltip, Typography } from \"@material-ui/core\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport iconNoEquipments from \"images/graphic-equipment.svg\";\nimport iconEdit from \"images/icon-edit.svg\";\nimport iconDelete from \"images/icon-delete.svg\";\nimport iconSearch from \"images/icon-search.svg\";\n\nimport { UVCAdmin, toasterMessageType } from \"helpers/constant\";\n\nimport { CustomizeAccordion, CustomizeTable, DotLoading, TextField } from \"components/common\";\n\nexport const EQUIPMENT_ADD_OPTIONS = \"equipment_add_options\";\nexport const ADD_EQUIPMENT = \"add_equipment\";\nexport const EDIT_EQUIPMENT = \"edit_equipment\";\nexport const EDIT_EQUIPMENT_TYPE = \"edit_equipment_type\";\nexport const BULK_ADD_EQUIPMENT = \"bulk_add_equipment\";\nexport const DELETE_EQUIPMENT_TYPE = \"delete_equipment_type\";\nexport const DELETE_EQUIPMENT_TYPE_WARNING = \"delete_equipment_type_warning\";\nexport const DELETE_EQUIPMENT = \"delete_equipment\";\n\nexport default class Equipments extends React.Component {\n state = {\n headers: UVCAdmin.facilityDetails.equipments.equipmentsModal.headers,\n searchValue: '',\n isSearchProcessing: false,\n isOpenTitle: false,\n };\n\n typingTimer = null;\n\n componentWillUnmount = () => {\n clearTimeout(this.typingTimer)\n }\n\n handleChangeSearch = (value) => {\n if (value === '') {\n this.setState({ isSearchProcessing: false })\n }\n clearTimeout(this.typingTimer)\n this.setState({searchValue: value, isSearchProcessing: true }, () => \n this.typingTimer = setTimeout(() => {\n return this.state.searchValue \n ? this.props.getEquipmentbySearch(this.state.searchValue).then(() => this.setState({ isSearchProcessing: false }))\n : (this.props.setEmptySeachData(), this.setState({ isSearchProcessing: false }))\n }, 1000)\n )\n }\n\n mouseEnter = (e) => {\n if (e.target.scrollWidth > e.target.clientWidth) {\n this.setState({ isOpenTitle: true });\n }\n }\n render = () => {\n const { \n searchData,\n equipmentInfo, \n handleOpenDeparmentDialog, \n handleOpenEquipmentDialog, \n setSelectedEquipmentType, \n setSelectedEquipment,\n groupedEquipment,\n setToaster, \n } = this.props;\n const { headers, searchValue, isSearchProcessing, isOpenTitle } = this.state;\n\n return (\n \n
\n
\n \n {equipmentInfo.title}\n \n \n
\n \n
\n
\n
\n {groupedEquipment && _.keys(groupedEquipment).length !== 0 ? (\n \n
{UVCAdmin.facilityDetails.equipments.grantTitle}
\n
\n
\n \"\"\n this.handleChangeSearch(val)} />\n
\n
\n \n \n
\n
\n {!searchData && searchData === null && !isSearchProcessing ? (
\n {_.keys(groupedEquipment).map((key) => \n equipmentInfo.protocols.filter((item) => item.equipment_type_name === key)[0] &&\n (\n \n
Cycle Frequency
\n
\n {`${equipmentInfo.protocols.filter((item) => item.equipment_type_name === key)[0][\"frequency\"]} Days`}\n
\n \n {equipmentInfo && equipmentInfo['equipment_types'].filter((item) => item.name === key)[0]['default'] === false ?\n \n :\n \n }\n
\n }\n children={\n groupedEquipment[key].length !== 0\n ? (\n {groupedEquipment[key].map((row) => (\n \n {headers.map(\n (header) =>\n header.isShow && (\n \n {header.key !== 'action' && row[header.key]}\n {header.key === 'action' && (\n \n )}\n \n )\n )}\n \n ))}\n
\n }\n />) : (\n No equipment of this type is currently registered in this department.\n )\n }\n />\n ))}\n ) : (\n
\n \n {isSearchProcessing ? (\n \n ) : (\n \n {_.keys(searchData).length !== 0 && _.keys(searchData).map((key) => \n (\n \n
Cycle Frequency
\n
\n {`${equipmentInfo.protocols.filter((item) => item.equipment_type_name === key)[0][\"frequency\"]} Days`}\n
\n \n {equipmentInfo && equipmentInfo['equipment_types'].filter((item) => item.name === key)[0]['default'] === false ?\n \n :\n \n }\n
\n }\n children={\n searchData[key].length !== 0\n ? (\n {searchData[key].map((row) => (\n \n {headers.map(\n (header) =>\n header.isShow && (\n \n {header.key !== 'action' && row[header.key]}\n {header.key === 'action' && (\n \n )}\n \n )\n )}\n \n ))}\n \n }\n />) : (\n No equipment of this type is currently registered in this department.\n )\n }\n />\n ))}\n {_.keys(searchData).length === 0 && (\n
\n No Equipment Found\n
\n )}\n \n )}\n \n \n )}\n \n \n ) : (\n
\n
\n \"No-Equipments\"\n
\n
\n
\n

{UVCAdmin.facilityDetails.equipments.grantTitle}

\n
{UVCAdmin.facilityDetails.equipments.noEquipmentsDesc}
\n \n
\n
\n
\n )}\n \n \n );\n };\n}\n","import React from \"react\";\nimport _ from \"lodash\"\nimport { Grid, Tooltip, Typography } from \"@material-ui/core\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport iconNoDepartments from \"images/graphic-departments.svg\";\n\nimport { UVCAdmin } from \"helpers/constant\";\nimport { report as reportAPI } from \"services/api\";\n\nimport { Equipments } from \"components/uv-admin/details\";\nimport { DotLoading } from \"components/common\";\nimport { EditDepartmentModal, EditEquipmentModal } from \"components/uv-admin/details\";\nimport { ADD_EQUIPMENT } from \"components/uv-admin/details/equipments/Equipments\";\n\nexport const ADD_DEPARTMENT = \"add\";\nexport const EDIT_DEPARTMENT = \"edit\";\n\nexport default class Departments extends React.Component {\n state = {\n selectedDepartment: null,\n equipmentGeneralInfo: null,\n isLoading: false,\n action: ADD_DEPARTMENT,\n isEditDepartmentModal: false,\n modalDepartment: null,\n equipmentAction: ADD_EQUIPMENT,\n isEditEquipmentDialog: false,\n selectedEquipmentType: null,\n selectedEquipment: null,\n groupedEquipment: null,\n searchData: null,\n isAddEquipmentFired: true,\n departments: this.props.departments,\n };\n\n componentDidMount = () => {\n if (this.props.departments.length > 0) {\n this.handleGetDepartmentBasedOnFlag();\n }\n };\n\n handleGetDepartmentBasedOnFlag = () => {\n if (window.sessionStorage.getItem('isAddEquipmentFired') \n && window.sessionStorage.getItem('isAddEquipmentFired').toString() === 'true') {\n const savedDepartment = JSON.parse(window.sessionStorage.getItem('currentDepartment'))\n let newDepartment = this.props.departments.filter(department => \n !savedDepartment.some(savedDept => savedDept.id === department.id))[0]\n this.setState({ \n selectedDepartment: newDepartment \n }, () => this.getDeparmentsInfo(this.state.selectedDepartment.id));\n }\n else {\n this.setState({ \n selectedDepartment: this.props.departments[0] \n }, () => this.getDeparmentsInfo(this.state.selectedDepartment.id));\n }\n }\n\n getDeparmentsInfo = (id) => {\n this.setState({ isLoading: true, equipmentGeneralInfo: null, searchData: null });\n\n return reportAPI\n .getDepartmentById(id)\n .then((data) => {\n this.setState({ isLoading: false, equipmentGeneralInfo: data });\n return data;\n })\n .then(res => this.reGroupEquipments('groupedEquipment', res[\"equipment_items\"], \"equipment_type\", res[\"equipment_types\"], res[\"protocols\"]))\n .catch((err) => {\n this.setState({ isLoading: false });\n })\n .finally(() => {\n if (window.sessionStorage.getItem('isAddEquipmentFired') \n && window.sessionStorage.getItem('isAddEquipmentFired').toString() === 'true') {\n this.setState({\n isEditEquipmentDialog: true,\n equipmentAction: ADD_EQUIPMENT,\n modalDepartment: this.state.equipmentGeneralInfo\n })\n }\n });\n };\n\n getEquipmentbySearch = (id, val, deptInfo) => {\n return reportAPI.searchEquipment(id, val)\n .then((data) => {\n this.reGroupEquipments('searchData', data, \"equipment_type\", deptInfo[\"equipment_types\"], deptInfo[\"protocols\"])\n })\n }\n\n reGroupEquipments = (stateKey, equipments, key, types, protocol) => {\n if (equipments && types && protocol.length !== 0) {\n let groupedEquipments = _.groupBy(equipments, key);\n if (stateKey === 'groupedEquipment') {\n types.forEach(item => {\n if(!groupedEquipments.hasOwnProperty(item.name)) {\n groupedEquipments = {...groupedEquipments, [item.name]: []}\n }\n })\n }\n this.setState({ [stateKey]: \n groupedEquipments \n });\n }\n else {\n this.setState({ [stateKey]: \n null \n });\n }\n };\n\n onChangeDepartment = (val) => {\n this.setState({ selectedDepartment: val }, () => {\n this.getDeparmentsInfo(val.id);\n });\n };\n\n handleOpenEquipmentDialog =(cb, action) => {\n this.setState({\n isEditEquipmentDialog: cb,\n equipmentAction: action,\n })\n }\n\n mouseEnter = (e, id) => {\n const departments = this.state.departments.map((value, indx) => {\n if (value.id === id && e.target.scrollWidth > e.target.clientWidth) {\n value.isOpenTitle = true;\n } else {\n value.isOpenTitle = false;\n }\n return value;\n });\n this.setState({ departments });\n }\n render = () => {\n const { \n selectedDepartment, \n equipmentGeneralInfo, \n isEditDepartmentModal, \n action, \n modalDepartment, \n equipmentAction, \n isEditEquipmentDialog, \n selectedEquipmentType, \n selectedEquipment,\n groupedEquipment,\n searchData,\n isAddEquipmentFired,\n departments,\n } = this.state;\n const { setToaster, fetchFacilityDetail, facilityId, setStackToaster, isUserSessionExpire } = this.props;\n\n return (\n \n
\n {departments && departments.length > 0 && selectedDepartment ? (\n \n
{UVCAdmin.facilityDetails.departments.grantTitle}
\n
\n \n \n \n this.setState({\n isEditDepartmentModal: true,\n action: ADD_DEPARTMENT,\n })\n }\n >\n Add\n \n
\n {departments.map((dept) => (\n
this.onChangeDepartment(dept)}>\n \n this.mouseEnter(e, dept.id)}>{dept.title}\n \n
\n ))}\n
\n
\n \n {equipmentGeneralInfo ? (\n \n this.setState({\n isEditDepartmentModal: cb,\n action: EDIT_DEPARTMENT,\n modalDepartment: equipmentGeneralInfo\n })\n }\n handleOpenEquipmentDialog={(cb, action) => \n this.setState({\n isEditEquipmentDialog: cb,\n equipmentAction: action,\n modalDepartment: equipmentGeneralInfo\n })\n }\n setSelectedEquipmentType={(cb) => {\n this.setState({selectedEquipmentType: cb})\n }}\n setSelectedEquipment={(cb) => {\n this.setState({selectedEquipment: cb})\n }}\n setToaster={(type, msg) => setToaster(type, msg)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n getEquipmentbySearch={(val) => this.getEquipmentbySearch(selectedDepartment.id, val, equipmentGeneralInfo)}\n setEmptySeachData={() => this.setState({searchData: null})}\n />\n ) : (\n \n )}\n \n
\n
\n
\n ) : (\n
\n
\n \"No-Department\"\n
\n
\n
\n

{UVCAdmin.facilityDetails.departments.grantTitle}

\n
{UVCAdmin.facilityDetails.departments.noDepartmentsDesc}
\n \n
\n
\n
\n )}\n
\n {\n window.sessionStorage.setItem('isAddEquipmentFired', val);\n window.sessionStorage.setItem('currentDepartment', JSON.stringify(this.props.departments))\n }} \n department={modalDepartment} \n onClose={(cb) => this.setState({ \n isEditDepartmentModal: cb,\n modalDepartment: null\n })}\n onSubmit={(cb) => this.setState({ \n isEditDepartmentModal: cb,\n modalDepartment: null\n }, () => fetchFacilityDetail())}\n setToaster={(type, msg) => setToaster(type, msg)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire} \n />\n this.setState({ \n isEditEquipmentDialog: cb,\n modalDepartment: null\n }, () => {\n if (window.sessionStorage.getItem('isAddEquipmentFired') \n && window.sessionStorage.getItem('isAddEquipmentFired').toString() === 'true') {\n window.sessionStorage.setItem('isAddEquipmentFired', false)\n }\n })}\n onSubmit={(dept, cb) => this.setState({ \n isEditEquipmentDialog: cb,\n modalDepartment: null,\n searchData: null, \n }, () => {\n this.setState({selectedDepartment: dept})\n this.getDeparmentsInfo(dept.id)\n if (window.sessionStorage.getItem('isAddEquipmentFired') \n && window.sessionStorage.getItem('isAddEquipmentFired').toString() === 'true') {\n window.sessionStorage.setItem('isAddEquipmentFired', false)\n }\n })}\n setToaster={(type, msg) => setToaster(type, msg)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire}\n onOpen={this.handleOpenEquipmentDialog}\n />\n
\n );\n };\n}\n","import React from \"react\";\nimport _ from \"lodash\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\nimport { ADD_DEPARTMENT, EDIT_DEPARTMENT } from './Departments';\n\nimport { Modal, TextField, Switch } from \"components/common\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\";\nimport { UVCAdmin } from \"helpers/constant\";\n\nimport { report as reportAPI } from \"services/api\";\n\nexport default class EditDepartmentModal extends React.Component {\n state = {\n selectedDepartment: null,\n departmentModal: UVCAdmin.facilityDetails.departments.departmentModal,\n stopFlag: false,\n isDepartmentProcessing: false,\n isAddEquipmentFired: true,\n }\n\n componentDidUpdate = (prevProps) => {\n if(prevProps.isUserSessionExpire !== this.props.isUserSessionExpire && this.props.isUserSessionExpire === true) {\n this.handleClose(false, this.props.onClose);\n }\n if(prevProps.department !== this.props.department && this.props.action === EDIT_DEPARTMENT) {\n let initializeModal = this.state.departmentModal.map(field => {\n let obj = {...field, isError: false, errorMessage: ''};\n return obj\n })\n this.setState({selectedDepartment: this.props.department, departmentModal: initializeModal})\n }\n else if (!this.state.stopFlag && this.props.action === ADD_DEPARTMENT) {\n this.state.departmentModal.forEach(field => {\n this.setState(prevState => ({\n selectedDepartment: {\n ...prevState.selectedDepartment,\n [field.key]: '',\n },\n stopFlag: true\n }))\n })\n }\n }\n\n onChange = (key, value) => {\n this.setState(\n (prevState) => ({\n selectedDepartment: {\n ...prevState.selectedDepartment,\n [key]: value,\n },\n })\n );\n };\n\n formValidation = (stateData, stateModal) => {\n let data = this.state[stateData];\n let modal = this.state[stateModal];\n modal.forEach((el, index) => {\n switch(true) {\n case !data:\n case !data.hasOwnProperty(el.key):\n case data && data[el.key] === \"\":\n el.isError = true;\n el.errorMessage = \"Required Field\";\n break\n default:\n break;\n }\n this.setState({\n [stateModal]: [\n ...this.state[stateModal].slice(0, index),\n Object.assign({}, this.state[stateModal][index], el),\n ...this.state[stateModal].slice(index + 1),\n ]});\n })\n return !Boolean(_.find(modal, ['isError', true]))\n }\n\n addDepartment = () => {\n if (!this.formValidation('selectedDepartment', 'departmentModal')){\n return\n }\n else {\n let newDeparment = {...this.state.selectedDepartment, 'facility_id': this.props.facilityId}\n this.setState({isDepartmentProcessing: true})\n return reportAPI.addDepartment(newDeparment)\n .then(res => {\n if(res) {\n this.setState({\n isDepartmentProcessing: false,\n selectedDepartment: null\n }, () => {\n this.state.isAddEquipmentFired\n && this.state.isAddEquipmentFired === true \n && this.props.setAddEquipmentFired(this.state.isAddEquipmentFired)\n // this.props.setToaster(toasterMessageType.SUCCESS, 'New department added to facility.');\n this.props.setStackToaster(\n (\n \n )\n )\n this.handleClose(false, this.props.onSubmit)\n \n })\n }\n })\n .catch(err => this.handleError(err))\n }\n \n }\n\n updateDepartment = () => {\n if(!this.formValidation('selectedDepartment', 'departmentModal')){\n return\n }\n else {\n const { selectedDepartment } = this.state;\n this.setState({isDepartmentProcessing: true})\n return reportAPI.updateDepartment(selectedDepartment.id, selectedDepartment)\n .then(res => {\n if(res) {\n this.setState({\n isDepartmentProcessing: false,\n selectedDepartment: null\n }, () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, 'Department updated successfully!');\n this.props.setStackToaster(\n (\n \n )\n )\n this.handleClose(false, this.props.onSubmit)\n })\n }\n })\n .catch(err => this.handleError(err))\n }\n }\n\n handleClose = (cb, callback) => {\n let initializeModal = this.state.departmentModal.map(field => {\n let obj = {...field, isError: false, errorMessage: ''};\n return obj\n })\n this.setState({ departmentModal: initializeModal, isAddEquipmentFired: true});\n initializeModal.forEach(field => {\n this.setState(prevState => ({\n selectedDepartment: {\n ...prevState.selectedDepartment,\n [field.key]: '',\n },\n stopFlag: false\n }), () => callback(cb))\n })\n }\n\n handleError = (err) => {\n if (err && err.response && err.response.status && err.response.status === 422) {\n let errors = err.response.data.errors;\n let errorModal = this.state.departmentModal.map(field => {\n let obj = _.indexOf(_.keys(errors), field.key) !== -1 \n ? {...field, isError: true, errorMessage: _.result(errors, field.key)} \n : {...field, isError: false, errorMessage: ''}\n return obj\n })\n this.setState({departmentModal: errorModal})\n }\n else {\n // this.props.setToaster(toasterMessageType.ERROR, 'Error when updating Department!')\n this.props.setStackToaster(\n (\n \n )\n )\n }\n this.setState({\n isDepartmentProcessing: false,\n })\n }\n\n render = () => {\n const { open, action, onClose } = this.props;\n const { departmentModal, selectedDepartment, isDepartmentProcessing, isAddEquipmentFired } = this.state;\n \n return (\n \n
\n
Required
\n
\n \n {departmentModal.map(field => (\n this.onChange(field.key, val)}\n onFocus={(e) => this.setState((prevState) => ({\n departmentModal: prevState.departmentModal.map((obj) => (\n obj.key === field.key && obj.isError\n ? Object.assign(obj, {isError: false, errorMessage: ''})\n : obj\n ))\n }))}\n autoFocus={action === ADD_DEPARTMENT && field.key === 'title' ? 'autoFocus' : ''}\n />\n ))}\n \n {action === ADD_DEPARTMENT && (\n this.setState({isAddEquipmentFired: val})} />\n )}\n \n }\n onClose={(cb) => this.handleClose(cb, onClose)}\n action={\n
\n
\n \n {action === EDIT_DEPARTMENT ? (\n \n ) : (\n \n )}\n
\n
\n }\n loading={isDepartmentProcessing}\n />\n )\n }\n}\n","import React from \"react\";\nimport _ from \"lodash\";\nimport { TableCell, TableRow, Typography, Tooltip } from \"@material-ui/core\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport iconOperators from \"images/graphic-operators-shadow.svg\";\nimport iconSearch from \"images/icon-search.svg\";\nimport iconEdit from \"images/icon-edit.svg\";\nimport iconDelete from \"images/icon-delete.svg\";\n\nimport { UVCAdmin } from \"helpers/constant\";\n\nimport { report as reportAPI } from \"services/api\";\n\nimport { CustomizeAccordion, CustomizeTable, DotLoading, TextField } from \"components/common\";\nimport { EditOperatorModal } from 'components/uv-admin/details'\n\nexport const ADD_OPERATOR = \"add\";\nexport const EDIT_OPERATOR = \"edit\";\nexport const DELETE_OPERATOR = \"delete\";\n\nexport default class Operators extends React.Component {\n state = {\n headers: UVCAdmin.facilityDetails.operators.operatorModal.headers,\n operators: null,\n isLoading: false,\n searchText: \"\",\n operatorAction: ADD_OPERATOR,\n isEditOperatorModal: false,\n selectedOperator: null,\n searchedOperators: null,\n isSearchProcessing: false,\n ungroupedOperators: null,\n };\n\n typingTimer = null\n\n componentDidMount = () => {\n this.getOperators(this.props.facilityId);\n };\n\n componentWillUnmount = () => {\n clearTimeout(this.typingTimer)\n }\n\n getOperators = (id) => {\n this.setState({ isLoading: true, operators: null });\n return reportAPI\n .fetchOperatorsByFacilityId(id)\n .then((data) => {\n this.reGroupOperators(\"operators\", data, \"department_name\");\n this.setState({ isLoading: false, ungroupedOperators: data });\n })\n .catch((err) => {\n this.setState({ isLoading: false });\n });\n };\n\n searchOperator = (id, search) => {\n return reportAPI\n .fetchOperatorsByFacilityId(id, search)\n .then(data => {\n this.setState({ ungroupedOperators: data });\n this.reGroupOperators(\"searchedOperators\", data, \"department_name\");\n })\n .then(() => this.setState({isSearchProcessing: false}))\n .catch((err) => {\n this.setState({ isSearchProcessing: false });\n });\n }\n\n reGroupOperators = (stateKey, operators, key) => {\n if (operators.length === 0) {\n this.setState({ [stateKey]: {} });\n return\n };\n let res = _.groupBy(operators, key);\n this.setState({ [stateKey]: res });\n };\n\n onSearchChange = (value) => {\n if (value === '') {\n this.setState({ isSearchProcessing: false })\n }\n clearTimeout(this.typingTimer)\n this.setState({ searchText: value, isSearchProcessing: true }, () => \n this.typingTimer = setTimeout(() => {\n return this.state.searchText \n ? this.searchOperator(this.props.facilityId, this.state.searchText) \n : this.setState({searchedOperators: null, isSearchProcessing: false})\n }, 1000));\n };\n\n mouseEnter = (e, id, key, type, typeData) => {\n const operators = this.state[typeData][key].map((value, indx) => {\n if (value.id === id && e.target.scrollWidth > e.target.clientWidth) {\n type === 'name' ? value.isOpenName = true : value.isOpenBadge = true;\n } else {\n value.isOpenName = false;\n value.isOpenBadge = false;\n }\n return value;\n });\n this.setState({ [typeData]: { ...this.state[typeData], [key]: operators } });\n }\n\n render = () => {\n const { \n headers, \n operators, \n isLoading, \n searchText, \n operatorAction, \n isEditOperatorModal, \n selectedOperator, \n searchedOperators, \n isSearchProcessing,\n ungroupedOperators,\n } = this.state;\n const { departments, facilityId, setToaster, setStackToaster, isUserSessionExpire } = this.props;\n\n return (\n \n
\n \n {isLoading ? (\n \n ) : (\n \n {operators && _.keys(operators).length !== 0 ? (\n \n
{UVCAdmin.facilityDetails.operators.grantTitle}
\n
\n
\n \"\"\n this.onSearchChange(val)} />\n
\n
\n \n
\n {!searchedOperators && searchedOperators === null && !isSearchProcessing ? (\n
\n {_.keys(operators).map((key) => (\n \n {operators[key].map((row) => (\n \n {headers.map(\n (header) =>\n header.isShow && (\n \n {header.key !== \"id\" &&\n (\n \n
this.mouseEnter(e, row.id, key, header.key, 'operators')}>\n {row[header.key]}\n
\n
\n )\n }\n {header.key === \"id\" && (\n
\n \n \n
\n )}\n
\n )\n )}\n \n ))}\n \n }\n />\n }\n />\n ))}\n
\n ): (\n
\n {isSearchProcessing ? (\n \n ): (\n \n {_.keys(searchedOperators).length !== 0 && _.keys(searchedOperators).map((key) => (\n \n {searchedOperators[key].map((row) => (\n \n {headers.map(\n (header) =>\n header.isShow && (\n \n {header.key !== \"id\" &&\n (\n \n
this.mouseEnter(e, row.id, key, header.key, 'searchedOperators')}>\n {row[header.key]}\n
\n
\n )}\n {header.key === \"id\" && (\n
\n \n \n
\n )}\n
\n )\n )}\n \n ))}\n
\n }\n />\n }\n />\n ))}\n {_.keys(searchedOperators).length === 0 && (\n No Operators Found\n )}\n \n )}\n
\n )}\n
\n ) : (\n
\n
\n \"No-Users\"\n
\n
\n
\n

{UVCAdmin.facilityDetails.operators.grantTitle}

\n
{UVCAdmin.facilityDetails.operators.noOperatorsDesc}
\n this.setState({isEditOperatorModal: true, operatorAction: ADD_OPERATOR})}\n >\n {\n UVCAdmin.facilityDetails\n .operators.addAnOperator\n }\n \n
\n
\n
\n )}\n
\n )}\n
\n this.setState({isEditOperatorModal: cb, selectedOperator: null})}\n onSubmit={(cb) => this.setState({\n isEditOperatorModal: cb, \n searchedOperators: null,\n selectedOperator: null,\n searchText: \"\"}, () => this.getOperators(this.props.facilityId))}\n operator={selectedOperator}\n rawOperators={ungroupedOperators}\n departments={departments}\n facilityId={facilityId}\n setToaster={(type, msg) => setToaster(type, msg)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire}\n />\n
\n );\n };\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport { Modal } from 'components/common';\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport { ADD_OPERATOR, EDIT_OPERATOR, DELETE_OPERATOR } from \"components/uv-admin/details/operators/Operators\";\n\nimport { AddOptions, SingleAddModal, DeleteModal, BulkAddModal } from \"components/uv-admin/details\";\n\nexport const OPERATOR_ADD_OPTIONS = 0;\nexport const ADD_SINGLE_OPERATOR = 1;\nexport const BULK_ADD_OPERATORS = 2;\n\nexport default class ModifyOperator extends React.Component {\n initialState = {\n currentTab: OPERATOR_ADD_OPTIONS,\n title: 'Add Operators',\n departments: null,\n selectedOperator: null,\n }\n\n state = {...this.initialState}\n\n componentDidUpdate = (prevProps) => {\n if(prevProps.open !== this.props.open) {\n this.setInitialValue(this.props.action)\n }\n if(prevProps.isUserSessionExpire !== this.props.isUserSessionExpire && this.props.isUserSessionExpire === true) {\n this.handleClose(false);\n }\n }\n\n setInitialValue = (action) => {\n switch(action) {\n case ADD_OPERATOR:\n case EDIT_OPERATOR:\n let filteredDepartments = [];\n _.forEach(this.props.departments, (field) => {\n let obj = {};\n obj['key'] = field.id;\n obj['title'] = field.title;\n filteredDepartments.push(obj)\n })\n this.setState(action === EDIT_OPERATOR \n ? {departments: filteredDepartments, selectedOperator: this.props.operator} \n : {departments: filteredDepartments})\n if(action === EDIT_OPERATOR) {\n this.switchTab(ADD_SINGLE_OPERATOR)\n }\n else {\n this.switchTab(OPERATOR_ADD_OPTIONS)\n }\n break;\n case DELETE_OPERATOR:\n this.setState({selectedOperator: this.props.operator})\n this.switchTab(-1)\n break;\n default: return;\n }\n }\n\n handleClose = (cb) => {\n this.setState(this.initialState, () => this.props.onClose(cb))\n }\n\n handleSubmit = (cb) => {\n this.setState(this.initialState, () => this.props.onSubmit(cb))\n }\n\n switchTab = (number) => {\n this.setState({\n currentTab: number\n }, () => this.changeTitle(this.props.action === EDIT_OPERATOR ? -2 : number))\n }\n\n changeTitle = (number) => {\n switch (number) {\n case OPERATOR_ADD_OPTIONS:\n return this.setState({title: 'Add Operators'});\n case ADD_SINGLE_OPERATOR:\n return this.setState({title: 'Add an Operator'});\n case BULK_ADD_OPERATORS:\n return this.setState({title: 'Bulk Upload Operators'});\n case -1:\n return this.setState({title: 'Delete Operator'})\n case -2:\n return this.setState({title: 'Edit Operator'})\n default: \n return this.setState({title: ''});\n }\n }\n\n render = () => {\n const { open, action, facilityId, setToaster, rawOperators, setStackToaster } = this.props;\n const { currentTab, title, departments, selectedOperator } = this.state;\n\n return (\n \n {action !== DELETE_OPERATOR && (\n
\n {currentTab === OPERATOR_ADD_OPTIONS && this.handleClose(cb)} \n setTab={(tab) => this.switchTab(tab)} \n />}\n {currentTab === ADD_SINGLE_OPERATOR && this.handleClose(cb)} \n submit={(cb) => this.handleSubmit(cb)}\n goBack={() => this.switchTab(OPERATOR_ADD_OPTIONS)} \n departments={departments}\n operator={\n action === EDIT_OPERATOR \n && selectedOperator \n && rawOperators.filter(opt => opt.id === selectedOperator.id)[0]}\n facilityId={facilityId}\n setToaster={(type, msg) => setToaster(type, msg)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n />}\n {currentTab === BULK_ADD_OPERATORS && this.handleClose(cb)}\n submit={(cb) => this.handleSubmit(cb)}\n setToaster={(type, msg) => setToaster(type, msg)}\n goBack={() => this.switchTab(OPERATOR_ADD_OPTIONS)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n />}\n \n )}\n {action === DELETE_OPERATOR && selectedOperator && (\n this.handleClose(cb)}\n submit={(cb) => this.handleSubmit(cb)}\n setToaster={(type, msg) => setToaster(type, msg)}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n />\n )}\n \n }\n onClose={(cb) => this.handleClose(cb)}\n />\n )\n }\n}\n","import React from \"react\";\nimport { Grid } from \"@material-ui/core\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport singleOperator from \"images/graphic-operator.svg\";\nimport bulkOperators from \"images/graphic-operators.svg\";\n\nimport { ADD_SINGLE_OPERATOR, BULK_ADD_OPERATORS } from \"components/uv-admin/details/operators/ModifyOperatorsModal\";\n\nexport default class AddOptions extends React.Component {\n render = () => {\n const { closeForm, setTab } = this.props;\n\n return (\n
\n \n \n
setTab(ADD_SINGLE_OPERATOR)}>\n
\n \"\"\n
Single Operator
\n
\n
\n
\n \n
setTab(BULK_ADD_OPERATORS)}>\n
\n \"\"\n
{\"Bulk Upload\"}
{'Operators'}
{'(CSV File)'}
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n );\n };\n}\n","import React from \"react\";\nimport _ from \"lodash\";\nimport { Grid, Typography } from '@material-ui/core';\n\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\nimport \"components/uv-admin/details/Detail.scss\";\n\nimport { TextField, Switch, CustomizeSelect, Spinner } from \"components/common\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\";\nimport { ADD_SINGLE_OPERATOR } from \"components/uv-admin/details/operators/ModifyOperatorsModal\";\nimport { ADD_OPERATOR, EDIT_OPERATOR } from \"components/uv-admin/details/operators/Operators\";\n\nimport { UVCAdmin } from \"helpers/constant\"\n\nimport { report as reportAPI } from \"services/api\";\n\nexport default class SingleAddModal extends React.Component {\n initialState = {\n operatorModal: UVCAdmin.facilityDetails.operators.operatorModal.addModal,\n operatorPayload: null,\n isOperatorProcessing: false,\n stopFlag: false\n }\n\n state = {...this.initialState}\n\n componentDidMount = () => {\n if(this.props.action === ADD_OPERATOR && this.props.tab === ADD_SINGLE_OPERATOR) {\n let operatorModal = this.clearModalError();\n let initialModal = {}\n operatorModal.forEach(field => {\n initialModal[field.key] = this.renderInitialValue(field.key)\n })\n this.setState({\n operatorPayload: initialModal\n })\n }\n }\n\n componentDidUpdate = (prevProps) => {\n if(this.props.operator\n && !this.state.stopFlag\n && this.props.action === EDIT_OPERATOR) {\n let operatorModal = this.clearModalError();\n let initialModal = {}\n operatorModal.forEach(field => {\n initialModal[field.key] = this.props.operator[field.key]\n })\n this.setState({\n operatorPayload: initialModal,\n stopFlag: true\n })\n }\n }\n\n renderInitialValue = (key) => {\n switch (key) {\n case 'deactivate_duplicate_badges': return true;\n case 'department_id': \n return this.props.department \n && this.props.department.length !== 0 \n ? this.props.departments[0].key \n : ''; \n default: return '';\n }\n }\n\n formValidation = (stateData, stateModal) => {\n const data = this.state[stateData];\n const modal = this.props.action === ADD_OPERATOR ? \n this.state[stateModal].filter(el => el.key !== 'id') : \n this.state[stateModal]\n modal.forEach((el, index) => {\n switch(true) {\n case !data:\n case !data.hasOwnProperty(el.key):\n case data && data[el.key] === \"\":\n el.isError = true;\n el.errorMessage = \"Required Field\";\n break\n default:\n break;\n }\n this.setState({\n [stateModal]: [\n ...this.state[stateModal].slice(0, index),\n Object.assign({}, this.state[stateModal][index], el),\n ...this.state[stateModal].slice(index + 1),\n ]});\n })\n return !Boolean(_.find(modal, ['isError', true]))\n }\n\n onChange = (key, value) => {\n this.setState(\n (prevState) => ({\n operatorPayload: {\n ...prevState.operatorPayload,\n [key]: value,\n },\n })\n );\n };\n\n handleError = (err) => {\n if (err && err.response && err.response.status && err.response.status === 422) {\n let errors = err.response.data.errors; \n let errorModal = this.state.operatorModal.map(field => {\n let obj = _.indexOf(_.keys(errors), field.key) !== -1 \n ? {...field, isError: true, errorMessage: _.result(errors, field.key)} \n : {...field, isError: false, errorMessage: ''}\n return obj\n })\n this.setState({operatorModal: errorModal})\n }\n else {\n this.props.setStackToaster(\n (\n \n )\n )\n }\n this.setState({\n isOperatorProcessing: false,\n })\n }\n\n addNewOperator = (e) => {\n e.preventDefault();\n if (!this.formValidation('operatorPayload', 'operatorModal')) {\n return\n } else {\n this.setState({isOperatorProcessing: true})\n return reportAPI.addOperator(this.props.facilityId, this.state.operatorPayload)\n .then(res => {\n if(res) {\n this.setState({\n isOperatorProcessing: false,\n }, () => {\n this.props.setStackToaster(\n (\n \n )\n )\n this.handleClose(false, this.props.submit)\n })\n }\n })\n .catch(err => this.handleError(err))\n }\n }\n\n editOperator = (e) => {\n e.preventDefault();\n this.setState({isOperatorProcessing: true})\n const data = {\n 'department_id': this.state.operatorPayload['department_id']\n }\n return reportAPI.editOpertor(this.props.facilityId, this.state.operatorPayload.id, data)\n .then(res => {\n if(res) {\n this.setState({\n isOperatorProcessing: false,\n }, () => {\n this.props.setStackToaster(\n (\n \n )\n )\n this.handleClose(false, this.props.submit)\n })\n }\n })\n .catch(err => this.handleError(err))\n }\n\n clearModalError = () => {\n let initializeModal = this.state.operatorModal.map(field => {\n let obj = {...field, isError: false, errorMessage: ''};\n return obj\n })\n this.setState({ operatorModal: initializeModal});\n return initializeModal;\n }\n\n handleClose = (val, cb) => {\n this.setState(this.initialState, () => {\n let initialEquipmentPayload = {}\n let initializeModal = this.clearModalError();\n initializeModal.forEach(field => {\n initialEquipmentPayload[field.key] = this.renderInitialValue(field.key)\n })\n this.setState({\n equipmentPayload: initialEquipmentPayload,\n }, () => cb(val))\n })\n }\n \n render = () => {\n const { closeForm, goBack, departments, action } = this.props;\n const { operatorModal, operatorPayload, isOperatorProcessing } = this.state;\n\n return (\n \n
\n
Required
\n
\n \n {operatorPayload && operatorModal.filter(field => field.isShow).map(field => field.key !== 'deactivate_duplicate_badges' && field.key !== 'department_id' ? (\n \n this.onChange(field.key, val)}\n onFocus={(e) => this.setState((prevState) => ({\n operatorModal: prevState.operatorModal.map((obj) => (\n obj.key === field.key && obj.isError\n ? Object.assign(obj, {isError: false, errorMessage: ''})\n : obj\n ))\n }))} \n autoFocus={field.key === 'first_name' ? 'autoFocus' : ''}\n />\n \n ) : (\n (field.key === 'deactivate_duplicate_badges' ? (\n \n {action === ADD_OPERATOR && (\n
\n {\n this.onChange(field.key, val)\n this.clearModalError();\n }}\n />\n \n Please note: \n {UVCAdmin.facilityDetails.operators.duplicateIdHelpText}\n \n
\n )}\n
\n ) : (\n \n
\n this.onChange(field.key, val)}\n onOpen={(e) => this.setState((prevState) => ({\n operatorModal: prevState.operatorModal.map((obj) => (\n obj.key === field.key && obj.isError\n ? Object.assign(obj, {isError: false, errorMessage: ''})\n : obj\n ))\n }))}\n />\n
\n
\n ))\n ))}\n
\n {action === ADD_OPERATOR && operatorPayload && !isOperatorProcessing && (\n
\n \n \n \n
\n )}\n {action === EDIT_OPERATOR && operatorPayload && !isOperatorProcessing && (\n
\n \n \n
\n )}\n {isOperatorProcessing && (\n
\n
\n \n
\n
\n )}\n
\n )\n };\n}\n","import React from \"react\";\nimport { Typography } from \"@material-ui/core\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\";\nimport warningIcon from \"images/icon-warning-large-red.svg\";\nimport iconSuccess from \"images/status_green.svg\";\nimport iconError from \"images/status_red.svg\";\n\nimport { UVCAdmin } from \"helpers/constant\";\nimport { report as reportAPI } from \"services/api\";\nimport { Spinner } from \"components/common\";\n\nexport default class DeleteModal extends React.Component {\n initialState = {\n isOperatorProcessing: false,\n };\n\n state = { ...this.initialState };\n\n deleteOperator = (e, id) => {\n e.preventDefault();\n this.setState({isOperatorProcessing: true})\n return reportAPI.removeOperator(this.props.facilityId, id)\n .then(res => {\n if(res) {\n this.setState({\n isOperatorProcessing: false,\n }, () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, 'Operator deactivated successfully!');\n this.props.setStackToaster(\n (\n \n )\n )\n this.props.submit(false)\n })\n }\n })\n .catch(err => this.handleError(err))\n }\n \n handleError = (err) => {\n if (err && err.response && err.response.status && err.response.status === 422) {\n this.setState({\n isOperatorProcessing: false,\n }, () => {\n // this.props.setToaster(toasterMessageType.ERROR, err.response.data.errors);\n this.props.setStackToaster(\n (\n \n )\n )\n })\n }\n else {\n this.setState({\n isOperatorProcessing: false,\n }, () => {\n // this.props.setToaster(toasterMessageType.ERROR, 'Error when deactivating operator');\n this.props.setStackToaster(\n (\n \n )\n )\n })\n }\n }\n\n render = () => {\n const { closeForm, operator } = this.props;\n const { isOperatorProcessing } = this.state;\n\n return (\n
\n
\n \"\"\n {UVCAdmin.facilityDetails.operators.deleteMessage}\n {operator['name']}\n
\n {!isOperatorProcessing ? (\n
\n \n \n
\n ) : (\n
\n
\n \n
\n
\n )}\n
\n )\n };\n}\n","import React from \"react\";\nimport CONFIG from \"services/config\";\nimport { Typography } from \"@material-ui/core\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport iconSuccess from \"images/icon-success.svg\";\nimport iconError from \"images/status_red.svg\";\n\nimport { Switch, Spinner } from \"components/common\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\";\nimport { UVCAdmin } from \"helpers/constant\"\n\nimport { report as reportAPI } from \"services/api\";\n\nexport default class BulkAddModal extends React.Component {\n initialState = {\n uploadedFile: null,\n isOverwriteDuplicateId: true,\n isOperatorProcessing: false,\n }\n\n state = {...this.initialState};\n\n uploadFieldRef = React.createRef();\n\n handleUpload = (e) => this.setState({ uploadedFile: e.target.files[0] });\n\n onInputClick = (event) => event.target.value = '';\n\n handleClose = (val, cb) => this.setState(this.initialState, () => cb(val));\n\n addBulkOperator = (e) => {\n e.preventDefault();\n this.setState({isOperatorProcessing: true})\n let { uploadedFile, isOverwriteDuplicateId } = this.state;\n\n let data = new FormData();\n data.append('operator[operators_upload]', uploadedFile);\n data.append('operator[deactivate_duplicate_badges]', isOverwriteDuplicateId)\n return reportAPI.addOperator(this.props.facilityId, data)\n .then(res => {\n if(res || res === 0) {\n this.setState({\n isOperatorProcessing: false,\n }, () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, `${res} Operators added to facility.`);\n this.props.setStackToaster(\n (\n \n )\n )\n this.handleClose(false, this.props.submit)\n })\n }\n })\n .catch(err => this.handleError(err))\n }\n\n handleError = (err) => {\n switch(true) {\n case err && err.response && err.response.status && err.response.status === 422:\n this.setState({\n isOperatorProcessing: false,\n }, () => {\n this.props.setStackToaster(\n (\n \n )\n )\n })\n break;\n case err && err.response && err.response.status && err.response.status === 500:\n this.setState({\n isOperatorProcessing: false,\n }, () => {\n // this.props.setToaster(toasterMessageType.ERROR, err.response.data.errors.operators_upload);\n this.props.setStackToaster(\n (\n \n )\n )\n })\n break;\n case !err.status:\n this.setState({\n isOperatorProcessing: false,\n }, () => {\n // this.props.setToaster(toasterMessageType.ERROR, 'Error when deactivating operator');\n this.props.setStackToaster(\n (\n \n )\n )\n })\n break;\n default: return\n }\n }\n\n render = () => {\n const { uploadedFile, isOverwriteDuplicateId, isOperatorProcessing } = this.state;\n const { goBack, closeForm } = this.props;\n\n return (\n \n
\n
Required
\n
\n
\n \n Please download our CSV template and add your operators to it.\n \n \n Download Template\n \n \n Select your CSV file to upload\n \n
\n \n {uploadedFile && \n {uploadedFile.name}\n \n \"\"\n \n }\n
\n
\n obj.key === 'deactivate_duplicate_badges')[0].title}\n checked={isOverwriteDuplicateId}\n setValue={(val) => this.setState({isOverwriteDuplicateId: val})}\n />\n \n Please note: \n {UVCAdmin.facilityDetails.operators.duplicateIdHelpText}\n \n
\n {!isOperatorProcessing ? (\n
\n \n \n \n
\n ) : (\n
\n
\n \n
\n
\n )}\n
\n
\n )\n }\n}\n","import React from 'react';\nimport _ from 'lodash';\nimport { Grid, Tooltip, Typography } from '@material-ui/core';\nimport { Close, Check } from '@material-ui/icons';\n\nimport 'components/uv-admin/details/Detail.scss';\nimport iconCycle from 'images/icon-cycle-frequency.svg';\nimport iconHelp from 'images/icon-help.svg';\nimport iconAdd from 'images/icon-add.svg';\nimport iconSuccessBlue from 'images/icon-success.svg';\nimport iconSuccess from 'images/status_green.svg';\nimport iconError from 'images/status_red.svg';\nimport warningIcon from 'images/icon-warning-large-red.svg';\n\nimport { Modal, TextField, Switch } from 'components/common';\nimport {\n EQUIPMENT_ADD_OPTIONS,\n ADD_EQUIPMENT,\n EDIT_EQUIPMENT_TYPE,\n BULK_ADD_EQUIPMENT,\n DELETE_EQUIPMENT_TYPE,\n DELETE_EQUIPMENT_TYPE_WARNING,\n DELETE_EQUIPMENT\n} from 'components/uv-admin/details/equipments/Equipments';\nimport { EquipmentAddOptions } from \"components/uv-admin/details\";\n\nimport { ToasterMessageTemplate } from 'components/common/Toaster/ToasterMessage';\nimport { UVCAdmin, toasterMessageType } from 'helpers/constant';\n\nimport { report as reportAPI } from 'services/api';\nimport CONFIG from 'services/config';\nexport default class EditEquipment extends React.Component {\n initialState = {\n stopFlag: false,\n newEquipmentType: '',\n isAddNewType: false,\n newTypeError: '',\n selectedTypeFrequency: '',\n isEditSelectedTypeFrequency: false,\n equipmentModal:\n UVCAdmin.facilityDetails.equipments.equipmentsModal.addEquipmentModal,\n isOverwriteDupId: true,\n uploadedFile: null,\n equipmentPayload: null,\n isEquipmentProcessing: false,\n isEquipmentTypeDeclared: false,\n department: this.props.department,\n hideAddNewType: false,\n isTempEquipmentExist: false,\n selectedEquipment: null,\n isEditEquipmentTypeName: false,\n newEquipmentTypeName: '',\n indicatorRef: null,\n cycleRef: null,\n };\n\n uploadFieldRef = React.createRef();\n cycleRef = React.createRef();\n indicatorRef = React.createRef();\n\n state = { ...this.initialState };\n\n componentDidUpdate = (prevProps) => {\n if (\n prevProps.isUserSessionExpire !== this.props.isUserSessionExpire &&\n this.props.isUserSessionExpire === true\n ) {\n this.handleClose(null, false, this.props.onClose);\n }\n switch (true) {\n case (prevProps.department !== this.props.department ||\n prevProps.type !== this.props.type ||\n !this.state.stopFlag) &&\n this.props.type &&\n this.props.department &&\n (this.props.action === EDIT_EQUIPMENT_TYPE ||\n this.props.action === DELETE_EQUIPMENT_TYPE):\n this.setState(\n {\n equipmentPayload: this.props.type,\n department: this.props.department,\n stopFlag: true,\n isEditEquipmentTypeName:\n this.props.department['equipment_types'].filter(\n (field) => field.id === this.props.type['equipment_type_id']\n )[0].default === false\n ? true\n : false,\n },\n () => {\n if (this.state.isEditEquipmentTypeName) {\n this.setState({\n newEquipmentTypeName: this.props.type['equipment_type_name'],\n });\n }\n this.clearModalError();\n }\n );\n break;\n case (prevProps.department !== this.props.department ||\n !this.state.stopFlag) &&\n this.props.department &&\n (this.props.action === ADD_EQUIPMENT ||\n this.props.action === BULK_ADD_EQUIPMENT):\n this.state.equipmentModal.forEach((field) => {\n this.setState((prevState) => ({\n equipmentPayload: {\n ...prevState.equipmentPayload,\n [field.key]: this.renderInitialValue(field.key),\n },\n }));\n });\n let equipmentList = this.props.department['equipment_types'].filter(\n (el) => el.id !== 'new'\n );\n this.setState(\n {\n department: {\n ...this.props.department,\n equipment_types: equipmentList,\n },\n stopFlag: true,\n },\n () => this.clearModalError()\n );\n break;\n case (prevProps.department !== this.props.department ||\n prevProps.equipment !== this.props.equipment ||\n !this.state.stopFlag) &&\n this.props.department &&\n this.props.equipment &&\n this.props.action === DELETE_EQUIPMENT:\n this.setState({\n selectedEquipment: this.props.equipment,\n department: this.props.department,\n stopFlag: true,\n });\n break;\n default:\n return;\n }\n };\n\n renderInitialValue = (key) => {\n switch (key) {\n case 'deactivate_duplicate_tags':\n return true;\n default:\n return '';\n }\n };\n\n onChange = (key, value) => {\n this.setState((prevState) => ({\n equipmentPayload: {\n ...prevState.equipmentPayload,\n [key]: value,\n },\n }));\n };\n\n setSelectedType = (id) => {\n if (id !== 'new') {\n let protocol = this.state.department.protocols.filter(\n (prot) => prot.equipment_type_id === id\n );\n this.onChange('equipment_type_id', id);\n this.onChange(\n 'frequency',\n protocol.length > 0 ? protocol[0].frequency : ''\n );\n this.onChange('tag_id', '');\n this.onChange('equipment_id', '');\n let equipmentList = this.state.department['equipment_types'].filter(\n (el) => el.id !== 'new'\n );\n\n this.setState({\n isEditSelectedTypeFrequency: false,\n isEquipmentTypeDeclared: protocol.length > 0 ? true : false,\n hideAddNewType: false,\n isAddNewType: false,\n newEquipmentType: '',\n newTypeError: '',\n department: {\n ...this.state.department,\n equipment_types: equipmentList,\n },\n isTempEquipmentExist: false,\n });\n this.clearModalError();\n }\n };\n\n handleUpload = (e) => this.setState({ uploadedFile: e.target.files[0] });\n\n onInputClick = (event) => event.target.value = '';\n\n handleError = (err) => {\n if (\n err &&\n err.response &&\n err.response.status &&\n err.response.status === 422\n ) {\n let errors = err.response.data.errors;\n if (errors.tag_id) {\n this.indicatorRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n let errorModal = this.state.equipmentModal.map((field) => {\n if (field === 'tag_id') {\n this.indicatorRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n if (field === 'frequency') {\n this.cycleRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n let obj =\n _.indexOf(_.keys(errors), field.key) !== -1\n ? {\n ...field,\n isError: true,\n errorMessage: _.result(errors, field.key),\n }\n : { ...field, isError: false, errorMessage: '' };\n return obj;\n });\n switch (true) {\n case this.state.isTempEquipmentExist &&\n errors.hasOwnProperty('equipment_type.name'):\n if (errors['equipment_type.name'][0] !== null) {\n this.setState(\n {\n isAddNewType: true,\n hideAddNewType: false,\n department: {\n ...this.state.department,\n equipment_types: this.state.department[\n 'equipment_types'\n ].filter((el) => el.id !== 'new'),\n },\n newTypeError: errors['equipment_type.name'],\n equipmentModal: errorModal,\n equipmentPayload: {\n ...this.state.equipmentPayload,\n equipment_type_id: '',\n },\n }\n );\n } else {\n this.setState({\n equipmentModal: errorModal,\n });\n }\n\n break;\n case this.state.isEditEquipmentTypeName:\n this.setState({\n newTypeError: errors.base,\n isEquipmentProcessing: false,\n equipmentModal: errorModal,\n });\n break;\n default:\n this.setState({ equipmentModal: errorModal });\n break;\n }\n } else {\n // this.props.setToaster(toasterMessageType.ERROR, 'Error when updating Department!')\n this.props.setStackToaster(\n \n );\n }\n this.setState({\n isEquipmentProcessing: false,\n });\n };\n\n handleClose = (id, val, callback) => {\n this.setState(this.initialState, () => {\n let initializeModal = this.clearModalError();\n let initialEquipmentPayload = {};\n initializeModal.forEach((field) => {\n initialEquipmentPayload[field.key] = this.renderInitialValue(field.key);\n });\n this.setState(\n {\n equipmentPayload: initialEquipmentPayload,\n stopFlag: false,\n },\n () => (id ? callback(id, val) : callback(val))\n );\n });\n };\n\n formValidation = (stateData, stateModal) => {\n let newNameFlag = true;\n let data =\n this.props.action === BULK_ADD_EQUIPMENT\n ? _.omit(this.state[stateData], ['tag_id', 'equipment_id'])\n : this.state[stateData];\n let modal = this.state[stateModal];\n modal.forEach((el, index) => {\n switch (true) {\n case !data:\n case data && el.isRequired === true && data[el.key] === '':\n el.isError = true;\n\n if (el.key === 'tag_id') {\n this.indicatorRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n if (el.key === 'frequency') {\n this.cycleRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n\n el.errorMessage = 'Required Field';\n break;\n default:\n break;\n }\n this.setState({\n [stateModal]: [\n ...this.state[stateModal].slice(0, index),\n Object.assign({}, this.state[stateModal][index], el),\n ...this.state[stateModal].slice(index + 1),\n ],\n });\n });\n if (\n this.state.isEditEquipmentTypeName &&\n this.state.newEquipmentTypeName === ''\n ) {\n this.setState(\n {\n newTypeError: 'Required Field',\n isEquipmentProcessing: false,\n },\n () => {\n newNameFlag = false;\n return newNameFlag && !Boolean(_.find(modal, ['isError', true]));\n }\n );\n } else {\n return !Boolean(_.find(modal, ['isError', true]));\n }\n };\n\n addTemporaryEquipmentType = () => {\n if (this.state.newEquipmentType === '') {\n this.setState({ newTypeError: 'Required Field' });\n return;\n } else if (\n Boolean(\n _.find(this.state.department['equipment_types'], [\n 'name',\n this.state.newEquipmentType,\n ])\n )\n ) {\n this.setState({ newTypeError: 'This name has already been taken' });\n return;\n } else {\n let department = this.state.department;\n let tempEquipmentType = {\n id: 'new',\n name: this.state.newEquipmentType,\n default: false,\n };\n department['equipment_types'].push(tempEquipmentType);\n this.setState({\n department: department,\n isAddNewType: false,\n equipmentPayload: {\n ...this.state.equipmentPayload,\n equipment_type_id: 'new',\n frequency: '',\n tag_id: '',\n equipment_id: '',\n },\n hideAddNewType: true,\n isTempEquipmentExist: true,\n isEditSelectedTypeFrequency: true,\n });\n }\n };\n\n addNewEquipment = (department) => {\n if (!this.formValidation('equipmentPayload', 'equipmentModal')) {\n for (let item of this.state.equipmentModal) {\n if (item.key === 'frequency' && item.isError) {\n this.cycleRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n if (item.key === 'tag_id' && item.isError) {\n this.indicatorRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n }\n }\n return;\n } else {\n let { equipmentPayload, isEquipmentTypeDeclared, isTempEquipmentExist } =\n this.state;\n this.setState({ isEquipmentProcessing: true });\n let protocol = new FormData();\n switch (true) {\n case !isTempEquipmentExist:\n if (isEquipmentTypeDeclared) {\n let protocolId =\n department.protocols.length !== 0\n ? department.protocols.filter(\n (obj) =>\n obj['equipment_type_id'] ===\n equipmentPayload['equipment_type_id']\n )[0].id\n : '';\n // filter(key => key === 'tag_id' || key === 'equipment_type_id')\n _.keys(equipmentPayload).forEach((key) => {\n if (equipmentPayload[key] !== '') {\n protocol.append(`protocol[${key}]`, equipmentPayload[key]);\n }\n });\n return reportAPI\n .addNewEquipmentByDepartmentIdWithExistProtocolId(\n this.props.department.id,\n protocolId,\n protocol\n )\n .then((res) => {\n if (res) {\n this.setState(\n {\n isEquipmentProcessing: false,\n },\n () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, '1 item added to department.');\n this.props.setStackToaster(\n \n );\n this.handleClose(\n this.props.department,\n false,\n this.props.onSubmit\n );\n }\n );\n }\n })\n .catch((err) => this.handleError(err));\n } else {\n _.keys(equipmentPayload).forEach((key) => {\n if (equipmentPayload[key] !== '') {\n protocol.append(`protocol[${key}]`, equipmentPayload[key]);\n }\n });\n return reportAPI\n .addNewEquipmentByDepartmentId(this.props.department.id, protocol)\n .then((res) => {\n if (res) {\n this.setState(\n {\n isEquipmentProcessing: false,\n },\n () => {\n this.props.setStackToaster(\n \n );\n this.handleClose(\n this.props.department,\n false,\n this.props.onSubmit\n );\n }\n );\n }\n })\n .catch((err) => this.handleError(err));\n }\n case isTempEquipmentExist:\n _.keys(equipmentPayload)\n .filter(\n (key) =>\n key !== 'equipment_type_id' && equipmentPayload[key] !== ''\n )\n .forEach((key) => {\n protocol.append(`protocol[${key}]`, equipmentPayload[key]);\n });\n protocol.append(\n 'protocol[equipment_type_attributes][name]',\n this.state.newEquipmentType\n );\n protocol.append(\n 'protocol[equipment_type_attributes][department_id]',\n this.props.department.id\n );\n return reportAPI\n .addNewEquipmentByDepartmentId(this.props.department.id, protocol)\n .then((res) => {\n if (res) {\n this.setState(\n {\n isEquipmentProcessing: false,\n },\n () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, '1 item added to department.');\n this.props.setStackToaster(\n \n );\n this.handleClose(\n this.props.department,\n false,\n this.props.onSubmit\n );\n }\n );\n }\n })\n .catch((err) => this.handleError(err));\n default:\n return;\n }\n }\n };\n\n bulkUploadEquipment = (department) => {\n let {\n equipmentPayload,\n uploadedFile,\n isOverwriteDupId,\n isTempEquipmentExist,\n } = this.state;\n\n if (!this.formValidation('equipmentPayload', 'equipmentModal')) {\n return;\n } else {\n this.setState({ isEquipmentProcessing: true });\n switch (true) {\n case !isTempEquipmentExist:\n let protocol = department.protocols.filter(\n (obj) =>\n obj['equipment_type_id'] === equipmentPayload['equipment_type_id']\n )[0];\n let data = new FormData();\n if (protocol) {\n data.append('protocol[equipment_items_upload]', uploadedFile);\n data.append('protocol[equipment_type_id]', protocol.id);\n data.append(\n 'protocol[deactivate_duplicate_tags]',\n isOverwriteDupId\n );\n return reportAPI\n .addNewEquipmentByDepartmentIdWithExistProtocolId(\n department.id,\n protocol.id,\n data\n )\n .then((res) => {\n if (res) {\n this.setState(\n {\n isEquipmentProcessing: false,\n },\n () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, `${res.length} items added to department`);\n this.props.setStackToaster(\n \n );\n this.handleClose(\n this.props.department,\n false,\n this.props.onSubmit\n );\n }\n );\n }\n })\n .catch((err) => {\n if (\n err &&\n err.response &&\n err.response.status &&\n err.response.status === 422\n ) {\n let errors = err.response.data.errors;\n // this.props.setToaster(toasterMessageType.ERROR, `${errors.equipment_items_upload}`)\n this.props.setStackToaster(\n \n );\n } else {\n // this.props.setToaster(toasterMessageType.ERROR, 'A server error occurred. We have been notified of the problem.')\n this.props.setStackToaster(\n \n );\n }\n this.setState({\n isEquipmentProcessing: false,\n });\n });\n } else {\n data.append('protocol[frequency]', equipmentPayload['frequency']);\n data.append(\n 'protocol[equipment_type_id]',\n equipmentPayload['equipment_type_id']\n );\n data.append('protocol[equipment_items_upload]', uploadedFile);\n data.append(\n 'protocol[deactivate_duplicate_tags]',\n isOverwriteDupId\n );\n return reportAPI\n .addNewEquipmentByDepartmentId(department.id, data)\n .then((res) => {\n if (res) {\n this.setState(\n {\n isEquipmentProcessing: false,\n },\n () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, `${res.length} items added to department`);\n this.props.setStackToaster(\n \n );\n this.handleClose(\n this.props.department,\n false,\n this.props.onSubmit\n );\n }\n );\n }\n })\n .catch((err) => {\n if (\n err &&\n err.response &&\n err.response.status &&\n err.response.status === 422\n ) {\n let errors = err.response.data.errors;\n this.props.setToaster(\n toasterMessageType.ERROR,\n `${errors.equipment_items_upload}`\n );\n this.props.setStackToaster(\n \n );\n } else {\n // this.props.setToaster(toasterMessageType.ERROR, 'A server error occurred. We have been notified of the problem.')\n this.props.setStackToaster(\n \n );\n }\n this.setState({\n isEquipmentProcessing: false,\n });\n });\n }\n // This case will be fixed in next sprint --> missing case in UI\n case isTempEquipmentExist:\n let dataWithNewType = new FormData();\n _.keys(equipmentPayload)\n .filter(\n (key) =>\n key !== 'equipment_type_id' && equipmentPayload[key] !== ''\n )\n .forEach((key) => {\n dataWithNewType.append(`protocol[${key}]`, equipmentPayload[key]);\n });\n dataWithNewType.append(\n 'protocol[equipment_items_upload]',\n uploadedFile\n );\n dataWithNewType.append(\n 'protocol[deactivate_duplicate_tags]',\n isOverwriteDupId\n );\n dataWithNewType.append(\n 'protocol[equipment_type_attributes][name]',\n this.state.newEquipmentType\n );\n dataWithNewType.append(\n 'protocol[equipment_type_attributes][department_id]',\n this.props.department.id\n );\n return reportAPI\n .addNewEquipmentByDepartmentId(department.id, dataWithNewType)\n .then((res) => {\n if (res) {\n this.setState(\n {\n isEquipmentProcessing: false,\n },\n () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, `${res.length} items added to department`);\n this.props.setStackToaster(\n \n );\n this.handleClose(\n this.props.department,\n false,\n this.props.onSubmit\n );\n }\n );\n }\n })\n .catch((err) => {\n if (\n err &&\n err.response &&\n err.response.status &&\n err.response.status === 422\n ) {\n let errors = err.response.data.errors;\n // errors.hasOwnProperty('equipment_items_upload') && this.props.setToaster(toasterMessageType.ERROR, `${errors['equipment_items_upload']}`)\n errors.hasOwnProperty('equipment_items_upload') &&\n this.props.setStackToaster(\n \n );\n errors.hasOwnProperty('equipment_type.name') &&\n this.handleError(err);\n } else {\n // this.props.setToaster(toasterMessageType.ERROR, 'A server error occurred. We have been notified of the problem.')\n this.props.setStackToaster(\n \n );\n }\n this.setState({\n isEquipmentProcessing: false,\n });\n });\n default:\n return;\n }\n }\n };\n\n editEquipmentType = (department) => {\n let { equipmentPayload, newEquipmentTypeName, isEditEquipmentTypeName } =\n this.state;\n if (!this.formValidation('equipmentPayload', 'equipmentModal')) {\n return;\n } else {\n this.setState({ isEquipmentProcessing: true });\n let protocolId =\n department.protocols.length !== 0\n ? department.protocols.filter(\n (obj) =>\n obj['equipment_type_id'] ===\n equipmentPayload['equipment_type_id']\n )[0].id\n : '';\n let data = isEditEquipmentTypeName\n ? {\n protocol: {\n ...equipmentPayload,\n equipment_type_name: newEquipmentTypeName,\n },\n }\n : { protocol: { ...equipmentPayload } };\n return reportAPI\n .addNewEquipmentByDepartmentIdWithExistProtocolId(\n this.props.department.id,\n protocolId,\n data\n )\n .then((res) => {\n if (res) {\n this.setState(\n {\n isEquipmentProcessing: false,\n },\n () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, 'Protocol updated successfully.');\n this.props.setStackToaster(\n \n );\n this.handleClose(\n this.props.department,\n false,\n this.props.onSubmit\n );\n }\n );\n }\n })\n .catch((err) => this.handleError(err));\n }\n };\n\n removeEquipmentType = (equipmentType, department) => {\n this.setState({ isEquipmentProcessing: true });\n return reportAPI\n .removeEquipmentType(department.id, equipmentType['equipment_type_id'])\n .then((res) => {\n if (res) {\n this.setState(\n {\n isEquipmentProcessing: false,\n },\n () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, 'Equipment Type deactivated.');\n this.props.setStackToaster(\n \n );\n this.handleClose(\n this.props.department,\n false,\n this.props.onSubmit\n );\n }\n );\n }\n })\n .catch((err) => {\n if (\n err &&\n err.response &&\n err.response.status &&\n err.response.status === 422\n ) {\n // let errors = err.response.data.errors;\n // this.props.setToaster(toasterMessageType.ERROR, `Equipment Type ${errors.equipment_type}`)\n this.props.setStackToaster(\n \n );\n } else {\n // this.props.setToaster(toasterMessageType.ERROR, 'An occur error')\n this.props.setStackToaster(\n \n );\n }\n this.setState({\n isEquipmentProcessing: false,\n });\n });\n };\n\n removeEquipment = (equipment, department) => {\n this.setState({ isEquipmentProcessing: true });\n return reportAPI\n .removeEquipment(department.id, equipment.id)\n .then((res) => {\n if (res) {\n this.setState(\n {\n isEquipmentProcessing: false,\n equipmentPayload: null,\n },\n () => {\n // this.props.setToaster(toasterMessageType.SUCCESS, 'Protocol updated successfully.');\n this.props.setStackToaster(\n \n );\n this.handleClose(\n this.props.department,\n false,\n this.props.onSubmit\n );\n }\n );\n }\n })\n .catch((err) => {\n if (\n err &&\n err.response &&\n err.response.status &&\n err.response.status === 422\n ) {\n // let errors = err.response.data.errors;\n // this.props.setToaster(toasterMessageType.ERROR, `Equipment ${errors.equipment_type}`)\n this.props.setStackToaster(\n \n );\n } else {\n // this.props.setToaster(toasterMessageType.ERROR, 'An occur error')\n this.props.setStackToaster(\n \n );\n }\n this.setState({\n isEquipmentProcessing: false,\n });\n });\n };\n\n clearModalError = () => {\n let initializeModal = this.state.equipmentModal.map((field) => {\n let obj = { ...field, isError: false, errorMessage: '' };\n return obj;\n });\n this.setState({ equipmentModal: initializeModal });\n return initializeModal;\n };\n\n titleRender = (action) => {\n switch (action) {\n case ADD_EQUIPMENT:\n case EQUIPMENT_ADD_OPTIONS:\n return 'Add Equipment';\n case EDIT_EQUIPMENT_TYPE:\n return 'Edit Equipment Type';\n case BULK_ADD_EQUIPMENT:\n return 'Bulk Upload Equipment';\n case DELETE_EQUIPMENT_TYPE:\n return 'Remove Equipment Type';\n case DELETE_EQUIPMENT:\n return 'Remove Equipment';\n case DELETE_EQUIPMENT_TYPE_WARNING:\n return 'Remove Equipment Type';\n default:\n return '';\n }\n };\n\n isCreate = (action) => [ADD_EQUIPMENT, BULK_ADD_EQUIPMENT].includes(action);\n\n mouseEnter = (e, id) => {\n const types = this.state.department['equipment_types'].map((value, indx) => {\n if (value.id === id && e.target.scrollWidth > e.target.clientWidth) {\n value.isOpenName = true;\n } else {\n value.isOpenName = false;\n }\n return value;\n });\n this.setState({ department: { ...this.state.department, 'equipment_types': types } });\n }\n\n render = () => {\n const { open, action, onClose, onOpen } = this.props;\n const {\n newEquipmentType,\n isAddNewType,\n newTypeError,\n equipmentModal,\n isEditSelectedTypeFrequency,\n isOverwriteDupId,\n uploadedFile,\n equipmentPayload,\n isEquipmentProcessing,\n department,\n hideAddNewType,\n selectedEquipment,\n isEditEquipmentTypeName,\n newEquipmentTypeName,\n } = this.state;\n const arrActions = [DELETE_EQUIPMENT_TYPE, DELETE_EQUIPMENT, DELETE_EQUIPMENT_TYPE_WARNING, EQUIPMENT_ADD_OPTIONS];\n return (\n \n {department &&\n equipmentPayload &&\n !arrActions.includes(action) && (\n \n
\n
Required
\n
\n {action === EDIT_EQUIPMENT_TYPE && (\n
\n \n Equipment Type\n \n {!isEditEquipmentTypeName ? (\n \n {equipmentPayload['equipment_type_name']}\n \n ) : (\n
\n
\n \n this.setState({ newEquipmentTypeName: val })\n }\n onFocus={() =>\n this.setState({ newTypeError: '' })\n }\n />\n
\n
\n )}\n
\n )}\n {(action === ADD_EQUIPMENT ||\n action === BULK_ADD_EQUIPMENT) && (\n
\n \n Select an Equipment Type\n \n {department && (\n \n {department['equipment_types'].map((item) => (\n \n this.setSelectedType(item.id)}\n >\n \n

this.mouseEnter(e, item.id)}>{item.name}

\n
\n \n
\n ))}\n \n )}\n {!hideAddNewType && (\n
\n {isAddNewType ? (\n
\n \n this.setState({ newEquipmentType: val })\n }\n onFocus={() =>\n this.setState({ newTypeError: '' })\n }\n />\n
\n \n this.setState({\n isAddNewType: false,\n newEquipmentType: '',\n newTypeError: '',\n })\n }\n >\n \n \n \n this.addTemporaryEquipmentType()\n }\n >\n \n \n
\n
\n ) : (\n \n this.setState({ isAddNewType: true }, () =>\n this.clearModalError()\n )\n }\n >\n \n \n \n \n \n Add New Type\n \n \n \n )}\n
\n )}\n
\n )}\n {action !== DELETE_EQUIPMENT && action !== EQUIPMENT_ADD_OPTIONS && (\n
\n
\n \n Cycle Frequency\n \n
\n \n {equipmentPayload['frequency'] !== '' &&\n !isEditSelectedTypeFrequency &&\n action !== EDIT_EQUIPMENT_TYPE ? (\n
\n \n {`Currently set to:`}\n {`${equipmentPayload['frequency']} Day(s)`}\n {/* \n \n */}\n \n
\n ) : (\n
\n {this.state.equipmentModal\n .filter((field) => field.key === 'frequency')\n .map((field) => (\n \n {\n this.onChange('frequency', val);\n this.setState({\n isEditSelectedTypeFrequency: true,\n });\n }}\n onFocus={(e) =>\n this.setState((prevState) => ({\n equipmentModal:\n prevState.equipmentModal.map((obj) =>\n obj.key === field.key && obj.isError\n ? Object.assign(obj, {\n isError: false,\n errorMessage: '',\n })\n : obj\n ),\n }))\n }\n />\n \n {'Day(s)'}\n \n \n ))}\n
\n )}\n
\n
\n \n Please note: \n \n {UVCAdmin.facilityDetails.equipments.addEquipmentNote}\n \n \n
\n )}\n {action === BULK_ADD_EQUIPMENT && (\n \n
\n \n Please download our CSV template and add your\n equipment to it.\n \n \n Download Template\n \n
\n

\n All Indicator Tag IDs should be listed in the first\n column of the spreadsheet, and are 12 characters\n long composed of A-F & 0-9.\n

\n

\n You may also enter an optional Equipment ID in the\n second column for an existing ID your hospital uses\n to identify that piece of equipment.\n

\n
\n \n Select your CSV file to upload\n \n
\n \n {uploadedFile !== null && (\n \n {uploadedFile.name}\n \n \n \n \n )}\n
\n
\n
\n \n this.setState({ isOverwriteDupId: val })\n }\n />\n \n \n \n
\n
\n
\n )}\n {equipmentPayload['equipment_type_id'] !== '' &&\n action === ADD_EQUIPMENT && (\n
\n \n {equipmentModal.map((field) =>\n field.key !== 'deactivate_duplicate_tags' ? (\n \n {field.isShow && (\n \n
\n\n {\n this.onChange(field.key, val);\n }}\n onFocus={(e) =>\n this.setState((prevState) => ({\n equipmentModal:\n prevState.equipmentModal.map(\n (obj) =>\n obj.key === field.key &&\n obj.isError\n ? Object.assign(obj, {\n isError: false,\n errorMessage: '',\n })\n : obj\n ),\n }))\n }\n />\n \n )}\n \n ) : (\n \n
\n {\n this.onChange(\n 'deactivate_duplicate_tags',\n val\n );\n this.clearModalError();\n }}\n />\n \n \n \n
\n
\n )\n )}\n \n
\n )}\n
\n )}\n\n {action === DELETE_EQUIPMENT_TYPE &&\n department &&\n equipmentPayload && (\n
\n \n \n {\n UVCAdmin.facilityDetails.equipments\n .deleteEquipmentTypeMessage\n }\n \n \n {equipmentPayload['equipment_type_name']}\n \n
\n )}\n\n {action === DELETE_EQUIPMENT_TYPE_WARNING && (\n
\n \n \n Equipment Type is being used by active Equipment Items.\n \n
\n )}\n\n {action === DELETE_EQUIPMENT && selectedEquipment && department && (\n
\n \n \n {UVCAdmin.facilityDetails.equipments.deleteEquipmentMessage}\n \n \n {selectedEquipment['tag_id']}\n \n
\n )}\n {action === EQUIPMENT_ADD_OPTIONS && \n }\n
\n }\n onClose={(cb) => this.handleClose(null, cb, onClose)}\n loading={isEquipmentProcessing}\n action={\n
\n {action !== EQUIPMENT_ADD_OPTIONS &&\n action !== DELETE_EQUIPMENT_TYPE_WARNING &&\n ((department && equipmentPayload) || selectedEquipment) && (\n
\n \n {this.isCreate(action) && (\n \n )}\n this.handleClose(null, false, onClose)}\n >\n Cancel\n \n {action === EDIT_EQUIPMENT_TYPE && (\n this.editEquipmentType(department)}\n >\n {'Save'}\n \n )}\n {action === BULK_ADD_EQUIPMENT && (\n this.bulkUploadEquipment(department)}\n >\n {'Upload CSV'}\n \n )}\n {action === ADD_EQUIPMENT && (\n this.addNewEquipment(department)}\n disabled={!equipmentPayload['equipment_type_id']}\n >\n {'Add Equipment'}\n \n )}\n {action === DELETE_EQUIPMENT_TYPE && (\n \n this.removeEquipmentType(equipmentPayload, department)\n }\n >\n {'Remove'}\n \n )}\n {action === DELETE_EQUIPMENT && (\n \n this.removeEquipment(selectedEquipment, department)\n }\n >\n {'Remove'}\n \n )}\n \n
\n )}\n\n {action === DELETE_EQUIPMENT_TYPE_WARNING && (\n
\n {' '}\n \n this.handleClose(null, false, onClose)}\n >\n {'Ok'}\n \n \n
\n )}\n {action === EQUIPMENT_ADD_OPTIONS && (\n
\n \n \n \n
\n )}\n
\n }\n />\n );\n };\n}\n","import React from \"react\";\nimport { Grid } from \"@material-ui/core\";\n\nimport \"components/uv-admin/details/Detail.scss\";\nimport singleEquipment from \"images/graphic-equipment-single.svg\";\nimport bulkEquipments from \"images/graphic-equipment-multiple.svg\";\n\nimport { ADD_EQUIPMENT, BULK_ADD_EQUIPMENT } from \"components/uv-admin/details/equipments/Equipments\";\n\nexport default class AddOptions extends React.Component {\n render = () => {\n const { openDialog } = this.props;\n\n return (\n
\n \n \n
openDialog(true, ADD_EQUIPMENT)}>\n
\n \"\"\n
Single Equipment
\n
\n
\n
\n \n
openDialog(true, BULK_ADD_EQUIPMENT)}>\n
\n \"\"\n
{\"Bulk Upload\"}
{'Equipment'}
{'(CSV File)'}
\n
\n
\n
\n
\n
\n );\n };\n}\n","import React from \"react\";\nimport _ from \"lodash\";\nimport \"./Detail.scss\";\n\nimport SubLayout from \"layout/Sub\";\nimport iconBack from \"images/icon-back-prim.svg\";\nimport iconEdit from \"images/icon-edit.svg\";\n\nimport { browserStorage, report as reportAPI } from \"services/api\";\n\nimport { UVCAdmin, uvcAdminRole } from \"helpers/constant\";\n\nimport { Departments, Enclosures, Operators, Users } from \"components/uv-admin/details\";\nimport { ModifyFacilityModal } from \"components\";\nimport { MODIFY } from \"components/uv-admin/facilities/Facilities\";\nimport { Tooltip } from \"@material-ui/core\";\n\nexport const ENCLOSURES = 0;\nexport const USERS = 1;\nexport const DEPARTMENTS = 2;\nexport const OPERATORS = 3;\n\nexport default class Detail extends React.Component {\n state = {\n selectedId: browserStorage.getSessionData(this.props.username),\n loading: true,\n facility: null,\n currentSubTab: ENCLOSURES,\n isEditFacilityModalOpen: false,\n addFacilityFields: [...UVCAdmin.addFacilityModal],\n isSubmitting: false,\n isOpenTitle: false,\n isOpenAddr: false,\n };\n\n componentDidMount = () => {\n const facilityId = this.props.match.params.id;\n if (facilityId) {\n this.getFacilityDetail(facilityId);\n this.props.setActiveTab(0);\n } else {\n this.onBack();\n }\n };\n\n componentDidUpdate = (prevProps, prevState) => {\n if (prevProps.tab !== this.props.tab) {\n this.setState({ currentSubTab: this.props.tab });\n }\n };\n\n getFacilityDetail = (id) => {\n this.setState({ loading: true });\n return reportAPI\n .getFalicityById(id)\n .then((facility) => {\n facility.users = this.transformUsers(facility.users, facility.id);\n this.setState({ facility: facility });\n })\n .then(() => {\n this.setState({ loading: false });\n })\n .catch((err) => {\n this.onBack();\n });\n };\n\n transformUsers = (userList, facilityId) => {\n userList.map((user) => {\n user.roles = user.roles.filter((role) => role[\"facility_id\"] === facilityId);\n user[\"role_name\"] = user.roles[0][\"role_name\"];\n delete user.roles;\n return user;\n });\n return userList;\n };\n\n closeAndResetForm = (cb) => {\n this.setState({\n isEditFacilityModalOpen: cb,\n addFacilityFields: [...UVCAdmin.addFacilityModal],\n selectedFacility: null,\n });\n };\n\n onBack = () => {\n this.props.setActiveTab(0);\n this.props.history.push(\"/facilities\");\n window.sessionStorage.clear();\n };\n\n addrFacility = (facility) => `${facility.address_1} ${facility.address_2 !== null && facility.address_2 !== \"\" ? facility.address_2 + \", \" : \"\"}${facility.city}, ${facility.state} ${facility.zip}`;\n\n mouseEnter = (e, type) => {\n if (e.target.scrollWidth > e.target.clientWidth) {\n type === 'title' ? this.setState({ isOpenTitle: true }) : this.setState({ isOpenAddr: true });\n }\n }\n\n\n render = () => {\n const { loading, facility, currentSubTab, isEditFacilityModalOpen, isOpenTitle, isOpenAddr } = this.state;\n const { roles, location, setActiveTab, updateRole, setStackToaster, isUserSessionExpire } = this.props;\n\n return (\n \n {\n this.setState({ currentSubTab: cb })\n setActiveTab(cb)\n }}\n loadingTitle={UVCAdmin.facilityDetails.loadingMessage}\n title={\n !loading && (\n
\n
\n {location.state && \n location.state.hasOwnProperty('singleFacility') &&\n location.state.singleFacility === false && (\n \n )}\n
\n
\n \n

this.mouseEnter(e, 'title')}>\n {facility.name}\n

\n
\n {_.find(roles, { name: uvcAdminRole, facility_id: null }) && (\n \n )}\n
\n \n
this.mouseEnter(e, 'addr')}>{this.addrFacility(facility)}
\n
\n
\n
\n
\n
\n )\n }\n >\n {!loading && (\n \n {currentSubTab === ENCLOSURES && {\n updateRole();\n this.getFacilityDetail(this.props.match.params.id)\n }}\n setToaster={(type, msg) => this.setState({\n toasterMessage: msg,\n toasterType: type,\n })}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire}\n />}\n \n {currentSubTab === USERS && (\n {\n updateRole();\n this.getFacilityDetail(this.props.match.params.id)\n }}\n setToaster={(type, msg) =>\n this.setState({\n toasterMessage: msg,\n toasterType: type,\n })\n }\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire}\n />\n )}\n \n {currentSubTab === OPERATORS && this.setState({\n toasterMessage: msg,\n toasterType: type,\n })}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire} />}\n\n {currentSubTab === DEPARTMENTS && this.setState({\n toasterMessage: msg,\n toasterType: type,\n })}\n fetchFacilityDetail={() => {\n updateRole();\n this.getFacilityDetail(this.props.match.params.id)\n }}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire} />}\n\n {/* Add/Edit facility modal */}\n this.setState({\n isEditFacilityModalOpen: cb})}\n onSubmit={(cb) => {\n this.setState({isEditFacilityModalOpen: cb})\n this.getFacilityDetail(this.props.match.params.id)\n }}\n setToaster={(type, msg) => this.setState({\n toasterType: type,\n toasterMessage: msg\n })}\n setStackToaster={(mes, opts) => setStackToaster(mes, opts)}\n isUserSessionExpire={isUserSessionExpire} />\n \n )}\n \n
\n );\n };\n}\n","import React from 'react';\nimport _ from \"lodash\";\nimport { Grid, TableCell, TableRow, Tooltip, Typography } from '@material-ui/core';\n\nimport 'components/uv-admin/enclosure-logs/EnclosureLogs.scss';\nimport iconBack from \"images/icon-back-prim.svg\";\nimport iconEnclosures from \"images/graphic-enclosures.svg\";\nimport iconWarning from \"images/icon-warning-small-purple.svg\";\nimport iconLostConnection from \"images/icon-not-communicating.svg\";\n\nimport { report as reportAPI } from 'services/api'\nimport { CustomizeAccordion, CustomizeTable, DotLoading } from 'components/common';\nimport { UVCAdmin } from 'helpers/constant';\n\nexport default class EnclosureLogs extends React.Component {\n initialState = {\n headers: UVCAdmin.enclosureLogs.headers,\n facilities: null,\n isLoading: false,\n selectedFacility: null,\n enclosureLogs: null,\n isLogsLoading: false,\n }\n\n state = {...this.initialState}\n typingTimer = null;\n\n componentDidMount = () => {\n this.getFacilities();\n this.pstTimeConverter('2021-05-24T19:01:41.071Z')\n }\n\n componentWillUnmount = () => {\n clearTimeout(this.typingTimer)\n }\n\n getFacilities = () => {\n this.setState({ isLoading: true });\n return reportAPI\n .getFalicitiesByUser()\n .then((facilities) => {\n this.setState({facilities, isLoading: false},\n () => this.setSelectedFacility(facilities[0]))\n })\n .catch((err) => {\n this.setState({ isLoading: false });\n });\n }\n\n setSelectedFacility = (facility) => {\n this.setState({\n selectedFacility: facility, \n isLogsLoading: true, \n }, () => {\n let requests = []\n facility.enclosures.forEach(enclosure => requests.push(reportAPI.getEnclosureLogs(enclosure.id)))\n return Promise.all(requests)\n .then(data => {\n let logs = _.flatten(data);\n let groupedLogs = _.groupBy(logs, 'enclosure_id')\n return groupedLogs;\n })\n .then((logs) => this.setState({enclosureLogs: logs, isLogsLoading: false}))\n .catch(err => this.setState({ isLogsLoading: false }))\n })\n }\n\n connectionStatusRendering = (status, ok) => {\n switch(true) {\n case status === 'lost_connection':\n return \"\"\n case status === 'connected' && !ok:\n return \"\"\n default:\n return
\n }\n }\n\n pstTimeConverter = (utcTime) => {\n let date = new Date(utcTime);\n let pstDate = date.toLocaleString(\"en-US\", {timeZone: \"America/Los_Angeles\"});\n pstDate = pstDate.replace(\",\", \" @\") + ' PST';\n return pstDate\n }\n \n mouseEnter = (e, id) => {\n const facilities = this.state.facilities.map((value, indx) => {\n if (value.id === id && e.target.scrollWidth > e.target.clientWidth) {\n value.isOpenTitle = true;\n } else {\n value.isOpenTitle = false;\n }\n return value;\n });\n this.setState({ facilities });\n }\n\n enCloseureMouseEnter = (e, id, type) => {\n const enclosures = this.state.selectedFacility.enclosures.map((value, indx) => {\n if (value.id === id && e.target.scrollWidth > e.target.clientWidth) {\n if (type === 'title') value.isOpenTitle = true;\n if (type === 'udi') value.isOpenUdi = true;\n if (type === 'location') value.isOpenLocation = true;\n } else {\n value.isOpenTitle = false;\n value.isOpenUdi = false;\n }\n return value;\n });\n this.setState({ selectedFacility: { ...this.state.selectedFacility, enclosures } });\n }\n\n render = () => {\n const { history } = this.props;\n const { \n isLoading, \n facilities, \n selectedFacility, \n isLogsLoading,\n enclosureLogs,\n headers,\n } = this.state; \n \n return (\n \n
\n \n Enclosure Logs\n
\n
\n
\n
\n {!isLoading && facilities && selectedFacility && enclosureLogs && (\n
\n
\n
\n Facility\n \n {facilities.map(item => (\n this.setSelectedFacility(item)}\n >\n \n this.mouseEnter(e, item.id)}>{item.name}\n \n
{item['enclosures'].length}
\n
\n ))}\n
\n
\n
\n \n {selectedFacility.name}\n \n {selectedFacility.enclosures.length !== 0 && (\n
\n {!isLogsLoading && (\n \n {selectedFacility.enclosures.map(item => (\n \n {this.connectionStatusRendering(item['connection_status'], item['ok?'])}\n \n this.enCloseureMouseEnter(e, item.id, 'title')}>{item.nickname}\n \n \n this.enCloseureMouseEnter(e, item.id, 'udi')}>\n {item.udi}\n \n \n \n }\n titleStyle=\"enclosure-logs-title\"\n additionalInfo={\n \n this.enCloseureMouseEnter(e, item.id, 'location')}>{item.location}\n \n }\n children={\n \n {enclosureLogs[item.id] && enclosureLogs[item.id].length !== 0 \n ? (\n el.isShow)}\n children={\n \n {enclosureLogs[item.id].map(row => (\n \n {headers.map((header) => header.isShow && (\n \n {/* {header.key === 'performed_at' ? this.pstTimeConverter(row[header.key]) : row[header.key]} */}\n {row[header.key]}\n \n ))}\n \n ))}\n \n }\n />\n ): (\n Enclosure not yet connected\n )}\n \n } \n />\n ))} \n \n )}\n {isLogsLoading && }\n
\n )}\n {selectedFacility.enclosures.length === 0 && (\n
\n
\n \"No-logs\"\n No enclosures at this facility\n
\n
\n )}\n
\n
\n
\n )}\n {isLoading && }\n
\n
\n )\n }\n}\n","import React, { useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport MaskedInput from 'react-text-mask';\nimport Input from '@material-ui/core/Input';\nimport { ToasterMessageTemplate } from 'components/common/Toaster/ToasterMessage';\nimport { useSnackbar } from 'notistack';\nimport iconError from 'images/status_red.svg';\nimport { Spinner, TextField } from 'components/common';\nimport {\n UVCAcceptInvitation,\n ERROR_MESSAGE,\n markInput,\n TOAST_MESSAGE,\n} from 'helpers/constant';\nimport { auth as authAPI, browserStorage } from 'services/api';\nimport './style.scss';\n\nfunction TextMaskCustom(props) {\n const { inputRef, ...other } = props;\n\n return (\n {\n inputRef(ref ? ref.inputElement : null);\n }}\n mask={markInput}\n placeholderChar={'_'}\n showMask\n />\n );\n}\n\nconst initForm = {\n firstName: { value: '', error: false, isRequire: true, messageError: '' },\n lastName: { value: '', error: false, isRequire: true, messageError: '' },\n title: { value: '', error: false, isRequire: true, messageError: '' },\n employeeId: { value: '', error: false, isRequire: false, messageError: '' },\n department: { value: '', error: false, isRequire: true, messageError: '' },\n phone: {\n value: '(___)___-____',\n error: false,\n isRequire: true,\n messageError: '',\n },\n password: { value: '', error: false, isRequire: true, messageError: '' },\n confirmPassword: {\n value: '',\n error: false,\n isRequire: true,\n messageError: '',\n },\n};\n\nconst AcceptInvitation = () => {\n const location = useLocation();\n const { enqueueSnackbar } = useSnackbar();\n const [forms, setForms] = useState(initForm);\n const [isProcessing, setIsProcessing] = useState(false);\n const formatPhoneNumber = (value) => {\n return value\n .split('')\n .filter((item) => !isNaN(item) && item !== ' ')\n .join('');\n };\n\n const trimText = (text) => {\n return text?.trimStart()?.trimEnd();\n };\n\n const onCreateAccount = async () => {\n let oldForms = forms;\n let invalid = false;\n\n Object.keys(forms).forEach((item) => {\n oldForms = {\n ...oldForms,\n [item]: {\n ...forms[item],\n error: false,\n messageError: '',\n },\n };\n setForms(oldForms);\n\n const getPhone = formatPhoneNumber(forms.phone.value);\n if (item === 'phone' && getPhone.length === 0) {\n oldForms = {\n ...oldForms,\n phone: {\n ...forms.phone,\n error: true,\n messageError: ERROR_MESSAGE.REQUIRED_FIELD,\n },\n };\n setForms(oldForms);\n invalid = true;\n }\n\n if (item === 'password' && forms.password.value.length < 8) {\n oldForms = {\n ...oldForms,\n [item]: {\n ...forms[item],\n error: true,\n messageError: ERROR_MESSAGE.IS_TOO_SHORT,\n },\n };\n setForms(oldForms);\n invalid = true;\n }\n if (\n item === 'confirmPassword' &&\n forms.password.value !== forms.confirmPassword.value\n ) {\n oldForms = {\n ...oldForms,\n [item]: {\n ...forms[item],\n error: true,\n messageError: ERROR_MESSAGE.DOES_NOT_MATCH_PASSWORD,\n },\n };\n setForms(oldForms);\n invalid = true;\n }\n if (\n item !== 'phone' &&\n item !== 'employeeId' &&\n forms[item].value.length === 0\n ) {\n oldForms = {\n ...oldForms,\n [item]: {\n ...forms[item],\n error: true,\n messageError: ERROR_MESSAGE.REQUIRED_FIELD,\n },\n };\n setForms(oldForms);\n invalid = true;\n }\n });\n if (!invalid) {\n setIsProcessing(true);\n const payload = {\n user: {\n invitation_token: location.search.split('=')?.[1]\n ? location.search.split('=')?.[1]\n : '',\n profile_attributes: {\n last_name: trimText(forms.lastName.value),\n first_name: trimText(forms.firstName.value),\n title: trimText(forms.title.value),\n employee_id: trimText(forms.employeeId.value),\n department: trimText(forms.department.value),\n phone_number: formatPhoneNumber(forms.phone.value),\n },\n password: trimText(forms.password.value),\n password_confirmation: trimText(forms.confirmPassword.value),\n },\n };\n return authAPI\n .invitation(payload)\n .then((resp) => {\n setIsProcessing(false);\n if (browserStorage.getData('savedFacility')) {\n let savedFacility = browserStorage.getData('savedFacility');\n if (\n !browserStorage.getData('savedFacility')[resp.profile.user_id]\n ) {\n savedFacility[`${resp.profile.user_id}`] = {\n username: resp.profile.user_id,\n info: resp,\n featureReport: null,\n facilityReport: null,\n };\n }\n\n browserStorage.saveData('savedFacility', savedFacility);\n }\n location.href = window.location.origin;\n window.location.reload();\n })\n .catch((err) => {\n setIsProcessing(false);\n if (err?.response?.status === 422) {\n let errors = err?.response?.data?.errors;\n const errorsList = [\"can't be blank\", 'is invalid'];\n if (errorsList.includes(String(errors?.invitation_token))) {\n enqueueSnackbar(\n \n );\n }\n if (\n String(errors?.['profile.phone_number']) ===\n ERROR_MESSAGE.IS_INVALID_NUMBER\n ) {\n oldForms = {\n ...oldForms,\n phone: {\n ...forms.phone,\n error: true,\n messageError: ERROR_MESSAGE.IS_INVALID_NUMBER,\n },\n };\n setForms(oldForms);\n }\n if (String(errors?.['password']) === ERROR_MESSAGE.IS_TOO_SHORT) {\n oldForms = {\n ...oldForms,\n phone: {\n ...forms.phone,\n error: true,\n messageError: ERROR_MESSAGE.IS_TOO_SHORT,\n },\n };\n setForms(oldForms);\n }\n }\n });\n }\n };\n\n const onChange = (value, name) => {\n const newForms = {\n ...forms,\n [name]: {\n value: value,\n },\n };\n setForms(newForms);\n };\n\n return (\n
\n
\n
\n
\n\n
\n
\n

{UVCAcceptInvitation.title}

\n
\n {UVCAcceptInvitation.description}\n
\n
\n {UVCAcceptInvitation.required} \n
\n
\n onChange(val, name)}\n require='require'\n requiredStyle='required'\n errorName={forms.firstName.error && forms.firstName.messageError}\n />\n onChange(val, name)}\n require='require'\n requiredStyle='required'\n errorName={forms.lastName.error && forms.lastName.messageError}\n />\n
\n
\n onChange(val, name)}\n require='require'\n requiredStyle='required'\n errorName={forms.title.error && forms.title.messageError}\n />\n onChange(val, name)}\n />\n onChange(val, name)}\n require='require'\n requiredStyle='required'\n errorName={\n forms.department.error && forms.department.messageError\n }\n />\n
\n
\n {UVCAcceptInvitation.forms.phone} \n
\n onChange(e.target.value, e.target.name)}\n name='phone'\n id='phone'\n inputComponent={TextMaskCustom}\n />\n
\n {forms.phone.error && forms.phone.messageError}\n
\n
\n
\n
\n onChange(val, name)}\n require='require'\n requiredStyle='required'\n errorName={forms.password.error && forms.password.messageError}\n />\n onChange(val, name)}\n require='require'\n requiredStyle='required'\n errorName={\n forms.confirmPassword.error &&\n forms.confirmPassword.messageError\n }\n />\n
\n
\n {isProcessing ? (\n
\n \n
\n ) : (\n \n )}\n
\n
\n
\n
\n );\n};\n\nexport default AcceptInvitation;\n","import React, { useState, useEffect } from 'react';\nimport { useLocation, useHistory } from 'react-router-dom';\n// Router\nimport { Redirect } from 'react-router';\nimport { ToasterMessageTemplate } from 'components/common/Toaster/ToasterMessage';\nimport { useSnackbar } from 'notistack';\nimport iconError from 'images/status_red.svg';\nimport { Spinner, TextField } from 'components/common';\nimport {\n ResetPassword,\n ERROR_MESSAGE,\n TOAST_MESSAGE,\n} from 'helpers/constant';\nimport { auth as authAPI, browserStorage } from 'services/api';\nimport './style.scss';\n\n\nconst initForm = {\n password: { value: '', error: false, isRequired: true, messageError: '' },\n confirmPassword: {\n value: '',\n error: false,\n isRequired: true,\n messageError: '',\n },\n};\n\nconst SendResetPassword = () => {\n const history = useHistory();\n const location = useLocation();\n const RESET_PASSWORD = 1;\n const RESET_PASSWORD_CONFIRM = 2;\n\n const { enqueueSnackbar } = useSnackbar();\n const [forms, setForms] = useState(initForm);\n const [isProcessing, setIsProcessing] = useState(false);\n const [currentTab, setCurrentTab] = useState(RESET_PASSWORD);\n const params = new URLSearchParams(location.search);\n\n useEffect(() => {\n if (params.get('access-token')) {\n let tempHeaders = {\n 'access-token': params.get('access-token'),\n client: params.get('client'),\n expiry: params.get('expiry'),\n uid: params.get('uid'),\n 'token-type': 'Bearer'\n };\n browserStorage.saveData('tempHeaders', tempHeaders);\n }\n }, []);\n const setMessage = (form, item, error, msg) => {\n return {\n ...form,\n [item]: {\n ...forms[item],\n error,\n messageError: msg,\n },\n }\n }\n const onResetPassword = async () => {\n let oldForms = forms;\n let invalid = false;\n\n Object.keys(forms).forEach((item) => {\n oldForms = setMessage(oldForms, item, false, '');\n setForms(oldForms);\n if (\n forms[item].value.length === 0\n ) {\n oldForms = setMessage(oldForms, item, true, ERROR_MESSAGE.REQUIRED_FIELD);\n setForms(oldForms);\n invalid = true;\n } else {\n if (item === 'password' && forms.password.value.length < 8) {\n oldForms = setMessage(oldForms, item, true, `${ERROR_MESSAGE.IS_TOO_SHORT}`);\n setForms(oldForms);\n invalid = true;\n }\n if (\n item === 'confirmPassword' &&\n forms.password.value !== forms.confirmPassword.value\n ) {\n oldForms = setMessage(oldForms, item, true, `${ERROR_MESSAGE.DOES_NOT_MATCH_PASSWORD}`);\n setForms(oldForms);\n invalid = true;\n }\n }\n });\n\n if (!invalid) {\n setIsProcessing(true);\n const payload = {\n password: forms.password.value.trim(),\n password_confirmation: forms.confirmPassword.value.trim(),\n };\n return authAPI\n .sendResetPassword(payload)\n .then((resp) => {\n localStorage.removeItem('tempHeaders');\n setIsProcessing(false);\n setCurrentTab(RESET_PASSWORD_CONFIRM);\n })\n .catch((err) => {\n setIsProcessing(false);\n if (err?.response?.status === 401) {\n let errors = err?.response?.data?.errors;\n const errorsList = ['is invalid', 'Unauthorized'];\n if (errorsList.includes(String(errors))) {\n enqueueSnackbar(\n \n );\n }\n }\n if (err?.response?.status === 422) {\n let errors = err?.response?.data?.errors;\n if (errors?.['password']) {\n oldForms = setMessage(oldForms, 'password', true, String(errors?.password));\n setForms(oldForms);\n }\n\n if (errors?.['password_confirmation']) {\n oldForms = setMessage(oldForms, 'confirmPassword', true, String(errors?.['password_confirmation']));\n setForms(oldForms);\n }\n }\n });\n }\n };\n\n const onChange = (value, name) => {\n const newForms = {\n ...forms,\n [name]: {\n value: value,\n },\n };\n setForms(newForms);\n };\n\n const returnLogin = () => {\n history.push('/login');\n }\n\n const token = params.get('token');\n return (\n
\n
\n
\n
\n {token && (
\n {currentTab === RESET_PASSWORD && (\n
\n

{ResetPassword.title}

\n
\n {ResetPassword.description}\n
\n
\n onChange(val, name)}\n errorName={forms.password.error && forms.password.messageError}\n />\n onChange(val, name)}\n errorName={\n forms.confirmPassword.error &&\n forms.confirmPassword.messageError\n }\n />\n
\n
\n {isProcessing ? (\n
\n \n
\n ) : (\n \n )}\n
\n
\n )}\n\n {currentTab === RESET_PASSWORD_CONFIRM && (\n
\n

Password Successfully Created!

\n

Please login with your new credentials

\n \n CONTINUE TO LOGIN\n \n
\n )}\n
)}\n {!token && }\n
\n );\n};\n\nexport default SendResetPassword;\n","import React, { useEffect } from 'react';\n\n// Router\nimport { Redirect } from 'react-router';\nimport { ToasterMessageTemplate } from 'components/common/Toaster/ToasterMessage';\nimport { useSnackbar } from 'notistack';\nimport iconError from 'images/status_red.svg';\n\nimport { TOAST_MESSAGE } from 'helpers/constant';\n\nconst InvalidPasswordResetToken = () => {\n const { enqueueSnackbar } = useSnackbar();\n\n useEffect(() => {\n enqueueSnackbar(\n \n );\n }, [])\n\n return ;\n\n}\n\nexport default InvalidPasswordResetToken;\n","import { UVAdmin, UVReport, FacilityDetails, EnclosureLogs } from 'components';\n\nconst routes = [\n {\n path: '/logout',\n name: 'Sign Out',\n icon: '',\n component: null,\n },\n {\n path: '/report',\n name: 'My Report',\n icon: '',\n component: UVReport,\n },\n {\n path: '/facilities/:id',\n name: 'Facility',\n icon: '',\n component: FacilityDetails,\n },\n {\n path: '/enclosure_logs',\n name: 'Enclosure Logs',\n icon: '',\n component: EnclosureLogs,\n },\n {\n path: '/facilities',\n name: 'My Facilities',\n icon: '',\n component: UVAdmin,\n exact: true,\n },\n { redirect: true, path: '/', pathTo: '/report', name: 'My Report' },\n];\n\nexport default routes;\n","// Node modules\nimport React from \"react\";\nimport { withSnackbar } from \"notistack\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\n\n// Components\nimport { DotLoading, Footer, Header, Modal } from \"components/common\";\nimport { ToasterMessageTemplate } from \"components/common/Toaster/ToasterMessage\";\nimport routes from \"routes\";\n// Styles\nimport \"./Main.scss\";\nimport warningIcon from \"images/icon-warning-large-red.svg\";\nimport iconError from \"images/status_red.svg\";\n//------------------------------------------------------------------------------\n// Helpers ---------------------------------------------------------------------\nimport { auth as authAPI, browserStorage, report as reportAPI } from \"services/api\";\nimport { getTimeout } from \"helpers/functions\";\nimport { Typography } from \"@material-ui/core\";\n// import { limitInterval } from \"helpers/constant\";\n\nexport const actionEvents = ['load', 'mousemove', 'mousedown', 'click', 'scroll', 'keypress']\n\nclass MainLayout extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n loggedIn: false,\n ciisUserInfo: null,\n currentTab: 0,\n isHeaderMenuOpen: false,\n isLoggingOut: false,\n isUVCAdmin: false,\n userActive: false, \n expireTimeId: null,\n warningTimeId: null, \n isShowUserExpiredToaster: false,\n sessionWarning: null,\n };\n\n this.interval = null;\n\n if(window.performance && window.performance.getEntriesByType(\"navigation\")[0].type === \"reload\") {\n window.sessionStorage.setItem('isAddEquipmentFired', false)\n }\n }\n\n componentDidMount = () => {\n if (this.props.ciisInfo) {\n this.setState((prevState) => ({\n ciisUserInfo: { ...this.props.ciisInfo },\n }), () => this.userSessionCouting());\n }\n else {\n this.checkLoggedIn();\n }\n actionEvents.forEach(evt => window.addEventListener(evt, this.resetActivityTimer))\n };\n\n componentWillUnmount = () => {\n actionEvents.forEach(evt => window.removeEventListener(evt, this.resetActivityTimer));\n clearInterval(this.interval);\n };\n\n handleOpenStackSnackbar = (message, options) => this.props.enqueueSnackbar(message, options);\n \n handleCloseStackSnackbar = (key) => key ? this.props.closeSnackbar(key) : this.props.closeSnackbar();\n\n resetActivityTimer = () => {\n console.log(\"User active!!!\")\n this.setState({\n userActive: true,\n }, () => {\n if (this.state.sessionWarning) {\n this.handleCloseStackSnackbar(this.state.sessionWarning)\n }\n })\n }\n\n userSessionCouting = () => {\n const timeoutOffset = 3 * 60 * 1000 // Offset for session timeout before expire. Currently: 3mins\n let timeout = getTimeout(parseInt(browserStorage.getData(\"header\").expiry))\n let timeoutWarning = timeout - timeoutOffset\n \n if (timeout <= 0) {\n this.showExpireModal();\n } else if (timeoutWarning <= 0) {\n this.showExpireToaster();\n } else {\n if (this.state.expireTimeId) {\n clearTimeout(this.state.expireTimeId)\n }\n if (this.state.warningTimeId) {\n clearTimeout(this.state.warningTimeId)\n }\n this.setState({\n expireTimeId: setTimeout(this.showExpireModal, timeout),\n warningTimeId: setTimeout(this.showExpireToaster, timeoutWarning)\n })\n }\n }\n\n showExpireToaster = () => {\n if(!this.state.userActive) {\n this.setState({\n sessionWarning: this.props.enqueueSnackbar(\n (\n \n ), {\n persist: true\n }\n )\n })\n }\n }\n\n showExpireModal = () => {\n console.log(\"USER SESSION EXPIRED !!!\");\n if (this.state.userActive) {\n this.setState({\n userActive: false,\n }, () => this.refresh())\n } else {\n this.setState({\n isShowUserExpiredToaster: true\n }, () => this.handleCloseStackSnackbar())\n }\n }\n\n refresh = () => {\n this.setState({\n isShowUserExpiredToaster: false\n }, () => {\n this.checkLoggedIn();\n });\n }\n\n // keepSession = () => {\n // if (browserStorage.getData(\"header\") && browserStorage.getData(\"header\").expiry) {\n // this.interval = intervalWithLimit(() => {\n // this.checkLoggedIn();\n // }, getTimeout(parseInt(browserStorage.getData(\"header\").expiry)), this.state.intervalWithLimit); // Re-new the access-token based on expiry\n // }\n // }\n\n refreshPBIKey = () => {\n let featureReport = null;\n let otherReports = {};\n let pbiKeys = browserStorage.getData('pbiKeys');\n return reportAPI.getFeatured()\n .then(res => {\n featureReport = res;\n pbiKeys['featuredReport'] = res;\n browserStorage.saveData('pbiKeys', pbiKeys)\n return reportAPI.getGroup()\n }) \n .then(groups => {\n if (groups.total <= 0) {\n return\n }\n otherReports['groupId'] = groups.items[0].id;\n return reportAPI.listReports(groups.items[0].id)\n })\n .then(reports => {\n if (reports.total <= 0) {\n return\n }\n\n const reportId = reports.items[0].id;\n if(featureReport.item.id !== reportAPI) {\n otherReports['reportId'] = reportId;\n\n return reportAPI.viewReport(otherReports.groupId, otherReports.reportId)\n .then(res => {\n pbiKeys['facilityReport'] = res;\n browserStorage.saveData('pbiKeys', pbiKeys)\n })\n }\n })\n .catch(err => console.log(err))\n }\n\n checkLoggedIn = () => {\n return authAPI.refreshSession()\n .then(adminUser => {\n this.setState({\n loggedIn: true,\n ciisUserInfo: adminUser,\n loading: false,\n });\n console.log(\"Is Admin user logged in: \", adminUser);\n })\n .then(() => this.refreshPBIKey())\n .then(() => this.userSessionCouting())\n .catch((err) => {\n console.log(\"User not logged in: \", err);\n this.setState({\n loggedIn: false,\n ciisUserInfo: null,\n loading: false,\n }, () => {\n clearInterval(this.interval);\n clearTimeout(this.state.expireTimeId);\n localStorage.removeItem('header')\n localStorage.removeItem('pbiKeys')\n window.location.replace('/login');\n });\n });\n };\n\n onLogout = () => {\n this.setState({isLoggingOut: true})\n return authAPI.logout();\n };\n\n userExpireCleanUp = () => {\n this.setState({\n loggedIn: false,\n ciisUserInfo: null,\n loading: false,\n }, () => {\n clearInterval(this.interval);\n localStorage.removeItem('header')\n localStorage.removeItem('pbiKeys');\n window.location.replace('/login');\n });\n }\n\n render = () => {\n const { ciisUserInfo, currentTab, isHeaderMenuOpen, isShowUserExpiredToaster } = this.state;\n return (\n \n \n \"\"\n User session expired. Please login again to continue!\n
\n
\n \n
\n
\n
\n }\n onClose={(cb) => this.userExpireCleanUp()}\n />\n {ciisUserInfo\n ? (\n
\n
this.onLogout()} setHeaderMenuFlag={(cb) => this.setState({ isHeaderMenuOpen: cb })} isUserSessionExpire={isShowUserExpiredToaster} />\n {/* Content */}\n \n {routes.map((prop, key) => {\n if (prop.redirect) return ;\n return \n this.setState({currentTab: cb})}\n setStackToaster={(message, options) => {\n this.handleOpenStackSnackbar(message, options)\n }}\n updateRole={() => this.checkLoggedIn()}\n isUserSessionExpire={isShowUserExpiredToaster} \n />} />;\n })}\n \n
this.setState({ currentTab: cb })} />\n
\n )\n : (\n \n )}\n {this.state.isLoggingOut && }\n
\n );\n };\n}\n\nexport default withSnackbar(MainLayout)\n","/******************************************************************************\\\n * File: App.jsx\n *\n * Author: CIIS\n *\n * Description: \n *\n * Notes:\n\\******************************************************************************/\n//------------------------------------------------------------------------------\n// Node Modules ----------------------------------------------------------------\nimport React from 'react';\nimport { SnackbarProvider } from 'notistack';\nimport { ThemeProvider, createMuiTheme } from '@material-ui/core';\nimport { BrowserRouter as Router, Switch } from 'react-router-dom';\n//------------------------------------------------------------------------------\n// Style -----------------------------------------------------------------------\nimport './App.scss';\n//------------------------------------------------------------------------------\n// Components ------------------------------------------------------------------\n// import Dashboard from './pages/auth/Dashboard';\n// import Login from \"pages/public/Login\";\nimport PrivateRoute from 'components/common/Auth/PrivateRoute';\nimport PublicRoute from 'components/common/Auth/PublicRoute';\nimport Login from 'components/login';\nimport { AcceptInvitation, ResetPassword, InvalidPasswordResetToken } from 'components';\n\nimport { browserStorage } from 'services/api';\nimport MainLayout from 'layout/Main';\nimport { isLogin } from 'helpers/functions';\n\nimport { limitInterval } from 'helpers/constant';\n\n//------------------------------------------------------------------------------\n// Helpers ---------------------------------------------------------------------\n// import logo from './logo.svg';\n//------------------------------------------------------------------------------\n\nconst theme = createMuiTheme({\n breakpoints: {\n values: {\n xs: 0,\n sm: 600,\n md: 960,\n lg: 1280,\n xl: 1910,\n },\n },\n});\n\nclass App extends React.Component {\n state = {\n ciisInfo: null,\n intervalLimit: 0,\n };\n\n componentDidMount = () => {\n if (!browserStorage.getData('savedFacility')) {\n browserStorage.saveData('savedFacility', {});\n }\n if (!browserStorage.getData('pbiKeys')) {\n browserStorage.saveData('pbiKeys', {});\n }\n };\n\n render() {\n const { ciisInfo, intervalLimit } = this.state;\n return (\n \n \n \n \n }\n />\n\n }\n />\n\n }\n />\n\n (\n \n this.setState({\n ciisInfo: ciisUser,\n intervalLimit: limitInterval,\n })\n }\n />\n )}\n />\n\n (\n \n )}\n />\n \n \n \n \n );\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App.jsx';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// ReactDOM.render(\n// \n// \n// ,\n// document.getElementById('root')\n// );\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}