{"version":3,"sources":["resources/Routes.ts","resources/Texts.ts","services/Service.ts","components/dialogs/DownloadDialog.tsx","resources/Enums.ts","components/shared/formControls/RoleRestrictedComponent.tsx","components/navMenu/LoginButton.tsx","components/navMenu/ManagementToolsButton.tsx","components/navMenu/UserToolsButton.tsx","store/SelectedSolution.ts","utils/utils.ts","components/shared/formControls/LoggedInSynamediaRestrictedComponent.tsx","components/navMenu/ServicesMenu.tsx","components/shared/formControls/LoggedInCustomerRestrictedComponent.tsx","components/navMenu/NavMenu.tsx","components/LayoutFooter.tsx","store/AlertStore.ts","components/AlertOverlay.tsx","components/Layout.tsx","utils/viewUtils.ts","store/FileManagement.tsx","components/fileManagement/fileUploadSection/FileUploadSection.tsx","components/shared/formControls/TextFormField.tsx","components/fileManagement/fileMetadataSection/TitleColumn.tsx","components/shared/formControls/NumberFormField.tsx","components/fileManagement/fileMetadataSection/VersionColumn.tsx","components/fileManagement/fileMetadataSection/FileTypeColumn.tsx","components/fileManagement/fileMetadataSection/FileInfoColumn.tsx","components/fileManagement/fileMetadataSection/FileMetadataSection.tsx","components/dialogs/ConfirmPublicPermissionDialog.tsx","components/fileManagement/fileAudienceSection/SecurityPermissionsColumn.tsx","components/fileManagement/fileAudienceSection/CompanySelectColumn.tsx","components/fileManagement/fileAudienceSection/TargetAudienceColumn.tsx","components/fileManagement/fileAudienceSection/FileAudienceSection.tsx","components/fileManagement/fileTaxonomySection/FileTaxonomyTree.tsx","components/fileManagement/fileTaxonomySection/FileTaxonomySection.tsx","components/fileManagement/FileManagementContainer.tsx","images/icons/icon-contacts.svg","views/fileManagement/FileManagementView.tsx","components/homePageLink/HomePageLink.tsx","images/icons/icon-eol-notice.svg","images/icons/icon-field-notices.svg","images/icons/icon-opensource.svg","images/icons/icon-support-ticket.svg","components/dialogs/NewFeaturesDialog.tsx","views/homeView/HomeView.tsx","components/shared/ViewHeader.tsx","components/dialogs/DeleteConfirmationDialog.tsx","components/fileManagement/NewFileVersionUpload.tsx","components/dialogs/GetDownloadUrlDialog.tsx","components/solutionsBrowser/VersionRecord.tsx","components/solutionsBrowser/VersionRecordList.tsx","components/solutionsBrowser/BrowserDetailTable.tsx","components/solutionsBrowser/SolutionsBrowserDetailTabs.tsx","components/solutionsBrowser/SolutionBrowserDetail.tsx","components/shared/AddCategoryInput.tsx","components/solutionsBrowser/SolutionsBrowserTree.tsx","components/solutionsBrowser/NewSolutionsTabsInput.tsx","components/solutionsBrowser/SolutionsTabs.tsx","images/icons/icon-eol-notice-black.svg","components/solutionsBrowser/SolutionsBrowser.tsx","images/icons/icon-field-notices-black.svg","views/solutionsView/SolutionsView.tsx","views/contacts/ContactsView.tsx","components/opensourceList/opensourceTableRow.tsx","components/opensourceList/opensourceTable.tsx","components/opensourceList/opensourceListContainer.tsx","views/opensource/OpensourceView.tsx","views/helpView/HelpView.tsx","components/categoryManagement/CategoryTableRow.tsx","components/categoryManagement/CategoryTable.tsx","components/categoryManagement/AddCategorySection.tsx","components/categoryManagement/CategoryManagementContainer.tsx","views/categoryManagement/CategoryManagementView.tsx","components/channelManagement/ChannelList/ChannelList.tsx","components/channelManagement/CustomTextField.tsx","components/channelManagement/CompanyPicker/CompanyPicker.tsx","components/channelManagement/CompanyPickerModal.tsx","components/channelManagement/NodePicker/NodePicker.tsx","components/channelManagement/NodePickerModal.tsx","components/channelManagement/AddChannel/AddChannelModal.tsx","components/channelManagement/DeleteChannel/DeleteChannelModal.tsx","components/channelManagement/ViewChannel/ViewChannelModal.tsx","components/channelManagement/ModifyChannel/ModifyChannelModal.tsx","components/channelManagement/ChannelManagementContainer.tsx","views/channelManagement/ChannelManagementView.tsx","components/channelManagement/ChannelList/MyChannels.tsx","components/myChannels/GetAccessKey/GetAccessKeyModal.tsx","components/myChannels/MyChannelsContainer.tsx","views/myChannels/MyChannelsView.tsx","components/fileManagement/GetFile.tsx","App.tsx","registerServiceWorker.ts","store/CurrentUser.ts","store/index.ts","index.tsx","store/configureStore.ts","images/synamedia-white.svg","images/synamedia-icon-white.svg","components/dialogs/downloadlink.png","components/dialogs/downloadDialog.png","components/dialogs/overwriteFile.png","views/helpView/downloadlink.png","views/helpView/downloadDialog.png","views/helpView/overwriteFile.png"],"names":["Routing","base","params","query","result","URLSearchParams","Object","keys","forEach","paramKey","append","toString","constructFullUrl","Routes","HomePage","Solutions","FileManagement","NewFile","Contacts","Opensource","Help","ChannelManagement","MyChannels","CategoryManagement","Administration","Texts","Navigation","Title","Services","ManagementTools","UserTools","AddNewFile","Categories","ChannelAdmin","ReturnToSynamedia","Login","Logout","LoginInternalUser","LoginExternalUser","Back","HomeView","AppTitle","AppSubtitle","SolutionsTitle","ServicesTitle","ServicesLinks","SupportTicketsLink","EoLNoticesLink","FieldNoticesLink","ContactsLink","OpenSourceLink","QuickStartGuidesLink","HelpLink","SolutionsView","UnauthorizedAccess","ViewTitle","Tabs","AddNewCategory","AddButton","CancelButton","Browser","Software","Documentation","Training","TreeItemTooltips","AddNew","Upload","Edit","Delete","ItemDetailAttributes","Download","Description","Updated","FileSize","mdChecksum","shaChecksum","ContactsView","VideoNetworksTitle","RegionalNumbersTitle","OpensourceView","Disclaimer","ContactMailTo","ContactLinkText","SolutionGroups","VideoNetwork","VideoPlatform","VideoControlPlane","LegacySoftware","SupportTickets","EOL","FieldNotices","OpenSource","QuickStartQuides","FileManagementView","AddNewFormTitle","EditFormTitle","Sections","SelectButton","UploadButton","UploadFinished","Progress","Processing","Uploading","Finished","Failed","Metadata","TitleColumn","DescriptionFieldLabel","VersionColumn","MajorFiledLable","MinorFieldLabel","PatchFieldLabel","TypeColumn","InfoColumn","FieldTitles","MdChecksum","Size","UploadedBy","TimeStamp","Audience","PermissionsColumn","Options","Registered","RegisteredAll","Public","SelectCompanyColumn","GuideText1","GuideText2","TargetAudience","GuideText","Taxonomy","CollapseAll","ChannelsView","CategoryManagementView","ChannelManagementView","MyChannelsView","Dialogs","ContextText","FileNameColumn","FileLinkColumn","AddNewFolder","NameFieldLable","DeleteConfirmation","PublicPermissionConfirmation","ConfirmText","Buttons","Cancel","Submit","Save","DownloadSelected","DownloadAll","Add","ConfirmPublic","RevertToPublic","Footer","ConditionsNotice","i","Service","apiUrl","method","payload","onUploadProgress","cancelTokenSource","url","requestConfig","cancelToken","token","timeout","axios","get","response","post","put","patch","delete","data","callApi","search","groupName","value","id","navigationName","icon","fileId","categoryName","rootGroupName","getDetailItems","tabId","solutionFolderItemId","parentId","folderName","requestBody","Number","folderId","nodeId","nodeName","fileName","fileLink","Filename","uniqueId","file","FormData","fileUniqueId","fileTitle","description","fileType","version","permission","permittedCompanies","permittedRoles","postMetadata","FileUniqueId","FileName","ParentId","Type","Version","Permission","PermittedCompanies","PermittedRoles","SolutionsGroup","FileType","FilePermission","DownloadDialog","props","React","links","setLinks","loading","setLoading","selectedLinks","setSelectedLinks","getDownloadCartContent","console","error","loadData","downloadFiles","linksToBeDownloaded","link","aElement","document","createElement","href","download","body","appendChild","click","remove","handleClose","close","Dialog","maxWidth","open","onClose","DialogTitle","DialogContent","DialogContentText","Box","sx","width","Table","size","stickyHeader","TableHead","TableRow","TableCell","Typography","variant","fontFamily","Checkbox","checked","length","onChange","event","TableBody","padding","colSpan","display","className","CircularProgress","map","some","sl","selectedLinksCopy","slice","push","filter","handleSelectChange","DialogActions","Button","onClick","connect","state","currentUser","user","hasRoles","userRole","enabledRoles","enabledRole","hasUploadPermission","children","anchorEl","setAnchorEl","Boolean","handleMenuOpen","currentTarget","handleMenuClose","alignItems","username","height","mt","ml","Menu","MenuItem","window","location","ManagementToolsButton","position","flexDirection","to","getNewFileViewUrl","getChannelManagementViewUrl","UserToolsButton","getMyChannelsViewUrl","actionCreators","setSelectedGroup","group","type","selectedGroup","setSelectedGroupId","groupId","selectedGroupId","setSelectedSolution","solution","selectedSolution","setSelectedSolutionTabId","tab","selectedTabId","handleErrorMessage","message","name","JSON","stringify","formatFileSize","sizeIndex","Math","floor","log","parseFloat","pow","toFixed","redirectToSupport","loginname","split","toUpperCase","selectedSolutions","dispatch","bindActionCreators","SelectedSolutionStore","selectedSolutionsTabId","handleLinkClick","getSolutionsViewUrl","getContactsViewUrl","getOpensourceViewUrl","getHelpViewUrl","NavMenu","downloadDialogOpened","setDownloadDialogOpened","justifyContent","getHomeViewUrl","src","SynamediaIconImg","alt","SynamediaTitleImg","LayoutFooter","Container","gutterBottom","addAlert","alert","addErrorAlert","errorMessage","text","removeAlert","alerts","AlertStoreActionCreators","setTimeout","top","left","right","Stack","spacing","index","Alert","severity","key","flex","parseViewParameters","queryString","parse","setFileManagementFile","fileManagement","FileManagementStore","uploadActive","setUploadActive","uploadFinished","setUploadFinished","uploadProgress","setUploadProgress","setFile","progressText","setProgressText","existingFileGuid","fileGuid","setFileGuid","controller","AbortController","uploadAbortSignal","signal","uploadCompleted","formData","isSuccess","onUploadFinished","downloadInfo","mD5Checksum","timeStamp","uploadedBy","fileData","metadata","editFileTitle","cancelFileUpload","cancel","abort","azureFileUpload","Date","now","getUploadSasLink","sas","blobServiceClient","BlobServiceClient","uri","containerClient","getContainerClient","container","exists","blobClient","getBlockBlobClient","options","concurrency","blobHTTPHeaders","blobContentType","onProgress","ev","percentage","loadedBytes","abortSignal","onUploadStarted","uploadData","catch","err","azureFileUpdate","getProperties","existingProperties","existingMetadata","getTags","tagsResponse","existingTags","tags","uploadFile","handleUploadClick","handleCancelClick","component","disabled","hidden","selectedFile","target","files","uuidv4","marginLeft","fontWeight","mr","LinearProgress","color","minWidth","round","TextFormField","label","InputLabel","TextField","multiline","hiddenLabel","e","title","NumberFormField","num","s","padLeadingZeros","step","maxLength","onKeyPress","test","preventDefault","replacedValue","replace","parsedValue","parseInt","isNaN","major","minor","RadioGroup","fileTypeValue","FormControlLabel","control","Radio","format","FileMetadataSection","ConfirmPublicPermissionDialog","stopPropagation","onConfirm","confirmPublicDialogOpen","setDialogOpen","filePermissionValue","AlertStore","companySearchTimeout","companies","setCompanies","companiesSearchValue","setCompaniesSearchValue","roles","setRoles","isMounted","getRoles","loadRoles","loadCompanies","searchTerm","getCompanies","handleCompanySearchChange","clearTimeout","handleCompanySearchBlur","Autocomplete","disablePortal","inputValue","renderInput","onBlur","renderOption","optionProps","option","selected","companyName","getOptionLabel","disableCloseOnSelect","multiple","roleName","company","IconButton","companyId","c","handleRemoveItemClick","Close","defaultSelectedId","dataLoaded","rootItem","setRootItem","expandedNodes","setExpandedNodes","handleDefaultExpandedNodes","treeItem","parentIds","parentIdsCopy","nodes","n","loadItems","getFoldersStructure","responseItem","current","handleNodeClick","node","level","parentIdValue","expandedNodesCopy","en","handleExpandedNodes","TreeView","defaultCollapseIcon","defaultExpandIcon","expanded","renderTreeItems","sn","TreeItem","Array","isArray","subNode","FileTaxonomySection","_defs","_g","fieldsVisible","setFieldsVisible","updateInProgress","setUpdateInProgress","history","useHistory","viewParameters","useLocation","goBack","from","selectedNodeId","prevTabId","fromId","getFileDetailsByUniqueId","responseItemType","responseItemVersion","undefined","loadFileDetails","handleSubmitClick","Error","uploadFileMetadata","submitButtonDisabled","HomePageLink","_excluded","_extends","assign","bind","arguments","t","r","hasOwnProperty","call","apply","_ref","svgRef","o","includes","_objectWithoutPropertiesLoose","getOwnPropertySymbols","propertyIsEnumerable","_objectWithoutProperties","viewBox","ref","transform","d","ForwardRef","forwardRef","x2","y2","x1","TriggerButton","styled","margin","fontSize","lineHeight","transition","cursor","background","border","boxShadow","NewFeaturesDialog","newFeaturesDialogOpen","setNewFeaturesDialogOpen","Cookies","fullWidth","style","textAlign","gap","minHeight","paddingBottom","downloadLink","downloadDialog","overwriteFile","marginTop","set","path","solutionCategories","setSolutionCategories","eolIdNoticesId","setEolIdNoticesId","fieldNoticesId","setFieldNoticesId","loadCategories","getCategories","responseItems","loadGroupIds","getGroupNavigationNodeId","then","startsWith","splitIconValue","ViewHeader","DeleteConfirmationDialog","itemName","onDelete","maxHeight","marginRight","NewFileVersionUpload","cancelVisible","setCancelVisible","uploadDialogOpen","paddingRight","marginBottom","visibility","dialogClosed","handleCopy","navigator","clipboard","writeText","downloadUrl","whiteSpace","overflowX","AttributeValue","setOpen","downloadUrlDialogOpen","setDownloadUrlDialogOpen","setDownloadUrl","fileMetadata","setFileMetadata","deleteDialogOpen","setDeleteDialogOpen","setUploadDialogOpen","setPermission","getFileDetailMetadata","record","resultFileMetadata","fetchPermission","handleDownloadClick","getFileDownloadLink","fileDownloadData","handleGetDownloadLinkClick","host","encodeURIComponent","handleOpenClick","getFileManagementUrl","FileDownloadOutlined","InfoOutlined","Link","Collapse","in","unmountOnExit","VersionRecordList","fileNodes","Row","row","rowText","borderBottom","aria-label","disableRipple","paddingTop","orderedNodes","detailNodes","concat","sort","a","b","TableContainer","SolutionsBrowserDetailTabs","newValue","TabIndicatorProps","tabItems","Tab","tabValue","setTabValue","detailItems","setDetailItems","loadFolderDetail","getDetailItem","responseDetailItem","handleDelete","deleteFile","detailItemsCopy","di","findIndex","x","splice","find","AddCategoryInput","defaultValue","setInputValue","onAdd","primaryButtonText","onCancel","solutionId","solutionGroup","items","setItems","selectedSolutionId","setSelectedSolutionId","addInputVisible","setAddInputVisible","visibleAddNodeId","setAddVisibleNodeId","visibleEditNodeId","setEditVisibleNodeId","itemToBeDeleted","setItemToBeDeleted","getTabItem","findNodeInTree","stack","pop","child","addFolder","addNewFolder","editFolder","deleteFolder","handleNewCategoryCancelClick","handleEditCategoryCancelClick","Tooltip","handleAddNewCategoryClick","handleEditCategoryClick","handleDeleteClick","onNodeSelect","itemId","NewSolutionsTabsInput","visible","defaultSelectedTabId","parentItem","setParentItem","tabs","setTabs","newTabInputVisible","setnewTabInputVisible","loadTabs","setFirstAsSelected","getTabsByCategoryId","addNewTab","tabName","showTabs","browserAccessible","solutionsTitleText","solutionsTitleIcon","VideoNetworks","Items","item","Name","ContactPhoneNumber","RegionalNumbers","ContactCity","OpensourceTableRow","osDoc","setValue","handleDocView","getDocumentLink","filename","ProductName","ProductRelease","ProductReleaseDate","OpensourceTable","opensourceDocuments","setOpensourceDocuments","loadDocumentList","getOpensourceFiles","HelpView","CategoryTableRow","category","onSave","editModeActive","setEditMode","nameValue","reader","FileReader","readAsDataURL","onload","onerror","accept","CategoryTable","categories","AddCategorySection","selectedFileName","setSelectedFileName","setCategoryName","handleAddNewCategory","addNewCategory","handleDeleteCategory","deleteCategory","handleUpdateCategory","updateCategory","ChannelList","setSelectedChannel","useState","setData","useEffect","fetch","json","direction","backgroundColor","DataGrid","initialState","columns","columnVisibilityModel","navigationNode","navigationId","channelUniqueId","isEnabled","isBlocked","rows","field","headerName","editable","sortable","headerClassName","checkboxSelection","disableMultipleRowSelection","rowSelection","onRowSelectionModelChange","newSelectionModel","selectedRow","selectedChannel","CustomTextField","changeHandler","CompanyPicker","searchTimeout","setSearchTerm","pickedCompanies","setPickedCompanies","targetCompanies","mb","searchTextBoxValue","onRowClick","concatArray","uniqueArray","Set","setTargetCompanies","columnHeaderHeight","disableColumnResize","rowToDelete","filteredPick","Backdrop","other","clsx","grey","Modal","BaseModal","StyledBackdrop","ModalContent","theme","css","palette","mode","CompanyPickerModal","errorOpen","setErrorOpen","selectedCompanies","setSelectedCompanies","aria-labelledby","aria-describedby","slots","backdrop","Snackbar","autoHideDuration","reason","zIndex","anchorOrigin","vertical","horizontal","NodePicker","setTargetNode","overflow","RichTreeView","onItemSelectionToggle","isSelected","findNodeById","tree","isLeaf","endIcon","CloseSquare","SvgIcon","NodePickerModal","channelSharedPath","isLeafNode","selectedNode","setSelectedNode","borderRadius","AddChannelModal","channelName","setChannelName","channelDescription","setChannelDescription","targetNode","targetNodeFriendly","setTargetNodeFriendly","errorText","setErrorText","handleAdd","companyIdArray","reduce","acc","obj","companyPermissions","requestOptions","domain","DeleteChannelModal","selectedChannelUniqueId","apiDeleteChannel","ViewChannelModal","setChannelIsEnabled","setChannelIsBlocked","setChannelUniqueId","setChannelSharedPath","setChannelNavigationId","setChannelPermissions","channelCompanies","setChannelCompanies","channelAccessKeys","setChannelAccessKeys","apiGetChannel","apiGetAccessKeys","apiGetChannelPermissions","apiGetChannelCompanies","fetchChannel","ok","channel","fetchChannelPermissions","channelPermissions","fetchChannelCompanies","toLowerCase","fetchChannelAccessKeys","handleOpen","getChannel","getAccessKeys","getChannelPermissions","getChannelCompanies","resolvedNavigationNode","lookupCompany","expirationDate","toUTCString","ModifyChannelModal","companyDeletedModalOpen","setCompanyDeletedModalOpen","companiesToRemove","setCompaniesToRemove","handleModify","removedCompanies","entry","entryTarget","saveModifiedChannel","companyDeletedModal","handleDeleteCompaniesCancel","join","outline","helpOpen","setHelpOpen","handleHelpClose","float","myCompanyId","GetAccessKeyModal","deleteModalOpen","setDeleteModalOpen","idToDelete","setIdToDelete","isHovered","setIsHovered","apiDeleteAccessKey","deleteButton","reloadChannelAccessKeys","channelNavigationId","Id","deleteUrl","textToCopy","closest","textContent","trim","deleteModal","handleDeleteKey","onMouseEnter","onMouseLeave","wordWrap","accessKey","helpModalOpen","setHelpModalOpen","myCompany","GetFile","searchParams","decodeURIComponent","useParams","setError","msgStyle","403","404","getPublicDownloadUrl","status","redirectToFile","errorMsg","Switch","WrongSwitch","Route","WrongRoute","App","Layout","exact","hostname","match","reducers","incomingAction","action","alertsCopy","alertsRemove","shift","Provider","WrongProvider","ConnectedRouter","WrongConnectedRouter","baseUrl","getElementsByTagName","getAttribute","createBrowserHistory","basename","store","middleware","thunk","routerMiddleware","rootReducer","combineReducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","compose","applyMiddleware","configureStore","loadUser","getCurrentUser","CurrentUserActionCreators","timeoutMinutes","ReactDOM","getElementById","startApp","serviceWorker","ready","registration","unregister","module","exports"],"mappings":";6jFAGaA,EAAO,4CAiFlB,OAjFkB,kDAqBnB,SAAgCC,EAAcC,GAC7C,IACIC,EADAC,EAAiBH,EAarB,OAVIC,IACHC,EAAQ,IAAIE,gBAEZC,OAAOC,KAAKL,GAAQM,SAAQ,SAACC,GAC5BN,EAAMO,OAAOD,EAAUP,EAAOO,OAG/BL,EAAM,UAAMA,EAAM,YAAID,EAAMQ,aAGtBP,IACP,4BAED,WACC,OAAOJ,EAAQY,iBAAiBZ,EAAQa,OAAOC,YAC/C,iCAED,SAAkCZ,GACjC,OAAOF,EAAQY,iBAAiBZ,EAAQa,OAAOE,UAAWb,KAC1D,kCAED,SAAmCA,GAClC,OAAOF,EAAQY,iBAAiBZ,EAAQa,OAAOG,eAAgBd,KAC/D,+BAED,WACC,OAAOF,EAAQY,iBAAiBZ,EAAQa,OAAOI,WAC/C,gCAED,WACC,OAAOjB,EAAQY,iBAAiBZ,EAAQa,OAAOK,YAC7C,kCAED,WACE,OAAOlB,EAAQY,iBAAiBZ,EAAQa,OAAOM,cAChD,4BAEH,WACC,OAAOnB,EAAQY,iBAAiBZ,EAAQa,OAAOO,QAM9C,yCAEF,WACI,OAAOpB,EAAQY,iBAAiBZ,EAAQa,OAAOQ,qBAChD,kCAEH,WACI,OAAOrB,EAAQY,iBAAiBZ,EAAQa,OAAOS,cAChD,0CAEH,WACC,OAAOtB,EAAQY,iBAAiBZ,EAAQa,OAAOU,wBAC/C,EAjFkB,GAAPvB,EACEa,OAAS,CACtBC,SAAU,IACVC,UAAW,aACXS,eAAgB,kBAChBR,eAAgB,kBAChBK,kBAAmB,qBACnBC,WAAY,cACZL,QAAS,WACNC,SAAU,YACVC,WAAY,cACfI,mBAAoB,sBACpBH,KAAM,SCfR,IA2ReK,EA3RD,CACbC,WAAY,CACXC,MAAO,YACPZ,UAAW,YACXa,SAAU,qBACVC,gBAAiB,mBACjBC,UAAW,iBACXC,WAAY,eACZC,WAAY,aACZC,aAAc,2BACdX,WAAY,oBACZY,kBAAmB,gBACnBC,MAAO,QACPC,OAAQ,SACRC,kBAAmB,gBACnBC,kBAAmB,gBACnBC,KAAM,QAEPC,SAAU,CACTC,SAAU,6BACVC,YAAa,8BACbC,eAAgB,YAChBC,cAAe,qBACfC,cAAe,CACdC,mBAAoB,kBACpBC,eAAgB,sBAChBC,iBAAkB,gBAClBC,aAAc,WACdC,eAAgB,cAChBC,qBAAsB,qBACtBC,SAAU,SAGZC,cAAe,CACdC,mBAAoB,uCACpBC,UAAW,6BACXC,KAAM,CACLC,eAAgB,mBAChBC,UAAW,MACXC,aAAc,UAEfC,QAAS,CACRJ,KAAM,CACLK,SAAU,WACVC,cAAe,gBACfC,SAAU,YAEXC,iBAAkB,CACjBC,OAAQ,mBACRC,OAAQ,cACRC,KAAM,gBACNC,OAAQ,UAETC,qBAAsB,CACrBC,SAAU,WACV3C,MAAO,QACP4C,YAAa,cACbC,QAAS,UACTC,SAAU,YACVC,WAAY,eACZC,YAAa,sBAIhBC,aAAc,CACbjD,MAAO,mCACPkD,mBAAoB,iBACpBC,qBAAsB,wBAEtBC,eAAgB,CACdpD,MAAO,sBACPqD,WAAY,8KACZC,cAAe,2FACfC,gBAAiB,wBAEpBC,eAAgB,CACfC,aAAc,gBACdC,cAAe,iBACfC,kBAAmB,sBACnBC,eAAgB,kBAChBC,eAAgB,kBAChBC,IAAK,sBACLC,aAAc,gBACdxE,SAAU,WACVyE,WAAY,cACZC,iBAAkB,sBAEnBC,mBAAoB,CACnBC,gBAAiB,iBACjBC,cAAe,qBACfC,SAAU,CACT9B,OAAQ,CACPvC,MAAO,yBACPsE,aAAc,iBACdC,aAAc,SACdC,eAAgB,wBAChBC,SAAU,CACTC,WAAY,aACZC,UAAW,YACXC,SAAU,WACVC,OAAQ,yBAGVC,SAAU,CACT9E,MAAO,WACP+E,YAAa,CACZ/E,MAAO,wBACPgF,sBAAuB,eAExBC,cAAe,CACdjF,MAAO,UACPkF,gBAAiB,QACjBC,gBAAiB,QACjBC,gBAAiB,SAElBC,WAAY,CACXrF,MAAO,aAERsF,WAAY,CACXtF,MAAO,uBACPuF,YAAa,CACZC,WAAY,eACZC,KAAM,OACNC,WAAY,cACZC,UAAW,gBAIdC,SAAU,CACT5F,MAAO,kBACP6F,kBAAmB,CAClB7F,MAAO,uBACP8F,QAAS,CACRC,WAAY,6BACZC,cAAe,+BACfC,OAAQ,WAGVC,oBAAqB,CACpBlG,MAAO,8BACPmG,WAAY,wFACZC,WAAY,oBAEbC,eAAgB,CACfrG,MAAO,kBACPsG,UAAW,8CAGbC,SAAU,CACTvG,MAAO,WACPsG,UACC,2QACDE,YAAa,kBAKhBC,aAAc,CACbtC,gBAAiB,iBACjBC,cAAe,qBACfC,SAAU,CACT9B,OAAQ,CACPvC,MAAO,yBACPsE,aAAc,iBACdC,aAAc,SACdC,eAAgB,wBAChBC,SAAU,CACTC,WAAY,aACZC,UAAW,YACXC,SAAU,WACVC,OAAQ,yBAGVC,SAAU,CACT9E,MAAO,WACP+E,YAAa,CACZ/E,MAAO,wBACPgF,sBAAuB,eAExBC,cAAe,CACdjF,MAAO,UACPkF,gBAAiB,QACjBC,gBAAiB,QACjBC,gBAAiB,SAElBC,WAAY,CACXrF,MAAO,aAERsF,WAAY,CACXtF,MAAO,uBACPuF,YAAa,CACZC,WAAY,eACZC,KAAM,OACNC,WAAY,cACZC,UAAW,gBAIdC,SAAU,CACT5F,MAAO,kBACP6F,kBAAmB,CAClB7F,MAAO,uBACP8F,QAAS,CACRC,WAAY,6BACZC,cAAe,+BACfC,OAAQ,WAGVC,oBAAqB,CACpBlG,MAAO,8BACPmG,WAAY,mCACZC,WAAY,oDAEbC,eAAgB,CACfrG,MAAO,kBACPsG,UAAW,8CAGbC,SAAU,CACTvG,MAAO,WACPsG,UACC,2QACDE,YAAa,kBAOhBE,uBAAwB,CACvB9E,UAAW,sBACX0C,aAAc,cACdvC,UAAW,OAEZ4E,sBAAuB,CACtB/E,UAAW,2BACX0C,aAAc,cACdvC,UAAW,OAEZ6E,eAAgB,CACfhF,UAAW,oBACX0C,aAAc,cACdvC,UAAW,OAEZ8E,QAAS,CACRlE,SAAU,CACT3C,MAAO,iBACP8G,YAAa,2BACbC,eAAgB,YAChBC,eAAgB,oBAEjBC,aAAc,CACbjH,MAAO,iBACPkH,eAAgB,eAEjBC,mBAAoB,CACnBnH,MAAO,SACP8G,YAAa,oCAEdM,6BAA8B,CAC7BN,YAAa,+CACbO,YAAa,6BAGfC,QAAS,CACRC,OAAQ,SACRhF,OAAQ,SACRiF,OAAQ,SACRC,KAAM,OACNjF,KAAM,OACNkF,iBAAkB,oBAClBC,YAAa,eACbC,IAAK,MACLnF,OAAQ,SACRoF,cAAe,iBACfC,eAAgB,qBAEjBC,OAAQ,CACPC,iBACC,ukB,2KCtRH,+HAAAC,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAGO,IAAMC,EAAO,4CA8SlB,OA9SkB,gFACnB,WACCC,EACAC,EACAC,EACAC,EACAC,GAAqC,2EAG/BC,EAAW,cAAUL,GAErBM,EAAoC,CACzCH,iBAAkBA,EAClBI,YAA8B,OAAjBH,QAAiB,IAAjBA,OAAiB,EAAjBA,EAAmBI,MAChCC,QAAS,MACR,EAAD,GAEOR,EAAM,OACR,QADQ,KACH,EAIL,SAJK,KAIC,EAIN,QAJM,KAID,GAIL,UAJK,KAIE,GAIP,WAJO,KAIC,mCAfKS,IAAMC,IAAIN,EAAKC,GAAe,KAAD,EAAtC,OAARM,EAAQ,oDAISF,IAAMG,KAAKR,EAAKH,EAASI,GAAe,KAAD,GAAhD,OAARM,EAAQ,qDAISF,IAAMI,IAAIT,EAAKH,EAASI,GAAe,KAAD,GAA/C,OAARM,EAAQ,qDAISF,IAAMK,MAAMV,EAAKH,EAASI,GAAe,KAAD,GAAjD,OAARM,EAAQ,qDAISF,IAAMM,OAAOX,EAAKC,GAAe,KAAD,GAAzC,OAARM,EAAQ,6DAGHA,EAASK,MAAI,4CACpB,2DAvCkB,IAuClB,6DAED,uGACUlB,EAAQmB,QAAa,uBAAwB,QAAM,2CAC3D,kDAJD,IAIC,iEAEF,WAAiCC,GAAe,uEAK9C,OAJGd,EAAc,0BAEdc,IACHd,GAAO,eAAiBc,GACxB,kBAEMpB,EAAQmB,QAA8Bb,EAAK,QAAM,2CACxD,mDAVC,IAUD,6DAED,uGACQN,EAAQmB,QAA2B,kBAAmB,QAAM,2CACnE,kDAJA,IAIA,kEAED,uGACQnB,EAAQmB,QAAa,wBAAyB,QAAM,2CAC3D,kDAJA,IAMA,uEACA,uGACOnB,EAAQmB,QAAa,qBAAsB,QAAM,2CACvD,kDAHD,IAGC,0EAED,uGACOnB,EAAQmB,QAAa,wBAAyB,QAAM,2CAC1D,kDAJA,IAIA,6EAEF,WAA6CE,GAAiB,iFAChDrB,EAAQmB,QAAQ,oCAAD,OAAqCE,GAAa,OAAO,KAAD,8EACpF,mDAJC,IAID,mEAED,WAAmCC,GAA0B,iFACtDtB,EAAQmB,QAAQ,0BAA2B,OAAQG,GAAO,KAAD,sCAC/D,mDAJA,IAIA,kEAED,WAAkCA,GAAyB,iFACpDtB,EAAQmB,QAAQ,WAAY,OAAQG,GAAO,KAAD,sCAChD,mDAJA,IAIA,mEAED,WAAmCA,GAA0B,iFACtDtB,EAAQmB,QAAQ,6BAA8B,MAAO,CAC1DI,GAAID,EAAMC,GACVC,eAAgBF,EAAME,eACtBC,KAAMH,EAAMG,OACV,KAAD,sCACF,mDARA,IAQA,mEAED,WAAmCF,GAAU,iFACtCvB,EAAQmB,QAAQ,8BAAD,OAA+BI,GAAM,OAAO,KAAD,sCAChE,mDAJA,IAIA,sEAED,WAAsCG,GAAc,iFACtC1B,EAAQmB,QAAO,kCAAiCO,GAAU,OAAO,KAAD,8EAC7E,mDAJA,IAIA,sEAED,WAAsCC,GAAoB,uFAClC3B,EAAQmB,QAAO,oCACRQ,GAC7B,OACC,KAAD,EAHa,OAARd,EAAQ,yBAKPA,GAAQ,2CACf,mDATA,IASA,wEAED,WAAwCU,GAAU,uFAC1BvB,EAAQmB,QAAO,sCACNI,GAC/B,OACC,KAAD,EAHa,OAARV,EAAQ,yBAKPA,GAAQ,2CACf,mDATA,IASA,wEAED,WACCe,GAAqB,mFACS,OAA9BC,IAAuB,iCAAO,kBAEvB7B,EAAQmB,QAAO,qCACSS,EAAa,YAAIC,GAC/C,QACA,2CACD,mDAVA,IAUA,+DAED,WAA+BC,GAAa,0FACpC9B,EAAQmB,QAAO,gCACIW,GACzB,QACA,2CACD,mDAPA,IAOA,kEAED,WACCC,GAA4B,0FAErB/B,EAAQmB,QAAO,iCACKY,GAC1B,QACA,2CACD,mDATA,IASA,iEAED,WAAiCC,EAAkBC,GAAkB,uEAInE,OAHKC,EAAc,CACnBF,SAAUG,OAAOH,GACjBR,eAAgBS,GACf,EAAD,OAEKjC,EAAQmB,QAAQ,gCAAiC,OAAQe,GAAa,KAAD,sCAC3E,qDATA,IASA,+DAED,WAA+BE,EAAkBH,GAAkB,uEAIjE,OAHKC,EAAc,CACnBG,OAAQF,OAAOC,GACfE,SAAUL,GACT,EAAD,OAEKjC,EAAQmB,QAAQ,2BAA4B,MAAOe,GAAa,KAAD,sCACrE,qDATA,IASA,mEAED,uGACQlC,EAAQmB,QAAyB,gBAAiB,QAAM,2CAC/D,kDAJA,IAIA,0EAED,WAA0CoB,EAAkBC,GAAgB,uEAIzE,OAHIN,EAAc,CACnBK,SAAUA,EACVC,SAAUA,GACV,kBAEMxC,EAAQmB,QAAgB,oBAAqB,OAAQe,IAAY,2CACxE,qDATA,IASA,2EAED,uGACQlC,EAAQmB,QAAuC,qBAAsB,QAAM,2CAClF,kDAJA,IAMD,+DACA,WAA+BkB,GAAc,0FACrCrC,EAAQmB,QAAQ,qBAAD,OAAsBkB,GAAU,WAAS,2CAC/D,mDAHD,IAGC,iEACD,WAAiCA,GAAc,0FACvCrC,EAAQmB,QAAQ,uBAAD,OAAwBkB,GAAU,WAAS,2CACjE,mDAHA,IAGA,0EAED,WACCE,GAAgB,0FAETvC,EAAQmB,QAAO,6BACCoB,GACtB,QACA,2CACD,mDATA,IASA,wEAED,WAAwCF,GAAc,0FAC9CrC,EAAQmB,QAAO,0BAAiDkB,GAAU,QAAM,2CACvF,mDAJA,IAIA,oEAEA,WAAoCI,GAAgB,0FAC7CzC,EAAQmB,QAAO,oCAAuDsB,GAAY,QAAM,2CAC/F,mDAJA,IAIA,mEAED,WAAmCJ,GAAc,0FACzCrC,EAAQmB,QAAO,6BACCkB,GACtB,QACA,2CACD,mDAPA,IAOA,6EAED,WACCK,GAAgB,0FAET1C,EAAQmB,QAAO,uCACWuB,GAChC,QACA,2CACD,mDATA,IASA,yEAED,WACCL,GAAc,0FAEPrC,EAAQmB,QAAO,uCACWkB,GAChC,QACA,2CACD,mDATA,IASA,qEAED,uGACQrC,EAAQmB,QAAQ,uBAAwB,QAAM,2CACrD,kDAJA,IAIA,+DAED,WACCwB,EACAvC,EACAC,GAAoC,uEAIV,OAFpBa,EAAiB,IAAI0B,UAEtB/L,OAAO,OAAQ8L,GAAM,kBAEnB3C,EAAQmB,QACd,gBACA,OACAD,EACAd,EACAC,IACA,2CACD,uDAlBA,IAkBA,uEAED,WACCwC,EACAN,EACAO,EACAC,EACAf,EACAgB,EACAC,EACAC,EACAC,EACAC,GAAiC,uEAahC,OAXKC,EAAoB,CACzBC,aAAcT,EACdU,SAAUhB,EACVzK,MAAOgL,EACPpI,YAAaqI,EACbS,SAAUxB,EACVyB,KAAMT,EACNU,QAAST,EACTU,WAAYT,EACZU,mBAAoBT,EACpBU,eAAgBT,GACf,EAAD,OAEKpD,EAAQmB,QACb,wBACA,OACAkC,GACC,KAAD,sCACD,qEAhCA,IAgCA,0EAED,WACCd,GAAgB,0FAETvC,EAAQmB,QAAO,gCACIoB,GACzB,QACA,2CACD,mDATA,IASA,qEAED,WAAqCA,GAAgB,uEAGnD,OAFKL,EAAc,CACnBK,SAAUA,GACT,EAAD,OAEKvC,EAAQmB,QACb,sBACA,OACAe,GACC,KAAD,sCACD,mDAZA,MAYA,EA9SkB,G,aCHpB,q1MA0BA,IC3BY4B,EASAC,EAMAC,ED+JGC,EAnJsD,SAACC,GACrE,MAA0BC,WAAoC,IAAG,mBAA1DC,EAAK,KAAEC,EAAQ,KACtB,EAA8BF,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAC1B,EAA0CJ,WAAoC,IAAG,mBAA1EK,EAAa,KAAEC,EAAgB,KAEtCN,aAAgB,YACD,uCAAG,oFACC,OAAjBI,GAAW,GAAM,kBAG0BvE,EAAQ0E,yBAAyB,KAAD,EAApEnO,EAA2B,OAEjC8N,EAAS9N,GAAQ,gDAEjBoO,QAAQC,MAAM,EAAD,IAAQ,QAGtBL,GAAW,GAAO,yDAClB,kBAZa,mCAcdM,KACE,IAEH,IAQMC,EAAgB,SAACC,GACtBA,EAAoBpO,SAAQ,SAACqO,GAC5B,IAAMC,EAA8BC,SAASC,cAAc,KAC3DF,EAASG,KAAOJ,EAAKxC,SACrByC,EAASI,SAAWL,EAAKzC,SAEzB2C,SAASI,KAAKC,YAAYN,GAE1BA,EAASO,QACTP,EAASQ,aAILC,EAAc,WACnBxB,EAAMyB,OAAM,IA6Bb,OACC,gBAACC,EAAA,EAAM,CAACC,SAAS,KAAKC,KAAM5B,EAAM4B,KAAMC,QAASL,GAChD,gBAACM,EAAA,EAAW,KAAEpO,EAAM+G,QAAQlE,SAAS3C,OACrC,gBAACmO,EAAA,EAAa,KACb,gBAACC,EAAA,EAAiB,KAAEtO,EAAM+G,QAAQlE,SAASmE,aAE3C,gBAACuH,EAAA,EAAG,CAACC,GAAI,CAAEC,MAAO,SACjB,gBAACC,EAAA,EAAK,CAACC,KAAK,QAAQC,cAAY,GAC/B,gBAACC,EAAA,EAAS,KACT,gBAACC,EAAA,EAAQ,KACR,gBAACC,EAAA,EAAS,KACT,gBAACC,EAAA,EAAU,CAACC,QAAQ,KAAKC,WAAW,WAClClP,EAAM+G,QAAQlE,SAASoE,iBAG1B,gBAAC8H,EAAA,EAAS,KACT,gBAACC,EAAA,EAAU,CAACC,QAAQ,KAAKC,WAAW,WAClClP,EAAM+G,QAAQlE,SAASqE,iBAG1B,gBAAC6H,EAAA,EAAS,KACT,gBAACI,EAAA,EAAQ,CACRC,QACC5C,EAAM6C,OAAS,GACf7C,EAAM6C,SAAWzC,EAAcyC,OAEhCC,SApDqB,SAC7BC,EACA7F,GAGCmD,EADGnD,EACc8C,EAEA,UAmDd,gBAACgD,EAAA,EAAS,KACR9C,EACA,gBAACoC,EAAA,EAAQ,KACR,gBAACC,EAAA,EAAS,CAACP,GAAI,CAAEiB,QAAS,GAAKC,QAAS,GACvC,gBAACnB,EAAA,EAAG,CAACoB,QAAQ,OAAOC,UAAU,+BAC7B,gBAACC,EAAA,EAAgB,SAKpBrD,EAAMsD,KAAI,SAAC1C,GAAI,OACd,gBAAC0B,EAAA,EAAQ,KACR,gBAACC,EAAA,EAAS,KAAE3B,EAAKzC,UACjB,gBAACoE,EAAA,EAAS,KAAE3B,EAAKxC,UACjB,gBAACmE,EAAA,EAAS,KACT,gBAACI,EAAA,EAAQ,CACRC,QAASxC,EAAcmD,MACtB,SAACC,GAAE,OAAKA,EAAGpF,WAAawC,EAAKxC,YAE9B0E,SAAU,SAACC,EAAOH,GAAO,OAlET,SAAChC,EAAyB1D,GACpD,GAAIA,EAAO,CACV,IAAMuG,EAAyCrD,EAAcsD,QAC7DD,EAAkBE,KAAK/C,GAEvBP,EAAiBoD,OACX,CACN,IAAMA,EAAyCrD,EAC7CsD,QACAE,QAAO,SAACJ,GAAE,OAAKA,EAAGpF,WAAawC,EAAKxC,YAEtCiC,EAAiBoD,IAwDPI,CAAmBjD,EAAMgC,eAYnC,gBAACkB,EAAA,EAAa,KACb,gBAACC,EAAA,EAAM,CAACC,QAAS1C,GAAc9N,EAAMwH,QAAQC,QAC7C,gBAAC8I,EAAA,EAAM,CAACC,QArHoB,WAC9BtD,EAAcN,KAoH8B5M,EAAMwH,QAAQI,kBACxD,gBAAC2I,EAAA,EAAM,CAACC,QAlHe,WACzBtD,EAAcV,KAiHyBxM,EAAMwH,QAAQK,gBE/IxC4I,eAAQ,SAACC,GAAuB,OAAKA,EAAMC,cAA3CF,EAhBkF,SAChGnE,GAEC,IAAD,MACC,OACW,QAAV,EAAAA,EAAMsE,YAAI,OAAU,QAAV,EAAV,EAAYC,gBAAQ,WAAV,EAAV,EAAsBd,MAAK,SAACe,GAAQ,OACnCxE,EAAMyE,aAAahB,MAAK,SAACiB,GAAW,OAAKA,IAAgBF,WAC3C,QAAd,EAAIxE,EAAMsE,YAAI,aAAV,EAAYK,qBAGX,gCAAG3E,EAAM4E,UAGV,Q,8CCkEOT,eAAQ,SAACC,GAAuB,OAAKA,EAAMC,cAA3CF,EA5EiC,SAACnE,GAChD,MAAgCC,WAAmC,MAAK,mBAAjE4E,EAAQ,KAAEC,EAAW,KACtBlD,EAAOmD,QAAQF,GAMfG,EAAiB,SAAC/B,GACvB6B,EAAY7B,EAAMgC,gBAGbC,EAAkB,WACvBJ,EAAY,OAWb,OACC,gBAAC7C,EAAA,EAAG,CAACqB,UAAU,uBAAuBD,QAAQ,OAAO8B,WAAW,UAC9DnF,EAAMsE,KACN,gCACC,gBAACrC,EAAA,EAAG,CACHqB,UAAU,eACVD,QAAQ,OACR8B,WAAW,SACXjB,QAASc,GAERhF,EAAMsE,KAAKc,SACZ,gBAAC,IAAc,CACd9B,UAAU,OACVnB,MAAM,OACNkD,OAAO,OACPnD,GAAI,CAAEoD,GAAI,MAAOC,GAAI,UAGvB,gBAACC,EAAA,EAAI,CAACX,SAAUA,EAAUjD,KAAMA,EAAMC,QAASqD,GAC9C,gBAACO,EAAA,EAAQ,CAACvB,QAvCM,WACpBwB,OAAOC,SAASzE,KAAO,qBAsCexN,EAAMC,WAAWU,UAIrD,gCACC,gBAAC4N,EAAA,EAAG,CACHqB,UAAU,eACVD,QAAQ,OACR8B,WAAW,SACXjB,QAASc,GAERtR,EAAMC,WAAWS,MAClB,gBAAC,IAAc,CACdkP,UAAU,OACVnB,MAAM,OACNkD,OAAO,OACPnD,GAAI,CAAEoD,GAAI,MAAOC,GAAI,UAGvB,gBAACC,EAAA,EAAI,CAACX,SAAUA,EAAUjD,KAAMA,EAAMC,QAASqD,GAC9C,gBAACO,EAAA,EAAQ,CAACvB,QA/Ca,WAC3BwB,OAAOC,SAASzE,KAAO,gBA+CjBxN,EAAMC,WAAWW,mBAEnB,gBAACmR,EAAA,EAAQ,CAACvB,QA9Ca,WAC3BwB,OAAOC,SAASzE,KAAO,iBA8CjBxN,EAAMC,WAAWY,yBCrCVqR,G,OA5BqD,WACnE,OACC,gBAAC3D,EAAA,EAAG,CACHqB,UAAU,yCACVD,QAAQ,OACR8B,WAAW,SACXU,SAAS,YAERnS,EAAMC,WAAWG,gBAElB,gBAACmO,EAAA,EAAG,CACHqB,UAAU,uBACVD,QAAQ,OACRyC,cAAc,SACdX,WAAW,OACXU,SAAS,YAET,gBAAC,IAAI,CAACvC,UAAU,mBAAmByC,GAAI9T,EAAQ+T,qBAC7CtS,EAAMC,WAAWK,YAEnB,gBAAC,IAAI,CAACsP,UAAU,mBAAmByC,GAAI9T,EAAQgU,+BAC7CvS,EAAMC,WAAWO,kBCERgS,G,OA5ByC,WACvD,OACC,gBAACjE,EAAA,EAAG,CACHqB,UAAU,mCACVD,QAAQ,OACR8B,WAAW,SACXU,SAAS,WACT1D,MAAM,SAELzO,EAAMC,WAAWI,UAElB,gBAACkO,EAAA,EAAG,CACHqB,UAAU,iBACVD,QAAQ,OACRyC,cAAc,SACdX,WAAW,SACXU,SAAS,WACT1D,MAAM,SAEN,gBAAC,IAAI,CAACmB,UAAU,mBAAmByC,GAAI9T,EAAQkU,wBAC7CzS,EAAMC,WAAWJ,gB,kBJtBtB,SAPWqM,KAAc,uCAAdA,EAAc,yCAAdA,EAAc,yBAAdA,EAAc,uBAAdA,EAAc,iBAAdA,EAAc,4BAOzB,CAPWA,MAAc,KAazB,SAJWC,KAAQ,oBAARA,EAAQ,8BAARA,EAAQ,oBAInB,CAJWA,MAAQ,KAUnB,SAJWC,KAAc,wBAAdA,EAAc,8BAAdA,EAAc,gBAIzB,CAJWA,MAAc,K,WK8BbsG,GAAiB,CAC7BC,iBAAkB,SAACC,GAAoB,MACrC,CAAEC,KAAM,qBAAsBC,cAAeF,IAC/CG,mBAAoB,SAACC,GAAsB,MACzC,CAAEH,KAAM,wBAAyBI,gBAAiBD,IACpDE,oBAAqB,SAACC,GAAkC,MACtD,CAAEN,KAAM,wBAAyBO,iBAAkBD,IACrDE,yBAA0B,SAACC,GAAkB,MAC3C,CAAET,KAAM,4BAA6BU,cAAeD,KCrDhD,SAASE,GAAmBxG,GAClC,OAAIA,EAAMyG,QACFzG,EAAMyG,QACHzG,EAAM0G,KACT1G,EAAM0G,KAENC,KAAKC,UAAU5G,GAIjB,SAAS6G,GAAelF,GAC9B,GAAa,IAATA,EACH,MAAO,UAGR,IAGMmF,EAAYC,KAAKC,MAAMD,KAAKE,IAAItF,GAAQoF,KAAKE,IAHzC,OAKV,OAAOC,YAAYvF,EAAOoF,KAAKI,IALrB,KAK4BL,IAAYM,QAAQ,IAAM,IAHlD,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAGUN,GAGtE,SAASO,KACfrC,OAAO9D,KAAK,+BAAgC,UChB7C,IAYeuC,gBAAQ,SAACC,GAAuB,OAAKA,EAAMC,cAA3CF,EAZ4G,SAACnE,GAAW,IAAD,EAGrI,GAAqC,qBAAhB,QAAjB,EAAOA,EAAMsE,YAAI,aAAV,EAAY0D,YAGoB,kBAD7BhI,EAAMsE,KAAK0D,UAAUC,MAAM,KAC9B,GAAGrV,WAAWsV,cACvB,OAAO,gCAAGlI,EAAM4E,UAElB,OAAO,QC8FOT,gBACd,SAACC,GAAuB,OAAKA,EAAM+D,qBAVT,SAACC,GAC3B,OAAOC,aAAmB,eAErBC,IAEJF,KAIajE,EA9FmC,SAAH,GAKxC,IAJN2C,EAAgB,EAAhBA,iBACAyB,EAAsB,EAAtBA,uBACA3B,EAAmB,EAAnBA,oBACAG,EAAwB,EAAxBA,yBAEMyB,EAAkB,WACnB1B,GACHF,EAAoB,MAGjB2B,GACHxB,EAAyB,OAI3B,OACC,gBAAC9E,EAAA,EAAG,CACHqB,UAAU,kCACVD,QAAQ,OACR8B,WAAW,SACXU,SAAS,YAERnS,EAAMC,WAAWE,SAElB,gBAACoO,EAAA,EAAG,CACHqB,UAAU,gBACVD,QAAQ,OACRyC,cAAc,SACdD,SAAS,YAET,gBAAC5D,EAAA,EAAG,CAACqB,UAAU,mBAAmBY,QAAS6D,IACzCrU,EAAMe,SAASK,cAAcC,oBAG/B,gBAAC,IAAI,CACJuO,UAAU,mBACVyC,GAAI9T,EAAQwW,oBAAoB,CAC/BnC,MAAO1G,EAAelI,MAEvBwM,QAASsE,GAER9U,EAAMe,SAASK,cAAcE,gBAG/B,gBAAC,IAAI,CACJsO,UAAU,mBACVyC,GAAI9T,EAAQwW,oBAAoB,CAC/BnC,MAAO1G,EAAejI,eAEvBuM,QAASsE,GAER9U,EAAMe,SAASK,cAAcG,kBAG/B,gBAAC,IAAI,CACJqO,UAAU,mBACVyC,GAAI9T,EAAQyW,qBACZxE,QAASsE,GAER9U,EAAMe,SAASK,cAAcI,cAG/B,gBAAC,IAAI,CACJoO,UAAU,mBACVyC,GAAI9T,EAAQ0W,uBACZzE,QAASsE,GAER9U,EAAMe,SAASK,cAAcK,gBAG/B,gBAAC,GAAoC,KACpC,gBAAC,IAAI,CACJmO,UAAU,mBACVyC,GAAI9T,EAAQ2W,iBACZ1E,QAASsE,GAET9U,EAAMe,SAASK,cAAcO,gBC1EpB8O,I,OAAAA,aAAQ,SAACC,GAAuB,OAAKA,EAAMC,cAA3CF,EAZ0G,SAACnE,GAAW,IAAD,EAGnI,GAAqC,qBAAhB,QAAjB,EAAOA,EAAMsE,YAAI,aAAV,EAAY0D,YAGmB,iBAD5BhI,EAAMsE,KAAK0D,UAAUC,MAAM,KAC9B,GAAGrV,WAAWsV,cACvB,OAAO,gCAAGlI,EAAM4E,UAElB,OAAO,SC2DOiE,GA5D8B,WAC5C,MAAwD5I,YAAwB,GAAM,mBAA/E6I,EAAoB,KAAEC,EAAuB,KAEpD,OACC,0BAAQzF,UAAU,cACjB,gBAACrB,EAAA,EAAG,CACH6D,cAAc,MACdkD,eAAe,gBACf7D,WAAW,SACX9B,QAAQ,OACRC,UAAU,kBAEV,gBAACrB,EAAA,EAAG,CACH6D,cAAc,MACdzC,QAAQ,OACR8B,WAAW,SACX7B,UAAU,6BAEV,gBAACrB,EAAA,EAAG,CAACqB,UAAU,kBAAkBD,QAAQ,OAAO8B,WAAW,UAC1D,gBAAC,IAAI,CAAC7B,UAAU,mBAAmByC,GAAI9T,EAAQgX,kBAC7C,uBAAK3F,UAAU,qBAAqB4F,IAAKC,IAAkBC,IAAI,mBAC/D,uBAAK9F,UAAU,sBAAsB4F,IAAKG,IAAmBD,IAAI,yBAIpE,gBAAC,GAAY,MAEb,gBAAC,EAAuB,CAAC3E,aAAc,CAAC,aACvC,gBAAC,EAAqB,OAGvB,gBAAC,GAAmC,KACnC,gBAAC,EAAe,QAKlB,gBAACxC,EAAA,EAAG,CACH6D,cAAc,MACdzC,QAAQ,OACR8B,WAAW,SACX7B,UAAU,8BAEV,gBAACrB,EAAA,EAAG,CAACqB,UAAU,kBAAkBD,QAAQ,OAAO8B,WAAW,UAC1D,qBAAG7B,UAAU,mBAAmBpC,KAAK,8BACnCxN,EAAMC,WAAWQ,oBAIpB,gBAAC,EAAW,QAIb2U,GACA,gBAAC,EAAc,CAAClH,KAAMkH,EAAsBrH,MAAOsH,M,WClE1CO,GAA4C,WACxD,OACC,8BACC,gBAACC,GAAA,EAAS,KACT,gBAAC7G,EAAA,EAAU,CAACC,QAAQ,UAAU6G,cAAY,GACxC9V,EAAMiI,OAAOC,qB,sBCaNwK,GAAiB,CAC7BqD,SAAU,SAACC,GAAa,MAAM,CAAEnD,KAAM,YAAatK,QAASyN,IAC5DC,cAAe,SAACC,GAAoB,MAClC,CAAErD,KAAM,YAAatK,QAAS,CAAEsK,KAAM,QAASsD,KAAMD,KACvDE,YAAa,iBAAO,CAAEvD,KAAM,kBCadpC,gBACd,SAACC,GAAuB,OAAKA,EAAM2F,SACnCC,GAFc7F,EA9BmC,SAAH,GAAiC,IAA3B2F,EAAW,EAAXA,YAAaC,EAAM,EAANA,OASjE,OARA9J,aAAgB,WACX8J,EAAOhH,OAAS,GACnBkH,YAAW,WACVH,MACE,OAEF,CAACC,EAAQD,IAGX,gBAAC7H,EAAA,EAAG,CACHqB,UAAU,eACVD,QAAQ,OACR2F,eAAe,SACfnD,SAAS,WACTqE,IAAK,GACLC,KAAM,EACNC,MAAO,GAEP,gBAACC,GAAA,EAAK,CAACnI,GAAI,CAAEC,MAAO,OAASmI,QAAS,GAC9B,OAANP,QAAM,IAANA,OAAM,EAANA,EAAQvG,KAAI,SAACkG,EAAOa,GAAK,OACzB,gBAACC,GAAA,EAAK,CAACC,SAAUf,EAAMnD,KAAMmE,IAAKH,GAChCb,EAAMG,cCzBE,YAAC7J,GAAqC,OACpD,gCACC,gBAAC,GAAO,MAER,gBAACiC,EAAA,EAAG,CAACoB,QAAQ,OAAOyC,cAAc,SAAS6E,KAAM,GAC/C3K,EAAM4E,UAGR,gBAAC,GAAY,MAEb,gBAAC,GAAY,Q,8BCdR,SAASgG,GAAiCjF,GAChD,OAAOkF,KAAYC,MAAMnF,G,kECuBbS,GAAiB,CAC7B2E,sBAAuB,SAACtM,GAAqB,MAC3C,CACA8H,KAAM,2BACNtK,QAASwC,K,sDC7BZ,gIAAA5C,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBA8BA,IAwVesI,gBACd,SAACC,GAAuB,OAAKA,EAAM4G,kBAXT,SAAC5C,GAC3B,OAAOC,aAAmB,2BAErB4C,IACAjB,IAEJ5B,KAIajE,EAxV4D,SAACnE,GAAW,IAAD,EAmD5D,EAlDzB,EAAwCC,YAAwB,GAAM,mBAA/DiL,EAAY,KAAEC,EAAe,KACpC,EAA4ClL,YAAwB,GAAM,mBAAnEmL,EAAc,KAAEC,EAAiB,KACxC,EAA4CpL,WAAuB,GAAE,mBAA9DqL,EAAc,KAAEC,EAAiB,KACxC,EAAwBtL,WAAqB,MAAK,mBAA3CxB,EAAI,KAAE+M,EAAO,KACpB,EAAkDvL,WAAkC,MAAK,mBAAlF9D,EAAiB,KACxB,GAD8C,KACN8D,WAAuB,OAAK,mBAA7DwL,EAAY,KAAEC,EAAe,KACpC,EAAgCzL,WAAeD,EAAM2L,kBAAiB,mBAA/DC,EAAQ,KAAEC,EAAW,KAEtBC,EAAa,IAAIC,KACjBC,EAAoBF,EAAWG,OAE/BC,EAAe,wCAAG,6FAEgB,OADjCC,EAAW,IAAIzN,UACZ/L,OAAO,WAAY8L,EAAK2I,MAAM,SAEhB3K,IAAMG,KAAK,gCAAiC,KAAM,CACxEzK,OAAQ,CACPkM,SAAUI,EAAK2I,KACfzI,aAAciN,GAEf5O,KAAMmP,IACJ,KAAD,EANIxP,EAAQ,QAORK,EAAOL,EAASK,MACboP,YACRV,EAAgBhY,EAAMoE,mBAAmBG,SAAS9B,OAAOkC,SAASG,UAClEwH,EAAMqM,mBACNhB,GAAkB,GAClBE,EAAkB,KAEZe,EAAyC,CAC9C3N,aAAciN,EACdW,YAAavP,EAAKA,KAAkB,YACpCqF,KAAMrF,EAAKA,KAAW,KACtBwP,UAAWxP,EAAKA,KAAgB,UAChCyP,WAAYzP,EAAKA,KAAiB,YAGnCgD,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBrO,SAAUI,EAAK2I,KACfuF,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3BL,aAAcA,EACdxN,SAAUe,EAAS/J,WAEpBkJ,WAAYc,EAAenG,eAE5B,2CACD,kBArCoB,mCAuCrB,GAAIqG,EAAM4M,cACT,OACC,gBAAC3K,EAAA,EAAG,CACHqB,UAAU,0DACVD,QAAQ,OACRyC,cAAc,UAEC,QAFO,EAErB9F,EAAM0M,gBAAQ,aAAd,EAAgBrO,UAKpB,IAAMwO,EAAgB,wCAAG,qFACxB,IACK1Q,GACHA,EAAkB2Q,SAGf5B,GACHY,EAAWiB,QAGZ5B,GAAgB,GAChBI,EAAkB,MAClBF,GAAkB,GAClBG,EAAQ,MAERxL,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBrO,SAAU,KACVsO,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3BL,aAAc,UAGf,MAAO5L,GACRV,EAAM2J,cAAczC,GAAmBxG,IAEvC6K,EAAkB,MAClB,2CACD,kBA5BqB,mCA8BhByB,EAAe,wCAAG,iGAkBpB,OAjBGV,EAAyC,CAC9C3N,aAAciN,EACdW,YAAa,GACblK,KAAM,EACNmK,UAAW,IAAIS,KAAKA,KAAKC,OACzBT,WAAY,IAGbzM,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBrO,SAAUI,EAAK2I,KACfuF,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3BL,aAAcA,EACdxN,SAAUe,EAAS/J,WAEpBkJ,WAAYc,EAAenG,cACzB,SAEemC,EAAQqR,mBAAmB,KAAD,EAG+B,OAHrEC,EAAG,OACHC,EAAoB,IAAIC,KAAkBF,EAAIG,KAE9CC,EAAkBH,EAAkBI,mBAAmBL,EAAIM,WAAW,EAAD,OAChEF,EAAgBG,SAAQ,kCACyB,OAA3DlN,QAAQkH,IAAI,cAAD,OAAeyF,EAAIM,UAAS,qBAAoB,2BAgBpC,OAZlBE,EAAaJ,EAAgBK,mBAAmBjC,GAEhDkC,EAA0C,CAC/CC,YAAa,GACbC,gBAAiB,CAAEC,gBAAiBxP,EAAK8H,MACzC2H,WAAW,WAAD,6BAAE,WAAOC,GAAE,wEACdC,EAAsBD,EAAGE,YAAc5P,EAAK4D,KAAQ,IAC1DkJ,EAAkB6C,GAAY,2CAC9B,mDAHU,GAIXE,YAAatC,GAGdhM,EAAMuO,kBAAkB,UAClBX,EAAWY,WAAW/P,EAAMqP,GAChCW,OAAM,SAACC,GAEP,GADAjO,QAAQkH,IAAI+G,GACK,eAAbA,EAAItH,KAGP,MAAMsH,EAFNjO,QAAQkH,IAAI,qBAIX,KAAD,oBAEGuE,IAAkB,KAAD,uCACvB,kBArDoB,mCAuDfyC,EAAe,wCAAG,qHACL7S,EAAQqR,mBAAmB,KAAD,EAG+B,OAHrEC,EAAG,OACHC,EAAoB,IAAIC,KAAkBF,EAAIG,KAE9CC,EAAkBH,EAAkBI,mBAAmBL,EAAIM,WAAW,EAAD,OAChEF,EAAgBG,SAAQ,kCAC2B,OAA7DlN,QAAQC,MAAM,cAAD,OAAe0M,EAAIM,UAAS,qBAAoB,2BAM9D,OAFME,EAAaJ,EAAgBK,mBAAmBjC,GAEtD,UACiCgC,EAAWgB,gBAAgB,KAAD,GACP,OAD9CC,EAAkB,OAClBC,EAAmBD,EAAmBlC,SAAS,EAAD,QAEzBiB,EAAWmB,UAAU,KAAD,GAavB,OAblBC,EAAY,OACZC,EAAeD,EAAaE,KAE5BpB,EAA0C,CAC/CC,YAAa,GACbC,gBAAiB,CAAEC,gBAAiBxP,EAAK8H,MACzC2H,WAAW,WAAD,6BAAE,WAAOC,GAAE,wEACdC,EAAsBD,EAAGE,YAAc5P,EAAK4D,KAAQ,IAC1DkJ,EAAkB6C,GAAY,2CAC9B,mDAHU,GAIXE,YAAatC,GAGdhM,EAAMuO,kBAAkB,UAClBX,EAAWY,WAAW/P,EAAMqP,GAChCW,OAAM,SAACC,GAEP,GADAjO,QAAQkH,IAAI+G,GACK,eAAbA,EAAItH,KAGP,MAAMsH,EAFNjO,QAAQkH,IAAI,qBAIX,KAAD,oBAGGlL,IAAMG,KACX,mCAAmC,uCAC/BkS,GAAqBG,GAAY,IAAEtQ,aAAciN,KACpD,KAAD,GAEDF,EAAgBhY,EAAMoE,mBAAmBG,SAAS9B,OAAOkC,SAASG,UAClE6S,GAAkB,GAClBE,EAAkB,KAClBvL,EAAMqM,mBAAmB,4CACzB,kBAlDoB,mCAqDf8C,EAAU,wCAAG,+EACI,GAAtBhE,GAAgB,IAEZnL,EAAM2L,iBAAiB,CAAD,+BACnBgD,IAAkB,KAAD,wCAEjB3B,IAAkB,KAAD,sCAExB,kBARe,mCAuBVoC,EAAiB,wCAAG,+FACnBD,IAAa,KAAD,sCAClB,kBAFsB,mCAIjBE,EAAiB,wCAAG,+FACnBxC,IAAmB,KAAD,sCACxB,kBAFsB,mCAIvB,OACC,gBAAC5K,EAAA,EAAG,CACHqB,UAAU,0DACVD,QAAQ,OACRyC,cAAc,UAEd,gBAAC7D,EAAA,EAAG,CAACqB,UAAU,+BAA+BD,QAAQ,OAAO8B,WAAW,UACvE,gBAAC,KAAW,CAAC7B,UAAU,SACtB5P,EAAMoE,mBAAmBG,SAAS9B,OAAOvC,OAG3C,gBAACqO,EAAA,EAAG,CAACqB,UAAU,iCAAiCD,QAAQ,OAAO8B,WAAW,UACzE,gBAAClB,EAAA,EAAM,CACNtB,QAAQ,YACR2M,UAAU,QACVhM,UAAU,uBACViM,SAAUrE,GAAgBE,GAEzB1X,EAAMoE,mBAAmBG,SAAS9B,OAAO+B,aAC1C,yBACCqO,KAAK,OACLgJ,SAAUrE,GAAgBE,EAC1BoE,QAAM,EACNxM,SA5CoB,SAACC,GAAsD,IAAD,EACxEwM,EAAuC,QAArB,EAAGxM,EAAMyM,OAAOC,aAAK,aAAlB,EAAqB,GAEhDnE,EAAQiE,GAERzP,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBrO,SAAUoR,EAAarI,QAGxByE,EAAYD,GAAsBgE,qBAsC/BnR,GACA,gCACgB,QADhB,EACEuB,EAAM0M,gBAAQ,aAAd,EAAgBrO,SAEhB+M,EACA,gBAACnJ,EAAA,EAAG,CACHqN,UAAU,OACVhM,UAAU,uBACVpB,GAAI,CAAE2N,WAAY,OAAQC,WAAY,SAErCpc,EAAMoE,mBAAmBG,SAAS9B,OAAOiC,gBAG3C,gCACC,gBAAC6L,EAAA,EAAM,CACNtB,QAAQ,YACR2M,UAAU,QACVhM,UAAU,uBACVY,QAASkL,EACTG,SAAUrE,GAAgBE,GAE1B,gBAAC,KAAW,MAAG,IAAE1X,EAAMwH,QAAQ/E,SAE7B6J,EAAM2L,kBACT,gBAAC1H,EAAA,EAAM,CACNtB,QAAQ,YACR2M,UAAU,QACVhM,UAAU,uBACVY,QAASmL,GAER3b,EAAMwH,QAAQC,YASnB+P,GAAgBE,IACjB,gBAACnJ,EAAA,EAAG,CACHqB,UAAU,iCACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,GAELc,GAAgB,4BAAOA,GACxB,gBAACxJ,EAAA,EAAG,CAACC,GAAI,CAAEmB,QAAS,OAAQ8B,WAAY,UAAYwF,KAAM,GACzD,gBAAC1I,EAAA,EAAG,CAACC,GAAI,CAAEC,MAAO,OAAQ4N,GAAI,IAC7B,gBAACC,GAAA,EAAc,CACd1M,UAAS,iCACR8H,EAAiB,WAAa,cAE/B6E,MACCxE,IACA/X,EAAMoE,mBAAmBG,SAAS9B,OAAOkC,SAASI,OAC/C,QACA,UAEJkK,QAAQ,cACRvF,MAAOkO,GAAkB,KAG3B,gBAACrJ,EAAA,EAAG,CAACC,GAAI,CAAEgO,SAAU,KACpB,gBAACxN,EAAA,EAAU,CAACC,QAAQ,SAAO,UACtB8E,KAAK0I,MAAM7E,GAAe,a,2DCjUvB8E,I,OArBqC,SAACpQ,GACpD,IAAMsD,EAAoBtD,EAAMsD,UAAS,oBAAgBtD,EAAMsD,WAAc,YAE7E,OACC,gCACEtD,EAAMqQ,OAAS,gBAACC,GAAA,EAAU,CAAChN,UAAU,mBAAmBtD,EAAMqQ,OAE/D,gBAACE,GAAA,EAAS,CACTC,UAAWxQ,EAAMwQ,UACjBlN,UAAWA,EACXX,QAAQ,SACR8N,aAAW,EACXpO,KAAK,QACLkN,SAAUvP,EAAMuP,SAChBnS,MAAO4C,EAAM5C,OAAS,GACtB4F,SAAU,SAAC0N,GAAC,OAAK1Q,EAAMgD,SAAS0N,EAAEhB,OAAOtS,aCsC9B+G,gBACd,SAACC,GAAuB,OAAKA,EAAM4G,kBAVT,SAAC5C,GAC3B,OAAOC,aAAmB,eAErB4C,IAEJ7C,KAIajE,EArDgD,SAACnE,GAAW,IAAD,QAqBzE,OACC,gBAACiC,EAAA,EAAG,CACHqB,UAAU,8CACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,eAAeD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,IACrDjX,EAAMoE,mBAAmBG,SAASS,SAASC,YAAY/E,OAGzD,gBAAC,GAAa,CAACwJ,MAAqB,QAAhB,EAAE4C,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0BgE,MAAO3N,SA/B/B,SAAC5F,GAAmB,IAAD,EAC5C4C,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBC,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3BgE,MAAOvT,UA4BR,gBAAC,GAAa,CACboT,WAAS,EACTpT,MAAqB,QAAhB,EAAE4C,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0B9N,YACjCwR,MAAO3c,EAAMoE,mBAAmBG,SAASS,SAASC,YAAYC,sBAC9DoK,SA3B6B,SAAC5F,GAAmB,IAAD,EAClD4C,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBC,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3B9N,YAAazB,cCqCFwT,I,cArDyC,SAAC5Q,GACxD,IA8BMsD,EAAoBtD,EAAMsD,UAAS,qCACRtD,EAAMsD,WACpC,6BAEH,OACC,gCACEtD,EAAMqQ,OAAS,gBAACC,GAAA,EAAU,CAAChN,UAAU,mBAAmBtD,EAAMqQ,OAE/D,yBACC9J,KAAK,SACLjD,UAAWA,EACXiM,SAAUvP,EAAMuP,SAChBnS,MAAuB,IAAhB4C,EAAM5C,MAAc,EAlBN,SAACyT,EAAKxO,GAE7B,IADA,IAAIyO,EAAID,EAAM,GACPC,EAAE/N,OAASV,GAAMyO,EAAI,IAAMA,EAClC,OAAOA,EAe0BC,CAAgB/Q,EAAM5C,MAAO,IAAM,GAClE4T,KAAK,IACLC,UAAW,EACXC,WA7BoB,SAACjO,GACM,WAAWkO,KAAKlO,EAAMyH,MAGlDzH,EAAMmO,kBA0BLpO,SA9CoB,SACtBC,GACW,IAAD,EACJoO,EAA0C,QAArB,EAAGpO,EAAMyM,OAAOtS,aAAK,aAAlB,EAAoBkU,QAAQ,UAAW,IAErE,GAAID,EAAe,CAClB,IAAME,EAAsBC,SAASH,IAEhCI,MAAMF,IAAgBA,GAAe,GACzCvR,EAAMgD,SAASuO,QAGhBvR,EAAMgD,SAAS,YCsFHmB,gBACd,SAACC,GAAuB,OAAKA,EAAM4G,kBAVT,SAAC5C,GAC3B,OAAOC,aAAmB,eAErB4C,IAEJ7C,KAIajE,EAnGoD,SAACnE,GAAW,IAAD,kBAwC7E,OACC,gBAACiC,EAAA,EAAG,CACHqB,UAAU,gDACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,eAAeD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,IACrDjX,EAAMoE,mBAAmBG,SAASS,SAASG,cAAcjF,OAG3D,gBAACqO,EAAA,EAAG,CAACqB,UAAU,wBAAwBD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,GAAIxF,WAAW,UAC9E,gBAAClD,EAAA,EAAG,CAACqB,UAAU,sBAAsBD,QAAQ,QAC3C3P,EAAMoE,mBAAmBG,SAASS,SAASG,cAAcC,iBAG3D,gBAAC,GAAe,CACfwK,UAAU,uBACVlG,MAAqB,QAAhB,EAAE4C,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAS,QAAT,EAAxB,EAA0B5N,eAAO,WAAnB,EAAd,EAAmC2S,MAC1C1O,SA1D4B,SAAC5F,GAAmB,IAAD,MAClD4C,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBC,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3B5N,QAAQ,2BACU,QADV,EACJiB,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0B5N,SAAO,IACpC2S,MAAOtU,aAuDT,gBAAC6E,EAAA,EAAG,CAACqB,UAAU,wBAAwBD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,GAAIxF,WAAW,UAC9E,gBAAClD,EAAA,EAAG,CAACqB,UAAU,sBAAsBD,QAAQ,QAC3C3P,EAAMoE,mBAAmBG,SAASS,SAASG,cAAcE,iBAG3D,gBAAC,GAAe,CACfuK,UAAU,uBACVlG,MAAqB,QAAhB,EAAE4C,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAS,QAAT,EAAxB,EAA0B5N,eAAO,WAAnB,EAAd,EAAmC4S,MAC1C3O,SAzD4B,SAAC5F,GAAmB,IAAD,MAClD4C,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBC,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3B5N,QAAQ,2BACU,QADV,EACJiB,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0B5N,SAAO,IACpC4S,MAAOvU,aAsDT,gBAAC6E,EAAA,EAAG,CAACqB,UAAU,wBAAwBD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,GAAIxF,WAAW,UAC9E,gBAAClD,EAAA,EAAG,CAACqB,UAAU,sBAAsBD,QAAQ,QAC3C3P,EAAMoE,mBAAmBG,SAASS,SAASG,cAAcG,iBAG3D,gBAAC,GAAe,CACfsK,UAAU,uBACVlG,MAAqB,QAAhB,EAAE4C,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAS,QAAT,EAAxB,EAA0B5N,eAAO,WAAnB,EAAd,EAAmCjC,MAC1CkG,SAxD4B,SAAC5F,GAAmB,IAAD,MAClD4C,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBC,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3B5N,QAAQ,2BACU,QADV,EACJiB,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0B5N,SAAO,IACpCjC,MAAOM,iB,0CC0BG+G,gBACd,SAACC,GAAuB,OAAKA,EAAM4G,kBAVT,SAAC5C,GAC3B,OAAOC,aAAmB,eAErB4C,IAEJ7C,KAIajE,EA3DsD,SAACnE,GAAW,IAAD,IAa/E,OACC,gBAACiC,EAAA,EAAG,CACHqB,UAAU,iDACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,eAAeD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,IACrDjX,EAAMoE,mBAAmBG,SAASS,SAASO,WAAWrF,OAGxD,gBAACge,GAAA,EAAU,CAACxU,MAAqB,QAAhB,EAAE4C,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0B7N,SAAUkE,SAvB5B,SAACC,GAAgD,IAAD,EACtE4O,EAA0B5O,EAAMyM,OAAOtS,MAE7C4C,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBC,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3B7N,SAAU+S,SAiBV,gBAACC,GAAA,EAAgB,CAChBxO,UAAU,iBACVlG,MAAOyC,EAAS/J,SAChBic,QAAS,gBAACC,GAAA,EAAK,MACf3B,MAAOxQ,EAAS/J,WAGjB,gBAACgc,GAAA,EAAgB,CAChBxO,UAAU,iBACVlG,MAAOyC,EAAS9J,cAChBgc,QAAS,gBAACC,GAAA,EAAK,MACf3B,MAAOxQ,EAAS9J,gBAGjB,gBAAC+b,GAAA,EAAgB,CAChBxO,UAAU,iBACVlG,MAAOyC,EAAS7J,SAChB+b,QAAS,gBAACC,GAAA,EAAK,MACf3B,MAAOxQ,EAAS7J,gB,oBC6BNmO,gBAAQ,SAACC,GAAuB,OAAKA,EAAM4G,iBAA3C7G,EA1EsD,SAACnE,GAAW,IAAD,wBAC/E,OACC,gBAACiC,EAAA,EAAG,CACHqB,UAAU,6CACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,eAAeD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,IACrDjX,EAAMoE,mBAAmBG,SAASS,SAASQ,WAAWtF,OAGxD,gBAACqO,EAAA,EAAG,CAACqB,UAAU,qBAAqBD,QAAQ,OAAOyC,cAAc,UAChE,gBAAC7D,EAAA,EAAG,CAACqB,UAAU,aACd,wBAAMA,UAAU,mBAEd5P,EAAMoE,mBAAmBG,SAASS,SAASQ,WAAWC,YACpDC,WAAU,KAKd,wBAAMkK,UAAU,mBACA,QADiB,EAC/BtD,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAc,QAAd,EAAxB,EAA0BL,oBAAY,WAAxB,EAAd,EAAwCC,cAI3C,gBAACtK,EAAA,EAAG,CAACqB,UAAU,aACd,wBAAMA,UAAU,mBACd5P,EAAMoE,mBAAmBG,SAASS,SAASQ,WAAWC,YAAYE,KAAI,KAGxE,wBAAMiK,UAAU,oBACA,QAAd,EAAAtD,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAc,QAAd,EAAxB,EAA0BL,oBAAY,WAAxB,EAAd,EAAwCjK,OACxCkF,GAAevH,EAAM0M,SAASC,SAASL,aAAajK,QAIvD,gBAACJ,EAAA,EAAG,CAACqB,UAAU,aACd,wBAAMA,UAAU,mBAEd5P,EAAMoE,mBAAmBG,SAASS,SAASQ,WAAWC,YACpDG,WAAU,KAKd,wBAAMgK,UAAU,mBACA,QADiB,EAC/BtD,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAc,QAAd,EAAxB,EAA0BL,oBAAY,WAAxB,EAAd,EAAwCG,aAI3C,gBAACxK,EAAA,EAAG,CAACqB,UAAU,aACd,wBAAMA,UAAU,mBAEd5P,EAAMoE,mBAAmBG,SAASS,SAASQ,WAAWC,YACpDI,UAAS,KAKb,wBAAM+J,UAAU,oBACA,QAAd,EAAAtD,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAc,QAAd,EAAxB,EAA0BL,oBAAY,WAAxB,EAAd,EAAwCE,YACxCyF,aACC,IAAIhF,KAAKjN,EAAM0M,SAASC,SAASL,aAAaE,WAC9C,gCCvBO0F,GA1CgE,SAAClS,GAC/E,OACC,gBAACiC,EAAA,EAAG,CACHqB,UAAU,4DACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,GAEN,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,+BAA+BD,QAAQ,OAAO8B,WAAW,UACvE,gBAAC,KAAc,CAAC7B,UAAU,SACzB5P,EAAMoE,mBAAmBG,SAASS,SAAS9E,OAG7C,gBAACqO,EAAA,EAAG,CAACqB,UAAU,mCAAmCD,QAAQ,OAAOsH,KAAM,GACtE,gBAAC,GAAW,MAEZ,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,wCAAwCD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,IAC/E,gBAAC1I,EAAA,EAAG,CACHqB,UAAU,oBACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC,GAAa,OAGf,gBAAC1I,EAAA,EAAG,CACHqB,UAAU,oBACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC,GAAc,QAIjB,gBAAC,GAAc,S,yCCYJwH,I,OAzCoF,SAClGnS,GAOA,OACC,gBAAC0B,EAAA,EAAM,CACNC,SAAS,KACTC,KAAM5B,EAAM4B,KACZC,QAAS7B,EAAMyB,MACfyC,QAAS,SAACwM,GAAC,OAAKA,EAAE0B,mBAClB9O,UAAU,wBAEV,gBAACvB,EAAA,EAAa,KACb,gBAACC,EAAA,EAAiB,KACjB,gBAAC,KAAG,CAACqB,QAAQ,OAAOyC,cAAc,UACjC,4BAAOpS,EAAM+G,QAAQO,6BAA6BN,aAElD,4BAAOhH,EAAM+G,QAAQO,6BAA6BC,gBAKrD,gBAAC+I,EAAA,EAAa,KACb,gBAAC,KAAG,CAACX,QAAQ,OAAOsH,KAAM,EAAG3B,eAAe,iBAC3C,gBAAC/E,EAAA,EAAM,CAACX,UAAU,iBAAiBX,QAAQ,YAAYuB,QAzBrC,WACrBlE,EAAMqS,YACNrS,EAAMyB,UAwBD/N,EAAMwH,QAAQO,eAGhB,gBAACwI,EAAA,EAAM,CAACX,UAAU,iBAAiBX,QAAQ,YAAYuB,QAASlE,EAAMyB,OACpE/N,EAAMwH,QAAQQ,qBCgDNyI,I,OAAAA,aACd,SAACC,GAAuB,OAAKA,EAAM4G,kBAVT,SAAC5C,GAC3B,OAAOC,aAAmB,eAErB4C,IAEJ7C,KAIajE,EArF4E,SAC1FnE,GACK,IAAD,EACJ,EAAiDC,YAAwB,GAAM,mBAAxEqS,EAAuB,KAAEC,EAAa,KAsB7C,OACC,gBAACtQ,EAAA,EAAG,CACHqB,UAAU,mDACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,eAAeD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,IACrDjX,EAAMoE,mBAAmBG,SAASuB,SAASC,kBAAkB7F,OAG/D,gBAACge,GAAA,EAAU,CAACxU,OAAqB,QAAd,EAAA4C,EAAM0M,gBAAQ,aAAd,EAAgB1N,aAAc,GAAIgE,SA/BxB,SAACC,GAC/B,IAAMuP,EAAsCvP,EAAMyM,OAAOtS,MAErDoV,IAAwB1S,EAAejG,OAC1C0Y,GAAc,GAEdvS,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjB1N,WAAYwT,OAwBZ,gBAACV,GAAA,EAAgB,CAChBxO,UAAU,uBACVlG,MAAO0C,EAAenG,WACtBoY,QAAS,gBAACC,GAAA,EAAK,MACf3B,MACC3c,EAAMoE,mBAAmBG,SAASuB,SAASC,kBAAkBC,QAC3DC,aAIJ,gBAACmY,GAAA,EAAgB,CAChBxO,UAAU,uBACVlG,MAAO0C,EAAelG,cACtBmY,QAAS,gBAACC,GAAA,EAAK,MACf3B,MACC3c,EAAMoE,mBAAmBG,SAASuB,SAASC,kBAAkBC,QAC3DE,gBAIJ,gBAACkY,GAAA,EAAgB,CAChBxO,UAAU,uBACVlG,MAAO0C,EAAejG,OACtBkY,QAAS,gBAACC,GAAA,EAAK,MACf3B,MACC3c,EAAMoE,mBAAmBG,SAASuB,SAASC,kBAAkBC,QAAQG,UAKxE,gBAAC,GAA6B,CAC7B+H,KAAM0Q,EACN7Q,MAAO,kBAAM8Q,GAAc,IAC3BF,UApDyB,WAC3BrS,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjB1N,WAAYc,EAAejG,kB,gCCnC9B,s1MAuBA,IAoKesK,gBACd,SAACC,GAAuB,OAAKA,EAAM4G,kBAXT,SAAC5C,GAC3B,OAAOC,aAAmB,2BAErB4C,IACAwH,IAEJrK,KAIajE,EApKgE,SAACnE,GAAW,IAAD,IAKrF0S,EAJJ,EAAkCzS,WAA2B,IAAG,mBAAzD0S,EAAS,KAAEC,EAAY,KAC9B,EAAwD3S,WAAuB,IAAG,mBAA3E4S,EAAoB,KAAEC,EAAuB,KACpD,EAA0B7S,WAAwB,IAAG,mBAA9C8S,EAAK,KAAEC,EAAQ,KAItB/S,aAAgB,WACf,IAAIgT,GAAqB,EAgBzB,OAde,wCAAG,8GAEanX,EAAQoX,WAAW,KAAD,EAAzCH,EAAc,OAEhBE,GACHD,EAASD,GACT,gDAED/S,EAAM2J,cAAczC,GAAmB,EAAD,KAAS,yDAEhD,kBAVc,kCAYfiM,GAEO,WACNF,GAAY,KAEX,IAEH,IAAMG,EAAa,wCAAG,WAAOC,GAAmB,4EAC3CA,EAAW,CAAD,yCAEwBvX,EAAQwX,aAAaD,GAAY,KAAD,EAA9DV,EAAqB,OAE3BC,EAAaD,GAAW,gDAExB3S,EAAM2J,cAAczC,GAAmB,EAAD,KAAS,gCAGhD0L,EAAa,IAAI,yDAElB,gBAZkB,sCAcbW,EAA4B,SACjCtQ,GAEA,IAAM7F,EAAgB6F,EAAMyM,OAAOtS,MAEnC0V,EAAwB1V,GACxBoW,aAAad,GAETtV,EACHsV,EAAuBzI,YAAW,WACjCmJ,EAAcnQ,EAAMyM,OAAOtS,SACzB,KAEHwV,EAAa,KAITa,EAA0B,WAC/BX,EAAwB,IACxBF,EAAa,KAuBd,OACC,gBAAC3Q,EAAA,EAAG,CACHqB,UAAU,sDACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,eAAeD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,IACrDjX,EAAMoE,mBAAmBG,SAASuB,SAASM,oBAAoBlG,OAGjE,wBAAM0P,UAAU,oBACd5P,EAAMoE,mBAAmBG,SAASuB,SAASM,oBAAoBC,YAEjE,wBAAMuJ,UAAU,oBACd5P,EAAMoE,mBAAmBG,SAASuB,SAASM,oBAAoBE,YAGjE,gBAAC0Z,GAAA,EAAY,CACZC,eAAa,EACbrQ,UAAU,YACVwK,QAAS6E,GAAa,GACtBvV,OAAqB,QAAd,EAAA4C,EAAM0M,gBAAQ,aAAd,EAAgBzN,qBAAsB,GAC7C2U,WAAYf,EACZgB,YAAa,SAAC1hB,GAAqC,OAClD,gBAACoe,GAAA,EAAS,iBACLpe,EAAM,CACV6Q,SAAUuQ,EACVO,OAAQL,EACRpD,MAAM,2BAGR0D,aAAc,SACbC,EACAC,EACA7P,GAAoC,OAEpC,gBAACnC,EAAA,EAAG,eACHoB,QAAQ,OACRyC,cAAc,MACdX,WAAW,SACXmK,UAAU,MACN0E,GAEJ,gBAACnR,EAAA,EAAQ,CAACC,QAASsB,EAAM8P,WACxBD,EAAOE,cAGVC,eAAgB,SAACH,GAAgB,OAAKA,EAAOE,aAC7CE,sBAAoB,EACpBrR,SAtE8B,SAChCC,EACA7F,GAEA4C,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBzN,mBAAoB7B,MAiEnBkX,UAAQ,IAGT,gBAACZ,GAAA,EAAY,CACZC,eAAa,EACbrQ,UAAU,YACVwK,QAASiF,GAAS,GAClB3V,OAAqB,QAAd,EAAA4C,EAAM0M,gBAAQ,aAAd,EAAgBxN,iBAAkB,GACzC2U,YAAa,SAAC1hB,GAAqC,OAAK,gBAACoe,GAAA,EAAS,iBAAKpe,EAAM,CAAEke,MAAM,oBACrF+D,eAAgB,SAACH,GAAa,OAAKA,EAAOM,UAC1CF,sBAAoB,EACpBrR,SAxE2B,SAC7BC,EACA7F,GAEA4C,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBxN,eAAgB9B,MAmEfkX,UAAQ,Q,sBCjGGnQ,I,OAAAA,aACd,SAACC,GAAuB,OAAKA,EAAM4G,kBAVT,SAAC5C,GAC3B,OAAOC,aAAmB,eAErB4C,IAEJ7C,KAIajE,EA5DkE,SAACnE,GAAW,IAAD,MAY3F,OACC,gBAACiC,EAAA,EAAG,CACHqB,UAAU,uDACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,eAAeD,QAAQ,OAAOsH,KAAM,CAAC,EAAG,IACrDjX,EAAMoE,mBAAmBG,SAASuB,SAASS,eAAerG,OAG5D,wBAAM0P,UAAU,gBACd5P,EAAMoE,mBAAmBG,SAASuB,SAASS,eAAeC,WAG7C,QAFR,EAEN8F,EAAM0M,gBAAQ,OAAoB,QAApB,EAAd,EAAgBzN,0BAAkB,OAAK,QAAL,EAAlC,EAAoCuE,WAAG,WAAzB,EAAd,UAA0C,SAACgR,GAAO,OAClD,gBAACvS,EAAA,EAAG,CACHqB,UAAU,sBACVD,QAAQ,OACR2F,eAAe,gBACf7D,WAAW,SACXwF,KAAM,CAAC,EAAG,GACVD,IAAK8J,EAAQnX,GAAGzK,YAEhB,wBAAM0Q,UAAU,aAAakR,EAAQL,aAErC,gBAACM,GAAA,EAAU,CACVnR,UAAU,OACVgM,UAAU,OACVpL,QAAS,kBAxCgB,SAACwQ,GAC9B,IAAM/B,EAAwB3S,EAAM0M,SAASzN,mBAAmB6E,QAC/D,SAAC6Q,GAAC,OAAKA,EAAEtX,KAAOqX,KAGjB1U,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjBzN,mBAAoB0T,KAiCFiC,CAAsBJ,EAAQnX,MAE7C,gBAACwX,GAAA,EAAK,gBCCG1Q,gBAAQ,SAACC,GAAuB,OAAKA,EAAM4G,iBAA3C7G,EA5CgE,SAACnE,GAAW,IAAD,EACzF,OACC,gBAACiC,EAAA,EAAG,CACHqB,UAAU,4DACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,GAEN,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,+BAA+BD,QAAQ,OAAO8B,WAAW,UACvE,gBAAC,KAAS,CAAC7B,UAAU,SACpB5P,EAAMoE,mBAAmBG,SAASuB,SAAS5F,OAG7C,gBAACqO,EAAA,EAAG,CAACqB,UAAU,mCAAmCD,QAAQ,OAAOsH,KAAM,GACtE,gBAAC,GAAyB,OAEX,QAAd,EAAA3K,EAAM0M,gBAAQ,aAAd,EAAgB1N,cAAec,EAAenG,WAC9C,gCACC,gBAAC,GAAmB,MAEpB,gBAAC,GAAoB,OAGtB,gCACC,gBAACsI,EAAA,EAAG,CACHqB,UAAU,6CACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,KAGX,gBAAC1I,EAAA,EAAG,CACHqB,UAAU,6CACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,W,qHCjDjB,gIAAA9O,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAsBA,IAwJesI,gBACd,SAACC,GAAuB,OAAKA,EAAM4G,kBAXT,SAAC5C,GAC3B,OAAOC,aAAmB,2BAErB2B,IACAiB,IAEJ7C,KAIajE,EAxJ2C,SAAH,GAKhD,IAJN2Q,EAAiB,EAAjBA,kBACApI,EAAQ,EAARA,SACA3B,EAAqB,EAArBA,sBACApB,EAAa,EAAbA,cAEMoL,EAAa9U,UAAsB,GAGzC,EAAgCA,WAAkC,MAAK,mBAAhE+U,EAAQ,KAAEC,EAAW,KAE5B,EAA0ChV,WAAyB,IAAG,mBAA/DiV,EAAa,KAAEC,EAAgB,KAEtC,EAA8BlV,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAE1BJ,aAAgB,WACf,IAAMmV,EAA6B,SAA7BA,EACLC,EACAC,GACW,IAAD,EACJC,EAA0BD,EAAU1R,QAEtCyR,EAAShY,KAAOyX,EACnBK,EAAiBI,IACO,QAAd,EAAAF,EAASG,aAAK,aAAd,EAAgBzS,QAAS,IACnCwS,EAAc1R,KAAKwR,EAAShY,IAC5BgY,EAASG,MAAM/iB,SAAQ,SAACgjB,GAAC,OAAKL,EAA2BK,EAAGF,QAIxDG,EAAS,wCAAG,qFACA,OAAjBrV,GAAW,GAAM,kBAG8BvE,EAAQ6Z,oBACrD,aACA,GACC,KAAD,EAHKC,EAA+B,OAKrCR,EAA2BQ,EAAc,IACzCX,EAAYW,GAAc,gDAE1BjM,EAAczC,GAAmB,EAAD,KAAS,QAG1C7G,GAAW,GAAO,yDAClB,kBAhBc,mCAiBV0U,EAAWc,UACfH,IACAX,EAAWc,SAAU,KAEpB,CAACf,EAAmBpI,EAAU3B,EAAuBpB,IAExD,IAYMmM,EAAkB,SAACC,GAA6B,IAAD,EAGpD,GAAIA,EAAKC,MAF6B,EAEE,CACvC,IAAMC,EAAwBF,EAAK1Y,GAEnC0N,EAAsB,2BAClB2B,GAAQ,IACX5O,SAAUmY,MAIE,QAAV,EAAAF,EAAKP,aAAK,aAAV,EAAYzS,QAAS,GAxBE,SAAC5E,GAC5B,IAAI+X,EAA8BhB,EAActR,QAE5CsS,EAAkBzS,MAAK,SAAC0S,GAAE,OAAKA,IAAOhY,KACzC+X,EAAoBA,EAAkBpS,QAAO,SAAC2R,GAAC,OAAKA,IAAMtX,KAE1D+X,EAAkBrS,KAAK1F,GAGxBgX,EAAiBe,GAgBhBE,CAAoBL,EAAK1Y,KAiC3B,OAAO+C,EACN,gBAAC,KAAG,CAACiD,QAAQ,OAAOsH,KAAM,EAAG3B,eAAe,UAC3C,gBAACzF,EAAA,EAAgB,OAGlB,gBAAC,KAAG,CAACD,UAAU,8BAA8BD,QAAQ,OAAOsH,KAAM,EAAG7E,cAAc,UAClF,gBAAC,KAAG,CACHxC,UAAU,0CACVD,QAAQ,OACRyC,cAAc,MACdkD,eAAe,SACf2B,KAAM,GAEN,wBAAMrH,UAAU,kCAAkCY,QA1C3B,WACzBiR,EAAiB,MA0CbzhB,EAAMoE,mBAAmBG,SAASkC,SAASC,cAI9C,gBAACic,GAAA,EAAQ,CACR/S,UAAU,oBACVgT,oBAAqB,gBAAC,KAAiB,CAAChT,UAAU,yBAClDiT,kBAAmB,gBAAC,KAAc,CAACjT,UAAU,0BAC7CkT,SAAUtB,EACVhB,UAAkB,OAARxH,QAAQ,IAARA,OAAQ,EAARA,EAAU5O,UAAW,CAAC4O,EAAS5O,UAAY,IAEpDkX,GAlDoB,SAAlByB,EAAmBV,GAA6B,IAAD,EAChDzS,EAAoB4R,EAAczR,MAAK,SAACiT,GAAE,OAAKA,IAAOX,EAAK1Y,MAC5D,qBACA,YAMH,OAJI0Y,EAAK1Y,MAAe,OAARqP,QAAQ,IAARA,OAAQ,EAARA,EAAU5O,YACzBwF,EAAS,UAAMA,EAAS,cAIxB,gBAACqT,GAAA,EAAQ,CACRtZ,GAAI0Y,EAAK1Y,GACTqN,IAAKqL,EAAK1Y,GACVc,OAAQ4X,EAAK1Y,GACbgT,MAAO0F,EAAKlM,KACZ3F,QAAS,kBAAM4R,EAAgBC,IAC/BzS,UAAWA,GAEVsT,MAAMC,QAAQd,EAAKP,SAAoB,QAAV,EAAAO,EAAKP,aAAK,aAAV,EAAYzS,QAAS,EAChDgT,EAAKP,MAAMhS,KAAI,SAACsT,GAAO,OAAKL,EAAgBK,MAC5C,MA8BUL,CAAgBzB,QCtHlB+B,GA9BgE,SAAC/W,GAC/E,OACC,gBAACiC,EAAA,EAAG,CACHqB,UAAU,4DACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,GAEN,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,+BAA+BD,QAAQ,OAAO8B,WAAW,UACvE,gBAAC,KAAe,CAAC7B,UAAU,SAC1B5P,EAAMoE,mBAAmBG,SAASkC,SAASvG,OAG7C,wBAAM0P,UAAU,kBACd5P,EAAMoE,mBAAmBG,SAASkC,SAASD,WAG7C,gBAAC+H,EAAA,EAAG,CAACqB,UAAU,mCAAmCD,QAAQ,OAAOsH,KAAM,GACtE,gBAAC,GAAgB,CAACmK,kBAAmB9U,EAAM8U,oBAE3C,gBAAC7S,EAAA,EAAG,CACHqB,UAAU,+CACVD,QAAQ,OACRsH,KAAM,O,cCjCX,gIAAA9O,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBA8BA,IC/BImb,GAAOC,GD2RI9S,gBACd,SAACC,GAAuB,OAAKA,EAAM4G,kBAXT,SAAC5C,GAC3B,OAAOC,aAAmB,2BAErB4C,IACAjB,IAEJ5B,KAIajE,EA5PwE,SAACnE,GAAW,IAAD,MACjG,EAA8BC,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAC1B,EAA0CJ,YAAwB,GAAM,mBAAjEiX,EAAa,KAAEC,EAAgB,KACtC,EAAgDlX,YAAwB,GAAM,mBAAvEmX,EAAgB,KAAEC,EAAmB,KAEtCC,EAAUC,cACVC,EAAiB5M,GACtB6M,cAAcva,QAuEf,SAASwa,IACJF,EAAeG,KAClBL,EAAQzT,KACP5R,EAAQwW,oBAAoB,CAC3BnC,MAAOkR,EAAeG,KACtBC,eAAgBJ,EAAe1Z,SAC/BmJ,cAAeuQ,EAAeK,UAC9Bxa,GAAIma,EAAeM,UAIrBR,EAAQI,SA/EVzX,aAAgB,WACf,IAAIgT,GAAqB,EAErBjT,EAAMxC,QACY,wCAAG,+FACN,OAAjB6C,GAAW,GAAM,kBAITvE,EAAQic,yBAAyB/X,EAAMxC,QAAQ,KAAD,EAD/CoY,EAAiC,OAGjCoC,EAA6BnY,EAAS+V,EAAarP,MACnD0R,EAAoCrC,EAAa7W,QACpD,CACA2S,MAAOF,SAASoE,EAAa7W,QAAQkJ,MAAM,KAAK,IAChD0J,MAAOH,SAASoE,EAAa7W,QAAQkJ,MAAM,KAAK,IAChDnL,MAAO0U,SAASoE,EAAa7W,QAAQkJ,MAAM,KAAK,UAEhDiQ,EAECjF,GACHjT,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjB5O,SAAUkC,EAAMlC,SAChBO,SAAUuX,EAAaxO,KACvBuF,SAAS,2BACS,QADT,EACL3M,EAAM0M,gBAAQ,aAAd,EAAgBC,UAAQ,IAC3B9N,YAAa+W,EAAa/W,YAC1B8R,MAAOiF,EAAajF,MACpB7R,SAAUkZ,EACVjZ,QAASkZ,EACT3L,aAAa,2BACK,QADL,EACTtM,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0BL,cAAY,IACzC3N,aAAciX,EAAajX,aAC3B4N,YAAaqJ,EAAarJ,YAC1BlK,KAAMuT,EAAavT,KACnBoK,WAAYmJ,EAAanJ,WACzBD,UAAWoJ,EAAapJ,cAG1BxN,WAAYc,EAAe8V,EAAa5W,YACxCC,mBAAoB2W,EAAa3W,mBACjCC,eAAgB0W,EAAa1W,kBAE9B,kDAEDc,EAAM2J,cAAczC,GAAmB,EAAD,KAAS,QAGhD7G,GAAW,GAAO,0DAClB,kBA9CoB,kCAgDrB8X,GACAhB,GAAiB,IACPnX,EAAMlC,UAChBkC,EAAM+K,sBAAsB,2BACxB/K,EAAM0M,UAAQ,IACjB5O,SAAUkC,EAAMlC,YAIlB,OAAO,WACNmV,GAAY,EAEZjT,EAAM+K,sBAAsB,SAE3B,IAiBH,IAAM4F,EAAgB3Q,EAAMxC,OACzB9J,EAAMoE,mBAAmBE,cACzBtE,EAAMoE,mBAAmBC,gBAEtBqgB,EAAiB,wCAAG,qKAIC,GAH1Bf,GAAoB,GAAM,SAGrBtY,EAAkB,GAEH,QAFK,EAEnBiB,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0BgE,MAAM,CAAD,qBAC7B,IAAI0H,MAAM,qBAAqB,KAAD,KAGlB,QAHkB,EAGhCrY,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0B9N,YAAY,CAAD,qBACnC,IAAIwZ,MAAM,2BAA2B,KAAD,OAGzB,QAAd,EAAArY,EAAM0M,gBAAQ,aAAd,EAAgB1N,aAA6C,gBAAjB,QAAd,EAAAgB,EAAM0M,gBAAQ,aAAd,EAAgB1N,cAClC,QAAf,EAACgB,EAAM0M,gBAAQ,aAAd,EAAgBzN,sBAAqC,QAAf,EAACe,EAAM0M,gBAAQ,aAAd,EAAgBxN,gBAAc,sBAChE,IAAImZ,MAAM,iEAAiE,KAAD,EA2BhF,OAvBe,QAAf,EAACrY,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAS,QAAT,EAAxB,EAA0B5N,eAAO,WAAnB,EAAd,EAAmC2S,SACrB,QAAf,EAAC1R,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAS,QAAT,EAAxB,EAA0B5N,eAAO,WAAnB,EAAd,EAAmC4S,SACrB,QAAf,EAAC3R,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAS,QAAT,EAAxB,EAA0B5N,eAAO,WAAnB,EAAd,EAAmCjC,QAOnCiC,EAHI0S,MAAoB,QAAf,EAACzR,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAS,QAAT,EAAxB,EAA0B5N,eAAO,WAAnB,EAAd,EAAmC2S,OAGnC,KAFA1R,EAAM0M,SAASC,SAAS5N,QAAQ2S,MAAM9e,WAAa,IAKzD6e,MAAoB,QAAf,EAACzR,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAS,QAAT,EAAxB,EAA0B5N,eAAO,WAAnB,EAAd,EAAmC4S,OAG7C5S,GAAoB,KAFpBA,EAAUA,EAAUiB,EAAM0M,SAASC,SAAS5N,QAAQ4S,MAAM/e,WAAa,IAKnE6e,MAAoB,QAAf,EAACzR,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAS,QAAT,EAAxB,EAA0B5N,eAAO,WAAnB,EAAd,EAAmCjC,OAG7CiC,GAAoB,IAFpBA,GAAoBiB,EAAM0M,SAASC,SAAS5N,QAAQjC,MAAMlK,YAf3DmM,EAAU,WAmBV,UAEKjD,EAAQwc,mBACC,QADiB,EAC/BtY,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAc,QAAd,EAAxB,EAA0BL,oBAAY,WAAxB,EAAd,EAAwC3N,aAC1B,QADsC,EACpDqB,EAAM0M,gBAAQ,aAAd,EAAgBrO,SACF,QADU,EACxB2B,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0BgE,MACZ,QADiB,EAC/B3Q,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0B9N,aACZ,QAAd,EAAAmB,EAAM0M,gBAAQ,aAAd,EAAgB5O,UAAWG,OAAO+B,EAAM0M,SAAS5O,UAAY,KAC/C,QADmD,EACjEkC,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,WAAV,EAAd,EAA0B7N,SAC1BC,EACc,QADP,EACPiB,EAAM0M,gBAAQ,aAAd,EAAgB1N,WACF,QADY,EAC1BgB,EAAM0M,gBAAQ,aAAd,EAAgBzN,mBACF,QADoB,EAClCe,EAAM0M,gBAAQ,aAAd,EAAgBxN,gBACf,KAAD,GAEDwY,IAAS,kDAET1X,EAAM2J,cAAczC,GAAmB,EAAD,KACtCmQ,GAAoB,GAAO,0DAE5B,kBA/DsB,mCAiEjBhI,EAAiB,wCAAG,wFACpBrP,EAAMxC,UAAwB,QAAlB,EAAIwC,EAAM0M,gBAAQ,aAAd,EAAgBrO,UAAQ,yCAErCvC,EAAQ+Q,iBAAiB7M,EAAM0M,SAASrO,UAAU,KAAD,iDAEvD2B,EAAM2J,cAAczC,GAAmB,EAAD,KAAS,OAIjDlH,EAAM+K,sBAAsB,MAE5B2M,IAAS,yDACT,kBAZsB,mCAcjBa,GACHvY,EAAMxC,UAAyB,QAAf,EAACwC,EAAM0M,gBAAQ,OAAU,QAAV,EAAd,EAAgBC,gBAAQ,OAAc,QAAd,EAAxB,EAA0BL,oBAAY,WAAxB,EAAd,EAAwC3N,eAC3DyY,EAED,OAAOhX,EACN,gBAACmD,EAAA,EAAgB,MAEjB,gBAACtB,EAAA,EAAG,CAACqB,UAAU,gCAAgCD,QAAQ,OAAOyC,cAAc,UAC3E,gBAAC7D,EAAA,EAAG,CACHqB,UAAU,4BACVD,QAAQ,OACR8B,WAAW,SACXwF,KAAM,CAAC,EAAG,IAEV,gBAAC,KAAc,CAACrH,UAAU,SAAS,IAAEqN,GAGtC,gBAAC,GAAiB,CACjB/D,cAAe5M,EAAMxC,OACrB+Q,gBAAiB,aACjBlC,iBAAkB,kBAAM8K,GAAiB,IACzCxL,iBAAmB,KAGnBuL,GACA,gCACC,gBAAC,GAAmB,MAEpB,gBAAC,GAAmB,MAEpB,gBAAC,GAAmB,CAACpC,kBAAmB0C,EAAe1Z,WAEvD,gBAACmE,EAAA,EAAG,CACHqB,UAAU,0DACVD,QAAQ,OACR2F,eAAe,YAEf,gBAAC/E,EAAA,EAAM,CACNtB,QAAQ,YACR2M,UAAU,QACVhM,UAAU,uBACVY,QAASmL,GAER3b,EAAMwH,QAAQC,QAGhB,gBAAC8I,EAAA,EAAM,CACNtB,QAAQ,YACR2M,UAAU,QACVhM,UAAS,+BACRiV,EAAuB,kBAAoB,IAE5CrU,QAASkU,EACT7I,SAAUgJ,GAETvY,EAAMxC,OAAS9J,EAAMwH,QAAQG,KAAO3H,EAAMwH,QAAQE,OAElDgc,GAAoB,gBAAC7T,EAAA,EAAgB,CAAClB,KAAM,YE/OrCvK,I,QAd8D,SAACkI,GAC7E,IAAMwX,EAAiB5M,GACtB6M,cAAcva,QAGf,OACC,gBAAC+E,EAAA,EAAG,CAACqB,UAAU,sBAAsBD,QAAQ,OAAOyC,cAAc,UACjE,gBAACyD,GAAA,EAAS,KACT,gBAAC,GAA4BiO,OCLpBgB,I,QAA2D,SAAH,GAM9D,IALNjb,EAAI,EAAJA,KACAoT,EAAK,EAALA,MACArN,EAAS,EAATA,UACAlH,EAAG,EAAHA,IACA8H,EAAO,EAAPA,QAEA,OAAI9H,EAEF,gBAAC,IAAI,CAACkH,UAAU,OAAOyC,GAAI3J,GAC1B,gBAAC6F,EAAA,EAAG,CACHqB,UAAS,uBAAkBA,EAAY,IAAMA,EAAY,IACzDD,QAAQ,OACR8B,WAAW,SACXW,cAAc,UAEbvI,EACD,gBAACmF,EAAA,EAAU,CAACY,UAAU,sBAAsBV,WAAW,WACrD+N,KAOJ,gBAAC1O,EAAA,EAAG,CACHqB,UAAS,4BAAuBA,EAAY,IAAMA,EAAY,IAC9DD,QAAQ,OACR8B,WAAW,SACXW,cAAc,SACd5B,QAASA,GAER3G,EACD,gBAACmF,EAAA,EAAU,CAACY,UAAU,sBAAsBV,WAAW,WACrD+N,MF/CF8H,GAAY,CAAC,SAAU,SAC3B,SAASC,KAAa,OAAOA,GAAWnmB,OAAOomB,OAASpmB,OAAOomB,OAAOC,OAAS,SAAUnD,GAAK,IAAK,IAAI/E,EAAI,EAAGA,EAAImI,UAAU9V,OAAQ2N,IAAK,CAAE,IAAIoI,EAAID,UAAUnI,GAAI,IAAK,IAAIqI,KAAKD,GAAK,IAAKE,eAAeC,KAAKH,EAAGC,KAAOtD,EAAEsD,GAAKD,EAAEC,IAAS,OAAOtD,IAAeyD,MAAM,KAAML,WAI3Q,IGNI,GAAO,GHMP,GAAkB,SAAyBM,GAC7C,IAAIC,EAASD,EAAKC,OAChBzI,EAAQwI,EAAKxI,MACb3Q,EANJ,SAAkC0Q,EAAGoI,GAAK,GAAI,MAAQpI,EAAG,MAAO,GAAI,IAAI2I,EAAGN,EAAGld,EAC9E,SAAuCkd,EAAGrI,GAAK,GAAI,MAAQqI,EAAG,MAAO,GAAI,IAAID,EAAI,GAAI,IAAK,IAAIrD,KAAKsD,EAAK,GAAI,GAAGC,eAAeC,KAAKF,EAAGtD,GAAI,CAAE,GAAI/E,EAAE4I,SAAS7D,GAAI,SAAUqD,EAAErD,GAAKsD,EAAEtD,GAAQ,OAAOqD,EAD/GS,CAA8B7I,EAAGoI,GAAI,GAAIvmB,OAAOinB,sBAAuB,CAAE,IAAI1I,EAAIve,OAAOinB,sBAAsB9I,GAAI,IAAKqI,EAAI,EAAGA,EAAIjI,EAAE/N,OAAQgW,IAAOM,EAAIvI,EAAEiI,GAAID,EAAEQ,SAASD,IAAM,GAAGI,qBAAqBR,KAAKvI,EAAG2I,KAAOxd,EAAEwd,GAAK3I,EAAE2I,IAAS,OAAOxd,EAMpT6d,CAAyBP,EAAMV,IACzC,OAAoB,IAAMxX,cAAc,MAAOyX,GAAS,CACtDvW,MAAO,OACPkD,OAAQ,OACRsU,QAAS,oBACTC,IAAKR,GACJpZ,GAAQ2Q,EAAqB,IAAM1P,cAAc,QAAS,KAAM0P,GAAS,KAAMqG,KAAUA,GAAqB,IAAM/V,cAAc,OAAQ,KAAmB,IAAMA,cAAc,QAAS,KAAM,qMAAsMgW,KAAOA,GAAkB,IAAMhW,cAAc,IAAK,CACzb5D,GAAI,gBACJwc,UAAW,gCACG,IAAM5Y,cAAc,IAAK,CACvC5D,GAAI,UACJ,YAAa,UACbiG,UAAW,QACXuW,UAAW,8BACG,IAAM5Y,cAAc,OAAQ,CAC1CqC,UAAW,QACXwW,EAAG,oOACY,IAAM7Y,cAAc,OAAQ,CAC3CqC,UAAW,QACXwW,EAAG,y4FACa,IAAM7Y,cAAc,IAAK,CACzC5D,GAAI,UACJ,YAAa,UACbiG,UAAW,QACXuW,UAAW,8BACG,IAAM5Y,cAAc,OAAQ,CAC1CqC,UAAW,QACXwW,EAAG,oOACY,IAAM7Y,cAAc,OAAQ,CAC3CqC,UAAW,QACXwW,EAAG,y4FACa,IAAM7Y,cAAc,IAAK,CACzC5D,GAAI,UACJ,YAAa,UACbiG,UAAW,QACXuW,UAAW,8BACG,IAAM5Y,cAAc,OAAQ,CAC1CqC,UAAW,QACXwW,EAAG,yOACY,IAAM7Y,cAAc,OAAQ,CAC3CqC,UAAW,QACXwW,EAAG,irFAGHC,GAA0B,IAAMC,YAAW,SAAUha,EAAO4Z,GAC9D,OAAoB,IAAM3Y,cAAc,GAAiByX,GAAS,CAChEU,OAAQQ,GACP5Z,OGvDD,IHyDW,IGzDC,CAAC,SAAU,UAC3B,SAAS,KAAa,OAAO,GAAWzN,OAAOomB,OAASpmB,OAAOomB,OAAOC,OAAS,SAAUnD,GAAK,IAAK,IAAI/E,EAAI,EAAGA,EAAImI,UAAU9V,OAAQ2N,IAAK,CAAE,IAAIoI,EAAID,UAAUnI,GAAI,IAAK,IAAIqI,KAAKD,GAAK,IAAKE,eAAeC,KAAKH,EAAGC,KAAOtD,EAAEsD,GAAKD,EAAEC,IAAS,OAAOtD,IAAeyD,MAAM,KAAML,WAI3Q,ICNI,GAAO,GDMP,GAAmB,SAA0BM,GAC/C,IAAIC,EAASD,EAAKC,OAChBzI,EAAQwI,EAAKxI,MACb3Q,EANJ,SAAkC0Q,EAAGoI,GAAK,GAAI,MAAQpI,EAAG,MAAO,GAAI,IAAI2I,EAAGN,EAAGld,EAC9E,SAAuCkd,EAAGrI,GAAK,GAAI,MAAQqI,EAAG,MAAO,GAAI,IAAID,EAAI,GAAI,IAAK,IAAIrD,KAAKsD,EAAK,GAAI,GAAGC,eAAeC,KAAKF,EAAGtD,GAAI,CAAE,GAAI/E,EAAE4I,SAAS7D,GAAI,SAAUqD,EAAErD,GAAKsD,EAAEtD,GAAQ,OAAOqD,EAD/G,CAA8BpI,EAAGoI,GAAI,GAAIvmB,OAAOinB,sBAAuB,CAAE,IAAI1I,EAAIve,OAAOinB,sBAAsB9I,GAAI,IAAKqI,EAAI,EAAGA,EAAIjI,EAAE/N,OAAQgW,IAAOM,EAAIvI,EAAEiI,GAAID,EAAEQ,SAASD,IAAM,GAAGI,qBAAqBR,KAAKvI,EAAG2I,KAAOxd,EAAEwd,GAAK3I,EAAE2I,IAAS,OAAOxd,EAMpT,CAAyBsd,EAAM,IACzC,OAAoB,IAAMlY,cAAc,MAAO,GAAS,CACtDkB,MAAO,OACPkD,OAAQ,OACRsU,QAAS,YACTC,IAAKR,GACJpZ,GAAQ2Q,EAAqB,IAAM1P,cAAc,QAAS,KAAM0P,GAAS,KAAM,KAAU,GAAqB,IAAM1P,cAAc,OAAQ,KAAmB,IAAMA,cAAc,QAAS,KAAM,iLAAkL,KAAO,GAAkB,IAAMA,cAAc,IAAK,CACra5D,GAAI,kBACJwc,UAAW,4BACG,IAAM5Y,cAAc,OAAQ,CAC1C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,WACXwW,EAAG,4BACHD,UAAW,iCACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,SACJ,YAAa,SACbiG,UAAW,WACX2W,GAAI,OACJJ,UAAW,wBACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,SACJ,YAAa,SACbiG,UAAW,WACX2W,GAAI,OACJJ,UAAW,4BACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,SACJ,YAAa,SACbiG,UAAW,WACX2W,GAAI,OACJJ,UAAW,6BACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,SACJ,YAAa,SACbiG,UAAW,WACX2W,GAAI,KACJC,GAAI,KACJL,UAAW,6BACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,WACX6W,GAAI,KACJD,GAAI,KACJL,UAAW,6BACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,WACXwW,EAAG,4CACHD,UAAW,iCAGX,GAA0B,IAAMG,YAAW,SAAUha,EAAO4Z,GAC9D,OAAoB,IAAM3Y,cAAc,GAAkB,GAAS,CACjEmY,OAAQQ,GACP5Z,OClED,IDoEW,ICpEC,CAAC,SAAU,UAC3B,SAAS,KAAa,OAAO,GAAWzN,OAAOomB,OAASpmB,OAAOomB,OAAOC,OAAS,SAAUnD,GAAK,IAAK,IAAI/E,EAAI,EAAGA,EAAImI,UAAU9V,OAAQ2N,IAAK,CAAE,IAAIoI,EAAID,UAAUnI,GAAI,IAAK,IAAIqI,KAAKD,GAAK,IAAKE,eAAeC,KAAKH,EAAGC,KAAOtD,EAAEsD,GAAKD,EAAEC,IAAS,OAAOtD,IAAeyD,MAAM,KAAML,WAI3Q,ICNI,GAAO,GDMP,GAAsB,SAA6BM,GACrD,IAAIC,EAASD,EAAKC,OAChBzI,EAAQwI,EAAKxI,MACb3Q,EANJ,SAAkC0Q,EAAGoI,GAAK,GAAI,MAAQpI,EAAG,MAAO,GAAI,IAAI2I,EAAGN,EAAGld,EAC9E,SAAuCkd,EAAGrI,GAAK,GAAI,MAAQqI,EAAG,MAAO,GAAI,IAAID,EAAI,GAAI,IAAK,IAAIrD,KAAKsD,EAAK,GAAI,GAAGC,eAAeC,KAAKF,EAAGtD,GAAI,CAAE,GAAI/E,EAAE4I,SAAS7D,GAAI,SAAUqD,EAAErD,GAAKsD,EAAEtD,GAAQ,OAAOqD,EAD/G,CAA8BpI,EAAGoI,GAAI,GAAIvmB,OAAOinB,sBAAuB,CAAE,IAAI1I,EAAIve,OAAOinB,sBAAsB9I,GAAI,IAAKqI,EAAI,EAAGA,EAAIjI,EAAE/N,OAAQgW,IAAOM,EAAIvI,EAAEiI,GAAID,EAAEQ,SAASD,IAAM,GAAGI,qBAAqBR,KAAKvI,EAAG2I,KAAOxd,EAAEwd,GAAK3I,EAAE2I,IAAS,OAAOxd,EAMpT,CAAyBsd,EAAM,IACzC,OAAoB,IAAMlY,cAAc,MAAO,GAAS,CACtDkB,MAAO,OACPkD,OAAQ,GACRsU,QAAS,gBACTC,IAAKR,GACJpZ,GAAQ2Q,EAAqB,IAAM1P,cAAc,QAAS,KAAM0P,GAAS,KAAM,KAAU,GAAqB,IAAM1P,cAAc,OAAQ,KAAmB,IAAMA,cAAc,QAAS,KAAM,mLAAoL,KAAO,GAAkB,IAAMA,cAAc,IAAK,CACva5D,GAAI,qBACJwc,UAAW,0BACG,IAAM5Y,cAAc,OAAQ,CAC1C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACX4W,GAAI,EACJL,UAAW,wBACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACXwW,EAAG,kDACY,IAAM7Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACXwW,EAAG,8CACHD,UAAW,qBACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACX4W,GAAI,EACJL,UAAW,yBACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACX4W,GAAI,OACJL,UAAW,+BAGX,GAA0B,IAAMG,YAAW,SAAUha,EAAO4Z,GAC9D,OAAoB,IAAM3Y,cAAc,GAAqB,GAAS,CACpEmY,OAAQQ,GACP5Z,OCnDD,IDqDW,ICrDC,CAAC,SAAU,UAC3B,SAAS,KAAa,OAAO,GAAWzN,OAAOomB,OAASpmB,OAAOomB,OAAOC,OAAS,SAAUnD,GAAK,IAAK,IAAI/E,EAAI,EAAGA,EAAImI,UAAU9V,OAAQ2N,IAAK,CAAE,IAAIoI,EAAID,UAAUnI,GAAI,IAAK,IAAIqI,KAAKD,GAAK,IAAKE,eAAeC,KAAKH,EAAGC,KAAOtD,EAAEsD,GAAKD,EAAEC,IAAS,OAAOtD,IAAeyD,MAAM,KAAML,WAI3Q,ICNI,GAAO,GDMP,GAAoB,SAA2BM,GACjD,IAAIC,EAASD,EAAKC,OAChBzI,EAAQwI,EAAKxI,MACb3Q,EANJ,SAAkC0Q,EAAGoI,GAAK,GAAI,MAAQpI,EAAG,MAAO,GAAI,IAAI2I,EAAGN,EAAGld,EAC9E,SAAuCkd,EAAGrI,GAAK,GAAI,MAAQqI,EAAG,MAAO,GAAI,IAAID,EAAI,GAAI,IAAK,IAAIrD,KAAKsD,EAAK,GAAI,GAAGC,eAAeC,KAAKF,EAAGtD,GAAI,CAAE,GAAI/E,EAAE4I,SAAS7D,GAAI,SAAUqD,EAAErD,GAAKsD,EAAEtD,GAAQ,OAAOqD,EAD/G,CAA8BpI,EAAGoI,GAAI,GAAIvmB,OAAOinB,sBAAuB,CAAE,IAAI1I,EAAIve,OAAOinB,sBAAsB9I,GAAI,IAAKqI,EAAI,EAAGA,EAAIjI,EAAE/N,OAAQgW,IAAOM,EAAIvI,EAAEiI,GAAID,EAAEQ,SAASD,IAAM,GAAGI,qBAAqBR,KAAKvI,EAAG2I,KAAOxd,EAAEwd,GAAK3I,EAAE2I,IAAS,OAAOxd,EAMpT,CAAyBsd,EAAM,IACzC,OAAoB,IAAMlY,cAAc,MAAO,GAAS,CACtDkB,MAAO,OACPkD,OAAQ,OACRsU,QAAS,aACTC,IAAKR,GACJpZ,GAAQ2Q,EAAqB,IAAM1P,cAAc,QAAS,KAAM0P,GAAS,KAAM,KAAU,GAAqB,IAAM1P,cAAc,OAAQ,KAAmB,IAAMA,cAAc,QAAS,KAAM,wJAAyJ,KAAO,GAAkB,IAAMA,cAAc,IAAK,CAC5Y5D,GAAI,kBACJwc,UAAW,2BACG,IAAM5Y,cAAc,OAAQ,CAC1C5D,GAAI,gBACJ,YAAa,gBACbiG,UAAW,kBACXwW,EAAG,oGACHD,UAAW,+BAGX,GAA0B,IAAMG,YAAW,SAAUha,EAAO4Z,GAC9D,OAAoB,IAAM3Y,cAAc,GAAmB,GAAS,CAClEmY,OAAQQ,GACP5Z,OC5BD,ID8BW,IC9BC,CAAC,SAAU,UAC3B,SAAS,KAAa,OAAO,GAAWzN,OAAOomB,OAASpmB,OAAOomB,OAAOC,OAAS,SAAUnD,GAAK,IAAK,IAAI/E,EAAI,EAAGA,EAAImI,UAAU9V,OAAQ2N,IAAK,CAAE,IAAIoI,EAAID,UAAUnI,GAAI,IAAK,IAAIqI,KAAKD,GAAK,IAAKE,eAAeC,KAAKH,EAAGC,KAAOtD,EAAEsD,GAAKD,EAAEC,IAAS,OAAOtD,IAAeyD,MAAM,KAAML,WAI3Q,IAAI,GAAuB,SAA8BM,GACvD,IAAIC,EAASD,EAAKC,OAChBzI,EAAQwI,EAAKxI,MACb3Q,EANJ,SAAkC0Q,EAAGoI,GAAK,GAAI,MAAQpI,EAAG,MAAO,GAAI,IAAI2I,EAAGN,EAAGld,EAC9E,SAAuCkd,EAAGrI,GAAK,GAAI,MAAQqI,EAAG,MAAO,GAAI,IAAID,EAAI,GAAI,IAAK,IAAIrD,KAAKsD,EAAK,GAAI,GAAGC,eAAeC,KAAKF,EAAGtD,GAAI,CAAE,GAAI/E,EAAE4I,SAAS7D,GAAI,SAAUqD,EAAErD,GAAKsD,EAAEtD,GAAQ,OAAOqD,EAD/G,CAA8BpI,EAAGoI,GAAI,GAAIvmB,OAAOinB,sBAAuB,CAAE,IAAI1I,EAAIve,OAAOinB,sBAAsB9I,GAAI,IAAKqI,EAAI,EAAGA,EAAIjI,EAAE/N,OAAQgW,IAAOM,EAAIvI,EAAEiI,GAAID,EAAEQ,SAASD,IAAM,GAAGI,qBAAqBR,KAAKvI,EAAG2I,KAAOxd,EAAEwd,GAAK3I,EAAE2I,IAAS,OAAOxd,EAMpT,CAAyBsd,EAAM,IACzC,OAAoB,IAAMlY,cAAc,MAAO,GAAS,CACtDkB,MAAO,OACPkD,OAAQ,OACRsU,QAAS,YACTC,IAAKR,GACJpZ,GAAQ2Q,EAAqB,IAAM1P,cAAc,QAAS,KAAM0P,GAAS,KAAM,KAAU,GAAqB,IAAM1P,cAAc,OAAQ,KAAmB,IAAMA,cAAc,QAAS,KAAM,wLAAyL,KAAO,GAAkB,IAAMA,cAAc,IAAK,CAC5a5D,GAAI,sBACJwc,UAAW,4BACG,IAAM5Y,cAAc,OAAQ,CAC1C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,eACXwW,EAAG,2KACHD,UAAW,4CACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,eACXwW,EAAG,sHACHD,UAAW,gDAGX,GAA0B,IAAMG,YAAW,SAAUha,EAAO4Z,GAC9D,OAAoB,IAAM3Y,cAAc,GAAsB,GAAS,CACrEmY,OAAQQ,GACP5Z,O,IAEU,I,uICgDToa,GAAgBC,aAAO,SAAPA,CAAiB,CACtCzX,WAAY,4BACZkN,WAAY,IACZnO,SAAU,OACV2Y,OAAQ,OACRC,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QAEP,UAAW,CACV4K,UAAW,qCAIEC,GA5FqB,WAEnC,MAA0D7a,YAAwB,GAAM,mBAAjF8a,EAAqB,KAAEC,EAAwB,KAItD/a,aAAgB,WAFS,MAIpBgb,KAAQve,IALgB,kCAKgCse,GAAyB,KACnF,IAOH,OACC,gBAAC,GAAoC,KACnC,gBAACtZ,EAAA,EAAM,CACNE,KAAMmZ,EACNG,WAAW,EACXvZ,SAAU,MAEV,gBAACI,EAAA,EAAa,KACb,uBAAKoZ,MAAO,CAACC,UAAW,SAAUtL,WAAY,OAAQyK,SAAU,OAAQtK,MAAO,YAAW,iBAC1F,uBAAKkL,MAAO,CAAC9X,QAAS,OAAQyC,cAAe,SAAUuV,IAAK,SAC3D,uBAAKF,MAAO,CAAC9X,QAAS,OAAQ8B,WAAY,SAAUmW,UAAW,SAC9D,uBAAKH,MAAO,CAACtL,WAAY,MAAO0L,cAAe,QAC9C,kCAAa,4IAIb,oDACA,sEAA6C,mDAA6B,+JAK1E,2CACA,iFAAwD,mCAAc,kNAKtE,uBAAKrS,IAAKsS,KAAcpS,IAAI,GAAG+R,MAAO,CAAChZ,MAAO,QAASkD,OAAQ,UAC/D,2CAAkB,mCAAa,+GAG/B,uBAAK6D,IAAKuS,KAAgBrS,IAAI,GAAG+R,MAAO,CAAChZ,MAAO,QAASkD,OAAQ,UACjE,kDAAyB,gBAAC,KAAe,MAAE,sCAC3C,8CACA,0LAGM,2BACL,yKAE+C,IAAC,2BAAK,YAC5C,gBAAC,KAAc,MAAE,+BAE3B,uBAAK6D,IAAKwS,KAAetS,IAAI,GAAG+R,MAAO,CAAChZ,MAAO,QAASkD,OAAQ,UAChE,qBAAG8V,MAAO,CAACQ,UAAW,OAAQ7L,WAAY,OAAQG,MAAO,cAAc,2HAIzE,gBAACmK,GAAa,CAAClW,QAtDgB,WACpC+W,KAAQW,IAToB,gCACJ,IAQ4B,CAAEC,KAAM,MAC5Db,GAAyB,KAoDiC,c,sBC5E5D,s1MA0BA,IA2Ne7W,eAAQ,MATI,SAACiE,GAC3B,OAAOC,aAAmB,eAErB2B,IAEJ5B,KAIajE,EA3N0C,SAAH,GAA2B,IAArBwF,EAAa,EAAbA,cAC3D,EAAoD1J,WAAsC,IAAG,mBAAtF6b,EAAkB,KAAEC,EAAqB,KAChD,EAA8B9b,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAG1B,EAA4CJ,WAAuB,GAAE,mBAA9D+b,EAAc,KAAEC,EAAiB,KACxC,EAA4Chc,WAAuB,GAAE,mBAA9Dic,EAAc,KAAEC,EAAiB,KAElCC,EAAiBnc,cAAiB,uBAAC,qFACvB,OAAjBI,GAAW,GAAM,kBAGmCvE,EAAQugB,gBAAgB,KAAD,EAApEC,EAAoC,OAE1CP,EAAsBO,GAAe,gDAErC3S,EAAczC,GAAmB,EAAD,KAAS,QAG1C7G,GAAW,GAAO,yDAChB,CAACsJ,IAEE4S,EAAetc,cAAiB,uBAAC,+FAChCnE,EAAQ0gB,yBAAyB5c,EAAelI,KACpD+kB,MAAK,SAACpqB,GACDof,MAAMpf,IACV4pB,EAAkB5pB,MACjB,KAAD,kBACGyJ,EAAQ0gB,yBAAyB5c,EAAejI,cACpD8kB,MAAK,SAACpqB,GACDof,MAAMpf,IACV8pB,EAAkB9pB,MACjB,KAAD,sCACD,IAOH,OALA4N,aAAgB,WACfmc,IACAG,MACE,CAACH,EAAgBG,IAGnB,gCACC,gBAACta,EAAA,EAAG,CAACqB,UAAU,YACd,gBAACrB,EAAA,EAAG,CACHqB,UAAU,kBACVD,QAAQ,OACRyC,cAAc,SACdkD,eAAe,WACf7D,WAAW,YAEX,gBAAClD,EAAA,EAAG,CAACqB,UAAU,sBACd,gBAACrB,EAAA,EAAG,CACHqB,UAAU,+BACVD,QAAQ,OACRyC,cAAc,UAEd,gBAACpD,EAAA,EAAU,CAACC,QAAQ,KAAK2M,UAAU,MAAM1M,WAAW,UAAUkN,WAAW,OACvEpc,EAAMe,SAASC,UAGjB,gBAACuN,EAAA,EAAG,CAACqB,UAAU,wBAAwBD,QAAQ,OAAO8B,WAAW,UAChE,gBAACzC,EAAA,EAAU,CACVC,QAAQ,YACR2M,UAAU,MACV1M,WAAW,WAEVlP,EAAMe,SAASE,iBAOrB,gBAACsN,EAAA,EAAG,CAACqB,UAAU,mCACd,gBAACiG,GAAA,EAAS,KACT,gBAAC7G,EAAA,EAAU,CACVC,QAAQ,KACR2M,UAAU,MACVhM,UAAU,gCACVV,WAAW,WAEVlP,EAAMe,SAASG,gBAGjB,gBAACqN,EAAA,EAAG,CACHqB,UAAU,0BACVD,QAAQ,OACRyC,cAAc,MACdkD,eAAe,SACf7D,WAAW,UAEV/E,EACA,gBAACmD,EAAA,EAAgB,MAEjB,gCACEuY,EAAmBtY,KAAI,SAACmR,EAAGpK,GAC3B,IAAIhN,EAEJ,GAAIoX,EAAEpX,KACL,GAAIoX,EAAEpX,KAAKmf,WAAW,SAAU,CAC/B,IAAMC,EAAiBhI,EAAEpX,KAAK0K,MAAM,KAEpC1K,EAAOof,EAAeA,EAAe5Z,OAAS,QAE9CxF,EAAOoX,EAAEpX,KAIX,OACC,gBAAC,GAAY,CACZmN,IAAG,uBAAkBH,GACrBjH,UAAU,yBACVqN,MAAOgE,EAAErX,eACTC,KACCoX,EAAEpX,KACD,uBAAK2L,IAAG,oDAA+C3L,GAAQ6L,IAAI,KAEnE,gBAACnH,EAAA,EAAG,CAACoD,OAAO,SAGdjJ,IAAKnK,EAAQwW,oBAAoB,CAChCnC,MAAOqO,EAAErX,eACTD,GAAIsX,EAAEtX,cAWf,gBAAC4E,EAAA,EAAG,CAACqB,UAAU,kCACd,gBAACiG,GAAA,EAAS,KACT,gBAAC7G,EAAA,EAAU,CACVC,QAAQ,KACR2M,UAAU,MACVhM,UAAU,+BACVV,WAAW,WAEVlP,EAAMe,SAASI,eAGjB,gBAACoN,EAAA,EAAG,CACHqB,UAAU,yBACVD,QAAQ,OACRyC,cAAc,MACdkD,eAAe,SACf7D,WAAW,UAEX,gBAAC,GAAY,CACZ7B,UAAU,wBACVqN,MAAOjd,EAAMe,SAASK,cAAcC,mBACpCwI,KAAM,gBAAC,GAAiB,CAAC+F,UAAU,SACnCY,QAAS6D,KAGV,gBAAC,GAAY,CACZzE,UAAU,wBACVqN,MAAOjd,EAAMe,SAASK,cAAcE,eACpCuI,KAAM,gBAAC,GAAa,CAAC+F,UAAU,SAC/BlH,IAAKnK,EAAQwW,oBAAoB,CAChCnC,MAAO1G,EAAelI,IACtB2F,GAAI2e,MAIN,gBAAC,GAAY,CACZ1Y,UAAU,wBACVqN,MAAOjd,EAAMe,SAASK,cAAcG,iBACpCsI,KAAM,gBAAC,GAAgB,CAAC+F,UAAU,SAClClH,IAAKnK,EAAQwW,oBAAoB,CAChCnC,MAAO1G,EAAejI,aACtB0F,GAAI6e,MAIN,gBAAC,GAAY,CACZ5Y,UAAU,wBACVqN,MAAOjd,EAAMe,SAASK,cAAcI,aACpCqI,KAAM,gBAAC,GAAY,CAAC+F,UAAU,SAC9BlH,IAAKnK,EAAQyW,uBAGd,gBAAC,GAAY,CACZpF,UAAU,wBACVqN,MAAOjd,EAAMe,SAASK,cAAcK,eACpCoI,KAAM,gBAAC,GAAc,CAAC+F,UAAU,SAChClH,IAAKnK,EAAQ0W,yBAGd,gBAAC,GAAoC,KACpC,gBAAC,GAAY,CACZrF,UAAU,wBACVqN,MAAOjd,EAAMe,SAASK,cAAcO,SACpCkI,KAAM,gBAAC,KAAe,CAAC+F,UAAU,SACjClH,IAAKnK,EAAQ2W,wBAQnB,gBAAC,GAAiB,U,qBCvLNgU,I,QAnC8C,SAAC5c,GAC7D,OACC,gBAACiC,EAAA,EAAG,CACHqB,UAAWtD,EAAMsD,UAAS,qBAAiBtD,EAAMsD,WAAc,aAC/DD,QAAQ,OACRyC,cAAc,MACdD,SAAS,YAET,gBAAC0D,GAAA,EAAS,KACT,gBAACtH,EAAA,EAAG,CACHqB,UAAU,iBACVD,QAAQ,OACRyC,cAAc,MACdX,WAAW,UAEX,gBAAClD,EAAA,EAAG,CACHqB,UAAU,wBACVD,QAAQ,OACRyC,cAAc,MACdX,WAAW,UAEX,gBAAC,IAAI,CAAC7B,UAAU,gBAAgByC,GAAI9T,EAAQgX,kBAC3C,gBAAC,KAA2B,MAC3BvV,EAAMC,WAAWa,OAGpB,gBAACkO,EAAA,EAAU,CAACY,UAAU,qBAAqBX,QAAQ,WACjD3C,EAAM2Q,Y,uFCQEkM,GA/B0E,SACxF7c,GAOA,OACC,gBAAC0B,EAAA,EAAM,CACNC,SAAS,KACTC,KAAM5B,EAAM4B,KACZC,QAAS7B,EAAMyB,MACfyC,QAAS,SAACwM,GAAC,OAAKA,EAAE0B,oBAElB,gBAACtQ,EAAA,EAAW,KAAEpO,EAAM+G,QAAQM,mBAAmBnH,OAC/C,gBAACmO,EAAA,EAAa,KACb,gBAACC,EAAA,EAAiB,KAChBtO,EAAM+G,QAAQM,mBAAmBL,YACjCsF,EAAM8c,SAAQ,MAIjB,gBAAC9Y,EAAA,EAAa,KACb,gBAACC,EAAA,EAAM,CAACC,QAASlE,EAAMyB,OAAQ/N,EAAMwH,QAAQC,QAC7C,gBAAC8I,EAAA,EAAM,CAACC,QAtBU,WACpBlE,EAAM+c,WACN/c,EAAMyB,UAoB4B/N,EAAMwH,QAAQ7E,WCO5C+jB,I,QAAgBC,aAAO,SAAPA,CAAiB,CACnCzX,WAAY,4BACZkN,WAAY,IACZnO,SAAU,OACVqb,UAAW,OACXC,YAAa,OACb1C,SAAU,WACVC,WAAY,IACZrX,QAAS,UACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,OACZC,OAAQ,iBACR3K,MAAO,QAEP,UAAW,CACP4K,UAAW,sCAIJqC,GAzDmD,SAACld,GAC/D,MAA0CC,WAAuB,WAAU,mBAApEkd,EAAa,KAAEC,EAAgB,KAEtCnd,aAAgB,WACRD,EAAMqd,kBAAkBD,EAAiB,aAC9C,CAACpd,EAAMqd,mBAIV,OACQ,gBAAC3b,EAAA,EAAM,CACHE,KAAM5B,EAAMqd,iBACZnC,WAAW,EACXvZ,SAAU,MAEV,gBAACI,EAAA,EAAa,KACV,sBAAIoZ,MAAO,CAAE9X,QAAS,OAAQ8B,WAAY,WACtC,gBAAC,KAAc,CAACjD,GAAI,CAACqY,SAAU,OAAQ+C,aAAa,UAAU,4BAElE,uBAAKnC,MAAO,CAACR,WAAY,aAAc4C,aAAc,OAAQla,QAAS,OAAQ8B,WAAY,WAClF,qBAAGgW,MAAO,CAAChY,QAAS,qBAAqB,oCAAc,4NAE3D,gBAAC,GAAa,CAACoD,KAAK,SAASrE,GAAI,CAACsb,WAAYL,GAAgBjZ,QAASlE,EAAMyd,cAAa,WAI9F,gBAAC,GAAiB,CACd7Q,cAAe,GACf2B,gBArBE,WAAH,OAAS6O,EAAiB,WAsBzB/Q,iBAAkB,kBAAMrM,EAAMyd,gBAC9B9R,iBAAoB3L,EAAM2L,sB,cC1ClD,gIAAA9P,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAeA,IAgCQue,GAAgBC,aAAO,SAAPA,CAAiB,CACtCzX,WAAY,4BACZkN,WAAY,IACZnO,SAAU,OACV2Y,OAAQ,OACRC,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QAEP,UAAW,CACV4K,UAAW,qCAaA1W,eAAQ,MATI,SAACiE,GAC3B,OAAOC,aAAmB,eAErB2B,IAEJ5B,KAIajE,EA5DmD,SAACnE,GAE/D,IAAM0d,EAAU,wCAAG,+FACTC,UAAUC,UAAUC,UAAU7d,EAAM8d,aAAa,KAAD,EACtD9d,EAAMyJ,SAAS,CAACI,KAAM,mCAAoCtD,KAAM,YAChEvG,EAAMwB,cAAc,2CACvB,kBAJe,mCAMhB,OACI,gBAACE,EAAA,EAAM,CACHE,KAAM5B,EAAM4B,KACZsZ,WAAW,EACXvZ,SAAU,MAEV,gBAACI,EAAA,EAAa,KACV,uBAAKoZ,MAAO,CAACC,UAAW,SAAUtL,WAAY,OAAQyK,SAAU,SAAQ,gBACxE,uBAAKY,MAAO,CAAC9X,QAAS,OAAQyC,cAAe,SAAUuV,IAAK,SACxD,uBAAKF,MAAO,CAAC9X,QAAS,OAAQ8B,WAAY,SAAUmW,UAAW,SAC3D,gBAAC7G,GAAA,EAAU,CAACnF,UAAU,OAAOpN,GAAI,CAACqb,aAAc,OAAQrZ,QAASwZ,GAC7D,gBAAC,KAAe,OAEpB,uBAAKvC,MAAO,CAAC4C,WAAY,SAAUC,UAAW,OAAQnO,WAAY,MAAO0L,cAAe,QACnFvb,EAAM8d,cAGf,gBAAC,GAAa,CAAC5Z,QAASlE,EAAMwB,aAAY,Y,cCxC9D,gIAAA3F,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAgCA,IA0QMoiB,GAAgD,SAACje,GACtD,OACC,gBAACiC,EAAA,EAAG,CAACoB,QAAQ,OAAOyC,cAAc,OACjC,gBAAC7D,EAAA,EAAG,CAACoB,QAAQ,OAAOsH,KAAM,EAAGzI,GAAI,CAAE4N,WAAY,QAAUlN,WAAW,WAClE5C,EAAMqQ,MAAK,KAGb,gBAACpO,EAAA,EAAG,CAACoB,QAAQ,OAAOsH,KAAM,EAAG/H,WAAW,WACtC5C,EAAM5C,SAeI+G,gBACd,SAACC,GAAuB,OAAKA,EAAM+D,qBAVT,SAACC,GAC3B,OAAOC,aAAmB,eAErB2B,IAEJ5B,KAIajE,EAjSqC,SAACnE,GACpD,MAAwBC,YAAwB,GAAM,mBAA/C2B,EAAI,KAAEsc,EAAO,KACpB,EAA0Dje,YAAwB,GAAM,mBAAjFke,EAAqB,KAAEC,EAAwB,KACtD,EAAsCne,WAAuB,IAAG,mBAAzD6d,EAAW,KAAEO,EAAc,KAClC,EAAwCpe,aAAqC,mBAAtEqe,EAAY,KAAEC,EAAe,KACpC,EAA8Bte,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAC1B,EAAgDJ,YAAwB,GAAM,mBAAvEue,EAAgB,KAAEC,EAAmB,KAC5C,EAAgDxe,YAAwB,GAAM,mBAAvEod,EAAgB,KAAEqB,EAAmB,KAC5C,EAAoCze,WAAuB,IAAG,mBAAvDjB,EAAU,KAAE2f,EAAa,KAEhC1e,aAAgB,WACe,aA2B7B,OA3B6B,yBAA9B,uFAE4C,GAF5C,SAEMjB,EAAyB,OAAZsf,QAAY,IAAZA,OAAY,EAAZA,EAActf,WAC1Bsf,EAAa,CAAD,gBACC,OAAjBje,GAAW,GAAM,kBAGsCvE,EAAQ8iB,sBAAsB5e,EAAM6e,OAAOxhB,IAAI,KAAD,EAA9FyhB,EAAuC,OAE7CP,EAAgBO,GAChB9f,EAA+B,OAAlB8f,QAAkB,IAAlBA,OAAkB,EAAlBA,EAAoB9f,WAAW,kDAE5CgB,EAAM2J,cAAczC,GAAmB,EAAD,KAAS,QAGhD7G,GAAW,GAAO,WAGdrB,EAAW,CAAD,gBACyD,OAAvEgB,EAAMyJ,SAAS,CAACI,KAAM,gCAAiCtD,KAAM,UAAU,2BAGxEoY,EAAc3f,GAAY,kDAG1BgB,EAAMyJ,SAAS,CAACI,KAAM,gCAAiCtD,KAAM,UAAU,kEAExE,uBA5BqB,WACQ,wBA6B9BwY,KAEE,IAEH,IAAMC,EAAmB,wCAAG,gHAEwBljB,EAAQmjB,oBACzDjf,EAAM6e,OAAOxhB,IACZ,KAAD,EAFK6hB,EAAmC,QAInCne,EAA8BC,SAASC,cAAc,MAClDC,KAAOge,EAAiB5gB,SACjCyC,EAASI,SAAW+d,EAAiB7gB,SAErC2C,SAASI,KAAKC,YAAYN,GAE1BA,EAASO,QACTP,EAASQ,SAAS,kDAElBvB,EAAM2J,cAAczC,GAAmB,EAAD,KAAS,0DAEhD,kBAjBwB,mCAmBnBiY,EAA0B,wCAAG,qFAClC,IACOrB,EAAc,kBAAWpY,OAAOC,SAASyZ,KAAI,oBAAYpf,EAAM6e,OAAOxhB,GAAE,KAAMgiB,mBAAmB,YAAD,OAAarf,EAAMwG,cAAa,iBAASxG,EAAM6e,OAAOhV,OAC5JwU,EAAeP,GACfM,GAAyB,GACxB,MAAO1P,GACR1O,EAAMyJ,SAAS,CAACI,KAAM,6BAA8BtD,KAAM,UAC1D,2CACD,kBAR+B,mCAU1B+Y,EAAe,wCAAG,wFAClB1d,GAAS0c,EAAY,iBACR,OAAjBje,GAAW,GAAM,kBAGsCvE,EAAQ8iB,sBAC7D5e,EAAM6e,OAAOxhB,IACZ,KAAD,EAFKyhB,EAAuC,OAI7CP,EAAgBO,GAAoB,gDAEpC9e,EAAM2J,cAAczC,GAAmB,EAAD,KAAS,QAGhD7G,GAAW,GAAO,QAGnB6d,GAAStc,GAAM,yDACf,kBAlBoB,mCA8Bf0B,EAAoB1B,EAAO,qBAAuB,gBAExD,OACC,gCACC,gBAACK,EAAA,EAAG,CAACoB,QAAQ,OAAOyC,cAAc,SAASxC,UAAWA,GACrD,gBAACrB,EAAA,EAAG,CACHoB,QAAQ,OACRyC,cAAc,MACdX,WAAW,SACX6D,eAAe,iBAEf,gBAAC/G,EAAA,EAAG,CAACqB,UAAU,sBAAsBV,WAAW,mBAC9C5C,EAAM6e,OAAOhV,KAEbzJ,GACA,gBAACmD,EAAA,EAAgB,CAChBD,UAAU,WACVjB,KAAM,GACNH,GAAI,CAAE2N,WAAY,UAKrB,gBAAC5N,EAAA,EAAG,CAACoB,QAAQ,OAAOyC,cAAc,MAAMX,WAAW,UAClD,gBAAC,EAAuB,CAACV,aAAc,CAAC,aACvC,gBAACgQ,GAAA,EAAU,CACVnR,UAAU,qBACVgM,UAAU,OACVpL,QAAS,kBAAMwa,GAAoB,KAEnC,gBAAC,KAAc,QAIjB,gBAAC,EAAuB,CAACja,aAAc,CAAC,aACvC,gBAAC,IAAI,CACJsB,GAAI9T,EAAQstB,qBAAqB,CAChCzhB,SAAUkC,EAAM8G,iBAAiBzJ,GACjCsa,KAAM3X,EAAMwG,cACZsR,OAAQ9X,EAAM2G,gBACdnJ,OAAQwC,EAAM6e,OAAOlgB,aACrBkZ,UAAW7X,EAAMuI,0BAGlB,gBAACkM,GAAA,EAAU,CAACnR,UAAU,qBAAqBgM,UAAU,QACpD,gBAAClZ,GAAA,EAAI,SAKR,gBAAC,EAAuB,CAACqO,aAAc,CAAC,aACvC,gBAACgQ,GAAA,EAAU,CACVnR,UAAU,qBACVgM,UAAU,OACVpL,QAAS,kBAAMua,GAAoB,KAEnC,gBAACpoB,GAAA,EAAM,QAIT,gBAACoe,GAAA,EAAU,CACVnR,UAAU,qBACVgM,UAAU,OACVpL,QAAS8a,GAET,gBAACQ,GAAA,EAAoB,QAGpB5d,GACD,gBAAC6S,GAAA,EAAU,CACVnR,UAAU,qBACVgM,UAAU,OACVpL,QAASob,GAET,gBAACG,GAAA,EAAY,OAIf,gBAAC,EAAuB,CAAChb,aAAc,CAAC,aAEvB,WAAfzF,EACC,gBAACyV,GAAA,EAAU,CACVnR,UAAU,qBACVgM,UAAU,OACVpL,QAASib,GAET,gBAACO,GAAA,EAAQ,OAGV,uBAAKvE,MAAO,CAAChZ,MAAO,OAAQkD,OAAQ,SAAQ,SAI9CzD,GACA,gBAAC6S,GAAA,EAAU,CACVnR,UAAU,qBACVgM,UAAU,OACVpL,QAASob,GAET,gBAACzK,GAAA,EAAK,SAMV,gBAAC8K,GAAA,EAAQ,CAACC,GAAIhe,EAAMie,eAAa,GAChC,gBAAC5d,EAAA,EAAG,CAACoB,QAAQ,OAAOyC,cAAc,UACjC,gBAAC,GAAc,CACd1I,MAAmB,OAAZkhB,QAAY,IAAZA,OAAY,EAAZA,EAAc3N,MACrBN,MAAO3c,EAAM4B,cAAcO,QAAQS,qBAAqB1C,QAGzD,gBAAC,GAAc,CACdwJ,MAAmB,OAAZkhB,QAAY,IAAZA,OAAY,EAAZA,EAAczf,YACrBwR,MAAO3c,EAAM4B,cAAcO,QAAQS,qBAAqBE,cAGzD,gBAAC,GAAc,CACd4G,OACa,OAAZkhB,QAAY,IAAZA,OAAY,EAAZA,EAAc9R,YACdyF,aAAO,IAAIhF,KAAKqR,EAAa9R,WAAY,yBAE1C6D,MAAO3c,EAAM4B,cAAcO,QAAQS,qBAAqBG,UAGzD,gBAAC,GAAc,CACd2G,OAAmB,OAAZkhB,QAAY,IAAZA,OAAY,EAAZA,EAAcjc,OAAQkF,GAAe+W,EAAajc,MACzDgO,MAAO3c,EAAM4B,cAAcO,QAAQS,qBAAqBI,WAGzD,gBAAC,GAAc,CACd0G,MAAmB,OAAZkhB,QAAY,IAAZA,OAAY,EAAZA,EAAc/R,YACrB8D,MAAO3c,EAAM4B,cAAcO,QAAQS,qBAAqBK,eAK3D,gBAAC,GAAwB,CACxBiL,KAAM4c,EACN1B,SAAU9c,EAAM6e,OAAOhV,KACvBkT,SAtJ0B,WAC7B/c,EAAM+c,SAAS/c,EAAM6e,OAAOxhB,KAsJzBoE,MAAO,kBAAMgd,GAAoB,OAGnC,gBAAC,GAAoB,CACpB7c,KAAMuc,EACN3c,YAxJkC,WAAH,OAAS4c,GAAyB,IAyJjEN,YAAaA,IAEd,gBAAC,GAAoB,CACpBT,iBAAkBA,EAClBI,aA3J6B,WAC/BiB,GAAoB,IA2JlB/S,iBAAkB3L,EAAM6e,OAAOlgB,mBC5QpBmhB,GAV6C,SAAC9f,GAAW,IAAD,EACtE,OACC,gBAACiC,EAAA,EAAG,CAACoB,QAAQ,OAAOyC,cAAc,UACjB,QADyB,EACxC9F,EAAM+f,iBAAS,aAAf,EAAiBvc,KAAI,SAACqb,GAAM,OAC5B,gBAAC,GAAa,CAACA,OAAQA,EAAQnU,IAAKmU,EAAOxhB,GAAI0f,SAAU/c,EAAM+c,gBCU7DiD,GAA0B,SAAChgB,GAChC,IAAQigB,EAAQjgB,EAARigB,IACR,EAAwBhgB,YAAe,GAAM,mBAAtC2B,EAAI,KAAEsc,EAAO,KAEd5a,EAAoB1B,EAAO,sBAAwB,6BAEnDse,EAA+B,aAAbD,EAAIpW,KAAsB,SAAWoW,EAAIpW,KAEjE,OACC,gCACC,gBAACrH,EAAA,EAAQ,CACRN,GAAI,CAAE,QAAS,CAAEie,aAAc,UAC/Bjc,QAAS,kBAAMga,GAAStc,IACxB0B,UAAWA,GAEX,gBAACb,EAAA,EAAS,CAACN,MAAO,IACjB,gBAACsS,GAAA,EAAU,CAAC2L,aAAW,aAAa/d,KAAK,QAAQge,eAAa,GAC5Dze,EACA,gBAAC,KAAiB,CAAC0B,UAAU,SAE7B,gBAAC,KAAc,CAACA,UAAU,WAI7B,gBAACb,EAAA,EAAS,KAAEyd,IAEb,gBAAC1d,EAAA,EAAQ,CAACc,UAAU,+BACnB,gBAACb,EAAA,EAAS,CACT0Y,MAAO,CAAEI,cAAe,EAAG+E,WAAY,GACvCld,QAAS,EACTE,UAAU,oCAEV,gBAACqc,GAAA,EAAQ,CAACC,GAAIhe,EAAMpF,QAAQ,OAAOqjB,eAAa,GAC/C,gBAAC,GAAiB,CAACE,UAAWE,EAAIzK,MAAOuH,SAAU/c,EAAM+c,gBAuDhD5Y,eAAQ,MATI,SAACiE,GAC3B,OAAOC,aAAmB,eAErB2B,IAEJ5B,KAIajE,EA1C+C,SAACnE,GAC9D,IAAIugB,EAAoC,GAmBxC,OAjBIvgB,EAAMwgB,cAcTD,GAZAA,GADAA,EAAevgB,EAAMwgB,YAAY1c,QAAO,SAAC2R,GAAC,MAAgB,aAAXA,EAAE5L,SACrB4W,OAC3BzgB,EAAMwgB,YACJ1c,QAAO,SAAC2R,GAAC,MAAgB,aAAXA,EAAE5L,QAChB6W,MAAK,SAACC,EAAGC,GACT,OAAID,EAAE9W,KAAO+W,EAAE/W,MAAc,EAEzB8W,EAAE9W,KAAO+W,EAAE/W,KAAa,EAErB,OAIkB/F,QAAO,SAAC2R,GAAC,OAAKA,EAAED,MAAMzS,OAAS,MAI3D,gBAAC8d,GAAA,EAAc,KACd,gBAACze,EAAA,EAAK,CAACge,aAAW,qBACjB,gBAACld,EAAA,EAAS,KACRqd,EAAa/c,KAAI,SAACyc,GAAG,OACrB,gBAAC,GAAG,CAACvV,IAAKuV,EAAI5iB,GAAI4iB,IAAKA,EAAKlD,SAAU/c,EAAM+c,oB,sBC5DnC+D,I,QAvB+D,SAAC9gB,GAK9E,OACC,gBAACvK,GAAA,EAAI,CAACiV,IAAK,EACVtN,MAAO4C,EAAM5C,MACb4F,SAPmB,SAACC,EAA6B8d,GAClD/gB,EAAMgD,SAAS+d,IAOdzd,UAAU,+BACV0d,kBAAmB,CAClBxR,QAAQ,IAGRxP,EAAMihB,SACJjhB,EAAMihB,SAASzd,KAAI,SAACwD,EAAKuD,GAAK,OAC/B,gBAAC2W,GAAA,EAAG,CAACxW,IAAKH,EAAO8F,MAAOrJ,EAAI6C,KAAMvG,UAAU,MAAMlG,MAAO4J,EAAI3J,QAE5D,Q,cC7BN,gIAAAxB,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAiBA,IAiGesI,gBACd,SAACC,GAAuB,OAAKA,EAAM+D,qBAXT,SAACC,GAC3B,OAAOC,aAAmB,2BAErBC,IACA0B,IAEJ5B,KAIajE,EAjGuD,SAACnE,GAAW,IAAD,EAChF,EAAgCC,WAAuB,MAAK,mBAArDkhB,EAAQ,KAAEC,EAAW,KAC5B,EAA8BnhB,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAC1B,EAAsCJ,WAAoC,IAAG,mBAAtEohB,EAAW,KAAEC,EAAc,KAE5BC,EAAmBthB,cAAiB,uBAAC,uFACzB,OAAjBI,GAAW,GAAM,kBAGoCvE,EAAQ0lB,cAC3DxhB,EAAM8G,iBAAiBzJ,IACtB,KAAD,EAFKokB,EAAqC,OAI3CH,EAAeG,EAAmBjM,QAEN,QAAxB,EAAAiM,EAAmBjM,aAAK,aAAxB,EAA0BzS,QAAS,GACtCqe,EAAYK,EAAmBjM,MAAM,GAAGnY,IACxC,gDAGDoD,QAAQC,MAAM,EAAD,IAEb0gB,EAAY,MAAM,QAGnB/gB,GAAW,GAAO,yDAChB,CAACL,EAAM8G,mBAEV7G,aAAgB,WACXD,EAAM8G,iBACTya,KAEAD,EAAe,IACfF,EAAY,SAEX,CAACphB,EAAM8G,iBAAkBya,IAE5B,IAAMG,EAAY,wCAAG,WAAOrkB,GAAU,iGAE9BvB,EAAQ6lB,WAAWtkB,GAAI,KAAD,GAEtBukB,EAAuCP,EAAYzd,SAEzCnR,SAAQ,SAACuU,GAAS,IAAD,EACvB,QAAT,EAAAA,EAAIwO,aAAK,OAAT,EAAW/iB,SAAQ,SAACovB,GACnB,IAAMtX,EAAgBsX,EAAGrM,MAAMsM,WAAU,SAACC,GAAC,OAAKA,EAAE1kB,KAAOA,KAErDkN,GAAS,GACZsX,EAAGrM,MAAMwM,OAAOzX,EAAO,SAK1B+W,EAAeM,GAAiB,gDAEhC5hB,EAAM2J,cAAczC,GAAmB,EAAD,KAAS,yDAEhD,gBApBiB,sCA0BlB,OAAOlH,EAAM8G,iBACZ1G,EACC,gBAAC6B,EAAA,EAAG,CAACoB,QAAQ,OAAOsH,KAAM,EAAG3B,eAAe,SAAS7D,WAAW,UAC/D,gBAAC5B,EAAA,EAAgB,OAGlB,gBAACtB,EAAA,EAAG,CAACqB,UAAU,yBAAyBD,QAAQ,OAAOyC,cAAc,SAAS6E,KAAM,GACnF,gBAAC,GAA0B,CAC1BsW,SAAUI,EACVjkB,MAAO+jB,EACPne,SAdoB,SAAC9E,GACxBkjB,EAAYljB,MAgBV,gBAAC,GAAkB,CAClBsiB,YACCW,IAAuB,OAAXE,QAAW,IAAXA,GAAiD,QAAtC,EAAXA,EAAaY,MAAK,SAAClM,GAAI,OAAKA,EAAK1Y,KAAO8jB,YAAS,WAAtC,EAAX,EAAmD3L,OAEhEuH,SAAU2E,KAIV,Q,+DCpCUQ,I,QAtD2C,SAACliB,GAC1D,MAAoCC,WAAuBD,EAAMmiB,cAAgB,IAAG,mBAA7EvO,EAAU,KAAEwO,EAAa,KAwBhC,OACC,gBAAC,KAAG,CAAC/e,QAAQ,OAAO8B,WAAW,SAASwF,KAAM,EAAGrH,UAAU,6BAC1D,gBAACiN,GAAA,EAAS,CACTjN,UAAU,oBACVlG,MAAOwW,EACP5Q,SA3BuB,SACzBC,GAEAmf,EAAcnf,EAAMyM,OAAOtS,QAyBzB8G,QAAS,SAACwM,GAAC,OAAKA,EAAE0B,qBAGnB,gBAACnO,EAAA,EAAM,CACNX,UAAU,oBACVX,QAAQ,YACRuB,QA5BoB,SAACjB,GACvBA,EAAMmP,kBAENpS,EAAMqiB,MAAMzO,GAEZwO,EAAc,KAwBZ7S,UAAWqE,GAA6B,KAAfA,GAExB5T,EAAMsiB,mBAAqB5uB,EAAM4B,cAAcG,KAAKE,WAGtD,gBAACsO,EAAA,EAAM,CACNX,UAAU,uBACVX,QAAQ,YACRuB,QA7BuB,SAACjB,GAC1BA,EAAMmP,kBAENpS,EAAMuiB,WAENH,EAAcpiB,EAAMmiB,cAAgB,MA0BjCzuB,EAAM4B,cAAcG,KAAKG,iB,sBC3D9B,gIAAAiG,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAkCA,IA4besI,gBACd,SAACC,GAAuB,OAAKA,EAAM+D,qBAXT,SAACC,GAC3B,OAAOC,aAAmB,2BAErBC,IACA0B,IAEJ5B,KAIajE,EA5bmD,SAAH,GAUxD,IATNqe,EAAU,EAAVA,WACAC,EAAa,EAAbA,cACA3N,EAAiB,EAAjBA,kBACAzO,EAAgB,EAAhBA,iBACAI,EAAkB,EAAlBA,mBACAG,EAAmB,EAAnBA,oBACA2B,EAAsB,EAAtBA,uBACAxB,EAAwB,EAAxBA,yBACA4C,EAAa,EAAbA,cAGA,EAA0B1J,WAAoC,IAAG,mBAA1DyiB,EAAK,KAAEC,EAAQ,KAEtB,EAA0C1iB,WAAyB,IAAG,mBAA/DiV,EAAa,KAAEC,EAAgB,KAEtC,EAAoDlV,WAAuB,MAAK,mBAAzE2iB,EAAkB,KAAEC,EAAqB,KAEhD,EAA8B5iB,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAE1B,EAA8CJ,YAAwB,GAAM,mBAArE6iB,EAAe,KAAEC,EAAkB,KAE1C,EAAgD9iB,WAAuB,MAAK,mBAArE+iB,EAAgB,KAAEC,EAAmB,KAE5C,EAAkDhjB,WAAuB,MAAK,mBAAvEijB,EAAiB,KAAEC,EAAoB,KAE9C,EAAgDljB,YAAwB,GAAM,mBAAvEue,EAAgB,KAAEC,EAAmB,KAE5C,EAA8Cxe,WAAkC,MAAK,mBAA9EmjB,GAAe,KAAEC,GAAkB,KAE1CpjB,aAAgB,WACf,OAAO,WACN2G,EAAoB,MACpBG,EAAyB,SAExB,CAACH,EAAqBG,IAEzB,IAAM2O,GAAYzV,cAAiB,wCAClC,WAAO6U,GAA0B,4EACf,GAAjBzU,GAAW,GAAM,UAKZkI,EAAuB,CAAD,+BACJzM,EAAQwnB,WAAW/a,GAAwB,KAAD,EAA/DqN,EAAY,iCAEZ6M,IAAkB7iB,EAAelI,KACjC+qB,IAAkB7iB,EAAejI,aAAY,kCAExBmE,EAAQ6Z,oBAAoB8M,GAAe,GAAO,KAAD,GAAtE7M,EAAY,eAGTd,GAAqBc,IAiBlB2N,EAAiB,SACtB/N,EACArX,GAMA,IAJA,IAEI9L,EAFAmxB,EAA6BhO,EAAM5R,QAIhC4f,EAAMzgB,OAAS,GAAG,CAAC,IAAD,EAGxB,IAFA1Q,EAASmxB,EAAMC,OAEJpmB,KAAOc,EACjB,OAAO9L,GACe,QAAZ,EAAAA,EAAOmjB,aAAK,aAAZ,EAAczS,QAAS,GACjC1Q,EAAOmjB,MAAM/iB,SAAQ,SAACixB,GAAK,OAAKF,EAAM3f,KAAK6f,MAI7C,OAAO,MAlC2B,SAA7BtO,EACLC,EACAC,GACW,IAAD,EACJC,EAA0BD,EAAU1R,QAEtCyR,EAAShY,KAAOyX,EACnBK,EAAiBI,IACO,QAAd,EAAAF,EAASG,aAAK,aAAd,EAAgBzS,QAAS,IACnCwS,EAAc1R,KAAKwR,EAAShY,IAC5BgY,EAASG,MAAM/iB,SAAQ,SAACgjB,GAAC,OACxBL,EAA2BK,EAAGF,OA0BjCH,CAA2BQ,EAAc,IACzCiN,EAAsB/N,GACtBlO,EAAoB2c,EAAe3N,EAAaJ,MAAOV,KAGxD6N,EAAqB,QAAb,EAAC/M,SAAY,aAAZ,EAAcJ,OAAO,kDAE9B7L,EAAczC,GAAmB,EAAD,KAChCyb,EAAS,IAAI,QAGdtiB,GAAW,GAAO,0DAClB,mDAlEiC,GAmElC,CAACkI,EAAwBka,EAAe7b,EAAqB+C,IAG9D1J,aAAgB,WACfyV,GAAUZ,GACVrO,EAAmB+b,GACnBnc,EAAiBoc,GAEjBI,EAAsB,QACpB,CAACta,EAAwBuM,EAAmBY,GAAWjP,EAAoB+b,EAAYnc,EAAkBoc,IAE5G,IAAMkB,GAAS,wCAAG,WAAOzlB,EAAkBH,GAAkB,kEAC3C,OAAjBsC,GAAW,GAAM,kBAGVvE,EAAQ8nB,aAAa1lB,EAAUH,GAAY,KAAD,EAEhD2X,KAAY,gDAEZ/L,EAAczC,GAAmB,EAAD,KAAS,QAG1C7G,GAAW,GAAO,yDAClB,gBAZc,wCAcTwjB,GAAU,wCAAG,WAAO3lB,EAAkBH,GAAkB,kEAC5C,OAAjBsC,GAAW,GAAM,kBAGVvE,EAAQ+nB,WAAW3lB,EAAUH,GAAY,KAAD,EAE9C2X,KAAY,gDAEZ/L,EAAczC,GAAmB,EAAD,KAAS,QAG1C7G,GAAW,GAAO,yDAClB,gBAZe,wCAcVyjB,GAAY,wCAAG,WAAO5lB,GAAgB,kEAC1B,OAAjBmC,GAAW,GAAM,kBAGVvE,EAAQgoB,aAAa5lB,GAAU,KAAD,EAEpCwX,KAAY,gDAEZ/L,EAAczC,GAAmB,EAAD,KAAS,QAG1C7G,GAAW,GAAO,yDAClB,gBAZiB,sCA8BZyV,GAAkB,SAACC,GAA6B,IAAD,EACpDnP,EAAoBmP,IAEN,QAAV,EAAAA,EAAKP,aAAK,aAAV,EAAYzS,QAAS,GAfE,SAAC5E,GAC5B,IAAI+X,EAA8BhB,EAActR,QAE5CsS,EAAkBzS,MAAK,SAAC0S,GAAE,OAAKA,IAAOhY,KACzC+X,EAAoBA,EAAkBpS,QAAO,SAAC2R,GAAC,OAAKA,IAAMtX,KAE1D+X,EAAkBrS,KAAK1F,GAGxBgX,EAAiBe,GAOhBE,CAAoBL,EAAK1Y,KA8DrB0mB,GAA+B,WACpCd,EAAoB,OAGfe,GAAgC,WACrCb,EAAqB,OAchB1M,GAAkB,SAAlBA,EAAmBV,GAA6B,IAAD,EAShD1F,EARA/M,EAAoB4R,EAAczR,MAAK,SAACiT,GAAE,OAAKA,IAAOX,EAAK1Y,MAC5D,qBACA,YAuFH,OArFI0Y,EAAK1Y,KAAOulB,IACftf,EAAS,UAAMA,EAAS,cAKzB+M,EACC,gBAAC,KAAG,CAAC/M,UAAU,sBAAsBD,QAAQ,OAAOyC,cAAc,UACjE,gBAAC,KAAG,CACHxC,UAAU,0BACVD,QAAQ,OACR8B,WAAW,SACX6D,eAAe,iBAEf,gBAAC,KAAG,CAAC1F,UAAU,kBAAkBD,QAAQ,OAAO8B,WAAW,UACzD4Q,EAAKlM,MAGP,gBAAC,EAAuB,CAACpF,aAAc,CAAC,aACvC,gBAAC,KAAG,CAACnB,UAAU,oBAAoBD,QAAQ,OAAO8B,WAAW,UAC5D,gBAAC8e,GAAA,EAAO,CAACtT,MAAOjd,EAAM4B,cAAcO,QAAQI,iBAAiBC,QAC5D,gBAACue,GAAA,EAAU,CACVnR,UAAU,mBACVY,QAAS,SAACjB,GAAK,OArGW,SACjCA,EACA9E,GAEA8E,EAAMmP,kBAEN6Q,EAAoB9kB,GACpBglB,EAAqB,MA8FMe,CAA0BjhB,EAAO8S,EAAK1Y,KAC1DgjB,eAAa,GAEb,gBAAC,KAAe,CAAC/c,UAAU,WAI7B,gBAAC2gB,GAAA,EAAO,CAACtT,MAAOjd,EAAM4B,cAAcO,QAAQI,iBAAiBE,QAC5D,gBAAC,IAAI,CACJmN,UAAU,mBACVyC,GAAI9T,EAAQstB,qBAAqB,CAChCzhB,SAAUiY,EAAK1Y,GACfsa,KAAM8K,EACN3K,OAAQ0K,EACR3K,UAAWtP,KAGZ,gBAAC,KAAc,CAACjF,UAAU,WAI5B,gBAAC2gB,GAAA,EAAO,CAACtT,MAAOjd,EAAM4B,cAAcO,QAAQI,iBAAiBG,MAC5D,gBAACqe,GAAA,EAAU,CACVnR,UAAU,mBACVY,QAAS,SAACjB,GAAK,OAnHS,SAC/BA,EACA9E,GAEA8E,EAAMmP,kBAEN6Q,EAAoB,MACpBE,EAAqBhlB,GA4GMgmB,CAAwBlhB,EAAO8S,EAAK1Y,KACxDgjB,eAAa,GAEb,gBAAC,KAAQ,CAAC/c,UAAU,WAItB,gBAAC2gB,GAAA,EAAO,CAACtT,MAAOjd,EAAM4B,cAAcO,QAAQI,iBAAiBI,QAC5D,gBAACoe,GAAA,EAAU,CACVnR,UAAU,mBACVY,QAAS,SAACjB,GAAK,OAnHG,SACzBA,EACA8S,GAEA9S,EAAMmP,kBACNiR,GAAmBtN,GACnB0I,GAAoB,GA6GO2F,CAAkBnhB,EAAO8S,IAC7CsK,eAAa,GAEb,gBAAC,KAAU,CAAC/c,UAAU,cAO3B,gBAACqc,GAAA,EAAQ,CAACC,GAAIoD,IAAqBjN,EAAK1Y,IACvC,gBAAC,GAAgB,CAChBglB,MAAO,SAACjb,GAAI,OA7GkBlJ,EA6Ga6X,EAAK1Y,GA5GpDsmB,GAAUzlB,EA4G8CkJ,QA1GxD6b,EAAoB,MAHa,IAAC/kB,GA8G9BqkB,SAAUwB,MAIZ,gBAACpE,GAAA,EAAQ,CAACC,GAAIsD,IAAsBnN,EAAK1Y,IACxC,gBAAC,GAAgB,CAChBilB,kBAAmB5uB,EAAMwH,QAAQ9E,KACjC+rB,aAAcpM,EAAKlM,KACnBwY,MAAO,SAACjb,GAAI,OAhHmBlJ,EAgHa6X,EAAK1Y,GA/GrDwmB,GAAW3lB,EA+G8CkJ,QA7GzD+b,EAAqB,MAHa,IAACjlB,GAiH/BqkB,SAAUyB,OAOb,gBAACrN,GAAA,EAAQ,CACRtZ,GAAI0Y,EAAK1Y,GACTqN,IAAKqL,EAAK1Y,GACVc,OAAQ4X,EAAK1Y,GACbgT,MAAOA,EACPnM,QAAS,kBAAM4R,GAAgBC,IAC/BzS,UAAWA,GAEVsT,MAAMC,QAAQd,EAAKP,SAAoB,QAAV,EAAAO,EAAKP,aAAK,aAAV,EAAYzS,QAAS,EAChDgT,EAAKP,MAAMhS,KAAI,SAACsT,GAAO,OAAKL,EAAgBK,MAC5C,OAKN,OAAO1W,EACN,gBAAC,KAAG,CAACiD,QAAQ,OAAOsH,KAAM,EAAG3B,eAAe,UAC3C,gBAACzF,EAAA,EAAgB,OAGlB,gBAAC,KAAG,CACHD,UAAU,kCACVD,QAAQ,OACRsH,KAAM,EACN7E,cAAc,UAEd,gBAAC,EAAuB,CAACrB,aAAc,CAAC,aACvC,gBAAC,KAAG,CACHnB,UAAU,yCACVD,QAAQ,OACRyC,cAAc,SACd6E,KAAM,CAAC,EAAG,IAEV,gBAAC,KAAG,CACHrH,UAAU,8CACVD,QAAQ,OACRsH,KAAM,CAAC,EAAG,GACV3B,eAAe,WACf7D,WAAW,UAEX,gBAAC,KAAG,CACH7B,UAAU,yCACVD,QAAQ,OACR8B,WAAW,SACXjB,QApNgC,WACrC6e,GAAmB,KAqNd,gBAAC,KAAe,CAACzf,UAAU,SAC1B5P,EAAM4B,cAAcG,KAAKC,iBAI5B,gBAACiqB,GAAA,EAAQ,CACRC,GAAIkD,EACJxf,UAAU,0CACVuc,eAAa,GAEZ,gBAAC,GAAgB,CAChBwC,MAhM+B,SAACtkB,GAIrC4lB,GAHIpb,GACM,GAAD,OAAIia,GAEqBzkB,GAEnCglB,GAAmB,IA2LdR,SA5KmC,WACxCQ,GAAmB,SAiLlB,gBAAC1M,GAAA,EAAQ,CACR/S,UAAU,wBACVgT,oBAAqB,gBAAC,KAAiB,CAAChT,UAAU,yBAClDiT,kBAAmB,gBAAC,KAAc,CAACjT,UAAU,0BAC7C+gB,aApQsB,SAACphB,EAA6B9E,GACtD0kB,EAAsB1kB,IAoQpBqY,SAAUtB,EACVhB,SAAU0O,EAAqB,CAACA,GAAsB,IAEhD,OAALF,QAAK,IAALA,OAAK,EAALA,EAAOlf,KAAI,SAACuS,GAAI,OAAKU,GAAgBV,OAGvC,gBAAC,GAAwB,CACxB+G,SAAyB,OAAfsG,SAAe,IAAfA,QAAe,EAAfA,GAAiBvZ,KAC3BjI,KAAM4c,EACN/c,MApL6B,WAC/Bgd,GAAoB,GACpB4E,GAAmB,OAmLjBtG,SAhL+B,WACjC,IAAMuH,EAAiBlB,GAAgB/lB,GAEvCymB,GAAaQ,UCxQAC,GAhBqD,SAACvkB,GASpE,OACC,gBAAC2f,GAAA,EAAQ,CAACC,GAAI5f,EAAMwkB,QAASlhB,UAAU,gCAAgCuc,eAAa,GACnF,gBAAC,GAAgB,CAACwC,MAVG,SAACjb,GACvBpH,EAAMqiB,MAAMjb,IAS8Bmb,SANjB,WACzBviB,EAAMuiB,gB,sBCfR,gIAAA1mB,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAyBA,IC1BI,GAAO,GD4KIsI,gBACd,SAACC,GAAuB,OAAKA,EAAM+D,qBAXT,SAACC,GAC3B,OAAOC,aAAmB,2BAErBC,IACA0B,IAEJ5B,KAIajE,EAlJqC,SAAH,GAQ1C,IAPNqe,EAAU,EAAVA,WACAC,EAAa,EAAbA,cACA7b,EAAmB,EAAnBA,oBACA6d,EAAoB,EAApBA,qBACAlc,EAAsB,EAAtBA,uBACAxB,EAAwB,EAAxBA,yBACA4C,EAAa,EAAbA,cAEA,EAAoC1J,WAA6B,MAAK,mBAA/DykB,EAAU,KAAEC,EAAa,KAChC,EAAwB1kB,WAA+B,IAAG,mBAAnD2kB,EAAI,KAAEC,EAAO,KACpB,EAA8B5kB,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAC1B,EAAoDJ,YAAwB,GAAM,mBAA3E6kB,EAAkB,KAAEC,EAAqB,KAE1CC,EAAW/kB,cAAiB,wCACjC,WAAOglB,GAA2B,wEAChB,GAAjB5kB,GAAW,GAAM,UAGZmiB,EAAW,CAAD,+BAC+B1mB,EAAQopB,oBACnD1C,GACC,KAAD,EAFKlG,EAA6B,OAInCuI,EAAQvI,EAAc1Y,MAAM,IAC5B+gB,EAAcrI,EAAc,KAEX,OAAbA,QAAa,IAAbA,OAAa,EAAbA,EAAgB,KAAM2I,GACzBle,EAAyBuV,EAAc,GAAGjf,IAC1C,yDAGFsM,EAAczC,GAAmB,EAAD,KAAS,QAG1C7G,GAAW,GAAO,0DAClB,mDAtBgC,GAuBjC,CAACoiB,EAAeD,EAAYzb,EAA0B4C,IAGvD1J,aAAgB,WACXwkB,GACH1d,EAAyB9I,OAAOwmB,GAAsB7xB,YAGvDoyB,GAAUP,KACR,CAACO,EAAUP,EAAsB1d,IAEpC,IAAMoe,EAAS,wCAAG,WAAOC,GAAe,kEACtB,OAAjB/kB,GAAW,GAAM,kBAGVvE,EAAQ8nB,aAAac,EAAWrnB,GAAI+nB,GAAS,KAAD,EAElDJ,GAAS,GAAO,gDAEhBrb,EAAczC,GAAmB,EAAD,KAAS,QAG1C7G,GAAW,GAAO,yDAClB,gBAZc,sCAiCf,OAAOD,EACN,gBAACmD,EAAA,EAAgB,MAEjB,gBAAC,KAAG,CAACF,QAAQ,OAAOyC,cAAc,SAAS6E,KAAM,EAAGrH,UAAU,2BAC7D,gBAAC,KAAG,CACHD,QAAQ,OACR2F,eAAe,gBACf7D,WAAW,SACXwF,KAAM,EACNrH,UAAU,yBAEV,gBAAC7N,GAAA,EAAI,CACJ2H,MAAOa,OAAOsK,GACdvF,SAhCoB,SAACC,EAA6B8d,GACrDha,EAAyBga,GACzBna,EAAoB,OA+BjBtD,UAAU,gBACV0d,kBAAmB,CAClBxR,QAAQ,IAGRoV,EAAKphB,KAAI,SAACwD,GAAG,OACb,gBAACka,GAAA,EAAG,CACH7Q,MAAOrJ,EAAI1J,eACXF,MAAO4J,EAAI3J,GACXiG,UAAU,MACVoH,IAAK1D,EAAI3J,SAKZ,gBAAC,EAAuB,CAACoH,aAAc,CAAC,aACvC,gBAAC,KAAG,CACHnB,UAAU,+BACVY,QA9CmB,WACvB6gB,GAAsB,IA8ClB1hB,QAAQ,OACRyC,cAAc,MACdyU,SAAS,QACTpV,WAAW,UAEX,gBAAC,KAAe,CAAC7B,UAAU,SAC1B5P,EAAM4B,cAAcG,KAAKC,kBAK7B,gBAAC,EAAuB,CAAC+O,aAAc,CAAC,aACvC,gBAAC,GAAqB,CACrB+f,QAASM,EACTzC,MArDoB,SAAC+C,GACxBD,EAAUC,GAEVL,GAAsB,IAmDnBxC,SA1DmB,WACtBwC,GAAsB,WErBT5gB,gBAAQ,SAACC,GAAuB,OAAKA,EAAMC,cAA3CF,EAtD2C,SAAH,GAMhD,IALNse,EAAa,EAAbA,cACAD,EAAU,EAAVA,WACA6C,EAAQ,EAARA,SACAvQ,EAAiB,EAAjBA,kBACAxQ,EAAI,EAAJA,KAEMkT,EAAiB5M,GAAkD6M,cAAcva,QAEnFooB,GAA6B,EAUjC,OAPEhhB,GACDme,IAAkB7iB,EAAelI,KACjC+qB,IAAkB7iB,EAAejI,eAEjC2tB,GAAoB,GAGhBA,EASJ,gBAACrjB,EAAA,EAAG,CAACqB,UAAU,oBACb+hB,GACA,gBAAC,GAAa,CACb5C,cAAeA,EACfD,WAAYA,EACZiC,qBAAsBjN,EAAevQ,gBAIvC,gBAAChF,EAAA,EAAG,CAACoB,QAAQ,OAAOyC,cAAc,MAAMxC,UAAU,2BAA2BqH,KAAM,GAClF,gBAAC1I,EAAA,EAAG,CAACoB,QAAQ,OAAOC,UAAU,gCAAgCqH,KAAM,GACnE,gBAAC,GAAoB,CACpB6X,WAAYA,EACZC,cAAeA,EACf3N,kBAAmBA,KAIrB,gBAAC7S,EAAA,EAAG,CAACoB,QAAQ,OAAOC,UAAU,kCAAkCqH,KAAM,GACrE,gBAAC,GAAsB,SA1BzB,gBAAC1I,EAAA,EAAG,CAACqB,UAAU,oBACd,gBAACZ,EAAA,EAAU,CAACY,UAAU,sBAAsBX,QAAQ,WAAWjP,EAAM4B,cAAcC,wBD5CnF,GAAY,CAAC,SAAU,SAC3B,SAAS,KAAa,OAAO,GAAWhD,OAAOomB,OAASpmB,OAAOomB,OAAOC,OAAS,SAAUnD,GAAK,IAAK,IAAI/E,EAAI,EAAGA,EAAImI,UAAU9V,OAAQ2N,IAAK,CAAE,IAAIoI,EAAID,UAAUnI,GAAI,IAAK,IAAIqI,KAAKD,GAAK,IAAKE,eAAeC,KAAKH,EAAGC,KAAOtD,EAAEsD,GAAKD,EAAEC,IAAS,OAAOtD,IAAeyD,MAAM,KAAML,WAI3Q,IENI,GAAO,GFMP,GAAwB,SAA+BM,GACzD,IAAIC,EAASD,EAAKC,OAChBzI,EAAQwI,EAAKxI,MACb3Q,EANJ,SAAkC0Q,EAAGoI,GAAK,GAAI,MAAQpI,EAAG,MAAO,GAAI,IAAI2I,EAAGN,EAAGld,EAC9E,SAAuCkd,EAAGrI,GAAK,GAAI,MAAQqI,EAAG,MAAO,GAAI,IAAID,EAAI,GAAI,IAAK,IAAIrD,KAAKsD,EAAK,GAAI,GAAGC,eAAeC,KAAKF,EAAGtD,GAAI,CAAE,GAAI/E,EAAE4I,SAAS7D,GAAI,SAAUqD,EAAErD,GAAKsD,EAAEtD,GAAQ,OAAOqD,EAD/G,CAA8BpI,EAAGoI,GAAI,GAAIvmB,OAAOinB,sBAAuB,CAAE,IAAI1I,EAAIve,OAAOinB,sBAAsB9I,GAAI,IAAKqI,EAAI,EAAGA,EAAIjI,EAAE/N,OAAQgW,IAAOM,EAAIvI,EAAEiI,GAAID,EAAEQ,SAASD,IAAM,GAAGI,qBAAqBR,KAAKvI,EAAG2I,KAAOxd,EAAEwd,GAAK3I,EAAE2I,IAAS,OAAOxd,EAMpT,CAAyBsd,EAAM,IACzC,OAAoB,IAAMlY,cAAc,MAAO,GAAS,CACtDkB,MAAO,OACPkD,OAAQ,OACRsU,QAAS,YACTC,IAAKR,GACJpZ,GAAQ2Q,EAAqB,IAAM1P,cAAc,QAAS,KAAM0P,GAAS,KAAM,KAAU,GAAqB,IAAM1P,cAAc,OAAQ,KAAmB,IAAMA,cAAc,QAAS,KAAM,iLAAkL,KAAO,GAAkB,IAAMA,cAAc,IAAK,CACra5D,GAAI,wBACJwc,UAAW,4BACG,IAAM5Y,cAAc,OAAQ,CAC1C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,WACXwW,EAAG,4BACHD,UAAW,iCACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,SACJ,YAAa,SACbiG,UAAW,WACX2W,GAAI,OACJJ,UAAW,wBACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,SACJ,YAAa,SACbiG,UAAW,WACX2W,GAAI,OACJJ,UAAW,4BACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,SACJ,YAAa,SACbiG,UAAW,WACX2W,GAAI,OACJJ,UAAW,6BACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,SACJ,YAAa,SACbiG,UAAW,WACX2W,GAAI,KACJC,GAAI,KACJL,UAAW,6BACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,WACX6W,GAAI,KACJD,GAAI,KACJL,UAAW,6BACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,WACXwW,EAAG,4CACHD,UAAW,iCAGX,GAA0B,IAAMG,YAAW,SAAUha,EAAO4Z,GAC9D,OAAoB,IAAM3Y,cAAc,GAAuB,GAAS,CACtEmY,OAAQQ,GACP5Z,OElED,IFoEW,IEpEC,CAAC,SAAU,UAC3B,SAAS,KAAa,OAAO,GAAWzN,OAAOomB,OAASpmB,OAAOomB,OAAOC,OAAS,SAAUnD,GAAK,IAAK,IAAI/E,EAAI,EAAGA,EAAImI,UAAU9V,OAAQ2N,IAAK,CAAE,IAAIoI,EAAID,UAAUnI,GAAI,IAAK,IAAIqI,KAAKD,GAAK,IAAKE,eAAeC,KAAKH,EAAGC,KAAOtD,EAAEsD,GAAKD,EAAEC,IAAS,OAAOtD,IAAeyD,MAAM,KAAML,WAI3Q,IAAI,GAA2B,SAAkCM,GAC/D,IAAIC,EAASD,EAAKC,OAChBzI,EAAQwI,EAAKxI,MACb3Q,EANJ,SAAkC0Q,EAAGoI,GAAK,GAAI,MAAQpI,EAAG,MAAO,GAAI,IAAI2I,EAAGN,EAAGld,EAC9E,SAAuCkd,EAAGrI,GAAK,GAAI,MAAQqI,EAAG,MAAO,GAAI,IAAID,EAAI,GAAI,IAAK,IAAIrD,KAAKsD,EAAK,GAAI,GAAGC,eAAeC,KAAKF,EAAGtD,GAAI,CAAE,GAAI/E,EAAE4I,SAAS7D,GAAI,SAAUqD,EAAErD,GAAKsD,EAAEtD,GAAQ,OAAOqD,EAD/G,CAA8BpI,EAAGoI,GAAI,GAAIvmB,OAAOinB,sBAAuB,CAAE,IAAI1I,EAAIve,OAAOinB,sBAAsB9I,GAAI,IAAKqI,EAAI,EAAGA,EAAIjI,EAAE/N,OAAQgW,IAAOM,EAAIvI,EAAEiI,GAAID,EAAEQ,SAASD,IAAM,GAAGI,qBAAqBR,KAAKvI,EAAG2I,KAAOxd,EAAEwd,GAAK3I,EAAE2I,IAAS,OAAOxd,EAMpT,CAAyBsd,EAAM,IACzC,OAAoB,IAAMlY,cAAc,MAAO,GAAS,CACtDkB,MAAO,OACPkD,OAAQ,GACRsU,QAAS,gBACTC,IAAKR,GACJpZ,GAAQ2Q,EAAqB,IAAM1P,cAAc,QAAS,KAAM0P,GAAS,KAAM,KAAU,GAAqB,IAAM1P,cAAc,OAAQ,KAAmB,IAAMA,cAAc,QAAS,KAAM,mLAAoL,KAAO,GAAkB,IAAMA,cAAc,IAAK,CACva5D,GAAI,2BACJwc,UAAW,0BACG,IAAM5Y,cAAc,OAAQ,CAC1C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACX4W,GAAI,EACJL,UAAW,wBACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACXwW,EAAG,kDACY,IAAM7Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACXwW,EAAG,8CACHD,UAAW,qBACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACX4W,GAAI,EACJL,UAAW,yBACI,IAAM5Y,cAAc,OAAQ,CAC3C5D,GAAI,UACJ,YAAa,UACbiG,UAAW,aACX4W,GAAI,OACJL,UAAW,+BAGX,GAA0B,IAAMG,YAAW,SAAUha,EAAO4Z,GAC9D,OAAoB,IAAM3Y,cAAc,GAA0B,GAAS,CACzEmY,OAAQQ,GACP5Z,OAEU,I,sBCrDf,gIAAAnE,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAqBA,IA4GesI,eAAQ,MATI,SAACiE,GAC3B,OAAOC,aAAmB,eAErB2B,IAEJ5B,KAIajE,EA5GoD,SAAH,GAA2B,IAsBtFohB,EACAC,EACAH,EAxBiE1b,EAAa,EAAbA,cAC/D6N,EAAiB5M,GAAkD6M,cAAcva,QAEvF,EAAoC+C,WAA6B,MAAK,mBAA/DykB,EAAU,KAAEC,EAAa,KAE1BK,EAAW/kB,cAAiB,uBAAC,kGAE7BuX,EAAena,GAAG,CAAD,+BACwBvB,EAAQopB,oBACnD1N,EAAena,IACd,KAAD,EAFKif,EAA6B,OAGnCqI,EAAcrI,EAAc,IAAI,uDAGjC3S,EAAczC,GAAmB,EAAD,KAAS,yDAExC,CAACyC,EAAe6N,EAAena,KAUlC,OARA4C,aAAgB,WACf+kB,MACE,CAACA,IAMIxN,EAAelR,OACtB,KAAK1G,EAAelI,IACnB6tB,EAAqB7xB,EAAM0D,eAAeM,IAC1C8tB,EAAqB,gBAAC,GAAa,CAACliB,UAAU,OAAOnB,MAAO,GAAIkD,OAAQ,KACxEggB,GAAW,EACX,MAED,KAAKzlB,EAAejI,aACnB4tB,EAAqB7xB,EAAM0D,eAAeO,aAC1C6tB,EAAqB,gBAAC,GAAgB,CAACliB,UAAU,OAAOnB,MAAO,GAAIkD,OAAQ,KAC3EggB,GAAW,EACX,MAED,QAGC,GAFAE,EAA+B,OAAVb,QAAU,IAAVA,OAAU,EAAVA,EAAYpnB,eAEnB,OAAVonB,QAAU,IAAVA,OAAU,EAAVA,EAAYnnB,KAAM,CACrB,IAAIA,EAEJ,GAAImnB,EAAWnnB,KAAKmf,WAAW,SAAU,CACxC,IAAMC,EAAiB+H,EAAWnnB,KAAK0K,MAAM,KAE7C1K,EAAOof,EAAeA,EAAe5Z,OAAS,QAE9CxF,EAAOmnB,EAAWnnB,KAGnBioB,EACC,uBAAKtc,IAAG,oDAA+C3L,GAAQ6L,IAAI,UAGpEoc,EAAqB,gBAACvjB,EAAA,EAAG,CAACoD,OAAO,SAGlCggB,GAAW,EAGb,OACC,gBAACpjB,EAAA,EAAG,CAACqB,UAAU,gBAAgBD,QAAQ,OAAOyC,cAAc,UAC3D,gBAAC,GAAU,CAAC6K,MAAOjd,EAAM4B,cAAcE,YAEvC,gBAAC+T,GAAA,EAAS,KACT,gBAACtH,EAAA,EAAG,CAACoB,QAAQ,OAAOyC,cAAc,SAASxC,UAAU,2BACpD,gBAACrB,EAAA,EAAG,CACHqB,UAAU,+BACVD,QAAQ,OACRyC,cAAc,MACdX,WAAW,UAEVqgB,EAED,gBAAC9iB,EAAA,EAAU,CACVC,QAAQ,KACR2M,UAAU,MACVhM,UAAU,2BACVV,WAAW,WAEV2iB,IAIH,gBAAC,GAAgB,CAChB9C,cAAejL,EAAelR,MAC9Bkc,WAAYhL,EAAena,GAC3BgoB,SAAUA,EACVvQ,kBAAmB0C,EAAeI,uB,UCnBzB/gB,I,QA5EkD,SAACmJ,GACjE,OACC,gBAACiC,EAAA,EAAG,CAACqB,UAAU,eAAeD,QAAQ,OAAOyC,cAAc,UAC1D,gBAAC,GAAU,CAAC6K,MAAOjd,EAAM0D,eAAejE,WAExC,gBAACoW,GAAA,EAAS,KACT,gBAACtH,EAAA,EAAG,CAACoB,QAAQ,OAAOyC,cAAc,SAASxC,UAAU,0BACpD,gBAACZ,EAAA,EAAU,CACVC,QAAQ,KACRC,WAAW,UACXU,UAAU,gCAET5P,EAAMmD,aAAajD,OAGrB,gBAACqO,EAAA,EAAG,CAACqB,UAAU,6BACd,gBAACZ,EAAA,EAAU,CACVC,QAAQ,KACRC,WAAW,UACXU,UAAU,wCAET5P,EAAMmD,aAAaC,oBAGrB,gBAAC+pB,GAAA,EAAc,KACd,gBAACze,EAAA,EAAK,CAACD,MAAM,OAAOmB,UAAU,iBAC7B,gBAACJ,EAAA,EAAS,KACR/P,KAASsyB,cAAcC,MAAMliB,KAAI,SAACmiB,GAAI,OACtC,gBAACnjB,EAAA,EAAQ,KACR,gBAACC,EAAA,EAAS,CAACN,MAAM,SACfwjB,EAAKC,MAAQ,yCAEf,gBAACnjB,EAAA,EAAS,CAACN,MAAM,SACfwjB,EAAKE,oBAEP,gBAACpjB,EAAA,EAAS,oBAOf,gBAACC,EAAA,EAAU,CACVC,QAAQ,KACRC,WAAW,UACXU,UAAU,wCAET5P,EAAMmD,aAAaE,sBAGrB,gBAAC8pB,GAAA,EAAc,KACd,gBAACze,EAAA,EAAK,CAACD,MAAM,OAAOmB,UAAU,iBAC7B,gBAACJ,EAAA,EAAS,KACR/P,KAAS2yB,gBAAgBJ,MAAMliB,KAAI,SAACmiB,GAAI,OACxC,gBAACnjB,EAAA,EAAQ,KACR,gBAACC,EAAA,EAAS,CAACN,MAAM,SACfwjB,EAAKC,MAAQ,yCAEf,gBAACnjB,EAAA,EAAS,CAACN,MAAM,SACfwjB,EAAKI,aAAe,yCAEtB,gBAACtjB,EAAA,EAAS,CAACN,MAAM,SACfwjB,EAAKE,oBAAsB,sD,sBC/ExC,gIAAAhqB,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBASA,IA2DemqB,GA3D2D,SAAH,GAEhE,IADNC,EAAK,EAALA,MAEA,EAA0BhmB,WAA0CgmB,GAAM,mBAAnE7oB,EAAK,KAAE8oB,EAAQ,KAEtBjmB,aAAgB,WACfimB,EAASD,KACP,CAACA,IAEH,IAAME,EAAa,wCAAG,WAAO5nB,GAAgB,mGAEYzC,EAAQsqB,gBAAgB7nB,GAAU,KAAD,EAAnF2gB,EAAyC,QAEzCne,EAA8BC,SAASC,cAAc,MAClDC,KAAOge,EAAiB9iB,IACjC2E,EAASI,SAAW+d,EAAiBmH,SAClC5lB,QAAQkH,IAAIuX,GACZze,QAAQkH,IAAI5G,GACfC,SAASI,KAAKC,YAAYN,GAE1BA,EAASO,QACTP,EAASQ,SAAS,kDAElBd,QAAQkH,IAAI,EAAD,IAAQ,0DAEpB,gBAhBmB,sCAkBpB,OACC,gBAACnF,EAAA,EAAQ,KACP,gBAACC,EAAA,EAAS,CAACN,MAAM,SACjB,yBAAI/E,EAAMkpB,aAAe,0CAEvB,gBAAC7jB,EAAA,EAAS,CAACN,MAAM,SACnB,yBAAI/E,EAAMmpB,gBAAkB,0CAE1B,gBAAC9jB,EAAA,EAAS,CAACN,MAAM,SACnB,yBAAI/E,EAAMxJ,OAAS,0CAGpB,gBAAC6O,EAAA,EAAS,CAACN,MAAM,SACf/E,EAAM5G,aAEL,gBAACiM,EAAA,EAAS,CAACN,MAAM,SAClB/E,EAAMopB,oBAEL,gBAAC/jB,EAAA,EAAS,CAACN,MAAM,QACf,gBAAC8B,EAAA,EAAM,CACVtB,QAAQ,YACR2M,UAAU,QACVhM,UAAU,uBACVY,QAAS,kBAAMiiB,EAAc/oB,EAAMmB,YAAU,WCtBnCkoB,GA7BwD,SAAH,GAE7D,IADNR,EAAK,EAALA,MAEA,OACA,gBAACpF,GAAA,EAAc,KACb,gBAACze,EAAA,EAAK,CAACD,MAAM,OAAOmB,UAAU,mBAC3B,gBAACf,EAAA,EAAS,KACP,gBAACC,EAAA,EAAQ,KACN,gBAACC,EAAA,EAAS,CAACN,MAAM,SAAQ,qCACzB,gBAACM,EAAA,EAAS,CAACN,MAAM,SAAQ,qCACzB,gBAACM,EAAA,EAAS,CAACN,MAAM,SAAQ,mCAC5B,gBAACM,EAAA,EAAS,CAACN,MAAM,SAAQ,yCACtB,gBAACM,EAAA,EAAS,CAACN,MAAM,SAAQ,0CACzB,gBAACM,EAAA,EAAS,CAACN,MAAM,WAGzB,gBAACe,EAAA,EAAS,KACR+iB,EAAMziB,KAAI,SAACmiB,EAAMhnB,GAAY,OAC7B,gBAAC,GAAkB,CAClBsnB,MAAON,EACPjb,IAAG,+BAA0B/L,Y,sBC5BpC,gIAAA9C,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAeA,IAqGesI,eAAQ,MATI,SAACiE,GAC3B,OAAOC,aAAmB,eAErB2B,IAEJ5B,KAIajE,EArGgE,SAAH,GAErE,IADNwF,EAAa,EAAbA,cAEA,EAA8B1J,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAC1B,EAAsDJ,WAA4C,IAAG,mBAA9FymB,EAAmB,KAAEC,EAAsB,KAE5CC,EAAmB3mB,cAAiB,uBAAC,qFACzB,OAAjBI,GAAW,GAAM,kBAGyCvE,EAAQ+qB,qBAAqB,KAAD,EAA/EvK,EAA0C,OAEhDqK,EAAuBrK,GAAe,gDAEtC3S,EAAczC,GAAmB,EAAD,KAAS,QAG1C7G,GAAW,GAAO,yDAChB,CAACsJ,IAoCJ,OAlCA1J,aAAgB,WACf2mB,MACE,CAACA,IAiCH,gBAAC3kB,EAAA,EAAG,KACH,gBAACS,EAAA,EAAU,CACVC,QAAQ,KACR2M,UAAU,MACVhM,UAAU,gCACVV,WAAW,WAEVlP,EAAMsD,eAAepD,OAEpB,yBAAIF,EAAMsD,eAAeC,YACjB,2CAAkB,qBAAGiK,KAAMxN,EAAMsD,eAAeE,eAAgBxD,EAAMsD,eAAeG,iBAAoB,2BACzG,0BACViJ,EACA,gBAAC6B,EAAA,EAAG,CACHqB,UAAU,4BACVD,QAAQ,OACR8B,WAAW,SACX6D,eAAe,UAEf,gBAACzF,EAAA,EAAgB,OAGlB,gBAACtB,EAAA,EAAG,CACHqB,UAAU,4BACVD,QAAQ,OACRyC,cAAc,UAGd,gBAAC,GAAe,CACfmgB,MAAOS,SClFE1vB,GAVsD,SAACgJ,GACrE,OACC,gBAACiC,EAAA,EAAG,CAACqB,UAAU,kBAAkBD,QAAQ,OAAOyC,cAAc,UAC7D,gBAACyD,GAAA,EAAS,KACT,gBAAC,GAAuB,S,yECiEbud,GA9DgD,WAC9D,OACC,gBAAC7kB,EAAA,EAAG,CAACqB,UAAU,YAAYD,QAAQ,OAAOyC,cAAc,UACvD,gBAACyD,GAAA,EAAS,KACT,gBAAC,GAAU,CAACoH,MAAOjd,EAAM4B,cAAcE,YACvC,gBAACyM,EAAA,EAAG,CACHqB,UAAU,+BACVD,QAAQ,OACRyC,cAAc,MACdX,WAAW,UAEX,gBAAC,KAAe,CAAC7B,UAAW,SAE5B,gBAACZ,EAAA,EAAU,CACVC,QAAQ,KACR2M,UAAU,MACVhM,UAAU,2BACVV,WAAW,WAAS,SAKtB,uBAAKuY,MAAO,CAAC9X,QAAS,OAAQ8B,WAAY,SAAUmW,UAAW,SAC9D,uBAAKH,MAAO,CAACtL,WAAY,MAAO0L,cAAe,QAC9C,oDACA,sEAA6C,mDAA6B,+JAK1E,2CACA,iFAAwD,mCAAc,kNAKtE,uBAAKrS,IAAKsS,KAAcpS,IAAI,GAAG+R,MAAO,CAAChZ,MAAO,QAASkD,OAAQ,UAC/D,2CAAkB,mCAAa,+GAG/B,uBAAK6D,IAAKuS,KAAgBrS,IAAI,GAAG+R,MAAO,CAAChZ,MAAO,QAASkD,OAAQ,UACjE,kDAAyB,gBAAC,KAAe,MAAE,sCAC3C,qBAAG8V,MAAO,CAACQ,UAAW,SAAS,qGAE/B,8CACA,2LAGO,mCAAa,kJAGiC,gBAAC,KAAc,MAAE,+BAGtE,uBAAKzS,IAAKwS,KAAetS,IAAI,GAAG+R,MAAO,CAAChZ,MAAO,QAASkD,OAAQ,e,oDCyDvD0hB,GA9GuD,SAAH,GAI5D,IAQFxpB,EAXJypB,EAAQ,EAARA,SACAjK,EAAQ,EAARA,SACAkK,EAAM,EAANA,OAEA,EAA0BhnB,WAAoC+mB,GAAS,mBAAhE5pB,EAAK,KAAE8oB,EAAQ,KACtB,EAAsCjmB,YAAwB,GAAM,mBAA7DinB,EAAc,KAAEC,EAAW,KAQlC,GANAlnB,aAAgB,WACfimB,EAASc,KACP,CAACA,IAIA5pB,EAAMG,KACT,GAAIH,EAAMG,KAAKmf,WAAW,SAAU,CACnC,IAAMC,EAAiBvf,EAAMG,KAAK0K,MAAM,KAExC1K,EAAOof,EAAeA,EAAe5Z,OAAS,QAE9CxF,EAAOH,EAAMG,KA+Cf,OACC,gBAACiF,EAAA,EAAQ,KACR,gBAACC,EAAA,EAAS,CAACN,MAAM,SACf+kB,EACA,gBAAC,GAAa,CAAC9pB,MAAOA,EAAME,gBAAkB,GAAI0F,SA/C7B,SAACokB,GACzBlB,EAAS,2BACL9oB,GAAK,IACRE,eAAgB8pB,QA8CdhqB,EAAME,gBAAkB,yCAG1B,gBAACmF,EAAA,EAAS,CAACN,MAAM,SACf+kB,EACA,gBAACjjB,EAAA,EAAM,CAACqL,UAAU,SACjB,uBACCpG,IAAG,oDAA+C3L,GAClD4d,MAAO,CAAET,OAAQ,aAElB,yBAAOnU,KAAK,OAAOiJ,QAAM,EAACxM,SApDN,SAACC,GAAsD,IAAD,EACxEwM,EAAuC,QAArB,EAAGxM,EAAMyM,OAAOC,aAAK,aAAlB,EAAqB,GAEhD,GAAIF,EAAc,CACjB,IAAI4X,EAAS,IAAIC,WAEjBD,EAAOE,cAAc9X,GAErB4X,EAAOG,OAAS,WACftB,EAAS,2BAAK9oB,GAAK,IAAEG,KAAM8pB,EAAOh1B,WAGnCg1B,EAAOI,QAAU,SAAU/mB,GAC1BD,QAAQkH,IAAI,UAAWjH,MAuCiCgnB,OAAO,aAE3DtqB,EAAMG,KACT,uBAAK2L,IAAG,oDAA+C3L,KAEvD,gBAAC0E,EAAA,EAAG,CAACoD,OAAO,UAGd,gBAAC5C,EAAA,EAAS,CAACN,MAAM,SAChB,gBAACsS,GAAA,EAAU,CAACnF,UAAU,OAAOpL,QAlCb,WACdgjB,GACHD,EAAO7pB,GACP+pB,GAAY,IAEZA,GAAY,KA8BTD,EAAiB,gBAAC,KAAI,MAAM,gBAAC,KAAI,OAGlCA,GACA,gBAACzS,GAAA,EAAU,CAACnF,UAAU,OAAOpL,QA5CZ,WACpBijB,GAAY,GACZjB,EAASc,KA2CL,gBAAC,KAAM,OAIT,gBAACvS,GAAA,EAAU,CAACnF,UAAU,OAAOpL,QArDX,WACpB6Y,EAAS3f,EAAMC,MAqDZ,gBAAC,KAAM,UCrFGsqB,GAvBoD,SAAH,GAIzD,IAHNC,EAAU,EAAVA,WACA7K,EAAQ,EAARA,SACAkK,EAAM,EAANA,OAEA,OACC,gBAACpG,GAAA,EAAc,KACd,gBAACze,EAAA,EAAK,CAACD,MAAM,OAAOmB,UAAU,iBAC7B,gBAACJ,EAAA,EAAS,KACE,OAAV0kB,QAAU,IAAVA,OAAU,EAAVA,EAAYpkB,KAAI,SAACmiB,EAAMpb,GAAK,OAC5B,gBAAC,GAAgB,CAChByc,SAAUrB,EACV5I,SAAUA,EACVkK,OAAQA,EACRvc,IAAG,6BAAwBH,YCkDnBsd,I,QAhE8D,SAAH,GAAmB,IAAbxF,EAAK,EAALA,MAC/E,EAAwBpiB,WAAuB,MAAK,mBAA7CxB,EAAI,KAAE+M,EAAO,KACpB,EAAgDvL,WAAuB,MAAK,mBAArE6nB,EAAgB,KAAEC,EAAmB,KAC5C,EAAwC9nB,WAAuB,MAAK,mBAA7DxC,EAAY,KAAEuqB,EAAe,KA6BpC,OACC,gBAAC/lB,EAAA,EAAG,CAACoB,QAAQ,OAAO8B,WAAW,SAASwW,UAAU,OAAO3S,eAAe,iBACvE,gBAAC/G,EAAA,EAAG,CAACoB,QAAQ,OAAO8B,WAAW,UAC9B,gBAAClD,EAAA,EAAG,CAACqY,OAAO,SACX,gBAAC,GAAa,CAACld,MAAOK,EAAcuF,SAAUglB,KAG/C,gBAAC/lB,EAAA,EAAG,CAACqY,OAAO,SACX,gBAACrW,EAAA,EAAM,CAACtB,QAAQ,YAAY2M,UAAU,QAAQhM,UAAU,wBACtD5P,EAAM4G,uBAAuBpC,aAC9B,yBAAOqO,KAAK,OAAOiJ,QAAM,EAACxM,SArCN,SAACC,GAAsD,IAAD,EACxEwM,EAAuC,QAArB,EAAGxM,EAAMyM,OAAOC,aAAK,aAAlB,EAAqB,GAIhD,GAFAoY,EAAgC,OAAZtY,QAAY,IAAZA,OAAY,EAAZA,EAAcrI,MAE9BqI,EAAc,CACjB,IAAI4X,EAAS,IAAIC,WAEjBD,EAAOE,cAAc9X,GAErB4X,EAAOG,OAAS,WACfhc,EAAQ6b,EAAOh1B,SAGhBg1B,EAAOI,QAAU,SAAU/mB,GAC1BD,QAAQkH,IAAI,UAAWjH,MAsBiCgnB,OAAO,cAI/D,gBAACzlB,EAAA,EAAG,CAACqY,OAAO,SAAS7b,GAAQqpB,IAG9B,gBAAC7lB,EAAA,EAAG,CAACoB,QAAQ,QACZ,gBAACY,EAAA,EAAM,CACNtB,QAAQ,YACR2M,UAAU,QACVhM,UAAU,uBACVY,QA7Bc,WACjBme,EAAM,CACL9kB,KAAMkB,EACNnB,eAAgBG,KA2Bd8R,UAAW9R,IAAiBgB,GAE3B/K,EAAM4G,uBAAuB3E,e,cCnEnC,gIAAAkG,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAeA,IAsGesI,eAAQ,MATI,SAACiE,GAC3B,OAAOC,aAAmB,eAErB2B,IAEJ5B,KAIajE,EAtGgF,SAAH,GAErF,IADNwF,EAAa,EAAbA,cAEA,EAA8B1J,YAAwB,GAAM,mBAArDG,EAAO,KAAEC,EAAU,KAC1B,EAAoDJ,WAAsC,IAAG,mBAAtF6b,EAAkB,KAAEC,EAAqB,KAE1CK,EAAiBnc,cAAiB,uBAAC,qFACvB,OAAjBI,GAAW,GAAM,kBAGmCvE,EAAQugB,gBAAgB,KAAD,EAApEC,EAAoC,OAE1CP,EAAsBO,GAAe,gDAErC3S,EAAczC,GAAmB,EAAD,KAAS,QAG1C7G,GAAW,GAAO,yDAChB,IAEHJ,aAAgB,WACfmc,MACE,IAEH,IAAM6L,EAAoB,wCAAG,WAAOjB,GAA6B,2FAEzDlrB,EAAQosB,eAAelB,GAAU,KAAD,EAEtC5K,IAAiB,+CAEjBzS,EAAczC,GAAmB,EAAD,KAAS,wDAE1C,gBARyB,sCAUpBihB,EAAoB,wCAAG,WAAO9qB,GAAU,2FAEtCvB,EAAQssB,eAAe/qB,GAAI,KAAD,EAEhC+e,IAAiB,+CAEjBzS,EAAczC,GAAmB,EAAD,KAAS,wDAE1C,gBARyB,sCAUpBmhB,EAAoB,wCAAG,WAAOjrB,GAA0B,2FAEtDtB,EAAQwsB,eAAelrB,GAAO,KAAD,EAEnCgf,IAAiB,+CAEjBzS,EAAczC,GAAmB,EAAD,KAAS,wDAE1C,gBARyB,sCAU1B,OACC,gBAACjF,EAAA,EAAG,KACH,gBAACS,EAAA,EAAU,CACVC,QAAQ,KACR2M,UAAU,MACVhM,UAAU,gCACVV,WAAW,WAEVlP,EAAM4G,uBAAuB9E,WAG9B4K,EACA,gBAAC6B,EAAA,EAAG,CACHqB,UAAU,oCACVD,QAAQ,OACR8B,WAAW,SACX6D,eAAe,UAEf,gBAACzF,EAAA,EAAgB,OAGlB,gBAACtB,EAAA,EAAG,CACHqB,UAAU,oCACVD,QAAQ,OACRyC,cAAc,UAEd,gBAAC,GAAa,CACb8hB,WAAY9L,EACZiB,SAAUoL,EACVlB,OAAQoB,IAGT,gBAAC,GAAkB,CAAChG,MAAO4F,SCpFjB3tB,GAVsE,SAAC0F,GACrF,OACC,gBAACiC,EAAA,EAAG,CAACqB,UAAU,0BAA0BD,QAAQ,OAAOyC,cAAc,UACrE,gBAACyD,GAAA,EAAS,KACT,gBAAC,GAA2B,S,uCCQjB,SAASgf,GAAY,GACnC,IADsCC,EAAkB,EAAlBA,mBAGrC,EAA8BvoB,WAAe,IAAG,mBAAzCkH,EAAO,KACd,GAD0B,KACFshB,mBAAqB,KAAG,mBAAzCzrB,EAAI,KAAE0rB,EAAO,KAsFpB,OAPAC,qBAAU,WACRC,MAlFW,gBAmFRnM,MAAK,SAAC9f,GAAQ,OAAKA,EAASksB,UAC5BpM,MAAK,SAACzf,GAAI,OAAK0rB,EAAS1rB,MACxByR,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,+BAAgCA,QACjE,CAtFU,iBAyFX,gBAAC,KAAG,CAACwB,GAAI,CAAEmD,OAAQ,QAASlD,MAAO,SACjC,gBAACkI,GAAA,EAAK,CAACye,UAAU,MAAMxe,QAAS,GAC7BnD,GAAW,gBAACqD,GAAA,EAAK,CAACC,SAAS,QAAQtD,IAGxC,gBAAC,KAAG,CAACjF,GAAI,CAAEmD,OAAQ,QACflD,MAAO,OACP,kBAAmB,CACf4mB,gBAAiB,cAErB,sCAAuC,CACnCA,gBAAiB,gBAGnB,gBAACC,GAAA,EAAQ,CACTC,aAAc,CACZC,QAAS,CACPC,sBAAuB,CACrB9rB,IAAI,EACJ+rB,gBAAgB,EAChBC,cAAc,EACdC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,KAIfC,KAAMzsB,EACNksB,QAhHgC,CACxC,CACEQ,MAAO,KACPC,WAAY,KACZxnB,MAAO,GACPynB,UAAU,GAEZ,CACIF,MAAO,eACPC,WAAY,gBACZE,UAAU,EAEVD,UAAU,GAEZ,CACEF,MAAO,OACPC,WAAY,OACZG,gBAAiB,eACjB3nB,MAAO,IACPynB,UAAU,GAEZ,CACEF,MAAO,cACPC,WAAY,cACZG,gBAAiB,eACjB3nB,MAAO,IACPynB,UAAU,GAEd,CACIF,MAAO,yBACPC,WAAY,cACZG,gBAAiB,eACjBD,UAAU,EACVlf,KAAM,EACNif,UAAU,GAGd,CACIF,MAAO,kBACPC,WAAY,aACZxnB,MAAM,IACNynB,UAAU,GAKd,CACEF,MAAO,iBACPC,WAAY,eACZE,UAAU,EAEVD,UAAU,GAGZ,CACIF,MAAO,YACPC,WAAY,UACZE,UAAU,EACV1nB,MAAO,GACPynB,UAAU,GAEd,CACIF,MAAO,YACPC,WAAY,UACZE,UAAU,EAEVD,UAAU,IA+CNG,mBAAmB,EACnBC,6BAA6B,EAC7BC,cAAY,EACZC,0BA9CsB,SAACC,GAC3B,IAAMC,EAAcptB,EAAK8G,QAAO,SAACmc,GAAG,OAAKkK,EAAkB7Q,SAAS2G,EAAI5iB,OAClEgtB,EAAyC,IAAvBD,EAAYrnB,OAAeqnB,EAAY,GAAGd,gBAAkB,GACpFd,EAAmB6B,OA8CrB,gBAAChgB,GAAA,EAAK,CAACye,UAAU,MAAMxe,QAAS,K,2DC3HvBggB,GAdS,SAACtqB,GACrB,OACI,kBAACuQ,GAAA,EAAS,CACNF,MAAOrQ,EAAMqQ,MACbjJ,KAAMpH,EAAMoH,KACZpE,SAAUhD,EAAMuqB,cAEhB5nB,QAAS,WACTN,KAAM,QACNiY,OAAQ,W,SC2HLkQ,GAjHO,SAACxqB,GAErB,IAMIyqB,EAJJ,EAAoChC,mBAAS,IAAG,mBAAzCpV,EAAU,KAAEqX,EAAa,KAChC,EAAwBjC,mBAA4B,IAAG,mBAAhDzrB,EAAI,KAAE0rB,EAAO,KACpB,EAA8CD,mBAA4B,IAAG,mBAAtEkC,EAAe,KAAEC,EAAkB,KAIpC1B,EAA2C,CAC/C,CACEQ,MAAO,cACPC,WAAY,UACZhf,KAAM,EACNif,UAAU,IA+Dd,OAvBAjB,qBAAU,WACRC,MAtDuB,8BAsDEvV,GACtBoJ,MAAK,SAAC9f,GAAQ,OAAKA,EAASksB,UAC5BpM,MAAK,SAACzf,GAAI,OAAK0rB,EAAS1rB,MACxByR,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,iCAAkCA,QACnE,CA1DsB,8BA0DD2S,IAExBsV,qBAAU,WAC6B,IAAjC3oB,EAAM6qB,gBAAgB9nB,QACxB6nB,EAAmB5qB,EAAM6qB,iBAGE,KAA1B7qB,EAAMspB,iBAA2D,IAAjCtpB,EAAM6qB,gBAAgB9nB,QACvD6lB,MAjE8B,oCAiEI5oB,EAAMspB,iBACnC7M,MAAK,SAAC9f,GAAQ,OAAKA,EAASksB,UAC5BpM,MAAK,SAACzf,GACL4tB,EAAmB5tB,MAGpByR,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,iCAAkCA,QAEvE,CAzE+B,sCA4EhC,gBAAC,KAAG,CAACwB,GAAI,CAAEmD,OAAQ,QAASlD,MAAO,SACjC,gBAACkI,GAAA,EAAK,CAACye,UAAU,MAAMxe,QAAS,EAAGpI,GAAI,CAAE4oB,GAAI,IAC3C,gBAAC,GAAe,CAACP,cA/DvB,SAA4BtnB,GAE1BuQ,aAAaiX,GACfA,EAAgBxgB,YAAW,WAGvB,IAAI8gB,EAAqB9nB,EAAMyM,OAAOtS,OAAS,GAI7CstB,EADwB,KAAvBK,EACa,eAAeA,EAEf,MACf,MAkDqD1a,MAAO,YAAajJ,KAAM,oBAEhF,gBAACiD,GAAA,EAAK,CAACye,UAAU,MAAMxe,QAAS,GAC9B,gBAAC,KAAG,CAACpI,GAAI,CAAEmD,OAAQ,QAASlD,MAAO,QACjC,uBAAKgZ,MAAO,CAAC4N,gBAAiB,aAAc5lB,QAAS,MAAOE,QAAS,OAAQ2F,eAAgB,WAC3F,gBAACtG,EAAA,EAAU,KAAC,kDAEd,gBAACsmB,GAAA,EAAQ,eACPS,KAAMzsB,EACNksB,QAASA,EACTe,cAAY,EACZe,WA1D+C,SAAC74B,GACxD,IAAM84B,EAA8B,uBAAQN,GAAmB,IAAI,aAAK,CAACx4B,EAAO8tB,OAAQ,IAClFiL,EAActU,MAAMe,KACtB,IAAIwT,IAAIF,EAAYznB,KAAI,SAAAmiB,GAAI,OAAIA,EAAKtoB,QACvCmG,KAAI,SAAAnG,GACJ,OAAO4tB,EAAYhJ,MAAK,SAAA0D,GAAI,OAAIA,EAAKtoB,KAAOA,QAE9CutB,EAAmBM,GACnBlrB,EAAMorB,mBAAmBF,KAkDkBluB,EAAI,CACvCquB,mBAAoB,EACpBC,qBAAqB,MAGzB,gBAAC,KAAG,CAACppB,GAAI,CAAEmD,OAAQ,QAASlD,MAAO,QACjC,uBAAKgZ,MAAO,CAAC4N,gBAAiB,aAAc5lB,QAAS,MAAOE,QAAS,OAAQ2F,eAAgB,WAC3F,gBAACtG,EAAA,EAAU,KAAC,iDAEd,gBAACsmB,GAAA,EAAQ,eACPS,KAAMkB,EACNzB,QAASA,EACTe,cAAY,EACZe,WA5DkD,SAAC74B,GAC3D,IAAMo5B,EAAuBp5B,EAAO8tB,IAAI5iB,GACxC,GAA+B,KAAb,OAAfstB,QAAe,IAAfA,OAAe,EAAfA,EAAiB5nB,QACpB,CACE,IAAIyoB,EAAeb,EAAgB7mB,QAAO,SAACmc,GAAG,OAAKA,EAAI5iB,KAAOkuB,KAC9DX,EAAmBY,GACnBxrB,EAAMorB,mBAAmBI,MAsDmBb,EAAe,CACrDU,mBAAoB,S,wBChD1BI,GAAWxrB,cAGf,SAACD,EAAO4Z,GACR,IAAQhY,EAA8B5B,EAA9B4B,KAAM0B,EAAwBtD,EAAxBsD,UAAcooB,EAAK,aAAK1rB,EAAK,IAC3C,OACE,qCACEsD,UAAWqoB,aAAK,CAAE,qBAAsB/pB,GAAQ0B,GAChDsW,IAAKA,GACD8R,OAKJE,GACA,UADAA,GAGC,UAHDA,GAKC,UALDA,GAQC,UARDA,GASC,UATDA,GAUC,UAGDC,GAAQxR,aAAOyR,KAAPzR,CAAiB,wJASzB0R,GAAiB1R,aAAOoR,GAAPpR,CAAgB,oKAQjC2R,GAAe3R,aAAO,MAAPA,EACnB,gBAAG4R,EAAK,EAALA,MAAK,OAAOC,aAAG,8oBAS2B,SAAvBD,EAAME,QAAQC,KAAkBR,GAAY,OAErB,SAAvBK,EAAME,QAAQC,KAAkBR,GAAYA,GAErC,SAAvBK,EAAME,QAAQC,KAAkB,mBAAqB,mBAEzB,SAAvBH,EAAME,QAAQC,KAAkBR,GAAWA,GAYlB,SAAvBK,EAAME,QAAQC,KAAkBR,GAAYA,OAMrDxR,GAAgBC,aAAO,SAAPA,CAAiB,CACrCzX,WAAY,4BACZkN,WAAY,IACZyK,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QAEP,UAAW,CACT4K,UAAW,qCAIAwR,GArKY,SAAH,GAAgE,IAA3D/C,EAAe,EAAfA,gBAAiBuB,EAAe,EAAfA,gBAAiBO,EAAkB,EAAlBA,mBAC7D,EAAwBnrB,YAAe,GAAM,mBAAtC2B,EAAI,KAAEsc,EAAO,KACpB,EAAkCje,YAAe,GAAM,mBAAhDqsB,EAAS,KAAEC,EAAY,KAGxB/qB,EAAc,WACiB,IAA7BgrB,EAAkBzpB,QAItBqoB,EAAmBoB,GACnBtO,GAAQ,IAJNqO,GAAa,IAiBnB,EAAkDtsB,WAAkC4qB,GAAgB,mBAA7F2B,EAAiB,KAAEC,EAAoB,KAE9C,OACE,2BACE,gBAAC,GAAa,CAAClmB,KAAK,SAASrC,QAxBd,WAAH,OAASga,GAAQ,KAwBoB,oBAGjD,gBAAC,GAAK,CACJwO,kBAAgB,uBAChBC,mBAAiB,6BACjB/qB,KAAMA,EACNC,QAASL,EACTorB,MAAO,CAAEC,SAAUd,KAEnB,gBAACC,GAAY,CAAC9pB,GAAI,CAAEmD,OAAQ,IAAKlD,MAAO,MACtC,gBAAC2qB,GAAA,EAAQ,CAAClrB,KAAM0qB,EACNS,iBAAkB,IAClBlrB,QAzBO,SAACoB,EAAO+pB,GAChB,cAAXA,GAIJT,GAAa,IAqBGrqB,GAAI,CAAC+qB,OAAQ,MACbC,aAAc,CAACC,SAAU,MAAOC,WAAY,WACpD,gBAAC5iB,GAAA,EAAK,CACFC,SAAS,QACT9H,QAAQ,SACRT,GAAI,CAAEC,MAAO,SAAS,uCAK5B,sBAAI9E,GAAG,uBAAuBiG,UAAU,eAAa,eAGrD,qBAAGjG,GAAG,6BAA6BiG,UAAU,qBAAmB,6JAGhE,gBAAC,GAAa,CAACgmB,gBAAiBA,EAAiBuB,gBAAiBA,EAAiBO,mBAAoBqB,IACvG,2BACE,gBAAC,GAAa,CAAClmB,KAAK,SAAU4U,MAAO,CAAChZ,MAAQ,SAAU+B,QAAS1C,GAAY,MAC7E,gBAAC,GAAa,CAAC2Z,MAAO,CAAChZ,MAAQ,QAAS4mB,gBAAiB,OAAUnO,OAAQ,iBAAkB/K,WAAY,OAAQ8L,UAAW,QAASpV,KAAK,SAASrC,QAhDxI,WACnBga,GAAQ,KA+CyK,e,8BC7DtK,SAASmP,GAAW,GAClC,IADqCC,EAAa,EAAbA,cAE9BvxB,EAAS,uCACf,EAAwB0sB,mBAAS,IAAG,mBAA7BzrB,EAAI,KAAE0rB,EAAO,KAEpBC,qBAAU,WACRC,MAAM7sB,GACH0gB,MAAK,SAAC9f,GAAQ,OAAKA,EAASksB,UAC5BpM,MAAK,SAACzf,GAAI,OAAK0rB,EAAQ1rB,MACvByR,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,uBAAwBA,QACzD,CAAC3E,IAmCJ,OACE,gBAAC,KAAG,CAACmG,GAAI,CAAEmD,OAAQ,OAAQlD,MAAO,OAAQorB,SAAU,SAC9C,gBAACC,GAAA,EAAY,CACX9K,MAAO1lB,EACPywB,sBAjBwB,SAChCxqB,EACAqhB,EACAoJ,GAGA,GAAIA,EAAY,CACd,IAAM3X,EA3BR,SAAS4X,EAAaC,EAAMvwB,GAExB,GAAIuwB,EAAKvwB,KAAOA,EACZ,OAAOuwB,EAIX,GAAIA,EAAKhpB,UAAYgpB,EAAKhpB,SAAS7B,OAAS,EAAG,CAAC,IACX,EADU,eACvB6qB,EAAKhpB,UAAQ,IAAjC,2BAAmC,CAAC,IAC1BvS,EAASs7B,EADH,QACuBtwB,GACnC,GAAIhL,EACA,OAAOA,GAEd,+BAIL,OAAO,KAUIs7B,CAAa3wB,EAAK,GAAIsnB,GAC7BuJ,KAAa,OAAJ9X,QAAI,IAAJA,OAAI,EAAJA,EAAMnR,WAAoC,IAAzBmR,EAAKnR,SAAS7B,OAC9CuqB,EAAchJ,EAAQuJ,KAShBjB,MAAO,CACHkB,QAASC,OAOzB,SAASA,GAAY/tB,GACjB,OACI,gBAACguB,GAAA,EAAO,eACJ1qB,UAAU,QACViX,SAAS,UACTY,MAAO,CAAEhZ,MAAO,GAAIkD,OAAQ,GAAI4K,MAAO,SACnCjQ,GAGJ,wBAAM8Z,EAAE,2gB,4BCpEL,SAASmU,GAAgB,GAA0C,IAAxCX,EAAa,EAAbA,cAAc,EAAD,EAAEY,yBAAiB,IAAC,KAAE,EAC3E,EAAwBjuB,YAAe,GAAM,mBAAtC2B,EAAI,KAAEsc,EAAO,KACpB,EAAwCje,WAAe,CAAC8V,KAAM,KAAMoY,YAAY,IAAO,mBAAhFC,EAAY,KAAEC,EAAe,KACpC,EAAkCpuB,YAAe,GAAM,mBAAhDqsB,EAAS,KAAEC,EAAY,KAGxB/qB,EAAc,WACd4sB,EAAarY,MAAMuX,EAAcc,EAAarY,MAClDsY,EAAgB,CAACtY,KAAM,KAAMoY,YAAY,IACzCjQ,GAAQ,IAiBV,OACE,2BACE,gBAAC,GAAa,CAAC3X,KAAK,SAASrC,QAvBd,WAAH,OAASga,GAAQ,KAuBoB,eAGjD,gBAAC,GAAK,CACJwO,kBAAgB,uBAChBC,mBAAiB,6BACjB/qB,KAAMA,EACNC,QAASL,EACTorB,MAAO,CAAEC,SAAUd,KAEnB,gBAAC,GAAY,CAAC7pB,GAAI,CAAEmD,OAAQ,IAAKlD,MAAO,MACtC,gBAAC2qB,GAAA,EAAQ,CAAClrB,KAAM0qB,EACNS,iBAAkB,IAClBlrB,QA1BO,SAACoB,EAAO+pB,GAChB,cAAXA,GAIJT,GAAa,IAsBGrqB,GAAI,CAAC+qB,OAAQ,MACbC,aAAc,CAACC,SAAU,MAAOC,WAAY,WACpD,gBAAC5iB,GAAA,EAAK,CACFC,SAAS,QACT9H,QAAQ,SACRT,GAAI,CAAEC,MAAO,SAAS,8CAK5B,sBAAI9E,GAAG,uBAAuBiG,UAAU,eAAa,wBAG7B,KAAtB4qB,GAA4B,iDAAyBA,GAEvD,qBAAG7wB,GAAG,6BAA6BiG,UAAU,qBAAmB,4KAGhE,2BACI8qB,EAAarY,MAAQ,gBAAC,GAAa,CAACxP,KAAK,SAAS4U,MAAO,CAAChZ,MAAO,QAASob,aAAc,OAAQN,YAAa,QAAS/Y,QAAS1C,GAAY,MAC7I,gBAAC,GAAa,CAAC+E,KAAK,SAAS4U,MAAO,CAAChZ,MAAO,QAAQ4mB,gBAAiB,OAAQnO,OAAQ,kBAAmB1W,QAnDzF,WACvBmqB,EAAgB,CAACtY,KAAM,KAAMoY,YAAY,IACzCjQ,GAAQ,KAiDkI,WAEpI,gBAACmP,GAAU,CAACC,cA1CO,SAACvX,EAAMoY,GAChCE,EAAgB,CAACtY,OAAMoY,qBAgD3B,I,SAAM1C,GAAWxrB,cAGf,SAACD,EAAO4Z,GACR,IAAQhY,EAA8B5B,EAA9B4B,KAAM0B,EAAwBtD,EAAxBsD,UAAcooB,EAAK,aAAK1rB,EAAK,IAC3C,OACE,qCACEsD,UAAWqoB,aAAK,CAAE,qBAAsB/pB,GAAQ0B,GAChDsW,IAAKA,GACD8R,OAKJG,GAAQxR,aAAOyR,KAAPzR,CAAiB,wJASzB0R,GAAiB1R,aAAOoR,GAAPpR,CAAgB,oKAQjC2R,GAAe3R,aAAO,MAAPA,CAAc,CACjCzX,WAAY,4BACZkN,WAAY,IACZsL,UAAW,QACXvV,SAAU,WACVxC,QAAS,OACTyC,cAAe,SACfuV,IAAK,MACLkS,SAAU,SACVxE,gBAAiB,OACjBuF,aAAc,MACd1T,OAAQ,iBACRC,UAAW,8BACX1X,QAAS,OACT8M,MAAO,OAEP,iBAAkB,CAChBqK,OAAQ,EACRE,WAAY,SACZ+C,aAAc,OAGhB,uBAAwB,CACtBjD,OAAQ,EACRE,WAAY,SACZ1K,WAAY,IACZG,MAAO,OACPsN,aAAc,SAIZnD,GAAgBC,aAAO,SAAPA,CAAiB,CACrCzX,WAAY,4BACZkN,WAAY,IACZyK,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QAEP,UAAW,CACT4K,UAAW,qC,sCChKf,gIAAAhf,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAce,SAAS0yB,KACtB,MAAwBtuB,YAAe,GAAM,mBAAtC2B,EAAI,KAAEsc,EAAO,KAGpB,EAAsCje,WAAe,IAAG,mBAAjDuuB,EAAW,KAAEC,EAAc,KAClC,EAAoDxuB,WAAe,IAAG,mBAA/DyuB,EAAkB,KAAEC,EAAqB,KAChD,EAAoC1uB,WAAe,GAAE,mBAA9C2uB,EAAU,KAAEtB,EAAa,KAChC,EAAoDrtB,WAAe,IAAG,mBAA/D4uB,EAAkB,KAAEC,EAAqB,KAChD,EAA8C7uB,WAAkC,IAAG,mBAA5E4qB,EAAe,KAAEO,EAAkB,KAC1C,EAAkCnrB,YAAe,GAAM,mBAAhDqsB,EAAS,KAAEC,EAAY,KAC9B,EAAkCtsB,WAAe,IAAG,mBAA7C8uB,EAAS,KAAEC,EAAY,KAQ9B/uB,aAAgB,WACd2oB,MAAM,GAAD,OANwB,uCAME,YAAIgG,IAChCnS,MAAK,SAAC9f,GAAQ,OAAKA,EAASkN,UAC5B4S,MAAK,SAACzf,GAAI,OAAK8xB,EAAsB9xB,MACrCyR,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,uBAAwBA,QACzD,CAACkuB,IAGJ,IAAMK,EAAS,wCAAG,8FACI,KAAhBT,EAAkB,gBAED,OADnBQ,EAAa,+BACbzC,GAAa,GAAM,6BAGM,KAAvBmC,EAAyB,gBAER,OADnBM,EAAa,sCACbzC,GAAa,GAAM,6BAGM,KAAvBsC,EAAyB,iBAER,OADnBG,EAAa,wBACbzC,GAAa,GAAM,8BAGU,IAA3B1B,EAAgB9nB,OAAY,iBAEX,OADnBisB,EAAa,sCACbzC,GAAa,GAAM,8BAGD,KAAhBiC,GAAqC,IAAfI,EAAgB,iBAyBvC,OAxBGziB,EAAW,IAAIzN,SAGfmsB,EAAgB9nB,OAAS,IACrBmsB,EAAiBrE,EAAgBsE,QAAO,SAACC,EAAKC,GAElD,OADAD,EAAIvrB,KAAKwrB,EAAIhyB,IACN+xB,IACN,IACCE,EAAqBjoB,KAAKC,UAAU4nB,GACxCzuB,QAAQkH,IAAI2nB,GACZnjB,EAASxZ,OAAO,cAAe28B,IAEjCnjB,EAASxZ,OAAO,KAAM,KACtBwZ,EAASxZ,OAAO,OAAQ67B,GACxBriB,EAASxZ,OAAO,cAAe+7B,GAC/BviB,EAASxZ,OAAO,eAAgBi8B,EAAWh8B,YAC3CuZ,EAASxZ,OAAO,iBAAkB,KAClCwZ,EAASxZ,OAAO,yBAA0B,KAC1CwZ,EAASxZ,OAAO,YAAa,QAC7BwZ,EAASxZ,OAAO,YAAa,SAEvB48B,EAAiB,CACrBvzB,OAAQ,OACRoF,KAAM+K,GACN,EAAD,QACKyc,MA7DgB,eA6DS2G,GAC1B9S,MAAK,SAAA9f,GAAQ,OAAIA,EAASksB,UAC1Bpa,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,2BAA4BA,MAAQ,KAAD,GACvEgF,OAAOC,SAAS2L,QAAQrf,EAAQgU,+BAA+B,4CAElE,kBApDc,mCA6Ef,OACE,2BACE,gBAAC6mB,GAAA,EAAQ,CAAClrB,KAAM0qB,EACNS,iBAAkB,IAClBlrB,QA3BW,SAACoB,EAAO+pB,GAChB,cAAXA,GAIJT,GAAa,IAuBDW,aAAc,CAACC,SAAU,MAAOC,WAAY,WACpD,gBAAC5iB,GAAA,EACG,CACAC,SAAS,QACT9H,QAAQ,SACRT,GAAI,CAAEC,MAAO,SAEd4sB,IAGL,gBAAC,GAAa,CAAC7sB,GAAI,CAAE+a,YAAa,EAAGpN,WAAY,SAAWtJ,KAAK,SAASrC,QAvG3D,WAAH,OAASga,GAAQ,KAuGiE,UAG9F,gBAAC,GAAK,CACJwO,kBAAgB,uBAChBC,mBAAiB,6BACjB/qB,KAAMA,EACNC,QA7Gc,WAAH,OAASqc,GAAQ,IA8G5B0O,MAAO,CAAEC,SAAUd,KAEnB,gBAAC,GAAY,CAAC7pB,GAAI,CAAEC,MAAO,MACzB,sBAAI9E,GAAG,uBAAuBiG,UAAU,eAAa,2BAGrD,qBAAGjG,GAAG,6BAA6BiG,UAAU,qBAAmB,oFAGhE,gBAAC,GAAe,CAACinB,cAxCzB,SAA0BtnB,GACxBwrB,EAAexrB,EAAMyM,OAAOtS,QAuC4BiT,MAAO,eAAgBjJ,KAAM,kBAC/E,gBAAC,GAAe,CAACmjB,cArCzB,SAAiCtnB,GAC/B0rB,EAAsB1rB,EAAMyM,OAAOtS,QAoC4BiT,MAAO,cAAejJ,KAAM,yBACrF,sBAAI/J,GAAG,wCAAwCiG,UAAU,oBAAoB6X,MAAO,CAACQ,UAAW,SAC9F,yCAEuB,KAAvBkT,GACF,gBAACnsB,EAAA,EAAU,KACRmsB,GAEH,gBAACZ,GAAe,CAACX,cAAeA,EAAeY,kBAAmBW,IACjE,sBAAIxxB,GAAG,wCAAwCiG,UAAU,oBAAoB6X,MAAO,CAACQ,UAAW,SAC9F,yCAEH,gBAAC,GAAkB,CAAC2N,gBAAiB,GAAIuB,gBAAiBA,EAAiBO,mBAAoBA,IAC/F,2BAC8B,IAA3BP,EAAgB9nB,QACnB,gBAAC8d,GAAA,EAAc,CAAC3e,GAAI,CAAEmD,OAAQ,IAAKsW,UAAW,SAC/C,gBAACvZ,EAAA,EAAK,CAACD,MAAM,OAAOmB,UAAU,yBACzB,gBAACf,EAAA,EAAS,KACR,gBAACC,EAAA,EAAQ,KACP,gBAACC,EAAA,EAAS,CAACN,MAAM,QAAQgZ,MAAO,CAAEtV,SAAU,SAAUqE,IAAK,EAAG+iB,OAAQ,EAAGtS,WAAY,eAAgB,qCACrG,gBAAClY,EAAA,EAAS,CAACN,MAAM,OAAOgZ,MAAO,CAAEtV,SAAU,SAAUqE,IAAK,EAAG+iB,OAAQ,EAAGtS,WAAY,eAAgB,sCAG5G,gBAACzX,EAAA,EAAS,KACR2nB,EAAgBrnB,KAAI,SAACmiB,EAAMtoB,GAAE,OACvB,gBAACmF,EAAA,EAAQ,CAACkI,IAAG,2CAAsCrN,IACjD,gBAACoF,EAAA,EAAS,CAACN,MAAM,SACdwjB,EAAKxR,aAER,gBAAC1R,EAAA,EAAS,CAACN,MAAM,QACdwjB,EAAK6J,gBASlB,2BACA,gBAAC,GAAa,CAACjpB,KAAK,SAASrC,QAAS+qB,GAAU,OAGhD,gBAAC,GAAa,CAAC9T,MAAO,CAAC4N,gBAAiB,OAAUnO,OAAQ,iBAAkB/K,WAAY,OAAQ8L,UAAW,QAASpV,KAAK,SAASrC,QA3FjH,WAEvBopB,EAAc,GACdlC,EAAmB,IACnBlN,GAAQ,KAuF0J,cAUtK,I,MAAMuN,GAAWxrB,cAGf,SAACD,EAAO4Z,GACR,IAAQhY,EAA8B5B,EAA9B4B,KAAM0B,EAAwBtD,EAAxBsD,UAAcooB,EAAK,aAAK1rB,EAAK,IAC3C,OACE,qCACEsD,UAAWqoB,aAAK,CAAE,qBAAsB/pB,GAAQ0B,GAChDsW,IAAKA,GACD8R,OAKJE,GACA,UADAA,GAGC,UAHDA,GAKC,UALDA,GAQC,UARDA,GASC,UATDA,GAUC,UAGDC,GAAQxR,aAAOyR,KAAPzR,CAAiB,wJASzB0R,GAAiB1R,aAAOoR,GAAPpR,CAAgB,oKAQjC2R,GAAe3R,aAAO,MAAPA,EACnB,gBAAG4R,EAAK,EAALA,MAAK,OAAOC,aAAG,8oBAS2B,SAAvBD,EAAME,QAAQC,KAAkBR,GAAY,OAErB,SAAvBK,EAAME,QAAQC,KAAkBR,GAAYA,GAErC,SAAvBK,EAAME,QAAQC,KAAkB,mBAAqB,mBAEzB,SAAvBH,EAAME,QAAQC,KAAkBR,GAAWA,GAYlB,SAAvBK,EAAME,QAAQC,KAAkBR,GAAYA,OAMrDxR,GAAgBC,aAAO,SAAPA,CAAiB,CACrCzX,WAAY,4BACZkN,WAAY,IACZ3N,MAAO,IACPoY,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QAEP,UAAW,CACT4K,UAAW,qC,wBC/RA,SAAS4U,GAAmB,GAA4B,IAA3BC,EAAuB,EAAvBA,wBAC1C,EAAwBzvB,YAAe,GAAM,mBAAtC2B,EAAI,KAAEsc,EAAO,KACdyR,EAAgB,uBAAmBD,GAuBzC,OACE,2BACE,gBAAC,GAAa,CAACxtB,GAAI,CAAE2N,WAAY,GAAIkZ,gBAAiB,UAAWnO,OAAQ,qBAAuBrU,KAAK,SAASrC,QAvB/F,WAAH,OAASga,GAAQ,KAuBqG,UAGlI,gBAAC,GAAK,CACJwO,kBAAgB,uBAChBC,mBAAiB,6BACjB/qB,KAAMA,EACNC,QA7Bc,WAAH,OAASqc,GAAQ,IA8B5B0O,MAAO,CAAEC,SAAUd,KAEnB,gBAAC,GAAY,CAAC7pB,GAAI,CAAEC,MAAO,MACzB,sBAAI9E,GAAG,uBAAuBiG,UAAU,eAAa,kBAGrD,qBAAGjG,GAAG,6BAA6BiG,UAAU,qBAAmB,2HAGhE,sBAAIjG,GAAG,gCAAgCiG,UAAU,oBAAoB6X,MAAO,CAAChY,QAAS,WAAY8M,MAAO,YACvG,kDAEF,2BACG,gBAAC,GAAa,CAAC1J,KAAK,SAAS4U,MAAO,CAAC4N,gBAAiB,UAAWnO,OAAQ,qBAAsB1W,QA1CrF,WAInB,GAFAzD,QAAQkH,IAAI+nB,GAEkB,OAA3BA,EACH,CAII9G,MAAM+G,EAHiB,CACnB3zB,OAAQ,WAGZ0J,OAAOC,SAAS2L,QAAQrf,EAAQgU,kCAgC0F,MAGtH,gBAAC,GAAa,CAACM,KAAK,SAAS4U,MAAO,CAAC4N,gBAAiB,OAAQnO,OAAQ,kBAAmB1W,QA/B1E,WAEvBga,GAAQ,KA6BmH,cAU/H,I,SAAMuN,GAAWxrB,cAGf,SAACD,EAAO4Z,GACR,IAAQhY,EAA8B5B,EAA9B4B,KAAM0B,EAAwBtD,EAAxBsD,UAAcooB,EAAK,aAAK1rB,EAAK,IAC3C,OACE,qCACEsD,UAAWqoB,aAAK,CAAE,qBAAsB/pB,GAAQ0B,GAChDsW,IAAKA,GACD8R,OAcJE,GAGC,UAHDA,GASC,UATDA,GAUC,UAGDC,GAAQxR,aAAOyR,KAAPzR,CAAiB,wJASzB0R,GAAiB1R,aAAOoR,GAAPpR,CAAgB,oKAQjC2R,GAAe3R,aAAO,MAAPA,CAAc,CACjCzX,WAAY,4BACZkN,WAAY,IACZsL,UAAW,QACXvV,SAAU,WACVxC,QAAS,OACTyC,cAAe,SACf3C,QAAS,OACTkY,IAAK,MACLkS,SAAU,SACVxE,gBAAiB,OACjBuF,aAAc,MACd1T,OAAO,aAAD,OAAegR,IACrB/Q,UAAW,8BACX5K,MAAO2b,GAEP,iBAAkB,CAChBtR,OAAQ,EACRE,WAAY,SACZ+C,aAAc,OAGhB,uBAAwB,CACtBjD,OAAQ,EACRE,WAAY,SACZ1K,WAAY,IACZG,MAAO2b,GACPrO,aAAc,SAIZnD,GAAgBC,aAAO,SAAPA,CAAiB,CACrCzX,WAAY,4BACZkN,WAAY,IACZ3N,MAAO,IACP8a,YAAa,OACb1C,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QAEP,UAAW,CACT4K,UAAW,qC,sCCxKf,gIAAAhf,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAQe,SAAS+zB,GAAiB,GAA4B,IAA3BF,EAAuB,EAAvBA,wBACxC,EAAwBzvB,YAAe,GAAM,mBAAtC2B,EAAI,KAAEsc,EAAO,KAGpB,EAAsCje,WAAe,IAAG,mBAAjDuuB,EAAW,KAAEC,EAAc,KAClC,EAAoDxuB,WAAe,IAAG,mBAA/DyuB,EAAkB,KAAEC,EAAqB,KAChD,EAAgD1uB,WAAe,IAAG,mBAAzC4vB,GAAF,KAAqB,MAC5C,EAAgD5vB,WAAe,IAAG,mBAAzC6vB,GAAF,KAAqB,MAC5C,EAA8C7vB,WAAe,IAAG,mBAAxC8vB,GAAF,KAAoB,MAC1C,EAAkD9vB,WAAe,IAAG,mBAA7DiuB,EAAiB,KAAE8B,EAAoB,KAC9C,EAAsD/vB,WAAe,GAAE,mBAA3CgwB,GAAF,KAAwB,MAGlD,EAAoDhwB,WAAqC,IAAG,mBAAjEiwB,GAAF,KAAuB,MAChD,EAAgDjwB,WAAkC,IAAG,mBAA9EkwB,EAAgB,KAAEC,EAAmB,KAC5C,EAAkDnwB,WAA6B,IAAG,mBAA3EowB,EAAiB,KAAEC,EAAoB,KAC9C,EAAgCrwB,WAA2B,IAAG,mBAIxDswB,GAJS,KAAa,KAIT,uBAAmBb,IAChCc,EAAgB,kCAA+Bd,GAC/Ce,EAAwB,mCAA+Bf,GACvDgB,GAAsB,2CAAuChB,GACH,SAEjDiB,KAAY,8CAQ1B,OAR0B,0BAA3B,uGACyB/H,MAAM2H,GAAe,KAAD,EAA7B,KAAR5zB,EAAQ,QACFi0B,GAAG,CAAD,+BAEUj0B,EAASksB,OAAO,KAAD,EAAxB,OAAPgI,EAAO,yBACNA,EAAQ,IAAE,gCAEZ,IAAE,4CACV,+BAEcC,KAAuB,8CAQrC,OARqC,0BAAtC,uGACyBlI,MAAM6H,GAA0B,KAAD,EAAxC,KAAR9zB,EAAQ,QACFi0B,GAAG,CAAD,+BAEqBj0B,EAASksB,OAAO,KAAD,EAAxB,OAAlBkI,EAAkB,yBACjBA,GAAkB,gCAEpB,IAAE,4CACV,+BAEcC,KAAqB,8CAQnC,OARmC,0BAApC,uGACyBpI,MAAM8H,IAAwB,KAAD,EAAtC,KAAR/zB,EAAQ,QACFi0B,GAAG,CAAD,+BAEmBj0B,EAASksB,OAAO,KAAD,EAAxB,OAAhBsH,EAAgB,yBACfA,EAAiBzP,MAAK,SAACC,EAAGC,GAAC,OAAKA,EAAEzM,YAAY8c,cAAgBtQ,EAAExM,YAAY8c,kBAAc,gCAE5F,IAAE,4CACV,+BAEcC,KAAsB,8CAQpC,OARoC,0BAArC,uGACyBtI,MAAM4H,GAAkB,KAAD,EAAhC,KAAR7zB,EAAQ,QACFi0B,GAAG,CAAD,+BAEqBj0B,EAASksB,OAAO,KAAD,EAAxB,OAAlBkI,EAAkB,yBACjBA,GAAkB,gCAEpB,IAAE,4CACV,sBAED,IAKMI,GAAU,wCAAG,2GACQR,KAAe,KAAD,EAAvB,OAAVS,EAAU,gBACYF,KAAyB,KAAD,EAAjC,OAAbG,EAAa,gBACiBP,KAA0B,KAAD,EAAlC,OAArBQ,EAAqB,iBACON,KAAwB,KAAD,GAAnDO,EAAmB,OAGP,OAAfH,IACD3C,EAAe2C,EAAWhqB,MAC1BunB,EAAsByC,EAAWvyB,aACjCkxB,EAAmBqB,EAAW9H,iBAC9BuG,EAAoBuB,EAAW7H,WAC/BuG,EAAoBsB,EAAW5H,WAC/ByG,EAAuBmB,EAAW/H,cAClC2G,EAAqBoB,EAAWI,yBAIb,OAAlBH,GAAwBf,EAAqBe,GACpB,MAAzBC,GAA+BpB,EAAsBoB,GAC9B,MAAvBC,GAA6BnB,EAAoBmB,GAGpDrT,GAAQ,GAAM,4CACf,kBAxBe,mCAiChB,OACE,2BACE,gBAAC,GAAa,CAAChc,GAAI,CAAE+a,YAAa,GAAK1W,KAAK,SAASrC,QAASitB,IAAW,QAGzE,gBAAC,GAAK,CACJzE,kBAAgB,uBAChBC,mBAAiB,6BACjB/qB,KAAMA,EACNC,QAhBc,WAAH,OAASqc,GAAQ,IAiB5B0O,MAAO,CAAEC,SAAUd,KAEnB,gBAAC,GAAY,CAAC7pB,GAAI,CAAEC,MAAO,IAAKorB,SAAU,OAAQvQ,UAAW,SAC3D,sBAAI3f,GAAG,uBAAuBiG,UAAU,eAAekrB,GACvD,qBAAGnxB,GAAG,6BAA6BiG,UAAU,qBAAqBorB,GAClE,qBAAGrxB,GAAG,6BAA6BiG,UAAU,oBAAoB6X,MAAO,CAACQ,UAAW,SAAS,0CAAqBuS,GAElH,yBAAG,yCACmB,OAArBiC,GACD,gBAACtP,GAAA,EAAc,CAAC3e,GAAI,CAACoZ,UAAW,MACjC,gBAAClZ,EAAA,EAAK,CAACD,MAAM,OAAOmB,UAAU,yBACzB,gBAACf,EAAA,EAAS,KACR,gBAACC,EAAA,EAAQ,KACP,gBAACC,EAAA,EAAS,CAAC0Y,MAAO,CAAEhZ,MAAO,QAAS0D,SAAU,SAAUqE,IAAK,EAAG+iB,OAAQ,EAAGtS,WAAY,eAAgB,qCACvG,gBAAClY,EAAA,EAAS,CAAC0Y,MAAO,CAAEhZ,MAAO,QAAS0D,SAAU,SAAUqE,IAAK,EAAG+iB,OAAQ,EAAGtS,WAAY,eAAgB,sCAG/G,gBAACzX,EAAA,EAAS,KACRitB,EAAiB3sB,KAAI,SAACmiB,EAAMtoB,GAAE,OACxB,gBAACmF,EAAA,EAAQ,CAACkI,IAAG,qCAAgCrN,IAC3C,gBAACoF,EAAA,EAAS,CAAC0Y,MAAO,CAAEhZ,MAAO,UACxBwjB,EAAKxR,aAER,gBAAC1R,EAAA,EAAS,CAAC0Y,MAAO,CAAEhZ,MAAO,UACxBwjB,EAAK6J,eASlB,yBAAG,yCACkB,OAAtBa,GACC,gBAACxP,GAAA,EAAc,CAAC3e,GAAI,CAACoZ,UAAW,MACjC,gBAAClZ,EAAA,EAAK,CAACD,MAAM,OAAOmB,UAAU,0BACzB,gBAACf,EAAA,EAAS,KACR,gBAACC,EAAA,EAAQ,CAAC2Y,MAAO,CAACR,WAAY,eAC5B,gBAAClY,EAAA,EAAS,CAAC0Y,MAAO,CAAEhZ,MAAO,UAAU,qCACrC,gBAACM,EAAA,EAAS,CAAC0Y,MAAO,CAAEhZ,MAAO,UAAU,uCAG7C,gBAACe,EAAA,EAAS,KACRmtB,EAAkB7sB,KAAI,SAACmiB,EAAM2D,GAAe,OACtC,gBAAC9mB,EAAA,EAAQ,CAACkI,IAAG,sCAAiC4e,IAC5C,gBAAC7mB,EAAA,EAAS,CAAC0Y,MAAO,CAAEhZ,MAAO,UA9FvB,SAACuS,EAAWyb,GAChC,IAAM3b,EAAU2b,EAAiBrsB,QAAO,SAAA6Q,GAAC,OAAIA,EAAEtX,KAAOqX,KACtD,OAAOF,EAAQzR,OAAS,EAAIyR,EAAQ,GAAGL,YAAc,0BA6FlCsd,CAAc9L,EAAKjR,UAAWyb,IAEjC,gBAAC1tB,EAAA,EAAS,CAAC0Y,MAAO,CAAEhZ,MAAO,UACvB,IAAI8K,KAAK0Y,EAAK+L,gBAAiBC,sBAW7C,gBAAC,GAAa,CAACprB,KAAK,SAASrC,QA5EZ,WAEvBga,GAAQ,KA0EqD,SASjE,I,MAAMuN,GAAWxrB,cAGf,SAACD,EAAO4Z,GACR,IAAQhY,EAA8B5B,EAA9B4B,KAAM0B,EAAwBtD,EAAxBsD,UAAcooB,EAAK,aAAK1rB,EAAK,IAC3C,OACE,qCACEsD,UAAWqoB,aAAK,CAAE,qBAAsB/pB,GAAQ0B,GAChDsW,IAAKA,GACD8R,OAcJE,GACA,UADAA,GAGC,UAHDA,GAKC,UALDA,GAQC,UARDA,GASC,UATDA,GAUC,UAGDC,GAAQxR,aAAOyR,KAAPzR,CAAiB,wJASzB0R,GAAiB1R,aAAOoR,GAAPpR,CAAgB,oKAQjC2R,GAAe3R,aAAO,MAAPA,EACnB,gBAAG4R,EAAK,EAALA,MAAK,OAAOC,aAAG,8oBAS2B,SAAvBD,EAAME,QAAQC,KAAkBR,GAAY,OAErB,SAAvBK,EAAME,QAAQC,KAAkBR,GAAYA,GAErC,SAAvBK,EAAME,QAAQC,KAAkB,mBAAqB,mBAEzB,SAAvBH,EAAME,QAAQC,KAAkBR,GAAWA,GAYlB,SAAvBK,EAAME,QAAQC,KAAkBR,GAAYA,OAMrDxR,GAAgBC,aAAO,SAAPA,CAAiB,CACrCzX,WAAY,4BACZkN,WAAY,IACZ3N,MAAO,IACPoY,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QAEP,UAAW,CACT4K,UAAW,qC,sCCrSf,gIAAAhf,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAUe,SAAS+1B,GAAmB,GAA4B,IAA3BlC,EAAuB,EAAvBA,wBAC1C,EAAwBzvB,YAAe,GAAM,mBAAtC2B,EAAI,KAAEsc,EAAO,KACpB,EAA8Dje,YAAe,GAAM,mBAA5E4xB,EAAuB,KAAEC,EAA0B,KAG1D,EAAsC7xB,WAAe,IAAG,mBAAjDuuB,EAAW,KAAEC,EAAc,KAClC,EAAoDxuB,WAAe,IAAG,mBAA/DyuB,EAAkB,KAAEC,EAAqB,KAChD,EAAoC1uB,WAAe,GAAE,mBAA9C2uB,EAAU,KAAEtB,EAAa,KAChC,EAA8CrtB,WAAkC,IAAG,mBAA5E4qB,EAAe,KAAEO,EAAkB,KAG1C,EAAgDnrB,WAAe,IAAG,mBAAzC4vB,GAAF,KAAqB,MAC5C,EAAgD5vB,WAAe,IAAG,mBAAzC6vB,GAAF,KAAqB,MAC5C,EAA8C7vB,WAAe,IAAG,mBAAzDqpB,EAAe,KAAEyG,EAAkB,KAC1C,EAAkD9vB,WAAe,IAAG,mBAA7DiuB,EAAiB,KAAE8B,EAAoB,KAC9C,EAAsD/vB,WAAe,GAAE,mBAA3CgwB,GAAF,KAAwB,MAGlD,EAAoDhwB,WAAqC,IAAG,mBAAjEiwB,IAAF,KAAuB,MAChD,GAAgDjwB,WAAkC,IAAG,qBAA9EkwB,GAAgB,MAAEC,GAAmB,MAC5C,GAAkDnwB,WAA6B,IAAG,qBAAxDqwB,IAAF,MAAsB,OAC9C,GAAgCrwB,WAA2B,IAAG,qBAC9D,IADe,MAAa,MACsBA,WAAe,KAAG,qBAA7D8xB,GAAiB,MAAEC,GAAoB,MAIvCzB,GAAa,uBAAmBb,GAChCc,GAAgB,kCAA+Bd,GAC/Ce,GAAwB,mCAA+Bf,GACvDgB,GAAsB,2CAAuChB,GAgBpD,SAEDiB,KAAY,8CAQ1B,OAR0B,0BAA3B,uGACyB/H,MAAM2H,IAAe,KAAD,EAA7B,KAAR5zB,EAAQ,QACFi0B,GAAG,CAAD,+BAEUj0B,EAASksB,OAAO,KAAD,EAAxB,OAAPgI,EAAO,yBACNA,EAAQ,IAAE,gCAEZ,IAAE,4CACV,+BAEcC,KAAuB,8CAQrC,OARqC,0BAAtC,uGACyBlI,MAAM6H,IAA0B,KAAD,EAAxC,KAAR9zB,EAAQ,QACFi0B,GAAG,CAAD,+BAEqBj0B,EAASksB,OAAO,KAAD,EAAxB,OAAlBkI,EAAkB,yBACjBA,GAAkB,gCAEpB,IAAE,4CACV,+BAEcC,KAAqB,8CAQlC,OARkC,0BAApC,uGACyBpI,MAAM8H,IAAwB,KAAD,EAAtC,KAAR/zB,EAAQ,QACFi0B,GAAG,CAAD,+BAEmBj0B,EAASksB,OAAO,KAAD,EAAxB,OAAhBsH,EAAgB,yBACfA,EAAiBzP,MAAK,SAACC,EAAGC,GAAC,OAAKA,EAAEzM,YAAY8c,cAAgBtQ,EAAExM,YAAY8c,kBAAc,gCAE3F,IAAE,4CACV,+BAEaC,KAAsB,8CAQpC,OARoC,0BAArC,uGACyBtI,MAAM4H,IAAkB,KAAD,EAAhC,KAAR7zB,EAAQ,QACFi0B,GAAG,CAAD,+BAEqBj0B,EAASksB,OAAO,KAAD,EAAxB,OAAlBkI,EAAkB,yBACjBA,GAAkB,gCAEpB,IAAE,4CACV,sBA7CD9wB,aAAgB,WACd2oB,MAAM,GAAD,OAXyB,uCAWC,YAAIgG,IACjCnS,MAAK,SAAC9f,GAAQ,OAAKA,EAASkN,UAC5B4S,MAAK,SAACzf,GAAI,OAAKgzB,EAAqBhzB,MACpCyR,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,uBAAwBA,QACzD,CAACkuB,IA4CH,IAAMuC,GAAU,wCAAG,2GACMR,KAAe,KAAD,EAAvB,OAAVS,EAAU,gBACYF,KAAyB,KAAD,EAAjC,OAAbG,EAAa,gBACiBP,KAA0B,KAAD,EAAlC,OAArBQ,EAAqB,iBACON,KAAwB,KAAD,GAAnDO,EAAmB,OAGN,OAAfH,GACD3C,EAAe2C,EAAWhqB,MAC1BunB,EAAsByC,EAAWvyB,aACjCkxB,EAAmBqB,EAAW9H,iBAC9BuG,EAAoBuB,EAAW7H,WAC/BuG,EAAoBsB,EAAW5H,WAC/ByG,EAAuBmB,EAAW/H,cAClC2G,EAAqBoB,EAAWI,wBAChClE,EAAc8D,EAAW/H,cAEzB5oB,QAAQkH,IAAIypB,IAGb3wB,QAAQkH,IAAI,sBAIQ,OAAlB0pB,GAAwBf,GAAqBe,GACpB,MAAzBC,IACFpB,GAAsBoB,GACtB7wB,QAAQkH,IAAI,2CACZlH,QAAQkH,IAAI2pB,IAEa,MAAvBC,IACFnB,GAAoBmB,GACpBnG,EAAmBmG,GACnB9wB,QAAQkH,IAAI,qCACZlH,QAAQkH,IAAI4pB,IAEZrT,GAAQ,GAAM,4CACf,kBArCe,mCAwCV+T,GAAY,wCAAG,qFAE0G,MAAvHC,EAAmB/B,GAAiBrsB,QAAO,SAAAquB,GAAK,OAAKtH,EAAgB5I,MAAK,SAAAmQ,GAAW,OAAIA,EAAY/0B,KAAO80B,EAAM90B,UAEnG0F,OAAS,GAAC,gBAEI,OADjCivB,GAAqBE,EAAiB1uB,KAAI,SAAA2uB,GAAK,OAAIA,EAAMhe,gBACzD2d,GAA2B,GAAM,0BAGV,OAAzBE,GAAqB,IAAI,SACnBK,KAAsB,KAAD,sCAC5B,kBAXiB,mCA6BlB,IAAMC,GACF,gBAAC,GAAK,CACF5F,kBAAgB,uBAChBC,mBAAiB,6BACjB/qB,KAAMiwB,EACNhwB,QAAS0wB,GACT3F,MAAO,CAAEC,SAAUd,KAErB,gBAAC,GAAY,CAAC7pB,GAAI,CAAEC,MAAO,MACzB,sBAAI9E,GAAG,uBAAuBiG,UAAU,eAAa,+BAGrD,qBAAGjG,GAAG,6BAA6BiG,UAAU,qBAAmB,uEACOyuB,GAAkBS,KAAK,MAAK,IACjG,oKAGF,sBAAIn1B,GAAG,gCAAgCiG,UAAU,oBAAoB6X,MAAO,CAAChY,QAAS,WAAY8M,MAAO,YACvG,kDAEF,2BACE,gBAAC,GAAa,CAAC1J,KAAK,SAAS4U,MAAO,CAAChZ,MAAO,IAAK0N,WAAY,MAAOoN,YAAa,OAAQ8L,gBAAiB,UAAWnO,OAAQ,qBAAsB1W,QAASmuB,IAAoB,MAChL,gBAAC,GAAa,CAAC9rB,KAAK,SAAS4U,MAAO,CAAChZ,MAAO,IAAK4mB,gBAAiB,OAAQnO,OAAQ,kBAAmB1W,QAASquB,IAA4B,aAGxI,SAEGF,KAAmB,8CAsCjC,OAtCiC,0BAAlC,2FA+BG,OA9BGlmB,EAAW,IAAIzN,SAGhBmsB,EAAgB9nB,OAAQ,GAEnBmsB,EAAiBrE,EAAgBsE,QAAO,SAACC,EAAKC,GAElD,OADAD,EAAIvrB,KAAKwrB,EAAIhyB,IACN+xB,IACN,IACCE,EAAqBjoB,KAAKC,UAAU4nB,GACxCzuB,QAAQkH,IAAI2nB,GACZnjB,EAASxZ,OAAO,cAAe28B,GAC/B7uB,QAAQkH,IAAI,uBACZlH,QAAQkH,IAAI2nB,KAKZnjB,EAASxZ,OAAO,cAAe,MAC/B8N,QAAQkH,IAAI,oBAGdwE,EAASxZ,OAAO,kBAAmB22B,GACnCnd,EAASxZ,OAAO,OAAQ67B,GACxBriB,EAASxZ,OAAO,cAAe+7B,GAC/BviB,EAASxZ,OAAO,eAAgBi8B,EAAWh8B,YAErC28B,EAAiB,CACrBvzB,OAAQ,QACRoF,KAAM+K,GACN,EAAD,OAEKyc,MAjMkB,eAiMM2G,GACzB9S,MAAK,SAAA9f,GAAQ,OAAIA,EAASksB,UAC1Bpa,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,4BAA6BA,MAAQ,KAAD,EAExEgF,OAAOC,SAAS2L,QAAQrf,EAAQgU,+BAA+B,6CAChE,sBAED,SAASssB,KACLT,GAA2B,GAG/B,OACE,2BACE,gBAAC,GAAa,CAAC5vB,GAAI,CAAE+a,YAAa,GAAK1W,KAAK,SAASrC,QAASitB,IAAW,UAGzE,gBAAC,GAAK,CACJzE,kBAAgB,qBAChBC,mBAAiB,2BACjB/qB,KAAMA,EACNC,QA/Gc,WAAH,OAASqc,GAAQ,IAgH5B0O,MAAO,CAAEC,SAAUd,KAEnB,gBAAC,GAAY,CAAC7pB,GAAI,CAAEC,MAAO,IAAKgB,QAAQ,OAAQoqB,SAAU,OAAQvQ,UAAW,SAC3E,sBAAI3f,GAAG,uBAAuBiG,UAAU,eAAa,aAAYkrB,GACjE,qBAAGnxB,GAAG,6BAA6BiG,UAAU,qBAAqBorB,GAClE,qBAAGrxB,GAAG,6BAA6BiG,UAAU,qBAAoB,0CAAqB4qB,GACtF,gBAACD,GAAe,CAACX,cAAeA,EAAeY,kBAAmBA,IAElE,yBAAG,yCACH,gBAAC,GAAkB,CAAC5E,gBAAiBoG,EAAyB7E,gBAAiBA,EAAiBO,mBAAoBA,IAC/F,OAApBP,GACD,gBAAChK,GAAA,EAAc,CAAC3e,GAAI,CAAEyZ,UAAW,OAAQL,UAAW,MACrD,gBAAClZ,EAAA,EAAK,CAACD,MAAM,OAAOmB,UAAU,yBACzB,gBAACf,EAAA,EAAS,CAAC4Y,MAAO,CAACR,WAAY,eAC7B,gBAACnY,EAAA,EAAQ,KACP,gBAACC,EAAA,EAAS,CAACN,MAAM,SAAQ,qCACzB,gBAACM,EAAA,EAAS,CAACN,MAAM,QAAO,sCAGhC,gBAACe,EAAA,EAAS,KACR2nB,EAAgBrnB,KAAI,SAACmiB,EAAMtoB,GAAE,OACvB,gBAACmF,EAAA,EAAQ,CAACkI,IAAG,qCAAgCrN,IAC3C,gBAACoF,EAAA,EAAS,CAACN,MAAM,SACdwjB,EAAKxR,aAER,gBAAC1R,EAAA,EAAS,CAACN,MAAM,QACdwjB,EAAK6J,eASlB,uBAAKrU,MAAO,CAACQ,UAAW,SACtB,gBAAC,GAAa,CAACpV,KAAK,SAASrC,QAAS+tB,IAAa,QAGnD,gBAAC,GAAa,CAAC1rB,KAAK,SAAS4U,MAAO,CAAC4N,gBAAiB,OAAQnO,OAAQ,kBAAmB1W,QAxI1E,WAEvBopB,EAAc,GACdlC,EAAmB,IACnB4G,GAAqB,IACrB9T,GAAQ,KAmImH,aAMxHoU,IAKP,I,YAAM7G,GAAWxrB,cAGf,SAACD,EAAO4Z,GACR,IAAQhY,EAA8B5B,EAA9B4B,KAAM0B,EAAwBtD,EAAxBsD,UAAcooB,EAAK,aAAK1rB,EAAK,IAC3C,OACE,qCACEsD,UAAWqoB,aAAK,CAAE,qBAAsB/pB,GAAQ0B,GAChDsW,IAAKA,GACD8R,OAKJG,GAAQxR,aAAOyR,KAAPzR,CAAiB,wJASzB0R,GAAiB1R,aAAOoR,GAAPpR,CAAgB,oKAQjC2R,GAAe3R,aAAO,MAAPA,CAAc,CACjCzX,WAAY,4BACZkN,WAAY,IACZsL,UAAW,QACXvV,SAAU,WACVxC,QAAS,OACTyC,cAAe,SACfuV,IAAK,MACLkS,SAAU,SACVxE,gBAAiB,OACjBuF,aAAc,MACd1T,OAAQ,iBACRC,UAAW,8BACX1X,QAAS,OACT8M,MAAO,OAEP,iBAAkB,CAChBqK,OAAQ,EACRE,WAAY,SACZ+C,aAAc,OAGhB,uBAAwB,CACtBjD,OAAQ,EACRE,WAAY,SACZ1K,WAAY,IACZG,MAAO,OACPsN,aAAc,SAIZnD,GAAgBC,aAAO,SAAPA,CAAiB,CACrCzX,WAAY,4BACZkN,WAAY,IACZ3N,MAAO,IACPoY,SAAU,WACVC,WAAY,IACZrX,QAAS,WACT8Z,YAAa,OACbxC,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QAEP,UAAW,CACT4K,UAAW,qC,6CChWT4Q,GAAWxrB,cAGf,SAACD,EAAO4Z,GACR,IAAQhY,EAA8B5B,EAA9B4B,KAAM0B,EAAwBtD,EAAxBsD,UAAcooB,EAAK,aAAK1rB,EAAK,IAC3C,OACE,qCACEsD,UAAWqoB,aAAK,CAAE,qBAAsB/pB,GAAQ0B,GAChDsW,IAAKA,GACD8R,OAKJK,GAAiB1R,aAAOoR,GAAPpR,CAAgB,oKAQjC2R,GAAe3R,aAAO,MAAPA,CAAc,CACjCzX,WAAY,4BACZkN,WAAY,IACZsL,UAAW,QACXvV,SAAU,WACVxC,QAAS,OACTyC,cAAe,SACf3C,QAAS,OACTkY,IAAK,MACLkS,SAAU,SACVxE,gBAAiB,OACjBuF,aAAc,MACd1T,OAAO,kBACPC,UAAW,8BACX5K,MAAO,QAEP,iBAAkB,CAChBqK,OAAQ,EACRE,WAAY,SACZ+C,aAAc,OAGhB,uBAAwB,CACtBjD,OAAQ,EACRE,WAAY,SACZ1K,WAAY,IACZG,MAAO,UACPsN,aAAc,OAGjB,UAAW,CACVkV,QAAS,UAIL5G,GAAQxR,aAAOyR,KAAPzR,CAAiB,yKAUzBD,GAAgBC,aAAO,SAAPA,CAAiB,CACtCzX,WAAY,4BACZkN,WAAY,IACZ3N,MAAO,IACP8a,YAAa,OACb1C,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QACPqK,OAAQ,OAER,UAAW,CACVO,UAAW,qCA6FE1W,eAAQ,MATI,SAACiE,GAC3B,OAAOC,aAAmB,eAErB2B,IAEJ5B,KAIajE,EAzF8E,SAAH,GAAmB,EAAbwF,cAAsB,IACrH,EAAgC1J,WAAqC,IAAG,mBACxE,GADe,KAAa,KACIA,YAAe,IAAM,mBAA9CyyB,EAAQ,KAAEC,EAAW,KAG5B,EAAgD1yB,WAAe,GAAE,mBACjE,GADuB,KAAqB,KACMA,WAAkC,KAAG,mBACvF,GADwB,KAAsB,KACAA,WAAe,KAAG,mBAAzDoqB,EAAe,KAAE7B,EAAkB,KASpCoK,EAAkB,WAAH,OAASD,GAAY,IAE1C,OACC,gBAAC1wB,EAAA,EAAG,CAACqB,UAAU,mCAAmCD,QAAQ,OAAOyC,cAAc,UAC/E,gBAAC7D,EAAA,EAAG,KACH,gBAACS,EAAA,EAAU,CACVC,QAAQ,KACR2M,UAAU,MACVhM,UAAU,+BACVV,WAAW,WAEVlP,EAAM6G,sBAAsB/E,UAC7B,gBAAC,KAAQ,CAAC2lB,MAAO,CAAC0X,MAAO,QAAS5iB,MAAO,UAAWqQ,WAAY,MAAO5F,OAAQ,WAAYxW,QAbvE,WAAOyuB,GAAY,KAa4E,SAIpH,gBAAC1wB,EAAA,EAAG,CACHqB,UAAU,mCACTD,QAAQ,OACRyC,cAAc,UAEf,gBAAC7D,EAAA,EAAG,CACHqB,UAAU,mCACVD,QAAQ,OACRyC,cAAc,MACd5D,GAAI,CAACqb,aAAc,SAEd,gBAACgR,GAAe,MACA,KAApBlE,GAA0B,gBAACuF,GAAgB,CAACF,wBAAyBrF,IACjD,KAApBA,GAA0B,gBAACuH,GAAkB,CAAClC,wBAAyBrF,IACnD,KAApBA,GAA0B,gBAACoF,GAAkB,CAACC,wBAAyBrF,KAEzE,gBAAC9B,GAAW,CAACC,mBAAoBA,MAGlC,gBAAC,GAAK,CACL5mB,KAAM8wB,EACN7wB,QAAS+wB,EACThG,MAAO,CAAEC,SAAUd,IACnB7pB,GAAI,CAAEC,MAAO,MAEb,gBAAC,GAAY,KACZ,uBAAKmB,UAAU,qBACd,sBAAI6X,MAAO,CAACC,UAAW,WAAU,+BACjC,sHAA6F,qDAA+B,KAC5H,sFAA6D,mCAAa,qEAEvE,+bAE+F,wCAAkB,WACpH,4GAA8E,6CAAuB,uSAGnF,uJAA8H,+DAAyC,uOAI1L,gBAAC,GAAa,CAAClX,QAAS0uB,GAAgB,eCtK9Br4B,I,QAXgE,SAACyF,GAE/E,OACC,gBAACiC,EAAA,EAAG,CAACqB,UAAU,yBAAyBD,QAAQ,OAAOyC,cAAc,UACpE,gBAACyD,GAAA,EAAS,KACT,gBAAC,GAA0B,U,QCOhB,SAAShW,GAAW,GAClC,IADqCi1B,EAAkB,EAAlBA,mBAAoBsK,EAAW,EAAXA,YAElD/2B,EAAO,wBACb,EAA8BkE,WAAe,IAAG,mBAAzCkH,EAAO,KACd,GAD0B,KACFshB,mBAAqB,KAAG,mBAAzCzrB,EAAI,KAAE0rB,EAAO,KAkFpB,OAPAC,qBAAU,WACRC,MAAM7sB,EAAS+2B,GACZrW,MAAK,SAAC9f,GAAQ,OAAKA,EAASksB,UAC5BpM,MAAK,SAACzf,GAAI,OAAK0rB,EAAS1rB,MACxByR,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,+BAAgCA,QACjE,CAAC3E,IAGF,gBAAC,KAAG,CAACmG,GAAI,CAAEmD,OAAQ,QAASlD,MAAO,SACjC,gBAACkI,GAAA,EAAK,CAACye,UAAU,MAAMxe,QAAS,GAC7BnD,GAAW,gBAACqD,GAAA,EAAK,CAACC,SAAS,QAAQtD,IAExC,gBAAC,KAAG,CAACjF,GAAI,CACLmD,OAAQ,QACRlD,MAAO,OACP,kBAAmB,CACf4mB,gBAAiB,cAErB,sCAAuC,CACnCA,gBAAiB,gBAGnB,gBAACC,GAAA,EAAQ,CACTC,aAAc,CACZC,QAAS,CACPC,sBAAuB,CACrB9rB,IAAI,EACJ+rB,gBAAgB,EAChBC,cAAc,EACdC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,KAIfC,KAAMzsB,EACNksB,QA5GkC,CACtC,CACIQ,MAAO,KACPC,WAAY,KACZxnB,MAAO,GACPynB,UAAU,GAEd,CACIF,MAAO,eACPC,WAAY,gBACZE,UAAU,EACVD,UAAU,GAEd,CACIF,MAAO,OACPC,WAAY,OACZG,gBAAiB,eACjB3nB,MAAO,IACPynB,UAAU,GAEd,CACIF,MAAO,cACPC,WAAY,cACZG,gBAAiB,eACjB3nB,MAAO,IACPynB,UAAU,GAEd,CACIF,MAAO,yBACPC,WAAY,cACZG,gBAAiB,eACjBD,UAAU,EACVlf,KAAM,EACNif,UAAU,GAGd,CACIF,MAAO,kBACPC,WAAY,aACZxnB,MAAO,IACPynB,UAAU,GAEd,CACIF,MAAO,iBACPC,WAAY,eACZE,UAAU,EAEVD,UAAU,GAGd,CACIF,MAAO,YACPC,WAAY,UACZE,UAAU,EACV1nB,MAAO,GACPynB,UAAU,GAEd,CACIF,MAAO,YACPC,WAAY,UACZE,UAAU,EAEVD,UAAU,IA+CVG,mBAAmB,EACnBC,6BAA6B,EAC7BC,cAAY,EACZC,0BA9CsB,SAACC,GAC3B,IAAMC,EAAcptB,EAAK8G,QAAO,SAACmc,GAAG,OAAKkK,EAAkB7Q,SAAS2G,EAAI5iB,OAClEgtB,EAAyC,IAAvBD,EAAYrnB,OAAeqnB,EAAY,GAAGd,gBAAkB,GACpFd,EAAmB6B,OA8CrB,gBAAChgB,GAAA,EAAK,CAACye,UAAU,MAAMxe,QAAS,K,0CC7ItC,gIAAAzO,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBASe,SAASk3B,GAAkB,GAAyC,IAAxCrD,EAAuB,EAAvBA,wBAAyBoD,EAAW,EAAXA,YAClE,EAAwB7yB,YAAe,GAAM,mBAAtC2B,EAAI,KAAEsc,EAAO,KACpB,EAA8Cje,YAAe,GAAM,mBAA5D+yB,EAAe,KAAEC,EAAkB,KAC1C,EAAoChzB,WAAe,MAAK,mBAAjDizB,EAAU,KAAEC,EAAa,KAKhC,EAAsClzB,WAAe,IAAG,mBAAjDuuB,EAAW,KAAEC,EAAc,KAClC,EAAoDxuB,WAAe,IAAG,mBAA/DyuB,EAAkB,KAAEC,EAAqB,KAChD,EAAgD1uB,WAAe,IAAG,mBAClE,GADuB,KAAqB,KACIA,WAAe,KAAG,mBAClE,GADuB,KAAqB,KACEA,WAAe,KAAG,mBAAxC8vB,GAAF,KAAoB,MAC1C,EAAkD9vB,WAAe,IAAG,mBAA7DiuB,EAAiB,KAAE8B,EAAoB,KAC9C,EAAsD/vB,WAAe,GAAE,mBAA3CgwB,GAAF,KAAwB,MAClD,EAAkChwB,YAAe,GAAM,mBAAhDmzB,EAAS,KAAEC,EAAY,KAG9B,EAAkDpzB,WAA6B,IAAG,mBAA3EowB,EAAiB,KAAEC,EAAoB,KAKxCC,GAAa,uBAAmBb,GAChCc,GAAgB,oCAAiCd,GAEjD4D,GAAkB,oCAAgC5D,GAGlD6D,GAAe,CACnBxK,gBAAiB,UAAW9Y,MAAO,QAAS2K,OAAQ,oBAAqBzX,QAAS,MAClFuX,OAAQ,UACRG,UAAWuY,EAAY,kCAAoC,OAC3D3Y,WAAY,wBACZ,SAEakW,KAAY,8CAQ1B,OAR0B,0BAA3B,uGACyB/H,MAAM2H,IAAe,KAAD,EAA7B,KAAR5zB,EAAQ,QACFi0B,GAAG,CAAD,+BAEUj0B,EAASksB,OAAO,KAAD,EAAxB,OAAPgI,EAAO,yBACNA,EAAQ,IAAE,gCAEZ,IAAE,4CACV,+BAEcK,KAAsB,8CAIpC,OAJoC,0BAArC,qGACyBtI,MAAM4H,IAAkB,KAAD,EAAhC,KAAR7zB,EAAQ,QACFi0B,GAAG,CAAD,+BAAej0B,EAASksB,OAAO,KAAD,mEACrC,IAAE,4CACV,+BAEc2K,KAAuB,8CAGrC,OAHqC,0BAAtC,qGAC8BtC,KAAyB,KAAD,EAC/B,QADfG,EAAa,SACQf,EAAqBe,GAAe,4CAChE,sBAED,IAAMF,GAAU,wCAAG,uGACQR,KAAe,KAAD,EAAvB,OAAVS,EAAU,gBACYF,KAAyB,KAAD,EAC/B,QADfG,EAAa,SACQf,EAAqBe,GAC9B,OAAfD,IACD3C,EAAe2C,EAAWhqB,MAC1BunB,EAAsByC,EAAWvyB,aACjCkxB,EAAmBqB,EAAW9H,iBAC9B0G,EAAqBoB,EAAWI,wBAChCvB,EAAuBmB,EAAWqC,sBAEpCvV,GAAQ,GAAM,2CACf,kBAZe,mCAcV1c,GAAc,WAAH,OAAS0c,GAAQ,IAGH,cAa9B,OAb8B,0BAA/B,WAAgCjb,GAAsD,0EAQnF,OAPGkJ,EAAW,IAAIzN,UACV/L,OAAO,YAAamgC,GAC7B3mB,EAASxZ,OAAO,kBAAmB+8B,GAE7BH,EAAiB,CACrBvzB,OAAQ,OACRoF,KAAM+K,GACN,EAAD,OAEKyc,MA3DgB,4BA2DO2G,GAC1B9gB,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,2BAA4BA,MAAQ,KAAD,EACnE8yB,KAA0B,4CAC7B,sBAG6B,cAI7B,OAJ6B,0BAA9B,WAA+BE,GAAU,kEAErB,OADlBT,GAAmB,GACnBE,EAAcO,GAAI,+DAEnB,sBAEiC,cAWjC,OAXiC,0BAAlC,uFAKG,OAJDT,GAAmB,GACfU,EAAS,UAAML,GAAkB,YAAIJ,GACnC3D,EAAiB,CACrBvzB,OAAQ,UACR,EAAD,OACK4sB,MAAM+K,EAAWpE,GACpB9gB,OAAM,SAAC/N,GAAK,OAAKD,QAAQC,MAAM,4BAA6BA,MAAQ,KAAD,EAElD,OADpB8yB,KACAL,EAAc,MAAM,+DAErB,sBAED,IAAMzV,GAAa,SAACza,GAClB,IACM2wB,EADY3wB,EAAMgC,cAAc4uB,QAAQ,MACjBC,YAAYC,OACzCpW,UAAUC,UAAUC,UAAU+V,IAQ1BI,GACF,gBAAC,GAAK,CACFtH,kBAAgB,uBAChBC,mBAAiB,6BACjB/qB,KAAMoxB,EACNnxB,QAASL,GACTorB,MAAO,CAAEC,SAAUd,KAErB,gBAAC,GAAY,CAAC7pB,GAAI,CAAEC,MAAO,MACzB,sBAAI9E,GAAG,uBAAuBiG,UAAU,eAAa,qBAGrD,qBAAGjG,GAAG,6BAA6BiG,UAAU,qBAAmB,qIAGhE,sBAAIjG,GAAG,gCAAgCiG,UAAU,oBAAoB6X,MAAO,CAAChY,QAAS,WAAY8M,MAAO,YACvG,kDAEF,2BACE,gBAAC,GAAa,CAAC1J,KAAK,SAAS4U,MAAO,CAAChZ,MAAO,IAAK0N,WAAY,MAAOoN,YAAa,OAAQ8L,gBAAiB,UAAWnO,OAAQ,qBAAsB1W,QA7C5J,WAEiC,kCA2CwJ,MAChL,gBAAC,GAAa,CAACqC,KAAK,SAAS4U,MAAO,CAAChZ,MAAO,IAAK4mB,gBAAiB,OAAQnO,OAAQ,kBAAmB1W,QAzBrF,WACxBivB,EAAc,MACdF,GAAmB,KAuBqH,aAK1I,OACE,2BACE,gBAAC,GAAa,CAAC1sB,KAAK,SAASrE,GAAI,CAAC2N,WAAY,OAAQ3L,QAASitB,IAAW,8BAG1E,gBAAC,GAAK,CACJzE,kBAAgB,uBAChBC,mBAAiB,6BACjB/qB,KAAMA,EACNC,QAASL,GACTorB,MAAO,CAAEC,SAAUd,KAEnB,gBAAC,GAAY,CAAC7pB,GAAI,CAAEC,MAAO,KAAMorB,SAAU,OAAQvQ,UAAW,SAC5D,sBAAI3f,GAAG,uBAAuBiG,UAAU,eAAekrB,GACvD,qBAAGnxB,GAAG,6BAA6BiG,UAAU,qBAAqBorB,GAChE,gBAAChsB,EAAA,EAAU,KACX,0CAAqBwrB,GAEvB,yBAAG,yCACkB,OAAtBmC,GACD,gBAACxP,GAAA,EAAc,CAAC3e,GAAI,CAACoZ,UAAW,MACrC,gBAAClZ,EAAA,EAAK,CAACD,MAAM,OAAOmB,UAAU,0BACjB,gBAACf,EAAA,EAAS,CAACL,GAAI,CAAC6mB,gBAAiB,eAC7B,gBAACvmB,EAAA,EAAQ,KACL,gBAACC,EAAA,EAAS,MACV,gBAACA,EAAA,EAAS,CAACN,MAAM,SAAQ,iDACzB,gBAACM,EAAA,EAAS,KAAC,wCACX,gBAACA,EAAA,EAAS,CAACN,MAAM,SAAQ,uCAG7C,gBAACe,EAAA,EAAS,KACTmtB,EAAkB7sB,KAAI,SAACmiB,EAAM+N,GAAE,OAChB,gBAAClxB,EAAA,EAAQ,CAACkI,IAAG,sCAAiCgpB,IAC1C,gBAACjxB,EAAA,EAAS,KAEV,0BAAQ0Y,MAAOoY,GACPrvB,QAAS,kBA9FtC,SAG8B,GAAD,gCA2Fe+vB,CAAgBtO,EAAKtoB,KACpC62B,aAAc,kBAAMb,GAAa,IACjCc,aAAc,kBAAMd,GAAa,KAAO,WAGhD,gBAAC5wB,EAAA,EAAS,KACLkjB,EAAK2D,gBACR,gBAAC7U,GAAA,EAAU,CAACnF,UAAU,OAAOpL,QAASwZ,IACpC,gBAAC,KAAe,CAACxb,GAAI,CAACqY,SAAU,YAGpC,gBAAC9X,EAAA,EAAS,KAAC,wBAAM0Y,MAAO,CAAEiZ,SAAU,aAAcjyB,MAAO,QAASkB,QAAS,UACtEsiB,EAAK0O,UACN,gBAAC5f,GAAA,EAAU,CAACnF,UAAU,OAAOpL,QAASwZ,IACpC,gBAAC,KAAe,CAACxb,GAAI,CAACqY,SAAU,aAItC,gBAAC9X,EAAA,EAAS,KACJ,IAAIwK,KAAK0Y,EAAK+L,gBAAiBC,sBAUnD,uBAAKxW,MAAO,CAACtL,WAAY,OAAQ8L,UAAW,SAC5C,gBAAC,GAAa,CAACpV,KAAK,SAASrC,QA3IZ,WAAH,OAASga,GAAQ,IA2IyBhc,GAAI,CAACC,MAAO,IAAKwY,WAAY,OAAQC,OAAQ,mBAAkB,UAGnHyV,EAAkBttB,OAjNL,GAiNkC,gBAAC,GAAa,CAACmB,QA9I5B,SAEd,GAAD,iCA4IsEqC,KAAK,SAASrE,GAAI,CAACC,MAAO,QAAS0N,WAAY,SAAQ,uCAIvJmkB,IAKP,I,MAAMvI,GAAWxrB,cAGf,SAACD,EAAO4Z,GACR,IAAQhY,EAA8B5B,EAA9B4B,KAAM0B,EAAwBtD,EAAxBsD,UAAcooB,EAAK,aAAK1rB,EAAK,IAC3C,OACE,qCACEsD,UAAWqoB,aAAK,CAAE,qBAAsB/pB,GAAQ0B,GAChDsW,IAAKA,GACD8R,OAKJG,GAAQxR,aAAOyR,KAAPzR,CAAiB,wJASzB0R,GAAiB1R,aAAOoR,GAAPpR,CAAgB,oKAQjC2R,GAAe3R,aAAO,MAAPA,CAAc,CACjCzX,WAAY,4BACZkN,WAAY,IACZsL,UAAW,QACXvV,SAAU,WACVxC,QAAS,OACTyC,cAAe,SACfuV,IAAK,MACLkS,SAAU,SACVxE,gBAAiB,OACjBuF,aAAc,MACd1T,OAAQ,iBACRC,UAAW,8BACX1X,QAAS,OACT8M,MAAO,OAEP,iBAAkB,CAChBqK,OAAQ,EACRE,WAAY,SACZ+C,aAAc,OAGhB,uBAAwB,CACtBjD,OAAQ,EACRE,WAAY,SACZ1K,WAAY,IACZG,MAAO,OACPsN,aAAc,SAIVnD,GAAgBC,aAAO,SAAPA,CAAiB,CACrCzX,WAAY,4BACZkN,WAAY,IACZD,WAAY,QACZ0K,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QAEP,UAAW,CACT4K,UAAW,qC,wBC9MF1W,gBAAQ,SAACC,GAAuB,OAAKA,EAAMC,eAV/B,SAAC+D,GAC3B,OAAOC,aAAmB,eAErB2B,IAEJ5B,KAKajE,EA7E0E,SAACnE,GACzF,MAAgCC,WAAqC,IAAG,mBAGxE,GAHe,KAAa,KAGkBA,WAAe,KAAG,mBAAzDoqB,EAAe,KAAE7B,EAAkB,KAC1C,EAA0CvoB,YAAe,GAAM,mBAAxDq0B,EAAa,KAAEC,EAAgB,KAElCC,EAAYx0B,EAAMsE,KAAKoQ,UAGrBke,EAAkB,WAAH,OAAS2B,GAAiB,IAE/C,OACC,gBAACtyB,EAAA,EAAG,CAACqB,UAAU,4BAA4BD,QAAQ,OAAOyC,cAAc,UACxE,gBAAC7D,EAAA,EAAG,KACH,gBAACS,EAAA,EAAU,CACVC,QAAQ,KACR2M,UAAU,MACVhM,UAAU,wBACVV,WAAW,WAEVlP,EAAM8G,eAAehF,UACtB,gBAAC,KAAQ,CAAC2lB,MAAO,CAAC0X,MAAO,QAAS5iB,MAAO,UAAWqQ,WAAY,MAAO5F,OAAQ,WAAYxW,QAbvE,WAAH,OAASqwB,GAAiB,KAawE,SAInH,gBAACtyB,EAAA,EAAG,CACHqB,UAAU,4BACVD,QAAQ,OACRyC,cAAc,UAEf,gBAAC7D,EAAA,EAAG,CACHqB,UAAU,4BACVD,QAAQ,OACRyC,cAAc,QAGf,gBAACvS,GAAU,CAACi1B,mBAAoBA,EAAoBsK,YAAa0B,IAC1C,KAApBnK,GAA0B,gBAAC0I,GAAiB,CAACrD,wBAAyBrF,EAAiByI,YAAa0B,MAIxG,gBAAC,GAAK,CACL5yB,KAAM0yB,EACNzyB,QAAS+wB,EACThG,MAAO,CAAEC,SAAUd,IACnB7pB,GAAI,CAAEC,MAAO,MAEb,gBAAC,GAAY,KACZ,uBAAKmB,UAAU,qBACd,sBAAI6X,MAAO,CAACC,UAAW,WAAU,+BACjC,kJAAyH,qDAA+B,sCAEvH,8CAAwB,iEACzD,4FAAmE,gDAA0B,wGAC7F,yEAA2C,uDAAiC,gNAEjC,6DAAuC,4BAAyB,8CAAwB,QAAK,uCAAiB,mDACzJ,8GAAgF,mCAAa,YAE9F,gBAAC,GAAa,CAAClX,QAAS0uB,GAAgB,eAmBvCnH,GAAWxrB,cAGf,SAACD,EAAO4Z,GACT,IAAQhY,EAA8B5B,EAA9B4B,KAAM0B,EAAwBtD,EAAxBsD,UAAcooB,EAAK,aAAK1rB,EAAK,IAC3C,OACC,qCACCsD,UAAWqoB,aAAK,CAAE,qBAAsB/pB,GAAQ0B,GAChDsW,IAAKA,GACD8R,OAKDK,GAAiB1R,aAAOoR,GAAPpR,CAAgB,oKAQjC2R,GAAe3R,aAAO,MAAPA,CAAc,CAClCzX,WAAY,4BACZkN,WAAY,IACZsL,UAAW,QACXvV,SAAU,WACVxC,QAAS,OACTyC,cAAe,SACf3C,QAAS,OACTkY,IAAK,MACLkS,SAAU,SACVxE,gBAAiB,OACjBuF,aAAc,MACd1T,OAAO,kBACPC,UAAW,8BACX5K,MAAO,QAEP,iBAAkB,CACjBqK,OAAQ,EACRE,WAAY,SACZ+C,aAAc,OAGf,uBAAwB,CACvBjD,OAAQ,EACRE,WAAY,SACZ1K,WAAY,IACZG,MAAO,UACPsN,aAAc,OAGf,UAAW,CACVkV,QAAS,UAIL5G,GAAQxR,aAAOyR,KAAPzR,CAAiB,yKAUzBD,GAAgBC,aAAO,SAAPA,CAAiB,CACtCzX,WAAY,4BACZkN,WAAY,IACZ3N,MAAO,IACP8a,YAAa,OACb1C,SAAU,WACVC,WAAY,IACZrX,QAAS,WACTsX,WAAY,iBACZC,OAAQ,UACRC,WAAY,UACZC,OAAQ,oBACR3K,MAAO,QACPqK,OAAQ,OAER,UAAW,CACVO,UAAW,qCCzKErgB,I,QAXkD,SAACwF,GAEjE,OACC,gBAACiC,EAAA,EAAG,CAACqB,UAAU,kBAAkBD,QAAQ,OAAOyC,cAAc,UAC9D,gBAACyD,GAAA,EAAS,KACT,gBAAC,GAAmB,U,cCZvB,gIAAA1N,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAQA,IA6Ce44B,GA7CW,WACtB,IAAM9uB,EAAW8R,cACXid,EAAe,IAAIpiC,gBAAgBqiC,mBAAmBhvB,EAASzI,SAC/DuB,EAAOi2B,EAAah4B,IAAI,QACxBmK,EAAW6tB,EAAah4B,IAAI,YAE1ByB,EAAWy2B,cAAXz2B,OACR,EAA0BsqB,mBAAwB,MAAK,mBAAhD/nB,EAAK,KAAEm0B,EAAQ,KAChBC,EAAW,CAACnZ,UAAW,QAAS9L,WAAY,QAC5Ckf,EAAY,CACdgG,IAAI,aAAD,OAAeluB,EAAQ,cAAMpI,EAAI,mDACpCu2B,IAAI,aAAD,OAAenuB,EAAQ,cAAMpI,EAAI,uDAiBxC,GAfAkqB,qBAAU,WAUFxqB,GATgB,wCAAG,WAAOd,GAAU,2FAEHvB,EAAQm5B,qBAAqB53B,GAAI,KAAD,EAA7DqI,OAAOC,SAASzE,KAAI,uDAEpBT,QAAQC,MAAM,kCAAkC,EAAD,IAC/Cm0B,EAAS,KAAMl4B,SAASu4B,QAAQ,yDAEvC,gBAPmB,qCAUhBC,CAAeh3B,KAEpB,CAACA,IAEAuC,EAAO,CAAC,IAAD,EACD00B,EAA2B,QAAnB,EAAGrG,EAAUruB,UAAM,sDAA2CmG,EAAQ,cAAMpI,EAAI,2EAE1F,OACI,yBAAK0c,MAAO2Z,GACR,qCACA,4BAAKM,IAKrB,OACI,yBAAKja,MAAO2Z,GACR,4CAAkBjuB,EAAQ,MAAKpI,EAAI,UCjCzC42B,GAASC,IACTC,GAAQC,IAwBCC,GAtB0B,WACxC,OACC,gBAACC,GAAM,KACN,gBAACL,GAAM,KACN,gBAACE,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOC,SAAUuc,UAAW7a,KACvD,gBAAC8gC,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOE,UAAWsc,UAAWha,KACxD,gBAACigC,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOK,SAAUmc,UAAWzY,KACvD,gBAAC0+B,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOM,WAAYkc,UAAWtY,KACzD,gBAACu+B,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOO,KAAMic,UAAWwX,KACnD,gBAACyO,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOS,WAAY+b,UAAW9U,KACzD,gBAAC+6B,GAAK,CAAC1Z,KAAK,mBAAmBvM,UAAWmlB,KAC1C,gBAAC,EAAuB,CAAChwB,aAAc,CAAC,aACvC,gBAAC8wB,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOG,eAAgBqc,UAAWxX,KAC7D,gBAACy9B,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOI,QAASoc,UAAWxX,KACtD,gBAACy9B,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOQ,kBAAmBgc,UAAW/U,KAChE,gBAACg7B,GAAK,CAACI,OAAK,EAAC9Z,KAAM5pB,EAAQa,OAAOU,mBAAoB8b,UAAWhV,SCzBlDyK,QACa,cAA7BW,OAAOC,SAASiwB,UAEa,UAA7BlwB,OAAOC,SAASiwB,UAEhBlwB,OAAOC,SAASiwB,SAASC,MACrB,2D,wBCFKzvB,GACQ,SAAC9B,GAAW,MAC9B,CAAEiC,KAAM,mBAAoBtK,QAASqI,ICA3BwxB,GAAW,CACvB3tB,kBrF0CsD,SACtD/D,EACA2xB,GAEA,QAAc7d,IAAV9T,EACH,MAAO,CACNoC,cAAe,KACfG,gBAAiB,KACjBG,iBAAkB,KAClByB,uBAAwB,MAI1B,IAAMytB,EAASD,EACf,OAAQC,EAAOzvB,MACd,IAAK,qBACJ,OAAO,2BAAKnC,GAAK,IAAEoC,cAAewvB,EAAOxvB,gBAE1C,IAAK,wBACJ,OAAO,2BAAKpC,GAAK,IAAEuC,gBAAiBqvB,EAAOrvB,kBAE5C,IAAK,wBACJ,OAAO,2BAAKvC,GAAK,IAAE0C,iBAAkBkvB,EAAOlvB,mBAE7C,IAAK,4BACJ,OAAO,2BAAK1C,GAAK,IAAEmE,uBAAwBytB,EAAO/uB,gBAEnD,QACC,OAAO7C,IqFrETC,YDCiD,SACjDD,EACA2xB,GAEA,QAAc7d,IAAV9T,EACH,MAAO,CAAEE,KAAM,MAGhB,IAAM0xB,EAASD,EACf,OAAQC,EAAOzvB,MACd,IAAK,mBACJ,MAAO,CAAEjC,KAAM0xB,EAAO/5B,SACvB,QACC,OAAOmI,ICbT2F,O9EU2C,SAC3C3F,EACA2xB,GAEA,QAAc7d,IAAV9T,EACH,MAAO,CAAE2F,OAAQ,IAGlB,IAAMisB,EAASD,EACf,OAAQC,EAAOzvB,MACd,IAAK,YACJ,IAAM0vB,EAAuB7xB,EAAM2F,OAAOnG,QAI1C,OAFAqyB,EAAWpyB,KAAKmyB,EAAO/5B,SAEhB,CAAE8N,OAAQksB,GAElB,IAAK,eACJ,IAAMC,EAAyB9xB,EAAM2F,OAAOnG,QAG5C,OAFAsyB,EAAaC,QAEN,CAAEpsB,OAAQmsB,GAElB,QACC,OAAO9xB,I8EjCT4G,e1EiBoD,SACpD5G,EACA2xB,GAEA,QAAc7d,IAAV9T,EACH,MAAO,CACNsI,SAAU,MAIZ,IAAMspB,EAASD,EACf,OAAQC,EAAOzvB,MACd,IAAK,2BACJ,OAAO,2BAAKnC,GAAK,IAAEsI,SAAUspB,EAAO/5B,UAErC,QACC,OAAOmI,K,c2EpDV,gIAAAvI,EAAA,sCAAAA,EAAA,yBAAAA,EAAA,mCAAAA,EAAA,yNAAAA,EAAA,gDAAAA,EAAA,gkBAAAA,EAAA,oKAAAA,EAAA,8BAAAA,EAAA,+CAAAA,EAAA,qCAAAA,EAAA,0LAAAA,EAAA,+EAAAA,EAAA,6CAAAA,EAAA,ksBAAAA,EAAA,mCAAAA,EAAA,mCAAAA,EAAA,4BAAAA,EAAA,koBAAAA,EAAA,oHAAAA,EAAA,KAAAA,GAAA,0nBAAAA,QAAA,IAAAA,MAAA,gCAAAA,GAAA,o+BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,gCAAAA,EAAA,qBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,0BAAAA,EAAA,oBAAAA,EAAA,oCAAAA,EAAA,kBAAAA,EAAA,2FAAAA,EAAA,oBAAAA,EAAA,uLAAAA,EAAA,SAAAA,IAAA,8BAAAA,EAAA,cAAAA,EAAA,aAAAA,EAAA,YAAAA,IAAA,sCAAAA,GAAA,6BAAAA,EAAA,qwBAYA,IAAMu6B,GAAWC,IACXC,GAAkBC,IAGlBC,GAAUx1B,SAASy1B,qBAAqB,QAAQ,GAAGC,aAAa,QAChEpf,GAAUqf,YAAqB,CAAEC,SAAUJ,KAG3CK,GCfS,SAAwBvf,EAAkB2R,GACxD,IAAM6N,EAAa,CAACC,KAAOC,aAAiB1f,IAEtC2f,EAAcC,aAAgB,2BAChCpB,IAAQ,IACXqB,OAAQC,YAAc9f,MAGjB+f,EAAmB,GACnBC,EAAoC,qBAAX5xB,OAAyB,KAAQA,OAWhE,OAVI4xB,GAAmBA,EAAgBC,8BACtCF,EAAUxzB,KAAKyzB,EAAgBC,gCAGlBC,aACbP,EACAhO,EACAwO,KAAO,cAACC,KAAe,aAAIZ,IAAW,OAAKO,KDF/BM,CAAergB,KAEf,wCAAG,mBAGDsgB,EAAQ,wFAmBtB,OAnBsB,yBAAvB,wGAEe97B,EAAQ+7B,iBAAiB,KAAD,EAArCvzB,EAAI,sDAEJ7D,QAAQC,MAAM,EAAD,IAAQ,OAGlB4D,IACHuyB,GAAMzuB,SAAS0vB,GAA6CxzB,IAE7B,GACA,GAEAyzB,MAE/B9tB,YAAW,WACV2tB,MAH8BG,QAK/B,0DACD,uBAnBcH,EAAQ,oDAqBjBA,IAAW,KAAD,EAEhBI,SACC,gBAAC5B,GAAQ,CAACS,MAAOA,IAChB,gBAACP,GAAe,CAAChf,QAASA,IACzB,gBAAC,GAAG,QAGNtW,SAASi3B,eAAe,SACvB,2CACF,kBAlCa,mCAoCdC,GHwCQ,kBAAmBva,WACnBA,UAAUwa,cAAcC,MAAM3b,MAAK,SAAA4b,GAC/BA,EAAaC,iB,u/DKrGzBC,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,kD,oBCA3CD,EAAOC,QAAU,IAA0B,0C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,2C,oBCA3CD,EAAOC,QAAU,IAA0B,0C,oBCA3CD,EAAOC,QAAU,IAA0B,4C,oBCA3CD,EAAOC,QAAU,IAA0B,2C","file":"static/js/main.b60095e8.chunk.js","sourcesContent":["import \"core-js/features/url-search-params\";\nimport { FileManagementViewRouteParameters, SolutionsViewRouteParamaters } from \"./RouteParams\";\n\nexport class Routing {\n\tpublic static Routes = {\n\t\tHomePage: \"/\",\n\t\tSolutions: \"/solutions\",\n\t\tAdministration: \"/administration\",\n\t\tFileManagement: \"/fileManagement\",\n\t\tChannelManagement: \"/channelManagement\",\n\t\tMyChannels: \"/myChannels\",\n\t\tNewFile: \"/newFile\",\n \tContacts: \"/contacts\",\n \tOpensource: \"/opensource\",\n\t\tCategoryManagement: \"/categoryManagement\",\n\t\tHelp: \"/help\"\n\t};\n\n\t/**\n\t * Create full url with params, e.g. /Home?foo=bar\n\t * @param base base of url e.g. /Home\n\t * @param params object of params, where object key/value pair corresponds to query params\n\t * @returns full url with params\n\t */\n\tprivate static constructFullUrl(base: string, params?: any) {\n\t\tlet result: string = base;\n\t\tlet query: URLSearchParams;\n\n\t\tif (params) {\n\t\t\tquery = new URLSearchParams();\n\n\t\t\tObject.keys(params).forEach((paramKey) => {\n\t\t\t\tquery.append(paramKey, params[paramKey]);\n\t\t\t});\n\n\t\t\tresult = `${result}?${query.toString()}`;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic static getHomeViewUrl(): string {\n\t\treturn Routing.constructFullUrl(Routing.Routes.HomePage);\n\t}\n\n\tpublic static getSolutionsViewUrl(params: SolutionsViewRouteParamaters): string {\n\t\treturn Routing.constructFullUrl(Routing.Routes.Solutions, params);\n\t}\n\n\tpublic static getFileManagementUrl(params: FileManagementViewRouteParameters): string {\n\t\treturn Routing.constructFullUrl(Routing.Routes.FileManagement, params);\n\t}\n\n\tpublic static getNewFileViewUrl(): string {\n\t\treturn Routing.constructFullUrl(Routing.Routes.NewFile);\n\t}\n\n\tpublic static getContactsViewUrl(): string {\n\t\treturn Routing.constructFullUrl(Routing.Routes.Contacts);\n \t}\n\n \tpublic static getOpensourceViewUrl(): string {\n \treturn Routing.constructFullUrl(Routing.Routes.Opensource);\n \t}\n\n\tpublic static getHelpViewUrl(): string {\n\t\treturn Routing.constructFullUrl(Routing.Routes.Help);\n\t}\n\n \t// As below but passes the node ID from the selected node when called from the Solutions Browser view\n\t// public static getChannelManagementContextViewUrl(params: ChannelManagementContextViewRouteParameters): string {\n \t// \treturn Routing.constructFullUrl(Routing.Routes.ChannelManagementContext, params);\n \t// }\n\n\tpublic static getChannelManagementViewUrl(): string {\n \treturn Routing.constructFullUrl(Routing.Routes.ChannelManagement);\n \t}\n\n\tpublic static getMyChannelsViewUrl(): string {\n \treturn Routing.constructFullUrl(Routing.Routes.MyChannels);\n \t}\n\n\tpublic static getCategoryManagementViewUrl(): string {\n\t\treturn Routing.constructFullUrl(Routing.Routes.CategoryManagement);\n\t}\n}\n","const Texts = {\n\tNavigation: {\n\t\tTitle: \"Synamedia\",\n\t\tSolutions: \"Solutions\",\n\t\tServices: \"Services & Support\",\n\t\tManagementTools: \"Management Tools\",\n\t\tUserTools: \"Customer Tools\",\n\t\tAddNewFile: \"Add New File\",\n\t\tCategories: \"Categories\",\n\t\tChannelAdmin: \"Manage Download Channels\",\n\t\tMyChannels: \"Download Channels\",\n\t\tReturnToSynamedia: \"Synamedia.com\",\n\t\tLogin: \"Login\",\n\t\tLogout: \"Logout\",\n\t\tLoginInternalUser: \"Internal user\",\n\t\tLoginExternalUser: \"External user\",\n\t\tBack: \"Back\",\n\t},\n\tHomeView: {\n\t\tAppTitle: \"Software and Documentation\",\n\t\tAppSubtitle: \"Synamedia product resources\",\n\t\tSolutionsTitle: \"Solutions\",\n\t\tServicesTitle: \"Services & Support\",\n\t\tServicesLinks: {\n\t\t\tSupportTicketsLink: \"Support Tickets\",\n\t\t\tEoLNoticesLink: \"End of Life Notices\",\n\t\t\tFieldNoticesLink: \"Field Notices\",\n\t\t\tContactsLink: \"Contacts\",\n\t\t\tOpenSourceLink: \"Open Source\",\n\t\t\tQuickStartGuidesLink: \"Quick Start Guides\",\n\t\t\tHelpLink: \"Help\"\n\t\t},\n\t},\n\tSolutionsView: {\n\t\tUnauthorizedAccess: \"Please log in to access this content\",\n\t\tViewTitle: \"Software and Documentation\",\n\t\tTabs: {\n\t\t\tAddNewCategory: \"Add new category\",\n\t\t\tAddButton: \"Add\",\n\t\t\tCancelButton: \"Cancel\",\n\t\t},\n\t\tBrowser: {\n\t\t\tTabs: {\n\t\t\t\tSoftware: \"Software\",\n\t\t\t\tDocumentation: \"Documentation\",\n\t\t\t\tTraining: \"Training\",\n\t\t\t},\n\t\t\tTreeItemTooltips: {\n\t\t\t\tAddNew: \"Add new category\",\n\t\t\t\tUpload: \"Upload file\",\n\t\t\t\tEdit: \"Edit category\",\n\t\t\t\tDelete: \"Delete\",\n\t\t\t},\n\t\t\tItemDetailAttributes: {\n\t\t\t\tDownload: \"Download\",\n\t\t\t\tTitle: \"Title\",\n\t\t\t\tDescription: \"Description\",\n\t\t\t\tUpdated: \"Updated\",\n\t\t\t\tFileSize: \"File size\",\n\t\t\t\tmdChecksum: \"MD5 Checksum\",\n\t\t\t\tshaChecksum: \"SHA 256 Checksum\",\n\t\t\t},\n\t\t},\n\t},\n\tContactsView: {\n\t\tTitle: \"Global and Local Contact Numbers\",\n\t\tVideoNetworksTitle: \"Video Networks\",\n\t\tRegionalNumbersTitle: \"Regional TAC Numbers\",\n\t},\n OpensourceView: {\n Title: \"Open Source Notices\",\n Disclaimer: \"Synamedia values the open source community as an essential resource and partner in innovation. Here you can find information on the open source used in Synamedia products.\",\n ContactMailTo: \"mailto:external-opensource-requests@synamedia.com?subject=Open%20Source%20Code%20Request\",\n ContactLinkText: \"Open Source Requests\",\n },\n\tSolutionGroups: {\n\t\tVideoNetwork: \"Video Network\",\n\t\tVideoPlatform: \"Video Platform\",\n\t\tVideoControlPlane: \"Video Control Plane\",\n\t\tLegacySoftware: \"Legacy Software\",\n\t\tSupportTickets: \"Support Tickets\",\n\t\tEOL: \"End of Life Notices\",\n\t\tFieldNotices: \"Field Notices\",\n\t\tContacts: \"Contacts\",\n\t\tOpenSource: \"Open Source\",\n\t\tQuickStartQuides: \"Quick Start Guides\",\n\t},\n\tFileManagementView: {\n\t\tAddNewFormTitle: \"Add a new file\",\n\t\tEditFormTitle: \"Edit file metadata\",\n\t\tSections: {\n\t\t\tUpload: {\n\t\t\t\tTitle: \"Select a file & upload\",\n\t\t\t\tSelectButton: \"Select File...\",\n\t\t\t\tUploadButton: \"Upload\",\n\t\t\t\tUploadFinished: \"Uploaded Successfully\",\n\t\t\t\tProgress: {\n\t\t\t\t\tProcessing: \"Processing\",\n\t\t\t\t\tUploading: \"Uploading\",\n\t\t\t\t\tFinished: \"Finished\",\n\t\t\t\t\tFailed: \"Something went wrong\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: {\n\t\t\t\tTitle: \"Metadata\",\n\t\t\t\tTitleColumn: {\n\t\t\t\t\tTitle: \"Title (User-Friendly)\",\n\t\t\t\t\tDescriptionFieldLabel: \"Description\",\n\t\t\t\t},\n\t\t\t\tVersionColumn: {\n\t\t\t\t\tTitle: \"Version\",\n\t\t\t\t\tMajorFiledLable: \"Major\",\n\t\t\t\t\tMinorFieldLabel: \"Minor\",\n\t\t\t\t\tPatchFieldLabel: \"Patch\",\n\t\t\t\t},\n\t\t\t\tTypeColumn: {\n\t\t\t\t\tTitle: \"File Type\",\n\t\t\t\t},\n\t\t\t\tInfoColumn: {\n\t\t\t\t\tTitle: \"Download information\",\n\t\t\t\t\tFieldTitles: {\n\t\t\t\t\t\tMdChecksum: \"MD5 Checksum\",\n\t\t\t\t\t\tSize: \"Size\",\n\t\t\t\t\t\tUploadedBy: \"Uploaded by\",\n\t\t\t\t\t\tTimeStamp: \"Time stamp\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAudience: {\n\t\t\t\tTitle: \"Select Audience\",\n\t\t\t\tPermissionsColumn: {\n\t\t\t\t\tTitle: \"Security permissions\",\n\t\t\t\t\tOptions: {\n\t\t\t\t\t\tRegistered: \"Private - select companies\",\n\t\t\t\t\t\tRegisteredAll: \"Private - any logged in user\",\n\t\t\t\t\t\tPublic: \"Public\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSelectCompanyColumn: {\n\t\t\t\t\tTitle: \"Find & select company names\",\n\t\t\t\t\tGuideText1: \"Search for each company by name then check the box to add to the Target Audience List\",\n\t\t\t\t\tGuideText2: \"OR choose a role\",\n\t\t\t\t},\n\t\t\t\tTargetAudience: {\n\t\t\t\t\tTitle: \"Target Audience\",\n\t\t\t\t\tGuideText: \"Companies who have access when logged in.\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tTaxonomy: {\n\t\t\t\tTitle: \"Taxonomy\",\n\t\t\t\tGuideText:\n\t\t\t\t\t\"Choose the location for this file. Version number categories are created automatically based upon the major & minor version number entered in the metadata section. If no version number is entered, the file will be appear as 'Latest' in the selected category below.\",\n\t\t\t\tCollapseAll: \"Collapse All\",\n\t\t\t},\n\t\t},\n\t},\n\n\tChannelsView: {\n\t\tAddNewFormTitle: \"Add a new file\",\n\t\tEditFormTitle: \"Edit file metadata\",\n\t\tSections: {\n\t\t\tUpload: {\n\t\t\t\tTitle: \"Select a file & upload\",\n\t\t\t\tSelectButton: \"Select File...\",\n\t\t\t\tUploadButton: \"Upload\",\n\t\t\t\tUploadFinished: \"Uploaded Successfully\",\n\t\t\t\tProgress: {\n\t\t\t\t\tProcessing: \"Processing\",\n\t\t\t\t\tUploading: \"Uploading\",\n\t\t\t\t\tFinished: \"Finished\",\n\t\t\t\t\tFailed: \"Something went wrong\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: {\n\t\t\t\tTitle: \"Metadata\",\n\t\t\t\tTitleColumn: {\n\t\t\t\t\tTitle: \"Title (User-Friendly)\",\n\t\t\t\t\tDescriptionFieldLabel: \"Description\",\n\t\t\t\t},\n\t\t\t\tVersionColumn: {\n\t\t\t\t\tTitle: \"Version\",\n\t\t\t\t\tMajorFiledLable: \"Major\",\n\t\t\t\t\tMinorFieldLabel: \"Minor\",\n\t\t\t\t\tPatchFieldLabel: \"Patch\",\n\t\t\t\t},\n\t\t\t\tTypeColumn: {\n\t\t\t\t\tTitle: \"File Type\",\n\t\t\t\t},\n\t\t\t\tInfoColumn: {\n\t\t\t\t\tTitle: \"Download information\",\n\t\t\t\t\tFieldTitles: {\n\t\t\t\t\t\tMdChecksum: \"MD5 Checksum\",\n\t\t\t\t\t\tSize: \"Size\",\n\t\t\t\t\t\tUploadedBy: \"Uploaded by\",\n\t\t\t\t\t\tTimeStamp: \"Time stamp\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAudience: {\n\t\t\t\tTitle: \"Select Audience\",\n\t\t\t\tPermissionsColumn: {\n\t\t\t\t\tTitle: \"Security permissions\",\n\t\t\t\t\tOptions: {\n\t\t\t\t\t\tRegistered: \"Private - select companies\",\n\t\t\t\t\t\tRegisteredAll: \"Private - any logged in user\",\n\t\t\t\t\t\tPublic: \"Public\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSelectCompanyColumn: {\n\t\t\t\t\tTitle: \"Find & select company names\",\n\t\t\t\t\tGuideText1: \"Search for each company by name.\",\n\t\t\t\t\tGuideText2: \"Check the box to add to the Target Audience List\",\n\t\t\t\t},\n\t\t\t\tTargetAudience: {\n\t\t\t\t\tTitle: \"Target Audience\",\n\t\t\t\t\tGuideText: \"Companies who have access when logged in.\",\n\t\t\t\t},\n\t\t\t},\n\t\t\tTaxonomy: {\n\t\t\t\tTitle: \"Taxonomy\",\n\t\t\t\tGuideText:\n\t\t\t\t\t\"Choose the location for this file. Version number categories are created automatically based upon the major & minor version number entered in the metadata section. If no version number is entered, the file will be appear as 'Latest' in the selected category below.\",\n\t\t\t\tCollapseAll: \"Collapse All\",\n\t\t\t},\n\t\t},\n\t},\n\n\n\n\tCategoryManagementView: {\n\t\tViewTitle: \"Category Management\",\n\t\tSelectButton: \"Select Icon\",\n\t\tAddButton: \"Add\",\n\t},\n\tChannelManagementView: {\n\t\tViewTitle: \"Manage Download Channels\",\n\t\tSelectButton: \"Select Icon\",\n\t\tAddButton: \"Add\",\n\t},\n\tMyChannelsView: {\n\t\tViewTitle: \"Download Channels\",\n\t\tSelectButton: \"Select Icon\",\n\t\tAddButton: \"Add\",\n\t},\n\tDialogs: {\n\t\tDownload: {\n\t\t\tTitle: \"Download files\",\n\t\t\tContextText: \"Download selected files \",\n\t\t\tFileNameColumn: \"File name\",\n\t\t\tFileLinkColumn: \"File link column\",\n\t\t},\n\t\tAddNewFolder: {\n\t\t\tTitle: \"Add new folder\",\n\t\t\tNameFieldLable: \"Folder name\",\n\t\t},\n\t\tDeleteConfirmation: {\n\t\t\tTitle: \"Delete\",\n\t\t\tContextText: \"Are you sure you want to delete \",\n\t\t},\n\t\tPublicPermissionConfirmation: {\n\t\t\tContextText: \"You have marked this file for public access.\",\n\t\t\tConfirmText: \"Are you sure about this?\",\n\t\t},\n\t},\n\tButtons: {\n\t\tCancel: \"Cancel\",\n\t\tUpload: \"Upload\",\n\t\tSubmit: \"Submit\",\n\t\tSave: \"Save\",\n\t\tEdit: \"Edit\",\n\t\tDownloadSelected: \"Download selected\",\n\t\tDownloadAll: \"Download all\",\n\t\tAdd: \"Add\",\n\t\tDelete: \"Delete\",\n\t\tConfirmPublic: \"Confirm public\",\n\t\tRevertToPublic: \"Revert to Private\",\n\t},\n\tFooter: {\n\t\tConditionsNotice:\n\t\t\t'The Synamedia software and documentation (\"Materials\") available on software.synamedia.com (\"Site\") is the confidential information of Synamedia. Use of the Materials will be subject to the terms and conditions of your license or other agreement that you have with Synamedia (\"Agreement\"). The Materials must only be used or downloaded and installed or distributed in accordance with your Agreement. Any other use of the Materials is not permitted. The availabillity of the Materials on and your access to the Site does not imply any right to use in the absence of an Agreement.',\n\t},\n};\n\nexport default Texts;\n","import axios, { AxiosRequestConfig, AxiosResponse, CancelTokenSource, Method } from \"axios\";\nimport * as Contracts from \"../resources/Contracts\";\nimport * as Enums from \"../resources/Enums\";\n\nexport class Service {\n\tprivate static async callApi(\n\t\tapiUrl: string,\n\t\tmethod: Method,\n\t\tpayload?: any,\n\t\tonUploadProgress?: (progressEvent: ProgressEvent) => void,\n\t\tcancelTokenSource?: CancelTokenSource\n\t): Promise {\n\t\tlet response: AxiosResponse;\n\t\tconst url: string = `/api${apiUrl}`;\n\n\t\tconst requestConfig: AxiosRequestConfig = {\n\t\t\tonUploadProgress: onUploadProgress,\n\t\t\tcancelToken: cancelTokenSource?.token,\n\t\t\ttimeout: 120000, // 2min\n\t\t};\n\n\t\tswitch (method) {\n\t\t\tcase \"GET\":\n\t\t\t\tresponse = await axios.get(url, requestConfig);\n\t\t\t\tbreak;\n\n\t\t\tcase \"POST\":\n\t\t\t\tresponse = await axios.post(url, payload, requestConfig);\n\t\t\t\tbreak;\n\n\t\t\tcase \"PUT\":\n\t\t\t\tresponse = await axios.put(url, payload, requestConfig);\n\t\t\t\tbreak;\n\n\t\t\tcase \"PATCH\":\n\t\t\t\tresponse = await axios.patch(url, payload, requestConfig);\n\t\t\t\tbreak;\n\n\t\t\tcase \"DELETE\":\n\t\t\t\tresponse = await axios.delete(url, requestConfig);\n\t\t\t\tbreak;\n\t\t}\n\t\treturn response.data;\n\t}\n\n\tpublic static async getUsers(): Promise {\n return Service.callApi(\"/Navigation/getusers\", \"GET\");\n }\n\n\tpublic static async getCompanies(search?: string): Promise {\n\t\tlet url: string = \"/companies/getcompanies\";\n\n\t\tif (search) {\n\t\t\turl += \"?searchTerm=\" + search;\n\t\t}\n\n\t\treturn Service.callApi(url, \"GET\");\n\t}\n\n\tpublic static async getRoles(): Promise {\n\t\treturn Service.callApi(\"/roles/getroles\", \"GET\");\n\t}\n\n\tpublic static async getCategories(): Promise {\n\t\treturn Service.callApi(\"/Anonym/getCategories\", \"GET\");\n\t}\n\n // updated promise from Any to contract\n public static async getOpensourceFiles(): Promise {\n\t\treturn Service.callApi(\"/Opendata/filelist\", \"GET\");\n }\n\n public static async getOpensourceProducts(): Promise {\n\t\treturn Service.callApi(\"/Opendata/productlist\", \"GET\");\n }\n\n\tpublic static async getGroupNavigationNodeId(groupName: string): Promise {\n\t\treturn await Service.callApi(`/Anonym/getGroupNavigationNodeId/${groupName}`, \"GET\");\n\t}\n\n\tpublic static async addNewCategory(value: Contracts.ICategory): Promise {\n\t\tawait Service.callApi(\"/Navigation/addCategory\", \"POST\", value);\n\t}\n\n\tpublic static async addNewChannel(value: Contracts.IChannel): Promise {\n\t\tawait Service.callApi(\"/Channel\", \"POST\", value);\n\t}\n\n\tpublic static async updateCategory(value: Contracts.ICategory): Promise {\n\t\tawait Service.callApi(\"/Navigation/updateCategory\", \"PUT\", {\n\t\t\tid: value.id,\n\t\t\tnavigationName: value.navigationName,\n\t\t\ticon: value.icon,\n\t\t});\n\t}\n\n\tpublic static async deleteCategory(id: number): Promise {\n\t\tawait Service.callApi(`/Navigation/deletecategory/${id}`, \"GET\");\n\t}\n\n\tpublic static async getFileItemDetail(fileId: string): Promise {\n\t\treturn await Service.callApi(`/Navigation/getfileinfo/${fileId}`, \"GET\");\n\t}\n\n\tpublic static async getTabsByCategory(categoryName: string): Promise {\n\t\tconst response = await Service.callApi(\n\t\t\t`/anonym/GetTabsByCategory/${categoryName}`,\n\t\t\t\"GET\"\n\t\t);\n\n\t\treturn response;\n\t}\n\n\tpublic static async getTabsByCategoryId(id: number): Promise {\n\t\tconst response = await Service.callApi(\n\t\t\t`/anonym/GetTabsByCategoryId/${id}`,\n\t\t\t\"GET\"\n\t\t);\n\n\t\treturn response;\n\t}\n\n\tpublic static async getFoldersStructure(\n\t\trootGroupName: string,\n\t\tgetDetailItems: boolean = true\n\t): Promise {\n\t\treturn Service.callApi(\n\t\t\t`/anonym/getfolderstructure/${rootGroupName}/${getDetailItems}`,\n\t\t\t\"GET\"\n\t\t);\n\t}\n\n\tpublic static async getTabItem(tabId: string): Promise {\n\t\treturn Service.callApi(\n\t\t\t`/anonym/GetItemsByTab/${tabId}`,\n\t\t\t\"GET\"\n\t\t);\n\t}\n\n\tpublic static async getDetailItem(\n\t\tsolutionFolderItemId: string\n\t): Promise {\n\t\treturn Service.callApi(\n\t\t\t`/anonym/getDetailItems/${solutionFolderItemId}`,\n\t\t\t\"GET\"\n\t\t);\n\t}\n\n\tpublic static async addNewFolder(parentId: string, folderName: string): Promise {\n\t\tconst requestBody = {\n\t\t\tparentId: Number(parentId),\n\t\t\tnavigationName: folderName,\n\t\t};\n\n\t\tawait Service.callApi(\"/Navigation/addnavigationitem\", \"POST\", requestBody);\n\t}\n\n\tpublic static async editFolder(folderId: string, folderName: string): Promise {\n\t\tconst requestBody = {\n\t\t\tnodeId: Number(folderId),\n\t\t\tnodeName: folderName,\n\t\t};\n\n\t\tawait Service.callApi(\"/Navigation/updateFolder\", \"PUT\", requestBody);\n\t}\n\n\tpublic static async getCurrentUser(): Promise {\n\t\treturn Service.callApi(\"/auth/islogin\", \"GET\");\n\t}\n\n\tpublic static async addFileToDownloadCart(fileName: string, fileLink: string): Promise {\n\t\tconst requestBody = {\n\t\t\tfileName: fileName,\n\t\t\tfileLink: fileLink,\n\t\t};\n\n\t\treturn Service.callApi(\"/Queue/addmessage\", \"POST\", requestBody);\n\t}\n\n\tpublic static async getDownloadCartContent(): Promise {\n\t\treturn Service.callApi(\"/Queue/getmessages\", \"GET\");\n\t}\n\n\t// FILES\n\tpublic static async deleteFile(nodeId: string): Promise {\n\t\treturn Service.callApi(`/Files/deleteFile/${nodeId}`, \"DELETE\");\n\t}\n\tpublic static async deleteFolder(nodeId: string): Promise {\n\t\treturn Service.callApi(`/Files/deleteFolder/${nodeId}`, \"DELETE\");\n\t}\n\n\tpublic static async getFileDetailMetadata(\n\t\tfileName: string\n\t): Promise {\n\t\treturn Service.callApi(\n\t\t\t`/Anonym/getdetails/${fileName}`,\n\t\t\t\"GET\"\n\t\t);\n\t}\n\n\tpublic static async getFileDownloadLink(nodeId: string): Promise {\n\t\treturn Service.callApi(`/Anonym/getLink/${nodeId}`, \"GET\");\n\t}\n\n public static async getDocumentLink(Filename: string): Promise {\n\t\treturn Service.callApi(`/Opendata/getdocumentlink/${Filename}`, \"GET\");\n\t}\n\n\tpublic static async getFileDetails(nodeId: string): Promise {\n\t\treturn Service.callApi(\n\t\t\t`/Anonym/getdetails/${nodeId}`,\n\t\t\t\"GET\"\n\t\t);\n\t}\n\n\tpublic static async getFileDetailsByUniqueId(\n\t\tuniqueId: string\n\t): Promise {\n\t\treturn Service.callApi(\n\t\t\t`/Anonym/getdetailsbyuniqueid/${uniqueId}`,\n\t\t\t\"GET\"\n\t\t);\n\t}\n\n\tpublic static async getPublicDownloadUrl(\n\t\tnodeId: string\n\t): Promise {\n\t\treturn Service.callApi(\n\t\t\t`/Anonym/getPublicDownloadUrl/${nodeId}`,\n\t\t\t\"GET\"\n\t\t);\n\t}\n\n\tpublic static async getUploadSasLink(): Promise {\n\t\treturn Service.callApi(\"/Files/getUploadLink\", \"GET\");\n\t}\n\n\tpublic static async uploadFile(\n\t\tfile: File,\n\t\tonUploadProgress: (progressEvent: ProgressEvent) => void,\n\t\tcancelTokenSource: CancelTokenSource\n\t): Promise {\n\t\tconst data: FormData = new FormData();\n\n\t\tdata.append(\"File\", file);\n\n\t\treturn Service.callApi(\n\t\t\t\"/Files/upload\",\n\t\t\t\"POST\",\n\t\t\tdata,\n\t\t\tonUploadProgress,\n\t\t\tcancelTokenSource\n\t\t);\n\t}\n\n\tpublic static async uploadFileMetadata(\n\t\tfileUniqueId: string,\n\t\tfileName: string,\n\t\tfileTitle: string,\n\t\tdescription: string,\n\t\tparentId: number,\n\t\tfileType: Enums.FileType,\n\t\tversion: string,\n\t\tpermission: Enums.FilePermission,\n\t\tpermittedCompanies: Contracts.ICompany[],\n\t\tpermittedRoles: Contracts.IRole[]\n\t): Promise {\n\t\tconst postMetadata: any = {\n\t\t\tFileUniqueId: fileUniqueId,\n\t\t\tFileName: fileName,\n\t\t\tTitle: fileTitle,\n\t\t\tDescription: description,\n\t\t\tParentId: parentId,\n\t\t\tType: fileType,\n\t\t\tVersion: version,\n\t\t\tPermission: permission,\n\t\t\tPermittedCompanies: permittedCompanies,\n\t\t\tPermittedRoles: permittedRoles,\n\t\t};\n\n\t\tawait Service.callApi(\n\t\t\t\"/Files/updateMetadata\",\n\t\t\t\"POST\",\n\t\t\tpostMetadata\n\t\t);\n\t}\n\n\tpublic static async getFileUploadProgress(\n\t\tfileName: string\n\t): Promise {\n\t\treturn Service.callApi(\n\t\t\t`/Files/uploadProgress/${fileName}`,\n\t\t\t\"GET\"\n\t\t);\n\t}\n\n\tpublic static async cancelFileUpload(fileName: string): Promise {\n\t\tconst requestBody = {\n\t\t\tfileName: fileName,\n\t\t};\n\n\t\tawait Service.callApi(\n\t\t\t\"/Files/cancelUpdate\",\n\t\t\t\"POST\",\n\t\t\trequestBody\n\t\t);\n\t}\n}\n","import {\n\tButton,\n\tCheckbox,\n\tCircularProgress,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogTitle,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableHead,\n\tTableRow,\n\tTypography,\n} from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { IFileDownloadData } from \"../../resources/Contracts\";\nimport Texts from \"../../resources/Texts\";\nimport { Service } from \"../../services/Service\";\n\ntype DownloadDialogProps = {\n\topen: boolean;\n\tclose: (value: boolean) => void;\n};\n\nconst DownloadDialog: React.FunctionComponent = (props) => {\n\tconst [links, setLinks] = React.useState([]);\n\tconst [loading, setLoading] = React.useState(false);\n\tconst [selectedLinks, setSelectedLinks] = React.useState([]);\n\n\tReact.useEffect(() => {\n\t\tconst loadData = async (): Promise => {\n\t\t\tsetLoading(true);\n\n\t\t\ttry {\n\t\t\t\tconst result: IFileDownloadData[] = await Service.getDownloadCartContent();\n\n\t\t\t\tsetLinks(result);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\n\t\t\tsetLoading(false);\n\t\t};\n\n\t\tloadData();\n\t}, []);\n\n\tconst handleDownloadSelected = (): void => {\n\t\tdownloadFiles(selectedLinks);\n\t};\n\n\tconst handleDownloadAll = (): void => {\n\t\tdownloadFiles(links);\n\t};\n\n\tconst downloadFiles = (linksToBeDownloaded: IFileDownloadData[]): void => {\n\t\tlinksToBeDownloaded.forEach((link) => {\n\t\t\tconst aElement: HTMLAnchorElement = document.createElement(\"a\");\n\t\t\taElement.href = link.fileLink;\n\t\t\taElement.download = link.fileName;\n\n\t\t\tdocument.body.appendChild(aElement);\n\n\t\t\taElement.click();\n\t\t\taElement.remove();\n\t\t});\n\t};\n\n\tconst handleClose = (): void => {\n\t\tprops.close(false);\n\t};\n\n\tconst handleSelectAllChange = (\n\t\tevent: React.ChangeEvent,\n\t\tvalue: boolean\n\t): void => {\n\t\tif (value) {\n\t\t\tsetSelectedLinks(links);\n\t\t} else {\n\t\t\tsetSelectedLinks([]);\n\t\t}\n\t};\n\n\tconst handleSelectChange = (link: IFileDownloadData, value: boolean): void => {\n\t\tif (value) {\n\t\t\tconst selectedLinksCopy: IFileDownloadData[] = selectedLinks.slice();\n\t\t\tselectedLinksCopy.push(link);\n\n\t\t\tsetSelectedLinks(selectedLinksCopy);\n\t\t} else {\n\t\t\tconst selectedLinksCopy: IFileDownloadData[] = selectedLinks\n\t\t\t\t.slice()\n\t\t\t\t.filter((sl) => sl.fileLink !== link.fileLink);\n\n\t\t\tsetSelectedLinks(selectedLinksCopy);\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t{Texts.Dialogs.Download.Title}\n\t\t\t\n\t\t\t\t{Texts.Dialogs.Download.ContextText}\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{Texts.Dialogs.Download.FileNameColumn}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{Texts.Dialogs.Download.FileLinkColumn}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t 0 &&\n\t\t\t\t\t\t\t\t\t\t\tlinks.length === selectedLinks.length\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonChange={handleSelectAllChange}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\tlinks.map((link) => (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{link.fileName}\n\t\t\t\t\t\t\t\t\t\t{link.fileLink}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t sl.fileLink === link.fileLink\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(event, checked) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleSelectChange(link, checked)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t);\n};\n\nexport default DownloadDialog;\n","export enum SolutionsGroup {\n\tVideoNetwork = \"Synamedia|Video Network\",\n\tVideoPlatform = \"Synamedia|Video Platform\",\n\tVideoControlPlane = \"VCON\",\n\tLegacySoftware = \"Cisco\",\n\tEOL = \"EOLNotices\",\n\tFieldNotices = \"FieldNotices\",\n}\n\nexport enum FileType {\n\tSoftware = \"Software\",\n\tDocumentation = \"Documentation\",\n\tTraining = \"Training\",\n}\n\nexport enum FilePermission {\n\tRegistered = \"Registered\",\n\tRegisteredAll = \"RegisteredAll\",\n\tPublic = \"Public\",\n}\n","import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { ApplicationState } from \"../../../store\";\nimport { CurrentUserState } from \"../../../store/CurrentUser\";\n\ntype RoleRestrictedComponentProps = CurrentUserState & {\n\tenabledRoles: string[];\n};\n\nconst RoleRestrictedComponent: React.FC> = (\n\tprops\n) =>\n\t{\n\t\tif (\n\t\t\tprops.user?.hasRoles?.some((userRole) =>\n\t\t\t\tprops.enabledRoles.some((enabledRole) => enabledRole === userRole)\n\t\t\t) || props.user?.hasUploadPermission\n\t\t)\n\t{\n\t\treturn <>{props.children};\n\t}\n\n\treturn null;\n};\n\nexport default connect((state: ApplicationState) => state.currentUser)(RoleRestrictedComponent);\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport Texts from \"../../resources/Texts\";\nimport { ApplicationState } from \"../../store\";\nimport { CurrentUserState } from \"../../store/CurrentUser\";\nimport \"./LoginButton.scss\";\nimport { Menu, MenuItem } from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\n\ntype LoginButtonProps = CurrentUserState & {};\n\nconst LoginButton: React.FC = (props) => {\n\tconst [anchorEl, setAnchorEl] = React.useState(null);\n\tconst open = Boolean(anchorEl);\n\n\tconst handleLogout = (): void => {\n\t\twindow.location.href = \"/api/auth/logout\";\n\t};\n\n\tconst handleMenuOpen = (event: React.MouseEvent) => {\n\t\tsetAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleMenuClose = () => {\n\t\tsetAnchorEl(null);\n\t};\n\n\tconst handleInternalLogin = () => {\n\t\twindow.location.href = \"/api/homead\";\n\t};\n\n\tconst handleExternalLogin = () => {\n\t\twindow.location.href = \"/api/homeb2c\";\n\t};\n\n\treturn (\n\t\t\n\t\t\t{props.user ? (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t{props.user.username}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{Texts.Navigation.Logout}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t\n\t\t\t\t\t\t{Texts.Navigation.Login}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.Navigation.LoginInternalUser}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.Navigation.LoginExternalUser}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default connect((state: ApplicationState) => state.currentUser)(LoginButton);\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Routing } from \"../../resources/Routes\";\nimport Texts from \"../../resources/Texts\";\nimport \"./ManagementToolsButton.scss\";\n\ntype ManagementToolsButtonProps = {};\n\n/*\n\toption removed as too dangerous\n\t\t{Texts.Navigation.Categories} \n*/\n\nconst ManagementToolsButton: React.FC = () => {\n\treturn (\n\t\t\n\t\t\t{Texts.Navigation.ManagementTools}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.Navigation.AddNewFile}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.Navigation.ChannelAdmin}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default ManagementToolsButton;\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Routing } from \"../../resources/Routes\";\nimport Texts from \"../../resources/Texts\";\nimport \"./UserToolsButton.scss\";\n\ntype UserToolsButtonProps = {};\n\nconst UserToolsButton: React.FC = () => {\n\treturn (\n\t\t\n\t\t\t{Texts.Navigation.UserTools}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.Navigation.MyChannels}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default UserToolsButton;\n","import { Action, Reducer } from \"redux\";\nimport { ISolutionTreeItem } from \"../resources/Contracts\";\n\n// -----------------\n// STATE - This defines the type of data maintained in the Redux store.\n\nexport interface SelectedSolutionState {\n\tselectedGroup: string;\n\tselectedGroupId: number;\n\tselectedSolution: ISolutionTreeItem | null;\n\tselectedSolutionsTabId: string;\n}\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetGroupAction {\n\ttype: \"SET_SELECTED_GROUP\";\n\tselectedGroup: string;\n}\n\nexport interface SetGroupIdAction {\n\ttype: \"SET_SELECTED_GROUP_ID\";\n\tselectedGroupId: number;\n}\n\nexport interface SetSolutionAction {\n\ttype: \"SET_SELECTED_SOLUTION\";\n\tselectedSolution: ISolutionTreeItem;\n}\n\nexport interface SetSolutionTabAction {\n\ttype: \"SET_SELECTED_SOLUTION_TAB\";\n\tselectedTabId: string;\n}\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type KnownAction = SetGroupIdAction |SetSolutionAction | SetSolutionTabAction | SetGroupAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\n\nexport const actionCreators = {\n\tsetSelectedGroup: (group: string | null) =>\n\t\t({ type: \"SET_SELECTED_GROUP\", selectedGroup: group } as SetGroupAction),\n\tsetSelectedGroupId: (groupId: number | null) =>\n\t\t({ type: \"SET_SELECTED_GROUP_ID\", selectedGroupId: groupId } as SetGroupIdAction),\n\tsetSelectedSolution: (solution: ISolutionTreeItem | null) =>\n\t\t({ type: \"SET_SELECTED_SOLUTION\", selectedSolution: solution } as SetSolutionAction),\n\tsetSelectedSolutionTabId: (tab: string | null) =>\n\t\t({ type: \"SET_SELECTED_SOLUTION_TAB\", selectedTabId: tab } as SetSolutionTabAction)\n};\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nexport const reducer: Reducer = (\n\tstate: SelectedSolutionState | undefined,\n\tincomingAction: Action\n): SelectedSolutionState => {\n\tif (state === undefined) {\n\t\treturn {\n\t\t\tselectedGroup: null,\n\t\t\tselectedGroupId: null,\n\t\t\tselectedSolution: null,\n\t\t\tselectedSolutionsTabId: null\n\t\t};\n\t}\n\n\tconst action = incomingAction as KnownAction;\n\tswitch (action.type) {\n\t\tcase \"SET_SELECTED_GROUP\":\n\t\t\treturn { ...state, selectedGroup: action.selectedGroup };\n\n\t\tcase \"SET_SELECTED_GROUP_ID\":\n\t\t\treturn { ...state, selectedGroupId: action.selectedGroupId };\n\n\t\tcase \"SET_SELECTED_SOLUTION\":\n\t\t\treturn { ...state, selectedSolution: action.selectedSolution };\n\n\t\tcase \"SET_SELECTED_SOLUTION_TAB\":\n\t\t\treturn { ...state, selectedSolutionsTabId: action.selectedTabId };\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","export function handleErrorMessage(error: Error): string {\n\tif (error.message) {\n\t\treturn error.message;\n\t} else if (error.name) {\n\t\treturn error.name;\n\t} else {\n\t\treturn JSON.stringify(error);\n\t}\n}\n\nexport function formatFileSize(size: number): string {\n\tif (size === 0) {\n\t\treturn \"0 Bytes\";\n\t}\n\n\tconst k = 1024;\n\n\tconst sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\tconst sizeIndex = Math.floor(Math.log(size) / Math.log(k));\n\n\treturn parseFloat((size / Math.pow(k, sizeIndex)).toFixed(2)) + \" \" + sizes[sizeIndex];\n}\n\nexport function redirectToSupport(): void {\n\twindow.open(\"https://vss.service-now.com/\", \"_blank\");\n}\n","import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { ApplicationState } from \"../../../store\";\nimport { CurrentUserState } from \"../../../store/CurrentUser\";\n\ntype LoggedInSynamediaRestrictedComponentProps = CurrentUserState & { \n};\n\nconst LoggedInSynamediaRestrictedComponent: React.FC> = (props) => {\n\n\t// This component will return the child component if there's a logged in Synamedia user\n\tif (typeof props.user?.loginname !== 'undefined')\n\t{\n\t\tlet domain = props.user.loginname.split(\"@\");\n\t\tif(domain[1].toString().toUpperCase() === \"SYNAMEDIA.COM\")\n\t\t\treturn <>{props.children};\n\t}\n\treturn null;\n};\n\nexport default connect((state: ApplicationState) => state.currentUser)(LoggedInSynamediaRestrictedComponent);\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport { bindActionCreators } from \"redux\";\nimport { SolutionsGroup } from \"../../resources/Enums\";\nimport { Routing } from \"../../resources/Routes\";\nimport Texts from \"../../resources/Texts\";\nimport \"./ServicesMenu.scss\";\nimport { ApplicationState } from \"../../store\";\nimport * as SelectedSolutionStore from \"../../store/SelectedSolution\";\nimport { redirectToSupport } from \"../../utils/utils\";\nimport LoggedInSynamediaRestrictedComponent from \"../shared/formControls/LoggedInSynamediaRestrictedComponent\";\n\ntype ServicesMenuProps = SelectedSolutionStore.SelectedSolutionState &\n\ttypeof SelectedSolutionStore.actionCreators & {};\n\nconst ServicesMenu: React.FC = ({\n\tselectedSolution,\n\tselectedSolutionsTabId,\n\tsetSelectedSolution,\n\tsetSelectedSolutionTabId,\n}) => {\n\tconst handleLinkClick = (): void => {\n\t\tif (selectedSolution) {\n\t\t\tsetSelectedSolution(null);\n\t\t}\n\n\t\tif (selectedSolutionsTabId) {\n\t\t\tsetSelectedSolutionTabId(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t{Texts.Navigation.Services}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.HomeView.ServicesLinks.SupportTicketsLink}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{Texts.HomeView.ServicesLinks.EoLNoticesLink}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{Texts.HomeView.ServicesLinks.FieldNoticesLink}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{Texts.HomeView.ServicesLinks.ContactsLink}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t{Texts.HomeView.ServicesLinks.OpenSourceLink}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{Texts.HomeView.ServicesLinks.HelpLink}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...SelectedSolutionStore.actionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.selectedSolutions,\n\tmapDispatchToProps\n)(ServicesMenu);\n","import * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { ApplicationState } from \"../../../store\";\nimport { CurrentUserState } from \"../../../store/CurrentUser\";\n\ntype LoggedInCustomerRestrictedComponentProps = CurrentUserState & { \n};\n\nconst LoggedInCustomerRestrictedComponent: React.FC> = (props) => {\n\n\t// This component will return the child component if there's a logged in CUSTOMER\n\tif (typeof props.user?.loginname !== 'undefined')\n\t{\n\t\tlet domain = props.user.loginname.split(\"@\");\n\t\tif(domain[1].toString().toUpperCase() != \"SYNAMEDIA.COM\")\n\t\t\treturn <>{props.children};\n\t}\n\treturn null;\n};\n\nexport default connect((state: ApplicationState) => state.currentUser)(LoggedInCustomerRestrictedComponent);\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport SynamediaTitleImg from \"../../images/synamedia-white.svg\";\nimport SynamediaIconImg from \"../../images/synamedia-icon-white.svg\";\nimport { Routing } from \"../../resources/Routes\";\nimport Texts from \"../../resources/Texts\";\nimport DownloadDialog from \"../dialogs/DownloadDialog\";\nimport RoleRestrictedComponent from \"../shared/formControls/RoleRestrictedComponent\";\nimport LoginButton from \"./LoginButton\";\nimport ManagementToolsButton from \"./ManagementToolsButton\";\nimport UserToolsButton from \"./UserToolsButton\";\nimport ServicesMenu from \"./ServicesMenu\";\nimport \"./NavMenu.scss\";\nimport LoggedInCustomerRestrictedComponent from \"../shared/formControls/LoggedInCustomerRestrictedComponent\";\n\nconst NavMenu: React.FunctionComponent<{}> = () => {\n\tconst [downloadDialogOpened, setDownloadDialogOpened] = React.useState(false);\n\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t Synamedia Logo\n\t\t\t\t\t\t Synamedia Wordmark\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.Navigation.ReturnToSynamedia}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t{downloadDialogOpened && (\n\t\t\t\t\n\t\t\t)}\n\t\t
\n\t);\n};\n\nexport default NavMenu;\n","import * as React from \"react\";\nimport { Container, Typography } from \"@mui/material\";\nimport Texts from \"../resources/Texts\";\n\nexport const LayoutFooter: React.FunctionComponent<{}> = () => {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.Footer.ConditionsNotice}\n\t\t\t\t\n\t\t\t\n\t\t
\n\t);\n};\n","import { Action, Reducer } from \"redux\";\n\nexport interface IAlert {\n\ttext: string;\n\ttype: \"error\" | \"warning\" | \"info\" | \"success\";\n}\n\nexport interface AlertState {\n\talerts: IAlert[];\n}\n\nexport interface SetAlertAction {\n\ttype: \"ADD_ALERT\";\n\tpayload: IAlert;\n}\n\nexport interface RemoveAlertAction {\n\ttype: \"REMOVE_ALERT\";\n}\n\nexport type KnownAction = SetAlertAction | RemoveAlertAction;\n\nexport const actionCreators = {\n\taddAlert: (alert: IAlert) => ({ type: \"ADD_ALERT\", payload: alert } as SetAlertAction),\n\taddErrorAlert: (errorMessage: string) =>\n\t\t({ type: \"ADD_ALERT\", payload: { type: \"error\", text: errorMessage } } as SetAlertAction),\n\tremoveAlert: () => ({ type: \"REMOVE_ALERT\" } as RemoveAlertAction),\n};\n\nexport const reducer: Reducer = (\n\tstate: AlertState | undefined,\n\tincomingAction: Action\n) => {\n\tif (state === undefined) {\n\t\treturn { alerts: [] };\n\t}\n\n\tconst action = incomingAction as KnownAction;\n\tswitch (action.type) {\n\t\tcase \"ADD_ALERT\":\n\t\t\tconst alertsCopy: IAlert[] = state.alerts.slice();\n\n\t\t\talertsCopy.push(action.payload);\n\n\t\t\treturn { alerts: alertsCopy };\n\n\t\tcase \"REMOVE_ALERT\":\n\t\t\tconst alertsRemove: IAlert[] = state.alerts.slice();\n\t\t\talertsRemove.shift();\n\n\t\t\treturn { alerts: alertsRemove };\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import { Alert, Stack } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { ApplicationState } from \"../store\";\nimport { actionCreators as AlertStoreActionCreators, AlertState } from \"../store/AlertStore\";\n\ntype AlertOverlayProps = AlertState & typeof AlertStoreActionCreators & {};\n\nconst AlertOverlay: React.FC = ({ removeAlert, alerts }) => {\n\tReact.useEffect(() => {\n\t\tif (alerts.length > 0) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tremoveAlert();\n\t\t\t}, 5000);\n\t\t}\n\t}, [alerts, removeAlert]);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{alerts?.map((alert, index) => (\n\t\t\t\t\t\n\t\t\t\t\t\t{alert.text}\n\t\t\t\t\t\n\t\t\t\t))}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.alerts,\n\tAlertStoreActionCreators\n)(AlertOverlay);\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport NavMenu from \"./navMenu/NavMenu\";\nimport { LayoutFooter } from \"./LayoutFooter\";\nimport AlertOverlay from \"./AlertOverlay\";\n\nexport default (props: { children?: React.ReactNode }) => (\n\t<>\n\t\t\n\n\t\t\n\t\t\t{props.children}\n\t\t\n\n\t\t\n\n\t\t\n\t\n);\n","import queryString from \"query-string\";\n\nexport function parseViewParameters(location: string): TParameters {\n\treturn queryString.parse(location) as unknown as TParameters;\n}\n","import { Action, Reducer } from \"redux\";\nimport { IFileManagement } from \"../resources/Contracts\";\n\n// -----------------\n// STATE - This defines the type of data maintained in the Redux store.\n\nexport interface FileManagementState {\n\tfileData: IFileManagement;\n}\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetFileAction {\n\ttype: \"SET_FILE_MANAGEMENT_FILE\";\n\tpayload: IFileManagement;\n}\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type KnownAction = SetFileAction;\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\n\nexport const actionCreators = {\n\tsetFileManagementFile: (file: IFileManagement) =>\n\t\t({\n\t\t\ttype: \"SET_FILE_MANAGEMENT_FILE\",\n\t\t\tpayload: file,\n\t\t} as SetFileAction),\n};\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nexport const reducer: Reducer = (\n\tstate: FileManagementState | undefined,\n\tincomingAction: Action\n): FileManagementState => {\n\tif (state === undefined) {\n\t\treturn {\n\t\t\tfileData: null,\n\t\t};\n\t}\n\n\tconst action = incomingAction as KnownAction;\n\tswitch (action.type) {\n\t\tcase \"SET_FILE_MANAGEMENT_FILE\":\n\t\t\treturn { ...state, fileData: action.payload };\n\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import PublishIcon from \"@mui/icons-material/Publish\";\nimport { Button, LinearProgress, Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport axios, { CancelToken, CancelTokenSource } from \"axios\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { IFileDownloadInformation } from \"../../../resources/Contracts\";\nimport { FilePermission, FileType } from \"../../../resources/Enums\";\nimport Texts from \"../../../resources/Texts\";\nimport { Service } from \"../../../services/Service\";\nimport { ApplicationState } from \"../../../store\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../../store/AlertStore\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport { handleErrorMessage } from \"../../../utils/utils\";\nimport \"./FileUploadSection.scss\";\n\nimport { AbortController } from \"@azure/abort-controller\";\nimport { BlobServiceClient, BlockBlobParallelUploadOptions } from \"@azure/storage-blob\";\n\nimport { v4 as uuidv4 } from \"uuid\";\n\ntype FileUploadSectionProps = FileManagementStore.FileManagementState &\n\ttypeof FileManagementStore.actionCreators &\n\ttypeof AlertStoreActionCreators & {\n\t\teditFileTitle: string;\n\t\tonUploadStarted: () => void;\n\t\tonUploadFinished: () => void;\n\t\texistingFileGuid: string;\n\t};\n\nconst FileUploadSection: React.FunctionComponent = (props) => {\n\tconst [uploadActive, setUploadActive] = React.useState(false);\n\tconst [uploadFinished, setUploadFinished] = React.useState(false);\n\tconst [uploadProgress, setUploadProgress] = React.useState(0);\n\tconst [file, setFile] = React.useState(null);\n\tconst [cancelTokenSource, setCancelTokenSource] = React.useState(null);\n\tconst [progressText, setProgressText] = React.useState(null);\n\tconst [fileGuid, setFileGuid] = React.useState(props.existingFileGuid);\n\n\tconst controller = new AbortController();\n\tconst uploadAbortSignal = controller.signal;\n\n\tconst uploadCompleted = async () => {\n\t\tconst formData = new FormData();\n\t\tformData.append(\"fileName\", file.name);\n\n\t\tconst response = await axios.post(\"/api/Files/FileUploadComplete\", null, {\n\t\t\tparams: {\n\t\t\t\tfileName: file.name,\n\t\t\t\tfileUniqueId: fileGuid,\n\t\t\t},\n\t\t\tdata: formData,\n\t\t});\n\t\tconst data = response.data;\n\t\tif (data.isSuccess) {\n\t\t\tsetProgressText(Texts.FileManagementView.Sections.Upload.Progress.Finished);\n\t\t\tprops.onUploadFinished();\n\t\t\tsetUploadFinished(true);\n\t\t\tsetUploadProgress(100);\n\n\t\t\tconst downloadInfo: IFileDownloadInformation = {\n\t\t\t\tfileUniqueId: fileGuid,\n\t\t\t\tmD5Checksum: data.data[\"mD5Checksum\"],\n\t\t\t\tsize: data.data[\"size\"],\n\t\t\t\ttimeStamp: data.data[\"timeStamp\"],\n\t\t\t\tuploadedBy: data.data[\"uploadedBy\"],\n\t\t\t};\n\n\t\t\tprops.setFileManagementFile({\n\t\t\t\t...props.fileData,\n\t\t\t\tfileName: file.name,\n\t\t\t\tmetadata: {\n\t\t\t\t\t...props.fileData?.metadata,\n\t\t\t\t\tdownloadInfo: downloadInfo,\n\t\t\t\t\tfileType: FileType.Software,\n\t\t\t\t},\n\t\t\t\tpermission: FilePermission.Registered,\n\t\t\t});\n\t\t}\n\t};\n\n\tif (props.editFileTitle) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{props.fileData?.fileName}\n\t\t\t\n\t\t);\n\t}\n\n\tconst cancelFileUpload = async (): Promise => {\n\t\ttry {\n\t\t\tif (cancelTokenSource) {\n\t\t\t\tcancelTokenSource.cancel();\n\t\t\t}\n\n\t\t\tif (uploadActive) {\n\t\t\t\tcontroller.abort();\n\t\t\t}\n\n\t\t\tsetUploadActive(false);\n\t\t\tsetUploadProgress(null);\n\t\t\tsetUploadFinished(false);\n\t\t\tsetFile(null);\n\n\t\t\tprops.setFileManagementFile({\n\t\t\t\t...props.fileData,\n\t\t\t\tfileName: null,\n\t\t\t\tmetadata: {\n\t\t\t\t\t...props.fileData?.metadata,\n\t\t\t\t\tdownloadInfo: null,\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\n\t\t\tsetUploadProgress(null);\n\t\t}\n\t};\n\t\t\n\tconst azureFileUpload = async () => {\n\t\tconst downloadInfo: IFileDownloadInformation = {\n\t\t\tfileUniqueId: fileGuid,\n\t\t\tmD5Checksum: \"\",\n\t\t\tsize: 0,\n\t\t\ttimeStamp: new Date(Date.now()),\n\t\t\tuploadedBy: \"\",\n\t\t};\n\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tfileName: file.name,\n\t\t\tmetadata: {\n\t\t\t\t...props.fileData?.metadata,\n\t\t\t\tdownloadInfo: downloadInfo,\n\t\t\t\tfileType: FileType.Software,\n\t\t\t},\n\t\t\tpermission: FilePermission.Registered,\n\t\t});\n\n\t\tconst sas = await Service.getUploadSasLink();\n\t\tconst blobServiceClient = new BlobServiceClient(sas.uri);\n\n\t\tconst containerClient = blobServiceClient.getContainerClient(sas.container);\n\t\tif (!await containerClient.exists()) {\n\t\t\tconsole.log(`Container '${sas.container}' was not found.`);\n\t\t\treturn;\n\t\t}\n\n\t\tconst blobClient = containerClient.getBlockBlobClient(fileGuid);\n\n\t\tconst options: BlockBlobParallelUploadOptions = {\n\t\t\tconcurrency: 20,\n\t\t\tblobHTTPHeaders: { blobContentType: file.type },\n\t\t\tonProgress: async (ev) => {\n\t\t\t\tconst percentage: number = (ev.loadedBytes / file.size) * 100;\n\t\t\t\tsetUploadProgress(percentage);\n\t\t\t},\n\t\t\tabortSignal: uploadAbortSignal\n\t\t};\n\n\t\tprops.onUploadStarted();\n\t\tawait blobClient.uploadData(file, options)\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.log(err);\n\t\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t\tconsole.log('Upload aborted');\n\t\t\t\t} else {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t});\n\n\t\tawait uploadCompleted();\n\t};\n\n\tconst azureFileUpdate = async () => {\n\t\tconst sas = await Service.getUploadSasLink();\n\t\tconst blobServiceClient = new BlobServiceClient(sas.uri);\n\n\t\tconst containerClient = blobServiceClient.getContainerClient(sas.container);\n\t\tif (!await containerClient.exists()) {\n\t\t\tconsole.error(`Container '${sas.container}' was not found.`);\n\t\t\treturn;\n\t\t}\n\n\t\tconst blobClient = containerClient.getBlockBlobClient(fileGuid);\n\n\t\t// get current metadata and tags as we want to copy these across to the new blob\n\t\tconst existingProperties = await blobClient.getProperties();\n\t\tconst existingMetadata = existingProperties.metadata;\n\n\t\tconst tagsResponse = await blobClient.getTags();\n\t\tconst existingTags = tagsResponse.tags;\n\n\t\tconst options: BlockBlobParallelUploadOptions = {\n\t\t\tconcurrency: 20,\n\t\t\tblobHTTPHeaders: { blobContentType: file.type },\n\t\t\tonProgress: async (ev) => {\n\t\t\t\tconst percentage: number = (ev.loadedBytes / file.size) * 100;\n\t\t\t\tsetUploadProgress(percentage);\n\t\t\t},\n\t\t\tabortSignal: uploadAbortSignal\n\t\t};\n\n\t\tprops.onUploadStarted();\n\t\tawait blobClient.uploadData(file, options)\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.log(err);\n\t\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t\tconsole.log('Upload aborted');\n\t\t\t\t} else {\n\t\t\t\t\tthrow err;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// update tags and metadata on the new blob, this will also calculate the new md5 checksum\n\t\tawait axios.post(\n\t\t\t\"/api/Files/updateTagsAndMetadata\",\n\t\t\t{...existingMetadata, ...existingTags, fileUniqueId: fileGuid}\n\t\t);\n\n\t\tsetProgressText(Texts.FileManagementView.Sections.Upload.Progress.Finished);\n\t\tsetUploadFinished(true);\n\t\tsetUploadProgress(100);\n\t\tprops.onUploadFinished();\n\t};\n\n\n\tconst uploadFile = async (): Promise => {\n\t\tsetUploadActive(true);\n\n\t\tif (props.existingFileGuid) {\n\t\t\tawait azureFileUpdate();\n\t\t} else {\n\t\t\tawait azureFileUpload();\n\t\t}\n\t};\n\n\tconst handleFileSelect = (event: React.ChangeEvent): void => {\n\t\tconst selectedFile: File = event.target.files?.[0];\n\n\t\tsetFile(selectedFile);\n\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tfileName: selectedFile.name,\n\t\t});\n\n\t\tsetFileGuid(fileGuid ? fileGuid : uuidv4());\n\t};\n\n\tconst handleUploadClick = async (): Promise => {\n\t\tawait uploadFile();\n\t};\n\n\tconst handleCancelClick = async (): Promise => {\n\t\tawait cancelFileUpload();\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Upload.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.FileManagementView.Sections.Upload.SelectButton}\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{file && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{props.fileData?.fileName}\n\n\t\t\t\t\t\t{uploadFinished ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{Texts.FileManagementView.Sections.Upload.UploadFinished}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t {Texts.Buttons.Upload}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{ !props.existingFileGuid &&\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{Texts.Buttons.Cancel}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\n\t\t\t{(uploadActive || uploadFinished) && (\n\t\t\t\t\n\t\t\t\t\t{progressText && {progressText}}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{`${Math.round(uploadProgress)}%`}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...FileManagementStore.actionCreators,\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.fileManagement,\n\tmapDispatchToProps\n)(FileUploadSection);\n","import { InputLabel, TextField } from \"@mui/material\";\nimport * as React from \"react\";\nimport \"./FormField.scss\";\n\ninterface TextFormFieldProps {\n\tclassName?: string;\n\tlabel?: string;\n\tvalue: string;\n\tonChange: (value: string) => void;\n\tdisabled?: boolean;\n\tmultiline?: boolean;\n}\n\nconst TextFormField: React.FC = (props) => {\n\tconst className: string = props.className ? `formField ${props.className}` : \"formField\";\n\n\treturn (\n\t\t<>\n\t\t\t{props.label && {props.label}}\n\n\t\t\t props.onChange(e.target.value)}\n\t\t\t/>\n\t\t\n\t);\n};\n\nexport default TextFormField;\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport Texts from \"../../../resources/Texts\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport { ApplicationState } from \"../../../store\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport \"./TitleColumn.scss\";\nimport TextFormField from \"../../shared/formControls/TextFormField\";\n\ntype TitleColumnProps = FileManagementStore.FileManagementState &\n\ttypeof FileManagementStore.actionCreators & {};\n\nconst TitleColumn: React.FunctionComponent = (props) => {\n\tconst handleTitleChange = (value: string) => {\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tmetadata: {\n\t\t\t\t...props.fileData?.metadata,\n\t\t\t\ttitle: value,\n\t\t\t},\n\t\t});\n\t};\n\n\tconst handleDescriptionChange = (value: string) => {\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tmetadata: {\n\t\t\t\t...props.fileData?.metadata,\n\t\t\t\tdescription: value,\n\t\t\t},\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Metadata.TitleColumn.Title}\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...FileManagementStore.actionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.fileManagement,\n\tmapDispatchToProps\n)(TitleColumn);\n","import { InputLabel } from \"@mui/material\";\nimport * as React from \"react\";\nimport \"./FormField.scss\";\nimport \"./NumberFormField.scss\";\n\ninterface NumberFormFieldProps {\n\tclassName?: string;\n\tlabel?: string;\n\tvalue: number;\n\tonChange: (value: number) => void;\n\tdisabled?: boolean;\n}\n\nconst NumberFormField: React.FC = (props) => {\n\tconst handleOnChange = (\n\t\tevent: React.ChangeEvent\n\t): void => {\n\t\tconst replacedValue: string = event.target.value?.replace(/[^0-9]/g, \"\");\n\n\t\tif (replacedValue) {\n\t\t\tconst parsedValue: number = parseInt(replacedValue);\n\n\t\t\tif (!isNaN(parsedValue) && parsedValue >= 0) {\n\t\t\t\tprops.onChange(parsedValue);\n\t\t\t}\n\t\t} else {\n\t\t\tprops.onChange(null);\n\t\t}\n\t};\n\n\tconst handleKeyPress = (event: React.KeyboardEvent): void => {\n\t\tconst isKeyNumber: boolean = /^[0-9]$/i.test(event.key);\n\n\t\tif (!isKeyNumber) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t};\n\n\tconst padLeadingZeros = (num, size) => {\n\t\tvar s = num + \"\";\n\t\twhile (s.length < size) s = \"0\" + s;\n\t\treturn s;\n\t}\n\n\tconst className: string = props.className\n\t\t? `formField formField-number ${props.className}`\n\t\t: \"formField formField-number\";\n\n\treturn (\n\t\t<>\n\t\t\t{props.label && {props.label}}\n\n\t\t\t\n\t\t\n\t);\n};\n\nexport default NumberFormField;\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport Texts from \"../../../resources/Texts\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport { ApplicationState } from \"../../../store\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport \"./VersionColumn.scss\";\nimport NumberFormField from \"../../shared/formControls/NumberFormField\";\n\ntype VersionColumnProps = FileManagementStore.FileManagementState &\n\ttypeof FileManagementStore.actionCreators & {};\n\nconst VersionColumn: React.FunctionComponent = (props) => {\n\tconst handleMajorVerionChange = (value: number) => {\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tmetadata: {\n\t\t\t\t...props.fileData?.metadata,\n\t\t\t\tversion: {\n\t\t\t\t\t...props.fileData?.metadata?.version,\n\t\t\t\t\tmajor: value,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t};\n\n\tconst handleMinorVerionChange = (value: number) => {\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tmetadata: {\n\t\t\t\t...props.fileData?.metadata,\n\t\t\t\tversion: {\n\t\t\t\t\t...props.fileData?.metadata?.version,\n\t\t\t\t\tminor: value,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t};\n\n\tconst handlePatchVerionChange = (value: number) => {\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tmetadata: {\n\t\t\t\t...props.fileData?.metadata,\n\t\t\t\tversion: {\n\t\t\t\t\t...props.fileData?.metadata?.version,\n\t\t\t\t\tpatch: value,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Metadata.VersionColumn.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.FileManagementView.Sections.Metadata.VersionColumn.MajorFiledLable}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.FileManagementView.Sections.Metadata.VersionColumn.MinorFieldLabel}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.FileManagementView.Sections.Metadata.VersionColumn.PatchFieldLabel}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...FileManagementStore.actionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.fileManagement,\n\tmapDispatchToProps\n)(VersionColumn);\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport Texts from \"../../../resources/Texts\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport { ApplicationState } from \"../../../store\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport \"./FileTypeColumn.scss\";\nimport { FormControlLabel, Radio, RadioGroup } from \"@mui/material\";\nimport { FileType } from \"../../../resources/Enums\";\n\ntype FileTypeColumnProps = FileManagementStore.FileManagementState &\n\ttypeof FileManagementStore.actionCreators & {};\n\nconst FileTypeColumn: React.FunctionComponent = (props) => {\n\tconst handleFileTypeChange = (event: React.ChangeEvent) => {\n\t\tconst fileTypeValue: FileType = event.target.value as FileType;\n\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tmetadata: {\n\t\t\t\t...props.fileData?.metadata,\n\t\t\t\tfileType: fileTypeValue,\n\t\t\t},\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Metadata.TypeColumn.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t}\n\t\t\t\t\tlabel={FileType.Software}\n\t\t\t\t/>\n\n\t\t\t\t}\n\t\t\t\t\tlabel={FileType.Documentation}\n\t\t\t\t/>\n\n\t\t\t\t}\n\t\t\t\t\tlabel={FileType.Training}\n\t\t\t\t/>\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...FileManagementStore.actionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.fileManagement,\n\tmapDispatchToProps\n)(FileTypeColumn);\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport Texts from \"../../../resources/Texts\";\nimport { ApplicationState } from \"../../../store\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport \"./FileInfoColumn.scss\";\nimport { format } from \"date-fns\";\nimport { formatFileSize } from \"../../../utils/utils\";\n\ntype FileInfoColumnProps = FileManagementStore.FileManagementState & {};\n\nconst FileInfoColumn: React.FunctionComponent = (props) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Metadata.InfoColumn.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tTexts.FileManagementView.Sections.Metadata.InfoColumn.FieldTitles\n\t\t\t\t\t\t\t\t.MdChecksum\n\t\t\t\t\t\t}\n\t\t\t\t\t\t:\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t{props.fileData?.metadata?.downloadInfo?.mD5Checksum}\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{Texts.FileManagementView.Sections.Metadata.InfoColumn.FieldTitles.Size}:\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t{props.fileData?.metadata?.downloadInfo?.size &&\n\t\t\t\t\t\t\tformatFileSize(props.fileData.metadata.downloadInfo.size)}\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tTexts.FileManagementView.Sections.Metadata.InfoColumn.FieldTitles\n\t\t\t\t\t\t\t\t.UploadedBy\n\t\t\t\t\t\t}\n\t\t\t\t\t\t:\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t{props.fileData?.metadata?.downloadInfo?.uploadedBy}\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tTexts.FileManagementView.Sections.Metadata.InfoColumn.FieldTitles\n\t\t\t\t\t\t\t\t.TimeStamp\n\t\t\t\t\t\t}\n\t\t\t\t\t\t:\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t{props.fileData?.metadata?.downloadInfo?.timeStamp &&\n\t\t\t\t\t\t\tformat(\n\t\t\t\t\t\t\t\tnew Date(props.fileData.metadata.downloadInfo.timeStamp),\n\t\t\t\t\t\t\t\t\"dd/MM/yyyy hh:mm:ss a\"\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default connect((state: ApplicationState) => state.fileManagement)(FileInfoColumn);\n","import LocalOfferIcon from \"@mui/icons-material/LocalOffer\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport Texts from \"../../../resources/Texts\";\nimport \"./FileMetadataSection.scss\";\nimport TitleColumn from \"./TitleColumn\";\nimport VersionColumn from \"./VersionColumn\";\nimport FileTypeColumn from \"./FileTypeColumn\";\nimport FileInfoColumn from \"./FileInfoColumn\";\n\ntype FileMetadataSectionProps = {};\n\nconst FileMetadataSection: React.FunctionComponent = (props) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Metadata.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default FileMetadataSection;\n","import {\n\tBox,\n\tButton,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogTitle,\n} from \"@mui/material\";\nimport * as React from \"react\";\nimport Texts from \"../../resources/Texts\";\nimport \"./ConfirmPublicPermissionDialog.scss\";\n\ntype ConfirmPublicPermissionDialogProps = {\n\topen: boolean;\n\tclose: () => void;\n\tonConfirm: () => void;\n};\n\nconst ConfirmPublicPermissionDialog: React.FunctionComponent = (\n\tprops\n) => {\n\tconst handleConfirm = (): void => {\n\t\tprops.onConfirm();\n\t\tprops.close();\n\t};\n\n\treturn (\n\t\t e.stopPropagation()}\n\t\t\tclassName=\"confirmPublic-dialog\"\n\t\t>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{Texts.Dialogs.PublicPermissionConfirmation.ContextText}\n\n\t\t\t\t\t\t{Texts.Dialogs.PublicPermissionConfirmation.ConfirmText}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default ConfirmPublicPermissionDialog;\n","import { FormControlLabel, Radio, RadioGroup } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { FilePermission } from \"../../../resources/Enums\";\nimport Texts from \"../../../resources/Texts\";\nimport { ApplicationState } from \"../../../store\";\nimport ConfirmPublicPermissionDialog from \"../../dialogs/ConfirmPublicPermissionDialog\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport \"./SecurityPermissionsColumn.scss\";\n\ntype SecurityPermissionsColumnProps = FileManagementStore.FileManagementState &\n\ttypeof FileManagementStore.actionCreators & {};\n\nconst SecurityPermissionsColumn: React.FunctionComponent = (\n\tprops\n) => {\n\tconst [confirmPublicDialogOpen, setDialogOpen] = React.useState(false);\n\n\tconst handlePermissionChange = (event: React.ChangeEvent) => {\n\t\tconst filePermissionValue: FilePermission = event.target.value as FilePermission;\n\n\t\tif (filePermissionValue === FilePermission.Public) {\n\t\t\tsetDialogOpen(true);\n\t\t} else {\n\t\t\tprops.setFileManagementFile({\n\t\t\t\t...props.fileData,\n\t\t\t\tpermission: filePermissionValue,\n\t\t\t});\n\t\t}\n\t};\n\n\tconst handleConfirmPublic = (): void => {\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tpermission: FilePermission.Public,\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Audience.PermissionsColumn.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t}\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tTexts.FileManagementView.Sections.Audience.PermissionsColumn.Options\n\t\t\t\t\t\t\t.Registered\n\t\t\t\t\t}\n\t\t\t\t/>\n\n\t\t\t\t}\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tTexts.FileManagementView.Sections.Audience.PermissionsColumn.Options\n\t\t\t\t\t\t\t.RegisteredAll\n\t\t\t\t\t}\n\t\t\t\t/>\n\n\t\t\t\t}\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tTexts.FileManagementView.Sections.Audience.PermissionsColumn.Options.Public\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\n\n\t\t\t setDialogOpen(false)}\n\t\t\t\tonConfirm={handleConfirmPublic}\n\t\t\t/>\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...FileManagementStore.actionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.fileManagement,\n\tmapDispatchToProps\n)(SecurityPermissionsColumn);\n","import {\n\tAutocomplete,\n\tAutocompleteRenderInputParams,\n\tAutocompleteRenderOptionState,\n\tCheckbox,\n\tTextField,\n} from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport Texts from \"../../../resources/Texts\";\nimport { ICompany, IRole } from \"../../../resources/Contracts\";\nimport { ApplicationState } from \"../../../store\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport * as AlertStore from \"../../../store/AlertStore\";\nimport \"./CompanySelectColumn.scss\";\nimport { Service } from \"../../../services/Service\";\nimport { handleErrorMessage } from \"../../../utils/utils\";\n\ntype CompanySelectColumnProps = FileManagementStore.FileManagementState &\n\ttypeof FileManagementStore.actionCreators &\n\ttypeof AlertStore.actionCreators & {};\n\nconst CompanySelectColumn: React.FunctionComponent = (props) => {\n\tconst [companies, setCompanies] = React.useState([]);\n\tconst [companiesSearchValue, setCompaniesSearchValue] = React.useState(\"\");\n\tconst [roles, setRoles] = React.useState([]);\n\n\tlet companySearchTimeout: NodeJS.Timeout;\n\n\tReact.useEffect(() => {\n\t\tlet isMounted: boolean = true;\n\n\t\tconst loadRoles = async (): Promise => {\n\t\t\ttry {\n\t\t\t\tconst roles: IRole[] = await Service.getRoles();\n\n\t\t\t\tif (isMounted) {\n\t\t\t\t\tsetRoles(roles);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\t\t\t}\n\t\t};\n\n\t\tloadRoles();\n\n\t\treturn () => {\n\t\t\tisMounted = false;\n\t\t};\n\t}, []);\n\n\tconst loadCompanies = async (searchTerm?: string): Promise => {\n\t\tif (searchTerm) {\n\t\t\ttry {\n\t\t\t\tconst companies: ICompany[] = await Service.getCompanies(searchTerm);\n\n\t\t\t\tsetCompanies(companies);\n\t\t\t} catch (error) {\n\t\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\t\t\t}\n\t\t} else {\n\t\t\tsetCompanies([]);\n\t\t}\n\t};\n\n\tconst handleCompanySearchChange = (\n\t\tevent: React.ChangeEvent\n\t): void => {\n\t\tconst value: string = event.target.value;\n\n\t\tsetCompaniesSearchValue(value);\n\t\tclearTimeout(companySearchTimeout);\n\n\t\tif (value) {\n\t\t\tcompanySearchTimeout = setTimeout(() => {\n\t\t\t\tloadCompanies(event.target.value);\n\t\t\t}, 500);\n\t\t} else {\n\t\t\tsetCompanies([]);\n\t\t}\n\t};\n\n\tconst handleCompanySearchBlur = (): void => {\n\t\tsetCompaniesSearchValue(\"\");\n\t\tsetCompanies([]);\n\t};\n\n\tconst handleCompanyValueChange = (\n\t\tevent: React.SyntheticEvent,\n\t\tvalue: (string | ICompany)[]\n\t) => {\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tpermittedCompanies: value as ICompany[],\n\t\t});\n\t};\n\n\tconst handleRoleValueChange = (\n\t\tevent: React.SyntheticEvent,\n\t\tvalue: (string | IRole)[]\n\t) => {\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tpermittedRoles: value as IRole[],\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Audience.SelectCompanyColumn.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Audience.SelectCompanyColumn.GuideText1}\n\t\t\t\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Audience.SelectCompanyColumn.GuideText2}\n\t\t\t\n\n\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\trenderOption={(\n\t\t\t\t\toptionProps: React.HtmlHTMLAttributes,\n\t\t\t\t\toption: ICompany,\n\t\t\t\t\tstate: AutocompleteRenderOptionState\n\t\t\t\t) => (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{option.companyName}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\tgetOptionLabel={(option: ICompany) => option.companyName}\n\t\t\t\tdisableCloseOnSelect\n\t\t\t\tonChange={handleCompanyValueChange}\n\t\t\t\tmultiple\n\t\t\t/>\n\n\t\t\t }\n\t\t\t\tgetOptionLabel={(option: IRole) => option.roleName}\n\t\t\t\tdisableCloseOnSelect\n\t\t\t\tonChange={handleRoleValueChange}\n\t\t\t\tmultiple\n\t\t\t/>\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...FileManagementStore.actionCreators,\n\t\t\t...AlertStore.actionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.fileManagement,\n\tmapDispatchToProps\n)(CompanySelectColumn);\n","import { Close } from \"@mui/icons-material\";\nimport { IconButton } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { ICompany } from \"../../../resources/Contracts\";\nimport Texts from \"../../../resources/Texts\";\nimport { ApplicationState } from \"../../../store\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport \"./TargetAudienceColumn.scss\";\n\ntype TargetAudienceColumnProps = FileManagementStore.FileManagementState &\n\ttypeof FileManagementStore.actionCreators & {};\n\nconst TargetAudienceColumn: React.FunctionComponent = (props) => {\n\tconst handleRemoveItemClick = (companyId: string) => {\n\t\tconst companies: ICompany[] = props.fileData.permittedCompanies.filter(\n\t\t\t(c) => c.id !== companyId\n\t\t);\n\n\t\tprops.setFileManagementFile({\n\t\t\t...props.fileData,\n\t\t\tpermittedCompanies: companies,\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Audience.TargetAudience.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Audience.TargetAudience.GuideText}\n\t\t\t\n\n\t\t\t{props.fileData?.permittedCompanies?.map?.((company) => (\n\t\t\t\t\n\t\t\t\t\t{company.companyName}\n\n\t\t\t\t\t handleRemoveItemClick(company.id)}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t))}\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...FileManagementStore.actionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.fileManagement,\n\tmapDispatchToProps\n)(TargetAudienceColumn);\n","import GroupIcon from \"@mui/icons-material/Group\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport Texts from \"../../../resources/Texts\";\nimport \"./FileAudienceSection.scss\";\nimport SecurityPermissionsColumn from \"./SecurityPermissionsColumn\";\nimport CompanySelectColumn from \"./CompanySelectColumn\";\nimport TargetAudienceColumn from \"./TargetAudienceColumn\";\nimport { ApplicationState } from \"../../../store\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport { connect } from \"react-redux\";\nimport { FilePermission } from \"../../../resources/Enums\";\n\ntype FileAudienceSectionProps = FileManagementStore.FileManagementState & {};\n\nconst FileAudienceSection: React.FunctionComponent = (props) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Audience.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t{props.fileData?.permission === FilePermission.Registered ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default connect((state: ApplicationState) => state.fileManagement)(FileAudienceSection);\n","import ArrowDropDownIcon from \"@mui/icons-material/ArrowDropDown\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport TreeItem from \"@mui/lab/TreeItem\";\nimport TreeView from \"@mui/lab/TreeView\";\nimport { Box, CircularProgress } from \"@mui/material\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { ISolutionTreeItem } from \"../../../resources/Contracts\";\nimport Texts from \"../../../resources/Texts\";\nimport { Service } from \"../../../services/Service\";\nimport { ApplicationState } from \"../../../store\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../../store/AlertStore\";\nimport * as FileManagementStore from \"../../../store/FileManagement\";\nimport { handleErrorMessage } from \"../../../utils/utils\";\nimport \"./FileTaxonomyTree.scss\";\n\ntype FileTaxonomyTreeProps = FileManagementStore.FileManagementState &\n\ttypeof FileManagementStore.actionCreators &\n\ttypeof AlertStoreActionCreators & {\n\t\tdefaultSelectedId: string;\n\t};\n\nconst FileTaxonomyTree: React.FC = ({\n\tdefaultSelectedId,\n\tfileData,\n\tsetFileManagementFile,\n\taddErrorAlert,\n}) => {\n\tconst dataLoaded = React.useRef(false);\n\n\t//Tree items displayed\n\tconst [rootItem, setRootItem] = React.useState(null);\n\t// Tree nodes with expanded children\n\tconst [expandedNodes, setExpandedNodes] = React.useState([]);\n\t// Tree item data loading\n\tconst [loading, setLoading] = React.useState(false);\n\n\tReact.useEffect(() => {\n\t\tconst handleDefaultExpandedNodes = (\n\t\t\ttreeItem: ISolutionTreeItem,\n\t\t\tparentIds: string[]\n\t\t): void => {\n\t\t\tconst parentIdsCopy: string[] = parentIds.slice();\n\n\t\t\tif (treeItem.id === defaultSelectedId) {\n\t\t\t\tsetExpandedNodes(parentIdsCopy);\n\t\t\t} else if (treeItem.nodes?.length > 0) {\n\t\t\t\tparentIdsCopy.push(treeItem.id);\n\t\t\t\ttreeItem.nodes.forEach((n) => handleDefaultExpandedNodes(n, parentIdsCopy));\n\t\t\t}\n\t\t};\n\n\t\tconst loadItems = async (): Promise => {\n\t\t\tsetLoading(true);\n\n\t\t\ttry {\n\t\t\t\tconst responseItem: ISolutionTreeItem = await Service.getFoldersStructure(\n\t\t\t\t\t\"Synamedia\",\n\t\t\t\t\tfalse\n\t\t\t\t);\n\n\t\t\t\thandleDefaultExpandedNodes(responseItem, []);\n\t\t\t\tsetRootItem(responseItem);\n\t\t\t} catch (error) {\n\t\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t\t}\n\n\t\t\tsetLoading(false);\n\t\t};\n\t\tif (!dataLoaded.current) {\n\t\t\tloadItems();\n\t\t\tdataLoaded.current = true;\n\t\t}\n\t}, [defaultSelectedId, fileData, setFileManagementFile, addErrorAlert]);\n\n\tconst handleExpandedNodes = (nodeId: string) => {\n\t\tlet expandedNodesCopy: string[] = expandedNodes.slice();\n\n\t\tif (expandedNodesCopy.some((en) => en === nodeId)) {\n\t\t\texpandedNodesCopy = expandedNodesCopy.filter((n) => n !== nodeId);\n\t\t} else {\n\t\t\texpandedNodesCopy.push(nodeId);\n\t\t}\n\n\t\tsetExpandedNodes(expandedNodesCopy);\n\t};\n\n\tconst handleNodeClick = (node: ISolutionTreeItem) => {\n\t\tconst lowestSelectableLevel: number = 3;\n\n\t\tif (node.level > lowestSelectableLevel) {\n\t\t\tconst parentIdValue: string = node.id;\n\n\t\t\tsetFileManagementFile({\n\t\t\t\t...fileData,\n\t\t\t\tparentId: parentIdValue,\n\t\t\t});\n\t\t}\n\n\t\tif (node.nodes?.length > 0) {\n\t\t\thandleExpandedNodes(node.id);\n\t\t}\n\t};\n\n\tconst handleCollapseAll = (): void => {\n\t\tsetExpandedNodes([]);\n\t};\n\n\tconst renderTreeItems = (node: ISolutionTreeItem) => {\n\t\tlet className: string = expandedNodes.some((sn) => sn === node.id)\n\t\t\t? \"tree-item expanded\"\n\t\t\t: \"tree-item\";\n\n\t\tif (node.id === fileData?.parentId) {\n\t\t\tclassName = `${className} selected`;\n\t\t}\n\n\t\treturn (\n\t\t\t handleNodeClick(node)}\n\t\t\t\tclassName={className}\n\t\t\t>\n\t\t\t\t{Array.isArray(node.nodes) && node.nodes?.length > 0\n\t\t\t\t\t? node.nodes.map((subNode) => renderTreeItems(subNode))\n\t\t\t\t\t: null}\n\t\t\t\n\t\t);\n\t};\n\n\treturn loading ? (\n\t\t\n\t\t\t\n\t\t\n\t) : (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.FileManagementView.Sections.Taxonomy.CollapseAll}\n\t\t\t\t\n\t\t\t\n\n\t\t\t}\n\t\t\t\tdefaultExpandIcon={}\n\t\t\t\texpanded={expandedNodes}\n\t\t\t\tselected={fileData?.parentId ? [fileData.parentId] : []}\n\t\t\t>\n\t\t\t\t{rootItem && renderTreeItems(rootItem)}\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t\t...FileManagementStore.actionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.fileManagement,\n\tmapDispatchToProps\n)(FileTaxonomyTree);\n","import AccountTreeIcon from \"@mui/icons-material/AccountTree\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport Texts from \"../../../resources/Texts\";\nimport \"./FileTaxonomySection.scss\";\nimport FileTaxonomyTree from \"./FileTaxonomyTree\";\n\ntype FileTaxonomySectionProps = {\n\tdefaultSelectedId: string;\n};\n\nconst FileTaxonomySection: React.FunctionComponent = (props) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Taxonomy.Title}\n\t\t\t\n\n\t\t\t\n\t\t\t\t{Texts.FileManagementView.Sections.Taxonomy.GuideText}\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default FileTaxonomySection;\n","import * as React from \"react\";\nimport { FileManagementViewRouteParameters } from \"../../resources/RouteParams\";\nimport { Box } from \"@mui/system\";\nimport UploadFileIcon from \"@mui/icons-material/UploadFile\";\nimport Texts from \"../../resources/Texts\";\nimport \"./FileManagementContainer.scss\";\nimport FileUploadSection from \"./fileUploadSection/FileUploadSection\";\nimport FileMetadataSection from \"./fileMetadataSection/FileMetadataSection\";\nimport FileAudienceSection from \"./fileAudienceSection/FileAudienceSection\";\nimport FileTaxonomySection from \"./fileTaxonomySection/FileTaxonomySection\";\nimport * as FileManagementStore from \"../../store/FileManagement\";\nimport { ApplicationState } from \"../../store\";\nimport { connect } from \"react-redux\";\nimport { Button, CircularProgress } from \"@mui/material\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport { bindActionCreators } from \"redux\";\nimport { useHistory } from \"react-router-dom\";\nimport { handleErrorMessage } from \"../../utils/utils\";\nimport { Service } from \"../../services/Service\";\nimport { parseViewParameters } from \"../../utils/viewUtils\";\nimport { useLocation } from \"react-router-dom\";\nimport { IFileDetailResponse } from \"../../resources/Contracts\";\nimport { IFileVersion } from \"../../resources/Contracts\";\nimport { FilePermission, FileType } from \"../../resources/Enums\";\nimport { Routing } from \"../../resources/Routes\";\n\ntype FileManagementContainerProps = FileManagementViewRouteParameters &\n\ttypeof FileManagementStore.actionCreators &\n\ttypeof AlertStoreActionCreators &\n\tFileManagementStore.FileManagementState & {};\n\nconst FileManagementContainer: React.FunctionComponent = (props) => {\n\tconst [loading, setLoading] = React.useState(false);\n\tconst [fieldsVisible, setFieldsVisible] = React.useState(false);\n\tconst [updateInProgress, setUpdateInProgress] = React.useState(false);\n\n\tconst history = useHistory();\n\tconst viewParameters = parseViewParameters(\n\t\tuseLocation().search\n\t);\n\n\tReact.useEffect(() => {\n\t\tlet isMounted: boolean = true;\n\n\t\tif (props.fileId) {\n\t\t\tconst loadFileDetails = async (): Promise => {\n\t\t\t\tsetLoading(true);\n\n\t\t\t\ttry {\n\t\t\t\t\tconst responseItem: IFileDetailResponse =\n\t\t\t\t\t\tawait Service.getFileDetailsByUniqueId(props.fileId);\n\n\t\t\t\t\tconst responseItemType: FileType = FileType[responseItem.type];\n\t\t\t\t\tconst responseItemVersion: IFileVersion = responseItem.version\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tmajor: parseInt(responseItem.version.split(\".\")[0]),\n\t\t\t\t\t\t\t\tminor: parseInt(responseItem.version.split(\".\")[1]),\n\t\t\t\t\t\t\t\tpatch: parseInt(responseItem.version.split(\".\")[2]),\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tif (isMounted) {\n\t\t\t\t\t\tprops.setFileManagementFile({\n\t\t\t\t\t\t\t...props.fileData,\n\t\t\t\t\t\t\tparentId: props.parentId,\n\t\t\t\t\t\t\tfileName: responseItem.name,\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\t...props.fileData?.metadata,\n\t\t\t\t\t\t\t\tdescription: responseItem.description,\n\t\t\t\t\t\t\t\ttitle: responseItem.title,\n\t\t\t\t\t\t\t\tfileType: responseItemType,\n\t\t\t\t\t\t\t\tversion: responseItemVersion,\n\t\t\t\t\t\t\t\tdownloadInfo: {\n\t\t\t\t\t\t\t\t\t...props.fileData?.metadata?.downloadInfo,\n\t\t\t\t\t\t\t\t\tfileUniqueId: responseItem.fileUniqueId,\n\t\t\t\t\t\t\t\t\tmD5Checksum: responseItem.mD5Checksum,\n\t\t\t\t\t\t\t\t\tsize: responseItem.size,\n\t\t\t\t\t\t\t\t\tuploadedBy: responseItem.uploadedBy,\n\t\t\t\t\t\t\t\t\ttimeStamp: responseItem.timeStamp,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tpermission: FilePermission[responseItem.permission],\n\t\t\t\t\t\t\tpermittedCompanies: responseItem.permittedCompanies,\n\t\t\t\t\t\t\tpermittedRoles: responseItem.permittedRoles,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\t\t\t\t}\n\n\t\t\t\tsetLoading(false);\n\t\t\t};\n\n\t\t\tloadFileDetails();\n\t\t\tsetFieldsVisible(true);\n\t\t} else if (props.parentId) {\n\t\t\tprops.setFileManagementFile({\n\t\t\t\t...props.fileData,\n\t\t\t\tparentId: props.parentId,\n\t\t\t});\n\t\t}\n\n\t\treturn () => {\n\t\t\tisMounted = false;\n\n\t\t\tprops.setFileManagementFile(null);\n\t\t};\n\t}, []);\n\n\tfunction goBack(): void {\n\t\tif (viewParameters.from) {\n\t\t\thistory.push(\n\t\t\t\tRouting.getSolutionsViewUrl({\n\t\t\t\t\tgroup: viewParameters.from,\n\t\t\t\t\tselectedNodeId: viewParameters.parentId,\n\t\t\t\t\tselectedTabId: viewParameters.prevTabId,\n\t\t\t\t\tid: viewParameters.fromId,\n\t\t\t\t})\n\t\t\t);\n\t\t} else {\n\t\t\thistory.goBack();\n\t\t}\n\t}\n\n\tconst title: string = props.fileId\n\t\t? Texts.FileManagementView.EditFormTitle\n\t\t: Texts.FileManagementView.AddNewFormTitle;\n\n\tconst handleSubmitClick = async (): Promise => {\n\t\tsetUpdateInProgress(true);\n\n\t\ttry {\n\t\t\tlet version: string = \"\";\n\n\t\t\tif (!props.fileData?.metadata?.title) {\n\t\t\t\tthrow new Error(\"Title is required\");\n\t\t\t}\n\n\t\t\tif (!props.fileData?.metadata?.description) {\n\t\t\t\tthrow new Error(\"Description is required\");\n\t\t\t}\n\n\t\t\tif (props.fileData?.permission && props.fileData?.permission === 'Registered' &&\n\t\t\t\t!props.fileData?.permittedCompanies && !props.fileData?.permittedRoles) {\n\t\t\t\tthrow new Error(\"You must specify a company(s) or role under 'Select Audience'\");\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!props.fileData?.metadata?.version?.major &&\n\t\t\t\t!props.fileData?.metadata?.version?.minor &&\n\t\t\t\t!props.fileData?.metadata?.version?.patch\n\t\t\t) {\n\t\t\t\tversion = \"00.00.00\";\n\t\t\t} else {\n\t\t\t\tif (!isNaN(props.fileData?.metadata?.version?.major)) {\n\t\t\t\t\tversion = props.fileData.metadata.version.major.toString() + \".\";\n\t\t\t\t} else {\n\t\t\t\t\tversion = \"0.\";\n\t\t\t\t}\n\n\t\t\t\tif (!isNaN(props.fileData?.metadata?.version?.minor)) {\n\t\t\t\t\tversion = version + props.fileData.metadata.version.minor.toString() + \".\";\n\t\t\t\t} else {\n\t\t\t\t\tversion = version + \"0.\";\n\t\t\t\t}\n\n\t\t\t\tif (!isNaN(props.fileData?.metadata?.version?.patch)) {\n\t\t\t\t\tversion = version + props.fileData.metadata.version.patch.toString();\n\t\t\t\t} else {\n\t\t\t\t\tversion = version + \"0\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait Service.uploadFileMetadata(\n\t\t\t\tprops.fileData?.metadata?.downloadInfo?.fileUniqueId,\n\t\t\t\tprops.fileData?.fileName,\n\t\t\t\tprops.fileData?.metadata?.title,\n\t\t\t\tprops.fileData?.metadata?.description,\n\t\t\t\tprops.fileData?.parentId ? Number(props.fileData.parentId) : null,\n\t\t\t\tprops.fileData?.metadata?.fileType,\n\t\t\t\tversion,\n\t\t\t\tprops.fileData?.permission,\n\t\t\t\tprops.fileData?.permittedCompanies,\n\t\t\t\tprops.fileData?.permittedRoles\n\t\t\t);\n\n\t\t\tgoBack();\n\t\t} catch (error) {\n\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\t\t\tsetUpdateInProgress(false);\n\t\t}\n\t};\n\n\tconst handleCancelClick = async (): Promise => {\n\t\tif (!props.fileId && props.fileData?.fileName) {\n\t\t\ttry {\n\t\t\t\tawait Service.cancelFileUpload(props.fileData.fileName);\n\t\t\t} catch (error) {\n\t\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\t\t\t}\n\t\t}\n\n\t\tprops.setFileManagementFile(null);\n\n\t\tgoBack();\n\t};\n\n\tconst submitButtonDisabled: boolean =\n\t\t(!props.fileId && !props.fileData?.metadata?.downloadInfo?.fileUniqueId) ||\n\t\tupdateInProgress;\n\n\treturn loading ? (\n\t\t\n\t) : (\n\t\t\n\t\t\t\n\t\t\t\t {title}\n\t\t\t\n\n\t\t\t {}}\n\t\t\t\tonUploadFinished={() => setFieldsVisible(true)}\n\t\t\t\texistingFileGuid = ''\n\t\t\t/>\n\n\t\t\t{fieldsVisible && (\n\t\t\t\t<>\n\t\t\t\t\t\n\n\t\t\t\t\t\n\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.Buttons.Cancel}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{props.fileId ? Texts.Buttons.Save : Texts.Buttons.Submit}\n\n\t\t\t\t\t\t\t{updateInProgress && }\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...FileManagementStore.actionCreators,\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.fileManagement,\n\tmapDispatchToProps\n)(FileManagementContainer);\n","var _defs, _g;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) { o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } } return t; }\nimport React from \"react\";\nvar SvgIconContacts = function SvgIconContacts(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 54.173,\n height: 35.264,\n viewBox: \"0 0 54.173 35.264\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .cls-1 {\\n fill: none;\\n stroke-linejoin: round;\\n }\\n\\n .cls-2, .cls-3 {\\n stroke: none;\\n }\\n\\n .cls-3 {\\n fill: #fff;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icon-contacts\",\n transform: \"translate(-865.073 -778.386)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Union_1\",\n \"data-name\": \"Union 1\",\n className: \"cls-1\",\n transform: \"translate(865.073 788.236)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M0,22.154c0-3.3,2.85-6.133,6.89-7.3A10.44,10.44,0,0,1,4.947,8.57C4.947,3.837,7.665,0,11.018,0s6.07,3.837,6.07,8.57a10.441,10.441,0,0,1-1.943,6.285c4.04,1.167,6.89,4,6.89,7.3,0,2.173-5.509,3.26-11.017,3.26S0,24.327,0,22.154Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-3\",\n d: \"M 11.01731872558594 23.41397857666016 C 13.28890895843506 23.41397857666016 15.49159908294678 23.2190990447998 17.21963882446289 22.86524772644043 C 18.90302276611328 22.52053642272949 19.72599601745605 22.10540390014648 20.02483940124512 21.88572692871094 C 19.93512725830078 20.659423828125 19.24682807922363 19.69610404968262 18.66310882568359 19.08909797668457 C 17.68720817565918 18.07425880432129 16.24070930480957 17.25277900695801 14.59007835388184 16.77598762512207 C 13.9557991027832 16.5927677154541 13.45278835296631 16.10832786560059 13.24586868286133 15.48137855529785 C 13.03894901275635 14.8544282913208 13.15475845336914 14.16574859619141 13.55536842346191 13.64095878601074 C 14.52931880950928 12.36513805389404 15.08790874481201 10.51683807373047 15.08790874481201 8.569988250732422 C 15.08790874481201 6.718468189239502 14.57399845123291 4.931038379669189 13.67795848846436 3.66601824760437 C 13.23723888397217 3.043808221817017 12.30557918548584 1.999998331069946 11.01763916015625 1.999998331069946 C 9.729568481445312 1.999998331069946 8.797728538513184 3.043888330459595 8.356908798217773 3.666128396987915 C 7.460708618164062 4.931188106536865 6.946718692779541 6.718578338623047 6.946718692779541 8.569988250732422 C 6.946718692779541 10.5167179107666 7.505398750305176 12.3649787902832 8.479508399963379 13.64085865020752 C 8.880168914794922 14.1656379699707 8.996018409729004 14.85434818267822 8.789098739624023 15.48132801055908 C 8.582179069519043 16.10830879211426 8.079158782958984 16.5927791595459 7.444838523864746 16.77598762512207 C 5.794088840484619 17.25277900695801 4.347508907318115 18.07425880432129 3.371558666229248 19.08911895751953 C 2.366227149963379 20.1345272064209 2.065315246582031 21.14841651916504 2.010087728500366 21.88594055175781 C 2.309149265289307 22.10566520690918 3.132103204727173 22.52063751220703 4.814998626708984 22.86524772644043 C 6.543038845062256 23.2190990447998 8.745728492736816 23.41397857666016 11.01731872558594 23.41397857666016 M 11.01731872558594 25.41397857666016 C 5.508658885955811 25.41397857666016 -1.274414103136223e-06 24.32737922668457 -1.274414103136223e-06 22.15418815612793 C -1.274414103136223e-06 18.84987831115723 2.849998712539673 16.0213680267334 6.889858722686768 14.85452842712402 C 5.694808959960938 13.28926849365234 4.946718692779541 11.05278873443604 4.946718692779541 8.569988250732422 C 4.946718692779541 3.836668252944946 7.664978504180908 -1.66534425716236e-06 11.01763916015625 -1.66534425716236e-06 C 14.37029838562012 -1.66534425716236e-06 17.0879077911377 3.836668252944946 17.0879077911377 8.569988250732422 C 17.0879077911377 11.05278873443604 16.33998870849609 13.28928852081299 15.14509868621826 14.85453796386719 C 19.18467903137207 16.02138900756836 22.03463935852051 18.84987831115723 22.03463935852051 22.15418815612793 C 22.03463935852051 24.32737922668457 16.52597808837891 25.41397857666016 11.01731872558594 25.41397857666016 Z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Union_2\",\n \"data-name\": \"Union 2\",\n className: \"cls-1\",\n transform: \"translate(897.212 788.236)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M0,22.154c0-3.3,2.85-6.133,6.89-7.3A10.44,10.44,0,0,1,4.947,8.57C4.947,3.837,7.665,0,11.018,0s6.07,3.837,6.07,8.57a10.441,10.441,0,0,1-1.943,6.285c4.04,1.167,6.89,4,6.89,7.3,0,2.173-5.509,3.26-11.017,3.26S0,24.327,0,22.154Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-3\",\n d: \"M 11.01731872558594 23.41397857666016 C 13.28890895843506 23.41397857666016 15.49159908294678 23.2190990447998 17.21963882446289 22.86524772644043 C 18.90302276611328 22.52053642272949 19.72599601745605 22.10540390014648 20.02483940124512 21.88572692871094 C 19.93512725830078 20.659423828125 19.24682807922363 19.69610404968262 18.66310882568359 19.08909797668457 C 17.68720817565918 18.07425880432129 16.24070930480957 17.25277900695801 14.59007835388184 16.77598762512207 C 13.9557991027832 16.5927677154541 13.45278835296631 16.10832786560059 13.24586868286133 15.48137855529785 C 13.03894901275635 14.8544282913208 13.15475845336914 14.16574859619141 13.55536842346191 13.64095878601074 C 14.52931880950928 12.36513805389404 15.08790874481201 10.51683807373047 15.08790874481201 8.569988250732422 C 15.08790874481201 6.718468189239502 14.57399845123291 4.931038379669189 13.67795848846436 3.66601824760437 C 13.23723888397217 3.043808221817017 12.30557918548584 1.999998331069946 11.01763916015625 1.999998331069946 C 9.729568481445312 1.999998331069946 8.797728538513184 3.043888330459595 8.356908798217773 3.666128396987915 C 7.460708618164062 4.931188106536865 6.946718692779541 6.718578338623047 6.946718692779541 8.569988250732422 C 6.946718692779541 10.5167179107666 7.505398750305176 12.3649787902832 8.479508399963379 13.64085865020752 C 8.880168914794922 14.1656379699707 8.996018409729004 14.85434818267822 8.789098739624023 15.48132801055908 C 8.582179069519043 16.10830879211426 8.079158782958984 16.5927791595459 7.444838523864746 16.77598762512207 C 5.794088840484619 17.25277900695801 4.347508907318115 18.07425880432129 3.371558666229248 19.08911895751953 C 2.366227149963379 20.1345272064209 2.065315246582031 21.14841651916504 2.010087728500366 21.88594055175781 C 2.309149265289307 22.10566520690918 3.132103204727173 22.52063751220703 4.814998626708984 22.86524772644043 C 6.543038845062256 23.2190990447998 8.745728492736816 23.41397857666016 11.01731872558594 23.41397857666016 M 11.01731872558594 25.41397857666016 C 5.508658885955811 25.41397857666016 -1.274414103136223e-06 24.32737922668457 -1.274414103136223e-06 22.15418815612793 C -1.274414103136223e-06 18.84987831115723 2.849998712539673 16.0213680267334 6.889858722686768 14.85452842712402 C 5.694808959960938 13.28926849365234 4.946718692779541 11.05278873443604 4.946718692779541 8.569988250732422 C 4.946718692779541 3.836668252944946 7.664978504180908 -1.66534425716236e-06 11.01763916015625 -1.66534425716236e-06 C 14.37029838562012 -1.66534425716236e-06 17.0879077911377 3.836668252944946 17.0879077911377 8.569988250732422 C 17.0879077911377 11.05278873443604 16.33998870849609 13.28928852081299 15.14509868621826 14.85453796386719 C 19.18467903137207 16.02138900756836 22.03463935852051 18.84987831115723 22.03463935852051 22.15418815612793 C 22.03463935852051 24.32737922668457 16.52597808837891 25.41397857666016 11.01731872558594 25.41397857666016 Z\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Union_3\",\n \"data-name\": \"Union 3\",\n className: \"cls-1\",\n transform: \"translate(883.695 778.386)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-2\",\n d: \"M0,17.174c0-2.561,2.2-4.754,5.327-5.659a8.108,8.108,0,0,1-1.5-4.872C3.824,2.974,5.926,0,8.518,0s4.693,2.974,4.693,6.643a8.109,8.109,0,0,1-1.5,4.872c3.123.9,5.326,3.1,5.326,5.659,0,1.685-4.259,2.527-8.518,2.527S0,18.858,0,17.174Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n className: \"cls-3\",\n d: \"M 8.517673492431641 17.70050239562988 C 10.15887355804443 17.70050239562988 11.76547336578369 17.56540298461914 13.04150390625 17.32010269165039 C 14.12380790710449 17.11203956604004 14.70596981048584 16.8801326751709 14.99409008026123 16.73211479187012 C 14.73310565948486 15.33384799957275 13.25511074066162 14.04500865936279 11.15254306793213 13.43605327606201 C 10.51907348632812 13.25258350372314 10.01677322387695 12.7686128616333 9.809883117675781 12.14239311218262 C 9.60300350189209 11.51617336273193 9.718133926391602 10.82822322845459 10.11763381958008 10.30348300933838 C 10.8124532699585 9.390863418579102 11.21095371246338 8.056782722473145 11.21095371246338 6.643322944641113 C 11.21095371246338 5.298122882843018 10.84354305267334 4.006513118743896 10.20292377471924 3.09967303276062 C 9.912793159484863 2.688983201980591 9.308093070983887 2.000003099441528 8.517923355102539 2.000003099441528 C 7.727633476257324 2.000003099441528 7.122793674468994 2.689053058624268 6.832593441009521 3.099793195724487 C 6.191863536834717 4.006643295288086 5.824393272399902 5.298213005065918 5.824393272399902 6.643322944641113 C 5.824393272399902 8.056693077087402 6.222953319549561 9.390732765197754 6.917873382568359 10.30336284637451 C 7.31743335723877 10.82810306549072 7.432603359222412 11.51608276367188 7.225723266601562 12.14233303070068 C 7.018843650817871 12.76859283447266 6.516523361206055 13.25258350372314 5.883013725280762 13.43605327606201 C 3.780328989028931 14.04499912261963 2.302256107330322 15.33384132385254 2.041258335113525 16.73211479187012 C 2.329378366470337 16.8801326751709 2.911539554595947 17.11203956604004 3.993843555450439 17.32010269165039 C 5.26987361907959 17.56540298461914 6.876473426818848 17.70050239562988 8.517673492431641 17.70050239562988 M 8.517673492431641 19.70050239562988 C 4.258833408355713 19.70050239562988 3.492431687845965e-06 18.85819244384766 3.492431687845965e-06 17.1735725402832 C 3.492431687845965e-06 14.61213302612305 2.203383445739746 12.41951274871826 5.326663494110107 11.51499271392822 C 4.402753353118896 10.30163288116455 3.824393510818481 8.567943572998047 3.824393510818481 6.643322944641113 C 3.824393510818481 2.974123001098633 5.925923347473145 3.105163614236517e-06 8.517923355102539 3.105163614236517e-06 C 11.10992336273193 3.105163614236517e-06 13.21095371246338 2.974123001098633 13.21095371246338 6.643322944641113 C 13.21095371246338 8.567943572998047 12.63271331787109 10.30164337158203 11.70893383026123 11.5150032043457 C 14.83199310302734 12.41952323913574 17.03534317016602 14.61213302612305 17.03534317016602 17.1735725402832 C 17.03534317016602 18.85819244384766 12.77651309967041 19.70050239562988 8.517673492431641 19.70050239562988 Z\"\n })))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconContacts, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-contacts.d2e43ba4.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { FileManagementViewRouteParameters } from \"../../resources/RouteParams\";\nimport { parseViewParameters } from \"../../utils/viewUtils\";\nimport FileManagementContainer from \"../../components/fileManagement/FileManagementContainer\";\nimport { Box } from \"@mui/system\";\nimport { Container } from \"@mui/material\";\nimport \"./FileManagementView.scss\";\n\ninterface FileManagementViewProps {}\n\nconst FileManagementView: React.FunctionComponent = (props) => {\n\tconst viewParameters = parseViewParameters(\n\t\tuseLocation().search\n\t);\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default FileManagementView;\n","import { Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport \"./HomePageLink.scss\";\n\ninterface HomePageLinkProps {\n\tclassName?: string;\n\ttitle: string;\n\ticon: React.ReactNode;\n\turl?: string;\n\tonClick?: () => void;\n}\n\nexport const HomePageLink: React.FunctionComponent = ({\n\ticon,\n\ttitle,\n\tclassName,\n\turl,\n\tonClick,\n}) => {\n\tif (url) {\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{icon}\t\n\t\t\t\t\t\n\t\t\t\t\t\t{title}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t} else {\n\t\treturn (\n\t\t\t\n\t\t\t\t{icon}\n\t\t\t\t\n\t\t\t\t\t{title}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n};\n","var _defs, _g;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) { o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } } return t; }\nimport React from \"react\";\nvar SvgIconEolNotice = function SvgIconEolNotice(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28.629,\n height: 37.409,\n viewBox: \"0 0 30 40\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .line-eol {\\n fill: none;\\n stroke: #fff;\\n stroke-width: 2px;\\n stroke-linejoin: round;\\n stroke-linecap: round;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icon-eol-notice\",\n transform: \"translate(-13.469 1.645)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_24\",\n \"data-name\": \"Path 24\",\n className: \"line-eol\",\n d: \"M516.6,844.186v-7.708h7.2\",\n transform: \"translate(-483.057 -810.439)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_7\",\n \"data-name\": \"Line 7\",\n className: \"line-eol\",\n x2: 17.846,\n transform: \"translate(18.455 5)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_8\",\n \"data-name\": \"Line 8\",\n className: \"line-eol\",\n x2: 13.597,\n transform: \"translate(18.605 9.365)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_9\",\n \"data-name\": \"Line 9\",\n className: \"line-eol\",\n x2: 13.597,\n transform: \"translate(18.605 14.076)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_5\",\n \"data-name\": \"Line 5\",\n className: \"line-eol\",\n x2: 9.78,\n y2: 9.78,\n transform: \"translate(20.606 19.185)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_10\",\n \"data-name\": \"Line 10\",\n className: \"line-eol\",\n x1: 9.78,\n y2: 9.78,\n transform: \"translate(20.606 19.185)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_25\",\n \"data-name\": \"Path 25\",\n className: \"line-eol\",\n d: \"M2.685,2.456V37.865H22l7.313-7.313V2.456Z\",\n transform: \"translate(11.784 -3.101)\"\n }))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconEolNotice, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-eol-notice.eaf360f6.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) { o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } } return t; }\nimport React from \"react\";\nvar SvgIconFieldNotices = function SvgIconFieldNotices(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38.588,\n height: 37,\n viewBox: \"0 0 38.588 37\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .line-field {\\n fill: none;\\n stroke: #fff;\\n stroke-width: 2px;\\n stroke-linejoin: round;\\n stroke-linecap: round;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icon-field-notices\",\n transform: \"translate(-2.013 -1.5)\"\n }, /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_19\",\n \"data-name\": \"Line 19\",\n className: \"line-field\",\n y2: 3,\n transform: \"translate(21.5 2.5)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_28\",\n \"data-name\": \"Path 28\",\n className: \"line-field\",\n d: \"M11.013,5.7h23.8l4.786,3.7-4.786,3.753h-23.8Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_29\",\n \"data-name\": \"Path 29\",\n className: \"line-field\",\n d: \"M39.6,5.7H15.8l-4.786,3.7L15.8,13.148H39.6Z\",\n transform: \"translate(-8 13)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_20\",\n \"data-name\": \"Line 20\",\n className: \"line-field\",\n y2: 5,\n transform: \"translate(21.5 13.5)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_21\",\n \"data-name\": \"Line 21\",\n className: \"line-field\",\n y2: 11.352,\n transform: \"translate(21.5 26.148)\"\n }))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconFieldNotices, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-field-notices.279b4e38.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) { o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } } return t; }\nimport React from \"react\";\nvar SvgIconOpensource = function SvgIconOpensource(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 39.354,\n height: 37.484,\n viewBox: \"0 0 40 40 \",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .line-opensource {\\n fill: none;\\n stroke: #fff;\\n stroke-linejoin: round;\\n stroke-width: 2px;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icon-opensource\",\n transform: \"translate(-7.725 0.919)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Subtraction_2\",\n \"data-name\": \"Subtraction 2\",\n className: \"line-opensource\",\n d: \"M26.846,35.484h0L23.93,26.625a9.529,9.529,0,1,0-10.505,0l-2.917,8.858a18.64,18.64,0,1,1,16.339,0Z\",\n transform: \"translate(8.725 0.081)\"\n }))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconOpensource, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-opensource.025a21bf.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) { o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } } return t; }\nimport React from \"react\";\nvar SvgIconSupportTicket = function SvgIconSupportTicket(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 58.999,\n height: 37.214,\n viewBox: \"0 0 62 40\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .line-support {\\n fill: none;\\n stroke: #ffffff;\\n stroke-linecap: round;\\n stroke-width: 2px;\\n stroke-linejoin: round;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icon-support-ticket\",\n transform: \"translate(-1.486 -0.938)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_21\",\n \"data-name\": \"Path 21\",\n className: \"line-support\",\n d: \"M413.33,240.4a5.779,5.779,0,0,1,0-11.538s.057-2.268,0-7.867H360c.05,1.521,0,8,0,8a5.779,5.779,0,0,1,0,11.538c0,2.413.05,4.779,0,8.26h53.33S413.315,241.183,413.33,240.4Z\",\n transform: \"translate(-384.606 -159.253) rotate(-8)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_22\",\n \"data-name\": \"Path 22\",\n className: \"line-support\",\n d: \"M399.645,227l2.825,5.723,6.316.918-4.57,4.455,1.079,6.291-5.649-2.97L394,244.387l1.079-6.291-4.57-4.455,6.316-.918Z\",\n transform: \"translate(-397.423 -157.952) rotate(-8)\"\n }))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconSupportTicket, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-support-ticket.30499214.svg\";\nexport { ForwardRef as ReactComponent };","import * as React from \"react\";\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport {styled} from \"@mui/system\";\nimport Cookies from \"js-cookie\"\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport UploadFileIcon from \"@mui/icons-material/UploadFile\";\nimport LoggedInSynamediaRestrictedComponent from \"../shared/formControls/LoggedInSynamediaRestrictedComponent\";\nimport downloadLink from \"./downloadlink.png\"\nimport downloadDialog from \"./downloadDialog.png\"\nimport overwriteFile from \"./overwriteFile.png\"\n\nconst NewFeaturesDialog: React.FC = () => {\n\n\tconst [newFeaturesDialogOpen, setNewFeaturesDialogOpen] = React.useState(false);\n\tconst sdpVersionCookieName = 'Software.Portal.VersionNumber'\n\tconst sdpVersionNumber = '1';\n\n\tReact.useEffect(() => {\n\n\t\tif (Cookies.get(sdpVersionCookieName) !== sdpVersionNumber) setNewFeaturesDialogOpen(true);\n\t}, []);\n\n\tconst handleCloseNewFeaturesDialog = () => {\n\t\tCookies.set(sdpVersionCookieName, sdpVersionNumber, { path: '/' });\n\t\tsetNewFeaturesDialogOpen(false);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t
New Features!
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t

Help

\n\t\t\t\t\t\t\t\t\tThere is a new help menu under the \"Services & Support Menu\" where you can view this\n\t\t\t\t\t\t\t\t\tinformation again\n\t\t\t\t\t\t\t\t\tonce this page has been dismissed.\n\t\t\t\t\t\t\t\t\t

Software Download APIs

\n\t\t\t\t\t\t\t\t\t

The Software Download Portal now supports Software Download APIs that can\n\t\t\t\t\t\t\t\t\t\tbe integrated with your product\n\t\t\t\t\t\t\t\t\t\tso that you can automatically download new updates etc. without the customer\n\t\t\t\t\t\t\t\t\t\thaving to manually download updates.\n\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t

Download Link

\n\t\t\t\t\t\t\t\t\t

For software/documentation which have been marked as public, you can now\n\t\t\t\t\t\t\t\t\t\tget a direct download link that can be shared.\n\t\t\t\t\t\t\t\t\t\tFor example, if you have a PDF user guide for a product, you can get a download\n\t\t\t\t\t\t\t\t\t\tURL and convert it to a QR\n\t\t\t\t\t\t\t\t\t\tcode to be shared with your customers.

\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t

If the item is public then a new download link will be displayed as shown\n\t\t\t\t\t\t\t\t\t\tabove.\n\t\t\t\t\t\t\t\t\t\tClick on that in order to get the download URL.

\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t

You can then click on to copy the URL to the clipboard.

\n\t\t\t\t\t\t\t\t\t

Overwrite A File

\n\t\t\t\t\t\t\t\t\t

If you've shared a download link e.g. as a QR code to a user guide, and you want\n\t\t\t\t\t\t\t\t\t\tto update\n\t\t\t\t\t\t\t\t\t\tthat file without generating a new URL, you can overwrite the\n\t\t\t\t\t\t\t\t\t\tfile.
\n\t\t\t\t\t\t\t\t\t\tNote: The old version of the file will no longer be accessible so you must\n\t\t\t\t\t\t\t\t\t\tdownload/re-upload as\n\t\t\t\t\t\t\t\t\t\ta new file first if you wish to retain it.
\n\t\t\t\t\t\t\t\t\t\tClick on to upload the new version.\n\t\t\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t

For further details on any of the above please contact Neil Thomas\n\t\t\t\t\t\t\t\t\t\t(neithoma@synamedia.com)

\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\tClose\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t\t
\n\t);\n};\n\nconst TriggerButton = styled('button')({\n\tfontFamily: 'IBM Plex Sans, sans-serif',\n\tfontWeight: 600,\n\tmaxWidth: '80px',\n\tmargin: 'auto',\n\tfontSize: '0.875rem',\n\tlineHeight: 1.5,\n\tpadding: '8px 16px',\n\ttransition: 'all 150ms ease',\n\tcursor: 'pointer',\n\tbackground: '#3380FF',\n\tborder: '1px solid #3380FF',\n\tcolor: 'white',\n\n\t'&:hover': {\n\t\tboxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n\t}\n});\n\nexport default NewFeaturesDialog;","import * as React from \"react\";\n//import DownloadIcon from \"@mui/icons-material/Download\";\nimport { CircularProgress, Container, Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { HomePageLink } from \"../../components/homePageLink/HomePageLink\";\nimport { ReactComponent as ContactsIcon } from \"../../images/icons/icon-contacts.svg\";\nimport { ReactComponent as EolNoticeIcon } from \"../../images/icons/icon-eol-notice.svg\";\nimport { ReactComponent as FieldNoticesIcon } from \"../../images/icons/icon-field-notices.svg\";\n//import { ReactComponent as GuidesIcon } from \"../../images/icons/icon-guides.svg\";\nimport { ReactComponent as OpensourceIcon } from \"../../images/icons/icon-opensource.svg\";\nimport { ReactComponent as SupportTicketIcon } from \"../../images/icons/icon-support-ticket.svg\";\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutline';\nimport * as Contracts from \"../../resources/Contracts\";\nimport { SolutionsGroup } from \"../../resources/Enums\";\nimport { Routing } from \"../../resources/Routes\";\nimport Texts from \"../../resources/Texts\";\nimport { Service } from \"../../services/Service\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport { handleErrorMessage, redirectToSupport } from \"../../utils/utils\";\nimport NewFeaturesDialog from \"../../components/dialogs/NewFeaturesDialog\"\nimport LoggedInSynamediaRestrictedComponent from \"../../components/shared/formControls/LoggedInSynamediaRestrictedComponent\";\nimport \"./HomeView.scss\";\n\ntype HomeViewProps = typeof AlertStoreActionCreators & {};\n\nconst HomeView: React.FunctionComponent = ({ addErrorAlert }) => {\n\tconst [solutionCategories, setSolutionCategories] = React.useState([]);\n\tconst [loading, setLoading] = React.useState(false);\n\n\t// group IDs\n\tconst [eolIdNoticesId, setEolIdNoticesId] = React.useState(0);\n\tconst [fieldNoticesId, setFieldNoticesId] = React.useState(0);\n\n\tconst loadCategories = React.useCallback(async (): Promise => {\n\t\tsetLoading(true);\n\n\t\ttry {\n\t\t\tconst responseItems: Contracts.ICategory[] = await Service.getCategories();\n\n\t\t\tsetSolutionCategories(responseItems);\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\n\t\tsetLoading(false);\n\t}, [addErrorAlert]);\n\n\tconst loadGroupIds = React.useCallback(async (): Promise => {\n\t\tawait Service.getGroupNavigationNodeId(SolutionsGroup.EOL)\n\t\t\t.then((result) => {\n\t\t\t\tif (!isNaN(result))\n\t\t\t\t\tsetEolIdNoticesId(result);\n\t\t\t});\n\t\tawait Service.getGroupNavigationNodeId(SolutionsGroup.FieldNotices)\n\t\t\t.then((result) => {\n\t\t\t\tif (!isNaN(result))\n\t\t\t\t\tsetFieldNoticesId(result);\n\t\t\t});\n\t}, []);\n\n\tReact.useEffect(() => {\n\t\tloadCategories();\n\t\tloadGroupIds();\n\t}, [loadCategories, loadGroupIds]);\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{Texts.HomeView.AppTitle}\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{Texts.HomeView.AppSubtitle}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.HomeView.SolutionsTitle}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{loading ? (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{solutionCategories.map((c, index) => {\n\t\t\t\t\t\t\t\t\t\tlet icon: string;\n\n\t\t\t\t\t\t\t\t\t\tif (c.icon) {\n\t\t\t\t\t\t\t\t\t\t\tif (c.icon.startsWith(\"data:\")) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst splitIconValue = c.icon.split(\",\");\n\n\t\t\t\t\t\t\t\t\t\t\t\ticon = splitIconValue[splitIconValue.length - 1];\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ticon = c.icon;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\turl={Routing.getSolutionsViewUrl({\n\t\t\t\t\t\t\t\t\t\t\t\t\tgroup: c.navigationName,\n\t\t\t\t\t\t\t\t\t\t\t\t\tid: c.id,\n\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.HomeView.ServicesTitle}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tonClick={redirectToSupport}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\turl={Routing.getSolutionsViewUrl({\n\t\t\t\t\t\t\t\t\tgroup: SolutionsGroup.EOL,\n\t\t\t\t\t\t\t\t\tid: eolIdNoticesId\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\turl={Routing.getSolutionsViewUrl({\n\t\t\t\t\t\t\t\t\tgroup: SolutionsGroup.FieldNotices,\n\t\t\t\t\t\t\t\t\tid: fieldNoticesId\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\turl={Routing.getContactsViewUrl()}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\turl={Routing.getOpensourceViewUrl()}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\turl={Routing.getHelpViewUrl()}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(null, mapDispatchToProps)(HomeView);\n","import ArrowBackIosNewOutlinedIcon from \"@mui/icons-material/ArrowBackIosNewOutlined\";\nimport { Container, Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { Routing } from \"../../resources/Routes\";\nimport Texts from \"../../resources/Texts\";\nimport \"./ViewHeader.scss\";\n\ninterface ViewHeaderProps {\n\tclassName?: string;\n\ttitle: string;\n}\n\nconst ViewHeader: React.FunctionComponent = (props) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.Navigation.Back}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{props.title}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default ViewHeader;\n","import {\n\tButton,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogTitle,\n} from \"@mui/material\";\nimport * as React from \"react\";\nimport Texts from \"../../resources/Texts\";\n\ntype DeleteConfirmationDialogProps = {\n\titemName: string;\n\topen: boolean;\n\tclose: () => void;\n\tonDelete: () => void;\n};\n\nconst DeleteConfirmationDialog: React.FunctionComponent = (\n\tprops\n) => {\n\tconst handleDelete = (): void => {\n\t\tprops.onDelete();\n\t\tprops.close();\n\t};\n\n\treturn (\n\t\t e.stopPropagation()}\n\t\t>\n\t\t\t{Texts.Dialogs.DeleteConfirmation.Title}\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.Dialogs.DeleteConfirmation.ContextText}\n\t\t\t\t\t{props.itemName}?\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default DeleteConfirmationDialog;\n","import * as React from \"react\";\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport UploadFileIcon from \"@mui/icons-material/UploadFile\";\nimport FileUploadSection from './fileUploadSection/FileUploadSection'\nimport { styled } from '@mui/system';\n\ninterface NewFileVersionUploadProps {\n uploadDialogOpen: boolean;\n dialogClosed: () => void;\n existingFileGuid: string;\n}\n\nconst NewFileVersionUpload: React.FC = (props) => {\n const [cancelVisible, setCancelVisible] = React.useState(\"visible\");\n\n React.useEffect(() => {\n if (props.uploadDialogOpen) setCancelVisible(\"visible\");\n }, [props.uploadDialogOpen]);\n\n const uploadStarted = () => setCancelVisible(\"hidden\");\n\n return (\n \n \n

\n Upload New File Version\n

\n
\n

WARNING - You are about to upload a new version of this file. The original file will be overwritten and can not be recovered.\n Do not refresh your browser or close this tab during upload. Wait until this dialog is dismissed.

\n \n CANCEL\n \n
\n props.dialogClosed()}\n existingFileGuid = {props.existingFileGuid}\n />\n
\n \n );\n};\n\nconst TriggerButton = styled('button')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 600,\n maxWidth: '96px',\n maxHeight: '40px',\n marginRight: '40px',\n fontSize: '0.875rem',\n lineHeight: 1.5,\n padding: '8px 8px',\n transition: 'all 150ms ease',\n cursor: 'pointer',\n background: 'grey',\n border: '1px solid grey',\n color: 'white',\n\n '&:hover': {\n boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n }\n});\n\nexport default NewFileVersionUpload;","import * as React from \"react\";\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport { IconButton } from \"@mui/material\";\nimport { styled } from '@mui/system';\nimport { bindActionCreators } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\n\ntype GetDownloadUrlDialogProps = typeof AlertStoreActionCreators & {\n open: boolean;\n handleClose: () => void;\n downloadUrl: string;\n};\n\nconst GetDownloadUrlDialog: React.FC = (props) => {\n\n const handleCopy = async () => {\n await navigator.clipboard.writeText(props.downloadUrl);\n props.addAlert({text: 'Download URL copied to clipboard', type: 'success'});\n props.handleClose();\n };\n\n return (\n \n \n
Download URL
\n
\n
\n \n \n \n
\n {props.downloadUrl}\n
\n
\n Ok\n
\n
\n \n );\n}\n\n const TriggerButton = styled('button')({\n\t fontFamily: 'IBM Plex Sans, sans-serif',\n\t fontWeight: 600,\n\t maxWidth: '80px',\n\t margin: 'auto',\n\t fontSize: '0.875rem',\n\t lineHeight: 1.5,\n\t padding: '8px 16px',\n\t transition: 'all 150ms ease',\n\t cursor: 'pointer',\n\t background: '#3380FF',\n\t border: '1px solid #3380FF',\n\t color: 'white',\n\n\t '&:hover': {\n\t\t boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n }\n });\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(null, mapDispatchToProps)(GetDownloadUrlDialog);\n","import { Close, Delete, Edit, FileDownloadOutlined, InfoOutlined, Link as LinkIcon } from \"@mui/icons-material\";\nimport UploadFileIcon from \"@mui/icons-material/UploadFile\";\nimport { CircularProgress, Collapse, IconButton } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport { format } from \"date-fns\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport { bindActionCreators } from \"redux\";\nimport {\n\tIDetailFileMetadata,\n\tIFileDownloadData,\n\tISolutionTreeItem,\n} from \"../../resources/Contracts\";\nimport { Routing } from \"../../resources/Routes\";\nimport Texts from \"../../resources/Texts\";\nimport { Service } from \"../../services/Service\";\nimport { ApplicationState } from \"../../store\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport * as SelectedSolutionStore from \"../../store/SelectedSolution\";\nimport { formatFileSize, handleErrorMessage } from \"../../utils/utils\";\nimport RoleRestrictedComponent from \"../shared/formControls/RoleRestrictedComponent\";\nimport DeleteConfirmationDialog from \"../dialogs/DeleteConfirmationDialog\";\nimport \"./VersionRecord.scss\";\nimport NewFileVersionUpload from \"../fileManagement/NewFileVersionUpload\";\nimport GetDownloadUrlDialog from \"../dialogs/GetDownloadUrlDialog\";\n\ntype VersionRecordProps = SelectedSolutionStore.SelectedSolutionState &\n\ttypeof AlertStoreActionCreators & {\n\t\trecord: ISolutionTreeItem;\n\t\tonDelete: (id: string) => void;\n\t};\n\nconst VersionRecord: React.FC = (props) => {\n\tconst [open, setOpen] = React.useState(false);\n\tconst [downloadUrlDialogOpen, setDownloadUrlDialogOpen] = React.useState(false);\n\tconst [downloadUrl, setDownloadUrl] = React.useState(\"\");\n\tconst [fileMetadata, setFileMetadata] = React.useState();\n\tconst [loading, setLoading] = React.useState(false);\n\tconst [deleteDialogOpen, setDeleteDialogOpen] = React.useState(false);\n\tconst [uploadDialogOpen, setUploadDialogOpen] = React.useState(false);\n\tconst [permission, setPermission] = React.useState(\"\");\n\n\tReact.useEffect(() => {\n\t\tasync function fetchPermission() {\n\t\t\ttry {\n\t\t\t\tlet permission = fileMetadata?.permission;\n\t\t\t\tif (!fileMetadata) {\n\t\t\t\t\tsetLoading(true);\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst resultFileMetadata: IDetailFileMetadata = await Service.getFileDetailMetadata(props.record.id);\n\n\t\t\t\t\t\tsetFileMetadata(resultFileMetadata);\n\t\t\t\t\t\tpermission = resultFileMetadata?.permission;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\t\t\t\t\t}\n\n\t\t\t\t\tsetLoading(false);\n\t\t\t\t}\n\n\t\t\t\tif (!permission) {\n\t\t\t\t\tprops.addAlert({text: 'Failed to get file permission', type: 'error'});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetPermission(permission);\n\n\t\t\t} catch (err) {\n\t\t\t\tprops.addAlert({text: 'Failed to get file permission', type: 'error'});\n\t\t\t}\n\t\t}\n\n\t\tfetchPermission();\n\n\t}, []);\n\n\tconst handleDownloadClick = async () => {\n\t\ttry {\n\t\t\tconst fileDownloadData: IFileDownloadData = await Service.getFileDownloadLink(\n\t\t\t\tprops.record.id\n\t\t\t);\n\n\t\t\tconst aElement: HTMLAnchorElement = document.createElement(\"a\");\n\t\t\taElement.href = fileDownloadData.fileLink;\n\t\t\taElement.download = fileDownloadData.fileName;\n\n\t\t\tdocument.body.appendChild(aElement);\n\n\t\t\taElement.click();\n\t\t\taElement.remove();\n\t\t} catch (error) {\n\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\t\t}\n\t};\n\n\tconst handleGetDownloadLinkClick = async () => {\n\t\ttry {\n\t\t\tconst downloadUrl = `https://${window.location.host}/getFile/${props.record.id}?` + encodeURIComponent(`solution=${props.selectedGroup}&file=${props.record.text}`);\n\t\t\tsetDownloadUrl(downloadUrl);\n\t\t\tsetDownloadUrlDialogOpen(true);\n\t\t} catch (err) {\n\t\t\tprops.addAlert({text: 'Failed to get download URL', type: 'error'});\n\t\t}\n\t};\n\n\tconst handleOpenClick = async () => {\n\t\tif (!open && !fileMetadata) {\n\t\t\tsetLoading(true);\n\n\t\t\ttry {\n\t\t\t\tconst resultFileMetadata: IDetailFileMetadata = await Service.getFileDetailMetadata(\n\t\t\t\t\tprops.record.id\n\t\t\t\t);\n\n\t\t\t\tsetFileMetadata(resultFileMetadata);\n\t\t\t} catch (error) {\n\t\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\t\t\t}\n\n\t\t\tsetLoading(false);\n\t\t}\n\n\t\tsetOpen(!open);\n\t};\n\n\tconst handleDeleteConfirmed = () => {\n\t\tprops.onDelete(props.record.id);\n\t};\n\n\tconst handleCloseDownloadUrlDialog = () => setDownloadUrlDialogOpen(false);\n\n\tconst handleCloseUploadDialog = () => {\n\t\tsetUploadDialogOpen(false);\n\t};\n\n\tconst className: string = open ? \"versionRecord open\" : \"versionRecord\";\n\n\treturn (\n\t\t<>\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{props.record.text}\n\n\t\t\t\t\t\t{loading && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t setUploadDialogOpen(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t setDeleteDialogOpen(true)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t{!open && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpermission === 'Public' ?\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t\t
 
\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t{open && (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t setDeleteDialogOpen(false)}\n\t\t\t\t/>\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\ninterface AttributeValueProps {\n\tvalue: string;\n\tlabel: string;\n}\n\nconst AttributeValue: React.FC = (props) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{props.label}:\n\t\t\t\n\n\t\t\t\n\t\t\t\t{props.value}\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.selectedSolutions,\n\tmapDispatchToProps\n)(VersionRecord);\n","import { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { ISolutionTreeItem } from \"../../resources/Contracts\";\nimport VersionRecord from \"./VersionRecord\";\n\ninterface VersionRecordListProps {\n\tfileNodes: ISolutionTreeItem[];\n\tonDelete: (id: string) => void;\n}\n\nconst VersionRecordList: React.FC = (props) => {\n\treturn (\n\t\t\n\t\t\t{props.fileNodes?.map((record) => (\n\t\t\t\t\n\t\t\t))}\n\t\t\n\t);\n};\n\nexport default VersionRecordList;\n","import ArrowDropDownIcon from \"@mui/icons-material/ArrowDropDown\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport {\n\tCollapse,\n\tIconButton,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableContainer,\n\tTableRow,\n} from \"@mui/material\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { ISolutionTreeItem } from \"../../resources/Contracts\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport \"./BrowserDetailTable.scss\";\nimport VersionRecordList from \"./VersionRecordList\";\n\ntype RowProps = {\n\trow: ISolutionTreeItem;\n\tonDelete: (id: string) => void;\n};\n\nconst Row: React.FC = (props) => {\n\tconst { row } = props;\n\tconst [open, setOpen] = React.useState(false);\n\n\tconst className: string = open ? \"browser-detail-item\" : \"browser-detail-item closed\";\n\n\tconst rowText: string = row.text === \"00.00.00\" ? \"Latest\" : row.text;\n\n\treturn (\n\t\t<>\n\t\t\t *\": { borderBottom: \"unset\" } }}\n\t\t\t\tonClick={() => setOpen(!open)}\n\t\t\t\tclassName={className}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{open ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{rowText}\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\ntype BrowserDetailTableProps = typeof AlertStoreActionCreators & {\n\tdetailNodes: ISolutionTreeItem[];\n\tonDelete: (id: string) => void;\n};\n\nconst BrowserDetailTable: React.FC = (props) => {\n\tlet orderedNodes: ISolutionTreeItem[] = [];\n\n\tif (props.detailNodes) {\n\t\torderedNodes = props.detailNodes.filter((n) => n.text === \"00.00.00\");\n\t\torderedNodes = orderedNodes.concat(\n\t\t\tprops.detailNodes\n\t\t\t\t.filter((n) => n.text !== \"00.00.00\")\n\t\t\t\t.sort((a, b) => {\n\t\t\t\t\tif (a.text > b.text) return -1;\n\n\t\t\t\t\tif (a.text < b.text) return 1;\n\n\t\t\t\t\treturn 0;\n\t\t\t\t})\n\t\t);\n\n\t\torderedNodes = orderedNodes.filter((n) => n.nodes.length > 0);\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{orderedNodes.map((row) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(null, mapDispatchToProps)(BrowserDetailTable);\n","import Tab from \"@mui/material/Tab\";\nimport Tabs from \"@mui/material/Tabs\";\nimport * as React from \"react\";\nimport { ISolutionTreeItem } from \"../../resources/Contracts\";\nimport \"./SolutionsBrowserDetailTabs.scss\";\n\ntype SolutionsBrowserDetailTabsProps = {\n\ttabItems: ISolutionTreeItem[];\n\tvalue: string;\n\tonChange: (id: string) => void;\n};\n\nconst SolutionsBrowserDetailTabs: React.FC = (props) => {\n\tconst handleChange = (event: React.SyntheticEvent, newValue: string) => {\n\t\tprops.onChange(newValue);\n\t};\n\n\treturn (\n\t\t\n\t\t\t{props.tabItems\n\t\t\t\t? props.tabItems.map((tab, index) => (\n\t\t\t\t\t\n\t\t\t\t ))\n\t\t\t\t: null}\n\t\t\n\t);\n};\n\nexport default SolutionsBrowserDetailTabs;\n","import { CircularProgress } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { ISolutionTreeItem } from \"../../resources/Contracts\";\nimport { Service } from \"../../services/Service\";\nimport { ApplicationState } from \"../../store\";\nimport * as SelectedSolutionStore from \"../../store/SelectedSolution\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport BrowserDetailTable from \"./BrowserDetailTable\";\nimport SolutionsBrowserDetailTabs from \"./SolutionsBrowserDetailTabs\";\nimport { bindActionCreators } from \"redux\";\nimport { handleErrorMessage } from \"../../utils/utils\";\n\ntype SolutionsBrowserDetailProps = SelectedSolutionStore.SelectedSolutionState &\n\ttypeof AlertStoreActionCreators &\n\ttypeof SelectedSolutionStore.actionCreators & {};\n\nconst SolutionsBrowserDetail: React.FC = (props) => {\n\tconst [tabValue, setTabValue] = React.useState(null);\n\tconst [loading, setLoading] = React.useState(false);\n\tconst [detailItems, setDetailItems] = React.useState([]);\n\n\tconst loadFolderDetail = React.useCallback(async (): Promise => {\n\t\tsetLoading(true);\n\n\t\ttry {\n\t\t\tconst responseDetailItem: ISolutionTreeItem = await Service.getDetailItem(\n\t\t\t\tprops.selectedSolution.id\n\t\t\t);\n\n\t\t\tsetDetailItems(responseDetailItem.nodes);\n\n\t\t\tif (responseDetailItem.nodes?.length > 0) {\n\t\t\t\tsetTabValue(responseDetailItem.nodes[0].id);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\t// TODO LOG IN TO ERROR COMPONENT\n\t\t\tconsole.error(error);\n\n\t\t\tsetTabValue(null);\n\t\t}\n\n\t\tsetLoading(false);\n\t}, [props.selectedSolution]);\n\n\tReact.useEffect(() => {\n\t\tif (props.selectedSolution) {\n\t\t\tloadFolderDetail();\n\t\t} else {\n\t\t\tsetDetailItems([]);\n\t\t\tsetTabValue(null);\n\t\t}\n\t}, [props.selectedSolution, loadFolderDetail]);\n\n\tconst handleDelete = async (id: string): Promise => {\n\t\ttry {\n\t\t\tawait Service.deleteFile(id);\n\n\t\t\tconst detailItemsCopy: ISolutionTreeItem[] = detailItems.slice();\n\n\t\t\tdetailItemsCopy.forEach((tab) => {\n\t\t\t\ttab.nodes?.forEach((di) => {\n\t\t\t\t\tconst index: number = di.nodes.findIndex((x) => x.id === id);\n\n\t\t\t\t\tif (index > -1) {\n\t\t\t\t\t\tdi.nodes.splice(index, 1);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tsetDetailItems(detailItemsCopy);\n\t\t} catch (error) {\n\t\t\tprops.addErrorAlert(handleErrorMessage(error));\n\t\t}\n\t};\n\n\tconst handleChangeTab = (folderId: string) => {\n\t\tsetTabValue(folderId);\n\t};\n\n\treturn props.selectedSolution ? (\n\t\tloading ? (\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t) : (\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t node.id === tabValue)?.nodes\n\t\t\t\t\t}\n\t\t\t\t\tonDelete={handleDelete}\n\t\t\t\t/>\n\t\t\t\n\t\t)\n\t) : null;\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...SelectedSolutionStore.actionCreators,\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.selectedSolutions,\n\tmapDispatchToProps\n)(SolutionsBrowserDetail);\n","import { Box, Button, TextField } from \"@mui/material\";\nimport * as React from \"react\";\nimport Texts from \"../../resources/Texts\";\nimport \"./AddCategoryInput.scss\";\n\ntype AddCategoryInputProps = {\n\tonAdd: (name: string) => void;\n\tonCancel: () => void;\n\tdefaultValue?: string;\n\tprimaryButtonText?: string;\n};\n\nconst AddCategoryInput: React.FC = (props) => {\n\tconst [inputValue, setInputValue] = React.useState(props.defaultValue || \"\");\n\n\tconst handleInputChange = (\n\t\tevent: React.ChangeEvent\n\t) => {\n\t\tsetInputValue(event.target.value);\n\t};\n\n\tconst handleAddClick = (event: React.MouseEvent): void => {\n\t\tevent.stopPropagation();\n\n\t\tprops.onAdd(inputValue);\n\n\t\tsetInputValue(\"\");\n\t};\n\n\tconst handleCancelClick = (event: React.MouseEvent): void => {\n\t\tevent.stopPropagation();\n\n\t\tprops.onCancel();\n\n\t\tsetInputValue(props.defaultValue || \"\");\n\t};\n\n\treturn (\n\t\t\n\t\t\t e.stopPropagation()}\n\t\t\t/>\n\n\t\t\t\n\t\t\t\t{props.primaryButtonText || Texts.SolutionsView.Tabs.AddButton}\n\t\t\t\n\n\t\t\t\n\t\t\t\t{Texts.SolutionsView.Tabs.CancelButton}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default AddCategoryInput;\n","import AccountTreeIcon from \"@mui/icons-material/AccountTree\";\nimport ArrowDropDownIcon from \"@mui/icons-material/ArrowDropDown\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport UploadFileIcon from \"@mui/icons-material/UploadFile\";\nimport TreeItem from \"@mui/lab/TreeItem\";\nimport TreeView from \"@mui/lab/TreeView\";\nimport { Box, CircularProgress, Collapse, IconButton, Tooltip } from \"@mui/material\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { Link } from \"react-router-dom\";\nimport { bindActionCreators } from \"redux\";\nimport { ISolutionTreeItem } from \"../../resources/Contracts\";\nimport { SolutionsGroup } from \"../../resources/Enums\";\nimport { Routing } from \"../../resources/Routes\";\nimport Texts from \"../../resources/Texts\";\nimport { Service } from \"../../services/Service\";\nimport { ApplicationState } from \"../../store\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport * as SelectedSolutionStore from \"../../store/SelectedSolution\";\nimport { handleErrorMessage } from \"../../utils/utils\";\nimport DeleteConfirmationDialog from \"../dialogs/DeleteConfirmationDialog\";\nimport AddCategoryInput from \"../shared/AddCategoryInput\";\nimport RoleRestrictedComponent from \"../shared/formControls/RoleRestrictedComponent\";\nimport \"./SolutionsBrowserTree.scss\";\n\ntype SolutionsBrowserTreeProps = SelectedSolutionStore.SelectedSolutionState &\n\ttypeof SelectedSolutionStore.actionCreators &\n\ttypeof AlertStoreActionCreators & {\n\t\tsolutionId: number,\n\t\tsolutionGroup?: string,\n\t\tdefaultSelectedId?: string\n\t};\n\nconst SolutionsBrowserTree: React.FC = ({\n\tsolutionId,\n\tsolutionGroup,\n\tdefaultSelectedId,\n\tsetSelectedGroup,\n\tsetSelectedGroupId,\n\tsetSelectedSolution,\n\tselectedSolutionsTabId,\n\tsetSelectedSolutionTabId,\n\taddErrorAlert,\n}) => {\n\t//Tree items displayed\n\tconst [items, setItems] = React.useState([]);\n\t// Tree nodes with expanded children\n\tconst [expandedNodes, setExpandedNodes] = React.useState([]);\n\t// Selected tree item id\n\tconst [selectedSolutionId, setSelectedSolutionId] = React.useState(null);\n\t// Tree item data loading\n\tconst [loading, setLoading] = React.useState(false);\n\t// Is add folder to root input visible\n\tconst [addInputVisible, setAddInputVisible] = React.useState(false);\n\t// Id of tree item with add folder input active\n\tconst [visibleAddNodeId, setAddVisibleNodeId] = React.useState(null);\n\t// Id of tree item with add folder input active\n\tconst [visibleEditNodeId, setEditVisibleNodeId] = React.useState(null);\n\t// Is Delete dialog visible\n\tconst [deleteDialogOpen, setDeleteDialogOpen] = React.useState(false);\n\t// Item to be deleted after delete dialog is confirmed\n\tconst [itemToBeDeleted, setItemToBeDeleted] = React.useState(null);\n\n\tReact.useEffect(() => {\n\t\treturn () => {\n\t\t\tsetSelectedSolution(null);\n\t\t\tsetSelectedSolutionTabId(null);\n\t\t};\n\t}, [setSelectedSolution, setSelectedSolutionTabId]);\n\n\tconst loadItems = React.useCallback(\n\t\tasync (defaultSelectedId?: string): Promise => {\n\t\t\tsetLoading(true);\n\n\t\t\ttry {\n\t\t\t\tlet responseItem: ISolutionTreeItem;\n\n\t\t\t\tif (selectedSolutionsTabId) {\n\t\t\t\t\tresponseItem = await Service.getTabItem(selectedSolutionsTabId);\n\t\t\t\t} else if (\n\t\t\t\t\tsolutionGroup === SolutionsGroup.EOL ||\n\t\t\t\t\tsolutionGroup === SolutionsGroup.FieldNotices \n\t\t\t\t) {\n\t\t\t\t\tresponseItem = await Service.getFoldersStructure(solutionGroup, false);\n\t\t\t\t}\n\n\t\t\t\tif (defaultSelectedId && responseItem) {\n\t\t\t\t\tconst handleDefaultExpandedNodes = (\n\t\t\t\t\t\ttreeItem: ISolutionTreeItem,\n\t\t\t\t\t\tparentIds: string[]\n\t\t\t\t\t): void => {\n\t\t\t\t\t\tconst parentIdsCopy: string[] = parentIds.slice();\n\n\t\t\t\t\t\tif (treeItem.id === defaultSelectedId) {\n\t\t\t\t\t\t\tsetExpandedNodes(parentIdsCopy);\n\t\t\t\t\t\t} else if (treeItem.nodes?.length > 0) {\n\t\t\t\t\t\t\tparentIdsCopy.push(treeItem.id);\n\t\t\t\t\t\t\ttreeItem.nodes.forEach((n) =>\n\t\t\t\t\t\t\t\thandleDefaultExpandedNodes(n, parentIdsCopy)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\n\t\t\t\t\tconst findNodeInTree = (\n\t\t\t\t\t\tnodes: ISolutionTreeItem[],\n\t\t\t\t\t\tnodeId: string\n\t\t\t\t\t): ISolutionTreeItem => {\n\t\t\t\t\t\tlet stack: ISolutionTreeItem[] = nodes.slice();\n\n\t\t\t\t\t\tlet result: ISolutionTreeItem;\n\n\t\t\t\t\t\twhile (stack.length > 0) {\n\t\t\t\t\t\t\tresult = stack.pop();\n\n\t\t\t\t\t\t\tif (result.id === nodeId) {\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t} else if (result.nodes?.length > 0) {\n\t\t\t\t\t\t\t\tresult.nodes.forEach((child) => stack.push(child));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t};\n\n\t\t\t\t\thandleDefaultExpandedNodes(responseItem, []);\n\t\t\t\t\tsetSelectedSolutionId(defaultSelectedId);\n\t\t\t\t\tsetSelectedSolution(findNodeInTree(responseItem.nodes, defaultSelectedId));\n\t\t\t\t}\n\n\t\t\t\tsetItems(responseItem?.nodes);\n\t\t\t} catch (error) {\n\t\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t\t\tsetItems([]);\n\t\t\t}\n\n\t\t\tsetLoading(false);\n\t\t},\n\t\t[selectedSolutionsTabId, solutionGroup, setSelectedSolution, addErrorAlert]\n\t);\n\n\tReact.useEffect(() => {\n\t\tloadItems(defaultSelectedId);\n\t\tsetSelectedGroupId(solutionId);\n\t\tsetSelectedGroup(solutionGroup);\n\t\t\n\t\tsetSelectedSolutionId(null);\n\t}, [selectedSolutionsTabId, defaultSelectedId, loadItems, setSelectedGroupId, solutionId, setSelectedGroup, solutionGroup]);\n\n\tconst addFolder = async (folderId: string, folderName: string): Promise => {\n\t\tsetLoading(true);\n\n\t\ttry {\n\t\t\tawait Service.addNewFolder(folderId, folderName);\n\n\t\t\tloadItems();\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\n\t\tsetLoading(false);\n\t};\n\n\tconst editFolder = async (folderId: string, folderName: string): Promise => {\n\t\tsetLoading(true);\n\n\t\ttry {\n\t\t\tawait Service.editFolder(folderId, folderName);\n\n\t\t\tloadItems();\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\n\t\tsetLoading(false);\n\t};\n\n\tconst deleteFolder = async (folderId: string): Promise => {\n\t\tsetLoading(true);\n\n\t\ttry {\n\t\t\tawait Service.deleteFolder(folderId);\n\n\t\t\tloadItems();\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\n\t\tsetLoading(false);\n\t};\n\n\tconst handleNodeSelect = (event: React.SyntheticEvent, nodeId: Array | string) => {\n\t\tsetSelectedSolutionId(nodeId as string);\n\t};\n\n\tconst handleExpandedNodes = (nodeId: string) => {\n\t\tlet expandedNodesCopy: string[] = expandedNodes.slice();\n\n\t\tif (expandedNodesCopy.some((en) => en === nodeId)) {\n\t\t\texpandedNodesCopy = expandedNodesCopy.filter((n) => n !== nodeId);\n\t\t} else {\n\t\t\texpandedNodesCopy.push(nodeId);\n\t\t}\n\n\t\tsetExpandedNodes(expandedNodesCopy);\n\t};\n\n\tconst handleNodeClick = (node: ISolutionTreeItem) => {\n\t\tsetSelectedSolution(node);\n\n\t\tif (node.nodes?.length > 0) {\n\t\t\thandleExpandedNodes(node.id);\n\t\t}\n\t};\n\n\tconst handleAddNewRootCategoryClick = (): void => {\n\t\tsetAddInputVisible(true);\n\t};\n\n\tconst handleAddNewCategoryClick = (\n\t\tevent: React.MouseEvent,\n\t\tnodeId: string\n\t): void => {\n\t\tevent.stopPropagation();\n\n\t\tsetAddVisibleNodeId(nodeId);\n\t\tsetEditVisibleNodeId(null);\n\t};\n\n\tconst handleEditCategoryClick = (\n\t\tevent: React.MouseEvent,\n\t\tnodeId: string\n\t): void => {\n\t\tevent.stopPropagation();\n\n\t\tsetAddVisibleNodeId(null);\n\t\tsetEditVisibleNodeId(nodeId);\n\t};\n\n\tconst handleDeleteClick = (\n\t\tevent: React.MouseEvent,\n\t\tnode: ISolutionTreeItem\n\t): void => {\n\t\tevent.stopPropagation();\n\t\tsetItemToBeDeleted(node);\n\t\tsetDeleteDialogOpen(true);\n\t};\n\n\tconst handleNewRootCategoryAddClick = (folderName: string): void => {\n\t\tif (!selectedSolutionsTabId)\n\t\t\taddFolder(`${solutionId}`, folderName);\n\t\telse\n\t\t\taddFolder(selectedSolutionsTabId, folderName);\n\n\t\tsetAddInputVisible(false);\n\t};\n\n\tconst handleNewCategoryAddClick = (folderId: string, folderName: string): void => {\n\t\taddFolder(folderId, folderName);\n\n\t\tsetAddVisibleNodeId(null);\n\t};\n\n\tconst handleEditCategoryAddClick = (folderId: string, folderName: string): void => {\n\t\teditFolder(folderId, folderName);\n\n\t\tsetEditVisibleNodeId(null);\n\t};\n\n\tconst handleNewRootCategoryCancelClick = (): void => {\n\t\tsetAddInputVisible(false);\n\t};\n\n\tconst handleNewCategoryCancelClick = (): void => {\n\t\tsetAddVisibleNodeId(null);\n\t};\n\n\tconst handleEditCategoryCancelClick = (): void => {\n\t\tsetEditVisibleNodeId(null);\n\t};\n\n\tconst handleDeleteDialogClose = (): void => {\n\t\tsetDeleteDialogOpen(false);\n\t\tsetItemToBeDeleted(null);\n\t};\n\n\tconst handleDeleteDialogConfirm = (): void => {\n\t\tconst itemId: string = itemToBeDeleted.id;\n\n\t\tdeleteFolder(itemId);\n\t};\n\n\tconst renderTreeItems = (node: ISolutionTreeItem) => {\n\t\tlet className: string = expandedNodes.some((sn) => sn === node.id)\n\t\t\t? \"tree-item expanded\"\n\t\t\t: \"tree-item\";\n\n\t\tif (node.id === selectedSolutionId) {\n\t\t\tclassName = `${className} selected`;\n\t\t}\n\n\t\tlet label: React.ReactNode;\n\n\t\tlabel = (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{node.text}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t handleAddNewCategoryClick(event, node.id)}\n\t\t\t\t\t\t\t\t\tdisableRipple\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t handleEditCategoryClick(event, node.id)}\n\t\t\t\t\t\t\t\t\tdisableRipple\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t handleDeleteClick(event, node)}\n\t\t\t\t\t\t\t\t\tdisableRipple\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t handleNewCategoryAddClick(node.id, name)}\n\t\t\t\t\t\tonCancel={handleNewCategoryCancelClick}\n\t\t\t\t\t/>\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t handleEditCategoryAddClick(node.id, name)}\n\t\t\t\t\t\tonCancel={handleEditCategoryCancelClick}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t\n\t\t);\n\n\t\treturn (\n\t\t\t handleNodeClick(node)}\n\t\t\t\tclassName={className}\n\t\t\t>\n\t\t\t\t{Array.isArray(node.nodes) && node.nodes?.length > 0\n\t\t\t\t\t? node.nodes.map((subNode) => renderTreeItems(subNode))\n\t\t\t\t\t: null}\n\t\t\t\n\t\t);\n\t};\n\n\treturn loading ? (\n\t\t\n\t\t\t\n\t\t\n\t) : (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.SolutionsView.Tabs.AddNewCategory}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t}\n\t\t\t\tdefaultExpandIcon={}\n\t\t\t\tonNodeSelect={handleNodeSelect}\n\t\t\t\texpanded={expandedNodes}\n\t\t\t\tselected={selectedSolutionId ? [selectedSolutionId] : []}\n\t\t\t>\n\t\t\t\t{items?.map((node) => renderTreeItems(node))}\n\t\t\t\n\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...SelectedSolutionStore.actionCreators,\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.selectedSolutions,\n\tmapDispatchToProps\n)(SolutionsBrowserTree);\n","import { Collapse } from \"@mui/material\";\nimport * as React from \"react\";\nimport AddCategoryInput from \"../shared/AddCategoryInput\";\n\ntype NewSolutionsTabsInputProps = {\n\tvisible: boolean;\n\tonAdd: (name: string) => void;\n\tonCancel: () => void;\n};\n\nconst NewSolutionsTabsInput: React.FC = (props) => {\n\tconst handleAddClick = (name: string): void => {\n\t\tprops.onAdd(name);\n\t};\n\n\tconst handleCancelClick = (): void => {\n\t\tprops.onCancel();\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default NewSolutionsTabsInput;\n","import AccountTreeIcon from \"@mui/icons-material/AccountTree\";\nimport { Box, CircularProgress } from \"@mui/material\";\nimport Tab from \"@mui/material/Tab\";\nimport Tabs from \"@mui/material/Tabs\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport { ISolutionTab } from \"../../resources/Contracts\";\nimport Texts from \"../../resources/Texts\";\nimport { Service } from \"../../services/Service\";\nimport { ApplicationState } from \"../../store\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport * as SelectedSolutionStore from \"../../store/SelectedSolution\";\nimport { handleErrorMessage } from \"../../utils/utils\";\nimport RoleRestrictedComponent from \"../shared/formControls/RoleRestrictedComponent\";\nimport NewSolutionsTabsInput from \"./NewSolutionsTabsInput\";\nimport \"./SolutionsTabs.scss\";\n\ntype SolutionsTabsProps = typeof SelectedSolutionStore.actionCreators &\n\ttypeof AlertStoreActionCreators &\n\tSelectedSolutionStore.SelectedSolutionState & {\n\t\tsolutionId: number;\n\t\tsolutionGroup: string;\n\t\tdefaultSelectedTabId: string;\n\t};\n\nconst SolutionsTabs: React.FC = ({\n\tsolutionId,\n\tsolutionGroup,\n\tsetSelectedSolution,\n\tdefaultSelectedTabId,\n\tselectedSolutionsTabId,\n\tsetSelectedSolutionTabId,\n\taddErrorAlert,\n}) => {\n\tconst [parentItem, setParentItem] = React.useState(null);\n\tconst [tabs, setTabs] = React.useState([]);\n\tconst [loading, setLoading] = React.useState(false);\n\tconst [newTabInputVisible, setnewTabInputVisible] = React.useState(false);\n\n\tconst loadTabs = React.useCallback(\n\t\tasync (setFirstAsSelected: boolean): Promise => {\n\t\t\tsetLoading(true);\n\n\t\t\ttry {\n\t\t\t\tif (solutionId) {\n\t\t\t\t\tconst responseItems: ISolutionTab[] = await Service.getTabsByCategoryId(\n\t\t\t\t\t\tsolutionId\n\t\t\t\t\t);\n\n\t\t\t\t\tsetTabs(responseItems.slice(1));\n\t\t\t\t\tsetParentItem(responseItems[0]);\n\n\t\t\t\t\tif (responseItems?.[1] && setFirstAsSelected) {\n\t\t\t\t\t\tsetSelectedSolutionTabId(responseItems[1].id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t\t}\n\n\t\t\tsetLoading(false);\n\t\t},\n\t\t[solutionGroup, solutionId, setSelectedSolutionTabId, addErrorAlert]\n\t);\n\n\tReact.useEffect(() => {\n\t\tif (defaultSelectedTabId) {\n\t\t\tsetSelectedSolutionTabId(Number(defaultSelectedTabId).toString());\n\t\t}\n\n\t\tloadTabs(!defaultSelectedTabId);\n\t}, [loadTabs, defaultSelectedTabId, setSelectedSolutionTabId]);\n\n\tconst addNewTab = async (tabName: string): Promise => {\n\t\tsetLoading(true);\n\n\t\ttry {\n\t\t\tawait Service.addNewFolder(parentItem.id, tabName);\n\n\t\t\tloadTabs(false);\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\n\t\tsetLoading(false);\n\t};\n\n\tconst handleTabSelect = (event: React.SyntheticEvent, newValue: string): void => {\n\t\tsetSelectedSolutionTabId(newValue);\n\t\tsetSelectedSolution(null);\n\t};\n\n\tconst setInputVisible = (): void => {\n\t\tsetnewTabInputVisible(true);\n\t};\n\n\tconst setInputHidden = (): void => {\n\t\tsetnewTabInputVisible(false);\n\t};\n\n\tconst handleAddNewTab = (tabName: string): void => {\n\t\taddNewTab(tabName);\n\n\t\tsetnewTabInputVisible(false);\n\t};\n\n\treturn loading ? (\n\t\t\n\t) : (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{tabs.map((tab) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{Texts.SolutionsView.Tabs.AddNewCategory}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...SelectedSolutionStore.actionCreators,\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(\n\t(state: ApplicationState) => state.selectedSolutions,\n\tmapDispatchToProps\n)(SolutionsTabs);\n","var _defs, _g;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) { o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } } return t; }\nimport React from \"react\";\nvar SvgIconEolNoticeBlack = function SvgIconEolNoticeBlack(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28.629,\n height: 37.409,\n viewBox: \"0 0 30 40\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .line-eol {\\n fill: none;\\n stroke: #000;\\n stroke-width: 2px;\\n stroke-linejoin: round;\\n stroke-linecap: round;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icon-eol-notice-black\",\n transform: \"translate(-13.469 1.645)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_24\",\n \"data-name\": \"Path 24\",\n className: \"line-eol\",\n d: \"M516.6,844.186v-7.708h7.2\",\n transform: \"translate(-483.057 -810.439)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_7\",\n \"data-name\": \"Line 7\",\n className: \"line-eol\",\n x2: 17.846,\n transform: \"translate(18.455 5)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_8\",\n \"data-name\": \"Line 8\",\n className: \"line-eol\",\n x2: 13.597,\n transform: \"translate(18.605 9.365)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_9\",\n \"data-name\": \"Line 9\",\n className: \"line-eol\",\n x2: 13.597,\n transform: \"translate(18.605 14.076)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_5\",\n \"data-name\": \"Line 5\",\n className: \"line-eol\",\n x2: 9.78,\n y2: 9.78,\n transform: \"translate(20.606 19.185)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_10\",\n \"data-name\": \"Line 10\",\n className: \"line-eol\",\n x1: 9.78,\n y2: 9.78,\n transform: \"translate(20.606 19.185)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_25\",\n \"data-name\": \"Path 25\",\n className: \"line-eol\",\n d: \"M2.685,2.456V37.865H22l7.313-7.313V2.456Z\",\n transform: \"translate(11.784 -3.101)\"\n }))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconEolNoticeBlack, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-eol-notice-black.75c5364d.svg\";\nexport { ForwardRef as ReactComponent };","import { Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { SolutionsGroup } from \"../../resources/Enums\";\nimport { ApplicationState } from \"../../store\";\nimport { CurrentUserState } from \"../../store/CurrentUser\";\nimport SolutionsBrowserDetail from \"./SolutionBrowserDetail\";\nimport \"./SolutionsBrowser.scss\";\nimport SolutionsBrowserTree from \"./SolutionsBrowserTree\";\nimport SolutionsTabs from \"./SolutionsTabs\";\nimport Texts from \"../../resources/Texts\";\nimport { parseViewParameters } from \"../../utils/viewUtils\";\nimport { SolutionsViewRouteParamaters } from \"../../resources/RouteParams\";\nimport { useLocation } from \"react-router\";\n\ntype SolutionsBrowserProps = CurrentUserState & {\n\tsolutionGroup: string;\n\tsolutionId: number;\n\tshowTabs: boolean;\n\tdefaultSelectedId?: string;\n};\n\nconst SolutionsBrowser: React.FC = ({\n\tsolutionGroup,\n\tsolutionId,\n\tshowTabs,\n\tdefaultSelectedId,\n\tuser,\n}) => {\n\tconst viewParameters = parseViewParameters(useLocation().search);\n\n\tlet browserAccessible: boolean = true;\n\n\tif (\n\t\t!user &&\n\t\tsolutionGroup !== SolutionsGroup.EOL &&\n\t\tsolutionGroup !== SolutionsGroup.FieldNotices \n\t) {\n\t\tbrowserAccessible = false;\n\t}\n\n\tif (!browserAccessible) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{Texts.SolutionsView.UnauthorizedAccess}\n\t\t\t\n\t\t);\n\t}\n\n\treturn (\n\t\t\n\t\t\t{showTabs && (\n\t\t\t\t\n\t\t\t)}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default connect((state: ApplicationState) => state.currentUser)(SolutionsBrowser);\n","var _defs, _g;\nvar _excluded = [\"svgRef\", \"title\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) { ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) { o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) { if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } } return t; }\nimport React from \"react\";\nvar SvgIconFieldNoticesBlack = function SvgIconFieldNoticesBlack(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 38.588,\n height: 37,\n viewBox: \"0 0 38.588 37\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"style\", null, \"\\n .line-field {\\n fill: none;\\n stroke: #000;\\n stroke-width: 2px;\\n stroke-linejoin: round;\\n stroke-linecap: round;\\n }\\n \"))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"icon-field-notices-black\",\n transform: \"translate(-2.013 -1.5)\"\n }, /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_19\",\n \"data-name\": \"Line 19\",\n className: \"line-field\",\n y2: 3,\n transform: \"translate(21.5 2.5)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_28\",\n \"data-name\": \"Path 28\",\n className: \"line-field\",\n d: \"M11.013,5.7h23.8l4.786,3.7-4.786,3.753h-23.8Z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"Path_29\",\n \"data-name\": \"Path 29\",\n className: \"line-field\",\n d: \"M39.6,5.7H15.8l-4.786,3.7L15.8,13.148H39.6Z\",\n transform: \"translate(-8 13)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_20\",\n \"data-name\": \"Line 20\",\n className: \"line-field\",\n y2: 5,\n transform: \"translate(21.5 13.5)\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n id: \"Line_21\",\n \"data-name\": \"Line 21\",\n className: \"line-field\",\n y2: 11.352,\n transform: \"translate(21.5 26.148)\"\n }))));\n};\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgIconFieldNoticesBlack, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/icon-field-notices-black.c7509903.svg\";\nexport { ForwardRef as ReactComponent };","import { Container, Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport ViewHeader from \"../../components/shared/ViewHeader\";\nimport SolutionsBrowser from \"../../components/solutionsBrowser/SolutionsBrowser\";\nimport { ReactComponent as EolNoticeIcon } from \"../../images/icons/icon-eol-notice-black.svg\";\nimport { ReactComponent as FieldNoticesIcon } from \"../../images/icons/icon-field-notices-black.svg\";\nimport { SolutionsGroup } from \"../../resources/Enums\";\nimport { SolutionsViewRouteParamaters } from \"../../resources/RouteParams\";\nimport Texts from \"../../resources/Texts\";\nimport { parseViewParameters } from \"../../utils/viewUtils\";\nimport \"./SolutionsView.scss\";\nimport { ISolutionTab } from \"../../resources/Contracts\";\nimport { Service } from \"../../services/Service\";\nimport { bindActionCreators } from \"redux\";\nimport { connect } from \"react-redux\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport { handleErrorMessage } from \"../../utils/utils\";\n\ntype SolutionsViewProps = typeof AlertStoreActionCreators & {};\n\nconst SolutionsView: React.FunctionComponent = ({ addErrorAlert }) => {\n\tconst viewParameters = parseViewParameters(useLocation().search);\n\n\tconst [parentItem, setParentItem] = React.useState(null);\n\n\tconst loadTabs = React.useCallback(async (): Promise => {\n\t\ttry {\n\t\t\tif (viewParameters.id) {\n\t\t\t\tconst responseItems: ISolutionTab[] = await Service.getTabsByCategoryId(\n\t\t\t\t\tviewParameters.id\n\t\t\t\t);\n\t\t\t\tsetParentItem(responseItems[0]);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\t}, [addErrorAlert, viewParameters.id]);\n\n\tReact.useEffect(() => {\n\t\tloadTabs();\n\t}, [loadTabs]);\n\n\tlet solutionsTitleText: string;\n\tlet solutionsTitleIcon: JSX.Element;\n\tlet showTabs: boolean;\n\n\tswitch (viewParameters.group) {\n\t\tcase SolutionsGroup.EOL:\n\t\t\tsolutionsTitleText = Texts.SolutionGroups.EOL;\n\t\t\tsolutionsTitleIcon = ;\n\t\t\tshowTabs = false;\n\t\t\tbreak;\n\n\t\tcase SolutionsGroup.FieldNotices:\n\t\t\tsolutionsTitleText = Texts.SolutionGroups.FieldNotices;\n\t\t\tsolutionsTitleIcon = ;\n\t\t\tshowTabs = false;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tsolutionsTitleText = parentItem?.navigationName;\n\n\t\t\tif (parentItem?.icon) {\n\t\t\t\tlet icon: string;\n\n\t\t\t\tif (parentItem.icon.startsWith(\"data:\")) {\n\t\t\t\t\tconst splitIconValue = parentItem.icon.split(\",\");\n\n\t\t\t\t\ticon = splitIconValue[splitIconValue.length - 1];\n\t\t\t\t} else {\n\t\t\t\t\ticon = parentItem.icon;\n\t\t\t\t}\n\n\t\t\t\tsolutionsTitleIcon = (\n\t\t\t\t\t\"\"\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tsolutionsTitleIcon = ;\n\t\t\t}\n\n\t\t\tshowTabs = true;\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{solutionsTitleIcon}\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{solutionsTitleText}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(null, mapDispatchToProps)(SolutionsView);\n","import {\n\tContainer,\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableContainer,\n\tTableRow,\n\tTypography,\n} from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport ViewHeader from \"../../components/shared/ViewHeader\";\nimport Texts from \"../../resources/Texts\";\nimport { Contacts } from \"../../resources/Contacts.json\";\nimport \"./ContactsView.scss\";\n\ninterface ContactsViewProps {}\n\nconst ContactsView: React.FunctionComponent = (props) => {\n\treturn (\n\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{Texts.ContactsView.Title}\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.ContactsView.VideoNetworksTitle}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{Contacts.VideoNetworks.Items.map((item) => (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{item.Name || <> }\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{item.ContactPhoneNumber}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{Texts.ContactsView.RegionalNumbersTitle}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{Contacts.RegionalNumbers.Items.map((item) => (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{item.Name || <> }\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{item.ContactCity || <> }\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{item.ContactPhoneNumber || <> }\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t);\n};\n\nexport default ContactsView;\n","import { Button, TableCell, TableRow } from \"@mui/material\";\nimport * as React from \"react\";\nimport * as Contracts from \"../../resources/Contracts\";\nimport { Service } from \"../../services/Service\";\n\n\ntype OpensourceTableProps = {\n\tosDoc: Contracts.IOpensourceFile;\n};\n\nconst OpensourceTableRow: React.FunctionComponent = ({\n\tosDoc,\n}) => {\n\tconst [value, setValue] = React.useState(osDoc);\n\n\tReact.useEffect(() => {\n\t\tsetValue(osDoc);\n\t}, [osDoc]);\n \t\n const handleDocView = async (Filename: string) => {\n\t\ttry {\n\t\t\tconst fileDownloadData: Contracts.IDocumentLink = await Service.getDocumentLink(Filename);\n\n\t\t\tconst aElement: HTMLAnchorElement = document.createElement(\"a\");\n\t\t\taElement.href = fileDownloadData.url;\n\t\t\taElement.download = fileDownloadData.filename;\n console.log(fileDownloadData);\n console.log(aElement);\n\t\t\tdocument.body.appendChild(aElement);\n\n\t\t\taElement.click();\n\t\t\taElement.remove();\n\t\t} catch (error) {\n\t\t\tconsole.log(error);\n\t\t}\n\t};\n\n\treturn (\n\t\t\n \n\t\t\t\t{value.ProductName || <> }\n\t\t\t\n \n\t\t\t\t{value.ProductRelease || <> }\n\t\t\t\n \n\t\t\t\t{value.Title || <> }\n\t\t\t\n\n\t\t\t\n\t\t\t\t{value.Description}\n\t\t\t\n \n\t\t\t\t{value.ProductReleaseDate}\n\t\t\t\n \n handleDocView(value.Filename)}\n\t\t\t\t>\n\t\t\t\t\tVIEW\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default OpensourceTableRow;\n","import { Table, TableBody, TableHead, TableRow, TableCell, TableContainer } from \"@mui/material\";\nimport * as React from \"react\";\nimport * as Contracts from \"../../resources/Contracts\";\nimport OpensourceTableRow from \"./opensourceTableRow\";\n\ntype OpensourceTableProps = {\n\tosDoc: Contracts.IOpensourceFile[];\n};\n\nconst OpensourceTable: React.FunctionComponent = ({\n\tosDoc,\n}) => {\n\treturn (\n\t\n\t\t\t\n \n \n Product\n Release\n Title\n\t\t\t Description\n Release Date\n \n \n \n\t\t\t\t\n\t\t\t\t\t{osDoc.map((item, fileUniqueId) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n};\n\nexport default OpensourceTable;\n","import { CircularProgress, Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as Contracts from \"../../resources/Contracts\";\nimport { Service } from \"../../services/Service\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport { handleErrorMessage } from \"../../utils/utils\";\nimport OpensourceTable from \"./opensourceTable\";\nimport \"./opensourceListContainer.scss\";\n//import AddDocumentSection from \"./opensourceAddDocument\";\nimport Texts from \"../../resources/Texts\";\n\ntype OpensourceContainerProps = typeof AlertStoreActionCreators & {};\n\nconst OpensourceContainer: React.FunctionComponent = ({\n\taddErrorAlert,\n}) => {\n\tconst [loading, setLoading] = React.useState(false);\n\tconst [opensourceDocuments, setOpensourceDocuments] = React.useState([]);\n\n\tconst loadDocumentList = React.useCallback(async (): Promise => {\n\t\tsetLoading(true);\n\n\t\ttry {\n\t\t\tconst responseItems: Contracts.IOpensourceFile[] = await Service.getOpensourceFiles();\n\n\t\t\tsetOpensourceDocuments(responseItems);\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\n\t\tsetLoading(false);\n\t}, [addErrorAlert]);\n\n\tReact.useEffect(() => {\n\t\tloadDocumentList();\n\t}, [loadDocumentList]);\n\n\t//const handleAddNewCategory = async (category: Contracts.IOpensourceFile): Promise => {\n\t//\ttry {\n\t//\t\tawait Service.addNewCategory(category);\n\n\t//\t\tloadDocumentList();\n\t//\t} catch (error) {\n\t//\t\taddErrorAlert(handleErrorMessage(error));\n\t//\t}\n\t//};\n\n\t//const handleDeleteCategory = async (id: number): Promise => {\n\t\t//try {\n\t\t//\tawait Service.deleteCategory(id);\n\n\t\t//\tloadCategories();\n\t\t//} catch (error) {\n\t\t//\taddErrorAlert(handleErrorMessage(error));\n\t\t//}\n\t//};\n\n\t//const handleUpdateCategory = async (value: Contracts.IOpensourceFile): Promise => {\n\t\t//try {\n\t\t//\tawait Service.updateCategory(value);\n\n\t\t//\tloadCategories();\n\t\t//} catch (error) {\n\t\t//\taddErrorAlert(handleErrorMessage(error));\n\t\t//}\n\t//};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{Texts.OpensourceView.Title}\n\t\t\t\n

{Texts.OpensourceView.Disclaimer}

\n

Please contact {Texts.OpensourceView.ContactLinkText} to obtain source code.

\n

\n\t\t\t{loading ? (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t) : (\n\t\t\t\t\n \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(null, mapDispatchToProps)(OpensourceContainer);\n","import { Container } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport \"./OpensourceView.scss\";\nimport OpensourceListContainer from \"../../components/opensourceList/opensourceListContainer\";\n\ninterface OpensourceViewProps {}\n\nconst OpensourceView: React.FunctionComponent = (props) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default OpensourceView;\n","import { Container, Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport \"./HelpView.scss\";\nimport ViewHeader from \"../../components/shared/ViewHeader\";\nimport downloadLink from \"./downloadlink.png\";\nimport downloadDialog from \"./downloadDialog.png\"\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport UploadFileIcon from \"@mui/icons-material/UploadFile\";\nimport overwriteFile from \"./overwriteFile.png\"\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutline';\nimport Texts from \"../../resources/Texts\";\n\ninterface OpensourceViewProps {}\n\nconst HelpView: React.FunctionComponent = () => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\t\tHelp\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t

Software Download APIs

\n\t\t\t\t\t\t

The Software Download Portal now supports Software Download APIs that can\n\t\t\t\t\t\t\tbe integrated with your product\n\t\t\t\t\t\t\tso that you can automatically download new updates etc. without the customer\n\t\t\t\t\t\t\thaving to manually download updates.\n\t\t\t\t\t\t

\n\t\t\t\t\t\t

Download Link

\n\t\t\t\t\t\t

For software/documentation which have been marked as public, you can now\n\t\t\t\t\t\t\tget a direct download link that can be shared.\n\t\t\t\t\t\t\tFor example, if you have a PDF user guide for a product, you can get a download\n\t\t\t\t\t\t\tURL and convert it to a QR\n\t\t\t\t\t\t\tcode to be shared with your customers.

\n\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t

If the item is public then a new download link will be displayed as shown\n\t\t\t\t\t\t\tabove.\n\t\t\t\t\t\t\tClick on that in order to get the download URL.

\n\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t

You can then click on to copy the URL to the clipboard.

\n\t\t\t\t\t\t

For further details please contact Neil Thomas\n\t\t\t\t\t\t\t(neithoma@synamedia.com)

\n\t\t\t\t\t\t

Overwrite A File

\n\t\t\t\t\t\t

If you've shared a download link e.g. as a QR code to a user guide, and you want\n\t\t\t\t\t\t\tto update\n\t\t\t\t\t\t\tthat file without generating a new URL, you can overwrite the\n\t\t\t\t\t\t\tfile. Note: \n\t\t\t\t\t\t\tThe old version of the file will no longer be accessible so you must\n\t\t\t\t\t\t\tdownload/re-upload as\n\t\t\t\t\t\t\ta new file first if you wish to retain it. Click on to upload the new\n\t\t\t\t\t\t\tversion.\n\t\t\t\t\t\t

\n\t\t\t\t\t\t\"\"\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t\n\t);\n};\n\nexport default HelpView;\n","import Delete from \"@mui/icons-material/Delete\";\nimport Edit from \"@mui/icons-material/Edit\";\nimport Save from \"@mui/icons-material/Save\";\nimport Cancel from \"@mui/icons-material/Cancel\";\nimport { Button, IconButton, TableCell, TableRow } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport * as Contracts from \"../../resources/Contracts\";\nimport TextFormField from \"../shared/formControls/TextFormField\";\n\ntype CategoryTableProps = {\n\tcategory: Contracts.ICategory;\n\tonDelete: (id: number) => void;\n\tonSave: (value: Contracts.ICategory) => void;\n};\n\nconst CategoryTableRow: React.FunctionComponent = ({\n\tcategory,\n\tonDelete,\n\tonSave,\n}) => {\n\tconst [value, setValue] = React.useState(category);\n\tconst [editModeActive, setEditMode] = React.useState(false);\n\n\tReact.useEffect(() => {\n\t\tsetValue(category);\n\t}, [category]);\n\n\tlet icon: string;\n\n\tif (value.icon) {\n\t\tif (value.icon.startsWith(\"data:\")) {\n\t\t\tconst splitIconValue = value.icon.split(\",\");\n\n\t\t\ticon = splitIconValue[splitIconValue.length - 1];\n\t\t} else {\n\t\t\ticon = value.icon;\n\t\t}\n\t}\n\n\tconst handleNameChange = (nameValue: string) => {\n\t\tsetValue({\n\t\t\t...value,\n\t\t\tnavigationName: nameValue,\n\t\t});\n\t};\n\n\tconst handleIconChange = (event: React.ChangeEvent): void => {\n\t\tconst selectedFile: File = event.target.files?.[0];\n\n\t\tif (selectedFile) {\n\t\t\tvar reader = new FileReader();\n\n\t\t\treader.readAsDataURL(selectedFile);\n\n\t\t\treader.onload = function () {\n\t\t\t\tsetValue({ ...value, icon: reader.result as string });\n\t\t\t};\n\n\t\t\treader.onerror = function (error) {\n\t\t\t\tconsole.log(\"Error: \", error);\n\t\t\t};\n\t\t}\n\t};\n\n\tconst handleDelete = () => {\n\t\tonDelete(value.id);\n\t};\n\n\tconst handleCancel = () => {\n\t\tsetEditMode(false);\n\t\tsetValue(category);\n\t};\n\n\tconst handleEdit = () => {\n\t\tif (editModeActive) {\n\t\t\tonSave(value);\n\t\t\tsetEditMode(false);\n\t\t} else {\n\t\t\tsetEditMode(true);\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{editModeActive ? (\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\tvalue.navigationName || <> \n\t\t\t\t)}\n\t\t\t\n\t\t\t\n\t\t\t\t{editModeActive ? (\n\t\t\t\t\t\n\t\t\t\t) : value.icon ? (\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{editModeActive ? : }\n\t\t\t\t\n\n\t\t\t\t{editModeActive && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default CategoryTableRow;\n","import { Table, TableBody, TableContainer } from \"@mui/material\";\nimport * as React from \"react\";\nimport * as Contracts from \"../../resources/Contracts\";\nimport CategoryTableRow from \"./CategoryTableRow\";\n\ntype CategoryTableProps = {\n\tcategories: Contracts.ICategory[];\n\tonDelete: (id: number) => void;\n\tonSave: (value: Contracts.ICategory) => void;\n};\n\nconst CategoryTable: React.FunctionComponent = ({\n\tcategories,\n\tonDelete,\n\tonSave,\n}) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{categories?.map((item, index) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n};\n\nexport default CategoryTable;\n","import { Button } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport * as Contracts from \"../../resources/Contracts\";\nimport Texts from \"../../resources/Texts\";\nimport TextFormField from \"../shared/formControls/TextFormField\";\n\ntype AddCategorySectionProps = {\n\tonAdd: (category: Contracts.ICategory) => void;\n};\n\nconst AddCategorySection: React.FunctionComponent = ({ onAdd }) => {\n\tconst [file, setFile] = React.useState(null);\n\tconst [selectedFileName, setSelectedFileName] = React.useState(null);\n\tconst [categoryName, setCategoryName] = React.useState(null);\n\n\tconst handleFileSelect = (event: React.ChangeEvent): void => {\n\t\tconst selectedFile: File = event.target.files?.[0];\n\n\t\tsetSelectedFileName(selectedFile?.name);\n\n\t\tif (selectedFile) {\n\t\t\tvar reader = new FileReader();\n\n\t\t\treader.readAsDataURL(selectedFile);\n\n\t\t\treader.onload = function () {\n\t\t\t\tsetFile(reader.result as string);\n\t\t\t};\n\n\t\t\treader.onerror = function (error) {\n\t\t\t\tconsole.log(\"Error: \", error);\n\t\t\t};\n\t\t}\n\t};\n\n\tconst handleAdd = () => {\n\t\tonAdd({\n\t\t\ticon: file,\n\t\t\tnavigationName: categoryName,\n\t\t});\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{file && selectedFileName}\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{Texts.CategoryManagementView.AddButton}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default AddCategorySection;\n","import { CircularProgress, Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as Contracts from \"../../resources/Contracts\";\nimport { Service } from \"../../services/Service\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport { handleErrorMessage } from \"../../utils/utils\";\nimport CategoryTable from \"./CategoryTable\";\nimport \"./CategoryManagementContainer.scss\";\nimport AddCategorySection from \"./AddCategorySection\";\nimport Texts from \"../../resources/Texts\";\n\ntype CategoryManagementContainerProps = typeof AlertStoreActionCreators & {};\n\nconst CategoryManagementContainer: React.FunctionComponent = ({\n\taddErrorAlert,\n}) => {\n\tconst [loading, setLoading] = React.useState(false);\n\tconst [solutionCategories, setSolutionCategories] = React.useState([]);\n\n\tconst loadCategories = React.useCallback(async (): Promise => {\n\t\tsetLoading(true);\n\n\t\ttry {\n\t\t\tconst responseItems: Contracts.ICategory[] = await Service.getCategories();\n\n\t\t\tsetSolutionCategories(responseItems);\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\n\t\tsetLoading(false);\n\t}, []);\n\n\tReact.useEffect(() => {\n\t\tloadCategories();\n\t}, []);\n\n\tconst handleAddNewCategory = async (category: Contracts.ICategory): Promise => {\n\t\ttry {\n\t\t\tawait Service.addNewCategory(category);\n\n\t\t\tloadCategories();\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\t};\n\n\tconst handleDeleteCategory = async (id: number): Promise => {\n\t\ttry {\n\t\t\tawait Service.deleteCategory(id);\n\n\t\t\tloadCategories();\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\t};\n\n\tconst handleUpdateCategory = async (value: Contracts.ICategory): Promise => {\n\t\ttry {\n\t\t\tawait Service.updateCategory(value);\n\n\t\t\tloadCategories();\n\t\t} catch (error) {\n\t\t\taddErrorAlert(handleErrorMessage(error));\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{Texts.CategoryManagementView.ViewTitle}\n\t\t\t\n\n\t\t\t{loading ? (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(null, mapDispatchToProps)(CategoryManagementContainer);\n","import { Container } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport \"./CategoryManagementView.scss\";\nimport CategoryManagementContainer from \"../../components/categoryManagement/CategoryManagementContainer\";\n\ninterface CategoryManagementViewProps {}\n\nconst CategoryManagementView: React.FunctionComponent = (props) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default CategoryManagementView;\n","/*\n ChannelList component (tsx)\n --------------------------------------------------------------------------------\n description\n ------------------------------\n This version: 17/07/2024\n*/\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\n\n// mui\nimport Box from '@mui/material/Box';\nimport { Alert, Button, Stack, Typography } from '@mui/material';\nimport { DataGrid, GridColDef, GridEventListener } from '@mui/x-data-grid';\n\n// custom\nimport CustomTextField from '../CustomTextField';\nimport { IChannelCompany, IChannel, IChannelPermission } from '../../../resources/Contracts';\nimport CompanyPickerModal from '../CompanyPickerModal';\n\nexport default function ChannelList( { setSelectedChannel } ) \n{\n const apiUrl=\"/api/Channel\";\n const [message, setMessage] = React.useState(\"\"); // alert message contents\n const [data, setData] = useState([]); // data read from companyApiUrl\n //const [pickedChannel, setPickedChannel] = useState(); // selected channel returned to caller\n \n const columns: GridColDef<(IChannel)>[] = [\n { \n field: 'id', \n headerName: 'ID',\n width: 90,\n editable: false,\n },\n {\n field: 'navigationId',\n headerName: 'Navigation ID',\n sortable: false,\n //width: 20,\n editable: false,\n },\n {\n field: 'name',\n headerName: 'Name',\n headerClassName: 'table-header',\n width: 200,\n editable: false,\n },\n {\n field: 'description',\n headerName: 'Description',\n headerClassName: 'table-header',\n width: 300,\n editable: false,\n },\n {\n field: 'resolvedNavigationNode',\n headerName: 'Shared Path',\n headerClassName: 'table-header',\n sortable: false,\n flex: 1,\n editable: false,\n },\n \n {\n field: 'channelUniqueId',\n headerName: 'Channel ID',\n width:300,\n editable: false,\n },\n \n \n \n {\n field: 'navigationNode',\n headerName: 'Hierarchy ID',\n sortable: false,\n //width: 20,\n editable: false,\n },\n \n {\n field: 'isEnabled',\n headerName: 'Enabled',\n sortable: false,\n width: 10,\n editable: false,\n },\n {\n field: 'isBlocked',\n headerName: 'Blocked',\n sortable: false,\n // width: 10,\n editable: false,\n },\n];\n\n const handleSelectionChange = (newSelectionModel: number[]) => {\n const selectedRow = data.filter((row) => newSelectionModel.includes(row.id));\n const selectedChannel = selectedRow.length !== 0 ? selectedRow[0].channelUniqueId : \"\";\n setSelectedChannel(selectedChannel);\n }\n\n useEffect(() => {\n fetch(apiUrl)\n .then((response) => response.json())\n .then((data) => setData( data ))\n .catch((error) => console.error('Error fetching channel data:', error));\n }, [apiUrl]);\n\n return (\n \n \n {message && {message}}\n\n \n \n \n \n \n \n \n );\n}","import React from \"react\";\nimport {TextField} from \"@mui/material\";\n\ntype CustomTextFieldProps = {\n label: string,\n name: string,\n changeHandler: (event: React.ChangeEvent) => void,\n}\n\nconst CustomTextField = (props: CustomTextFieldProps) => {\n return (\n \n );\n}\n\nexport default CustomTextField","/*\n CompanyPicker component (tsx)\n --------------------------------------------------------------------------------\n - Reads list of companies from the provided url (the SID master companies list)\n - Allows user to select multiple companies\n - Updates ChannelAccess table row for channelUniqueId, removes all rows for channel+company then adds a row per company\n ------------------------------\n This version: 17/07/2024\n*/\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\n\n// mui\nimport Box from '@mui/material/Box';\nimport { Alert, Stack, Typography } from '@mui/material';\nimport { DataGrid, GridColDef, GridEventListener } from '@mui/x-data-grid';\n\n// custom\nimport CustomTextField from '../CustomTextField';\nimport { IChannelCompany } from '../../../resources/Contracts';\n\ntype CompanyPickerProps = {\n channelUniqueId: string,\n targetCompanies: IChannelCompany[],\n setTargetCompanies,\n}\n\n//export default function CompanyPicker( selectedChannelUniqueId, { setTargetCompanies } ) \nconst CompanyPicker = (props: CompanyPickerProps) => \n{\n const apiGetCompaniesUrl=\"/api/companies/getcompanies\";\n const apiGetChannelCompaniesUrl = \"/api/Channel/company/permissions/\"; // props must pass a valid channelUniqueId if this component is used for Update (not needed for Add)\n const [searchTerm, setSearchTerm] = useState(\"\"); // search box contents\n const [data, setData] = useState([]); // data read from companyApiUrl\n const [pickedCompanies, setPickedCompanies] = useState([]); // selected companies returned to caller\n\n let searchTimeout: NodeJS.Timeout;\n \n const columns: GridColDef<(IChannelCompany)>[] = [\n {\n field: 'companyName',\n headerName: 'Company',\n flex: 1,\n editable: false,\n }];\n\n function handleSearchChange(event: React.ChangeEvent): void \n {\n clearTimeout(searchTimeout);\n\t\tsearchTimeout = setTimeout(() => {\n \n // check for null/undefined\n let searchTextBoxValue = event.target.value || \"\";\n \n // append the ?searchTerm query string only if search text field contains something\n if(searchTextBoxValue !== \"\")\n setSearchTerm(\"?searchTerm=\"+searchTextBoxValue);\n else \n setSearchTerm(\"\"); // user cleared the textbox - remove query string; web service does not accept empty/null ?searchTerm=\n }, 500);\n }\n\n const handleRowClickAdd: GridEventListener<'rowClick'> = (params) => {\n const concatArray: IChannelCompany[] = [...(pickedCompanies || []), ...([params.row] || [])];\n const uniqueArray = Array.from(\n new Set(concatArray.map(item => item.id))\n ).map(id => {\n return concatArray.find(item => item.id === id);\n });\n setPickedCompanies(uniqueArray);\n props.setTargetCompanies(uniqueArray);\n };\n\n const handleRowClickRemove: GridEventListener<'rowClick'> = (params) => {\n const rowToDelete : number = params.row.id;\n if(pickedCompanies?.length !== 0)\n {\n let filteredPick = pickedCompanies.filter((row) => row.id !== rowToDelete);\n setPickedCompanies(filteredPick);\n props.setTargetCompanies(filteredPick);\n }\n };\n\n useEffect(() => {\n fetch(apiGetCompaniesUrl+searchTerm)\n .then((response) => response.json())\n .then((data) => setData( data ))\n .catch((error) => console.error('Error fetching companies data:', error));\n }, [apiGetCompaniesUrl, searchTerm]);\n\n useEffect(() => {\n if (props.targetCompanies.length !== 0) {\n setPickedCompanies(props.targetCompanies);\n }\n\n if(props.channelUniqueId !== '' && props.targetCompanies.length === 0) {\n fetch(apiGetChannelCompaniesUrl + props.channelUniqueId)\n .then((response) => response.json())\n .then((data) => {\n setPickedCompanies(data);\n //props.setTargetCompanies(data);\n })\n .catch((error) => console.error('Error fetching companies data:', error));\n }\n }, [apiGetChannelCompaniesUrl]);\n\n return (\n \n \n \n \n \n \n
\n Available Companies\n
\n \n
\n \n
\n Selected Companies\n
\n \n
\n
\n
\n );\n}\nexport default CompanyPicker","import * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, css } from '@mui/system';\nimport { Modal as BaseModal } from '@mui/base/Modal';\nimport Snackbar from '@mui/material/Snackbar';\nimport Alert from '@mui/material/Alert';\nimport CompanyPicker from './CompanyPicker/CompanyPicker';\nimport { IChannelCompany } from '../../resources/Contracts';\n\ntype CompanyPickerProps = {\n channelUniqueId: string,\n targetCompanies: IChannelCompany[],\n setTargetCompanies,\n}\n\n//export default function CompanyPickerModal(selectedChannelUniqueId, { setTargetCompanies }) {\nconst CompanyPickerModal = ({channelUniqueId, targetCompanies, setTargetCompanies}) => {\n const [open, setOpen] = React.useState(false);\n const [errorOpen, setErrorOpen] = React.useState(false);\n\n const handleOpen = () => setOpen(true);\n const handleClose = () => {\n if (selectedCompanies.length === 0) {\n setErrorOpen(true);\n return;\n }\n setTargetCompanies(selectedCompanies);\n setOpen(false);\n }\n const handleCancel = () => {\n setOpen(false);\n }\n const handleErrorClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n setErrorOpen(false);\n };\n\n const [selectedCompanies, setSelectedCompanies] = React.useState(targetCompanies);\n\n return (\n
\n \n Select companies\n \n \n \n \n \n Please select at least one company\n \n \n

\n Permissions \n

\n

\n Manage company permissions for this channel. All users of the selected companies will be able to see the channel but must generate their own Access Key.\n

\n \n
\n OK\n Cancel\n
\n
\n \n \n
\n );\n}\n\nconst Backdrop = React.forwardRef<\n HTMLDivElement,\n { open?: boolean; className: string }\n>((props, ref) => {\n const { open, className, ...other } = props;\n return (\n \n );\n});\n\nconst grey = {\n 50: '#F3F6F9',\n 100: '#E5EAF2',\n 200: '#DAE2ED',\n 300: '#C7D0DD',\n 400: '#B0B8C4',\n 500: '#9DA8B7',\n 600: '#6B7A90',\n 700: '#434D5B',\n 800: '#303740',\n 900: '#1C2025',\n};\n\nconst Modal = styled(BaseModal)`\n position: fixed;\n z-index: 1300;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledBackdrop = styled(Backdrop)`\n z-index: -1;\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n -webkit-tap-highlight-color: transparent;\n`;\n\nconst ModalContent = styled('div')(\n ({ theme }) => css`\n font-family: 'IBM Plex Sans', sans-serif;\n font-weight: 500;\n text-align: start;\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 8px;\n overflow: hidden;\n background-color: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'};\n border-radius: 8px;\n border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]};\n box-shadow: 0 4px 12px\n ${theme.palette.mode === 'dark' ? 'rgb(0 0 0 / 0.5)' : 'rgb(0 0 0 / 0.2)'};\n padding: 24px;\n color: ${theme.palette.mode === 'dark' ? grey[50] : grey[900]};\n\n & .modal-title {\n margin: 0;\n line-height: 1.5rem;\n margin-bottom: 8px;\n }\n\n & .modal-description {\n margin: 0;\n line-height: 1.5rem;\n font-weight: 400;\n color: ${theme.palette.mode === 'dark' ? grey[400] : grey[800]};\n margin-bottom: 4px;\n }\n `,\n);\n\nconst TriggerButton = styled('button')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 600,\n fontSize: '0.875rem',\n lineHeight: 1.5,\n padding: '8px 16px',\n transition: 'all 150ms ease',\n cursor: 'pointer',\n background: '#3380FF',\n border: '1px solid #3380FF',\n color: 'white',\n\n '&:hover': {\n boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n }\n});\n\nexport default CompanyPickerModal","/*\n NodePicker component (tsx)\n --------------------------------------------------------------------------------\n - Reads Navigation table from supplied apiUrl\n - Displays tree structure and allows selection of a node\n - Sets parent state (targetNode) to the selected node\n*/\nimport * as React from 'react';\n\n// mui\nimport Box from '@mui/material/Box';\nimport { RichTreeView } from '@mui/x-tree-view/RichTreeView';\nimport { useEffect, useState } from 'react';\nimport { Stack } from '@mui/material';\nimport SvgIcon, { SvgIconProps } from '@mui/material/SvgIcon';\n\nexport default function NodePicker( { setTargetNode } )\n{\n const apiUrl = \"/api/Channel/folders/synamedia/false\";\n const [data, setData] = useState([]);\n \n useEffect(() => {\n fetch(apiUrl)\n .then((response) => response.json())\n .then((data) => setData(data))\n .catch((error) => console.error('Error fetching data:', error));\n }, [apiUrl]);\n\n function findNodeById(tree, id) {\n // Check if the current node matches the id\n if (tree.id === id) {\n return tree;\n }\n\n // If there are children, iterate through them and search recursively\n if (tree.children && tree.children.length > 0) {\n for (const child of tree.children) {\n const result = findNodeById(child, id);\n if (result) {\n return result;\n }\n }\n }\n\n // Return null if the node with the id is not found\n return null;\n }\n\n const handleItemSelectionToggle = (\n event: React.SyntheticEvent,\n itemId: string,\n isSelected: boolean,\n ) => {\n\n if (isSelected) {\n const node = findNodeById(data[0], itemId);\n const isLeaf = node?.children ? node.children.length === 0 : false;\n setTargetNode(itemId, isLeaf);\n }\n };\n\n return (\n \n \n \n );\n}\n\nfunction CloseSquare(props: SvgIconProps) {\n return (\n \n {/* tslint:disable-next-line: max-line-length */}\n \n \n );\n}\n","/*\n NodePickerModal component (tsx)\n --------------------------------------------------------------------------------\n - Wraps NodePicker.tsx into a Material UI Modal dialogue\n - Parent is AddChannelModal.tsx\n - Updates state (targetNode) of parent\n*/\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, css } from '@mui/system';\nimport { Modal as BaseModal } from '@mui/base/Modal';\nimport Snackbar from '@mui/material/Snackbar';\nimport Alert from '@mui/material/Alert';\nimport NodePicker from './NodePicker/NodePicker';\n\nexport default function NodePickerModal({ setTargetNode, channelSharedPath=\"\" }) {\n const [open, setOpen] = React.useState(false);\n const [selectedNode, setSelectedNode] = React.useState({node: null, isLeafNode: false});\n const [errorOpen, setErrorOpen] = React.useState(false);\n\n const handleOpen = () => setOpen(true);\n const handleClose = () => {\n if (selectedNode.node) setTargetNode(selectedNode.node);\n setSelectedNode({node: null, isLeafNode: false});\n setOpen(false);\n }\n const handleCloseReset = () => {\n setSelectedNode({node: null, isLeafNode: false});\n setOpen(false);\n }\n const handleErrorClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n setErrorOpen(false);\n };\n const handleNodeSelected = (node, isLeafNode) => {\n setSelectedNode({node, isLeafNode});\n }\n\n return (\n
\n \n Select path\n \n \n \n \n \n Please select a leaf category in the tree\n \n \n

\n Share Path Selection \n

\n { channelSharedPath !== \"\" &&

Current Shared Path: {channelSharedPath}

\n }\n

\n Select the leaf category to share with this channel then press OK. All files beneath the category you select will be available to users, subject to portal permissions.\n

\n
\n { selectedNode.node && OK}\n Cancel\n
\n \n
\n \n
\n );\n}\n\nconst Backdrop = React.forwardRef<\n HTMLDivElement,\n { open?: boolean; className: string }\n>((props, ref) => {\n const { open, className, ...other } = props;\n return (\n \n );\n});\n\nconst Modal = styled(BaseModal)`\n position: fixed;\n z-index: 1300;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledBackdrop = styled(Backdrop)`\n z-index: -1;\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n -webkit-tap-highlight-color: transparent;\n`;\n\nconst ModalContent = styled('div')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 500,\n textAlign: 'start',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n overflow: 'hidden',\n backgroundColor: '#fff',\n borderRadius: '8px',\n border: '1px solid #ddd',\n boxShadow: '0 4px 12px rgb(0 0 0 / 0.2)',\n padding: '24px',\n color: '#000',\n\n '& .modal-title': {\n margin: 0,\n lineHeight: '1.5rem',\n marginBottom: '8px',\n },\n\n '& .modal-description': {\n margin: 0,\n lineHeight: '1.5rem',\n fontWeight: 400,\n color: '#666', // Static light description text color\n marginBottom: '4px',\n },\n});\n\nconst TriggerButton = styled('button')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 600,\n fontSize: '0.875rem',\n lineHeight: 1.5,\n padding: '8px 16px',\n transition: 'all 150ms ease',\n cursor: 'pointer',\n background: '#3380FF',\n border: '1px solid #3380FF',\n color: 'white',\n\n '&:hover': {\n boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n }\n});","import * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, css } from '@mui/system';\nimport { Modal as BaseModal } from '@mui/base/Modal';\nimport Snackbar from '@mui/material/Snackbar';\nimport Alert from '@mui/material/Alert';\nimport CustomTextField from '../CustomTextField';\nimport CompanyPickerModal from '../CompanyPickerModal';\nimport { IChannelCompany } from '../../../resources/Contracts';\nimport { Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography } from '@mui/material';\nimport NodePickerModal from '../NodePickerModal';\nimport { Routing } from '../../../resources/Routes';\n\n/// This is a top level component for Add Channel, it will have the states for both Company and Node\n\nexport default function AddChannelModal() {\n const [open, setOpen] = React.useState(false);\n\n // state related to the new channel\n const [channelName, setChannelName] = React.useState(\"\");\n const [channelDescription, setChannelDescription] = React.useState(\"\");\n const [targetNode, setTargetNode] = React.useState(0); // the id of the node for this channel\n const [targetNodeFriendly, setTargetNodeFriendly] = React.useState(\"\");\n const [targetCompanies, setTargetCompanies] = React.useState([]);\n const [errorOpen, setErrorOpen] = React.useState(false);\n const [errorText, setErrorText] = React.useState(\"\");\n\n const apiPostNewChannel = \"/api/Channel\";\n const apiResolveFriendlyNode = \"/api/Channel/navigation/friendlypath\";\n\n const handleOpen = () => setOpen(true);\n const handleClose = () => setOpen(false);\n\n React.useEffect(() => {\n fetch(`${apiResolveFriendlyNode}/${targetNode}`)\n .then((response) => response.text())\n .then((data) => setTargetNodeFriendly(data))\n .catch((error) => console.error('Error fetching data:', error));\n }, [targetNode]);\n\n\n const handleAdd = async () => {\n if (channelName === \"\") {\n setErrorText(\"Please enter a channel name\");\n setErrorOpen(true);\n return;\n }\n if (channelDescription === \"\") {\n setErrorText(\"Please enter a channel description\");\n setErrorOpen(true);\n return;\n }\n if (targetNodeFriendly === \"\") {\n setErrorText(\"Please select a path\");\n setErrorOpen(true);\n return;\n }\n if (targetCompanies.length === 0) {\n setErrorText(\"Please select at least one company\");\n setErrorOpen(true);\n return;\n }\n if (channelName !== \"\" && targetNode !== 0) {\n let formData = new FormData();\n\n // user is allowed to submit without giving companies access\n if (targetCompanies.length > 0) {\n const companyIdArray = targetCompanies.reduce((acc, obj) => {\n acc.push(obj.id);\n return acc;\n }, []);\n let companyPermissions = JSON.stringify(companyIdArray);\n console.log(companyPermissions);\n formData.append('permissions', companyPermissions);\n }\n formData.append('id', '0');\n formData.append('name', channelName);\n formData.append('description', channelDescription);\n formData.append('navigationId', targetNode.toString());\n formData.append('navigationNode', ' ');\n formData.append('resolvedNavigationNode', ' ');\n formData.append('isEnabled', 'true');\n formData.append('isBlocked', 'false');\n\n const requestOptions = {\n method: 'POST',\n body: formData\n };\n await fetch(apiPostNewChannel, requestOptions)\n .then(response => response.json())\n .catch((error) => console.error('Error when POSTing data:', error));\n window.location.replace(Routing.getChannelManagementViewUrl());\n }\n }\n\n const handleErrorClose = (event, reason) => {\n if (reason === 'clickaway') {\n return;\n }\n\n setErrorOpen(false);\n };\n\n const handleCloseReset = () =>\n {\n setTargetNode(0);\n setTargetCompanies([]);\n setOpen(false);\n }\n\n function handleNameChange(event: React.ChangeEvent): void {\n setChannelName(event.target.value);\n }\n\n function handleDescriptionChange(event: React.ChangeEvent): void {\n setChannelDescription(event.target.value);\n }\n\n return (\n
\n \n \n {errorText}\n \n \n \n Create\n \n \n \n

\n Create Download Channel\n

\n

\n Define a customer download channel for automated downloads using the Channel API\n

\n \n \n

\n Shared Path\n

\n { targetNodeFriendly !== \"\" &&\n \n {targetNodeFriendly}\n }\n \n

\n Permissions\n

\n \n
\n {targetCompanies.length !== 0 &&\n \n\t\t\t \n \n \n Company\n Domain\n \n \n\t\t\t\t \n\t\t\t\t\t {targetCompanies.map((item, id) => (\n \n \n {item.companyName} \n \n \n {item.domain } \n \n \n\t\t\t\t\t ))}\n\t\t\t\t \n\t\t\t
\n\t\t
\n }\n
\n
\n \n Add\n \n \n Cancel\n \n
\n
\n \n
\n );\n}\n\nconst Backdrop = React.forwardRef<\n HTMLDivElement,\n { open?: boolean; className: string }\n>((props, ref) => {\n const { open, className, ...other } = props;\n return (\n \n );\n});\n\nconst grey = {\n 50: '#F3F6F9',\n 100: '#E5EAF2',\n 200: '#DAE2ED',\n 300: '#C7D0DD',\n 400: '#B0B8C4',\n 500: '#9DA8B7',\n 600: '#6B7A90',\n 700: '#434D5B',\n 800: '#303740',\n 900: '#1C2025',\n};\n\nconst Modal = styled(BaseModal)`\n position: fixed;\n z-index: 1300;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledBackdrop = styled(Backdrop)`\n z-index: -1;\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n -webkit-tap-highlight-color: transparent;\n`;\n\nconst ModalContent = styled('div')(\n ({ theme }) => css`\n font-family: 'IBM Plex Sans', sans-serif;\n font-weight: 500;\n text-align: start;\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 8px;\n overflow: hidden;\n background-color: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'};\n border-radius: 8px;\n border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]};\n box-shadow: 0 4px 12px\n ${theme.palette.mode === 'dark' ? 'rgb(0 0 0 / 0.5)' : 'rgb(0 0 0 / 0.2)'};\n padding: 24px;\n color: ${theme.palette.mode === 'dark' ? grey[50] : grey[900]};\n\n & .modal-title {\n margin: 0;\n line-height: 1.5rem;\n margin-bottom: 8px;\n }\n\n & .modal-description {\n margin: 0;\n line-height: 1.5rem;\n font-weight: 400;\n color: ${theme.palette.mode === 'dark' ? grey[400] : grey[800]};\n margin-bottom: 4px;\n }\n `,\n);\n\nconst TriggerButton = styled('button')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 600,\n width: 100,\n fontSize: '0.875rem',\n lineHeight: 1.5,\n padding: '8px 16px',\n transition: 'all 150ms ease',\n cursor: 'pointer',\n background: '#3380FF',\n border: '1px solid #3380FF',\n color: 'white',\n\n '&:hover': {\n boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n }\n});","import * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, css } from '@mui/system';\nimport { Modal as BaseModal } from '@mui/base/Modal';\nimport CustomTextField from '../CustomTextField';\nimport { IChannelCompany } from '../../../resources/Contracts';\nimport { Typography } from '@mui/material';\nimport { Routing } from '../../../resources/Routes';\n\nexport default function DeleteChannelModal({selectedChannelUniqueId}) {\n const [open, setOpen] = React.useState(false);\n const apiDeleteChannel = `/api/Channel/${selectedChannelUniqueId}`;\n\n const handleOpen = () => setOpen(true);\n const handleClose = () => setOpen(false);\n const handleDelete = () => \n {\n console.log(selectedChannelUniqueId);\n\n if(selectedChannelUniqueId!== null)\n {\n const requestOptions = {\n method: 'DELETE'\n };\n fetch(apiDeleteChannel, requestOptions);\n window.location.replace(Routing.getChannelManagementViewUrl());\n }\n }\n\n const handleCloseReset = () =>\n {\n setOpen(false);\n }\n\n return (\n
\n \n Delete\n \n \n \n

\n Delete Channel \n

\n

\n You are about to delete this channel, its permissions and its access keys. Customers will no longer have access to it.\n

\n

\n Are you really sure?\n

\n
\n \n Ok\n \n \n Cancel\n \n
\n
\n \n
\n );\n}\n\nconst Backdrop = React.forwardRef<\n HTMLDivElement,\n { open?: boolean; className: string }\n>((props, ref) => {\n const { open, className, ...other } = props;\n return (\n \n );\n});\n\nconst blue = {\n 200: '#99CCFF',\n 300: '#66B2FF',\n 400: '#3399FF',\n 500: '#007FFF',\n 600: '#0072E5',\n 700: '#0066CC',\n};\n\nconst grey = {\n 50: '#F3F6F9',\n 100: '#E5EAF2',\n 200: '#DAE2ED',\n 300: '#C7D0DD',\n 400: '#B0B8C4',\n 500: '#9DA8B7',\n 600: '#6B7A90',\n 700: '#434D5B',\n 800: '#303740',\n 900: '#1C2025',\n};\n\nconst Modal = styled(BaseModal)`\n position: fixed;\n z-index: 1300;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledBackdrop = styled(Backdrop)`\n z-index: -1;\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n -webkit-tap-highlight-color: transparent;\n`;\n\nconst ModalContent = styled('div')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 500,\n textAlign: 'start',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n padding: '24px',\n gap: '8px',\n overflow: 'hidden',\n backgroundColor: '#fff', // Static background color\n borderRadius: '8px',\n border: `1px solid ${grey[200]}`, // Static border color\n boxShadow: '0 4px 12px rgb(0 0 0 / 0.2)', // Static shadow\n color: grey[900], // Static text color\n\n '& .modal-title': {\n margin: 0,\n lineHeight: '1.5rem',\n marginBottom: '8px',\n },\n\n '& .modal-description': {\n margin: 0,\n lineHeight: '1.5rem',\n fontWeight: 400,\n color: grey[800], // Static description color\n marginBottom: '4px',\n },\n});\n\nconst TriggerButton = styled('button')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 600,\n width: 100,\n marginRight: '16px',\n fontSize: '0.875rem',\n lineHeight: 1.5,\n padding: '8px 16px',\n transition: 'all 150ms ease',\n cursor: 'pointer',\n background: '#3380FF',\n border: '1px solid #3380FF',\n color: 'white',\n\n '&:hover': {\n boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n }\n});\n","import * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, css } from '@mui/system';\nimport { Modal as BaseModal } from '@mui/base/Modal';\nimport CustomTextField from '../CustomTextField';\nimport { IChannel, IChannelCompany, IChannelPermission, IAccessKey } from '../../../resources/Contracts';\nimport { Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography } from '@mui/material';\nimport { Routing } from '../../../resources/Routes';\n\nexport default function ViewChannelModal({selectedChannelUniqueId}) {\n const [open, setOpen] = React.useState(false);\n\n // UI element state\n const [channelName, setChannelName] = React.useState(\"\");\n const [channelDescription, setChannelDescription] = React.useState(\"\");\n const [channelIsEnabled, setChannelIsEnabled] = React.useState(\"\");\n const [channelIsBlocked, setChannelIsBlocked] = React.useState(\"\");\n const [channelUniqueId, setChannelUniqueId] = React.useState(\"\");\n const [channelSharedPath, setChannelSharedPath] = React.useState(\"\");\n const [channelNavigationId, setChannelNavigationId] = React.useState(0);\n\n // Data state\n const [channelPermissions, setChannelPermissions] = React.useState([]);\n const [channelCompanies, setChannelCompanies] = React.useState([]);\n const [channelAccessKeys, setChannelAccessKeys] = React.useState([]);\n const [channels, setChannels] = React.useState([]);\n \n \n // API urls\n const apiGetChannel = `/api/Channel/${selectedChannelUniqueId}`;\n const apiGetAccessKeys = `/api/Channel/accesskeys/${selectedChannelUniqueId}`;\n const apiGetChannelPermissions = `/api/Channel/permissions/${selectedChannelUniqueId}`;\n const apiGetChannelCompanies = `/api/Channel/company/permissions/${selectedChannelUniqueId}`;\n const apiResolveCompanyNames = '/api/Channel/augment/companies';\n\n async function fetchChannel() {\n const response = await fetch(apiGetChannel);\n if(response.ok)\n {\n const channel = await response.json();\n return channel[0];\n }\n return [];\n }\n\n async function fetchChannelPermissions() {\n const response = await fetch(apiGetChannelPermissions);\n if(response.ok)\n {\n const channelPermissions = await response.json();\n return channelPermissions;\n }\n return [];\n }\n\n async function fetchChannelCompanies() {\n const response = await fetch(apiGetChannelCompanies);\n if(response.ok)\n {\n const channelCompanies = await response.json();\n return channelCompanies.sort((a, b) => b.companyName.toLowerCase() < a.companyName.toLowerCase());\n }\n return [];\n }\n\n async function fetchChannelAccessKeys() {\n const response = await fetch(apiGetAccessKeys);\n if(response.ok)\n {\n const channelPermissions = await response.json();\n return channelPermissions;\n }\n return [];\n }\n\n const lookupCompany = (companyId, channelCompanies) => {\n const company = channelCompanies.filter(c => c.id === companyId);\n return company.length > 0 ? company[0].companyName : 'Error - unknown company';\n }\n\n const handleOpen = async () => {\n const getChannel = await fetchChannel();\n const getAccessKeys = await fetchChannelAccessKeys();\n const getChannelPermissions = await fetchChannelPermissions();\n const getChannelCompanies = await fetchChannelCompanies();\n\n \n if(getChannel !== null) {\n setChannelName(getChannel.name);\n setChannelDescription(getChannel.description);\n setChannelUniqueId(getChannel.channelUniqueId);\n setChannelIsEnabled(getChannel.isEnabled);\n setChannelIsBlocked(getChannel.isBlocked);\n setChannelNavigationId(getChannel.navigationId);\n setChannelSharedPath(getChannel.resolvedNavigationNode);\n }\n \n // set data state\n if(getAccessKeys !== null) setChannelAccessKeys(getAccessKeys);\n if(getChannelPermissions != null) setChannelPermissions(getChannelPermissions);\n if(getChannelCompanies != null) setChannelCompanies(getChannelCompanies);\n\n\n setOpen(true);\n }\n \n const handleClose = () => setOpen(false);\n \n const handleCloseReset = () =>\n {\n setOpen(false);\n }\n\n return (\n
\n \n View\n \n \n \n

{channelName}

\n

{channelDescription}

\n

Shared Path: {channelSharedPath}

\n\n

Permissions

\n {channelCompanies !== null && (\n \n\t\t\t \n \n \n Company\n Domain\n \n \n\t\t\t\t \n\t\t\t\t\t {channelCompanies.map((item, id) => (\n \n \n {item.companyName}\n \n \n {item.domain } \n \n \n\t\t\t\t\t ))}\n\t\t\t\t \n\t\t\t
\n\t\t
\n )}\n\n

Access Keys

\n {channelAccessKeys !== null && (\n \n\t\t\t \n \n \n Company\n Expires\n \n \n\t\t\t\t \n\t\t\t\t\t {channelAccessKeys.map((item, channelUniqueId) => (\n \n \n {lookupCompany(item.companyId, channelCompanies)}\n \n \n {(new Date(item.expirationDate)).toUTCString()}\n \n \n\t\t\t\t\t ))}\n\t\t\t\t \n\t\t\t
\n\t\t
\n )}\n\n\n\n \n OK\n \n
\n \n
\n );\n}\n\nconst Backdrop = React.forwardRef<\n HTMLDivElement,\n { open?: boolean; className: string }\n>((props, ref) => {\n const { open, className, ...other } = props;\n return (\n \n );\n});\n\nconst blue = {\n 200: '#99CCFF',\n 300: '#66B2FF',\n 400: '#3399FF',\n 500: '#007FFF',\n 600: '#0072E5',\n 700: '#0066CC',\n};\n\nconst grey = {\n 50: '#F3F6F9',\n 100: '#E5EAF2',\n 200: '#DAE2ED',\n 300: '#C7D0DD',\n 400: '#B0B8C4',\n 500: '#9DA8B7',\n 600: '#6B7A90',\n 700: '#434D5B',\n 800: '#303740',\n 900: '#1C2025',\n};\n\nconst Modal = styled(BaseModal)`\n position: fixed;\n z-index: 1300;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledBackdrop = styled(Backdrop)`\n z-index: -1;\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n -webkit-tap-highlight-color: transparent;\n`;\n\nconst ModalContent = styled('div')(\n ({ theme }) => css`\n font-family: 'IBM Plex Sans', sans-serif;\n font-weight: 500;\n text-align: start;\n position: relative;\n display: flex;\n flex-direction: column;\n gap: 8px;\n overflow: hidden;\n background-color: ${theme.palette.mode === 'dark' ? grey[900] : '#fff'};\n border-radius: 8px;\n border: 1px solid ${theme.palette.mode === 'dark' ? grey[700] : grey[200]};\n box-shadow: 0 4px 12px\n ${theme.palette.mode === 'dark' ? 'rgb(0 0 0 / 0.5)' : 'rgb(0 0 0 / 0.2)'};\n padding: 24px;\n color: ${theme.palette.mode === 'dark' ? grey[50] : grey[900]};\n\n & .modal-title {\n margin: 0;\n line-height: 1.5rem;\n margin-bottom: 8px;\n }\n\n & .modal-description {\n margin: 0;\n line-height: 1.5rem;\n font-weight: 400;\n color: ${theme.palette.mode === 'dark' ? grey[400] : grey[800]};\n margin-bottom: 4px;\n }\n `,\n);\n\nconst TriggerButton = styled('button')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 600,\n width: 100,\n fontSize: '0.875rem',\n lineHeight: 1.5,\n padding: '8px 16px',\n transition: 'all 150ms ease',\n cursor: 'pointer',\n background: '#3380FF',\n border: '1px solid #3380FF',\n color: 'white',\n\n '&:hover': {\n boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n }\n});\n","import * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, css } from '@mui/system';\nimport { Modal as BaseModal } from '@mui/base/Modal';\nimport CustomTextField from '../CustomTextField';\nimport CompanyPickerModal from '../CompanyPickerModal';\nimport { IAccessKey, IChannel, IChannelCompany, IChannelPermission } from '../../../resources/Contracts';\nimport { Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography } from '@mui/material';\nimport NodePickerModal from '../NodePickerModal';\nimport { Routing } from '../../../resources/Routes';\n\nexport default function ModifyChannelModal({selectedChannelUniqueId}) {\n const [open, setOpen] = React.useState(false);\n const [companyDeletedModalOpen, setCompanyDeletedModalOpen] = React.useState(false);\n\n // state related to the new channel\n const [channelName, setChannelName] = React.useState(\"\");\n const [channelDescription, setChannelDescription] = React.useState(\"\");\n const [targetNode, setTargetNode] = React.useState(0); // the id of the node for this channel\n const [targetCompanies, setTargetCompanies] = React.useState([]);\n\n // UI - may be unused\n const [channelIsEnabled, setChannelIsEnabled] = React.useState(\"\");\n const [channelIsBlocked, setChannelIsBlocked] = React.useState(\"\");\n const [channelUniqueId, setChannelUniqueId] = React.useState(\"\");\n const [channelSharedPath, setChannelSharedPath] = React.useState(\"\");\n const [channelNavigationId, setChannelNavigationId] = React.useState(0);\n\n // Data state\n const [channelPermissions, setChannelPermissions] = React.useState([]);\n const [channelCompanies, setChannelCompanies] = React.useState([]);\n const [channelAccessKeys, setChannelAccessKeys] = React.useState([]);\n const [channels, setChannels] = React.useState([]);\n const [companiesToRemove, setCompaniesToRemove] = React.useState([]);\n\n // API urls\n const apiUpdateChannel = \"/api/Channel\"; // the url for the PATCH request\n const apiGetChannel = `/api/Channel/${selectedChannelUniqueId}`;\n const apiGetAccessKeys = `/api/Channel/accesskeys/${selectedChannelUniqueId}`;\n const apiGetChannelPermissions = `/api/Channel/permissions/${selectedChannelUniqueId}`;\n const apiGetChannelCompanies = `/api/Channel/company/permissions/${selectedChannelUniqueId}`;\n const apiResolveFriendlyNode = \"/api/Channel/navigation/friendlypath\";\n //const apiResolveCompanyNames = '/api/Channel/augment/companies';\n\n //React.useEffect(() => {\n // fetch(`${apiResolveFriendlyNode}/${targetNode}`)\n // .then((response) => response.text())\n // .then((data) => setTargetNodeFriendly(data))\n // .catch((error) => console.error('Error fetching data:', error));\n //}, [targetNode]);\n\n React.useEffect(() => {\n fetch(`${apiResolveFriendlyNode}/${targetNode}`)\n .then((response) => response.text())\n .then((data) => setChannelSharedPath(data))\n .catch((error) => console.error('Error fetching data:', error));\n },[targetNode]);\n\n async function fetchChannel() {\n const response = await fetch(apiGetChannel);\n if(response.ok)\n {\n const channel = await response.json();\n return channel[0];\n }\n return [];\n }\n \n async function fetchChannelPermissions() {\n const response = await fetch(apiGetChannelPermissions);\n if(response.ok)\n {\n const channelPermissions = await response.json();\n return channelPermissions;\n }\n return [];\n }\n \n async function fetchChannelCompanies() {\n const response = await fetch(apiGetChannelCompanies);\n if(response.ok)\n {\n const channelCompanies = await response.json();\n return channelCompanies.sort((a, b) => b.companyName.toLowerCase() < a.companyName.toLowerCase());\n }\n return [];\n }\n \n async function fetchChannelAccessKeys() {\n const response = await fetch(apiGetAccessKeys);\n if(response.ok)\n {\n const channelPermissions = await response.json();\n return channelPermissions;\n }\n return [];\n }\n\n \n\n const handleOpen = async () => {\n const getChannel = await fetchChannel();\n const getAccessKeys = await fetchChannelAccessKeys();\n const getChannelPermissions = await fetchChannelPermissions();\n const getChannelCompanies = await fetchChannelCompanies();\n\n \n if(getChannel !== null) {\n setChannelName(getChannel.name);\n setChannelDescription(getChannel.description);\n setChannelUniqueId(getChannel.channelUniqueId);\n setChannelIsEnabled(getChannel.isEnabled);\n setChannelIsBlocked(getChannel.isBlocked);\n setChannelNavigationId(getChannel.navigationId);\n setChannelSharedPath(getChannel.resolvedNavigationNode);\n setTargetNode(getChannel.navigationId);\n \n console.log(getChannel);\n }\n else{\n console.log(\"getChannel is null\");\n }\n \n // set data state\n if(getAccessKeys !== null) setChannelAccessKeys(getAccessKeys);\n if(getChannelPermissions != null) { \n setChannelPermissions(getChannelPermissions);\n console.log(\"IChannelAccess objects for this channel\")\n console.log(getChannelPermissions);\n }\n if(getChannelCompanies != null) { \n setChannelCompanies(getChannelCompanies); \n setTargetCompanies(getChannelCompanies);\n console.log(\"ICompany objects for this channel\");\n console.log(getChannelCompanies);\n }\n setOpen(true);\n }\n const handleClose = () => setOpen(false);\n\n const handleModify = async () => \n {\n const removedCompanies = channelCompanies.filter(entry => !targetCompanies.find(entryTarget => entryTarget.id === entry.id));\n\n if (removedCompanies.length > 0) {\n setCompaniesToRemove(removedCompanies.map(entry => entry.companyName));\n setCompanyDeletedModalOpen(true);\n return;\n }\n setCompaniesToRemove([]);\n await saveModifiedChannel();\n }\n\n const handleCloseReset = () =>\n {\n setTargetNode(0);\n setTargetCompanies([]);\n setCompaniesToRemove([]);\n setOpen(false);\n }\n\n function handleNameChange(event: React.ChangeEvent): void {\n setChannelName(event.target.value);\n }\n\n function handleDescriptionChange(event: React.ChangeEvent): void {\n setChannelDescription(event.target.value);\n }\n\n const companyDeletedModal =\n \n \n

\n About To Delete Access Keys\n

\n

\n You are about to remove access to this channel for these companies: {companiesToRemove.join(', ')}.\n

All associated customer access keys will\n be deleted and the customers will no longer have access to this channel via the download API.

\n

\n

\n Are you really sure?\n

\n
\n Ok\n Cancel\n
\n
\n \n\n async function saveModifiedChannel() {\n let formData = new FormData();\n\n // user is allowed to submit without giving companies access\n if(targetCompanies.length >0)\n {\n const companyIdArray = targetCompanies.reduce((acc, obj) => {\n acc.push(obj.id);\n return acc;\n }, []);\n let companyPermissions = JSON.stringify(companyIdArray);\n console.log(companyPermissions);\n formData.append('permissions', companyPermissions);\n console.log(\"there are companies\");\n console.log(companyPermissions);\n }\n else\n {\n // user has cleared any existing companies (or there were originally none)\n formData.append('permissions', \"[]\");\n console.log(\"clear companies\");\n }\n\n formData.append('channelUniqueId', channelUniqueId);\n formData.append('name', channelName);\n formData.append('description', channelDescription);\n formData.append('navigationId', targetNode.toString());\n\n const requestOptions = {\n method: 'PATCH',\n body: formData\n };\n\n await fetch(apiUpdateChannel, requestOptions)\n .then(response => response.json())\n .catch((error) => console.error('Error when PATCHing data:', error));\n\n window.location.replace(Routing.getChannelManagementViewUrl());\n }\n\n function handleDeleteCompaniesCancel() {\n setCompanyDeletedModalOpen(false);\n }\n\n return (\n
\n \n Modify\n \n \n \n

Modifying {channelName}

\n

{channelDescription}

\n

Shared Path: {channelSharedPath}

\n \n \n

Permissions

\n \n {targetCompanies !== null && (\n \n\t\t\t \n \n \n Company\n Domain\n \n \n\t\t\t\t \n\t\t\t\t\t {targetCompanies.map((item, id) => (\n \n \n {item.companyName}\n \n \n {item.domain } \n \n \n\t\t\t\t\t ))}\n\t\t\t\t \n\t\t\t
\n\t\t
\n )}\n\n
\n \n Save\n \n \n Cancel\n \n
\n
\n \n {companyDeletedModal}\n
\n );\n}\n\nconst Backdrop = React.forwardRef<\n HTMLDivElement,\n { open?: boolean; className: string }\n>((props, ref) => {\n const { open, className, ...other } = props;\n return (\n \n );\n});\n\nconst Modal = styled(BaseModal)`\n position: fixed;\n z-index: 1300;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledBackdrop = styled(Backdrop)`\n z-index: -1;\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n -webkit-tap-highlight-color: transparent;\n`;\n\nconst ModalContent = styled('div')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 500,\n textAlign: 'start',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n overflow: 'hidden',\n backgroundColor: '#fff',\n borderRadius: '8px',\n border: '1px solid #ddd',\n boxShadow: '0 4px 12px rgb(0 0 0 / 0.2)',\n padding: '24px',\n color: '#000',\n\n '& .modal-title': {\n margin: 0,\n lineHeight: '1.5rem',\n marginBottom: '8px',\n },\n\n '& .modal-description': {\n margin: 0,\n lineHeight: '1.5rem',\n fontWeight: 400,\n color: '#666', // Static light description text color\n marginBottom: '4px',\n },\n});\n\nconst TriggerButton = styled('button')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 600,\n width: 100,\n fontSize: '0.875rem',\n lineHeight: 1.5,\n padding: '8px 16px',\n marginRight: '16px',\n transition: 'all 150ms ease',\n cursor: 'pointer',\n background: '#3380FF',\n border: '1px solid #3380FF',\n color: 'white',\n\n '&:hover': {\n boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n }\n});","import { Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as Contracts from \"../../resources/Contracts\";\n//import { Service } from \"../../services/Service\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport { handleErrorMessage } from \"../../utils/utils\";\nimport \"./ChannelManagementContainer.scss\";\nimport Texts from \"../../resources/Texts\";\nimport { IChannel, IChannelCompany } from \"../../resources/Contracts\";\nimport ChannelList from \"./ChannelList/ChannelList\";\nimport AddChannelModal from \"./AddChannel/AddChannelModal\";\nimport DeleteChannelModal from \"./DeleteChannel/DeleteChannelModal\";\nimport ViewChannelModal from \"./ViewChannel/ViewChannelModal\";\nimport ModifyChannelModal from \"./ModifyChannel/ModifyChannelModal\";\n//import ManageChannelAccessKeysModal from \"./ManageChannelKeys/ManageChannelKeysModal\";\nimport { styled, css } from '@mui/system';\nimport { Modal as BaseModal } from '@mui/base/Modal';\nimport clsx from 'clsx';\nimport InfoIcon from '@mui/icons-material/Info';\n\ntype ChannelManagementContainerProps = typeof AlertStoreActionCreators & {};\n\nconst Backdrop = React.forwardRef<\n HTMLDivElement,\n { open?: boolean; className: string }\n>((props, ref) => {\n const { open, className, ...other } = props;\n return (\n \n );\n});\n\nconst StyledBackdrop = styled(Backdrop)`\n z-index: -1;\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n -webkit-tap-highlight-color: transparent;\n`;\n\nconst ModalContent = styled('div')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 500,\n textAlign: 'start',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n padding: '24px',\n gap: '8px',\n overflow: 'hidden',\n backgroundColor: '#fff', // Static background color\n borderRadius: '8px',\n border: `1px solid white`, // Static border color\n boxShadow: '0 4px 12px rgb(0 0 0 / 0.2)', // Static shadow\n color: 'black', // Static text color\n\n '& .modal-title': {\n margin: 0,\n lineHeight: '1.5rem',\n marginBottom: '8px',\n },\n\n '& .modal-description': {\n margin: 0,\n lineHeight: '1.5rem',\n fontWeight: 400,\n color: '#303740', // Static description color\n marginBottom: '4px',\n },\n\n\t'&:focus': {\n\t\toutline: 'none', // Removes the default blue focus outline\n\t},\n});\n\nconst Modal = styled(BaseModal)`\n position: fixed;\n z-index: 1300;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n\tmargin: auto;\n`;\n\nconst TriggerButton = styled('button')({\n\tfontFamily: 'IBM Plex Sans, sans-serif',\n\tfontWeight: 600,\n\twidth: 100,\n\tmarginRight: '16px',\n\tfontSize: '0.875rem',\n\tlineHeight: 1.5,\n\tpadding: '8px 16px',\n\ttransition: 'all 150ms ease',\n\tcursor: 'pointer',\n\tbackground: '#3380FF',\n\tborder: '1px solid #3380FF',\n\tcolor: 'white',\n\tmargin: 'auto',\n\n\t'&:hover': {\n\t\tboxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n\t}\n});\n\nconst ChannelManagementContainer: React.FunctionComponent = ({ addErrorAlert, }) => {\n\tconst [channels, setChannels] = React.useState([]);\n\tconst [helpOpen, setHelpOpen] = React.useState(false);\n\n\t// Sub-component selections\n\tconst [selectedTreeNode, setSelectedTreeNode] = React.useState(0);\n\tconst [selectedCompanies, setSelectedCompanies] = React.useState([]);\n\tconst [selectedChannel, setSelectedChannel] = React.useState(\"\");\n\n\tinterface ChannelProps {\n\t\tselectedChannel;\n\t\tselectedTreeNode;\n\t\tselectedCompanies;\n\t}\n\n\tconst handleHelpOpen = () => {setHelpOpen(true)};\n\tconst handleHelpClose = () => setHelpOpen(false);\n\t\n\treturn (\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t{Texts.ChannelManagementView.ViewTitle}\n\t\t\t\tHelp\n\t\t\t\n\n\n\t\t\t\n\t\t\t\t\n \t\t\n\t\t\t\t{ selectedChannel !== \"\" && }\n\t\t\t\t{ selectedChannel !== \"\" && }\n\t\t\t\t{ selectedChannel !== \"\" && }\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t

Automatic Software Download

\n\t\t\t\t\t\t

This feature enables customer devices to retrieve software updates automatically from the Software Download Portal.

\n\t\t\t\t\t\t

A download channel must first be created by pressing the 'Create' button.\n\t\t\t\t\t You must then specify a channel name and a description.

\n\t\t\t\t\t

A download channel is targeted to a particular leaf category in the Software Download Portal's software and documentation tree.\n\t\t\t\t\t\t Everything under that leaf category is available for download, so it is recommended that you create an explicit category that will contain all assets that can be downloaded automatically.\n\t\t\t\t\t\t\tTo specify the leaf category (Shared Path) to be associated with the download channel, click on ‘Select Path’.

\n\t\t\t\t\t\t

You can also specify which companies have access to the channel, click on ‘Select Companies’.\n\t\t\t\t\t The permissions you assign to assets are also obeyed. For example, you can give access to a channel to company A and company B,\n\t\t\t\t\t\t\tbut if you’ve specified that an asset in that channel is only accessible to company A then company B will not have access to it via the download APIs.

\n

In order for the customer's device to access the channel, they must create access keys. This option is available under the Customer Tools - Download Channels menu for an external (customer) login.\n\t\t\t\t\t\t\tThese must be copied to the device so that the download API is accessible.\n\t\t\t\t\t\t\tYou can see which customers have created keys by viewing a download channel when logged in as a Synamedia user.

\n\t\t\t\t\t
\n\t\t\t\t\tClose\n\t\t\t\t
\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\nexport default connect(null, mapDispatchToProps)(ChannelManagementContainer);\n","import * as React from \"react\";\nimport ChannelManagementContainer from \"../../components/channelManagement/ChannelManagementContainer\";\nimport { Box } from \"@mui/system\";\nimport { Container } from \"@mui/material\";\nimport \"./ChannelManagementView.scss\";\n\ninterface ChannelManagementProps {}\n\nconst ChannelManagementView: React.FunctionComponent = (props) => {\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default ChannelManagementView;\n","/*\n MyChannels component (tsx)\n --------------------------------------------------------------------------------\n description\n ------------------------------\n This version: 17/07/2024\n*/\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\n\n// mui\nimport Box from '@mui/material/Box';\nimport { Alert, Button, Stack, Typography } from '@mui/material';\nimport { DataGrid, GridColDef, GridEventListener } from '@mui/x-data-grid';\n\n// custom\nimport CustomTextField from '../CustomTextField';\nimport { IChannelCompany, IChannel, IChannelPermission } from '../../../resources/Contracts';\n//import CompanyPickerModal from '../CompanyPickerModal';\n\nexport default function MyChannels( { setSelectedChannel, myCompanyId } ) \n{\n const apiUrl=\"/api/Channel/company/\";\n const [message, setMessage] = React.useState(\"\"); // alert message contents\n const [data, setData] = useState([]); // data read from companyApiUrl\n //const [pickedChannel, setPickedChannel] = useState(); // selected channel returned to caller\n\n const columns: GridColDef<(IChannel)>[] = [\n {\n field: 'id',\n headerName: 'ID',\n width: 90,\n editable: false,\n },\n {\n field: 'navigationId',\n headerName: 'Navigation ID',\n sortable: false,\n editable: false,\n },\n {\n field: 'name',\n headerName: 'Name',\n headerClassName: 'table-header',\n width: 200,\n editable: false,\n },\n {\n field: 'description',\n headerName: 'Description',\n headerClassName: 'table-header',\n width: 300,\n editable: false,\n },\n {\n field: 'resolvedNavigationNode',\n headerName: 'Shared Path',\n headerClassName: 'table-header',\n sortable: false,\n flex: 1,\n editable: false,\n },\n\n {\n field: 'channelUniqueId',\n headerName: 'Channel ID',\n width: 300,\n editable: false,\n },\n {\n field: 'navigationNode',\n headerName: 'Hierarchy ID',\n sortable: false,\n //width: 20,\n editable: false,\n },\n\n {\n field: 'isEnabled',\n headerName: 'Enabled',\n sortable: false,\n width: 10,\n editable: false,\n },\n {\n field: 'isBlocked',\n headerName: 'Blocked',\n sortable: false,\n // width: 10,\n editable: false,\n },\n ];\n\n const handleSelectionChange = (newSelectionModel: number[]) => {\n const selectedRow = data.filter((row) => newSelectionModel.includes(row.id));\n const selectedChannel = selectedRow.length !== 0 ? selectedRow[0].channelUniqueId : \"\";\n setSelectedChannel(selectedChannel);\n }\n\n useEffect(() => {\n fetch(apiUrl + myCompanyId)\n .then((response) => response.json())\n .then((data) => setData( data ))\n .catch((error) => console.error('Error fetching channel data:', error));\n }, [apiUrl]);\n\n return (\n \n \n {message && {message}}\n \n \n \n \n \n \n \n );\n}","import * as React from 'react';\nimport clsx from 'clsx';\nimport { styled, css } from '@mui/system';\nimport { Modal as BaseModal } from '@mui/base/Modal';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport CustomTextField from '../../channelManagement/CustomTextField';\nimport { IChannel, IChannelCompany, IChannelPermission, IAccessKey } from '../../../resources/Contracts';\nimport { Button, IconButton, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography } from '@mui/material';\nimport { Routing } from '../../../resources/Routes';\n\nexport default function GetAccessKeyModal({selectedChannelUniqueId, myCompanyId}) {\n const [open, setOpen] = React.useState(false);\n const [deleteModalOpen, setDeleteModalOpen] = React.useState(false);\n const [idToDelete, setIdToDelete] = React.useState(null);\n\n const maxNumAccessKeys = 5;\n\n // UI element state\n const [channelName, setChannelName] = React.useState(\"\");\n const [channelDescription, setChannelDescription] = React.useState(\"\");\n const [channelIsEnabled, setChannelIsEnabled] = React.useState(\"\");\n const [channelIsBlocked, setChannelIsBlocked] = React.useState(\"\");\n const [channelUniqueId, setChannelUniqueId] = React.useState(\"\");\n const [channelSharedPath, setChannelSharedPath] = React.useState(\"\");\n const [channelNavigationId, setChannelNavigationId] = React.useState(0);\n const [isHovered, setIsHovered] = React.useState(false);\n\n // Data state\n const [channelAccessKeys, setChannelAccessKeys] = React.useState([]);\n // const [channels, setChannels] = React.useState([]);\n \n \n // API urls\n const apiGetChannel = `/api/Channel/${selectedChannelUniqueId}`;\n const apiGetAccessKeys = `/api/Channel/myaccesskeys/${selectedChannelUniqueId}`;\n const apiNewAccessKey = '/api/Channel/myaccesskeys';\n const apiDeleteAccessKey = `/api/Channel/myaccesskeys/${selectedChannelUniqueId}`\n const apiResolveCompanyNames = '/api/Channel/augment/companies';\n\n const deleteButton = {\n backgroundColor: '#FF3333', color: 'white', border: '1px solid #FF3333', padding: '8px',\n cursor: 'pointer',\n boxShadow: isHovered ? '0px 4px 6px rgba(0, 0, 0, 0.35)' : 'none',\n transition: 'box-shadow 0.3s ease'\n };\n\n async function fetchChannel() {\n const response = await fetch(apiGetChannel);\n if(response.ok)\n {\n const channel = await response.json();\n return channel[0];\n }\n return [];\n }\n\n async function fetchChannelAccessKeys() {\n const response = await fetch(apiGetAccessKeys);\n if(response.ok) return await response.json();\n return [];\n }\n\n async function reloadChannelAccessKeys() {\n const getAccessKeys = await fetchChannelAccessKeys();\n if(getAccessKeys !== null) setChannelAccessKeys(getAccessKeys);\n }\n\n const handleOpen = async () => {\n const getChannel = await fetchChannel();\n const getAccessKeys = await fetchChannelAccessKeys();\n if(getAccessKeys !== null) setChannelAccessKeys(getAccessKeys); \n if(getChannel !== null) {\n setChannelName(getChannel.name);\n setChannelDescription(getChannel.description);\n setChannelUniqueId(getChannel.channelUniqueId);\n setChannelSharedPath(getChannel.resolvedNavigationNode);\n setChannelNavigationId(getChannel.channelNavigationId);\n }\n setOpen(true);\n }\n \n const handleClose = () => setOpen(false);\n const handleCloseReset = () => setOpen(false);\n \n async function handleRequestKey(event: React.MouseEvent) {\n let formData = new FormData();\n formData.append('CompanyId', myCompanyId);\n formData.append('ChannelUniqueId', selectedChannelUniqueId)\n\n const requestOptions = {\n method: 'POST',\n body: formData\n };\n\n await fetch(apiNewAccessKey, requestOptions)\n .catch((error) => console.error('Error when POSTing data:', error));\n reloadChannelAccessKeys();\n }\n\n\n async function handleDeleteKey(Id: number): Promise> {\n setDeleteModalOpen(true);\n setIdToDelete(Id);\n return;\n }\n\n async function handleDeleteConfirm(): Promise> {\n setDeleteModalOpen(false);\n let deleteUrl = `${apiDeleteAccessKey}/${idToDelete}`;\n const requestOptions = {\n method: 'DELETE'\n };\n await fetch(deleteUrl, requestOptions)\n .catch((error) => console.error('Error when DELETING data:', error));\n reloadChannelAccessKeys();\n setIdToDelete(null);\n return;\n }\n\n const handleCopy = (event) => {\n const tableCell = event.currentTarget.closest('td');\n const textToCopy = tableCell.textContent.trim();\n navigator.clipboard.writeText(textToCopy);\n };\n\n const handleDeleteClose = () => {\n setIdToDelete(null);\n setDeleteModalOpen(false);\n }\n\n const deleteModal =\n \n \n

\n Delete Access Key\n

\n

\n You are about to delete this access key. After deletion you will no longer be able to access the download channel using this key.\n

\n

\n Are you really sure?\n

\n
\n Ok\n Cancel\n
\n
\n \n\n return (\n
\n \n Manage Channel Access Keys\n \n \n \n

{channelName}

\n

{channelDescription}

\n \n Shared Path: {channelSharedPath}\n \n

Access Keys

\n {channelAccessKeys !== null && (\n \n\t\t\t\n \n \n \n Download Channel ID\n Access Key\n Expires\n \n \n\t\t\t\t\n\t\t\t\t{channelAccessKeys.map((item, Id) => (\n \n \n \n \n \n \n {item.channelUniqueId}\n \n \n \n \n \n {item.accessKey}\n \n \n \n \n \n \n {(new Date(item.expirationDate)).toUTCString()}\n \n \n\t\t\t\t))}\n\t\t\t\t\n\t\t
\n\t\t
\n )}\n\n\n
\n \n Cancel\n \n { channelAccessKeys.length < maxNumAccessKeys && Request A New Channel Access Key}\n
\n
\n \n {deleteModal}\n
\n );\n}\n\nconst Backdrop = React.forwardRef<\n HTMLDivElement,\n { open?: boolean; className: string }\n>((props, ref) => {\n const { open, className, ...other } = props;\n return (\n \n );\n});\n\nconst Modal = styled(BaseModal)`\n position: fixed;\n z-index: 1300;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst StyledBackdrop = styled(Backdrop)`\n z-index: -1;\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n -webkit-tap-highlight-color: transparent;\n`;\n\nconst ModalContent = styled('div')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 500,\n textAlign: 'start',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n overflow: 'hidden',\n backgroundColor: '#fff',\n borderRadius: '8px',\n border: '1px solid #ddd',\n boxShadow: '0 4px 12px rgb(0 0 0 / 0.2)',\n padding: '24px',\n color: '#000',\n\n '& .modal-title': {\n margin: 0,\n lineHeight: '1.5rem',\n marginBottom: '8px',\n },\n\n '& .modal-description': {\n margin: 0,\n lineHeight: '1.5rem',\n fontWeight: 400,\n color: '#666', // Static light description text color\n marginBottom: '4px',\n },\n});\n\n const TriggerButton = styled('button')({\n fontFamily: 'IBM Plex Sans, sans-serif',\n fontWeight: 600,\n marginLeft: '-16px',\n fontSize: '0.875rem',\n lineHeight: 1.5,\n padding: '8px 16px',\n transition: 'all 150ms ease',\n cursor: 'pointer',\n background: '#3380FF',\n border: '1px solid #3380FF',\n color: 'white',\n\n '&:hover': {\n boxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n }\n });\n","import { Typography } from \"@mui/material\";\nimport { Box } from \"@mui/system\";\nimport * as React from \"react\";\nimport { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as Contracts from \"../../resources/Contracts\";\n//import { Service } from \"../../services/Service\";\nimport { actionCreators as AlertStoreActionCreators } from \"../../store/AlertStore\";\nimport { ApplicationState } from \"../../store\";\nimport { CurrentUserState } from \"../../store/CurrentUser\";\nimport { handleErrorMessage } from \"../../utils/utils\";\nimport \"./MyChannelsContainer.scss\";\nimport Texts from \"../../resources/Texts\";\nimport { IChannel, IChannelCompany } from \"../../resources/Contracts\";\nimport MyChannels from \"../channelManagement/ChannelList/MyChannels\";\nimport GetAccessKeyModal from \"./GetAccessKey/GetAccessKeyModal\";\nimport InfoIcon from '@mui/icons-material/Info';\nimport { styled, css } from '@mui/system';\nimport { Modal as BaseModal } from '@mui/base/Modal';\nimport clsx from 'clsx';\n//type MyChannelsContainerProps = typeof AlertStoreActionCreators & {};\n\n//const MyChannelsContainer: React.FunctionComponent = (props) => {\n\ntype MyChannelsContainerProps = typeof AlertStoreActionCreators & CurrentUserState & {};\n\nconst MyChannelsContainer: React.FC> = (props) => {\n\tconst [channels, setChannels] = React.useState([]);\n\t\n\t// Sub-component selections\n\tconst [selectedChannel, setSelectedChannel] = React.useState(\"\");\n\tconst [helpModalOpen, setHelpModalOpen] = React.useState(false);\n\n\tlet myCompany = props.user.companyId;\n\n\tconst handleHelpOpen = () => setHelpModalOpen(true);\n\tconst handleHelpClose = () => setHelpModalOpen(false);\n\n\treturn (\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t{Texts.MyChannelsView.ViewTitle}\n\t\t\t\tHelp\n\t\t\t\n\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{ selectedChannel !== \"\" && }\n\n\t\t\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t

Automatic Software Download

\n\t\t\t\t\t\t

Some products offer automatic download of software updates so that you do not have to manually download them from the Software Download Portal.\n\n\t\t\t\t\t\tIf you have been given access to Download Channels for automatic software download then they will appear here.

\n\t\t\t\t\t\t

In order to download the software updates you must first create Channel Access Keys and configure them in your product. (Please refer to your product documentation on how to do this).

\n\t\t\t\t\t\t

Select a channel and then click on the ‘Manage Channel Access Keys’ button.\n\t\t\t\t\t\tThe screen will then show you details of the channel and what it has access to, along with any channel access keys that have already been created.\n\t\t\t\t\t\tIf you want to create a key then click on 'Request A New Channel Access Key'. You can then copy the Download Channel and Access Key to your product by clicking on the copy icons.

\n\t\t\t\t\t\t

Up to 5 keys may be created per channel. Keys can be deleted by clicking on ‘Delete’.

\n\t\t\t\t\t
\n\t\t\t\t\tClose\n\t\t\t\t
\n\t\t\t\n\t\t\n\t);\n};\n\nconst mapDispatchToProps = (dispatch) => {\n\treturn bindActionCreators(\n\t\t{\n\t\t\t...AlertStoreActionCreators,\n\t\t},\n\t\tdispatch\n\t);\n};\n\n//export default connect(null, mapDispatchToProps)(MyChannelsContainer);\nexport default connect((state: ApplicationState) => state.currentUser, mapDispatchToProps)(MyChannelsContainer);\n\nconst Backdrop = React.forwardRef<\n\tHTMLDivElement,\n\t{ open?: boolean; className: string }\n>((props, ref) => {\n\tconst { open, className, ...other } = props;\n\treturn (\n\t\t\n\t);\n});\n\nconst StyledBackdrop = styled(Backdrop)`\n z-index: -1;\n position: fixed;\n inset: 0;\n background-color: rgb(0 0 0 / 0.5);\n -webkit-tap-highlight-color: transparent;\n`;\n\nconst ModalContent = styled('div')({\n\tfontFamily: 'IBM Plex Sans, sans-serif',\n\tfontWeight: 500,\n\ttextAlign: 'start',\n\tposition: 'relative',\n\tdisplay: 'flex',\n\tflexDirection: 'column',\n\tpadding: '24px',\n\tgap: '8px',\n\toverflow: 'hidden',\n\tbackgroundColor: '#fff', // Static background color\n\tborderRadius: '8px',\n\tborder: `1px solid white`, // Static border color\n\tboxShadow: '0 4px 12px rgb(0 0 0 / 0.2)', // Static shadow\n\tcolor: 'black', // Static text color\n\n\t'& .modal-title': {\n\t\tmargin: 0,\n\t\tlineHeight: '1.5rem',\n\t\tmarginBottom: '8px',\n\t},\n\n\t'& .modal-description': {\n\t\tmargin: 0,\n\t\tlineHeight: '1.5rem',\n\t\tfontWeight: 400,\n\t\tcolor: '#303740', // Static description color\n\t\tmarginBottom: '4px',\n\t},\n\n\t'&:focus': {\n\t\toutline: 'none', // Removes the default blue focus outline\n\t},\n});\n\nconst Modal = styled(BaseModal)`\n position: fixed;\n z-index: 1300;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n\tmargin: auto;\n`;\n\nconst TriggerButton = styled('button')({\n\tfontFamily: 'IBM Plex Sans, sans-serif',\n\tfontWeight: 600,\n\twidth: 100,\n\tmarginRight: '16px',\n\tfontSize: '0.875rem',\n\tlineHeight: 1.5,\n\tpadding: '8px 16px',\n\ttransition: 'all 150ms ease',\n\tcursor: 'pointer',\n\tbackground: '#3380FF',\n\tborder: '1px solid #3380FF',\n\tcolor: 'white',\n\tmargin: 'auto',\n\n\t'&:hover': {\n\t\tboxShadow: '0px 4px 6px rgba(0, 0, 0, 0.35)',\n\t}\n});","import * as React from \"react\";\nimport MyChannelsContainer from \"../../components/myChannels/MyChannelsContainer\";\nimport { Box } from \"@mui/system\";\nimport { Container } from \"@mui/material\";\nimport \"./MyChannelsView.scss\";\n\ninterface MyChannelsProps {}\n\nconst MyChannelsView: React.FunctionComponent = (props) => {\n\n\treturn (\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t);\n};\n\nexport default MyChannelsView;\n","import React, { useEffect, useState } from \"react\";\nimport { useParams, useLocation } from \"react-router-dom\";\nimport { Service } from \"../../services/Service\";\n\n\ninterface RouteParams {\n nodeId: string;\n}\n\nconst GetFile: React.FC = () => {\n const location = useLocation();\n const searchParams = new URLSearchParams(decodeURIComponent(location.search));\n const file = searchParams.get('file');\n const solution = searchParams.get('solution');\n\n const { nodeId } = useParams();\n const [error, setError] = useState(null); // State to track errors\n const msgStyle = {marginTop: '160px', marginLeft: '32px'};\n const errorText = {\n 403: `The file, ${solution} - ${file}, is no longer public - please contact support.`,\n 404: `The file, ${solution} - ${file}, is no longer available - please contact support.`\n };\n useEffect(() => {\n const redirectToFile = async (id: string) => {\n try {\n window.location.href = await Service.getPublicDownloadUrl(id);\n } catch (error) {\n console.error(\"Failed to get the download URL:\", error);\n setError(error.response.status);\n }\n };\n\n if (nodeId) {\n redirectToFile(nodeId);\n }\n }, [nodeId]);\n\n if (error) {\n const errorMsg = errorText[error] ?? `Something went wrong with the file, ${solution} - ${file}, please try again. If this issue persists then please contact support.`;\n\n return (\n
\n

Error

\n

{errorMsg}

\n
\n );\n }\n\n return (\n
\n

Getting file {solution} - {file} ...

\n
\n );};\n\nexport default GetFile;\n","import * as React from \"react\";\nimport { Route as WrongRoute, Switch as WrongSwitch } from \"react-router-dom\";\nimport Layout from \"./components/Layout\";\nimport RoleRestrictedComponent from \"./components/shared/formControls/RoleRestrictedComponent\";\nimport { Routing } from \"./resources/Routes\";\nimport \"./styles/custom.scss\";\nimport FileManagementView from \"./views/fileManagement/FileManagementView\";\nimport HomeView from \"./views/homeView/HomeView\";\nimport SolutionsView from \"./views/solutionsView/SolutionsView\";\nimport ContactsView from \"./views/contacts/ContactsView\";\nimport OpensourceView from \"./views/opensource/OpensourceView\";\nimport HelpView from \"./views/helpView/HelpView\";\nimport CategoryManagementView from \"./views/categoryManagement/CategoryManagementView\";\nimport ChannelManagementView from \"./views/channelManagement/ChannelManagementView\";\nimport MyChannelsView from \"./views/myChannels/MyChannelsView\";\nimport GetFile from \"./components/fileManagement/GetFile\";\n\nconst Switch = WrongSwitch as any;\nconst Route = WrongRoute as any;\n\nconst App: React.FunctionComponent<{}> = () => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default App;\n","// In production, we register a service worker to serve assets from local cache.\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 the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\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.1/8 is 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 default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const url = process.env.PUBLIC_URL as string;\n const publicUrl = new URL(url, window.location.toString());\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/facebookincubator/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. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing as ServiceWorker;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\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 }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\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 (response.status === 404 || (contentType && contentType.indexOf('javascript') === -1)) {\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);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import { Action, Reducer } from \"redux\";\nimport { IUser } from \"../resources/Contracts\";\n\nexport interface CurrentUserState {\n\tuser: IUser;\n}\n\nexport interface SetCurrentUserNameAction {\n\ttype: \"SET_CURRENT_USER\";\n\tpayload: IUser;\n}\n\nexport type KnownAction = SetCurrentUserNameAction;\n\nexport const actionCreators = {\n\tsetCurrentUserName: (user: IUser) =>\n\t\t({ type: \"SET_CURRENT_USER\", payload: user } as SetCurrentUserNameAction),\n};\n\nexport const reducer: Reducer = (\n\tstate: CurrentUserState | undefined,\n\tincomingAction: Action\n) => {\n\tif (state === undefined) {\n\t\treturn { user: null };\n\t}\n\n\tconst action = incomingAction as KnownAction;\n\tswitch (action.type) {\n\t\tcase \"SET_CURRENT_USER\":\n\t\t\treturn { user: action.payload };\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n","import * as SelectedSolutions from \"./SelectedSolution\";\nimport * as CurrentUser from \"./CurrentUser\";\nimport * as AlertStore from \"./AlertStore\";\nimport * as FileManagement from \"./FileManagement\";\n\n// The top-level state object\nexport interface ApplicationState {\n\tselectedSolutions: SelectedSolutions.SelectedSolutionState;\n\tcurrentUser: CurrentUser.CurrentUserState;\n\talerts: AlertStore.AlertState;\n\tfileManagement: FileManagement.FileManagementState;\n}\n\n// Whenever an action is dispatched, Redux will update each top-level application state property using\n// the reducer with the matching name. It's important that the names match exactly, and that the reducer\n// acts on the corresponding ApplicationState property type.\nexport const reducers = {\n\tselectedSolutions: SelectedSolutions.reducer,\n\tcurrentUser: CurrentUser.reducer,\n\talerts: AlertStore.reducer,\n\tfileManagement: FileManagement.reducer,\n};\n\n// This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are\n// correctly typed to match your store.\nexport interface AppThunkAction {\n\t(dispatch: (action: TAction) => void, getState: () => ApplicationState): void;\n}\n","import { ConnectedRouter as WrongConnectedRouter } from \"connected-react-router\";\nimport \"core-js\";\nimport { createBrowserHistory } from \"history\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Provider as WrongProvider } from \"react-redux\";\nimport App from \"./App\";\nimport { unregister as unregisterServiceWorker } from \"./registerServiceWorker\";\nimport configureStore from \"./store/configureStore\";\nimport { Service } from \"./services/Service\";\nimport { actionCreators as CurrentUserActionCreators } from \"./store/CurrentUser\";\nimport { IUser } from \"./resources/Contracts\";\n\nconst Provider = WrongProvider as any;\nconst ConnectedRouter = WrongConnectedRouter as any;\n\n// Create browser history to use in the Redux store\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\") as string;\nconst history = createBrowserHistory({ basename: baseUrl });\n\n// Get the application-wide store instance, prepopulating with state from the server where available.\nconst store = configureStore(history);\n\nconst startApp = async (): Promise => {\n\tlet user: IUser;\n\n\tasync function loadUser() {\n\t\ttry {\n\t\t\tuser = await Service.getCurrentUser();\n\t\t} catch (error) {\n\t\t\tconsole.error(error);\n\t\t}\n\n\t\tif (user) {\n\t\t\tstore.dispatch(CurrentUserActionCreators.setCurrentUserName(user));\n\n\t\t\tconst timeoutMinutes: number = 20;\n\t\t\tconst timeoutSeconds: number = 10;\n\n\t\t\tconst totalTimeoutMs: number = timeoutMinutes * 60 * 1000 + timeoutSeconds * 1000;\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tloadUser();\n\t\t\t}, totalTimeoutMs);\n\t\t}\n\t}\n\n\tawait loadUser();\n\n\tReactDOM.render(\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t,\n\t\tdocument.getElementById(\"root\")\n\t);\n};\n\nstartApp();\n\n//registerServiceWorker();\nunregisterServiceWorker();\n","import { applyMiddleware, combineReducers, compose, createStore } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport { connectRouter, routerMiddleware } from \"connected-react-router\";\nimport { History } from \"history\";\nimport { ApplicationState, reducers } from \"./\";\n\nexport default function configureStore(history: History, initialState?: ApplicationState) {\n\tconst middleware = [thunk, routerMiddleware(history)];\n\n\tconst rootReducer = combineReducers({\n\t\t...reducers,\n\t\trouter: connectRouter(history),\n\t});\n\n\tconst enhancers: any[] = [];\n\tconst windowIfDefined = typeof window === \"undefined\" ? null : (window as any);\n\tif (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\n\t\tenhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\n\t}\n\n\tconst store = createStore(\n\t\trootReducer,\n\t\tinitialState,\n\t\tcompose(applyMiddleware(...middleware), ...enhancers)\n\t);\n\n\treturn store;\n}\n","module.exports = __webpack_public_path__ + \"static/media/synamedia-white.94fe9662.svg\";","module.exports = __webpack_public_path__ + \"static/media/synamedia-icon-white.4c3e4428.svg\";","module.exports = __webpack_public_path__ + \"static/media/downloadlink.574519e3.png\";","module.exports = __webpack_public_path__ + \"static/media/downloadDialog.21985d2c.png\";","module.exports = __webpack_public_path__ + \"static/media/overwriteFile.1c20c709.png\";","module.exports = __webpack_public_path__ + \"static/media/downloadlink.574519e3.png\";","module.exports = __webpack_public_path__ + \"static/media/downloadDialog.21985d2c.png\";","module.exports = __webpack_public_path__ + \"static/media/overwriteFile.1c20c709.png\";"],"sourceRoot":""}