{"version":3,"sources":["components/@material-extend/MHidden.js","components/MenuPopover.js","_mocks_/account.js","layouts/dashboard/AccountPopover.js","layouts/dashboard/DashboardNavbar.js","components/Scrollbar.js","components/NavSection.js","layouts/dashboard/SidebarConfig.js","layouts/dashboard/DashboardSidebar.js","layouts/dashboard/index.js","components/Logo.js","layouts/LogoOnlyLayout.js","components/Page.js","components/StyledSnackbar.js","utils/headers.js","AxiosInstance.js","components/ForgotPasswordEmailModal.js","components/authentication/login/LoginForm.js","pages/Login.js","layouts/AuthLayout.js","components/authentication/register/RegisterForm.js","pages/Register.js","components/_dashboard/products/ProductCartWidget.js","components/Label.js","components/_dashboard/products/ProductCard.js","components/_dashboard/products/ProductList.js","services/products.services.js","pages/Products.js","components/_dashboard/user/UserListToolbarWithoutDebounce.js","components/SearchNotFound.js","components/_dashboard/user/UserListHead.js","components/_dashboard/user/UserListToolbar.js","components/_dashboard/user/OrderListToolbar.js","components/EditPatient.js","components/_dashboard/user/UserMoreMenu.js","services/patients.services.js","pages/User.js","components/animate/variants/Wrap.js","components/animate/variants/bounce/BounceIn.js","components/animate/variants/bounce/BounceOut.js","components/animate/MotionContainer.js","pages/Page404.js","components/ThreeDModal.js","components/ClearAlignersModal.js","utils/abbreviator.js","services/profile.services.js","services/orders.services.js","utils/UrlValidator.js","pages/OrderNow.js","components/_dashboard/app/PendingOrders.js","utils/formatNumber.js","components/_dashboard/app/AppItemOrders.js","components/_dashboard/app/AppNewUsers.js","components/_dashboard/app/AppWeeklySales.js","services/dashboard.services.js","pages/ClientsDashboard.js","constants/OrdersStatus.js","pages/OrderHistory.js","components/TrackingDetails.js","components/Stepper.js","components/CancelledOrder.js","pages/OrderDetails.js","components/pdflogoBase64.js","components/UploadLoader.js","components/EditAddressModal.js","pages/AddPatient.js","components/AddressMoreMenu.js","components/AddAddressModal.js","pages/EditPatient.js","pages/MyProfile.js","components/authentication/login/ForgotPasswordForm.js","pages/ForgotPassword.js","routes.js","theme/shape.js","theme/palette.js","theme/typography.js","theme/overrides/index.js","theme/overrides/Card.js","theme/overrides/Lists.js","theme/overrides/Paper.js","theme/overrides/Input.js","theme/overrides/Button.js","theme/overrides/Tooltip.js","theme/overrides/Backdrop.js","theme/overrides/Typography.js","theme/overrides/IconButton.js","theme/overrides/Autocomplete.js","theme/shadows.js","theme/index.js","theme/globalStyles.js","components/ScrollToTop.js","components/charts/BaseOptionChart.js","App.js","serviceWorker.js","reportWebVitals.js","index.js"],"names":["MHidden","width","children","breakpoint","substring","hiddenUp","useMediaQuery","theme","breakpoints","up","hiddenDown","down","includes","propTypes","PropTypes","node","oneOf","isRequired","ArrowStyle","styled","top","zIndex","right","height","content","position","borderRadius","transform","background","palette","paper","borderRight","alpha","grey","borderBottom","MenuPopover","sx","other","Popover","anchorOrigin","vertical","horizontal","transformOrigin","PaperProps","mt","ml","overflow","boxShadow","customShadows","z20","border","className","account","displayName","email","photoURL","MENU_OPTIONS","label","icon","personFill","linkTo","AccountPopover","userData","JSON","parse","window","localStorage","getItem","anchorRef","useRef","useState","open","setOpen","navigate","useNavigate","handleClose","logoutHandler","a","removeItem","replace","Button","ref","onClick","Avatar","src","alt","style","color","onClose","anchorEl","current","Box","my","px","Typography","variant","noWrap","name","Divider","map","option","MenuItem","to","component","RouterLink","typography","py","Icon","mr","p","pt","fullWidth","RootStyle","AppBar","backdropFilter","WebkitBackdropFilter","backgroundColor","default","DRAWER_WIDTH","ToolbarStyle","Toolbar","minHeight","padding","spacing","DashboardNavbar","onOpenSidebar","IconButton","menu2Fill","flexGrow","Stack","direction","alignItems","xs","sm","SimpleBarStyle","SimpleBarReact","maxHeight","opacity","Scrollbar","test","navigator","userAgent","overflowX","timeout","clickOnTrack","ListItemStyle","props","ListItemButton","disableGutters","body2","textTransform","paddingLeft","paddingRight","text","secondary","bottom","display","borderTopLeftRadius","borderBottomLeftRadius","primary","main","ListItemIconStyle","ListItemIcon","justifyContent","NavItem","item","active","useTheme","isActiveRoot","path","title","info","activeRootStyle","fontWeight","bgcolor","action","selectedOpacity","activeSubStyle","prev","ListItemText","disableTypography","arrowIosDownwardFill","arrowIosForwardFill","Collapse","in","unmountOnExit","List","disablePadding","isActiveSub","transition","transitions","create","NavSection","navConfig","pathname","useLocation","match","matchPath","end","getIcon","sidebarConfig","pieChart2Fill","peopleFill","shoppingBagFill","fileTextFill","flexShrink","AccountStyle","shape","borderRadiusSm","DashboardSidebar","isOpenSidebar","onCloseSidebar","useEffect","renderContent","flexDirection","mb","mx","marginTop","Link","underline","role","Drawer","MainStyle","paddingTop","APP_BAR_MOBILE","paddingBottom","APP_BAR_DESKTOP","DashboardLayout","Logo","HeaderStyle","left","lineHeight","LogoOnlyLayout","Page","forwardRef","string","StyledSnackbar","xPos","yPos","status","Snackbar","autoHideDuration","Alert","severity","headers","Authorization","instance","axios","interceptors","request","use","config","token","error","Promise","reject","response","swal","data","message","process","method","stringify","password","AES","decrypt","toString","enc","Utf8","setItem","userDetails","meta","id","location","reload","clear","ForgotPasswordEmailModal","values","setValues","spinner","setSpinner","errors","setErrors","errorsMsg","setErrorsMsg","emailRegex","submitHandler","IsOpen","maxWidth","TextField","type","value","onChange","event","target","length","autoComplete","helperText","CircularProgress","LoginForm","showPassword","setShowPassword","LoginSchema","Yup","required","openSnack","setOpenSnack","handleClick","formik","useFormik","initialValues","remember","validationSchema","onSubmit","trim","envrypted","encrypt","setSnackBarData","snackbarData","touched","isSubmitting","handleSubmit","getFieldProps","Modal","aria-labelledby","aria-describedby","noValidate","Boolean","InputProps","endAdornment","InputAdornment","show","edge","eyeFill","eyeOffFill","FormControlLabel","control","Checkbox","checked","LoadingButton","size","loading","href","rel","reason","SectionStyle","Card","margin","ContentStyle","Login","Container","gutterBottom","AuthLayout","md","RegisterForm","RegisterSchema","firstName","min","max","lastName","Register","align","textAlign","cursor","borderRadiusMd","ownerState","minWidth","whiteSpace","fontSize","pxToRem","fontFamily","fontWeightBold","contrastText","styleFilled","styleOutlined","dark","styleGhost","Label","ProductImgStyle","objectFit","ProductImgStyleDisabled","filter","ShopProductCard","product","urldata","ProductList","products","modalIsOpen","setModalIsOpen","subProducts","setSubProducts","fetchSubProducts","productID","Grid","container","disable","index","find","url","outline","alignContent","TableContainer","Paper","Table","aria-label","TableBody","subProduct","TableRow","TableCell","scope","getBrandsServices","getUserWiseBrandsServices","getUserWiseModelsServices","getTrimsServices","getModelsServices","getShippingTax","getModalTaxServices","getBrandsTaxServices","getAddonsTaxServices","getProductsServices","EcommerceShop","productNames","setproductNames","productNamesData","fetchProduct","SearchStyle","OutlinedInput","easing","easeInOut","duration","shorter","z8","borderWidth","borderColor","UserListToolbarWithoutDebounce","numSelected","onFilterName","placeholder","startAdornment","searchFill","SearchNotFound","UserListHead","order","orderBy","headLabel","onRequestSort","TableHead","headCell","alignRight","sortDirection","TableSortLabel","hideSortIcon","property","visuallyHidden","UserListToolbar","OrderListToolbar","filterName","defaultValue","EditPatient","address1","address","address_line_1","address2","address_line_2","landmark","mobile","state","pincode","pincodeId","city","pincodes","setPincodes","fetch","responseForPincode","json","fetcher","isOpen2","setIsOpen2","street","addPatientHandler","body","pincode_id","Number","addAddressResp","handleChange","prop","v","fetchPincodes","e","resp","forEach","currentArray","onInput","slice","phone","flexWrap","disabled","Autocomplete","noOptionsText","onKeyPress","onKeyDown","options","renderInput","params","UserMoreMenu","openEdit","setOpenEdit","isOpen","setIsOpen","moreVerticalFill","Menu","editFill","primaryTypographyProps","getPincodesDetailsServices","uploadPatientsFileServices","folderName","file_name","uploadPatientsFileByIdServices","patient_uuid","patientUuid","getPatientsAttachmentByIdServices","getPatientsDetailsByIdServices","getPatientsAddressByIdServices","addPatientsServices","editPatientsServices","getAllPincodesServices","getAllPatientsListsServices","rowsPerPage","page","searchByName","TABLE_HEAD","User","setPage","pageCount","setPageCount","setOrder","selected","setSelected","setOrderBy","setFilterName","setRowsPerPage","patients","setPatients","addressDetails","split","toLowerCase","search","handleChangePage","newPage","changeHandler","debouncedChangeHandler","useMemo","debounce","filteredUsers","isUserNotFound","startIcon","plusFill","rowCount","onSelectAllClick","newSelecteds","n","row","isItemSelected","indexOf","hover","tabIndex","aria-checked","colSpan","searchQuery","TablePagination","rowsPerPageOptions","count","onPageChange","onRowsPerPageChange","parseInt","labelRowsPerPage","varWrapEnter","animate","staggerChildren","TRANSITION_ENTER","ease","TRANSITION_EXIT","varBounceIn","scale","exit","y","scaleY","x","scaleX","MotionContainer","motion","div","initial","variants","Page404","paragraph","ThreeDModal","React","inCartItems","rerenderedCart","setRerenderedCart","thickness","aligner","foil","commonData","setCommonData","prefix","minRange","maxRange","upperData","setUpperData","lowerData","setLowerData","upperMax","upperMin","lowerMax","lowerMin","errorCommon","setErrorCommon","cartData","setCartData","handleChangeUpper","resetUpper","resetLower","resetCommon","handleChangeLower","handlerSave","correctInput","isCorrectCounter","setInCartItems","handleEditInCart","FormControl","model","getOptionLabel","newValue","FormHelperText","cart","labelId","mode","ClearAlignersModal","upperDataTemplate","setUpperDataTemplate","lowerDataTemplate","setLowerDataTemplate","upperDataAligner","setUpperDataAligner","lowerDataAligner","setLowerDataAligner","upperDataRetainer","setUpperDataRetainer","lowerDataRetainer","setLowerDataRetainer","errorsTemplate","setErrorsTemplate","errorsAligner","setErrorsAligner","errorsRetainer","setErrorsRetainer","resetAll","brand","bran","abbreviate","s","changePasswordServices","old_password","cPassword","new_password","newPassword","new_password_confirmation","getDoctorAddressById","getDoctorDetailsServices","getOrderDetailsById","getPatientsListServices","term","updateOrderAddressByOrderIdServices","addid","address_type","shipToClinicServices","addressDr","downloadOrderInvoiceByIdServices","getAddonsServices","getOrdersListServices","rowsPerPageParam","pageParam","orderStatusParam","getPatientsOrdersListServices","patientId","razorPayOnlinePaymentServices","createOrderServices","uploadOrderAttachment","fileName","fileType","isUrl","descendingComparator","b","loadScript","resolve","script","document","createElement","onload","onerror","appendChild","OrderNow","formdata","FormData","userId","inCart","setInCart","setAddress","brands","setBrands","shippingCost","setShippingCost","trims","setTrims","ship2Clinic","setShip2Clinic","slug","aligners","models","setModels","addons","setAddons","patientsOrders","setPatientsOrders","productsListing","setProductsListing","spinnerHistory","setSpinnerHistory","attachmentFile","setAttachmentFile","attachmentFileType","setAttachmentFileType","addressId","productId","files","instructions","attachmentId","driveLink","orderDetails","setOrderDetails","orderErrors","setOrderErrors","addressList","setAddressList","addressAbbreviation","setAddressAbbreviation","addressWithoutAbbreviation","addPatientAddress","addressData","getPatientAddress","priceAndTax","price","tax","TotalPrice","addon","addonTax","TotalTax","addOnsCart","setAddOnsCart","priceOfCart","setPriceOfCart","getAddress","code","getBrands","setBrandsUserWise","getBrandsUserWise","setModelsUserWise","getModelsUserWise","getTrims","prodArr","obj","getProducts","getModels","getShip","setModelTax","getModelTax","setBrandTax","getBrandTax","setAddonTax","getAddOnsTax","getAddOns","fetchPatiensArray","fetchPatients","brandsUserWise","modelsUserWise","modelTax","brandTax","setTax","attachmentsList","setAttachmentsList","getAttachments","modalStyle","overflowY","handleOpen","sum","i","j","productable_id","personName","setPersonName","addonsPrice","setAddOnsPrice","add","patient","is_clinic_address","placeOrderHandler","preventDefault","orderArray","push","brand_id","aligner_type_id","model_type_id","checkPaymentMethod","paymentMethod","payment_method","is_blocked","alert","product_id","quantity","amount","shipping_cost","total_amount","order_details","key","currency","order_id","description","handler","razorpay_payment_id","filePath","res","resdata","uploadURL","append","put","customer_id","address_id","patient_id","drive_link","stl_attachment","file_attachment","razorpay_order_id","add_ons","ship_to_clinic","trim_id","then","setTimeout","prefill","notes","eventName","Razorpay","emptyRows","Math","array","comparator","query","stabilizedThis","el","sort","_user","applySortFilter","getComparator","setFileName","encType","autoHighlight","handleChangeId","renderOption","inputProps","InputLabel","Select","MenuProps","attach","attachment_url","multiline","addres","multiple","input","renderValue","gap","toLocaleString","maxLength","accept","getElementById","click","marginBottom","ListItem","origin","moment","ordered_on","format","delivered_on","PendingOrders","fShortenNumber","number","numeral","darker","lighter","IconWrapperStyle","backgroundImage","AppItemOrders","pending","AppNewUsers","success","AppWeeklySales","orders","getPendingOrdersServices","getTotalOrdersServices","getTotalPatientsCountServices","DashboardApp","setOrders","setPending","total_pending","fetchPendingOrders","total_orders","fetchOrders","fetchPatient","total_patient","pb","ORDER_STATUS_ARR","getCorrectColor","OrderHistory","searchByNameParam","orderStatusId","setOrderStatusId","filterParam","filterValue","fetchordersByStatus","downloadCSV","anchor","Headers","blob","blobby","objectUrl","URL","createObjectURL","download","revokeObjectURL","marginLeft","sentenceCase","TrackingDetails","trackingDetails","setTrackingDetails","justifyItems","htmlFor","clipboard","writeText","HorizontalLinearStepper","Stepper","activeStep","orientation","Step","fill","StepLabel","cancelled","Factory","LocalShipping","EmojiEmotions","ReasonForCancellation","OrderDetails","useParams","saveSpinner","setSaveSpinner","edit","setEdit","setError","address_history","fetchOrderById","updateOrderAddress","setAddressDr","fetchUserAddress","undefined","fetchUserAddressDr","addressID","setAddressID","printDocument","admin","adminPhone","adminEmail","adminWebsite","orderData","details","model_type","alignment","aligner_type","addonslist","order_add_ons","add_on","documentDefinition","columns","image","table","invoice","payment_mode","layout","widths","headerRows","user","addons_total","heights","bold","styles","header","tableHeader","logo","nameTable","tableBillTo","addonsTable","instructionsTable","totalTable","footer","pdfMake","vfs","pdfFonts","createPdf","addressChangeHandler","invoice_url","lg","orders_histories","od","wordBreak","tracking_info","UploadLoader","round","EditAddressModal","getAddressForced","AddPatient","zip","JSZip","errorMsg","setErrorMsg","setFiles","file","setFile","idx","setIdx","progressUpload","setProgressUpload","progressUploadShow","setProgressUploadShow","setObj","volume","stlWidth","innerWidth","setSrc","heroFiles","setHeroFiles","indexOfAddress","setFolderName","filesError","setFilesError","progressElements","querySelector","generateAsync","compression","currentFile","percent","innerHTML","toFixed","responseURL","fileURL","onUploadProgress","progressEvent","percentCompleted","loaded","total","awsResponse","console","log","attachment","catch","err","showIndicators","showStatus","texPath","orbitControls","shadows","Tooltip","directory","webkitdirectory","webkitRelativePath","stlfileHandler","fontStyle","LinearProgress","marginRight","AddressMoreMenu","deleteHandler","customClass","buttons","dangerMode","willDelete","addressable_type","delete","trash2Outline","editHandler","AddAddressModal","addressable_id","pid","openAddAddressModal","setAddAddressModal","spinnerLoading","setSpinnerLoading","addPatient","getPatient","addAddressHandler","setIndexOfAddress","setId","fetchEditPatient","getAddressForPatients","wordWrap","Date","createdAt","toLocaleTimeString","timeZone","hour12","hour","minute","MyProfile","setUserdata","handleMouseDownPassword","forPasswordVerification","forPasswordUpdate","setLoading","confirmPassword","showPassword1","showPassword2","showPassword3","handleChangePass","cPwdWrg","setCPwdWrg","spinner3","getInfo","getUserInfo","additional_emails","additional_contacts","onMouseDown","Visibility","VisibilityOff","ForgotPasswordForm","tok","unescape","encodeURIComponent","password_confirmation","ForgotPassword","Router","useRoutes","element","createGradient","color1","color2","GREY","0","100","200","300","400","500","600","700","800","900","PRIMARY","light","INFO","SUCCESS","WARNING","ERROR","GRADIENTS","warning","common","black","white","gradients","chart","violet","blue","green","yellow","red","divider","neutral","disabledBackground","focus","hoverOpacity","disabledOpacity","responsiveFontSizes","fontWeightRegular","fontWeightMedium","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","caption","overline","letterSpacing","button","ComponentsOverrides","merge","MuiCard","styleOverrides","root","z16","MuiCardHeader","defaultProps","titleTypographyProps","subheaderTypographyProps","MuiCardContent","MuiListItemIcon","MuiListItemAvatar","MuiListItemText","Lists","MuiPaper","elevation","MuiInputBase","MuiInput","borderBottomColor","MuiFilledInput","MuiOutlinedInput","Input","MuiButton","sizeLarge","containedInherit","containedPrimary","containedSecondary","outlinedInherit","textInherit","MuiTooltip","tooltip","arrow","varLow","varHigh","MuiBackdrop","Backdrop","MuiTypography","MuiIconButton","MuiAutocomplete","LIGHT_MODE","transparent","z1","z12","z24","createCustomShadow","transparent1","transparent2","transparent3","createShadow","ThemeConfig","themeOptions","createTheme","components","componentsOverride","StyledEngineProvider","injectFirst","ThemeProvider","CssBaseline","GlobalStyles","boxSizing","html","WebkitOverflowScrolling","MozAppearance","WebkitAppearance","textarea","img","WebkitFilter","ScrollToTop","scrollTo","BaseOptionChartStyle","App","hostname","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","serviceWorker","ready","registration","unregister"],"mappings":"wbAsBe,SAASA,EAAT,GAAuC,IAApBC,EAAmB,EAAnBA,MAAOC,EAAY,EAAZA,SACjCC,EAAaF,EAAMG,UAAU,EAAG,GAEhCC,EAAWC,aAAc,SAACC,GAAD,OAAWA,EAAMC,YAAYC,GAAGN,MACzDO,EAAaJ,aAAc,SAACC,GAAD,OAAWA,EAAMC,YAAYG,KAAKR,MAEnE,OAAIF,EAAMW,SAAS,QACVF,EAAa,KAAOR,EAGzBD,EAAMW,SAAS,MACVP,EAAW,KAAOH,EAGpB,KA9BTF,EAAQa,UAAY,CAClBX,SAAUY,IAAUC,KACpBd,MAAOa,IAAUE,MAAM,CACrB,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,OACA,SACCC,Y,gKCZCC,EAAaC,YAAO,OAAPA,EAAe,gBAAGZ,EAAH,EAAGA,MAAH,sBAC/BA,EAAMC,YAAYC,GAAG,MAAQ,CAC5BW,KAAM,EACNC,OAAQ,EACRpB,MAAO,GACPqB,MAAO,GACPC,OAAQ,GACRC,QAAS,KACTC,SAAU,WACVC,aAAc,YACdC,UAAW,kBACXC,WAAYrB,EAAMsB,QAAQD,WAAWE,MACrCC,YAAY,aAAD,OAAeC,YAAMzB,EAAMsB,QAAQI,KAAK,KAAM,MACzDC,aAAa,aAAD,OAAeF,YAAMzB,EAAMsB,QAAQI,KAAK,KAAM,WAW/C,SAASE,EAAT,GAAkD,IAA3BjC,EAA0B,EAA1BA,SAAUkC,EAAgB,EAAhBA,GAAOC,EAAS,iBAC9D,OACE,eAACC,EAAA,EAAD,yBACEC,aAAc,CAAEC,SAAU,SAAUC,WAAY,SAChDC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SAChDE,WAAY,CACVP,GAAG,aACDQ,GAAI,IACJC,GAAI,GACJC,SAAU,UACVC,UAAW,SAACxC,GAAD,OAAWA,EAAMyC,cAAcC,KAC1CC,OAAQ,SAAC3C,GAAD,0BAAwBA,EAAMsB,QAAQI,KAAK,QACnDhC,MAAO,KACJmC,KAGHC,GAdN,cAgBE,cAACnB,EAAD,CAAYiC,UAAU,UAErBjD,MCjDP,IAMekD,EANC,CACdC,YAAa,iBACbC,MAAO,mBACPC,SAAU,kDCmBNC,EAAe,CACnB,CACEC,MAAO,UACPC,KAAMC,IACNC,OAAQ,uBAWG,SAASC,IACtB,IAAMC,EAAWC,KAAKC,MAAMC,OAAOC,aAAaC,QAAQ,aAClDC,EAAYC,iBAAO,MACzB,EAAwBC,oBAAS,GAAjC,mBAAOC,EAAP,KAAaC,EAAb,KACMC,EAAWC,cAIXC,EAAc,WAClBH,GAAQ,IAEJI,EAAa,uCAAG,sBAAAC,EAAA,sDACpBZ,OAAOC,aAAaY,WAAW,SAC/Bb,OAAOC,aAAaY,WAAW,YAC/BL,EAAS,SAAU,CAAEM,SAAS,IAHV,2CAAH,qDAMnB,OACE,qCACE,cAACC,EAAA,EAAD,CACEC,IAAKb,EACLc,QAhBa,WACjBV,GAAQ,IAgBJpC,GAAE,aACAnC,MAAO,GACPsB,OAAQ,IACJgD,GAAQ,CACV,WAAY,CACVlD,OAAQ,EACRG,QAAS,KACTvB,MAAO,OACPsB,OAAQ,OACRG,aAAc,OACdD,SAAU,cAblB,SAmBE,qCACE,cAAC0D,EAAA,EAAD,CAAQC,IAAKhC,EAAQG,SAAU8B,IAAI,aACnC,cAAC,IAAD,CAAmBC,MAAO,CAAEC,MAAO,eAIvC,eAACpD,EAAD,CACEoC,KAAMA,EACNiB,QAASb,EACTc,SAAUrB,EAAUsB,QACpBtD,GAAI,CAAEnC,MAAO,KAJf,UAME,eAAC0F,EAAA,EAAD,CAAKvD,GAAI,CAAEwD,GAAI,IAAKC,GAAI,KAAxB,UACE,cAACC,EAAA,EAAD,CAAYC,QAAQ,YAAYC,QAAM,EAAtC,gBACGlC,QADH,IACGA,OADH,EACGA,EAAUmC,OAEb,cAACH,EAAA,EAAD,CAAYC,QAAQ,QAAQ3D,GAAI,CAAEmD,MAAO,kBAAoBS,QAAM,EAAnE,gBACGlC,QADH,IACGA,OADH,EACGA,EAAUR,WAIf,cAAC4C,EAAA,EAAD,CAAS9D,GAAI,CAAEwD,GAAI,KAElBpC,EAAa2C,KAAI,SAACC,GAAD,OAChB,eAACC,EAAA,EAAD,CAEEC,GAAIF,EAAOxC,OACX2C,UAAWC,IACXtB,QAASP,EACTvC,GAAI,CAAEqE,WAAY,QAASC,GAAI,EAAGb,GAAI,KALxC,UAOE,cAACF,EAAA,EAAD,CACEY,UAAWI,IACXjD,KAAM0C,EAAO1C,KACbtB,GAAI,CACFwE,GAAI,EACJ3G,MAAO,GACPsB,OAAQ,MAIX6E,EAAO3C,QAhBH2C,EAAO3C,UAoBhB,cAACkC,EAAA,EAAD,CAAKvD,GAAI,CAAEyE,EAAG,EAAGC,GAAI,KAArB,SACE,cAAC9B,EAAA,EAAD,CAAQ+B,WAAS,EAACxB,MAAM,UAAUL,QAASN,EAAemB,QAAQ,WAAlE,4BCzGV,IAIMiB,EAAY7F,YAAO8F,IAAP9F,EAAe,gBAAGZ,EAAH,EAAGA,MAAH,oBAC/BwC,UAAW,OACXmE,eAAgB,YAChBC,qBAAsB,YACtBC,gBAAiBpF,YAAMzB,EAAMsB,QAAQD,WAAWyF,QAAS,MACxD9G,EAAMC,YAAYC,GAAG,MAAQ,CAC5BR,MAAM,eAAD,OAAiBqH,IAAjB,YAIHC,EAAepG,YAAOqG,IAAPrG,EAAgB,gBAAGZ,EAAH,EAAGA,MAAH,oBACnCkH,UAdoB,IAenBlH,EAAMC,YAAYC,GAAG,MAAQ,CAC5BgH,UAfmB,GAgBnBC,QAASnH,EAAMoH,QAAQ,EAAG,QAUf,SAASC,EAAT,GAA6C,IAAlBC,EAAiB,EAAjBA,cACxC,OACE,cAACb,EAAD,UACE,eAACO,EAAD,WACE,cAACvH,EAAD,CAASC,MAAM,OAAf,SACE,cAAC6H,EAAA,EAAD,CAAY5C,QAAS2C,EAAezF,GAAI,CAAEwE,GAAI,EAAGrB,MAAO,gBAAxD,SACE,cAAC,IAAD,CAAM7B,KAAMqE,UAIhB,cAACpC,EAAA,EAAD,CAAKvD,GAAI,CAAE4F,SAAU,KAErB,cAACC,EAAA,EAAD,CAAOC,UAAU,MAAMC,WAAW,SAASR,QAAS,CAAES,GAAI,GAAKC,GAAI,KAAnE,SACE,cAACxE,EAAD,W,oDCnDJmD,GAAY7F,YAAO,MAAPA,CAAc,CAC9B6G,SAAU,EACVzG,OAAQ,OACRuB,SAAU,WAGNwF,GAAiBnH,YAAOoH,IAAPpH,EAAuB,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CAC5DiI,UAAW,OACX,yBAA0B,CACxB,WAAY,CACVpB,gBAAiBpF,YAAMzB,EAAMsB,QAAQI,KAAK,KAAM,MAElD,6BAA8B,CAC5BwG,QAAS,IAGb,wCAAyC,CACvCxI,MAAO,IAET,+DAAgE,CAC9DsB,OAAQ,GAEV,oBAAqB,CACnBF,OAAQ,eAWG,SAASqH,GAAT,GAAgD,IAA3BxI,EAA0B,EAA1BA,SAAUkC,EAAgB,EAAhBA,GAAOC,EAAS,kBAK5D,MAJiB,iEAAiEsG,KAChFC,UAAUC,WAKR,cAAClD,EAAA,EAAD,yBAAKvD,GAAE,aAAI0G,UAAW,QAAW1G,IAAUC,GAA3C,aACGnC,KAML,cAAC,GAAD,UACE,cAACoI,GAAD,yBAAgBS,QAAS,IAAKC,cAAc,EAAO5G,GAAIA,GAAQC,GAA/D,aACGnC,O,0HCxCH+I,GAAgB9H,aAAO,SAAC+H,GAAD,OAAW,cAACC,GAAA,EAAD,aAAgBC,gBAAc,GAAKF,MAArD/H,EACpB,gBAAGZ,EAAH,EAAGA,MAAH,mBAAC,eACIA,EAAMkG,WAAW4C,OADtB,IAEE9H,OAAQ,GACRE,SAAU,WACV6H,cAAe,aACfC,YAAahJ,EAAMoH,QAAQ,GAC3B6B,aAAcjJ,EAAMoH,QAAQ,KAC5BpC,MAAOhF,EAAMsB,QAAQ4H,KAAKC,UAC1B,WAAY,CACVtI,IAAK,EACLE,MAAO,EACPrB,MAAO,EACP0J,OAAQ,EACRnI,QAAS,KACToI,QAAS,OACTnI,SAAU,WACVoI,oBAAqB,EACrBC,uBAAwB,EACxB1C,gBAAiB7G,EAAMsB,QAAQkI,QAAQC,WAKvCC,GAAoB9I,YAAO+I,KAAP/I,CAAqB,CAC7ClB,MAAO,GACPsB,OAAQ,GACRqI,QAAS,OACTzB,WAAY,SACZgC,eAAgB,WAUlB,SAASC,GAAT,GAAoC,IAAjBC,EAAgB,EAAhBA,KAAMC,EAAU,EAAVA,OACjB/J,EAAQgK,eACRC,EAAeF,EAAOD,EAAKI,MACzBC,EAAsCL,EAAtCK,MAAOD,EAA+BJ,EAA/BI,KAAM/G,EAAyB2G,EAAzB3G,KAAMiH,EAAmBN,EAAnBM,KAAMzK,EAAamK,EAAbnK,SACjC,EAAwBoE,mBAASkG,GAAjC,mBAAOjG,EAAP,KAAaC,EAAb,KAMMoG,EAAkB,CACtBrF,MAAO,eACPsF,WAAY,mBACZC,QAAS9I,YAAMzB,EAAMsB,QAAQkI,QAAQC,KAAMzJ,EAAMsB,QAAQkJ,OAAOC,iBAChE,WAAY,CAAEpB,QAAS,UAGnBqB,EAAiB,CACrB1F,MAAO,eACPsF,WAAY,oBAGd,OAAI3K,EAEA,qCACE,eAAC+I,GAAD,CACE/D,QApBW,WACjBV,GAAQ,SAAC0G,GAAD,OAAWA,MAoBb9I,GAAE,eACIoI,GAAgBI,GAHxB,UAME,cAACX,GAAD,UAAoBvG,GAAQA,IAC5B,cAACyH,GAAA,EAAD,CAAcC,mBAAiB,EAACrB,QAASW,IACxCC,GAAQA,EACT,cAAChF,EAAA,EAAD,CACEY,UAAWI,IACXjD,KAAMa,EAAO8G,KAAuBC,KACpClJ,GAAI,CAAEnC,MAAO,GAAIsB,OAAQ,GAAIsB,GAAI,QAIrC,cAAC0I,GAAA,EAAD,CAAUC,GAAIjH,EAAMwE,QAAQ,OAAO0C,eAAa,EAAhD,SACE,cAACC,GAAA,EAAD,CAAMnF,UAAU,MAAMoF,gBAAc,EAApC,SACGzL,EAASiG,KAAI,SAACkE,GACb,IAAQK,EAAgBL,EAAhBK,MAAOD,EAASJ,EAATI,KACTmB,EAActB,EAAOG,GAE3B,OACE,eAACxB,GAAD,CAEE1C,UAAWC,IACXF,GAAImE,EACJrI,GAAE,eACIwJ,GAAeX,GALvB,UAQE,cAAChB,GAAD,UACE,cAACtE,EAAA,EAAD,CACEY,UAAU,OACVnE,GAAE,aACAnC,MAAO,EACPsB,OAAQ,EACRqI,QAAS,OACTlI,aAAc,MACdyG,WAAY,SACZgC,eAAgB,SAChBW,QAAS,gBACTe,WAAY,SAACtL,GAAD,OAAWA,EAAMuL,YAAYC,OAAO,eAC5CH,GAAe,CACjBjK,UAAW,WACXmJ,QAAS,qBAKjB,cAACK,GAAA,EAAD,CAAcC,mBAAiB,EAACrB,QAASW,MA1BpCA,aAqCnB,eAACzB,GAAD,CACE1C,UAAWC,IACXF,GAAImE,EACJrI,GAAE,eACIoI,GAAgBI,GAJxB,UAOE,cAACX,GAAD,UAAoBvG,GAAQA,IAC5B,cAACyH,GAAA,EAAD,CAAcC,mBAAiB,EAACrB,QAASW,IACxCC,GAAQA,KASA,SAASqB,GAAT,GAA8C,IAAxBC,EAAuB,EAAvBA,UAAc5J,EAAS,kBAClD6J,EAAaC,cAAbD,SACFE,EAAQ,SAAC3B,GAAD,QAAWA,KAAS4B,YAAU,CAAE5B,OAAM6B,KAAK,GAASJ,IAElE,OACE,cAACvG,EAAA,EAAD,2BAAStD,GAAT,aACE,cAACqJ,GAAA,EAAD,CAAMC,gBAAc,EAApB,SACGM,EAAU9F,KAAI,SAACkE,GAAD,OACb,cAACD,GAAD,CAA0BC,KAAMA,EAAMC,OAAQ8B,GAAhC/B,EAAKK,e,wFCjKvB6B,GAAU,SAACtG,GAAD,OAAU,cAAC,IAAD,CAAMvC,KAAMuC,EAAMhG,MAAO,GAAIsB,OAAQ,MA8BhDiL,GA5BO,CACpB,CACE9B,MAAO,YACPD,KAAM,iBACN/G,KAAM6I,GAAQE,OAEhB,CACE/B,MAAO,WACPD,KAAM,sBACN/G,KAAM6I,GAAQG,OAEhB,CACEhC,MAAO,WACPD,KAAM,sBACN/G,KAAM6I,GAAQI,OAEhB,CACEjC,MAAO,YACPD,KAAM,mBACN/G,KAAM6I,GAAQK,OAEhB,CACElC,MAAO,gBACPD,KAAM,qBACN/G,KAAM6I,GAAQ,kCCZZvF,GAAY7F,YAAO,MAAPA,EAAc,gBAAGZ,EAAH,EAAGA,MAAH,sBAC7BA,EAAMC,YAAYC,GAAG,MAAQ,CAC5BoM,WAAY,EACZ5M,MALiB,SASf6M,GAAe3L,YAAO,MAAPA,EAAc,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CACjDqJ,QAAS,OACTzB,WAAY,SACZT,QAASnH,EAAMoH,QAAQ,EAAG,KAC1BjG,aAAcnB,EAAMwM,MAAMC,eAC1B5F,gBAAiB7G,EAAMsB,QAAQI,KAAK,SAUvB,SAASgL,GAAT,GAA8D,IAAlCC,EAAiC,EAAjCA,cAAeC,EAAkB,EAAlBA,eAChDjB,EAAaC,cAAbD,SACFpI,EAAWC,KAAKC,MAAMC,OAAOC,aAAaC,QAAQ,aACxDiJ,qBAAU,WACJF,GACFC,MAGD,CAACjB,IAEJ,IAAMmB,EACJ,eAAC3E,GAAD,CACEtG,GAAI,CACFb,OAAQ,OACR,uBAAwB,CAAEA,OAAQ,OAAQqI,QAAS,OAAQ0D,cAAe,WAH9E,UAME,cAAC3H,EAAA,EAAD,CAAKvD,GAAI,CAAEmL,GAAI,EAAGC,GAAI,KAAOlI,MAAO,CAAEmI,UAAW,OAAjD,SACE,cAACC,EAAA,EAAD,CAAMC,UAAU,OAAOpH,UAAWC,IAAYF,GAAG,qBAAjD,SACE,eAACwG,GAAD,WACE,cAAC3H,EAAA,EAAD,CAAQC,IAAKhC,EAAQG,SAAU8B,IAAI,aACnC,eAACM,EAAA,EAAD,CAAKvD,GAAI,CAAES,GAAI,GAAf,UACE,cAACiD,EAAA,EAAD,CAAYC,QAAQ,YAAY3D,GAAI,CAAEmD,MAAO,gBAA7C,gBACGzB,QADH,IACGA,OADH,EACGA,EAAUmC,OAEb,cAACH,EAAA,EAAD,CAAYC,QAAQ,QAAQ3D,GAAI,CAAEmD,MAAO,kBAAzC,SACGnC,EAAQwK,iBAOnB,cAAC5B,GAAD,CAAYC,UAAWO,KAEvB,cAAC7G,EAAA,EAAD,CAAKvD,GAAI,CAAE4F,SAAU,QAazB,OACE,eAAC,GAAD,WACE,cAAChI,EAAD,CAASC,MAAM,OAAf,SACE,cAAC4N,EAAA,EAAD,CACEtJ,KAAM2I,EACN1H,QAAS2H,EACTxK,WAAY,CACVP,GAAI,CAAEnC,MA/EG,MA2Eb,SAOGoN,MAIL,cAACrN,EAAD,CAASC,MAAM,SAAf,SACE,cAAC4N,EAAA,EAAD,CACEtJ,MAAI,EACJwB,QAAQ,aACRpD,WAAY,CACVP,GAAI,CACFnC,MA5FO,IA6FP6K,QAAS,uBANf,SAUGuC,SC3GX,IAGMrG,GAAY7F,YAAO,MAAPA,CAAc,CAC9ByI,QAAS,OACTnC,UAAW,OACX3E,SAAU,WAGNgL,GAAY3M,YAAO,MAAPA,EAAc,gBAAGZ,EAAH,EAAGA,MAAH,oBAC9ByH,SAAU,EACVlF,SAAU,OACV2E,UAAW,OACXsG,WAAYC,GACZC,cAAe1N,EAAMoH,QAAQ,KAC5BpH,EAAMC,YAAYC,GAAG,MAAQ,CAC5BsN,WAAYG,IACZ3E,YAAahJ,EAAMoH,QAAQ,GAC3B6B,aAAcjJ,EAAMoH,QAAQ,QAMjB,SAASwG,KACtB,MAAwB7J,oBAAS,GAAjC,mBAAOC,EAAP,KAAaC,EAAb,KAEA,OACE,eAAC,GAAD,WACE,cAACoD,EAAD,CAAiBC,cAAe,kBAAMrD,GAAQ,MAC9C,cAACyI,GAAD,CAAkBC,cAAe3I,EAAM4I,eAAgB,kBAAM3I,GAAQ,MACrE,cAACsJ,GAAD,UACE,cAAC,IAAD,SChCO,SAASM,GAAT,GAAuB,IAAPhM,EAAM,EAANA,GAC7B,OAAO,cAACuD,EAAA,EAAD,CAAKY,UAAU,MAAMnB,IAAI,yBAAyBhD,GAAE,aAAInC,MAAO,GAAIsB,OAAQ,IAAOa,KCH3F,IAAMiM,GAAclN,YAAO,SAAPA,EAAiB,gBAAGZ,EAAH,EAAGA,MAAH,oBACnCa,IAAK,EACLkN,KAAM,EACNC,WAAY,EACZtO,MAAO,OACPwB,SAAU,WACViG,QAASnH,EAAMoH,QAAQ,EAAG,EAAG,IAC5BpH,EAAMC,YAAYC,GAAG,MAAQ,CAC5BiH,QAASnH,EAAMoH,QAAQ,EAAG,EAAG,QAMlB,SAAS6G,KACtB,OACE,qCACE,cAACH,GAAD,UACE,cAAC,IAAD,CAAY/H,GAAG,IAAf,SACE,cAAC8H,GAAD,QAGJ,cAAC,IAAD,O,gDCtBAK,GAAOC,sBAAW,WAA2DzJ,GAA3D,IAAG/E,EAAH,EAAGA,SAAH,IAAawK,aAAb,MAAqB,yBAArB,EAAkDrI,EAAlD,yBACtB,eAACsD,EAAA,EAAD,yBAAKV,IAAKA,GAAS5C,GAAnB,cACE,cAAC,IAAD,UACE,gCAAQqI,MAETxK,SAILuO,GAAK5N,UAAY,CACfX,SAAUY,IAAUC,KAAKE,WACzByJ,MAAO5J,IAAU6N,QAGJF,U,sJClBA,SAASG,GAAT,GAAuE,IAA7CC,EAA4C,EAA5CA,KAAMC,EAAsC,EAAtCA,KAAMC,EAAgC,EAAhCA,OAAQrE,EAAwB,EAAxBA,MAAOlF,EAAiB,EAAjBA,QAASjB,EAAQ,EAARA,KAC3E,OACE,cAACyK,GAAA,EAAD,CACEzK,KAAMA,EACN0K,iBAAkB,IAClB1M,aAAc,CAAEC,SAAUsM,EAAMrM,WAAYoM,GAC5CrJ,QAASA,EAJX,SAME,cAAC0J,GAAA,EAAD,CAAO1J,QAASA,EAAS2J,SAAUJ,EAAQxJ,MAAOwJ,EAAQ3M,GAAI,CAAEnC,MAAO,QAAvE,SACGyK,M,sDCbI0E,GAAU,CACrB,eAAgB,mBAChBC,cAAc,UAAD,OAAYpL,OAAOC,aAAaC,QAAQ,WCGjDmL,GAAWC,KAAMxD,OAAO,CAC5BqD,QAAS,KAIXE,GAASE,aAAaC,QAAQC,KAC5B,SAACC,GACC,IAAMC,EAAQ1L,aAAaC,QAAQ,SAKnC,OAJa,MAATyL,IACFD,EAAOP,QAAQC,cAAf,iBAAyCO,IAGpCD,KAET,SAACE,GAAD,OAAWC,QAAQC,OAAOF,MAI5BP,GAASE,aAAaQ,SAASN,KAC7B,SAACM,GAAD,OAAcA,IADhB,uCAEE,WAAOH,GAAP,qBAAAhL,EAAA,yDACEoL,KAAK,QAASJ,EAAMG,SAASE,KAAKC,QAAS,SACX,OAAvB,OAALN,QAAK,IAALA,GAAA,UAAAA,EAAOG,gBAAP,eAAiBjB,UAAkB9K,OAAOC,aAAaC,QAAQ,SAFrE,iCAG2BmL,GAAS,GAAD,OAAIc,uCAAJ,UAAkD,CAC/EC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnBhN,MAAOW,OAAOC,aAAaC,QAAQ,SACnCoM,SAAUC,OAAIC,QACZxM,OAAOC,aAAaC,QAAQ,YAC5BiM,mBACAM,SAASC,OAAIC,UAXvB,cAGUZ,EAHV,uBAcuBA,QAdvB,IAcuBA,OAdvB,EAcuBA,EAAUE,KAdjC,OAcUA,EAdV,OAe6B,OAAb,OAARF,QAAQ,IAARA,OAAA,EAAAA,EAAUjB,SACZ9K,OAAOC,aAAa2M,QAAQ,WAAY9M,KAAKuM,UAAUJ,EAAKA,KAAKY,cACjE7M,OAAOC,aAAa2M,QAAQ,QAASX,EAAKa,KAAKnB,OAC/C3L,OAAOC,aAAa2M,QAAQ,SAAUX,EAAKA,KAAKY,YAAYE,IAC5D/M,OAAOgN,SAASC,UACc,OAAb,OAARlB,QAAQ,IAARA,OAAA,EAAAA,EAAUjB,UACnB9K,OAAOC,aAAaiN,QACpBlN,OAAOgN,SAASC,UAtBtB,wBAwByC,OAAvB,OAALrB,QAAK,IAALA,GAAA,UAAAA,EAAOG,gBAAP,eAAiBjB,SAAmB9K,OAAOC,aAAaC,QAAQ,WACzEF,OAAOC,aAAaiN,QACpBlN,OAAOgN,SAASC,UA1BpB,iCA4BSrB,EAAMG,UA5Bf,4CAFF,uDAkCeV,UC7CF8B,GAA2B,SAAClI,GACvC,MAA4B5E,mBAAS,CACnChB,MAAO,KADT,mBAAO+N,EAAP,KAAeC,EAAf,KAGA,EAA8BhN,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KAEA,EAA4BlN,mBAAS,CACnChB,OAAO,IADT,mBAAOmO,EAAP,KAAeC,EAAf,KAGA,EAAkCpN,mBAAS,CACzChB,MAAO,uBADT,mBAAOqO,EAAP,KAAkBC,EAAlB,KAGMC,EACJ,qJAWIC,EAAa,uCAAG,8BAAAjN,EAAA,6DACpB2M,GAAW,GADS,SAEGlC,GAAS,GAAD,OAAIc,uCAAJ,oBAA4D,CACzFC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnBhN,MAAO+N,EAAO/N,UANE,cAEd0M,EAFc,OASpBwB,GAAW,GATS,SAUDxB,EAASE,KAVR,OAUdA,EAVc,OAWI,MAApBF,EAASjB,QACXkB,KAAK,UAAW,2BAA4B,WAC5C/G,EAAM6I,UACuB,MAApB/B,EAASjB,QAClB6C,EAAa,CACXtO,MAAO4M,EAAKC,UAEduB,EAAU,CACRpO,OAAO,KAGT2M,KAAK,QAAD,OAAUD,QAAV,IAAUA,OAAV,EAAUA,EAAUE,KAAM,SAtBZ,2CAAH,qDAuCnB,OACE,eAACvK,EAAA,EAAD,CAAKvD,GAdO,CACZX,SAAU,WACVL,IAAK,MACLkN,KAAM,MACN3M,UAAW,wBACX1B,MAAO,OACP+R,SAAU,IACVlH,QAAS,mBACTpJ,aAAc,EACdqB,UAAW,GACX8D,EAAG,GAIH,UACE,cAACf,EAAA,EAAD,CAAYkL,GAAG,oBAAoBjL,QAAQ,KAAKQ,UAAU,KAA1D,kCAGA,cAAC0L,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAO/N,MACd8O,SA1De,SAACC,GACpBf,EAAU,2BAAKD,GAAN,IAAc/N,MAAO+O,EAAMC,OAAOH,SAC3CT,EAAU,CAAEpO,OAAQuO,EAAWlJ,KAAK0J,EAAMC,OAAOH,SAC7CE,EAAMC,OAAOH,MAAMI,OAAS,GAC9BX,EAAa,CACXtO,MAAQuO,EAAWlJ,KAAK0J,EAAMC,OAAOH,OAA4B,qBAAnB,oBAsD9C1O,MAAM,QACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOnO,MACdmP,WAAYhB,EAAOnO,MAAQqO,EAAUrO,MAAQ,OAE/C,qBAAKgC,MAAO,CAAErF,MAAO,OAAQ2J,QAAS,OAAQO,eAAgB,UAA9D,SACGoH,EACC,cAACmB,GAAA,EAAD,CAAkBpN,MAAO,CAAEmI,UAAW,UAEtC,cAACzI,EAAA,EAAD,CAAQe,QAAQ,YAAYT,MAAO,CAAEmI,UAAW,QAAUvI,QAAS4M,EAAnE,wB,OCtEK,SAASa,KACtB,IAAMlO,EAAWC,cACjB,EAAwCJ,oBAAS,GAAjD,mBAAOsO,EAAP,KAAqBC,EAArB,KAEMC,EAAcC,OAAahG,MAAM,CACrCzJ,MAAOyP,OAAazP,MAAM,uCAAuC0P,SAAS,qBAC1EzC,SAAUwC,OAAaC,SAAS,0BAElC,EAAkC1O,oBAAS,GAA3C,mBAAO2O,EAAP,KAAkBC,EAAlB,KACMC,EAAc,WAClBD,GAAa,IAWTE,EAASC,aAAU,CACvBC,cAAe,CACbhQ,MAAOW,OAAOC,aAAaC,QAAQ,SAAWF,OAAOC,aAAaC,QAAQ,SAAW,GACrFoM,SAAUtM,OAAOC,aAAaC,QAAQ,YAClCqM,OAAIC,QACFxM,OAAOC,aAAaC,QAAQ,YAC5BiM,mBACAM,SAASC,OAAIC,MACf,GACJ2C,SAC8C,SAA5CtP,OAAOC,aAAaC,QAAQ,aACxBF,OAAOC,aAAaC,QAAQ,aAGpCqP,iBAAkBV,EAClBW,SAAS,WAAD,4BAAE,oCAAA5O,EAAA,sEACeyK,GAAS,GAAD,OAAIc,uCAAJ,UAAkD,CAC/EC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnBhN,MAAK,UAAE8P,EAAO/B,OAAO/N,aAAhB,aAAE,EAAqBoQ,OAC5BnD,SAAQ,UAAE6C,EAAO/B,OAAOd,gBAAhB,aAAE,EAAwBmD,WAN9B,cACF1D,EADE,gBASWA,EAASE,KATpB,OASFA,EATE,OAUgB,MAApBF,EAASjB,QACPqE,EAAO/B,OAAOkC,UAChBtP,OAAOC,aAAa2M,QAAQ,WAAYuC,EAAO/B,OAAOkC,UACtDtP,OAAOC,aAAa2M,QAAQ,QAASuC,EAAO/B,OAAO/N,OAC7CqQ,EAAYnD,OAAIoD,QACpBR,EAAO/B,OAAOd,SACdH,mBACAM,WACFzM,OAAOC,aAAa2M,QAAQ,WAAY8C,KAExC1P,OAAOC,aAAa2M,QAAQ,WAAYuC,EAAO/B,OAAOkC,UACtDtP,OAAOC,aAAaY,WAAW,SAC/Bb,OAAOC,aAAaY,WAAW,aAEjCb,OAAOC,aAAa2M,QAAQ,WAAY9M,KAAKuM,UAAUJ,EAAKA,KAAKY,cACjE7M,OAAOC,aAAa2M,QAAQ,QAASX,EAAKa,KAAKnB,OAC/C3L,OAAOC,aAAa2M,QAAQ,SAAUX,EAAKA,KAAKY,YAAYE,IAC5DvM,EAAS,iBAAkB,CAAEM,SAAS,IACtC8O,EAAgB,CACdhF,KAAM,SACNC,KAAM,SACNpE,MAAO,mBACPqE,OAAQ,YAEVoE,MAEAU,EAAgB,CACdhF,KAAM,SACNC,KAAM,SACNpE,MAAO,wBACPqE,OAAQ,UAEVoE,KA1CM,2CAAF,kDAAC,KA+CX,EAAwC7O,mBAAS,CAC/CuK,KAAM,SACNC,KAAM,SACNpE,MAAO,GACPqE,OAAQ,YAJV,mBAAO+E,EAAP,KAAqBD,EAArB,KAOQpC,EAAuE2B,EAAvE3B,OAAQsC,EAA+DX,EAA/DW,QAAS1C,EAAsD+B,EAAtD/B,OAAQ2C,EAA8CZ,EAA9CY,aAAcC,EAAgCb,EAAhCa,aAAcC,EAAkBd,EAAlBc,cAM7D,EAAwB5P,oBAAS,GAAjC,mBAAOC,EAAP,KAAaC,EAAb,KACMG,EAAc,kBAAMH,GAAQ,IAGlC,OAFA4I,qBAAU,cAAU,CAAC7I,IAGnB,qCACE,cAAC4P,GAAA,EAAD,CACE5P,KAAMA,EACNiB,QAASb,EACTyP,kBAAgB,oBAChBC,mBAAiB,0BAJnB,SAME,cAAC,GAAD,CAA0BtC,OAAQpN,MAEpC,cAAC,KAAD,CAAgBwN,MAAOiB,EAAvB,SACE,eAAC,KAAD,CAAMZ,aAAa,MAAM8B,YAAU,EAACb,SAAUQ,EAA9C,UACE,eAAChM,EAAA,EAAD,CAAON,QAAS,EAAhB,UACE,cAACsK,GAAA,EAAD,yBACElL,WAAS,EACTyL,aAAa,WACbN,KAAK,QACLzO,MAAM,iBACFyQ,EAAc,UALpB,IAMErE,MAAO0E,QAAQR,EAAQzQ,OAASmO,EAAOnO,OACvCmP,WAAYsB,EAAQzQ,OAASmO,EAAOnO,SAGtC,cAAC2O,GAAA,EAAD,yBACElL,WAAS,EACTyL,aAAa,mBACbN,KAAMU,EAAe,OAAS,WAC9BnP,MAAM,YACFyQ,EAAc,aALpB,IAMEM,WAAY,CACVC,aACE,cAACC,GAAA,EAAD,CAAgBjT,SAAS,MAAzB,SACE,cAACqG,EAAA,EAAD,CAAY5C,QAxCH,WACzB2N,GAAgB,SAAC8B,GAAD,OAAWA,MAuC8BC,KAAK,MAA9C,SACE,cAAC,IAAD,CAAMlR,KAAMkP,EAAeiC,KAAUC,YAK7CjF,MAAO0E,QAAQR,EAAQxD,UAAYkB,EAAOlB,UAC1CkC,WAAYsB,EAAQxD,UAAYkB,EAAOlB,eAI3C,eAACtI,EAAA,EAAD,CAAOC,UAAU,MAAMC,WAAW,SAASgC,eAAe,gBAAgB/H,GAAI,CAAEwD,GAAI,GAApF,UACE,cAACmP,GAAA,EAAD,CACEC,QAAS,cAACC,GAAA,EAAD,2BAAcf,EAAc,aAA5B,IAAyCgB,QAAS7D,EAAOkC,YAClE9P,MAAM,gBAGR,cAACiK,EAAA,EAAD,CAAMnH,UAAWC,IAAYT,QAAQ,YAAYO,GAAG,IAAIpB,QAAS,kBAAMV,GAAQ,IAA/E,iCAIF,cAAC2Q,GAAA,EAAD,CACEpO,WAAS,EACTqO,KAAK,QACLlD,KAAK,SACLnM,QAAQ,YACRR,MAAM,UACN8P,QAASrB,EANX,wBAYJ,qBAAK7Q,UAAU,oBAAf,SACE,mBACEmS,KAAK,iCACLhD,OAAO,SACPiD,IAAI,aACJpS,UAAU,kBAJZ,8CASF,cAACyL,GAAD,CACEC,KAAMiF,EAAajF,KACnBC,KAAMgF,EAAahF,KACnBpE,MAAOoJ,EAAapJ,MACpBqE,OAAQ+E,EAAa/E,OACrBxK,KAAM0O,EACNzN,QAxKmB,SAAC6M,EAAOmD,GAChB,cAAXA,GAIJtC,GAAa,SCjCjB,IAAMlM,GAAY7F,YAAOsN,GAAPtN,EAAa,gBAAGZ,EAAH,EAAGA,MAAH,sBAC5BA,EAAMC,YAAYC,GAAG,MAAQ,CAC5BmJ,QAAS,YAIP6L,GAAetU,YAAOuU,KAAPvU,EAAa,kBAAgB,CAChDlB,MAAO,OACP+R,SAAU,IACVpI,QAAS,OACT0D,cAAe,SACfnD,eAAgB,SAChBwL,OANgC,EAAGpV,MAMrBoH,QAAQ,EAAG,EAAG,EAAG,OAG3BiO,GAAezU,YAAO,MAAPA,EAAc,kBAAgB,CACjD6Q,SAAU,IACV2D,OAAQ,OACR/L,QAAS,OACTnC,UAAW,QACX6F,cAAe,SACfnD,eAAgB,SAChBzC,QAPiC,EAAGnH,MAOrBoH,QAAQ,GAAI,OAGd,SAASkO,KACtB,OACE,eAAC,GAAD,CAAWnL,MAAM,qBAAjB,UACE,cAAC1K,EAAD,CAASC,MAAM,SAAf,SACE,eAACwV,GAAD,WACE,cAAC3P,EAAA,EAAD,CAAYC,QAAQ,KAAK3D,GAAI,CAAEyD,GAAI,EAAGjD,GAAI,GAAI2K,GAAI,GAAlD,8BAGA,cAACG,EAAA,EAAD,CAAMC,UAAU,OAAO5H,QAAQ,YAAYQ,UAAWC,IAAYF,GAAG,IAArE,SACE,qBAAKlB,IAAI,+CAA+CC,IAAI,iBAKlE,cAACyQ,GAAA,EAAD,CAAW9D,SAAS,KAApB,SACE,eAAC4D,GAAD,WACE,eAAC3N,EAAA,EAAD,CAAO7F,GAAI,CAAEmL,GAAI,GAAjB,UACE,cAACzH,EAAA,EAAD,CAAYC,QAAQ,KAAKgQ,cAAY,EAArC,mCAGA,cAACjQ,EAAA,EAAD,CAAY1D,GAAI,CAAEmD,MAAO,kBAAzB,0CAEF,cAACoN,GAAD,YC9CV,IAAMtE,GAAclN,YAAO,SAAPA,EAAiB,gBAAGZ,EAAH,EAAGA,MAAH,oBACnCa,IAAK,EACLC,OAAQ,EACRkN,WAAY,EACZtO,MAAO,OACP2J,QAAS,OACTzB,WAAY,SACZ1G,SAAU,WACViG,QAASnH,EAAMoH,QAAQ,GACvBwC,eAAgB,iBACf5J,EAAMC,YAAYC,GAAG,MAAQ,CAC5B0H,WAAY,aACZT,QAASnH,EAAMoH,QAAQ,EAAG,EAAG,EAAG,QAUrB,SAASqO,GAAT,GAAmC,IAAb9V,EAAY,EAAZA,SACnC,OACE,eAAC,GAAD,WACE,cAAC,IAAD,CAAYoG,GAAG,IAAf,SAAiD,WAA7BrC,OAAOgN,SAAS/E,SAAwB,cAACkC,GAAD,IAAW,OAEvE,cAACpO,EAAD,CAASC,MAAM,SAAf,SACE,cAAC6F,EAAA,EAAD,CACEC,QAAQ,QACR3D,GAAI,CACFQ,GAAI,CAAEqT,IAAK,IAHf,SAMG/V,SCjCI,SAASgW,KACtB,IAAMzR,EAAWC,cACjB,EAAwCJ,oBAAS,GAAjD,mBAAOsO,EAAP,KAAqBC,EAArB,KAEMsD,EAAiBpD,OAAahG,MAAM,CACxCqJ,UAAWrD,OACRsD,IAAI,EAAG,cACPC,IAAI,GAAI,aACRtD,SAAS,uBACZuD,SAAUxD,OAAasD,IAAI,EAAG,cAAcC,IAAI,GAAI,aAAatD,SAAS,sBAC1E1P,MAAOyP,OAAazP,MAAM,uCAAuC0P,SAAS,qBAC1EzC,SAAUwC,OAAaC,SAAS,0BAG5BI,EAASC,aAAU,CACvBC,cAAe,CACb8C,UAAW,GACXG,SAAU,GACVjT,MAAO,GACPiN,SAAU,IAEZiD,iBAAkB2C,EAClB1C,SAAU,WACRhP,EAAS,aAAc,CAAEM,SAAS,OAI9B0M,EAA+D2B,EAA/D3B,OAAQsC,EAAuDX,EAAvDW,QAASE,EAA8Cb,EAA9Ca,aAAcD,EAAgCZ,EAAhCY,aAAcE,EAAkBd,EAAlBc,cAErD,OACE,cAAC,KAAD,CAAgB/B,MAAOiB,EAAvB,SACE,cAAC,KAAD,CAAMZ,aAAa,MAAM8B,YAAU,EAACb,SAAUQ,EAA9C,SACE,eAAChM,EAAA,EAAD,CAAON,QAAS,EAAhB,UACE,eAACM,EAAA,EAAD,CAAOC,UAAW,CAAEE,GAAI,SAAUC,GAAI,OAASV,QAAS,EAAxD,UACE,cAACsK,GAAA,EAAD,yBACElL,WAAS,EACTtD,MAAM,cACFyQ,EAAc,cAHpB,IAIErE,MAAO0E,QAAQR,EAAQqC,WAAa3E,EAAO2E,WAC3C3D,WAAYsB,EAAQqC,WAAa3E,EAAO2E,aAG1C,cAACnE,GAAA,EAAD,yBACElL,WAAS,EACTtD,MAAM,aACFyQ,EAAc,aAHpB,IAIErE,MAAO0E,QAAQR,EAAQwC,UAAY9E,EAAO8E,UAC1C9D,WAAYsB,EAAQwC,UAAY9E,EAAO8E,eAI3C,cAACtE,GAAA,EAAD,yBACElL,WAAS,EACTyL,aAAa,WACbN,KAAK,QACLzO,MAAM,iBACFyQ,EAAc,UALpB,IAMErE,MAAO0E,QAAQR,EAAQzQ,OAASmO,EAAOnO,OACvCmP,WAAYsB,EAAQzQ,OAASmO,EAAOnO,SAGtC,cAAC2O,GAAA,EAAD,yBACElL,WAAS,EACTyL,aAAa,mBACbN,KAAMU,EAAe,OAAS,WAC9BnP,MAAM,YACFyQ,EAAc,aALpB,IAMEM,WAAY,CACVC,aACE,cAACC,GAAA,EAAD,CAAgBjT,SAAS,MAAzB,SACE,cAACqG,EAAA,EAAD,CAAY8M,KAAK,MAAM1P,QAAS,kBAAM2N,GAAgB,SAAC3H,GAAD,OAAWA,MAAjE,SACE,cAAC,IAAD,CAAMxH,KAAMkP,EAAeiC,KAAUC,YAK7CjF,MAAO0E,QAAQR,EAAQxD,UAAYkB,EAAOlB,UAC1CkC,WAAYsB,EAAQxD,UAAYkB,EAAOlB,YAGzC,cAAC4E,GAAA,EAAD,CACEpO,WAAS,EACTqO,KAAK,QACLlD,KAAK,SACLnM,QAAQ,YACRsP,QAASrB,EALX,6BC5EV,IAAMhN,GAAY7F,YAAOsN,GAAPtN,EAAa,gBAAGZ,EAAH,EAAGA,MAAH,sBAC5BA,EAAMC,YAAYC,GAAG,MAAQ,CAC5BmJ,QAAS,YAIP6L,GAAetU,YAAOuU,KAAPvU,EAAa,kBAAgB,CAChDlB,MAAO,OACP+R,SAAU,IACVpI,QAAS,OACT0D,cAAe,SACfnD,eAAgB,SAChBwL,OANgC,EAAGpV,MAMrBoH,QAAQ,EAAG,EAAG,EAAG,OAG3BiO,GAAezU,YAAO,MAAPA,EAAc,kBAAgB,CACjD6Q,SAAU,IACV2D,OAAQ,OACR/L,QAAS,OACTnC,UAAW,QACX6F,cAAe,SACfnD,eAAgB,SAChBzC,QAPiC,EAAGnH,MAOrBoH,QAAQ,GAAI,OAKd,SAAS6O,KACtB,OACE,eAAC,GAAD,CAAW9L,MAAM,wBAAjB,UACE,eAACsL,GAAD,2CAEE,cAACtI,EAAA,EAAD,CAAMC,UAAU,OAAO5H,QAAQ,YAAYQ,UAAWC,IAAYF,GAAG,SAArE,sBAKF,cAACtG,EAAD,CAASC,MAAM,SAAf,SACE,eAAC,GAAD,WACE,cAAC6F,EAAA,EAAD,CAAYC,QAAQ,KAAK3D,GAAI,CAAEyD,GAAI,EAAGjD,GAAI,GAAI2K,GAAI,GAAlD,oCAGA,qBAAKlI,IAAI,WAAWD,IAAI,yDAI5B,cAAC0Q,GAAA,EAAD,UACE,eAAC,GAAD,WACE,eAACnQ,EAAA,EAAD,CAAKvD,GAAI,CAAEmL,GAAI,GAAf,UACE,cAACzH,EAAA,EAAD,CAAYC,QAAQ,KAAKgQ,cAAY,EAArC,0CAGA,cAACjQ,EAAA,EAAD,CAAY1D,GAAI,CAAEmD,MAAO,kBAAzB,qDAKF,cAAC2Q,GAAD,IAEA,eAACpQ,EAAA,EAAD,CAAYC,QAAQ,QAAQ0Q,MAAM,SAASrU,GAAI,CAAEmD,MAAO,iBAAkB3C,GAAI,GAA9E,sDAEE,cAAC8K,EAAA,EAAD,CAAMC,UAAU,SAASvL,GAAI,CAAEmD,MAAO,gBAAtC,8BAFF,cAME,cAACmI,EAAA,EAAD,CAAMC,UAAU,SAASvL,GAAI,CAAEmD,MAAO,gBAAtC,4BANF,OAYA,cAACvF,EAAD,CAASC,MAAM,OAAf,SACE,eAAC6F,EAAA,EAAD,CAAYC,QAAQ,YAAY3D,GAAI,CAAEQ,GAAI,EAAG8T,UAAW,UAAxD,yCAEE,cAAChJ,EAAA,EAAD,CAAMpH,GAAG,SAASC,UAAWC,IAA7B,gC,sECnFIrF,YAAO,MAAPA,EAAc,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CAC9Cc,OAAQ,IACRC,MAAO,EACPsI,QAAS,OACT+M,OAAQ,UACRlV,SAAU,QACV0G,WAAY,SACZ/G,IAAKb,EAAMoH,QAAQ,IACnBpG,OAAQhB,EAAMoH,QAAQ,GACtB4B,YAAahJ,EAAMoH,QAAQ,GAC3B6B,aAAcjJ,EAAMoH,QAAQ,GAC5BoG,WAAYxN,EAAMoH,QAAQ,MAC1B5E,UAAWxC,EAAMyC,cAAcC,IAC/BsC,MAAOhF,EAAMsB,QAAQ4H,KAAKM,QAC1B3C,gBAAiB7G,EAAMsB,QAAQD,WAAWE,MAC1C+H,oBAAqBtJ,EAAMwM,MAAM6J,eACjC9M,uBAAwBvJ,EAAMwM,MAAM6J,eACpC/K,WAAYtL,EAAMuL,YAAYC,OAAO,WACrC,UAAW,CAAEtD,QAAS,S,sCCpBlBzB,GAAY7F,YAAO,OAAPA,EAAe,YAA4B,IAAzBZ,EAAwB,EAAxBA,MAAOsW,EAAiB,EAAjBA,WACjCtR,EAAmBsR,EAAnBtR,MAAOQ,EAAY8Q,EAAZ9Q,QAkBf,OAAO,aACLxE,OAAQ,GACRuV,SAAU,GACVvI,WAAY,EACZ7M,aAAc,EACdiV,OAAQ,UACRxO,WAAY,SACZ4O,WAAY,SACZnN,QAAS,cACTO,eAAgB,SAChBzC,QAASnH,EAAMoH,QAAQ,EAAG,GAC1BpC,MAAOhF,EAAMsB,QAAQI,KAAK,KAC1B+U,SAAUzW,EAAMkG,WAAWwQ,QAAQ,IACnCC,WAAY3W,EAAMkG,WAAWyQ,WAC7B9P,gBAAiB7G,EAAMsB,QAAQI,KAAK,KACpC4I,WAAYtK,EAAMkG,WAAW0Q,gBAEf,YAAV5R,EAAA,uCAEkB,WAAZQ,GAAA,eAnCQ,SAACR,GAAD,MAAY,CAC9BA,MAAOhF,EAAMsB,QAAQ0D,GAAO6R,aAC5BhQ,gBAAiB7G,EAAMsB,QAAQ0D,GAAOyE,MAiCCqN,CAAY9R,KAC7B,aAAZQ,GAAA,eA/BU,SAACR,GAAD,MAAY,CAChCA,MAAOhF,EAAMsB,QAAQ0D,GAAOyE,KAC5B5C,gBAAiB,cACjBlE,OAAO,aAAD,OAAe3C,EAAMsB,QAAQ0D,GAAOyE,OA4BDsN,CAAc/R,KACjC,UAAZQ,GAAA,eA1BO,SAACR,GAAD,MAAY,CAC7BA,MAAOhF,EAAMsB,QAAQ0D,GAAOgS,KAC5BnQ,gBAAiBpF,YAAMzB,EAAMsB,QAAQ0D,GAAOyE,KAAM,MAwBZwN,CAAWjS,KAJ7C,2BAOkB,aAAZQ,GAA0B,CAC5BqB,gBAAiB,cACjB7B,MAAOhF,EAAMsB,QAAQ4H,KAAKM,QAC1B7G,OAAO,aAAD,OAAe3C,EAAMsB,QAAQI,KAAK,UAE1B,UAAZ8D,GAAuB,CACzBR,MAAOhF,EAAMsB,QAAQ4H,KAAKC,UAC1BtC,gBAAiB7G,EAAMsB,QAAQI,KAAK,aAQjC,SAASwV,GAAT,GAA8E,IAAD,IAA5DlS,aAA4D,MAApD,UAAoD,MAAzCQ,eAAyC,MAA/B,QAA+B,EAAtB7F,EAAsB,EAAtBA,SAAamC,EAAS,kBAC1F,OACE,cAAC,GAAD,yBAAWwU,WAAY,CAAEtR,QAAOQ,YAAe1D,GAA/C,aACGnC,KC7DP,IAAMwX,GAAkBvW,YAAO,MAAPA,CAAc,CACpCC,IAAK,EACLnB,MAAO,OACPsB,OAAQ,OACRoW,UAAW,QACXlW,SAAU,aAGNmW,GAA0BzW,YAAO,MAAPA,CAAc,CAC5CC,IAAK,EACLnB,MAAO,OACPsB,OAAQ,OACRoW,UAAW,QACXlW,SAAU,WACVoW,OAAQ,iBAOK,SAASC,GAAT,GAAwD,IAA7BC,EAA4B,EAA5BA,QAASC,EAAmB,EAAnBA,QAASjJ,EAAU,EAAVA,OAClD9I,EAAS8R,EAAT9R,KAER,OACE,eAACyP,GAAA,EAAD,WACE,eAAC/P,EAAA,EAAD,CAAKvD,GAAI,CAAE0E,GAAI,OAAQrF,SAAU,YAAjC,UACE,cAACgW,GAAD,CACE1R,QAAQ,SACRR,MAAOwJ,EAAS,QAAU,UAC1B3M,GAAI,CACFf,OAAQ,EACRD,IAAK,GACLE,MAAO,GACPG,SAAU,WACV6H,cAAe,aARnB,SAWGyF,EAAS,gBAAkB,cAE7BA,EACC,cAAC6I,GAAD,CAAyBvS,IAAKY,EAAMb,IAAK4S,IAEzC,cAACN,GAAD,CAAiBrS,IAAKY,EAAMb,IAAK4S,OAIrC,eAAC/P,EAAA,EAAD,CAAON,QAAS,EAAGvF,GAAI,CAAEyE,EAAG,GAA5B,UACE,cAAC6G,EAAA,EAAD,CAAMpH,GAAG,IAAIf,MAAM,UAAUoI,UAAU,QAAQpH,UAAWC,IAA1D,SACE,cAACV,EAAA,EAAD,CAAYC,QAAQ,YAAYC,QAAM,EAAtC,SACGC,MAIL,cAACgC,EAAA,EAAD,CAAOC,UAAU,MAAMC,WAAW,SAASgC,eAAe,gBAA1D,SAEE,cAACrE,EAAA,EAAD,CAAYC,QAAQ,sB,yHCzCf,SAASkS,GAAT,GAAuD,IAAhCC,EAA+B,EAA/BA,SAAUF,EAAqB,EAArBA,QAAY3V,EAAS,kBAgBnE,EAAsCiC,oBAAS,GAA/C,mBAAO6T,EAAP,KAAoBC,EAApB,KACA,EAAsC9T,mBAAS,IAA/C,mBAAO+T,EAAP,KAAoBC,EAApB,KAEMC,EAAgB,uCAAG,WAAOC,GAAP,iBAAA3T,EAAA,sEACAyK,GAAS,GAAD,OAC1Bc,uCAD0B,4BAC8BoI,GAC3D,CACEnI,OAAQ,QAJW,UAOC,OANlBL,EADiB,QAOVjB,OAPU,gCAQFiB,EAASE,KARP,OAQfA,EARe,OASrBoI,EAAepI,EAAKA,MATC,2CAAH,sDAatB,OACE,qCACE,cAACuI,GAAA,EAAD,yBAAMC,WAAS,EAAC/Q,QAAS,GAAOtF,GAAhC,aACG6V,EACEL,QAAO,SAACE,GAAD,OAAiC,IAApBA,EAAQY,WAC5BxS,KAAI,SAAC4R,EAASa,GAAV,OACH,cAACH,GAAA,EAAD,CACEvT,QAAS,WACPqT,EAAiBK,EAAQ,GACzBR,GAAe,IAGjB/N,MAAI,EACJjC,GAAI,GACJC,GAAI,EACJ4N,GAAI,EATN,SAWE,cAAC6B,GAAD,CACEC,QAASA,EACTC,QAASA,EAAQa,MAAK,SAACxO,GAAD,OAAUA,EAAKpE,OAAS8R,EAAQ9R,QAAM6S,IAC5D/J,OAAQgJ,EAAQY,WATbZ,EAAQ/G,UAerB,cAACmD,GAAA,EAAD,CAAO5P,KAAM4T,EAAb,SACE,eAACxS,EAAA,EAAD,CAAKvD,GA1DG,CACZX,SAAU,WACVL,IAAK,MACLkN,KAAM,MACN3M,UAAW,wBACXqQ,SAAU,IACV/R,MAAO,OACP6K,QAAS,mBACTpJ,aAAc,EACdqB,UAAW,GACXG,OAAQ,OACR6V,QAAS,OACTlS,EAAG,GA8CC,UACE,eAAC4R,GAAA,EAAD,CAAMC,WAAS,EAACxQ,UAAU,MAAMwO,UAAU,SAASvM,eAAe,SAAlE,UACE,cAACsO,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,IACf,cAACqQ,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,EAAf,SACE,cAACtC,EAAA,EAAD,CAAYkT,aAAa,SAASjT,QAAQ,KAA1C,2BAIF,cAAC0S,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,EAAf,SACE,cAACtC,EAAA,EAAD,CACER,MAAO,CACL7D,SAAU,WACVL,IAAK,IACLE,MAAO,IACPsI,QAAS,OACT3J,MAAO,MACP0W,OAAQ,UACR5I,WAAY,MACZ5D,eAAgB,gBAElBjF,QAAS,WACPkT,GAAe,GACfE,EAAe,KAbnB,SAgBE,cAAC,KAAD,CAAO/S,MAAM,QAAQD,MAAO,CAAEC,MAAO,kBAK1C8S,EAAY9F,OAAS,EACpB,cAAC0G,GAAA,EAAD,CAAgB1S,UAAW2S,KAA3B,SACE,cAACC,GAAA,EAAD,CACE1V,MAAM,eACNrB,GAAI,CAAE0U,SAAU,KAChB1B,KAAK,QACLgE,aAAW,gBAJb,SAME,cAACC,GAAA,EAAD,UACGhB,EAAYlS,KAAI,SAACmT,EAAYV,GAAb,OACf,cAACW,GAAA,EAAD,CAEEnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAFtD,SAIE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAMnU,MAAO,CAAE0R,SAAU,QAAzD,SACGsC,EAAWrT,QAJT2S,YAYf,cAAC9S,EAAA,EAAD,qC,4BCnIL,IAAM4T,GAAiB,uCAAG,4BAAA7U,EAAA,sEACRyK,GAAS,GAAD,OAAIc,uCAAJ,cAAsD,CACnFC,OAAQ,QAFqB,cACzBL,EADyB,yBAIxBA,GAJwB,2CAAH,qDAOjB2J,GAAyB,uCAAG,4BAAA9U,EAAA,sEAChByK,GAAS,GAAD,OAC1Bc,uCAD0B,oCAE7B,CACEC,OAAQ,QAJ2B,cACjCL,EADiC,yBAOhCA,GAPgC,2CAAH,qDAUzB4J,GAAyB,uCAAG,4BAAA/U,EAAA,sEAChByK,GAAS,GAAD,OAC1Bc,uCAD0B,oCAE7B,CACEC,OAAQ,QAJ2B,cACjCL,EADiC,yBAOhCA,GAPgC,2CAAH,qDAUzB6J,GAAgB,uCAAG,4BAAAhV,EAAA,sEACPyK,GAAS,GAAD,OAAIc,uCAAJ,aAAqD,CAClFC,OAAQ,QAFoB,cACxBL,EADwB,yBAIvBA,GAJuB,2CAAH,qDAOhB8J,GAAiB,uCAAG,4BAAAjV,EAAA,sEACRyK,GAAS,GAAD,OAAIc,uCAAJ,cAAsD,CACnFC,OAAQ,QAFqB,cACzBL,EADyB,yBAIxBA,GAJwB,2CAAH,qDAOjB+J,GAAc,uCAAG,4BAAAlV,EAAA,sEACLyK,GAAS,GAAD,OAC1Bc,uCAD0B,0CAE7B,CACEC,OAAQ,QAJgB,cACtBL,EADsB,yBAOrBA,GAPqB,2CAAH,qDAUdgK,GAAmB,uCAAG,4BAAAnV,EAAA,sEACVyK,GAAS,GAAD,OAC1Bc,uCAD0B,qCAE7B,CACEC,OAAQ,QAJqB,cAC3BL,EAD2B,yBAO1BA,GAP0B,2CAAH,qDAUnBiK,GAAoB,uCAAG,4BAAApV,EAAA,sEACXyK,GAAS,GAAD,OAC1Bc,uCAD0B,qCAE7B,CACEC,OAAQ,QAJsB,cAC5BL,EAD4B,yBAO3BA,GAP2B,2CAAH,qDAUpBkK,GAAoB,uCAAG,4BAAArV,EAAA,sEACXyK,GAAS,GAAD,OAC1Bc,uCAD0B,qCAE7B,CACEC,OAAQ,QAJsB,cAC5BL,EAD4B,yBAO3BA,GAP2B,2CAAH,qDAUpBmK,GAAmB,uCAAG,4BAAAtV,EAAA,sEACVyK,GAAS,GAAD,OAAIc,uCAAJ,gBAAwD,CACrFC,OAAQ,QAFuB,cAC3BL,EAD2B,yBAI1BA,GAJ0B,2CAAH,qDC3EjB,SAASoK,KACtB,MAAwC9V,mBAAS,IAAjD,mBAAO+V,EAAP,KAAqBC,EAArB,KAEAlN,qBAAU,YACU,uCAAG,8BAAAvI,EAAA,sEACQsV,KADR,cACbE,EADa,gBAEYA,EAAanK,KAAKA,KAF9B,OAEbqK,EAFa,OAGnBD,EAAgBC,GAHG,2CAAH,qDAKlBC,KACC,IAaH,OACE,cAAC,GAAD,CAAM9P,MAAM,wBAAZ,SACE,eAACoL,GAAA,EAAD,CAAWxQ,MAAO,CAAErF,MAAO,OAAQ+R,SAAU,MAA7C,UACE,cAAClM,EAAA,EAAD,CAAYC,QAAQ,KAAK3D,GAAI,CAAEmL,GAAI,GAAnC,sBAIA,cAAC0K,GAAD,CAAaC,SAAUmC,EAAcrC,QAlB3B,CACd,CACE/R,KAAM,WACN6S,IAAK,8CAEP,CACE7S,KAAM,gBACN6S,IAAK,sD,2ECjBL9R,GAAY7F,YAAOqG,IAAPrG,EAAgB,kBAAgB,CAChDI,OAAQ,GACRqI,QAAS,OACTO,eAAgB,gBAChBzC,QAJgC,EAAGnH,MAIpBoH,QAAQ,EAAG,EAAG,EAAG,OAG5B8S,GAActZ,YAAOuZ,KAAPvZ,EAAsB,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CACxDN,MAAO,IACP4L,WAAYtL,EAAMuL,YAAYC,OAAO,CAAC,aAAc,SAAU,CAC5D4O,OAAQpa,EAAMuL,YAAY6O,OAAOC,UACjCC,SAAUta,EAAMuL,YAAY+O,SAASC,UAEvC,gBAAiB,CAAE7a,MAAO,IAAK8C,UAAWxC,EAAMyC,cAAc+X,IAC9D,aAAc,CACZC,YAAY,iBACZC,YAAY,GAAD,OAAK1a,EAAMsB,QAAQI,KAAK,OAAxB,oBAWA,SAASiZ,GAAT,GAA8E,IAApCC,EAAmC,EAAnCA,YAAaC,EAAsB,EAAtBA,aAAcnV,EAAQ,EAARA,KAClF,OACE,cAAC,GAAD,CACE7D,GAAE,eACI+Y,EAAc,GAAK,CACrB5V,MAAO,eACPuF,QAAS,oBAJf,SAQGqQ,EAAc,EACb,eAACrV,EAAA,EAAD,CAAYS,UAAU,MAAMR,QAAQ,YAApC,UACGoV,EADH,eAIA,8BACE,cAACV,GAAD,CACErI,SAAUgJ,EACVC,YAAW,iBAAYpV,EAAZ,OACXqV,eACE,cAAC5G,GAAA,EAAD,CAAgBjT,SAAS,QAAzB,SACE,cAACkE,EAAA,EAAD,CAAKY,UAAWI,IAAMjD,KAAM6X,KAAYnZ,GAAI,CAAEmD,MAAO,2B,iBClDtD,SAASiW,GAAT,GAAgE,IAAD,IAArC9Q,aAAqC,MAA7B,gBAA6B,EAATrI,EAAS,kBAC5E,OACE,cAAC6W,GAAA,EAAD,2BAAW7W,GAAX,aACE,cAACyD,EAAA,EAAD,CAAYiQ,cAAY,EAACU,MAAM,SAAS1Q,QAAQ,YAAhD,SACG2E,O,kCCKM,SAAS+Q,GAAT,GAQX,IAPFC,EAOC,EAPDA,MACAC,EAMC,EANDA,QAEAC,EAIC,EAJDA,UAEAC,EAEC,EAFDA,cAOA,OACE,cAACC,GAAA,EAAD,UACE,cAACvC,GAAA,EAAD,UACGqC,EAAUzV,KAAI,SAAC4V,GAAD,OACb,cAACvC,GAAA,EAAD,CAEE/C,MAAOsF,EAASC,WAAa,QAAU,OACvCC,cAAeN,IAAYI,EAAS/K,IAAK0K,EAH3C,SAKE,eAACQ,GAAA,EAAD,CACEC,cAAY,EACZ7R,OAAQqR,IAAYI,EAAS/K,GAC7B9I,UAAWyT,IAAYI,EAAS/K,GAAK0K,EAAQ,MAC7CxW,SAjBekX,EAiBYL,EAAS/K,GAjBR,SAACqB,GACvCwJ,EAAcxJ,EAAO+J,KAYb,UAMGL,EAAStY,MACTkY,IAAYI,EAAS/K,GACpB,cAACrL,EAAA,EAAD,CAAKvD,GAAE,eAAOia,MAAd,SACa,SAAVX,EAAmB,oBAAsB,qBAE1C,SAfDK,EAAS/K,IATE,IAACoL,SChB7B,IAAMpV,GAAY7F,YAAOqG,IAAPrG,EAAgB,kBAAgB,CAChDI,OAAQ,GACRqI,QAAS,OACTO,eAAgB,gBAChBzC,QAJgC,EAAGnH,MAIpBoH,QAAQ,EAAG,EAAG,EAAG,OAG5B8S,GAActZ,YAAOuZ,KAAPvZ,EAAsB,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CACxDN,MAAO,IACP4L,WAAYtL,EAAMuL,YAAYC,OAAO,CAAC,aAAc,SAAU,CAC5D4O,OAAQpa,EAAMuL,YAAY6O,OAAOC,UACjCC,SAAUta,EAAMuL,YAAY+O,SAASC,UAEvC,gBAAiB,CAAE7a,MAAO,IAAK8C,UAAWxC,EAAMyC,cAAc+X,IAC9D,aAAc,CACZC,YAAY,iBACZC,YAAY,GAAD,OAAK1a,EAAMsB,QAAQI,KAAK,OAAxB,oBAWA,SAASqa,GAAT,GAA+D,IAApCnB,EAAmC,EAAnCA,YAAaC,EAAsB,EAAtBA,aAAcnV,EAAQ,EAARA,KACnE,OACE,cAAC,GAAD,CACE7D,GAAE,eACI+Y,EAAc,GAAK,CACrB5V,MAAO,eACPuF,QAAS,oBAJf,SAQGqQ,EAAc,EACb,eAACrV,EAAA,EAAD,CAAYS,UAAU,MAAMR,QAAQ,YAApC,UACGoV,EADH,eAIA,8BACE,cAAC,GAAD,CACE/I,SAAUgJ,EACVC,YAAW,iBAAYpV,EAAZ,OACXqV,eACE,cAAC5G,GAAA,EAAD,CAAgBjT,SAAS,QAAzB,SACE,cAACkE,EAAA,EAAD,CAAKY,UAAWI,IAAMjD,KAAM6X,KAAYnZ,GAAI,CAAEmD,MAAO,2BCpDrE,IAAMyB,GAAY7F,YAAOqG,IAAPrG,EAAgB,kBAAgB,CAChDI,OAAQ,GACRqI,QAAS,OACTO,eAAgB,gBAChBzC,QAJgC,EAAGnH,MAIpBoH,QAAQ,EAAG,EAAG,EAAG,OAG5B8S,GAActZ,YAAOuZ,KAAPvZ,EAAsB,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CACxDN,MAAO,IACP4L,WAAYtL,EAAMuL,YAAYC,OAAO,CAAC,aAAc,SAAU,CAC5D4O,OAAQpa,EAAMuL,YAAY6O,OAAOC,UACjCC,SAAUta,EAAMuL,YAAY+O,SAASC,UAEvC,gBAAiB,CAAE7a,MAAO,IAAK8C,UAAWxC,EAAMyC,cAAc+X,IAC9D,aAAc,CACZC,YAAY,iBACZC,YAAY,GAAD,OAAK1a,EAAMsB,QAAQI,KAAK,OAAxB,oBAWA,SAASsa,GAAT,GAMX,IALFpB,EAKC,EALDA,YACAqB,EAIC,EAJDA,WACApB,EAGC,EAHDA,aACA1Q,EAEC,EAFDA,MACAxK,EACC,EADDA,SAEA,OACE,eAAC,GAAD,CACEkC,GAAE,eACI+Y,EAAc,GAAK,CACrB5V,MAAO,eACPuF,QAAS,oBAJf,UAQE,cAAC,GAAD,CACEsH,SAAUgJ,EACVqB,aAAcD,EACdnB,YAAW,iBAAY3Q,EAAZ,OACX4Q,eACE,cAAC5G,GAAA,EAAD,CAAgBjT,SAAS,QAAzB,SACE,cAACkE,EAAA,EAAD,CAAKY,UAAWI,IAAMjD,KAAM6X,KAAYnZ,GAAI,CAAEmD,MAAO,uBAI1DrF,K,2ECpDMwc,GAAc,SAACxT,GAAW,IAAD,0BACpC,EAA4B5E,mBAAS,CACnCqY,SAAQ,OAAEzT,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,iBAAE,EAAgBA,eAAlB,aAAE,EAAyBC,eACnCC,SAAQ,OAAE5T,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,iBAAE,EAAgBA,eAAlB,aAAE,EAAyBG,eACnCC,SAAQ,OAAE9T,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,iBAAE,EAAgBA,eAAlB,aAAE,EAAyBI,SACnC/W,KAAI,OAAEiD,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,aAAE,EAAgB3W,KACtBgX,OAAM,OAAE/T,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,aAAE,EAAgBK,OACxBC,MAAO,GACPC,QAAO,OAAEjU,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,iBAAE,EAAgBA,eAAlB,iBAAE,EAAyBO,eAA3B,aAAE,EAAkCzM,WAC3C0M,UAAS,OAAElU,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,iBAAE,EAAgBA,eAAlB,aAAE,EAAyBQ,UACpCC,KAAM,KATR,mBAAOhM,EAAP,KAAeC,EAAf,KAWA,EAAgChN,mBAAS,IAAzC,mBAAOgZ,EAAP,KAAiBC,EAAjB,KACA,EAA8BjZ,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KACApE,qBAAU,YACK,uCAAG,8BAAAvI,EAAA,sEACmB2Y,MAAM,GAAD,OACjCpN,uCADiC,qBACgBiB,EAAO8L,SAC3D,CACE9M,OAAQ,MACRjB,QAAS,CACPC,cAAc,UAAD,OAAYpL,OAAOC,aAAaC,QAAQ,aAN7C,cACRsZ,EADQ,gBAUKA,EAAmBC,OAVxB,OAURxN,EAVQ,OAWdoB,EAAU,2BACLD,GADI,IAEPgM,KAAMnN,EAAKA,KAAKmN,KAAKpX,KACrBiX,MAAOhN,EAAKA,KAAKmN,KAAKH,MAAMjX,KAC5BmX,UAAWlN,EAAKA,KAAKc,MAfT,2CAAH,qDAmBb2M,KAEC,IACH,MAA8BrZ,oBAAS,GAAvC,mBAAOsZ,EAAP,KAAgBC,EAAhB,KACA,EAA4BvZ,mBAAS,CACnCwZ,QAAQ,EACRZ,OAAO,EACPC,SAAS,EACTE,MAAM,IAJR,mBAAO5L,EAAP,KAAeC,EAAf,KAMMqM,EAAiB,uCAAG,4BAAAlZ,EAAA,2DAEH,KAAnBwM,EAAO8L,SACS,KAAhB9L,EAAOgM,MACU,KAAjBhM,EAAO6L,OACP7L,EAAOsL,SAASpK,OAAS,GAEzBlB,EAAO2L,SAASzK,OAAS,GAPH,wBAStBf,GAAW,GATW,SAUOgM,MAAM,GAAD,OAC7BpN,uCAD6B,oBACmBlH,EAAM0T,QAAQ5L,IACjE,CACEX,OAAQ,MACRjB,QAAS,CACP,eAAgB,mBAChBC,cAAc,UAAD,OAAYpL,OAAOC,aAAaC,QAAQ,WAEvD6Z,KAAMja,KAAKuM,UAAU,CACnBrK,KAAMoL,EAAOpL,KACbgX,OAAQ5L,EAAO4L,OACfJ,eAAgBxL,EAAOsL,SACvBI,eAAgB1L,EAAOyL,SAASvK,OAAS,EAAIlB,EAAOyL,SAAW,IAC/DE,SAAU3L,EAAO2L,SACjBiB,WAAYC,OAAO7M,EAAO+L,eAxBV,cAUhBe,EAVgB,gBA4BhBA,EAAeT,OA5BC,OA6BtBzZ,OAAOgN,SAASC,SA7BM,wBA+BtBQ,EAAU,2BACLD,GADI,IAEPqM,OAAQzM,EAAOyM,OAAOvL,OAAS,EAC/B8K,KAAsB,KAAhBhM,EAAOgM,KACbF,QAA4B,KAAnB9L,EAAO8L,QAChBD,MAAwB,KAAjB7L,EAAO6L,SApCM,4CAAH,qDAyCjBkB,EAAY,uCAAG,WAAOC,EAAMC,GAAb,iBAAAzZ,EAAA,yDACN,YAATwZ,EADe,oBAEjB/M,EAAU,2BAAKD,GAAN,IAAc8L,QAASmB,KACd,KAAb,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAHU,wBAIff,GAAW,GAJI,SAKkBgM,MAAM,GAAD,OACjCpN,uCADiC,qBACgBkO,GACpD,CACEjO,OAAQ,MACRjB,QAAS,CACPC,cAAc,UAAD,OAAYpL,OAAOC,aAAaC,QAAQ,aAV5C,cAKTsZ,EALS,gBAcIA,EAAmBC,OAdvB,OAcTxN,EAdS,OAefoB,EAAU,2BACLD,GADI,IAEPgM,KAAMnN,EAAKA,KAAKmN,KAAKpX,KACrBiX,MAAOhN,EAAKA,KAAKmN,KAAKH,MAAMjX,KAC5BkX,QAASmB,EACTlB,UAAWlN,EAAKA,KAAKc,MAEvBQ,GAAW,GAtBI,gCAwBZF,EAAU,2BAAKD,GAAN,kBAAegN,EAAOC,KAxBnB,QA0BN,aAATD,GACF3M,EAAU,2BACLD,GADI,IAEPkL,SAAU2B,EAAE/L,OAAS,KAEZ,aAAT8L,GACF3M,EAAU,2BACLD,GADI,IAEPuL,SAAUsB,EAAE/L,OAAS,KAEZ,SAAT8L,GACF3M,EAAU,2BACLD,GADI,IAEP4L,KAAY,KAANiB,KAEG,YAATD,GACF3M,EAAU,2BACLD,GADI,IAEP0L,QAAe,KAANmB,KAEA,UAATD,GACF3M,EAAU,2BACLD,GADI,IAEPyL,MAAa,KAANoB,KAjDQ,4CAAH,wDAoDZC,EAAa,uCAAG,WAAOC,GAAP,qBAAA3Z,EAAA,yDACW,KAA3B,UAAA2Z,EAAElM,OAAOH,aAAT,eAAgBI,QADA,mBAEa,KAA3B,UAAAiM,EAAElM,OAAOH,aAAT,eAAgBI,QAFF,gCAGGiL,MAAM,GAAD,OACnBpN,uCADmB,uCACsCoO,EAAElM,cADxC,aACsC,EAAUH,OACtE,CACE9B,OAAQ,MACRjB,QAAS,CACPC,cAAc,UAAD,OAAYpL,OAAOC,aAAaC,QAAQ,aAR3C,cAGVsa,EAHU,gBAYUA,EAAKf,OAZf,cAaJxN,KAAKwO,SAAQ,SAACvB,GACxBI,GAAY,SAACoB,GAAD,6BAAsBA,GAAtB,CAAoCxB,EAAQzM,mBAd1C,2CAAH,sDAmBnB,OACE,qCACE,oBAAIpL,MAAO,CAAEoR,UAAW,UAAxB,4BACA,eAAC/Q,EAAA,EAAD,CAAKL,MAAO,CAAEoC,QAAS,QAAvB,UACE,cAACuK,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAOpL,KACdmM,SAAU,SAACoM,GAAD,OAAOJ,EAAa,OAAQI,EAAElM,OAAOH,QAC/C1O,MAAM,eACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOxL,KACdwM,WAAYhB,EAAOxL,KAAO,4BAA8B,OAE1D,cAACgM,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,SACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAO4L,OACd7K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,SAAUI,EAAElM,OAAOH,QACjD1O,MAAM,eACN8B,MAAM,UACNiN,aAAa,MACboM,QAAS,SAACJ,GACRA,EAAElM,OAAOH,MAAQ+L,OAAOM,EAAElM,OAAOH,OAAOzB,WAAWmO,MAAM,EAAG,KAE9DhP,MAAO4B,EAAOqN,MACdrM,WAAYhB,EAAOqN,MAAQ,4BAA8B,OAE3D,cAAC7M,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAOsL,SACdvK,SAAU,SAACoM,GAAD,OAAOJ,EAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,YACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOkL,SACdlK,WAAYhB,EAAOkL,SAAW,yBAA2B,OAE3D,cAAC1K,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAOyL,SACd1K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,YACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOqL,SACdrK,WAAYhB,EAAOqL,SAAW,yBAA2B,OAE3D,cAAC7K,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAO2L,SACd5K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,WACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOuL,SACdvK,WAAYhB,EAAOuL,SAAW,wBAA0B,OAE1D,sBACE1X,MAAO,CACLsE,QAAS,OACTmV,SAAU,OACVzR,cAAe,cACfnD,eAAgB,gBAChBsD,UAAW,QANf,UASE,cAACwE,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACLC,MAAOd,EAAO6L,MACdzZ,MAAM,eACNub,SAAS,OACT1Z,MAAO,CAAErF,MAAO,MAAOwN,UAAW,MAAOlI,MAAOkM,EAAOyL,MAAQ,MAAQ,MACvE9K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,QAASI,EAAElM,OAAOH,UAElD,cAACF,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACLC,MAAOd,EAAOgM,KACd/X,MAAO,CAAErF,MAAO,MAAOwN,UAAW,MAAOlI,MAAOkM,EAAO4L,KAAO,MAAQ,MACtE5Z,MAAM,cACNub,SAAS,OACT5M,SAAU,SAACoM,GAAD,OAAOJ,EAAa,OAAQI,EAAElM,OAAOH,UAGjD,cAAC8M,GAAA,EAAD,CACE3Z,MAAO,CAAErF,MAAO,MAAOwN,UAAW,OAClCuD,GAAG,iBACHkO,cAAc,oBACd3a,KAAMqZ,EACNuB,WAAY,kBAAMtB,GAAW,IAC7BuB,UAAW,kBAAMvB,GAAW,IAC5BrY,QAAS,kBAAMqY,GAAW,IAC1BwB,QAAS/B,EACTnL,MAAOd,EAAO8L,QACd/K,SAAU,SAACoM,EAAGF,GAAJ,OAAUF,EAAa,UAAWE,IAC5CgB,YAAa,SAACC,GAAD,OACX,cAACtN,GAAA,EAAD,2BACMsN,GADN,IAEEha,MAAM,UACN9B,MAAM,iBACN2O,SAAUmM,EACV1O,MAAO4B,EAAO0L,QACd1K,WAAYhB,EAAO0L,QAAU,uBAAyB,cAK9D,qBAAK7X,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,SAAUsD,UAAW,QAApE,SACG8D,EACC,cAACmB,GAAA,EAAD,IAEA,cAAC1N,EAAA,EAAD,CAAQe,QAAQ,YAAYT,MAAO,CAAEmI,UAAW,QAAUvI,QAAS6Y,EAAnE,mCCjRG,SAASyB,GAAatW,GACnC,IAAMjE,EAAMZ,iBAAO,MACnB,EAAgCC,oBAAS,GAAzC,mBAAOmb,EAAP,KAAiBC,EAAjB,KACA,EAA4Bpb,oBAAS,GAArC,mBAAOqb,EAAP,KAAeC,EAAf,KAcA,OACE,qCACE,cAACzL,GAAA,EAAD,CACE5P,KAAMkb,EACNja,QAAS,kBAAMka,GAAY,IAC3BtL,kBAAgB,oBAChBC,mBAAiB,0BAJnB,SAME,cAAC,KAAD,CAAKjS,GArBG,CACZX,SAAU,WACVL,IAAK,MACLkN,KAAM,MACN3M,UAAW,wBACXqQ,SAAU,IACV/R,MAAO,OACP6K,QAAS,mBACTpJ,aAAc,EACdqB,UAAW,GACX8D,EAAG,GAWC,SACE,cAAC,GAAD,CAAa+V,QAAS1T,EAAM0T,cAGhC,cAAC9U,EAAA,EAAD,CAAY7C,IAAKA,EAAKC,QAAS,kBAAM0a,GAAU,IAA/C,SACE,cAAC,IAAD,CAAMlc,KAAMmc,KAAkB5f,MAAO,GAAIsB,OAAQ,OAGnD,cAACue,GAAA,EAAD,CACEvb,KAAMob,EACNla,SAAUR,EAAIS,QACdF,QAAS,kBAAMoa,GAAU,IACzBjd,WAAY,CACVP,GAAI,CAAEnC,MAAO,IAAK+R,SAAU,SAE9BzP,aAAc,CAAEC,SAAU,MAAOC,WAAY,SAC7CC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SARlD,SAUE,eAAC4D,EAAA,EAAD,CACEE,UAAWC,IACXF,GAAE,kCAA6B4C,EAAM8H,IACrC5O,GAAI,CAAEmD,MAAO,kBAHf,UAKE,cAAC2E,GAAA,EAAD,UACE,cAAC,IAAD,CAAMxG,KAAMqc,KAAU9f,MAAO,GAAIsB,OAAQ,OAE3C,cAAC4J,GAAA,EAAD,CAAcpB,QAAQ,OAAOiW,uBAAwB,CAAEja,QAAS,mBC5DnE,IAAMka,GAA0B,uCAAG,WAAO3B,GAAP,eAAAzZ,EAAA,sEACjByK,GAAS,GAAD,OAAIc,uCAAJ,qBAAqDkO,GAAK,CACvFjO,OAAQ,QAF8B,cAClCL,EADkC,yBAIjCA,GAJiC,2CAAH,sDAO1BkQ,GAA0B,uCAAG,WAAOC,GAAP,eAAAtb,EAAA,sEACjByK,GAAS,GAAD,OAAIc,uCAAJ,UAAkD,CAC/EC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnB4B,KAAM,MACNkO,UAAU,GAAD,OAAKD,EAAL,YAN2B,cAClCnQ,EADkC,yBASjCA,GATiC,2CAAH,sDAY1BqQ,GAA8B,uCAAG,WAAOF,EAAY9O,GAAnB,eAAAxM,EAAA,sEACrByK,GAAS,GAAD,OAAIc,uCAAJ,UAAkD,CAC/EC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnB4B,KAAM,OACNkO,UAAU,GAAD,OAAKD,EAAL,QACTG,aAAcjP,EAAOkP,gBAPmB,cACtCvQ,EADsC,yBAUrCA,GAVqC,2CAAH,wDAa9BwQ,GAAiC,uCAAG,WAAOxP,GAAP,eAAAnM,EAAA,sEACxByK,GAAS,GAAD,OAC1Bc,uCAD0B,gCACkCY,GAC/D,CACEX,OAAQ,QAJmC,cACzCL,EADyC,yBAOxCA,GAPwC,2CAAH,sDAUjCyQ,GAA8B,uCAAG,WAAOzP,GAAP,eAAAnM,EAAA,sEACrByK,GAAS,GAAD,OAAIc,uCAAJ,oBAAoDY,GAAM,CACvFX,OAAQ,QAFkC,cACtCL,EADsC,yBAIrCA,GAJqC,2CAAH,sDAO9B0Q,GAA8B,uCAAG,WAAO1P,GAAP,eAAAnM,EAAA,sEACrByK,GAAS,GAAD,OAAIc,uCAAJ,oBAAoDY,EAApD,YAAkE,CAC/FX,OAAQ,QAFkC,cACtCL,EADsC,yBAIrCA,GAJqC,2CAAH,sDAO9B2Q,GAAmB,uCAAG,WAAO3C,GAAP,eAAAnZ,EAAA,sEACVyK,GAAS,GAAD,OAAIc,uCAAJ,YAAoD,CACjFC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU0N,KAJU,cAC3BhO,EAD2B,yBAM1BA,GAN0B,2CAAH,sDASnB4Q,GAAoB,uCAAG,WAAO5P,EAAIgN,GAAX,eAAAnZ,EAAA,sEACXyK,GAAS,GAAD,OAAIc,uCAAJ,oBAAoDY,GAAM,CACvFX,OAAQ,MACRjB,WACAc,KAAMnM,KAAKuM,UAAU0N,KAJW,cAC5BhO,EAD4B,yBAM3BA,GAN2B,2CAAH,wDASpB6Q,GAAsB,uCAAG,WAAOrC,GAAP,iBAAA3Z,EAAA,sEACbyK,GAAS,GAAD,OAC1Bc,uCAD0B,uCAC+BoO,EAAElM,cADjC,aAC+B,EAAUH,OACtE,CACE9B,OAAQ,QAJwB,cAC9BL,EAD8B,yBAO7BA,GAP6B,2CAAH,sDAUtB8Q,GAA2B,uCAAG,WAAOC,EAAaC,EAAMC,GAA1B,eAAApc,EAAA,sEAClByK,GAAS,GAAD,OAC1Bc,uCAD0B,yBAC2B2Q,EAD3B,iBAC+CC,EAD/C,iBAC4DC,GACzF,CACE5Q,OAAQ,QAJ6B,cACnCL,EADmC,yBAOlCA,GAPkC,2CAAH,0DC/DlCkR,GAAa,CACjB,CAAElQ,GAAI,OAAQvN,MAAO,OAAQuY,YAAY,GACzC,CAAEhL,GAAI,SAAUvN,MAAO,gBAAiBuY,YAAY,GACpD,CAAEhL,GAAI,KAGO,SAASmQ,KACtB,MAAwB7c,mBAAS,GAAjC,mBAAO0c,EAAP,KAAaI,EAAb,KACA,EAAkC9c,mBAAS,GAA3C,mBAAO+c,EAAP,KAAkBC,EAAlB,KACA,EAA0Bhd,mBAAS,OAAnC,mBAAOoX,EAAP,KAAc6F,EAAd,KACA,EAAgCjd,mBAAS,IAAzC,mBAAOkd,EAAP,KAAiBC,EAAjB,KACA,EAA8Bnd,mBAAS,QAAvC,mBAAOqX,EAAP,KAAgB+F,EAAhB,KACA,EAAoCpd,mBAAS,IAA7C,mBAAOkY,EAAP,KAAmBmF,EAAnB,KACA,EAAsCrd,mBAAS,IAA/C,mBAAOyc,EAAP,KAAoBa,EAApB,KACA,EAAgCtd,mBAAS,IAAzC,mBAAOud,EAAP,KAAiBC,EAAjB,KACA,EAA8Bxd,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KACA,EAAyBlN,mBAAS,IAA3Byd,EAAP,oBAEA3U,qBAAU,YACI,uCAAG,kCAAAvI,EAAA,6DACbid,EAAY,IACZtQ,GAAW,GACLyP,GACJzE,EAAW5b,SAAS,KAApB,aAAiC4b,EAAWwF,MAAM,KAAK,IAAOxF,GAC9DyF,cALW,SAMUnB,GAA4BC,EAAaC,EAAMC,GANzD,cAMPjR,EANO,OAObwB,GAAW,GAPE,gBAQMxB,QARN,IAQMA,OARN,EAQMA,EAAUE,KARhB,OAQPA,EARO,OASb4R,EAAW,OAAC5R,QAAD,IAACA,OAAD,EAACA,EAAMA,MAClBoR,EAAY,OAACpR,QAAD,IAACA,GAAD,UAACA,EAAMa,YAAP,aAAC,EAAYwB,QAVZ,4CAAH,qDAYZ2P,KAEC,CAAC1F,EAAYuE,EAAaC,IAE7B,IAeMmB,EAAgB,uCAAG,WAAO9P,EAAO+P,GAAd,SAAAvd,EAAA,sDACvBuc,EAAQgB,GACRN,EAAY,IAFW,2CAAH,wDAUhBO,EAAgB,SAAChQ,GACrB+O,EAAQ,GACRO,EAActP,EAAMC,OAAOH,QAGvBmQ,EAAyBC,mBAAQ,kBAAMC,oBAASH,EAAe,OAAM,IAErEI,EAAgBZ,EAEhBa,EAA0C,IAAzBD,EAAclQ,OAErC,OACE,cAAC,GAAD,CAAM7H,MAAM,wBAAZ,SACE,eAACoL,GAAA,EAAD,CAAWxQ,MAAO,CAAErF,MAAO,OAAQ+R,SAAU,MAA7C,UACE,eAAC/J,EAAA,EAAD,CAAOC,UAAU,MAAMC,WAAW,SAASgC,eAAe,gBAAgBoD,GAAI,EAA9E,UACE,cAACzH,EAAA,EAAD,CAAYC,QAAQ,KAAKgQ,cAAY,EAArC,sBAGA,cAAC/Q,EAAA,EAAD,CACEe,QAAQ,YACRQ,UAAWC,IACXF,GAAG,yBACHqc,UAAW,cAAC,IAAD,CAAMjf,KAAMkf,OAJzB,4BASF,eAAClN,GAAA,EAAD,WACE,cAACwF,GAAD,CACEC,YAAaqG,EAASjP,OACtBiK,WAAYA,EACZpB,aAAckH,EACdrc,KAAK,aAGP,cAACyC,GAAD,UACE,cAACuQ,GAAA,EAAD,CAAgB7W,GAAI,CAAE0U,SAAU,KAAhC,SACE,eAACqC,GAAA,EAAD,WACE,cAACsC,GAAD,CACEC,MAAOA,EACPC,QAASA,EACTC,UAAWsF,GACX2B,SAAUhB,EAAStP,OACnB4I,YAAaqG,EAASjP,OACtBsJ,cArEU,SAACxJ,EAAO+J,GAEhCmF,EADc5F,IAAYS,GAAsB,QAAVV,EACrB,OAAS,OAC1BgG,EAAWtF,IAmEG0G,iBAhEa,SAACzQ,GAC5B,GAAIA,EAAMC,OAAO4C,QAAjB,CACE,IAAM6N,EAAelB,EAAS1b,KAAI,SAAC6c,GAAD,OAAOA,EAAE/c,QAC3Cwb,EAAYsB,QAGdtB,EAAY,OA4DA,cAACpI,GAAA,EAAD,UACGoJ,EAActc,KAAI,SAAC8c,GAClB,IAAQjS,EAA8BiS,EAA9BjS,GAAI/K,EAA0Bgd,EAA1Bhd,KAAM2W,EAAoBqG,EAApBrG,QAASK,EAAWgG,EAAXhG,OACrBiG,GAA6C,IAA5B1B,EAAS2B,QAAQld,GAExC,OACE,eAACsT,GAAA,EAAD,CACE6J,OAAK,EAELC,UAAW,EACXzV,KAAK,WACL4T,SAAU0B,EACVI,eAAcJ,EANhB,UAQE,cAAC1J,GAAA,EAAD,UAAYvT,IAEZ,cAACuT,GAAA,EAAD,CAAW/C,MAAM,OAAjB,SAAyBwG,IAEzB,cAACzD,GAAA,EAAD,CAAW/C,MAAM,QAAjB,SACE,cAAC+I,GAAD,CACExO,GAAIA,EACJ4L,QAAS,CACPA,UACA3W,OACA+K,KACAiM,UAEF8E,eAAgBA,QAnBf/Q,QA0BZ0R,GACC,cAACrJ,GAAA,EAAD,UACE,cAACE,GAAA,EAAD,UACE,cAACC,GAAA,EAAD,CAAW/C,MAAM,SAAS8M,QAAS,EAAGnhB,GAAI,CAAEsE,GAAI,GAAhD,SACG6K,EACC,qBAAKjM,MAAO,CAAErF,MAAO,QAArB,SACE,cAACyS,GAAA,EAAD,CAAkBpN,MAAO,CAAEoR,UAAW,cAGxC,cAAC8E,GAAD,CAAgBgI,YAAahH,iBAU7C,cAACiH,GAAA,EAAD,CACEC,mBAAoB,CAAC,GAAI,GAAI,KAC7Bnd,UAAU,MACVod,MAAOtC,EACPN,YAAaA,EACbC,KAAMA,EACN4C,aAAczB,EACd0B,oBAhHsB,SAACxR,GAC/BuP,EAAekC,SAASzR,EAAMC,OAAOH,MAAO,KAC5CiP,EAAQ,IA+GA2C,iBAAiB,8B,cC9LhBC,GAAe,CAC1BC,QAAS,CACPpY,WAAY,CAAEqY,gBAAiB,MCM7BC,GAAmB,CACvBtJ,SAAU,IACVuJ,KAAM,CAAC,IAAM,IAAM,IAAM,MAGrBC,GAAkB,CACtBxJ,SAAU,IACVuJ,KAAM,CAAC,IAAM,IAAM,IAAM,MAGdE,GAAc,CACzBL,QAAS,CACPM,MAAO,CAAC,GAAK,IAAK,GAAK,KAAM,IAAM,GACnC9b,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACzBoD,WAAYsY,IAEdK,KCvBS,CACPD,MAAO,CAAC,GAAK,IAAK,IAClB9b,QAAS,CAAC,EAAG,EAAG,K,ID6BL,eAAM0b,IAEd,2BClBI,CACPM,EAAG,CAAC,IAAK,GAAI,KACbC,OAAQ,CAAC,KAAO,GAAK,GACrBjc,QAAS,CAAC,EAAG,EAAG,KDed,IAAiCoD,WAAYwY,KAU5C,2BCpCI,CACPI,EAAG,EAAE,GAAI,IAAK,KACdC,OAAQ,CAAC,KAAO,GAAK,GACrBjc,QAAS,CAAC,EAAG,EAAG,KDiCd,IAA+BoD,WAAYwY,KAU1C,2BC9BI,CACPM,EAAG,CAAC,EAAG,IAAK,KACZC,OAAQ,CAAC,EAAG,GAAK,GACjBnc,QAAS,CAAC,EAAG,EAAG,KD2Bd,IAAiCoD,WAAYwY,KAU5C,2BChCI,CACPM,EAAG,CAAC,GAAI,GAAI,KACZC,OAAQ,CAAC,EAAG,GAAK,GACjBnc,QAAS,CAAC,EAAG,EAAG,KD6Bd,IAAkCoD,WAAYwY,K,qBEpDrC,SAASQ,GAAT,GAAwD,IAA7BtgB,EAA4B,EAA5BA,KAAMrE,EAAsB,EAAtBA,SAAamC,EAAS,kBACpE,OACE,cAACsD,EAAA,EAAD,yBACEY,UAAWue,KAAOC,IAClBC,SAAS,EACTf,QAAS1f,EAAO,UAAY,OAC5B0gB,SAAUjB,IACN3hB,GALN,aAOGnC,KChBP,IAAM8G,GAAY7F,YAAOsN,GAAPtN,EAAa,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CAC7CqJ,QAAS,OACTnC,UAAW,OACXU,WAAY,SACZ4F,WAAYxN,EAAMoH,QAAQ,IAC1BsG,cAAe1N,EAAMoH,QAAQ,QAGhB,SAASud,KAAW,IAAD,IAC1BjU,EAAW9E,cAEjB,OACE,cAAC,GAAD,CAAWzB,MAAM,kCAAjB,SACE,cAACoL,GAAA,EAAD,UACE,cAAC+O,GAAD,CAAiBG,QAAQ,UAAUzgB,MAAI,EAAvC,SACE,eAACoB,EAAA,EAAD,CAAKvD,GAAI,CAAE4P,SAAU,IAAK2D,OAAQ,OAAQe,UAAW,UAArD,UACE,cAACoO,GAAA,EAAOC,IAAR,CAAYE,SAAUX,GAAtB,SACE,cAACxe,EAAA,EAAD,CAAYC,QAAQ,KAAKof,WAAS,EAAlC,UACW,OAARlU,QAAQ,IAARA,GAAA,UAAAA,EAAUiM,aAAV,eAAiBxS,OAAjB,OAAyBuG,QAAzB,IAAyBA,GAAzB,UAAyBA,EAAUiM,aAAnC,aAAyB,EAAiBxS,MAR3C,6BAWJ,cAAC5E,EAAA,EAAD,CAAY1D,GAAI,CAAEmD,MAAO,kBAAzB,kJAKA,cAACuf,GAAA,EAAOC,IAAR,CAAYE,SAAUX,GAAtB,SACE,cAAC3e,EAAA,EAAD,CACEY,UAAU,MACVnB,IAAI,6CACJhD,GAAI,CAAEb,OAAQ,IAAKiM,GAAI,OAAQ5H,GAAI,CAAEwC,GAAI,EAAGC,GAAI,SAIpD,cAACrD,EAAA,EAAD,CAAQsB,GAAG,IAAI8O,KAAK,QAAQrP,QAAQ,YAAYQ,UAAWC,IAA3D,iC,oPC7BG,SAAS4e,GAAYlc,GAClC,MAA4Cmc,IAAM/gB,SAAN,aAAmB4E,EAAMoc,cAArE,mBAAOC,EAAP,KAAuBC,EAAvB,KACA,EAA8BH,IAAM/gB,UAAS,GAA7C,mBAAOiN,EAAP,KAAgBC,EAAhB,KACA,EAAoC6T,IAAM/gB,SAAS,CACjDmhB,UAAW,EACXC,QAAS,GACTC,KAAM,KAHR,mBAAOC,EAAP,KAAmBC,EAAnB,KAKA,EAAkCR,IAAM/gB,SAAS,CAC/CwhB,OAAQ,QACRC,UAAW,EACXC,UAAW,IAHb,mBAAOC,EAAP,KAAkBC,EAAlB,KAKA,EAAkCb,IAAM/gB,SAAS,CAC/CwhB,OAAQ,QACRC,UAAW,EACXC,UAAW,IAHb,mBAAOG,EAAP,KAAkBC,EAAlB,KAKA,EAA4Bf,IAAM/gB,SAAS,CACzC+hB,UAAU,EACVC,UAAU,EACVC,UAAU,EACVC,UAAU,IAJZ,mBAAO/U,EAAP,KAAeC,EAAf,KAMA,EAAsC2T,IAAM/gB,SAAS,CACnDqhB,MAAM,IADR,mBAAOc,EAAP,KAAoBC,EAApB,KAGA,EAAgCrB,IAAM/gB,SAAN,aAAmB4E,EAAMoc,cAAzD,mBAAOqB,EAAP,KAAiBC,EAAjB,KACMC,EAAoB,SAACrI,EAAGtV,GACd,aAAVA,IACEsV,EAAElM,OAAOH,MAAQ,EACnB+T,EAAa,2BACRD,GADO,IAEVD,SAAUxH,EAAElM,OAAOH,SAGrB+T,EAAa,2BACRD,GADO,IAEVD,SAAUxH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAIpC,aAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnB+T,EAAa,2BACRD,GADO,IAEVF,SAAUvH,EAAElM,OAAOH,SAGrB+T,EAAa,2BACRD,GADO,IAEVF,SAAUvH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,WAK9C2U,EAAa,WACjBZ,EAAa,CACXF,UAAW,EACXD,UAAW,EACXD,OAAQ,WAyENiB,EAAa,WACjBX,EAAa,CACXJ,UAAW,EACXD,UAAW,EACXD,OAAQ,WAGNkB,EAAc,WAClBnB,EAAc,CACZF,KAAM,MAQJsB,EAAoB,SAACzI,EAAGtV,GACd,aAAVA,IACEsV,EAAElM,OAAOH,MAAQ,EACnBiU,EAAa,2BACRD,GADO,IAEVH,SAAUxH,EAAElM,OAAOH,SAGrBiU,EAAa,2BACRD,GADO,IAEVH,SAAUxH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAIpC,aAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBiU,EAAa,2BACRD,GADO,IAEVJ,SAAUvH,EAAElM,OAAOH,SAGrBiU,EAAa,2BACRD,GADO,IAEVJ,SAAUvH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,WAM9C+U,EAAc,WAClB,IAAMC,EAAe5B,EAAehT,OAChC6U,EAAmB,EACvB7B,EAAe7G,SAAQ,SAACrU,GAEpB6T,OAAO7T,EAAK0b,WAAa7H,OAAO7T,EAAK2b,WACrC9H,OAAO7T,EAAK2b,UAAY,IACxB9H,OAAO7T,EAAK0b,UAAY,KAExBqB,GAAoB,MAEpBA,IAAqBD,IACvBje,EAAMme,eAAN,aAAyB9B,IACzBrc,EAAMvE,gBAIJ2iB,EAAmB,SAACnV,EAAOjJ,EAAO8H,GACtC2V,EAAS3V,GAAI9H,GAASiJ,EACtBqT,EAAkB,aAAImB,KAUxB,OAJAvZ,qBAAU,WACRoY,EAAkB,aAAImB,IACtBnV,GAAW,KACV,CAACmV,IAEF,sBAAKxjB,UAAU,qBAAf,UACE,oBAAImC,MAAO,CAAEoR,UAAW,UAAxB,uBACA,sBAAKvT,UAAU,0BAAf,UACE,sBAAKA,UAAU,iCAAf,UACE,sBAAKA,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,mBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAA+B,IAAxB8T,EAAUF,SAAkB,MAAQE,EAAUF,SACrDhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOqI,EAAkBrI,EAAG,aACtC3O,MAAOqO,OAAO+H,EAAUF,UAAY7H,OAAO+H,EAAUD,UACrDvT,WACEyL,OAAO+H,EAAUF,UAAY7H,OAAO+H,EAAUD,UAAY,kBAAoB,OAGlF,mBAAG1gB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAA+B,IAAxB8T,EAAUD,SAAkB,MAAQC,EAAUD,SACrDjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOqI,EAAkBrI,EAAG,aACtC3O,MAAOqO,OAAO+H,EAAUF,UAAY7H,OAAO+H,EAAUD,UACrDvT,WACEyL,OAAO+H,EAAUF,UAAY7H,OAAO+H,EAAUD,UAAY,kBAAoB,UAKpF,sBAAK7iB,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,mBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAA+B,IAAxBgU,EAAUJ,SAAkB,MAAQI,EAAUJ,SACrDhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOyI,EAAkBzI,EAAG,aACtC3O,MAAOqO,OAAOiI,EAAUJ,UAAY7H,OAAOiI,EAAUH,UACrDvT,WACEyL,OAAOiI,EAAUJ,UAAY7H,OAAOiI,EAAUH,UAAY,kBAAoB,OAGlF,mBAAG1gB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAA+B,IAAxBgU,EAAUH,SAAkB,MAAQG,EAAUH,SACrDjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOyI,EAAkBzI,EAAG,aACtC3O,MAAOqO,OAAOiI,EAAUJ,UAAY7H,OAAOiI,EAAUH,UACrDvT,WACEyL,OAAOiI,EAAUJ,UAAY7H,OAAOiI,EAAUH,UAAY,kBAAoB,aAMtF,qBAAK7iB,UAAU,qCAAf,SACE,eAACokB,GAAA,EAAD,CAAapkB,UAAU,aAAvB,UACE,cAAC8b,GAAA,EAAD,CACEI,SAAc,OAALnW,QAAK,IAALA,OAAA,EAAAA,EAAOse,QAAS,GACzBrV,MAAOjJ,EAAMse,MAAM3O,MAAK,SAACzS,GAAD,OAAYA,EAAO4K,KAAO4U,EAAWD,SAAS,KACtE8B,eAAgB,SAACrhB,GAAD,OAAYA,EAAOH,MAAQ,IAC3CmM,SAAU,SAACC,EAAOqV,GAChB7B,EAAc,2BAAKD,GAAN,IAAkBD,MAAc,OAAR+B,QAAQ,IAARA,OAAA,EAAAA,EAAU1W,KAAM,MACrD0V,EAAe,CAAEf,MAAO+B,KAE1BpI,YAAa,SAACC,GAAD,OACX,cAACtN,GAAA,EAAD,2BAAesN,GAAf,IAAuB9b,MAAM,aAAaoM,MAAO4W,EAAYd,WAGhEc,EAAYd,KACX,cAACgC,GAAA,EAAD,CAAgBriB,MAAO,CAAEC,MAAO,OAAhC,sCACE,UAGR,sBAAKpC,UAAU,yCAAf,UACE,cAAC6B,EAAA,EAAD,CAAQe,QAAQ,YAAYR,MAAM,UAAUL,QAzOhC,WAClBwM,EAAU,2BACLD,GADI,IAEP8U,SAAUrI,OAAOiI,EAAUH,UAAY9H,OAAOiI,EAAUJ,UACxDS,SAAUtI,OAAOiI,EAAUH,UAAY9H,OAAOiI,EAAUJ,UACxDO,SAAUpI,OAAO+H,EAAUF,UAAY7H,OAAO+H,EAAUD,UACxDK,SAAUnI,OAAO+H,EAAUD,UAAY9H,OAAO+H,EAAUF,aAE1DW,EAAe,CACbf,KAA0B,KAApBC,EAAWD,OAGjBM,EAAUF,UAAY,GACtBE,EAAUD,UAAY,GACtB9H,OAAO+H,EAAUD,WAAa9H,OAAO+H,EAAUF,WAC/CI,EAAUJ,UAAY,GACtBI,EAAUH,UAAY,GACtB9H,OAAOiI,EAAUH,WAAa9H,OAAOiI,EAAUJ,WAC3B,KAApBH,EAAWD,MAEXiB,GAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGNsH,GAHK,IAIRN,KAAMC,EAAWD,OAJT,YAAC,eAONQ,GAPK,IAQRR,KAAMC,EAAWD,YAGrBqB,IACAF,IACAC,KAEAd,EAAUF,UAAY,GACtBE,EAAUD,UAAY,GACtB9H,OAAO+H,EAAUD,WAAa9H,OAAO+H,EAAUF,WAC3B,KAApBH,EAAWD,OACa,IAAxBQ,EAAUJ,WACc,IAAxBI,EAAUH,UAEVY,GAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGNsH,GAHK,IAIRN,KAAMC,EAAWD,YAGrBqB,IACAF,KAEAX,EAAUJ,UAAY,GACtBI,EAAUH,UAAY,GACtB9H,OAAOiI,EAAUH,WAAa9H,OAAOiI,EAAUJ,WAC3B,KAApBH,EAAWD,OACa,IAAxBM,EAAUF,WACc,IAAxBE,EAAUD,WAEVY,GAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGNwH,GAHK,IAIRR,KAAMC,EAAWD,YAGrBqB,IACAD,MAsKI,SACE,cAAC,KAAD,MAEF,cAAC/hB,EAAA,EAAD,CAAQe,QAAQ,YAAYR,MAAM,QAAQL,QA1JjC,WACf4hB,IACAC,IACAC,KAuJM,SACE,cAAC,KAAD,YAIN,gCACE,oBAAI1hB,MAAO,CAAEoR,UAAW,UAAxB,sBACEnF,GACAgU,EAAepf,KAAI,SAACyhB,EAAMhP,GAAP,aACjB,sBAAKzV,UAAU,0BAAf,UACE,qBAAKA,UAAU,iCAAf,SACE,sBAAKA,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,SAAwDoe,EAAK9B,SAC7D,cAAC7T,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACNgZ,aAAcmL,EAAK7B,SACnBhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAO8I,EAAiB9I,EAAElM,OAAOH,MAAO,WAAYyG,IAC9D/I,MACEqO,OAAO0J,EAAK7B,UAAY7H,OAAO0J,EAAK5B,WAAa9H,OAAO0J,EAAK7B,UAAY,EAE3EtT,WACEyL,OAAO0J,EAAK7B,UAAY7H,OAAO0J,EAAK5B,WAAa9H,OAAO0J,EAAK7B,UAAY,EACrE,iBACA,OAGR,mBAAGzgB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACNgZ,aAAcmL,EAAK5B,SACnBjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAO8I,EAAiB9I,EAAElM,OAAOH,MAAO,WAAYyG,IAC9D/I,MACEqO,OAAO0J,EAAK7B,UAAY7H,OAAO0J,EAAK5B,WAAa9H,OAAO0J,EAAK5B,UAAY,EAE3EvT,WACEyL,OAAO0J,EAAK7B,UAAY7H,OAAO0J,EAAK5B,WAAa9H,OAAO0J,EAAK5B,UAAY,EACrE,kBACA,YAKZ,qBAAK7iB,UAAU,0CAAf,SACE,sBACEmC,MAAO,CACLsE,QAAS,OACTO,eAAgB,eAChBlK,MAAO,QAJX,UAOE,cAACsnB,GAAA,EAAD,CAAajiB,MAAO,CAAErF,MAAO,SAA7B,SACE,cAACgS,GAAA,EAAD,CACE4V,QAAQ,2BACR7W,GAAG,qBACHyL,aAAY,OACVvT,QADU,IACVA,GADU,UACVA,EAAOse,MAAM3O,MAAK,SAACiP,GAAD,OAAUA,EAAK9W,KAAOkN,OAAO0J,EAAKjC,gBAD1C,aACV,EAA4D1f,KAE9DxC,MAAM,aACNub,UAAQ,EACR5M,SAAU,SAACoM,GAAD,OAAO8I,EAAiB9I,EAAElM,OAAOH,MAAO,OAAQyG,QAG9D,cAAC5T,EAAA,EAAD,CAAQe,QAAQ,YAAYb,QAAS,kBAzK/B8L,EAyKkD4H,EAxKtEpH,GAAW,QACXoV,EAAY,aAAID,EAAS9O,QAAO,SAACxN,EAAMuO,GAAP,OAAiBA,IAAU5H,OAFxC,IAACA,GAyK0DzL,MAAM,QAAtE,SACE,cAAC,KAAD,aA9DsCqT,SAqEpD,qBAAKtT,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,SAAUsD,UAAW,QAApE,SAC6B,IAA1B8X,EAAehT,OACd,cAACvN,EAAA,EAAD,CACEe,QAAQ,YACRb,QAASgiB,EACT5hB,MAAO,CAAE0R,SAAU,QACnBzR,MAAM,QAJR,mBASA,eAACP,EAAA,EAAD,CAAQe,QAAQ,YAAYb,QAASgiB,EAArC,UACE,cAAC,KAAD,IADF,6BCpYK,SAASa,GAAmB7e,GACzC,MAA8Bmc,IAAM/gB,UAAS,GAA7C,mBAAOiN,EAAP,KAAgBC,EAAhB,KACA,EAA4C6T,IAAM/gB,SAAN,aAAmB4E,EAAMoc,cAArE,mBAAOC,EAAP,KAAuBC,EAAvB,KACA,EAAoCH,IAAM/gB,SAAS,CACjDmhB,UAAW,EACXC,QAAS,GACTC,KAAM,KAHR,mBAAOC,EAAP,KAAmBC,EAAnB,KAMA,EAAkDR,IAAM/gB,SAAS,CAC/DwhB,OAAQ,QACRC,UAAW,EACXC,UAAW,IAHb,mBAAOgC,EAAP,KAA0BC,EAA1B,KAKA,EAAkD5C,IAAM/gB,SAAS,CAC/DwhB,OAAQ,QACRC,UAAW,EACXC,UAAW,IAHb,mBAAOkC,EAAP,KAA0BC,EAA1B,KAKA,EAAgD9C,IAAM/gB,SAAS,CAC7DwhB,OAAQ,QACRC,UAAW,EACXC,UAAW,IAHb,mBAAOoC,EAAP,KAAyBC,EAAzB,KAKA,EAAgDhD,IAAM/gB,SAAS,CAC7DwhB,OAAQ,QACRC,UAAW,EACXC,UAAW,IAHb,mBAAOsC,EAAP,KAAyBC,EAAzB,KAKA,EAAkDlD,IAAM/gB,SAAS,CAC/DwhB,OAAQ,QACRC,UAAW,EACXC,UAAW,IAHb,mBAAOwC,EAAP,KAA0BC,EAA1B,KAKA,EAAkDpD,IAAM/gB,SAAS,CAC/DwhB,OAAQ,QACRC,UAAW,EACXC,UAAW,IAHb,mBAAO0C,EAAP,KAA0BC,EAA1B,KAKA,EAA4CtD,IAAM/gB,SAAS,CACzD+hB,UAAU,EACVC,UAAU,EACVC,UAAU,EACVC,UAAU,IAJZ,mBAAOoC,EAAP,KAAuBC,EAAvB,KAOA,EAA0CxD,IAAM/gB,SAAS,CACvD+hB,UAAU,EACVC,UAAU,EACVC,UAAU,EACVC,UAAU,IAJZ,mBAAOsC,EAAP,KAAsBC,EAAtB,KAMA,EAA4C1D,IAAM/gB,SAAS,CACzD+hB,UAAU,EACVC,UAAU,EACVC,UAAU,EACVC,UAAU,IAJZ,mBAAOwC,EAAP,KAAuBC,GAAvB,KAMA,GAAsC5D,IAAM/gB,SAAS,CACnDqhB,MAAM,IADR,qBAAOc,GAAP,MAAoBC,GAApB,MAGA,GAAgCrB,IAAM/gB,SAAN,aAAmB4E,EAAMoc,cAAzD,qBAAOqB,GAAP,MAAiBC,GAAjB,MACMC,GAAoB,SAACrI,EAAGtV,GACd,cAAVA,IACEsV,EAAElM,OAAOH,MAAQ,EACnB8V,EAAqB,2BAChBD,GADe,IAElBhC,SAAUxH,EAAElM,OAAOH,SAGrB8V,EAAqB,2BAChBD,GADe,IAElBhC,SAAUxH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAIpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnB8V,EAAqB,2BAChBD,GADe,IAElBjC,SAAUvH,EAAElM,OAAOH,SAGrB8V,EAAqB,2BAChBD,GADe,IAElBjC,SAAUvH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAKpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBkW,EAAoB,2BACfD,GADc,IAEjBpC,SAAUxH,EAAElM,OAAOH,SAGrBkW,EAAoB,2BACfD,GADc,IAEjBpC,SAAUxH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAIpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBkW,EAAoB,2BACfD,GADc,IAEjBrC,SAAUvH,EAAElM,OAAOH,SAGrBkW,EAAoB,2BACfD,GADc,IAEjBrC,SAAUvH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAIpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBsW,EAAqB,2BAChBD,GADe,IAElBxC,SAAUxH,EAAElM,OAAOH,SAGrBsW,EAAqB,2BAChBD,GADe,IAElBxC,SAAUxH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAIpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBsW,EAAqB,2BAChBD,GADe,IAElBzC,SAAUvH,EAAElM,OAAOH,SAGrBsW,EAAqB,2BAChBD,GADe,IAElBzC,SAAUvH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,WAM9C8U,GAAoB,SAACzI,EAAGtV,GACd,cAAVA,IACEsV,EAAElM,OAAOH,MAAQ,EACnBgW,EAAqB,2BAChBD,GADe,IAElBlC,SAAUxH,EAAElM,OAAOH,SAGrBgW,EAAqB,2BAChBD,GADe,IAElBlC,SAAUxH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAIpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBgW,EAAqB,2BAChBD,GADe,IAElBnC,SAAUvH,EAAElM,OAAOH,SAGrBgW,EAAqB,2BAChBD,GADe,IAElBnC,SAAUvH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAKpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBoW,EAAoB,2BACfD,GADc,IAEjBtC,SAAUxH,EAAElM,OAAOH,SAGrBoW,EAAoB,2BACfD,GADc,IAEjBtC,SAAUxH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAIpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBoW,EAAoB,2BACfD,GADc,IAEjBvC,SAAUvH,EAAElM,OAAOH,SAGrBoW,EAAoB,2BACfD,GADc,IAEjBvC,SAAUvH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAKpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBwW,EAAqB,2BAChBD,GADe,IAElB1C,SAAUxH,EAAElM,OAAOH,SAGrBwW,EAAqB,2BAChBD,GADe,IAElB1C,SAAUxH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,UAIpC,cAAVjJ,IACEsV,EAAElM,OAAOH,MAAQ,EACnBwW,EAAqB,2BAChBD,GADe,IAElB3C,SAAUvH,EAAElM,OAAOH,SAGrBwW,EAAqB,2BAChBD,GADe,IAElB3C,SAAUvH,EAAElM,OAAOH,MAAQ,EAAI,EAAIqM,EAAElM,OAAOH,WAMpD/E,qBAAU,cAAU,CAACuZ,GAAUpB,IAC/B,IAmPM2D,GAAW,WArBfjB,EAAqB,CACnBjC,UAAW,EACXD,UAAW,EACXD,OAAQ,UAEVuC,EAAoB,CAClBrC,UAAW,EACXD,UAAW,EACXD,OAAQ,UAEV2C,EAAqB,CACnBzC,UAAW,EACXD,UAAW,EACXD,OAAQ,UA9BVqC,EAAqB,CACnBnC,UAAW,EACXD,UAAW,EACXD,OAAQ,UAEVyC,EAAoB,CAClBvC,UAAW,EACXD,UAAW,EACXD,OAAQ,UAEV6C,EAAqB,CACnB3C,UAAW,EACXD,UAAW,EACXD,OAAQ,UAqBVD,EAAc,CACZF,KAAM,MASJuB,GAAc,WAClB,IAAMC,EAAe5B,EAAehT,OAChC6U,EAAmB,EACvB7B,EAAe7G,SAAQ,SAACrU,GAEpB6T,OAAO7T,EAAK0b,WAAa7H,OAAO7T,EAAK2b,WACrC9H,OAAO7T,EAAK0b,WAAa,GACzB7H,OAAO7T,EAAK2b,WAAa,IAEzBoB,GAAoB,MAEpBA,IAAqBD,IACvBje,EAAMme,eAAN,aAAyB9B,IACzBrc,EAAMvE,gBAIJ2iB,GAAmB,SAACnV,EAAOjJ,EAAO8H,GACtC2V,GAAS3V,GAAI9H,GAASiJ,EACtBqT,EAAkB,aAAImB,MAWxB,OAJAvZ,qBAAU,WACRoY,EAAkB,aAAImB,KACtBnV,GAAW,KACV,CAACmV,KAEF,sBAAKxjB,UAAU,qBAAf,UACE,oBAAImC,MAAO,CAAEoR,UAAW,UAAxB,2BACA,sBAAKvT,UAAU,0BAAf,UACE,sBACEA,UAAU,iCACVmC,MAAO,CAAEsE,QAAS,OAAQ0D,cAAe,UAF3C,UAIE,sBAAKnK,UAAU,iCAAf,UACE,mBAAGmC,MAAO,CAAE0R,SAAU,OAAQnM,WAAY,OAA1C,sBACA,sBAAK1H,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,mBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAuC,IAAhC6V,EAAkBjC,SAAkB,MAAQiC,EAAkBjC,SACrEhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOqI,GAAkBrI,EAAG,cACtC3O,MAAOqO,OAAO8J,EAAkBjC,UAAY7H,OAAO8J,EAAkBhC,UACrEvT,WACEyL,OAAO8J,EAAkBjC,UAAY7H,OAAO8J,EAAkBhC,UAC1D,kBACA,OAGR,mBAAG1gB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAuC,IAAhC6V,EAAkBhC,SAAkB,MAAQgC,EAAkBhC,SACrEjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOqI,GAAkBrI,EAAG,cACtC3O,MAAOqO,OAAO8J,EAAkBjC,UAAY7H,OAAO8J,EAAkBhC,UACrEvT,WACEyL,OAAO8J,EAAkBjC,UAAY7H,OAAO8J,EAAkBhC,UAC1D,kBACA,UAIV,sBAAK7iB,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,mBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAuC,IAAhC+V,EAAkBnC,SAAkB,MAAQmC,EAAkBnC,SACrEhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOyI,GAAkBzI,EAAG,cACtC3O,MAAOqO,OAAOgK,EAAkBnC,UAAY7H,OAAOgK,EAAkBlC,UACrEvT,WACEyL,OAAOgK,EAAkBnC,UAAY7H,OAAOgK,EAAkBlC,UAC1D,kBACA,OAGR,mBAAG1gB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAuC,IAAhC+V,EAAkBlC,SAAkB,MAAQkC,EAAkBlC,SACrEjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOyI,GAAkBzI,EAAG,cACtC3O,MAAOqO,OAAOgK,EAAkBnC,UAAY7H,OAAOgK,EAAkBlC,UACrEvT,WACEyL,OAAOgK,EAAkBnC,UAAY7H,OAAOgK,EAAkBlC,UAC1D,kBACA,aAKZ,sBAAK7iB,UAAU,iCAAf,UACE,mBAAGmC,MAAO,CAAE0R,SAAU,OAAQnM,WAAY,MAAO4C,UAAW,QAA5D,qBACA,sBAAKtK,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,mBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAsC,IAA/BiW,EAAiBrC,SAAkB,MAAQqC,EAAiBrC,SACnEhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOqI,GAAkBrI,EAAG,cACtC3O,MAAOqO,OAAOkK,EAAiBrC,UAAY7H,OAAOkK,EAAiBpC,UACnEvT,WACEyL,OAAOkK,EAAiBrC,UAAY7H,OAAOkK,EAAiBpC,UACxD,kBACA,OAGR,mBAAG1gB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAsC,IAA/BiW,EAAiBpC,SAAkB,MAAQoC,EAAiBpC,SACnEjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOqI,GAAkBrI,EAAG,cACtC3O,MAAOqO,OAAOkK,EAAiBrC,UAAY7H,OAAOkK,EAAiBpC,UACnEvT,WACEyL,OAAOkK,EAAiBrC,UAAY7H,OAAOkK,EAAiBpC,UACxD,kBACA,UAIV,sBAAK7iB,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,mBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAsC,IAA/BmW,EAAiBvC,SAAkB,MAAQuC,EAAiBvC,SACnEhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOyI,GAAkBzI,EAAG,cACtC3O,MAAOqO,OAAOoK,EAAiBvC,UAAY7H,OAAOoK,EAAiBtC,UACnEvT,WACEyL,OAAOoK,EAAiBvC,UAAY7H,OAAOoK,EAAiBtC,UACxD,kBACA,OAGR,mBAAG1gB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAsC,IAA/BmW,EAAiBtC,SAAkB,MAAQsC,EAAiBtC,SACnEjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOyI,GAAkBzI,EAAG,cACtC3O,MAAOqO,OAAOoK,EAAiBvC,UAAY7H,OAAOoK,EAAiBtC,UACnEvT,WACEyL,OAAOoK,EAAiBvC,UAAY7H,OAAOoK,EAAiBtC,UACxD,kBACA,aAKZ,sBAAK7iB,UAAU,iCAAf,UACE,mBAAGmC,MAAO,CAAE0R,SAAU,OAAQnM,WAAY,MAAO4C,UAAW,QAA5D,sBAEA,sBAAKtK,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,mBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAuC,IAAhCqW,EAAkBzC,SAAkB,MAAQyC,EAAkBzC,SACrEhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOqI,GAAkBrI,EAAG,cACtC3O,MAAOqO,OAAOsK,EAAkBzC,UAAY7H,OAAOsK,EAAkBxC,UACrEvT,WACEyL,OAAOsK,EAAkBzC,UAAY7H,OAAOsK,EAAkBxC,UAC1D,kBACA,OAGR,mBAAG1gB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAuC,IAAhCqW,EAAkBxC,SAAkB,MAAQwC,EAAkBxC,SACrEjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOqI,GAAkBrI,EAAG,cACtC3O,MAAOqO,OAAOsK,EAAkBzC,UAAY7H,OAAOsK,EAAkBxC,UACrEvT,WACEyL,OAAOsK,EAAkBzC,UAAY7H,OAAOsK,EAAkBxC,UAC1D,kBACA,UAIV,sBAAK7iB,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,mBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAuC,IAAhCuW,EAAkB3C,SAAkB,MAAQ2C,EAAkB3C,SACrEhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOyI,GAAkBzI,EAAG,cACtC3O,MAAOqO,OAAOwK,EAAkB3C,UAAY7H,OAAOwK,EAAkB1C,UACrEvT,WACEyL,OAAOwK,EAAkB3C,UAAY7H,OAAOwK,EAAkB1C,UAC1D,kBACA,OAGR,mBAAG1gB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACN0O,OAAuC,IAAhCuW,EAAkB1C,SAAkB,MAAQ0C,EAAkB1C,SACrEjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAOyI,GAAkBzI,EAAG,cACtC3O,MAAOqO,OAAOwK,EAAkB3C,UAAY7H,OAAOwK,EAAkB1C,UACrEvT,WACEyL,OAAOwK,EAAkB3C,UAAY7H,OAAOwK,EAAkB1C,UAC1D,kBACA,gBAMd,sBAAK7iB,UAAU,2CAAf,UACE,eAACokB,GAAA,EAAD,CAAapkB,UAAU,aAAvB,UACE,cAAC8b,GAAA,EAAD,CACEI,SAAc,OAALnW,QAAK,IAALA,OAAA,EAAAA,EAAOigB,QAAS,GACzBhX,MAAOjJ,EAAMigB,MAAMtQ,MAAK,SAACzS,GAAD,OAAYA,EAAO4K,KAAO4U,EAAWD,SAAS,KACtE8B,eAAgB,SAACrhB,GAAD,OAAYA,EAAOH,MAAQ,IAC3CmM,SAAU,SAACC,EAAOqV,GAChB7B,EAAc,2BAAKD,GAAN,IAAkBD,MAAc,OAAR+B,QAAQ,IAARA,OAAA,EAAAA,EAAU1W,KAAM,MACrD0V,GAAe,CAAEf,MAAO+B,KAE1BpI,YAAa,SAACC,GAAD,OACX,cAACtN,GAAA,EAAD,2BAAesN,GAAf,IAAuB9b,MAAM,aAAaoM,MAAO4W,GAAYd,WAGhEc,GAAYd,KACX,cAACgC,GAAA,EAAD,CAAgBriB,MAAO,CAAEC,MAAO,OAAhC,sCACE,QAGN,sBACEpC,UAAU,+CACVmC,MAAO,CAAEkD,UAAW,QAFtB,UAIE,cAACxD,EAAA,EAAD,CAAQe,QAAQ,YAAYR,MAAM,UAAUL,QA7gBlC,WAClB2jB,EAAkB,2BACbD,GADY,IAEfrC,SAAUrI,OAAOgK,EAAkBlC,UAAY9H,OAAOgK,EAAkBnC,UACxES,SAAUtI,OAAOgK,EAAkBlC,UAAY9H,OAAOgK,EAAkBnC,UACxEO,SAAUpI,OAAO8J,EAAkBjC,UAAY7H,OAAO8J,EAAkBhC,UACxEK,SAAUnI,OAAO8J,EAAkBhC,UAAY9H,OAAO8J,EAAkBjC,aAE1EgD,EAAiB,2BACZD,GADW,IAEdvC,SAAUrI,OAAOoK,EAAiBtC,UAAY9H,OAAOoK,EAAiBvC,UACtES,SAAUtI,OAAOoK,EAAiBtC,UAAY9H,OAAOoK,EAAiBvC,UACtEO,SAAUpI,OAAOkK,EAAiBrC,UAAY7H,OAAOkK,EAAiBpC,UACtEK,SAAUnI,OAAOkK,EAAiBpC,UAAY9H,OAAOkK,EAAiBrC,aAGxEW,GAAe,CACbf,KAA0B,KAApBC,EAAWD,OAGnBsD,GAAkB,2BACbD,GADY,IAEfzC,SAAUrI,OAAOwK,EAAkB1C,UAAY9H,OAAOwK,EAAkB3C,UACxES,SAAUtI,OAAOwK,EAAkB1C,UAAY9H,OAAOwK,EAAkB3C,UACxEO,SAAUpI,OAAOsK,EAAkBzC,UAAY7H,OAAOsK,EAAkBxC,UACxEK,SAAUnI,OAAOsK,EAAkBxC,UAAY9H,OAAOsK,EAAkBzC,aAGxEiC,EAAkBjC,UAAY,GAC9BiC,EAAkBhC,UAAY,GAC9B9H,OAAO8J,EAAkBhC,WAAa9H,OAAO8J,EAAkBjC,WAC/DmC,EAAkBnC,UAAY,GAC9BmC,EAAkBlC,UAAY,GAC9B9H,OAAOgK,EAAkBlC,WAAa9H,OAAOgK,EAAkBnC,WAC3C,KAApBH,EAAWD,MAEXiB,IAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGNqJ,GAHK,IAIRtC,QAAS,IACTC,KAAMC,EAAWD,OALT,YAAC,eAQNuC,GARK,IASRxC,QAAS,IACTC,KAAMC,EAAWD,YAGrBuD,MAEAlB,EAAkBjC,UAAY,GAC9BiC,EAAkBhC,UAAY,GAC9B9H,OAAO8J,EAAkBhC,WAAa9H,OAAO8J,EAAkBjC,WAC3C,KAApBH,EAAWD,OACqB,IAAhCuC,EAAkBnC,WACc,IAAhCmC,EAAkBlC,UAElBY,IAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGNqJ,GAHK,IAIRtC,QAAS,IACTC,KAAMC,EAAWD,YAGrBuD,MAEAhB,EAAkBnC,UAAY,GAC9BmC,EAAkBlC,UAAY,GAC9B9H,OAAOgK,EAAkBlC,WAAa9H,OAAOgK,EAAkBnC,WAC3C,KAApBH,EAAWD,OACqB,IAAhCqC,EAAkBjC,WACc,IAAhCiC,EAAkBhC,WAElBY,IAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGNuJ,GAHK,IAIRxC,QAAS,IACTC,KAAMC,EAAWD,YAGrBuD,MAIAd,EAAiBrC,UAAY,GAC7BqC,EAAiBpC,UAAY,GAC7B9H,OAAOkK,EAAiBpC,WAAa9H,OAAOkK,EAAiBrC,WAC7DuC,EAAiBvC,UAAY,GAC7BuC,EAAiBtC,UAAY,GAC7B9H,OAAOoK,EAAiBtC,WAAa9H,OAAOoK,EAAiBvC,WACzC,KAApBH,EAAWD,MAEXiB,IAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGNyJ,GAHK,IAIR1C,QAAS,IACTC,KAAMC,EAAWD,OALT,YAAC,eAQN2C,GARK,IASR5C,QAAS,IACTC,KAAMC,EAAWD,YAGrBuD,MAEAd,EAAiBrC,UAAY,GAC7BqC,EAAiBpC,UAAY,GAC7B9H,OAAOkK,EAAiBpC,WAAa9H,OAAOkK,EAAiBrC,WACzC,KAApBH,EAAWD,OACoB,IAA/B2C,EAAiBvC,WACc,IAA/BuC,EAAiBtC,UAEjBY,IAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGNyJ,GAHK,IAIR1C,QAAS,IACTC,KAAMC,EAAWD,YAGrBuD,MAEAZ,EAAiBvC,UAAY,GAC7BuC,EAAiBtC,UAAY,GAC7B9H,OAAOoK,EAAiBtC,WAAa9H,OAAOoK,EAAiBvC,WACzC,KAApBH,EAAWD,OACoB,IAA/ByC,EAAiBrC,WACc,IAA/BqC,EAAiBpC,WAEjBY,IAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGN2J,GAHK,IAIR5C,QAAS,IACTC,KAAMC,EAAWD,YAGrBuD,MAIAV,EAAkBzC,UAAY,GAC9ByC,EAAkBxC,UAAY,GAC9B9H,OAAOsK,EAAkBxC,WAAa9H,OAAOsK,EAAkBzC,WAC/D2C,EAAkB3C,UAAY,GAC9B2C,EAAkB1C,UAAY,GAC9B9H,OAAOwK,EAAkB1C,WAAa9H,OAAOwK,EAAkB3C,WAC3C,KAApBH,EAAWD,MAEXiB,IAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGN6J,GAHK,IAIR9C,QAAS,IACTC,KAAMC,EAAWD,OALT,YAAC,eAQN+C,GARK,IASRhD,QAAS,IACTC,KAAMC,EAAWD,YAGrBuD,MAEAV,EAAkBzC,UAAY,GAC9ByC,EAAkBxC,UAAY,GAC9B9H,OAAOsK,EAAkBxC,WAAa9H,OAAOsK,EAAkBzC,WAC3C,KAApBH,EAAWD,OACqB,IAAhC+C,EAAkB3C,WACc,IAAhC2C,EAAkB1C,UAElBY,IAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGN6J,GAHK,IAIR9C,QAAS,IACTC,KAAMC,EAAWD,YAGrBuD,MAEAR,EAAkB3C,UAAY,GAC9B2C,EAAkB1C,UAAY,GAC9B9H,OAAOwK,EAAkB1C,WAAa9H,OAAOwK,EAAkB3C,WAC3C,KAApBH,EAAWD,OACqB,IAAhC6C,EAAkBzC,WACc,IAAhCyC,EAAkBxC,WAElBY,IAAY,SAACjI,GAAD,6BACPA,GADO,aAAC,eAGN+J,GAHK,IAIRhD,QAAS,IACTC,KAAMC,EAAWD,YAGrBuD,OAoUM,SACE,cAAC,KAAD,MAEF,cAAClkB,EAAA,EAAD,CAAQe,QAAQ,YAAYR,MAAM,QAAQL,QAASgkB,GAAnD,SACE,cAAC,KAAD,eAKR,gCACE,oBAAI5jB,MAAO,CAAEoR,UAAW,UAAxB,sBACEnF,GACAgU,EAAepf,KAAI,SAACyhB,EAAMhP,GAAP,eACjB,sBAAKzV,UAAU,0BAAf,UACE,qBAAKA,UAAU,iCAAf,SACE,sBAAKA,UAAU,oCAAf,UACE,mBAAGmC,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,QAA9C,SAAyDoe,EAAK9B,SAC9D,cAAC7T,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACNgZ,aAAcmL,EAAK7B,SACnBhgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAO8I,GAAiB9I,EAAElM,OAAOH,MAAO,WAAYyG,IAC9D/I,MACEqO,OAAO0J,EAAK7B,UAAY7H,OAAO0J,EAAK5B,WAAa9H,OAAO0J,EAAK7B,UAAY,EAE3EtT,WACEyL,OAAO0J,EAAK7B,UAAY7H,OAAO0J,EAAK5B,WAAa9H,OAAO0J,EAAK7B,UAAY,EACrE,kBACA,OAGR,mBAAGzgB,MAAO,CAAEyI,WAAY,OAAQvE,aAAc,OAA9C,gBACA,cAACyI,GAAA,EAAD,CACEjB,GAAG,iBACH1L,MAAO,CAAErF,MAAO,QAChBwD,MAAM,MACNgZ,aAAcmL,EAAK5B,SACnBjgB,QAAQ,WACRmM,KAAK,SACLE,SAAU,SAACoM,GAAD,OAAO8I,GAAiB9I,EAAElM,OAAOH,MAAO,WAAYyG,IAC9D/I,MACEqO,OAAO0J,EAAK7B,UAAY7H,OAAO0J,EAAK5B,WAAa9H,OAAO0J,EAAK5B,UAAY,EAE3EvT,WACEyL,OAAO0J,EAAK7B,UAAY7H,OAAO0J,EAAK5B,WAAa9H,OAAO0J,EAAK7B,UAAY,EACrE,kBACA,YAKZ,sBAAK5iB,UAAU,2CAAf,UACE,cAACokB,GAAA,EAAD,CAAapkB,UAAU,aAAamC,MAAO,CAAE0M,SAAU,SAAvD,SACE,cAACC,GAAA,EAAD,CACE4V,QAAQ,2BACR7W,GAAG,qBACHyL,aAAY,OACVvT,QADU,IACVA,GADU,UACVA,EAAOwc,QAAQ7M,MAAK,SAACpC,GAAD,OAAWA,EAAMzF,KAAOkN,OAAO0J,EAAKlC,mBAD9C,aACV,EAAmEzf,KAErExC,MAAM,eACNub,UAAQ,EACR5M,SAAU,SAACoM,GAAD,OAAO8I,GAAiB9I,EAAElM,OAAOH,MAAO,UAAWyG,QAGjE,cAAC2O,GAAA,EAAD,CAAapkB,UAAU,aAAamC,MAAO,CAAE0M,SAAU,SAAvD,SACE,cAACC,GAAA,EAAD,CACE4V,QAAQ,2BACRpL,aAAY,OAAEvT,QAAF,IAAEA,GAAF,UAAEA,EAAOigB,MAAMtQ,MAAK,SAACuQ,GAAD,OAAUA,EAAKpY,KAAOkN,OAAO0J,EAAKjC,gBAAtD,aAAE,EAA4D1f,KAC1ExC,MAAM,eACNub,UAAQ,EACR5M,SAAU,SAACoM,GAAD,OAAO8I,GAAiB9I,EAAElM,OAAOH,MAAO,OAAQyG,QAG9D,cAAC5T,EAAA,EAAD,CAAQe,QAAQ,YAAYb,QAAS,kBA1U7B8L,EA0UgD4H,EAzUpEpH,GAAW,QACXoV,GAAY,aAAID,GAAS9O,QAAO,SAACxN,EAAMuO,GAAP,OAAiBA,IAAU5H,OAFxC,IAACA,GA0UwDzL,MAAM,QAAtE,SACE,cAAC,KAAD,WAhEwCqT,SAsEpD,qBAAKtT,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,SAAUsD,UAAW,QAApE,SAC6B,IAA1B8X,EAAehT,OACd,cAACvN,EAAA,EAAD,CACEe,QAAQ,YACRb,QAASgiB,GACT5hB,MAAO,CAAE0R,SAAU,QACnBzR,MAAM,QAJR,mBASA,eAACP,EAAA,EAAD,CAAQe,QAAQ,YAAYb,QAASgiB,GAArC,UACE,cAAC,KAAD,IADF,6BC31BH,SAASmC,GAAWC,GACzB,OAAKA,EAAE5V,OACD,GAAN,cAAU4V,QAAV,IAAUA,OAAV,EAAUA,EAAGzK,MAAM,EAAG,IAAtB,aAA8B,OAADyK,QAAC,IAADA,OAAA,EAAAA,EAAG/W,QAAS,GAAK,OAAS,KADjC,GCEjB,IAAMgX,GAAsB,uCAAG,WAAOlY,GAAP,qBAAAxM,EAAA,sEACbyK,GAAS,GAAD,OAAIc,uCAAJ,oBAA4D,CACzFC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnBkZ,aAAY,UAAEnY,EAAOoY,iBAAT,aAAE,EAAkB/V,OAChCgW,aAAY,UAAErY,EAAOsY,mBAAT,aAAE,EAAoBjW,OAClCkW,0BAAyB,UAAEvY,EAAOsY,mBAAT,aAAE,EAAoBjW,WAPf,cAC9B1D,EAD8B,yBAU7BA,GAV6B,2CAAH,sDAatB6Z,GAAoB,uCAAG,WAAO7Y,GAAP,eAAAnM,EAAA,sEACXyK,GAAS,GAAD,OAAIc,uCAAJ,oBAAoDY,EAApD,SAA+D,CAC5FX,OAAQ,QAFwB,cAC5BL,EAD4B,yBAI3BA,GAJ2B,2CAAH,sDAOpB8Z,GAAwB,uCAAG,4BAAAjlB,EAAA,sEACfyK,GAAS,GAAD,OAAIc,uCAAJ,kBAA0D,CACvFC,OAAQ,QAF4B,cAChCL,EADgC,yBAI/BA,GAJ+B,2CAAH,qDCpBxB+Z,GAAmB,uCAAG,WAAO/Y,GAAP,eAAAnM,EAAA,sEACVyK,GAAS,GAAD,OAAIc,uCAAJ,kBAAkDY,GAAM,CACrFX,OAAQ,QAFuB,cAC3BL,EAD2B,yBAI1BA,GAJ0B,2CAAH,sDAOnBga,GAAuB,uCAAG,0CAAAnlB,EAAA,6DAAOolB,EAAP,+BAAc,GAAd,SACd3a,GAAS,GAAD,OAC1Bc,uCAD0B,8BACgC6Z,GAC7D,CACE5Z,OAAQ,QAJyB,cAC/BL,EAD+B,yBAO9BA,GAP8B,2CAAH,qDAUvBka,GAAmC,uCAAG,WAAOlZ,EAAImZ,GAAX,eAAAtlB,EAAA,sEAC1ByK,GAAS,GAAD,OAC1Bc,uCAD0B,yBAC2BY,EAD3B,YACiCmZ,GAC9D,CACE9Z,OAAQ,MACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnB8Z,cAAc,MAP6B,cAC3Cpa,EAD2C,yBAW1CA,GAX0C,2CAAH,wDAcnCqa,GAAoB,uCAAG,WAAOrZ,EAAIsZ,GAAX,eAAAzlB,EAAA,sEACXyK,GAAS,GAAD,OAC1Bc,uCAD0B,yBAC2BY,EAD3B,YACiCsZ,EAAU,GAAGtZ,IAC3E,CACEX,OAAQ,MACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnB8Z,cAAc,MAPc,cAC5Bpa,EAD4B,yBAW3BA,GAX2B,2CAAH,wDAcpBua,GAAgC,uCAAG,WAAOvZ,EAAI5B,GAAX,eAAAvK,EAAA,sEACvByK,GAAS,GAAD,OAAIc,uCAAJ,0BAA0DY,GAAM,CAC7F5B,YAF4C,cACxCY,EADwC,yBAIvCA,GAJuC,2CAAH,wDAOhCwa,GAAiB,uCAAG,4BAAA3lB,EAAA,sEACRyK,GAAS,GAAD,OAAIc,uCAAJ,gBAAwD,CACrFC,OAAQ,QAFqB,cACzBL,EADyB,yBAIxBA,GAJwB,2CAAH,qDAOjBya,GAAqB,uCAAG,WACnCC,EACAC,EACA1J,EACA2J,GAJmC,eAAA/lB,EAAA,sEAMZyK,GAAS,GAAD,OAC1Bc,uCAD0B,uBACyBsa,EADzB,iBACkDC,EADlD,iBACoE1J,EADpE,mBAC2F2J,GACxH,CACEva,OAAQ,QATuB,cAM7BL,EAN6B,yBAY5BA,GAZ4B,2CAAH,4DAerB6a,GAA6B,uCAAG,WAAOC,EAAW/J,EAAaC,GAA/B,eAAAnc,EAAA,sEACpByK,GAAS,GAAD,OAC1Bc,uCAD0B,0BAC4B0a,EAD5B,iBAC8C/J,EAD9C,iBACkEC,GAC/F,CACE3Q,OAAQ,QAJ+B,cACrCL,EADqC,yBAOpCA,GAPoC,2CAAH,0DAU7B+a,GAA6B,uCAAG,WAAO/M,GAAP,eAAAnZ,EAAA,sEACpByK,GAAS,GAAD,OAAIc,uCAAJ,qBAA6D,CAC1FC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU0N,KAJoB,cACrChO,EADqC,yBAMpCA,GANoC,2CAAH,sDAS7Bgb,GAAmB,uCAAG,WAAOhN,GAAP,eAAAnZ,EAAA,sEACVyK,GAAS,GAAD,OAAIc,uCAAJ,UAAkD,CAC/EC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU0N,KAJU,cAC3BhO,EAD2B,yBAM1BA,GAN0B,2CAAH,sDASnBib,GAAqB,uCAAG,WAAOC,GAAP,+BAAArmB,EAAA,6DAAiBqN,EAAjB,+BAAwB,OACrDiZ,EAAWjZ,EAAKtR,SAAS,SAAW,QAAU,OADjB,SAEZ0O,GAAS,GAAD,OAAIc,uCAAJ,UAAkD,CAC/EC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnB4B,KAAMiZ,EACN/K,UAAS,OAAE8K,QAAF,IAAEA,OAAF,EAAEA,EAAUxX,WAPU,cAE7B1D,EAF6B,yBAU5BA,GAV4B,2CAAH,sDCzG3B,SAASob,GAAM9B,GAIpB,MADE,oFACY3gB,KAAK2gB,GCqErB,IAAMpI,GAAa,CACjB,CAAElQ,GAAI,cAAevN,MAAO,aAAcuY,YAAY,GACtD,CAAEhL,GAAI,gBAAiBvN,MAAO,eAAgBuY,YAAY,GAC1D,CAAEhL,GAAI,SAAUvN,MAAO,eAAgBuY,YAAY,IAErD,SAASqP,GAAqBxmB,EAAGymB,EAAG3P,GAClC,OAAI2P,EAAE3P,GAAW9W,EAAE8W,IACT,EAEN2P,EAAE3P,GAAW9W,EAAE8W,GACV,EAEF,EAyBT,SAAS4P,GAAWnmB,GAClB,OAAO,IAAI0K,SAAQ,SAAC0b,GAClB,IAAMC,EAASC,SAASC,cAAc,UACtCF,EAAOrmB,IAAMA,EACbqmB,EAAOG,OAAS,WACdJ,GAAQ,IAEVC,EAAOI,QAAU,WACfL,GAAQ,IAEVE,SAAS1N,KAAK8N,YAAYL,MAIf,SAASM,KAAY,IAAD,YACjC,EAAwBznB,mBAAS,GAAjC,mBAAO0c,EAAP,KAAaI,EAAb,KACA,EAAkC9c,mBAAS,GAA3C,mBAAO+c,EAAP,KAAkBC,EAAlB,KACA,EAA0Bhd,mBAAS,OAAnC,mBAAOoX,EAAP,KAAc6F,EAAd,KACA,EAAgCjd,mBAAS,IAAzC,mBAAOkd,EAAP,KAAiBC,EAAjB,KACA,EAA8Bnd,mBAAS,QAAvC,mBAAOqX,EAAP,KAAgB+F,EAAhB,KACA,EAAqBpd,mBAAS,IAAvBkY,EAAP,oBACA,EAAsClY,mBAAS,IAA/C,mBAAOyc,EAAP,KAAoBa,EAApB,KACMoK,EAAW,IAAIC,SACfnoB,EAAWC,KAAKC,MAAMC,OAAOC,aAAaC,QAAQ,aAClD+nB,EAASnoB,KAAKC,MAAMC,OAAOC,aAAaC,QAAQ,WACtD,EAA4BG,mBAAS,IAArC,mBAAO6nB,EAAP,KAAeC,EAAf,KACA,EAAe9nB,qBAARoP,EAAP,oBACA,GAA8BpP,mBAAS,IAAvC,qBAAOsY,GAAP,MAAgByP,GAAhB,MACA,GAA4B/nB,mBAAS,IAArC,qBAAOgoB,GAAP,MAAeC,GAAf,MACA,GAAwCjoB,mBAAS,GAAjD,qBAAOkoB,GAAP,MAAqBC,GAArB,MACA,GAA0BnoB,mBAAS,IAAnC,qBAAOooB,GAAP,MAAcC,GAAd,MACA,GAAsCroB,oBAAS,GAA/C,qBAAOsoB,GAAP,MAAoBC,GAApB,MAEA,GAAmBvoB,mBAAS,CAC1B,CACE0M,GAAI,EACJ/K,KAAM,WACN6mB,KAAM,YAER,CACE9b,GAAI,EACJ/K,KAAM,UACN6mB,KAAM,WAER,CACE9b,GAAI,EACJ/K,KAAM,WACN6mB,KAAM,cAdHC,GAAP,qBAiBA,GAA4BzoB,mBAAS,IAArC,qBAAO0oB,GAAP,MAAeC,GAAf,MACA,GAAgC3oB,mBAAS,IAAzC,qBAAOud,GAAP,MAAiBC,GAAjB,MACA,GAA4Bxd,mBAAS,IAArC,qBAAO4oB,GAAP,MAAeC,GAAf,MACA,GAA4C7oB,mBAAS,IAArD,qBAAO8oB,GAAP,MAAuBC,GAAvB,MACA,GAA8C/oB,mBAAS,IAAvD,qBAAOgpB,GAAP,MAAwBC,GAAxB,MACA,GAA8BjpB,oBAAS,GAAvC,qBAAOiN,GAAP,MAAgBC,GAAhB,MACA,GAA4ClN,oBAAS,GAArD,qBAAOkpB,GAAP,MAAuBC,GAAvB,MACA,GAA4CnpB,qBAA5C,qBAAOopB,GAAP,MAAuBC,GAAvB,MACA,GAAoDrpB,mBAAS,QAA7D,qBAAOspB,GAAP,MAA2BC,GAA3B,MACA,GAAwCvpB,mBAAS,CAC/CwmB,UAAW,GACXgD,UAAW,GACXC,UAAW,GACXra,KAAM,GACNsa,MAAO,GACPC,aAAc,GACdC,aAAc,GACdC,UAAW,KARb,qBAAOC,GAAP,MAAqBC,GAArB,MAUA,GAAsC/pB,mBAAS,CAC7CwmB,WAAW,EACXgD,WAAW,EACXpa,MAAM,EACNsa,OAAO,EACPE,cAAc,EACdtG,MAAM,IANR,qBAAO0G,GAAP,MAAoBC,GAApB,MASA,GAAsCjqB,mBAAS,IAA/C,qBAAOkqB,GAAP,MAAoBC,GAApB,MACA,GAAsDnqB,mBAAS,IAA/D,qBAAOoqB,GAAP,MAA4BC,GAA5B,MAEMC,GAA0B,oBAAMJ,GAAY,UAAlB,aAAM,EAAgB3R,eAAtB,uBAAyC2R,GAAY,UAArD,aAAyC,EAAgBzR,eAAzD,uBAA4EyR,GAAY,UAAxF,aAA4E,EAAgBxR,SAA5F,uBAAyGwR,GAAY,UAArH,aAAyG,EAAgBtR,MAAzH,uBAAmIsR,GAAY,UAA/I,aAAmI,EAAgBnR,KAAnJ,uBAA4JmR,GAAY,UAAxK,aAA4J,EAAgBrR,SAE5M/P,qBAAU,YACe,uCAAG,0CAAAvI,EAAA,sEACQglB,GAAqBqC,GAD7B,cAClB2C,EADkB,gBAEEA,EAAkB3e,KAFpB,OAElB4e,EAFkB,OAGxBL,GAAeK,EAAY5e,MAC3Bye,GAAuB,GAAD,OACjBtF,GAAU,UAACyF,EAAY5e,KAAK,UAAlB,aAAC,EAAqB2M,iBADf,OACiCwM,GAAU,UAC7DyF,EAAY5e,KAAK,UAD4C,aAC7D,EAAqB6M,iBAFH,OAGhBsM,GAAU,UAACyF,EAAY5e,KAAK,UAAlB,aAAC,EAAqB8M,WAHhB,OAG4BqM,GAAU,UAACyF,EAAY5e,KAAK,UAAlB,aAAC,EAAqBgN,QAH5D,iBAIlB4R,EAAY5e,KAAK,UAJC,aAIlB,EAAqBmN,KAJH,uBAKfyR,EAAY5e,KAAK,UALF,aAKf,EAAqBiN,UATJ,2CAAH,qDAYvB4R,KAEC,IAEH,IAAMC,GAAc,SAACC,EAAOC,GAAR,OAAgBD,EAAQC,EAAM,KAC5CC,GAAa,SAACF,EAAOC,EAAKE,EAAOC,GAApB,OACjBJ,EAAQC,EAAM,IAAOE,EAAQC,EAAW,IAAOD,EAAQH,GACnDK,GAAW,SAACL,EAAOC,EAAKE,EAAOC,GAApB,OACfL,GAAYC,EAAOC,GAAOF,GAAYI,EAAOC,IAE/C,GAAoC/qB,mBAAS,IAA7C,qBAAOirB,GAAP,MAAmBC,GAAnB,MAEA,GAAsClrB,mBAAS,GAA/C,qBAAOmrB,GAAP,MAAoBC,GAApB,MACAtiB,qBAAU,WACR,IAAMuiB,EAAU,uCAAG,gCAAA9qB,EAAA,sEACM6b,GAA8B,OAAC0N,SAAD,IAACA,QAAD,EAACA,GAActD,WADnD,cACX9a,EADW,gBAEEA,EAASE,KAFX,OAGQ,OAAjB,QADFA,EAFW,cAGT,IAAJA,GAAA,UAAAA,EAAMa,YAAN,eAAY6e,OACdvD,GAAWnc,EAAKA,MAJD,2CAAH,qDAOZke,GAAatD,WAAW6E,MAC3B,CAACvB,GAAatD,YAEjB1d,qBAAU,YACO,uCAAG,8BAAAvI,EAAA,sEACO6U,KADP,UAEQ,OADlB1J,EADU,QAEHjB,OAFG,gCAGKiB,EAASE,KAHd,OAGRA,EAHQ,OAIdqc,GAAUrc,EAAKA,MAJD,2CAAH,qDAOf2f,GAEuB,uCAAG,8BAAAhrB,EAAA,sEACD8U,KADC,UAEA,OADlB3J,EADkB,QAEXjB,OAFW,gCAGHiB,EAASE,KAHN,OAGhBA,EAHgB,OAItB4f,GAAkB5f,EAAKA,MAJD,2CAAH,oDAOvB6f,GACuB,uCAAG,8BAAAlrB,EAAA,sEACD+U,KADC,UAEA,OADlB5J,EADkB,QAEXjB,OAFW,gCAGHiB,EAASE,KAHN,OAGhBA,EAHgB,OAItB8f,GAAkB9f,EAAKA,MAJD,2CAAH,oDAOvB+f,GACc,uCAAG,8BAAAprB,EAAA,sEACQgV,KADR,UAES,OADlB7J,EADS,QAEFjB,OAFE,gCAGMiB,EAASE,KAHf,OAGPA,EAHO,OAIbyc,GAASzc,EAAKA,MAJD,2CAAH,oDAOdggB,GACiB,uCAAG,kCAAArrB,EAAA,sEACKsV,KADL,UAEM,OADlBnK,EADY,QAELjB,OAFK,iCAGGiB,EAASE,KAHZ,OAGVA,EAHU,OAIVigB,EAAUjgB,EAAKA,KAAK2H,QAAO,SAACuY,GAAD,OAAyB,IAAhBA,EAAIzX,WAC9C4U,GAAmB4C,GACnB9B,GAAgB,2BAAKD,IAAN,IAAoBL,UAAS,UAAEoC,EAAQ,UAAV,aAAE,EAAYlqB,QAN1C,4CAAH,oDASjBoqB,GACe,uCAAG,8BAAAxrB,EAAA,sEACOiV,KADP,UAEQ,OADlB9J,EADU,QAEHjB,OAFG,gCAGKiB,EAASE,KAHd,OAGRA,EAHQ,OAId+c,GAAU/c,EAAKA,MAJD,2CAAH,oDAOfogB,GACa,uCAAG,gCAAAzrB,EAAA,sEACSkV,KADT,cACR/J,EADQ,gBAEKA,EAASE,KAFd,OAERA,EAFQ,OAGU,MAApBF,EAASjB,QAAgB0d,GAAgBvO,OAAM,OAAChO,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAYiC,QAHlD,2CAAH,oDAKboe,GACiB,uCAAG,gCAAA1rB,EAAA,sEACKmV,KADL,cACZhK,EADY,gBAECA,EAASE,KAFV,OAEZA,EAFY,OAGM,MAApBF,EAASjB,QAAgByhB,GAAW,OAACtgB,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAYiC,OAHnC,2CAAH,oDAKjBse,GACiB,uCAAG,gCAAA5rB,EAAA,sEACKoV,KADL,cACZjK,EADY,gBAECA,EAASE,KAFV,OAEZA,EAFY,OAGM,MAApBF,EAASjB,QAAgB2hB,GAAW,OAACxgB,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAYiC,OAHnC,2CAAH,oDAKjBwe,GAEkB,uCAAG,gCAAA9rB,EAAA,sEACIqV,KADJ,cACblK,EADa,gBAEAA,EAASE,KAFT,OAEbA,EAFa,OAGK,MAApBF,EAASjB,QAAgB6hB,GAAW,OAAC1gB,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAYiC,OAHlC,2CAAH,oDAKlB0e,GACe,uCAAG,8BAAAhsB,EAAA,sEACO2lB,KADP,cACVxa,EADU,gBAEGA,EAASE,KAFZ,OAEVA,EAFU,OAGQ,MAApBF,EAASjB,QAAgBoe,GAAS,OAACjd,QAAD,IAACA,OAAD,EAACA,EAAMA,MAH7B,2CAAH,oDAKf4gB,GACmB,uCAAG,8BAAAjsB,EAAA,sEACYmlB,KADZ,UAEa,OAD3B+G,EADc,QAEEhiB,OAFF,gCAGCgiB,EAAkB7gB,KAHnB,OAGZA,EAHY,OAIlB4R,GAAY5R,EAAKA,MAJC,2CAAH,oDAOnB8gB,KAEC,IACH,OAA4C1sB,mBAAS,IAArD,qBAAO2sB,GAAP,MAAuBnB,GAAvB,MACA,GAA4CxrB,mBAAS,IAArD,qBAAO4sB,GAAP,MAAuBlB,GAAvB,MAEA,GAAgC1rB,mBAAS,GAAzC,qBAAO6sB,GAAP,MAAiBX,GAAjB,MACA,GAAgClsB,mBAAS,GAAzC,qBAAO8sB,GAAP,MAAiBV,GAAjB,MACA,GAAgCpsB,mBAAS,GAAzC,qBAAO+qB,GAAP,MAAiBuB,GAAjB,MACA,GAAsBtsB,mBAAS,GAA/B,qBAAO4qB,GAAP,MAAYmC,GAAZ,MAQA,GAA8C/sB,mBAAS,IAAvD,qBAAOgtB,GAAP,MAAwBC,GAAxB,MACAnkB,qBAAU,WACR,IAAM4jB,EAAa,uCAAG,8BAAAnsB,EAAA,6DACpB4oB,IAAkB,GADE,SAEY5C,GAA6B,OAC3DuD,SAD2D,IAC3DA,QAD2D,EAC3DA,GAActD,UACd/J,EACAC,GALkB,UAEd+P,EAFc,OAOpBtD,IAAkB,GACe,MAA7BsD,EAAkBhiB,OARF,iCASCgiB,EAAkB7gB,KATnB,OASZA,EATY,OAUlBmd,GAAkBnd,EAAKA,MACvBoR,EAAapR,EAAKa,KAAKwB,QAXL,4CAAH,qDAcbif,EAAc,uCAAG,8BAAA3sB,EAAA,sEACE2b,GAAkC4N,GAAatD,WADjD,cACf9a,EADe,gBAEFA,EAASE,KAFP,OAEfA,EAFe,OAGG,MAApBF,EAASjB,QAAgBwiB,GAAkB,OAACrhB,QAAD,IAACA,OAAD,EAACA,EAAMA,MAHjC,2CAAH,qDAKW,KAA3Bke,GAAatD,YACf0G,IACAR,OAGD,CAAC5C,GAAatD,YAEjB,IAAM2G,GAAa,CACjBhwB,SAAU,WACVL,IAAK,MACLkN,KAAM,MACN3M,UAAW,wBACX1B,MAAO,MACP+R,SAAU,IACV0f,UAAW,SACX5mB,QAAS,mBACTtC,UAAW,IACX9G,aAAc,OACd+L,UAAW,OACX5G,EAAG,EACHa,QAAS,QAGX,GAAwB2d,IAAM/gB,UAAS,GAAvC,qBAAOC,GAAP,MAAaC,GAAb,MACMmtB,GAAa,kBAAMntB,IAAQ,IAC3BG,GAAc,kBAAMH,IAAQ,IAClC4I,qBAAU,WACRgf,EAAU,IACVsD,GAAe,KACd,CAACtB,GAAaL,YAEjB3gB,qBAAU,WACRmhB,GAAe,2BAAKD,IAAN,IAAmB1G,MAAM,KAEvC,IADA,IAAIgK,EAAM,EACDC,EAAI,EAAGA,EAAI1F,EAAO5Z,OAAQsf,GAAK,EACtC,GAA+B,kBAA3BzD,GAAaL,UAA+B,CAE9C,IADA,IAAIkB,EAAQ,EACH6C,EAAI,EAAGA,EAAIb,GAAe1e,OAAQuf,GAAK,EAC1Cb,GAAea,GAAGC,iBAAmB5F,EAAO0F,GAAGlM,OACjDsJ,EACEgC,GAAea,GAAG7C,OACjB/Q,OAAOiO,EAAO0F,GAAG7L,UAAY9H,OAAOiO,EAAO0F,GAAG9L,UAAY,GAC7DoG,EAAO0F,GAAG5C,MAAQA,GAGtB2C,GAAO3C,EACPoC,GAAOD,QACF,CAEL,IADA,IAAInC,EAAQ,EACH6C,EAAI,EAAGA,EAAIZ,GAAe3e,OAAQuf,GAAK,EAC1CZ,GAAeY,GAAGC,iBAAmB5F,EAAO0F,GAAGlM,OACjDsJ,EACEiC,GAAeY,GAAG7C,OACjB/Q,OAAOiO,EAAO0F,GAAG7L,UAAY9H,OAAOiO,EAAO0F,GAAG9L,UAAY,GAC7DoG,EAAO0F,GAAG5C,MAAQA,GAGtB2C,GAAO3C,EACPoC,GAAOF,IAGXzB,GAAekC,KAEd,CAACzF,IAEJ,OAAoC7nB,mBAAS,IAA7C,qBAAO0tB,GAAP,MAAmBC,GAAnB,MACA,GAAsC3tB,mBAAS,GAA/C,qBAAO4tB,GAAP,MAAoBC,GAApB,MACM/T,GAAe,SAACI,EAAGtV,GACvB,GAAc,WAAVA,EAAoB,CACtB+oB,GAC4B,kBAAnBzT,EAAElM,OAAOH,MAAqBqM,EAAElM,OAAOH,MAAM6P,MAAM,KAAOxD,EAAElM,OAAOH,OAG5E,IADA,IAAI8c,EAAQ,EAJU,WAKb4C,GACP5C,GAAS/Q,OAAOgP,GAAOrU,MAAK,SAACuZ,GAAD,OAASA,EAAIphB,KAAOwN,EAAElM,OAAOH,MAAM0f,MAAI5C,QAD5D4C,EAAI,EAAGA,EAAIrT,EAAElM,OAAOH,MAAMI,OAAQsf,GAAK,EAAI,EAA3CA,GAGTM,GAAelD,GACfO,GAAchR,EAAElM,OAAOH,YAEvBkc,GAAgB,2BAAKD,IAAN,kBAAqBllB,EAAQsV,EAAElM,OAAOH,SACrDoc,GAAe,2BACVD,IADS,kBAEXplB,EAA2B,KAAnBsV,EAAElM,OAAOH,UAaxB/E,qBAAU,WAAO,IAAD,EACdyf,GAAc,UACZhL,GAAShJ,MAAK,SAACwZ,GAAD,OAAaA,EAAQrhB,KAAOod,GAAatD,oBAD3C,aACZ,EAAmEwH,qBAGpE,CAAClE,GAAatD,YAEjB,IAAMyH,GAAiB,uCAAG,WAAO/T,GAAP,+DAAA3Z,EAAA,yDACxB2Z,EAAEgU,iBACIC,EAAa,KAEjBrE,GAAaL,WACb5B,EAAO5Z,OAAS,GAChB6b,GAAaF,cACbE,GAAatD,YACZsD,GAAaN,WAAalB,MACe,IAAzCwB,GAAaD,UAAUza,OAAOnB,SAAe6Y,GAAMgD,GAAaD,aACrC,kBAA3BC,GAAaL,WAAgCK,GAAa1a,KAAQ0a,GAAa1a,MAV1D,wBAYtBlC,IAAW,GACoB,kBAA3B4c,GAAaL,UACf5B,EAAOzN,SAAQ,SAACkJ,GACd6K,EAAWC,KAAK,CACdrc,IAAKuR,EAAK7B,SACVzP,IAAKsR,EAAK5B,SACVF,OAAQ8B,EAAK9B,OACb6M,SAAU/K,EAAKjC,KACfiN,gBAAiBhL,EAAKlC,aAI1ByG,EAAOzN,SAAQ,SAACkJ,GACd6K,EAAWC,KAAK,CACdrc,IAAK6H,OAAO0J,EAAK7B,UACjBzP,IAAK4H,OAAO0J,EAAK5B,UACjBF,OAAQ8B,EAAK9B,OACb+M,cAAejL,EAAKjC,UA7BJ,SAiCWmE,KAjCX,UAmCoB,OAFpCgJ,EAjCgB,QAmCC5iB,KAAKa,KAAK6e,KAnCX,yCAmC+CkD,QAnC/C,IAmC+CA,OAnC/C,EAmC+CA,EAAoB5iB,KAnCnE,QAmCyB6iB,EAnCzB,sCAqCpB9iB,KAAK,QAAD,OAAU6iB,QAAV,IAAUA,GAAV,UAAUA,EAAoB5iB,YAA9B,aAAU,EAA0BC,QAAS,SACjDqB,IAAW,GAtCS,8BAyCsB,OAA3B,QAAb,EAAAuhB,SAAA,mBAAe7iB,YAAf,eAAqB8iB,kBAA0B,UAACD,SAAD,iBAAC,EAAe7iB,YAAhB,aAAC,EAAqB+iB,YAzCnD,kCA0CD1H,GAAW,gDA1CV,0CA4ClB2H,MAAM,gDACN1hB,IAAW,GA7CO,kCAgDdgH,EAAuC,kBAA3B4V,GAAaL,UAAgC,EAAI,EAC7D/P,EAAO,CACXmV,WAAY3a,EACZ4a,SAAU,EACVC,OAAQ5D,GAAcyC,GACtBoB,cAAe9G,GACf0C,IAAKI,GAASG,GAAaP,GAAKgD,GAAa7C,IAC7CkE,aAAcpE,GAAWM,GAAaP,GAAKgD,GAAa7C,IAAYnR,OAAOsO,IAC3EgH,cAAef,EACfrD,MAAOG,IAzDW,UA2DDxE,GAA8B/M,GA3D7B,eA2DdS,EA3Dc,iBA6DDA,EAAKvO,KA7DJ,QA6DdA,EA7Dc,OA+DdmP,EAAU,CACdoU,IAAKrjB,0BACLsjB,SAAU,MACVL,OAAM,OAAEnjB,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,iBAAE,EAAYmjB,cAAd,aAAE,EAAoB3iB,WAC5BijB,SAAQ,OAAEzjB,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,aAAE,EAAYc,GACtB/K,KAAM,aACN2tB,YAAa,kCACbC,QAAQ,WAAD,4BAAE,WAAO7jB,GAAP,6BAAAnL,EAAA,0DACHmL,EAAS8jB,oBADN,oBAEDC,EAAW,IACX7I,GAHC,iCAIeD,GAAsBC,GAAU0C,IAJ/C,cAIGoG,EAJH,gBAKmBA,EAAI9jB,KALvB,cAKG+jB,EALH,OAMKC,EAAcD,EAAQ/jB,KAAtBgkB,UACRH,EAAQ,OAAGE,QAAH,IAAGA,GAAH,UAAGA,EAAS/jB,YAAZ,aAAG,EAAe6jB,SAC1B/H,EAASmI,OAAO,OAAQzG,IARrB,UASGne,KAAM6kB,IAAIF,EAAWxG,GAAgB,CACzCte,QAAS,CACP,eAAgB,yBAXjB,QAeLoC,IAAW,GAELgH,EAAuC,kBAA3B4V,GAAaL,UAAgC,EAAI,EAC7D/P,EAAO,CACXmV,WAAY3a,EACZ4a,SAAU,EACVC,OAAQ5D,GAAcyC,GACtBoB,cAAe9G,GACf0C,IAAKI,GAASG,GAAaP,GAAKgD,GAAa7C,IAC7CkE,aACEpE,GAAWM,GAAaP,GAAKgD,GAAa7C,IAAYnR,OAAOsO,IAC/D6H,YAAanW,OAAOja,OAAOC,aAAaC,QAAQ,WAChDmwB,WAAY1H,GAAc,KAAOwB,GAAaN,UAC9CyG,WAAYnG,GAAatD,UACzB0J,WAAYpG,GAAaD,UACzBF,aAAcG,GAAaH,aAAeG,GAAaH,aAAe,IACtEwG,eAAc,OAAErG,SAAF,IAAEA,QAAF,EAAEA,GAAcF,aAC9BsF,cAAef,EACfiC,gBAA8B,KAAbX,EAAkBA,EAAW,IAC9CY,kBAAiB,OAAEzkB,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,aAAE,EAAYc,GAC/B4jB,QAASrF,GACTsF,eAAgBjI,IAEa,kBAA3BwB,GAAaL,YACf/P,EAAK8W,QAAU1G,GAAa1a,MAE9BsX,GAAoBhN,GAAM+W,MAAK,SAACf,GAC9BxiB,IAAW,GACQ,MAAfwiB,EAAIjlB,SACNkB,KAAK,gBAAiB,GAAI,WAC1B+kB,YAAW,kBAAM/wB,OAAOgN,SAASC,WAAU,UA7C1C,wBAiDLM,IAAW,GACXvB,KAAK,sBAAuB,mBAAoB,SAlD3C,4CAAF,mDAAC,GAqDRglB,QAAS,CACPhvB,KAAMnC,EAASmC,KACf3C,MAAOQ,EAASR,MAChBwb,MAAOhb,EAASmZ,QAElBiY,MAAO,CACLC,UAAW,aACXlvB,KAAMnC,EAASmC,KACf3C,MAAOQ,EAASR,MAChBwb,MAAOhb,EAASmZ,SAGE,IAAIhZ,OAAOmxB,SAAS/V,GAC5B9a,OACdiN,IAAW,GAzIS,qCA0IVuhB,SA1IU,iBA0IV,EAAe7iB,YA1IL,aA0IV,EAAqB+iB,WA1IX,oBA2IpBzhB,IAAW,GACPuiB,EAAW,IACX7I,GA7IgB,kCA8IAD,GAAsBC,GAAU0C,IA9IhC,eA8IZoG,EA9IY,iBA+IIA,EAAI9jB,KA/IR,eA+IZ+jB,EA/IY,OAgJVC,EAAcD,EAAQ/jB,KAAtBgkB,UACRH,EAAQ,OAAGE,QAAH,IAAGA,GAAH,UAAGA,EAAS/jB,YAAZ,aAAG,EAAe6jB,SAC1B/H,EAASmI,OAAO,OAAQzG,IAlJN,UAmJZne,KAAM6kB,IAAIF,EAAWxG,GAAgB,CACzCte,QAAS,CACP,eAAgB,yBArJF,QAyJdoJ,EAAuC,kBAA3B4V,GAAaL,UAAgC,EAAI,EAC7D/P,EAAO,CACXmV,WAAY3a,EACZ4a,SAAU,EACVC,OAAQ5D,GAAcyC,GACtBoB,cAAe9G,GACf0C,IAAKI,GAASG,GAAaP,GAAKgD,GAAa7C,IAC7CkE,aAAcpE,GAAWM,GAAaP,GAAKgD,GAAa7C,IAAYnR,OAAOsO,IAC3E6H,YAAanW,OAAOja,OAAOC,aAAaC,QAAQ,WAChDmwB,WAAY1H,GAAc,KAAOwB,GAAaN,UAC9CyG,WAAYnG,GAAatD,UACzB0J,WAAYpG,GAAaD,UACzBF,aAAcG,GAAaH,aAAeG,GAAaH,aAAe,IACtEyG,gBAA8B,KAAbX,EAAkBA,EAAW,IAC9CU,eAAc,OAAErG,SAAF,IAAEA,QAAF,EAAEA,GAAcF,aAC9BsF,cAAef,EACfmC,QAASrF,GACTsF,eAAgBjI,IAEc,mBAAhB,OAAZwB,SAAY,IAAZA,QAAA,EAAAA,GAAcL,aAChB/P,EAAK8W,QAAU1G,GAAa1a,MAE9BsX,GAAoBhN,GAAM+W,MAAK,SAACf,GAC9BxiB,IAAW,GACQ,MAAfwiB,EAAIjlB,SACNkB,KAAK,gBAAiB,GAAI,WAC1B+kB,YAAW,kBAAM/wB,OAAOgN,SAASC,WAAU,UAnL3B,wBAuLpBjB,KAAK,QAAS,mCAAoC,SAvL9B,gCA0LtBse,GAAe,2BACVD,IADS,IAEZN,MAAqC,IAA9BI,GAAaJ,MAAMzb,OAC1BuY,UAAsC,KAA3BsD,GAAatD,UACxBgD,UAAsC,KAA3BM,GAAaN,UACxBpa,KAA4B,KAAtB0a,GAAa1a,KACnBwa,aAA4C,KAA9BE,GAAaF,aAC3BtG,KAAwB,IAAlBuE,EAAO5Z,UAjMO,4CAAH,sDAoNjB4P,GAAgB,uCAAG,WAAO9P,EAAO+P,GAAd,iBAAAvd,EAAA,6DACvBuc,EAAQgB,GACRqL,IAAkB,GAFK,SAGS5C,GAC9BuD,GAAatD,UACb/J,EACAqB,GANqB,UAGjB2O,EAHiB,OASvBtD,IAAkB,GACe,MAA7BsD,EAAkBhiB,OAVC,iCAWFgiB,EAAkB7gB,KAXhB,OAWfA,EAXe,OAYrBmd,GAAkBnd,EAAKA,MAZF,4CAAH,wDAqBhBmlB,GAAYrU,EAAO,EAAIsU,KAAKhf,IAAI,GAAI,EAAI0K,GAAQD,EAAcqM,GAAe7a,QAAU,EAEvFkQ,GAzlBR,SAAyB8S,EAAOC,EAAYC,GAC1C,IAAMC,EAAiBH,EAAMpvB,KAAI,SAACwvB,EAAI/c,GAAL,MAAe,CAAC+c,EAAI/c,MAMrD,OALA8c,EAAeE,MAAK,SAAC/wB,EAAGymB,GACtB,IAAM5P,EAAQ8Z,EAAW3wB,EAAE,GAAIymB,EAAE,IACjC,OAAc,IAAV5P,EAAoBA,EACjB7W,EAAE,GAAKymB,EAAE,MAEdmK,EACK5d,kBACL0d,GACA,SAACM,GAAD,aAA+E,KAApE,UAAAA,EAAMxD,eAAN,eAAepsB,KAAKgc,cAAckB,QAAQsS,EAAMxT,mBAGxDyT,EAAevvB,KAAI,SAACwvB,GAAD,OAAQA,EAAG,MA4kBfG,CAAgB1I,GA/lBxC,SAAuB1R,EAAOC,GAC5B,MAAiB,SAAVD,EACH,SAAC7W,EAAGymB,GAAJ,OAAUD,GAAqBxmB,EAAGymB,EAAG3P,IACrC,SAAC9W,EAAGymB,GAAJ,OAAWD,GAAqBxmB,EAAGymB,EAAG3P,IA4lBYoa,CAAcra,EAAOC,GAAUa,GAE/EkG,GAA0C,IAAzBD,GAAclQ,OAKrC,GAAgCjO,mBAAS,IAAzC,qBAAO4mB,GAAP,MAAiB8K,GAAjB,MAEM3T,GAAa,uCAAG,WAAOhQ,GAAP,iBAAAxN,EAAA,sEACYmlB,GAAwB3X,EAAMC,OAAOH,OADjD,UAEa,OAD3B4e,EADc,QAEEhiB,OAFF,gCAGCgiB,EAAkB7gB,KAHnB,OAGZA,EAHY,OAIlB4R,GAAY5R,EAAKA,MAJC,2CAAH,sDAQboS,GAAyBC,mBAC7B,kBAAMC,oBAASH,GAAe,OAE9B,IAGF,OACE,eAAC,GAAD,CAAM3X,MAAM,yBAAZ,UAKE,eAACoL,GAAA,EAAD,CAAWxQ,MAAO,CAAErF,MAAO,OAAQ+R,SAAU,MAA7C,UACE,cAAClM,EAAA,EAAD,CAAYC,QAAQ,KAAK3D,GAAI,CAAEmL,GAAI,GAAnC,uBAGA,sBAAKpK,UAAU,eAAf,UACE,cAACgR,GAAA,EAAD,CACE5P,KAAMA,IAAmC,kBAA3B6pB,GAAaL,UAC3BvoB,QAASb,GACTyP,kBAAgB,oBAChBC,mBAAiB,0BAJnB,SAME,cAAC1O,EAAA,EAAD,CAAKvD,GAAIqvB,GAAT,SACE,cAAC1J,GAAD,CACEV,eAAgB+E,EAChBznB,YAAaA,GACb2gB,YAAa6G,EACbzG,QAASqH,GACT5D,MAAOmD,SAIb,cAACnY,GAAA,EAAD,CACE5P,KAAMA,IAAmC,aAA3B6pB,GAAaL,UAC3BvoB,QAASb,GACTyP,kBAAgB,oBAChBC,mBAAiB,0BAJnB,SAME,cAAC1O,EAAA,EAAD,CAAKvD,GAAIqvB,GAAT,SACE,cAACrM,GAAD,CACEiC,eAAgB+E,EAChBznB,YAAaA,GACb2gB,YAAa6G,EACb3E,MAAOwF,SAIb,qBAAK7pB,UAAU,YAAf,SACE,uBAAM8yB,QAAQ,sBAAsBlrB,OAAO,GAAG0I,SAAU8e,GAAxD,UACE,qBAAKpvB,UAAU,eAAf,SACE,eAACokB,GAAA,EAAD,CAAaxgB,WAAS,EAAtB,UACE,cAACkY,GAAA,EAAD,CACEjO,GAAG,sBACHqO,QAASwC,GACTqU,eAAa,EACbhX,cAAc,qBACd9M,SAAU,SAACoM,EAAGF,GAAJ,OApUL,SAACA,GACtB+P,GAAgB,2BAAKD,IAAN,IAAoBtD,UAAWxM,KAC9CiQ,GAAe,2BACVD,IADS,IAEZxD,UAAiB,KAANxM,KAgUuB6X,EAAgB,OAAD7X,QAAC,IAADA,OAAA,EAAAA,EAAGtN,KAAM,KAC5CyW,eAAgB,SAACrhB,GAAD,MAAY,CAACA,EAAOH,KAAMG,EAAO6W,SACjDmZ,aAAc,SAACltB,EAAO9C,GAAR,OACZ,cAACT,EAAA,EAAD,yBAAKY,UAAU,MAAS2C,GAAxB,aACE,sBAAK/F,UAAU,8BAAf,UACE,sBAAMA,UAAU,mCAAhB,SAAoDiD,EAAOH,OAC3D,sBAAM9C,UAAU,oCAAhB,SAAqDiD,EAAO6W,gBAIlEqC,YAAa,SAACC,GAAD,OACX,cAACtN,GAAA,EAAD,2BACMsN,GADN,IAEE1P,MAAOye,GAAYxD,UACnBrnB,MAAM,mBACN4yB,WAAU,eACL9W,EAAO8W,YAEZjkB,SAAUkQ,SAIfgM,GAAYxD,UACX,cAACnD,GAAA,EAAD,CAAgBriB,MAAO,CAAEC,MAAO,OAAhC,kCACE,UAGR,qBAAKpC,UAAU,eAAf,SACE,eAACokB,GAAA,EAAD,CAAaxgB,WAAS,EAAtB,UACE,cAACuvB,GAAA,EAAD,CAAYtlB,GAAG,2BAAf,2BACA,eAACulB,GAAA,EAAD,CACE1O,QAAQ,2BACR7W,GAAG,qBACHmB,MAAOic,GAAaF,aACpBzqB,MAAM,mBACNoM,MAAOye,GAAYJ,aACnB9b,SAAU,SAACoM,GAAD,OAAOJ,GAAaI,EAAG,iBACjCgY,UAAW,CAAElxB,MAAO,CAAEkD,UAAW,UAPnC,iBASG8oB,SATH,IASGA,QATH,EASGA,GAAiBnrB,KAAI,SAACswB,GAAD,eACpB,cAACpwB,EAAA,EAAD,CAAU8L,MAAK,OAAEskB,QAAF,IAAEA,OAAF,EAAEA,EAAQC,eAAzB,gBAEID,QAFJ,IAEIA,GAFJ,UAEIA,EAAQC,sBAFZ,aAEI,EAAwB1U,MAAM,MACtB,OAANyU,QAAM,IAANA,GAAA,UAAAA,EAAQC,sBAAR,eAAwB1U,MAAM,KAAKzP,QAAS,IAHlD,OAA8CkkB,QAA9C,IAA8CA,OAA9C,EAA8CA,EAAQzlB,OAQ3B,KAAb,OAAfsgB,SAAe,IAAfA,QAAA,EAAAA,GAAiB/e,QAChB,cAAClM,EAAA,EAAD,CAAU2Y,UAAQ,EAAC7M,MAAM,GAAzB,SACE,yDAEA,QAELmc,GAAYJ,aACX,cAACvG,GAAA,EAAD,CAAgBriB,MAAO,CAAEC,MAAO,OAAhC,gCACE,UAGR,sBAAKpC,UAAU,eAAf,UACGypB,GACC,cAAC3a,GAAA,EAAD,CACEvH,MAAOkkB,GACP5d,GAAG,uCACHkB,KAAK,OACLC,MAAOuc,GACPppB,MAAO,CAAEoC,QAAS,KAAMiO,OAAQ,KAAM1V,MAAO,QAC7CwD,MAAM,iBACN8B,MAAM,UACNiN,aAAa,MACbmkB,UAAU,OACV3X,UAAQ,IAGV,eAACuI,GAAA,EAAD,CAAaxgB,WAAS,EAAtB,UACE,cAACuvB,GAAA,EAAD,CAAYtlB,GAAG,2BAAf,6BACA,eAACulB,GAAA,EAAD,CACE1O,QAAQ,2BACR7W,GAAG,6BACHvN,MAAM,qBACNoM,MAAOye,GAAYR,UACnB1b,SAAU,SAACoM,GAAD,OAAOJ,GAAaI,EAAG,cACjCQ,SAAU4N,GACV4J,UAAW,CAAElxB,MAAO,CAAEkD,UAAW,UAPnC,iBASGoU,SATH,IASGA,QATH,EASGA,GAASzW,KAAI,SAACywB,GAAD,OACZ,eAACvwB,EAAA,EAAD,CAAU8L,MAAOykB,EAAO5lB,GAAxB,UACGqY,GAAU,OAACuN,QAAD,IAACA,OAAD,EAACA,EAAQ/Z,gBACnBwM,GAAU,OAACuN,QAAD,IAACA,OAAD,EAACA,EAAQ7Z,gBACnBsM,GAAU,OAACuN,QAAD,IAACA,OAAD,EAACA,EAAQ5Z,UACnBqM,GAAU,OAACuN,QAAD,IAACA,OAAD,EAACA,EAAQ1Z,OAJtB,OAKG0Z,QALH,IAKGA,OALH,EAKGA,EAAQvZ,KALX,WAKkBuZ,QALlB,IAKkBA,OALlB,EAKkBA,EAAQzZ,UALOyZ,EAAO5lB,OAQtB,IAAnB4L,GAAQrK,OACP,cAAClM,EAAA,EAAD,CAAU2Y,UAAQ,EAAC7M,MAAM,GAAzB,SACE,qDAEA,QAELmc,GAAYR,UACX,cAACnG,GAAA,EAAD,CAAgBriB,MAAO,CAAEC,MAAO,OAAhC,kCACE,QAGR,qBACED,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,gBAAiBhC,WAAY,UADzE,SAGE,cAAC4M,GAAA,EAAD,CACEC,QACE,cAACC,GAAA,EAAD,CACEC,QAAS0X,GACTxa,SAAU,WACRya,IAAgBD,OAItBnpB,MAAM,+BAIZ,sBACEN,UAAU,eACVmC,MAAO,CACLsE,QAAS,OACTmV,SAAU,OACV5W,WAAY,SACZgC,eAAgB,iBANpB,UASE,eAACod,GAAA,EAAD,CAAaxgB,WAAS,EAACzB,MAAO,CAAErF,MAAO,OAAvC,UACE,cAACq2B,GAAA,EAAD,CAAYtlB,GAAG,2BAAf,4BACA,eAACulB,GAAA,EAAD,CACE1O,QAAQ,2BACR7W,GAAG,qBACHmB,MAAOic,GAAaL,UACpBtqB,MAAM,iBACNoM,MAAOye,GAAY1G,KACnBxV,SAAU,SAACoM,GAAD,OAAOJ,GAAaI,EAAG,cACjCgY,UAAW,CAAElxB,MAAO,CAAEkD,UAAW,UAPnC,iBASG8kB,SATH,IASGA,QATH,EASGA,GAAiBnnB,KAAI,SAAC4R,GAAD,OACpB,cAAC1R,EAAA,EAAD,CAAU8L,MAAK,OAAE4F,QAAF,IAAEA,OAAF,EAAEA,EAAS9R,KAAwB+Y,SAAUjH,EAAQY,QAApE,gBACGZ,QADH,IACGA,OADH,EACGA,EAAS9R,MADZ,OAAqC8R,QAArC,IAAqCA,OAArC,EAAqCA,EAAS/G,OAInB,KAAb,OAAfsc,SAAe,IAAfA,QAAA,EAAAA,GAAiB/a,QAChB,cAAClM,EAAA,EAAD,CAAU2Y,UAAQ,EAAC7M,MAAM,GAAzB,SACE,sDAEA,QAELmc,GAAY1G,KACX,cAACD,GAAA,EAAD,CAAgBriB,MAAO,CAAEC,MAAO,OAAhC,6CAGE,QAEN,qBAAKpC,UAAU,eAAemC,MAAO,CAAEmI,UAAW,MAAlD,UACG2gB,GAAaL,UACZ,cAAC/oB,EAAA,EAAD,CAAQe,QAAQ,YAAYb,QAASysB,GAArC,SACE,cAAC,KAAD,YASoB,kBAA3BvD,GAAaL,UACZ,qBAAK5qB,UAAU,eAAf,SACE,eAACokB,GAAA,EAAD,CAAaxgB,WAAS,EAAtB,UACE,cAACuvB,GAAA,EAAD,CAAYtlB,GAAG,2BAAf,yBACA,cAACulB,GAAA,EAAD,CACE1O,QAAQ,2BACR7W,GAAG,qBACHmB,MAAOuB,EACP7D,MAAOye,GAAY5a,KACnBjQ,MAAM,cACN2O,SAAU,SAACoM,GAAD,OAAOJ,GAAaI,EAAG,SACjCgY,UAAW,CAAElxB,MAAO,CAAEkD,UAAW,UAPnC,gBASGkkB,SATH,IASGA,QATH,EASGA,GAAOvmB,KAAI,SAACsQ,GAAD,OACV,cAACpQ,EAAA,EAAD,CAAyB8L,MAAOsE,EAAMzF,GAAtC,SACGyF,EAAMxQ,MADMwQ,EAAMzF,SAKxBsd,GAAY5a,KACX,cAACiU,GAAA,EAAD,CAAgBriB,MAAO,CAAEC,MAAO,OAAhC,+BACE,UAGN,KACJ,qBAAKpC,UAAU,eAAf,SACE,eAACokB,GAAA,EAAD,CAAaxgB,WAAS,EAAtB,UACE,cAACuvB,GAAA,EAAD,CAAYtlB,GAAG,+BAAf,4BACA,cAACulB,GAAA,EAAD,CACE1O,QAAQ,+BACR7W,GAAG,yBACHvN,MAAM,iBACN0O,MAAO6f,GACPwE,UAAW,CAAElxB,MAAO,CAAEkD,UAAW,UACjCquB,UAAQ,EACRzkB,SAAU,SAACoM,GAAD,OAAOJ,GAAaI,EAAG,WACjCsY,MAAO,cAACpc,GAAA,EAAD,CAAejX,MAAM,mBAC5BszB,YAAa,kBACX,cAACpxB,EAAA,EAAD,CAAKvD,GAAI,CAAEwH,QAAS,OAAQmV,SAAU,OAAQiY,IAAK,IAAnD,SACGzH,GAAWppB,KAAI,SAACgM,EAAOyG,GAAR,OACd,oBAAetT,MAAO,CAAEC,MAAO,QAA/B,UACG2nB,GAAOrU,MAAK,SAACuW,GAAD,OAAWA,EAAMpe,KAAOmB,KAAOlM,KAAM,MAD5C2S,SAZhB,SAmBGsU,GAAO/mB,KAAI,SAACipB,GAAD,OACV,eAAC/oB,EAAA,EAAD,CAEE8L,MAAOid,EAAMpe,GACb1L,MAAO,CACLuF,WAAY0kB,GAAW1W,MAAK,SAACuZ,GAAD,OAAShD,EAAMpe,KAAOohB,KAAO,MAAQ,MACjEhrB,gBAAiBmoB,GAAW1W,MAAK,SAACuZ,GAAD,OAAShD,EAAMpe,KAAOohB,KACnD,UACA,QAPR,UAUE,cAACnd,GAAA,EAAD,CAAUC,QAAS8c,GAAW7O,QAAQiM,EAAMpe,KAAO,IACnD,cAAC7F,GAAA,EAAD,CACEpB,QAASqlB,EAAMnpB,KACfyD,UAAWwU,OAAOkR,EAAMH,OAAOgI,eAAe,QAAS,CACrD3xB,MAAO,WACPouB,SAAU,YAdTtE,EAAMpe,cAsBrB,sBAAK7N,UAAU,eAAemC,MAAO,CAAErF,MAAO,QAA9C,UACE,cAACgS,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,QAChBkS,MAAOic,GAAaH,aACpB7b,SAAU,SAACoM,GAAD,OAAOJ,GAAaI,EAAG,iBACjC/a,MAAM,eACN8B,MAAM,UACNiN,aAAa,MACb6jB,WAAY,CACVa,UAAW,KAEbP,UAAU,SAEZ,cAAChP,GAAA,EAAD,CAAgBriB,MAAO,CAAEiE,YAAa,OAAQhE,MAAO,WAArD,6EAIF,qBAAKpC,UAAU,eAAemC,MAAO,CAAErF,MAAO,QAA9C,SACE,cAACgS,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,QAChBkS,MAAOic,GAAaD,UACpB/b,SAAU,SAACoM,GAAD,OAAOJ,GAAaI,EAAG,cACjC/a,MAAM,aACN8B,MAAM,UACNiN,aAAa,MACb3C,QAAOue,GAAaD,UAAUza,SAAU0X,GAAMgD,GAAaD,WAC3D1b,WAC2C,IAAzC2b,GAAaD,UAAUza,OAAOnB,SAC7B6Y,GAAMgD,GAAaD,YACpB,gBAEFkI,WAAY,CACVa,UAAW,KAEbP,UAAU,WAGd,sBACExzB,UAAU,eACVmC,MAAO,CACLsE,QAAS,OACTmV,SAAU,OACV5W,WAAY,SACZgC,eAAgB,iBANpB,UASE,uBACE+H,KAAK,OACL5M,MAAO,CAAEsE,QAAS,QAClB3D,KAAK,OACL+K,GAAG,OACH7N,UAAU,OACViP,SAAU,SAACoM,GACTwX,GAAYxX,EAAElM,OAAO0b,MAAM,GAAG/nB,MAC9B0nB,GAAkBnP,EAAElM,OAAO0b,MAAM,IACjCH,GAAsBrP,EAAElM,OAAO0b,MAAM,GAAG9b,OAE1CilB,OAAO,qDAET,cAACllB,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAChBkS,MAAO+Y,GACPznB,MAAM,aACN8B,MAAM,UACNyZ,UAAQ,EACRxM,aAAa,QAEf,qBAAKrP,UAAU,eAAemC,MAAO,CAAEmI,UAAW,MAAlD,SACgB,KAAbyd,GACC,cAAClmB,EAAA,EAAD,CAAQe,QAAQ,YAAYb,QAlYtB,WACtBwmB,SAAS0L,eAAe,QAAQC,SAiYhB,SACE,cAAC,KAAD,MAGF,cAACryB,EAAA,EAAD,CACEe,QAAQ,YACRb,QAAS,WACP8wB,GAAY,IACZnI,GAAsB,IACtBF,MAEFpoB,MAAM,QAPR,SASE,cAAC,KAAD,gBAOZ,sBAAKpC,UAAU,gBAAf,UACE,cAACuS,GAAA,EAAD,CAAMpQ,MAAO,CAAEgyB,aAAc,QAA7B,SACE,sBACEn0B,UAAU,uBACVmC,MAAO,CACLoC,QAAS,OACT6B,YAAa,OACbC,aAAc,QALlB,UAQE,2CACA,qBAAKlE,MAAO,CAAEmC,UAAW,SAAzB,SAC8B,kBAA3B2mB,GAAaL,UACV5B,EAAOhmB,KAAI,SAACyhB,EAAMhP,GAAP,QAnxBN5H,EAmxBM,OACT,cAACumB,GAAA,EAAD,CAEEhxB,UAAU,MACVjB,MAAO,CACLvC,UAAW,eACX4S,OAAQ,iBAEVhK,gBAAc,EAPhB,SASE,cAACxC,GAAA,EAAD,UACE,sBACE7D,MAAO,CACLsE,QAAS,OACTO,eAAgB,gBAChBlK,MAAO,QAJX,UAOE,sCAAO2Y,EAAQ,EAAf,cAryBH5H,EAqyBuC,UAACmb,EAAOvT,UAAR,aAAC,EAAe8M,QApyB3D,IAAfxH,OAAOlN,GAAkB,WACV,IAAfkN,OAAOlN,GAAkB,UACtB,YAkyBmB,gDACNsb,GAAOzT,MAAK,SAACsQ,GAAD,aAAW,UAAAgD,EAAOvT,UAAP,eAAe+M,QAASwD,EAAMnY,aAD/C,aACN,EAA0D/K,KADpD,qBAEE2hB,QAFF,IAEEA,OAFF,EAEEA,EAAM9B,OAFR,mBAGI8B,QAHJ,IAGIA,OAHJ,EAGIA,EAAM7B,SAHV,2CAIN6B,QAJM,IAINA,OAJM,EAINA,EAAM5B,YACA,mBAAG1gB,MAAO,CAAEC,MAAO,UAAWsF,WAAY,QAA1C,WACQ,OAAJ+c,QAAI,IAAJA,OAAA,EAAAA,EAAMqH,OAAN,OAAcrH,QAAd,IAAcA,OAAd,EAAcA,EAAMqH,MAAQ,GAAGgI,eAAe,QAAS,CACvD3xB,MAAO,WACPouB,SAAU,gBAxBb9a,MA+BTuT,EAAOhmB,KAAI,SAACyhB,EAAMhP,GAAP,aACT,cAAC2e,GAAA,EAAD,CAEEhxB,UAAU,MACVjB,MAAO,CACLvC,UAAW,eACX4S,OAAQ,iBAEVhK,gBAAc,EAPhB,SASE,cAACxC,GAAA,EAAD,UACE,sBACE7D,MAAO,CACLsE,QAAS,OACTO,eAAgB,gBAChBlK,MAAO,QAJX,UAOE,sCAAO2Y,EAAQ,EAAf,uBACEoU,GAAOnU,MAAK,SAAC2O,GAAD,aAAW,UAAA2E,EAAOvT,UAAP,eAAe+M,QAAS6B,EAAMxW,aADvD,aACE,EAA0D/K,KAD5D,uBAEe2hB,EAAK9B,OAFpB,mCAGN8B,EAAK7B,SAHC,YAGW6B,EAAK5B,YAChB,mBAAG1gB,MAAO,CAAEC,MAAO,UAAWsF,WAAY,QAA1C,WACQ,OAAJ+c,QAAI,IAAJA,OAAA,EAAAA,EAAMqH,OAAN,OAAcrH,QAAd,IAAcA,OAAd,EAAcA,EAAMqH,MAAQ,GAAGgI,eAAe,QAAS,CACvD3xB,MAAO,WACPouB,SAAU,gBAvBb9a,aAkCnB,cAACK,GAAA,EAAD,CACE1S,UAAW2S,KACX5T,MAAO,CACLpC,OAAQ,oBACRuE,UAAW,SAJf,SAOE,cAAC0R,GAAA,EAAD,CAAO/W,GAAI,CAAE0U,SAAU,KAAO1B,KAAK,QAAQgE,aAAW,gBAAtD,SACE,eAACC,GAAA,EAAD,WACE,eAACE,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAMnU,MAAO,CAAE0R,SAAU,QAAzD,sBAGA,cAACwC,GAAA,EAAD,CAAW/C,MAAM,QAAQnR,MAAO,CAAE0R,SAAU,QAA5C,SACGyY,GAAYwH,eAAe,QAAS,CACnC3xB,MAAO,WACPouB,SAAU,aAIhB,eAACna,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAMnU,MAAO,CAAE0R,SAAU,QAAzD,qBAGA,cAACwC,GAAA,EAAD,CAAW/C,MAAM,QAAQnR,MAAO,CAAE0R,SAAU,QAA5C,SACGkb,GAAY+E,eAAe,QAAS,CACnC3xB,MAAO,WACPouB,SAAU,aAIhB,eAACna,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAMnU,MAAO,CAAE0R,SAAU,QAAzD,2BAGA,cAACwC,GAAA,EAAD,CAAW/C,MAAM,QAAQnR,MAAO,CAAE0R,SAAU,QAA5C,SACGwV,GAAayK,eAAe,QAAS,CACpC3xB,MAAO,WACPouB,SAAU,aAIhB,eAACna,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAMnU,MAAO,CAAE0R,SAAU,QAAzD,iBAGA,cAACwC,GAAA,EAAD,CAAW/C,MAAM,QAAQnR,MAAO,CAAE0R,SAAU,QAA5C,SACGsY,GAASG,GAAaP,GAAKgD,GAAa7C,IAAU4H,eAAe,QAAS,CACzE3xB,MAAO,WACPouB,SAAU,aAIhB,eAACna,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAMnU,MAAO,CAAE0R,SAAU,QAAzD,SACE,mBAAG1R,MAAO,CAAEuF,WAAY,OAAxB,qBAEF,cAAC2O,GAAA,EAAD,CAAW/C,MAAM,QAAQnR,MAAO,CAAE0R,SAAU,QAA5C,SACE,mBAAG1R,MAAO,CAAEuF,WAAY,OAAxB,UAEIskB,GAAWM,GAAaP,GAAKgD,GAAa7C,IAAYnR,OAAOsO,KAC7DyK,eAAe,QAAS,CACxB3xB,MAAO,WACPouB,SAAU,sBAQxB,qBAAKvwB,UAAU,UAAf,SACGoO,GACC,cAACmB,GAAA,EAAD,CAAkBpN,MAAO,CAAEmI,UAAW,UAEtC,cAACzI,EAAA,EAAD,CACEe,QAAQ,YACRb,QAASqtB,GACTjtB,MAAO,CAAErF,MAAO,MAAOsB,OAAQ,UAHjC,oCAYV,eAACuU,GAAA,EAAD,CAAWxQ,MAAO,CAAErF,MAAO,OAAQ+R,SAAU,KAAMvE,UAAW,QAA9D,UACE,cAACxF,EAAA,EAAD,CAAOC,UAAU,MAAMC,WAAW,SAASgC,eAAe,gBAAgBoD,GAAI,EAA9E,SACE,cAACzH,EAAA,EAAD,CAAYC,QAAQ,KAAKgQ,cAAY,EAArC,+BAKF,eAACL,GAAA,EAAD,WACE,cAAChN,GAAD,UACE,cAACuQ,GAAA,EAAD,CAAgB7W,GAAI,CAAE0U,SAAU,KAAhC,SACE,eAACqC,GAAA,EAAD,WACE,cAACsC,GAAD,CACEC,MAAOA,EACPC,QAASA,EACTC,UAAWsF,GACX2B,SAAUuK,GAAe7a,OACzB4I,YAAaqG,EAASjP,OACtBsJ,cAznBU,SAACxJ,EAAO+J,GAEhCmF,EADc5F,IAAYS,GAAsB,QAAVV,EACrB,OAAS,OAC1BgG,EAAWtF,IAunBG0G,iBApnBa,SAACzQ,GAC5B,GAAIA,EAAMC,OAAO4C,QAAjB,CACE,IAAM6N,EAAelB,GAAS1b,KAAI,SAAC6c,GAAD,OAAOA,EAAE/c,QAC3Cwb,EAAYsB,QAGdtB,EAAY,OAgnBA,eAACpI,GAAA,EAAD,WACGoJ,GAActc,KAAI,SAAC8c,GAClB,IAAQjS,EAAgBiS,EAAhBjS,GAAIqhB,EAAYpP,EAAZoP,QACNnP,GAAsD,IAArC1B,EAAS2B,QAAT,OAAiBkP,QAAjB,IAAiBA,OAAjB,EAAiBA,EAASpsB,MAEjD,OACE,eAACsT,GAAA,EAAD,CACE6J,OAAK,EAELC,UAAW,EACXne,QAAS,WAEPjB,OAAOM,KAAP,UACKN,OAAOgN,SAASumB,OADrB,8BACiDvU,EAAIjS,IACnD,SACA,wBAGJpD,KAAK,WACL4T,SAAU0B,EACVI,eAAcJ,EACd5d,MAAO,CAAEqR,OAAQ,WAfnB,UAiBE,cAAC6C,GAAA,EAAD,CAAW/C,MAAM,OAAjB,SACGghB,KAAM,OAACxU,QAAD,IAACA,OAAD,EAACA,EAAKyU,YAAYC,OAAO,gBAElC,cAACne,GAAA,EAAD,CAAW/C,MAAM,OAAjB,UACM,OAAHwM,QAAG,IAAHA,OAAA,EAAAA,EAAK2U,cACFH,KAAM,OAACxU,QAAD,IAACA,OAAD,EAACA,EAAK2U,cAAcD,OAAO,cACjC,OAEN,cAACne,GAAA,EAAD,CAAW/C,MAAM,OAAjB,SACGyH,OAAM,OAAC+E,QAAD,IAACA,OAAD,EAACA,EAAKsQ,cAAc0D,eAAe,QAAS,CACjD3xB,MAAO,WACPouB,SAAU,YA1BT1iB,MAgCVqkB,GAAY,GACX,cAAC9b,GAAA,EAAD,CAAUjU,MAAO,CAAE/D,OAAQ,GAAK8zB,IAAhC,SACE,cAAC7b,GAAA,EAAD,CAAW+J,QAAS,SAIzBb,IACC,cAACrJ,GAAA,EAAD,UACE,cAACE,GAAA,EAAD,UACE,cAACC,GAAA,EAAD,CAAW/C,MAAM,SAAS8M,QAAS,EAAGnhB,GAAI,CAAEsE,GAAI,GAAhD,SACG8mB,GACC,qBAAKloB,MAAO,CAAErF,MAAO,QAArB,SACE,cAACyS,GAAA,EAAD,CAAkBpN,MAAO,CAAEoR,UAAW,cAGxC,cAAC8E,GAAD,CAAgBgI,YAAahH,iBAS7C,cAACiH,GAAA,EAAD,CACEC,mBAAoB,CAAC,IACrBnd,UAAU,MACVod,MAAOtC,EACPN,YAAaA,EACbC,KAAMA,EACN4C,aAAczB,GACd0B,oBArqBsB,SAACxR,GAC/BuP,EAAekC,SAASzR,EAAMC,OAAOH,MAAO,KAC5CiP,EAAQ,eC3pBZ,IAAMF,GAAa,CACjB,CAAElQ,GAAI,KAAMvN,MAAO,WAAYuY,YAAY,GAC3C,CAAEhL,GAAI,UAAWvN,MAAO,eAAgBuY,YAAY,GACpD,CAAEhL,GAAI,SAAUvN,MAAO,yBAA0BuY,YAAY,GAC7D,CAAEhL,GAAI,cAAevN,MAAO,aAAcuY,YAAY,GACtD,CAAEhL,GAAI,gBAAiBvN,MAAO,eAAgBuY,YAAY,GAC1D,CAAEhL,GAAI,SAAUvN,MAAO,eAAgBuY,YAAY,IAGtC,SAAS6b,KACtB,MAAwBvzB,mBAAS,GAAjC,mBAAO0c,EAAP,KAAaI,EAAb,KACA,EAAkC9c,mBAAS,GAA3C,mBAAO+c,EAAP,KAAkBC,EAAlB,KACA,EAA0Bhd,mBAAS,OAAnC,mBAAOoX,EAAP,KAAc6F,EAAd,KACA,EAAgCjd,mBAAS,IAAzC,mBAAOkd,EAAP,KAAiBC,EAAjB,KACA,EAA8Bnd,mBAAS,QAAvC,mBAAOqX,EAAP,KAAgB+F,EAAhB,KACA,EAAoCpd,mBAAS,IAA7C,mBAAOkY,EAAP,KAAmBmF,EAAnB,KACA,EAAsCrd,mBAAS,IAA/C,mBAAOyc,EAAP,KAAoBa,EAApB,KACA,EAAgCtd,mBAAS,IAAzC,mBAAOud,EAAP,KAAiBC,EAAjB,KACA,EAA8Bxd,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KAEM/M,EAAWC,cAEjB0I,qBAAU,YACI,uCAAG,kCAAAvI,EAAA,6DACbid,EAAY,IACNb,GACJzE,EAAW5b,SAAS,KAApB,aAAiC4b,EAAWwF,MAAM,KAAK,IAAOxF,GAC9DyF,cACFzQ,GAAW,GALE,SAMUlC,GAAS,GAAD,OAC1Bc,uCAD0B,+CACiD2Q,EADjD,iBACqEC,EADrE,iBACkFC,GAC/G,CACE5Q,OAAQ,QATC,cAMPL,EANO,OAabwB,GAAW,GAbE,SAcMxB,EAASE,KAdf,OAcPA,EAdO,OAeW,MAApBF,EAASjB,SACX+S,EAAW,OAAC5R,QAAD,IAACA,OAAD,EAACA,EAAMA,MAClBoR,EAAY,OAACpR,QAAD,IAACA,GAAD,UAACA,EAAMa,YAAP,aAAC,EAAYwB,SAjBd,4CAAH,qDAoBZ2P,KAEC,CAAC1F,EAAYuE,EAAaC,IAE7B,IAeMmB,EAAgB,uCAAG,WAAO9P,EAAO+P,GAAd,SAAAvd,EAAA,sDACvBuc,EAAQgB,GACRN,EAAY,IAFW,2CAAH,wDAUhBO,EAAgB,SAAChQ,GACrB+O,EAAQ,GACRO,EAActP,EAAMC,OAAOH,QAGvBmQ,EAAyBC,mBAAQ,kBAAMC,oBAASH,EAAe,OAAM,IAErEI,EAAgBZ,EAEhBa,EAA0C,IAAzBD,EAAclQ,OAErC,OACE,cAAC,GAAD,UACE,eAACuD,GAAA,EAAD,CAAWxQ,MAAO,CAAErF,MAAO,OAAQ+R,SAAU,MAA7C,UACE,cAAC/J,EAAA,EAAD,CAAOC,UAAU,MAAMC,WAAW,SAASgC,eAAe,gBAAgBvH,GAAI,EAA9E,SACE,cAACkD,EAAA,EAAD,CAAYC,QAAQ,KAAKgQ,cAAY,EAArC,8BAKF,eAACL,GAAA,EAAD,WACE,cAAC4G,GAAD,CACEnB,YAAaqG,EAASjP,OACtBiK,WAAYA,EACZpB,aAAckH,EACdrc,KAAK,WAGP,cAACyC,GAAD,UACE,cAACuQ,GAAA,EAAD,CAAgB7W,GAAI,CAAE0U,SAAU,KAAhC,SACE,eAACqC,GAAA,EAAD,WACE,cAACsC,GAAD,CACEC,MAAOA,EACPC,QAASA,EACTC,UAAWsF,GACX2B,SAAUhB,EAAStP,OACnB4I,YAAaqG,EAASjP,OACtBsJ,cA9DU,SAACxJ,EAAO+J,GAEhCmF,EADc5F,IAAYS,GAAsB,QAAVV,EACrB,OAAS,OAC1BgG,EAAWtF,IA4DG0G,iBAzDa,SAACzQ,GAC5B,GAAIA,EAAMC,OAAO4C,QAAjB,CACE,IAAM6N,EAAelB,EAAS1b,KAAI,SAAC6c,GAAD,OAAOA,EAAE/c,QAC3Cwb,EAAYsB,QAGdtB,EAAY,OAqDA,cAACpI,GAAA,EAAD,iBACGoJ,QADH,IACGA,OADH,EACGA,EAAetc,KAAI,SAAC8c,GAAS,IAAD,IACnBjS,EAAgBiS,EAAhBjS,GAAIqhB,EAAYpP,EAAZoP,QACNnP,GAAsD,IAArC1B,EAAS2B,QAAT,OAAiBkP,QAAjB,IAAiBA,OAAjB,EAAiBA,EAASpsB,MAEjD,OACE,eAACsT,GAAA,EAAD,CACE6J,OAAK,EAELC,UAAW,EACXne,QAAS,WACPT,EAAS,sBAAD,OAAuBwe,EAAIjS,MAErCpD,KAAK,WACL4T,SAAU0B,EACVI,eAAcJ,EACd5d,MAAO,CAAEqR,OAAQ,WAVnB,UAYE,eAAC6C,GAAA,EAAD,wBAAeyJ,QAAf,IAAeA,OAAf,EAAeA,EAAKjS,MACpB,cAACwI,GAAA,EAAD,CAAWzT,QAAQ,YAAYC,QAAM,EAArC,gBACGid,QADH,IACGA,GADH,UACGA,EAAKoP,eADR,aACG,EAAcpsB,OAEjB,cAACuT,GAAA,EAAD,CAAW/C,MAAM,OAAjB,gBAAyBwM,QAAzB,IAAyBA,GAAzB,UAAyBA,EAAKoP,eAA9B,aAAyB,EAAcpV,SACvC,cAACzD,GAAA,EAAD,CAAW/C,MAAM,OAAjB,SACGghB,KAAM,OAACxU,QAAD,IAACA,OAAD,EAACA,EAAKyU,YAAYC,OAAO,gBAElC,cAACne,GAAA,EAAD,CAAW/C,MAAM,OAAjB,UACM,OAAHwM,QAAG,IAAHA,OAAA,EAAAA,EAAK2U,cACFH,KAAM,OAACxU,QAAD,IAACA,OAAD,EAACA,EAAK2U,cAAcD,OAAO,cACjC,OAEN,cAACne,GAAA,EAAD,CAAW/C,MAAM,OAAjB,SACGyH,OAAM,OAAC+E,QAAD,IAACA,OAAD,EAACA,EAAKsQ,cAAc0D,eAAe,QAAS,CACjD3xB,MAAO,WACPouB,SAAU,YA1BT1iB,QAiCZ0R,GACC,cAACrJ,GAAA,EAAD,UACE,cAACE,GAAA,EAAD,UACE,cAACC,GAAA,EAAD,CAAW/C,MAAM,SAAS8M,QAAS,EAAGnhB,GAAI,CAAEsE,GAAI,GAAhD,SACG6K,EACC,qBAAKjM,MAAO,CAAErF,MAAO,QAArB,SACE,cAACyS,GAAA,EAAD,CAAkBpN,MAAO,CAAEoR,UAAW,cAGxC,cAAC8E,GAAD,CAAgBgI,YAAahH,iBAS7C,cAACiH,GAAA,EAAD,CACEC,mBAAoB,CAAC,GAAI,GAAI,KAC7Bnd,UAAU,MACVod,MAAOtC,EACPN,YAAaA,EACbC,KAAMA,EACN4C,aAAczB,EACd0B,oBA/GsB,SAACxR,GAC/BuP,EAAekC,SAASzR,EAAMC,OAAOH,MAAO,KAC5CiP,EAAQ,IA8GA2C,iBAAiB,4B,yBCzLtB,SAAS+T,GAAeC,GAC7B,OAAOhzB,mBAAQizB,KAAQD,GAAQJ,OAAO,SAAU,MAAO,ICTzD,IAAM3wB,GAAY7F,YAAOuU,KAAPvU,EAAa,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CAC7CwC,UAAW,OACX2T,UAAW,SACXhP,QAASnH,EAAMoH,QAAQ,EAAG,GAC1BpC,MAAOhF,EAAMsB,QAAQ6H,UAAUuuB,OAC/B7wB,gBAAiB7G,EAAMsB,QAAQ6H,UAAUwuB,YAGrCC,GAAmBh3B,YAAO,MAAPA,EAAc,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CACrDoV,OAAQ,OACR/L,QAAS,OACTlI,aAAc,MACdyG,WAAY,SACZlI,MAAOM,EAAMoH,QAAQ,GACrBpG,OAAQhB,EAAMoH,QAAQ,GACtBwC,eAAgB,SAChBmtB,aAAc/2B,EAAMoH,QAAQ,GAC5BpC,MAAOhF,EAAMsB,QAAQ6H,UAAU6N,KAC/B6gB,gBAAgB,2BAAD,OAA6Bp2B,YAAMzB,EAAMsB,QAAQ6H,UAAU6N,KAAM,GAAjE,gBAA2EvV,YACxFzB,EAAMsB,QAAQ6H,UAAU6N,KACxB,KAFa,cAQF,SAAS8gB,GAAcnvB,GACpC,OACE,eAAC,GAAD,WACE,cAACivB,GAAD,UACE,cAAC,IAAD,CAAMz0B,KAAK,gBAAgBzD,MAAO,GAAIsB,OAAQ,OAEhD,cAACuE,EAAA,EAAD,CAAYC,QAAQ,KAApB,SAA0B+xB,GAAc,OAAC5uB,QAAD,IAACA,OAAD,EAACA,EAAOovB,WAChD,cAACxyB,EAAA,EAAD,CAAYC,QAAQ,YAAY3D,GAAI,CAAEqG,QAAS,KAA/C,+BCjCN,IAAMzB,GAAY7F,YAAOuU,KAAPvU,EAAa,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CAC7CwC,UAAW,OACX2T,UAAW,SACXhP,QAASnH,EAAMoH,QAAQ,EAAG,GAC1BpC,MAAOhF,EAAMsB,QAAQ8I,KAAKstB,OAC1B7wB,gBAAiB7G,EAAMsB,QAAQ8I,KAAKutB,YAGhCC,GAAmBh3B,YAAO,MAAPA,EAAc,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CACrDoV,OAAQ,OACR/L,QAAS,OACTlI,aAAc,MACdyG,WAAY,SACZlI,MAAOM,EAAMoH,QAAQ,GACrBpG,OAAQhB,EAAMoH,QAAQ,GACtBwC,eAAgB,SAChBmtB,aAAc/2B,EAAMoH,QAAQ,GAC5BpC,MAAOhF,EAAMsB,QAAQ8I,KAAK4M,KAC1B6gB,gBAAgB,2BAAD,OAA6Bp2B,YAAMzB,EAAMsB,QAAQ8I,KAAK4M,KAAM,GAA5D,gBAAsEvV,YACnFzB,EAAMsB,QAAQ8I,KAAK4M,KACnB,KAFa,cAUF,SAASghB,GAAYrvB,GAClC,OACE,eAAC,GAAD,WACE,cAAC,GAAD,UACE,cAAC,IAAD,CAAMxF,KAAK,wBAAwBzD,MAAO,GAAIsB,OAAQ,OAExD,cAACuE,EAAA,EAAD,CAAYC,QAAQ,KAApB,SAA0B+xB,GAAc,OAAC5uB,QAAD,IAACA,OAAD,EAACA,EAAO2Y,YAChD,cAAC/b,EAAA,EAAD,CAAYC,QAAQ,YAAY3D,GAAI,CAAEqG,QAAS,KAA/C,+BCnCN,IAAMzB,GAAY7F,YAAOuU,KAAPvU,EAAa,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CAC7CwC,UAAW,OACX2T,UAAW,SACXhP,QAASnH,EAAMoH,QAAQ,EAAG,GAC1BpC,MAAOhF,EAAMsB,QAAQ22B,QAAQP,OAC7B7wB,gBAAiB7G,EAAMsB,QAAQ22B,QAAQN,YAGnCC,GAAmBh3B,YAAO,MAAPA,EAAc,gBAAGZ,EAAH,EAAGA,MAAH,MAAgB,CACrDoV,OAAQ,OACR/L,QAAS,OACTlI,aAAc,MACdyG,WAAY,SACZlI,MAAOM,EAAMoH,QAAQ,GACrBpG,OAAQhB,EAAMoH,QAAQ,GACtBwC,eAAgB,SAChBmtB,aAAc/2B,EAAMoH,QAAQ,GAC5BpC,MAAOhF,EAAMsB,QAAQ22B,QAAQjhB,KAC7B6gB,gBAAgB,2BAAD,OAA6Bp2B,YAAMzB,EAAMsB,QAAQ22B,QAAQjhB,KAAM,GAA/D,gBAAyEvV,YACtFzB,EAAMsB,QAAQ22B,QAAQjhB,KACtB,KAFa,cAUF,SAASkhB,GAAevvB,GACrC,OACE,eAAC,GAAD,WACE,cAAC,GAAD,UACE,cAAC,IAAD,CAAMxF,KAAK,uBAAuBzD,MAAO,GAAIsB,OAAQ,OAEvD,cAACuE,EAAA,EAAD,CAAYC,QAAQ,KAApB,SAA0B+xB,GAAc,OAAC5uB,QAAD,IAACA,OAAD,EAACA,EAAOwvB,UAChD,cAAC5yB,EAAA,EAAD,CAAYC,QAAQ,YAAY3D,GAAI,CAAEqG,QAAS,KAA/C,6BC1CC,IAAMkwB,GAAwB,uCAAG,4BAAA9zB,EAAA,sEACfyK,GAAS,GAAD,OAC1Bc,uCAD0B,6BAE7B,CACEC,OAAQ,QAJ0B,cAChCL,EADgC,yBAO/BA,GAP+B,2CAAH,qDAUxB4oB,GAAsB,uCAAG,4BAAA/zB,EAAA,sEACbyK,GAAS,GAAD,OAC1Bc,uCAD0B,2BAE7B,CACEC,OAAQ,QAJwB,cAC9BL,EAD8B,yBAO7BA,GAP6B,2CAAH,qDAUtB6oB,GAA6B,uCAAG,4BAAAh0B,EAAA,sEACpByK,GAAS,GAAD,OAC1Bc,uCAD0B,4BAE7B,CACEC,OAAQ,QAJ+B,cACrCL,EADqC,yBAOpCA,GAPoC,2CAAH,qDCP3B,SAAS8oB,KACtB,MAAgCx0B,mBAAS,GAAzC,mBAAOud,EAAP,KAAiBC,EAAjB,KACA,EAA4Bxd,mBAAS,GAArC,mBAAOo0B,EAAP,KAAeK,EAAf,KACA,EAA8Bz0B,mBAAS,GAAvC,mBAAOg0B,EAAP,KAAgBU,EAAhB,KAuCA,OArCA5rB,qBAAU,YACgB,uCAAG,gCAAAvI,EAAA,sEACP8zB,KADO,cACnB3E,EADmB,gBAENA,EAAI9jB,KAFE,OAEnBA,EAFmB,OAGN,MAAf8jB,EAAIjlB,OAAgBiqB,EAAU,OAAC9oB,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAY+oB,eACvB,MAAfjF,EAAIjlB,SACXkB,KAAKC,EAAKC,QAAS,qBAAsB,SACzC6kB,YAAW,WACT/wB,OAAOC,aAAaiN,QACpBlN,OAAOgN,SAASC,WACf,MAToB,2CAAH,qDAYxBgoB,GAEiB,uCAAG,8BAAAr0B,EAAA,sEACA+zB,KADA,cACZ5E,EADY,gBAECA,EAAI9jB,KAFL,OAEZA,EAFY,OAGlB6oB,EAAU7oB,EAAKA,KAAKipB,cAHF,2CAAH,oDAKjBC,GAEmB,uCAAG,gCAAAv0B,EAAA,sEACOg0B,KADP,cACdQ,EADc,gBAEDA,EAAanpB,KAFZ,OAEdA,EAFc,OAGQ,MAAxBmpB,EAAatqB,SACfkB,KAAKC,EAAKC,QAAS,qBAAsB,SACzC6kB,YAAW,WACT/wB,OAAOC,aAAaiN,QACpBlN,OAAOgN,SAASC,WACf,MAEuB,MAAxBmoB,EAAatqB,QAAgB+S,EAAW,OAAC5R,QAAD,IAACA,GAAD,UAACA,EAAMA,YAAP,aAAC,EAAYopB,eAVrC,2CAAH,oDAYnBtI,KAEC,IAED,cAAC,GAAD,UACE,eAAClb,GAAA,EAAD,CAAW9D,SAAS,KAApB,UACE,cAACrM,EAAA,EAAD,CAAKvD,GAAI,CAAEm3B,GAAI,GAAf,SACE,cAACzzB,EAAA,EAAD,CAAYC,QAAQ,KAApB,gCAEF,eAAC0S,GAAA,EAAD,CAAMC,WAAS,EAAC/Q,QAAS,EAAzB,UACE,cAAC8Q,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAIC,GAAI,EAAG4N,GAAI,EAA9B,SACE,cAACwiB,GAAD,CAAgBC,OAAQA,MAE1B,cAACjgB,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAIC,GAAI,EAAG4N,GAAI,EAA9B,SACE,cAACsiB,GAAD,CAAa1W,SAAUA,MAEzB,cAACpJ,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAIC,GAAI,EAAG4N,GAAI,EAA9B,SACE,cAACoiB,GAAD,CAAeC,QAASA,MAE1B,cAAC7f,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAIC,GAAI,GAAI4N,GAAI,GAA/B,SACE,cAAC4hB,GAAD,c,cCjEC2B,GAAmB,CAC9B,eACA,mBACA,qBACA,aACA,YACA,aCeItY,GAAa,CACjB,CAAElQ,GAAI,KAAMvN,MAAO,WAAYuY,YAAY,GAC3C,CAAEhL,GAAI,UAAWvN,MAAO,eAAgBuY,YAAY,GACpD,CAAEhL,GAAI,SAAUvN,MAAO,0BAA2BuY,YAAY,GAC9D,CAAEhL,GAAI,cAAevN,MAAO,aAAcuY,YAAY,GACtD,CAAEhL,GAAI,gBAAiBvN,MAAO,eAAgBuY,YAAY,GAC1D,CAAEhL,GAAI,SAAUvN,MAAO,eAAgBuY,YAAY,GACnD,CAAEhL,GAAI,eAAgBvN,MAAO,eAAgBuY,YAAY,IAG3D,SAASyd,GAAgBzoB,GACvB,MAAW,iBAAPA,EAA8B,OACvB,qBAAPA,EAAkC,UAC3B,uBAAPA,EAAoC,UAC7B,eAAPA,GACO,cAAPA,EAD4B,QAEzB,UAGM,SAAS0oB,KAAgB,IAAD,oBAC/BC,GACJ,UAAA11B,OAAOgN,SAASiR,cAAhB,mBAAwBF,MAAM,KAAK,UAAnC,eAAuCA,MAAM,KAAK,GAAGjd,QAAQ,OAAQ,OAAQ,GACzE6lB,GACJ,UAAA3mB,OAAOgN,SAASiR,cAAhB,mBAAwBF,MAAM,KAAK,UAAnC,eAAuCA,MAAM,KAAK,GAAGjd,QAAQ,OAAQ,OAAQ,GACzE4lB,EAAYzM,OAAM,UAACja,OAAOgN,SAASiR,cAAjB,iBAAC,EAAwBF,MAAM,KAAK,UAApC,aAAC,EAAuCA,MAAM,KAAK,KAAO,EAC5E0I,EAAmBxM,OAAM,UAACja,OAAOgN,SAASiR,cAAjB,iBAAC,EAAwBF,MAAM,KAAK,UAApC,aAAC,EAAuCA,MAAM,KAAK,KAAO,GACzF,EAAwB1d,mBAAS,GAAjC,mBAAO0c,EAAP,KAAaI,EAAb,KACA,EAA0C9c,mBAAS,IAAnD,mBAAOs1B,EAAP,KAAsBC,EAAtB,KACA,EAAkCv1B,mBAAS,GAA3C,mBAAO+c,EAAP,KAAkBC,EAAlB,KACA,EAA0Bhd,mBAAS,OAAnC,mBAAOoX,EAAP,KAAc6F,EAAd,KACA,EAAgCjd,mBAAS,IAAzC,mBAAOkd,EAAP,KAAiBC,EAAjB,KACA,EAA8Bnd,mBAAS,QAAvC,mBAAOqX,EAAP,KAAgB+F,EAAhB,KACMoY,GACJ,UAAA71B,OAAOgN,SAASiR,cAAhB,mBAAwBF,MAAM,KAAK,UAAnC,eAAuCA,MAAM,KAAK,GAAGjd,QAAQ,OAAQ,OAAQ,GACzEg1B,GACJD,EAAYl5B,SAAS,OAArB,WAAkCk5B,EAAY9X,MAAM,OAAO,IAAO8X,GAClE7X,cACF,EAAoC3d,mBAASy1B,GAA7C,mBAAOvd,EAAP,KAAmBmF,GAAnB,KACA,GAAsCrd,mBAAS,IAA/C,qBAAOyc,GAAP,MAAoBa,GAApB,MACA,GAAgCtd,mBAAS,IAAzC,qBAAOud,GAAP,MAAiBC,GAAjB,MACA,GAA8Bxd,oBAAS,GAAvC,qBAAOiN,GAAP,MAAgBC,GAAhB,MAEM/M,GAAWC,cAEjB0I,qBAAU,YACI,uCAAG,oCAAAvI,EAAA,6DACb2M,IAAW,GACXsQ,GAAY,IACZV,EAAQuJ,GACRkP,EAAiBjP,GACjBhJ,GAAe8I,GACf/I,IACE,UAAA1d,OAAOgN,SAASiR,cAAhB,mBAAwBF,MAAM,KAAK,UAAnC,eAAuCA,MAAM,KAAK,GAAGjd,QAAQ,OAAQ,OAAQ,IAEzEkc,GACJ0Y,EAAkB/4B,SAAS,KAA3B,aACU+4B,EAAkB3X,MAAM,KAAK,IACnC2X,GACJ1X,cAbW,SAcUwI,GACrBC,EACAC,EACA1J,EACA2J,GAlBW,cAcP5a,EAdO,OAoBbwB,IAAW,GApBE,UAqBMxB,EAASE,KArBf,QAqBPA,EArBO,OAsBb4R,GAAY5R,EAAKA,MACjBoR,EAAapR,EAAKa,KAAKwB,QAvBV,4CAAH,qDAyBZ2P,KAEC,CAACje,OAAOgN,SAASiR,SAEpB,IAeM8X,GAAmB,uCAAG,WAAO7nB,GAAP,SAAAtN,EAAA,sDAC1Bg1B,EAAiB1nB,GACjBX,IAAW,GACXsQ,GAAY,IACZR,EAAa,GACb7c,GAAS,gBAAD,OAAiBsc,GAAjB,0BAA8CvE,EAA9C,mBAAmErK,IALjD,2CAAH,sDAQnBgQ,GAAgB,uCAAG,WAAO9P,EAAO+P,GAAd,SAAAvd,EAAA,2DACnBud,EAAU,GADS,iDAEvBhB,EAAQgB,GACR5Q,IAAW,GACXsQ,GAAY,IACZR,EAAa,GACb7c,GAAS,gBAAD,OACUsc,GADV,iBAC8BqB,EAD9B,mBACgD5F,EADhD,mBACqEod,IAPtD,2CAAH,wDAyBhBvX,GAAgB,SAAChQ,GAAW,IAAD,QAC/B+O,EAAQ,GACR,IAAQjP,EAAUE,EAAMC,OAAhBH,MACF8O,GAAgB9O,EAAMvR,SAAS,KAAf,aAA4BuR,EAAM6P,MAAM,KAAK,IAAO7P,GAAO8P,cACjFxd,GAAS,gBAAD,OAEJyZ,OAAM,UAACja,OAAOgN,SAASiR,cAAjB,iBAAC,EAAwBF,MAAM,KAAK,UAApC,aAAC,EAAuCA,MAAM,KAAK,KAAO,GAF5D,0BAGYf,EAHZ,oBAIJ,UAAAhd,OAAOgN,SAASiR,cAAhB,mBAAwBF,MAAM,KAAK,UAAnC,eAAuCA,MAAM,KAAK,GAAGjd,QAAQ,OAAQ,OAAQ,KAGjF4c,GAActP,EAAMC,OAAOH,QAGvB8nB,GAAW,uCAAG,8BAAAp1B,EAAA,sDACZq1B,EAASxO,SAASC,cAAc,KACtCD,SAAS1N,KAAK8N,YAAYoO,IACpB9qB,EAAU,IAAI+qB,SACZhG,OAAO,gBAAf,iBAA0ClwB,OAAOC,aAAaC,QAAQ,WACtEqZ,MAAM,GAAD,OAAIpN,uCAAJ,UAAkD,CAAEhB,YACtD2lB,MAAK,SAAC/kB,GAAD,OAAcA,EAASoqB,UAC5BrF,MAAK,SAACsF,GACL,IAAMC,EAAYr2B,OAAOs2B,IAAIC,gBAAgBH,GAE7CH,EAAO5kB,KAAOglB,EACdJ,EAAOO,SAAP,cACAP,EAAO7C,QAEPpzB,OAAOs2B,IAAIG,gBAAgBJ,MAdb,2CAAH,qDAkBXhY,GAAyBC,mBAC7B,kBAAMC,oBAASH,GAAe,OAE9B,IAGII,GAAgBZ,GAEhBa,GAA0C,IAAzBD,GAAclQ,OAErC,OACE,cAAC,GAAD,CAAM7H,MAAM,6BAAZ,SACE,eAACoL,GAAA,EAAD,CAAWxQ,MAAO,CAAErF,MAAO,OAAQ+R,SAAU,MAA7C,UACE,eAAC/J,EAAA,EAAD,CAAOC,UAAU,MAAMC,WAAW,SAASgC,eAAe,gBAAgBoD,GAAI,EAA9E,UACE,cAACzH,EAAA,EAAD,CAAYC,QAAQ,KAAKgQ,cAAY,EAArC,2BAGA,cAAC/Q,EAAA,EAAD,CACEe,QAAQ,YACRb,QAAS+0B,GACTtX,UAAW,cAAC,IAAD,CAAMjf,KAAK,kBAHxB,+BASF,eAACgS,GAAA,EAAD,WACE,cAAC6G,GAAD,CACEpB,YAAaqG,EAASjP,OACtBiK,WAAYA,EACZpB,aAAckH,GACd5X,MAAM,SAJR,SAME,sBAAKpF,MAAO,CAAEsE,QAAS,OAAQ0D,cAAe,WAAYqtB,WAAY,QAAtE,UACE,eAACpT,GAAA,EAAD,CAAapkB,UAAU,0BAAvB,UACE,cAACmzB,GAAA,EAAD,CAAYtlB,GAAG,2BAAf,oCACA,cAACulB,GAAA,EAAD,CACE1O,QAAQ,2BACR7W,GAAG,qBACHmB,MAAOynB,EACPn2B,MAAM,yBACN2O,SAAU,SAACoM,GAAD,OAAOwb,GAAoBxb,EAAElM,OAAOH,QALhD,gBAOGqnB,SAPH,IAOGA,QAPH,EAOGA,GAAkBrzB,KAAI,SAAC4I,EAAQ6J,GAAT,OACrB,cAACvS,EAAA,EAAD,CAAsB8L,MAAOpD,EAA7B,SACGA,GADY6J,WAMpBghB,GACC,cAAC50B,EAAA,EAAD,CACEE,QAAS,WACP20B,EAAiB,IACjBp1B,GAAS,gBAAD,OACUsc,GADV,iBAC8BC,EAD9B,mBAC6CxE,EAD7C,cAHZ,wBAcN,cAAC9T,GAAD,UACE,cAACuQ,GAAA,EAAD,CAAgB7W,GAAI,CAAE0U,SAAU,KAAhC,SACE,eAACqC,GAAA,EAAD,WACE,cAACsC,GAAD,CACEC,MAAOA,EACPC,QAASA,EACTC,UAAWsF,GACX2B,SAAUhB,GAAStP,OACnB4I,YAAaqG,EAASjP,OACtBsJ,cA1JU,SAACxJ,EAAO+J,GAEhCmF,EADc5F,IAAYS,GAAsB,QAAVV,EACrB,OAAS,OAC1BgG,EAAWtF,IAwJG0G,iBArJa,SAACzQ,GAC5B,GAAIA,EAAMC,OAAO4C,QAAjB,CACE,IAAM6N,EAAelB,GAAS1b,KAAI,SAAC6c,GAAD,OAAOA,EAAE/c,QAC3Cwb,EAAYsB,QAGdtB,EAAY,OAiJA,cAACpI,GAAA,EAAD,UACGoJ,GAActc,KAAI,SAAC8c,GAClB,IAAQjS,EAAgBiS,EAAhBjS,GAAIqhB,EAAYpP,EAAZoP,QACNnP,GAAsD,IAArC1B,EAAS2B,QAAT,OAAiBkP,QAAjB,IAAiBA,OAAjB,EAAiBA,EAASpsB,MAEjD,OACE,eAACsT,GAAA,EAAD,CACE6J,OAAK,EAELC,UAAW,EACXne,QAAS,WACPT,GAAS,sBAAD,OAAuBwe,EAAIjS,MAErCpD,KAAK,WACL4T,SAAU0B,EACVI,eAAcJ,EACd5d,MAAO,CAAEqR,OAAQ,WAVnB,UAYE,eAAC6C,GAAA,EAAD,iBAAexI,KACf,cAACwI,GAAA,EAAD,iBAAY6Y,QAAZ,IAAYA,OAAZ,EAAYA,EAASpsB,OACrB,cAACuT,GAAA,EAAD,CAAW/C,MAAM,OAAjB,gBAAyB4b,QAAzB,IAAyBA,OAAzB,EAAyBA,EAASpV,SAClC,cAACzD,GAAA,EAAD,CAAW/C,MAAM,OAAjB,SACGghB,KAAM,OAACxU,QAAD,IAACA,OAAD,EAACA,EAAKyU,YAAYC,OAAO,gBAElC,cAACne,GAAA,EAAD,CAAW/C,MAAM,SAAjB,UACM,OAAHwM,QAAG,IAAHA,OAAA,EAAAA,EAAK2U,cACFH,KAAM,OAACxU,QAAD,IAACA,OAAD,EAACA,EAAK2U,cAAcD,OAAO,cACjC,OAEN,cAACne,GAAA,EAAD,CAAW/C,MAAM,OAAjB,SACGyH,OAAM,OAAC+E,QAAD,IAACA,OAAD,EAACA,EAAKsQ,cAAc0D,eAAe,QAAS,CACjD3xB,MAAO,WACPouB,SAAU,UAGd,cAACla,GAAA,EAAD,CAAW/C,MAAM,OAAjB,SACE,cAACgB,GAAD,CAAO1R,QAAQ,QAAQR,MAAOk0B,GAAe,OAACxW,QAAD,IAACA,OAAD,EAACA,EAAKlU,QAAnD,SACG6rB,aAAY,OAAC3X,QAAD,IAACA,OAAD,EAACA,EAAKlU,cA7BlBiC,QAoCZO,IACC,cAAC8H,GAAA,EAAD,UACE,eAACE,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,IACA,cAACA,GAAA,EAAD,CAAW/C,MAAM,SAAS8M,QAAS,EAAGnhB,GAAI,CAAEsE,GAAI,GAAhD,SACE,qBAAKpB,MAAO,CAAErF,MAAO,QAArB,SACE,cAACyS,GAAA,EAAD,CAAkBpN,MAAO,CAAEoR,UAAW,sBAM9CnF,IAAWmR,IACX,cAACrJ,GAAA,EAAD,UACE,eAACE,GAAA,EAAD,WACE,cAACC,GAAA,EAAD,IACA,cAACA,GAAA,EAAD,CAAW/C,MAAM,SAAS8M,QAAS,EAAGnhB,GAAI,CAAEsE,GAAI,GAAhD,SACE,cAAC8U,GAAD,CAAgB9Q,MAAM,mCAQpC,cAAC+Y,GAAA,EAAD,CACEC,mBAAoB,CAAC,GAAI,GAAI,KAC7Bnd,UAAU,MACVod,MAAOtC,EACPN,YAAaA,GACbC,KAAMA,EACN4C,aAAczB,GACd0B,oBAvMsB,SAACxR,GAC/BuP,GAAekC,SAASzR,EAAMC,OAAOH,MAAO,KAC5CiP,EAAQ,GACR5P,IAAW,GACXsQ,GAAY,IACZR,EAAa,GACb7c,GAAS,gBAAD,OACUqf,SACdzR,EAAMC,OAAOH,MACb,IAHI,0BAIaqK,EAJb,mBAIkCod,KA8LlC7V,iBAAiB,4B,sJCnUhB8W,GAAkB,SAAC,GAAc,IAAZ3qB,EAAW,EAAXA,KAChC,EAAwBmV,IAAM/gB,UAAS,GAAvC,mBAAOC,EAAP,KAAaC,EAAb,KACA,EAAwC6gB,IAAM/gB,SAAS,CACrDuK,KAAM,SACNC,KAAM,SACNpE,MAAO,GACPqE,OAAQ,YAJV,mBAAO+E,EAAP,KAAqBD,EAArB,KA6BA,EAA8CwR,IAAM/gB,SAAS4L,GAA7D,mBAAO4qB,EAAP,KAAwBC,EAAxB,KAEA,OACE,eAACtiB,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAIC,GAAI,EAAG4N,GAAI,GAA9B,UACE,eAACP,GAAA,EAAD,CACEpQ,MAAO,CACLoC,QAAS,OACT+F,UAAW,OACX7D,QAAS,OACT0D,cAAe,SACf0tB,aAAc,SACd/sB,cAAe,QAPnB,UAUE,mBACE3I,MAAO,CACL0R,SAAU,OACVnM,WAAY,MACZtB,YAAa,OACb+tB,aAAc,QALlB,8BAWA,eAAC3xB,EAAA,EAAD,CAAKY,UAAU,OAAOiM,aAAa,MAAnC,UACE,eAAC+U,GAAA,EAAD,CAAajiB,MAAO,CAAErF,MAAO,QAAU8F,QAAQ,WAA/C,UACE,cAACuwB,GAAA,EAAD,CAAY2E,QAAQ,8BAApB,8BACA,cAACvgB,GAAA,EAAD,CACE1J,GAAG,8BACHkB,KAAK,OACLC,MAAO2oB,EACPpwB,MAAOowB,EACPx1B,MAAO,CAAErF,MAAO,QAChB+e,SAAS,OACT5M,SAAU,SAACoM,GAAD,OAAOuc,EAAmBvc,EAAElM,OAAOH,QAC7CsC,aACE,cAACC,GAAA,EAAD,CAAgBjT,SAAS,MAAzB,SACE,cAACqG,EAAA,EAAD,CAAYsR,aAAW,6BAA6BlU,QAjDnD,WACf0D,UAAUsyB,UAAUC,UAAUL,GAC9BjnB,EAAgB,CACdhF,KAAM,SACNC,KAAM,SACNpE,MAAO,sBACPqE,OAAQ,YAjBVvK,GAAQ,IA4D6EoQ,KAAK,MAA5E,SACGkmB,GAAmB,cAAC,KAAD,QAI1Br3B,MAAM,wBAGV,qBAAK6B,MAAO,CAAErF,MAAO,OAAQ2J,QAAS,OAAQO,eAAgB,gBAA9D,SACGihB,GAAM0P,IACL,eAAC91B,EAAA,EAAD,CACEe,QAAQ,YACRb,QAAS,kBAAMjB,OAAOM,KAAKu2B,IAC3Bx1B,MAAO,CAAEqQ,OAAQ,OAAQlI,UAAW,OAAQuE,SAAU,eAHxD,uBAKY,cAAC,KAAD,CAA2B1M,MAAO,CAAEq1B,WAAY,oBAMpE,cAAC/rB,GAAD,CACEC,KAAMiF,EAAajF,KACnBC,KAAMgF,EAAahF,KACnBpE,MAAOoJ,EAAapJ,MACpBqE,OAAQ+E,EAAa/E,OACrBxK,KAAMA,EACNiB,QApFc,SAAC6M,EAAOmD,GACX,cAAXA,GAIJhR,GAAQ,U,sGCvBC42B,GAA0B,SAAClyB,GAAD,OACrC,cAACvD,EAAA,EAAD,CAAKvD,GAAI,CAAEnC,MAAO,QAAlB,SACE,eAACo7B,GAAA,EAAD,CAASC,WAAYpyB,EAAMoB,OAAQixB,YAAY,WAA/C,UACE,cAACC,GAAA,EAAD,CACEp5B,GAAI,CACF,sCAAuC,CACrCmD,MAAO,kBAET,oEAAqE,CACnEA,MAAO,YAET,mCAAoC,CAClCA,MAAO,kBAET,iEAAkE,CAChEA,MAAO,gBAET,qDAAsD,CACpDk2B,KAAM,iBAfZ,SAmBE,cAACC,GAAA,EAAD,8BAEI,OAALxyB,QAAK,IAALA,OAAA,EAAAA,EAAOyyB,YAA8B,KAAjBzyB,EAAMoB,QACzB,cAACkxB,GAAA,EAAD,CACEp5B,GAAI,CACF,wBAAyB,CACvBmD,MAAO,QAHb,SAOE,cAACm2B,GAAA,EAAD,CAAWh4B,KAAM,cAAC,KAAD,CAAuB4B,MAAO,CAAEC,MAAO,SAAxD,+BAKJ,cAACi2B,GAAA,EAAD,CACEp5B,GAAI,CACF,sCAAuC,CACrCmD,MAAO,WAET,oEAAqE,CACnEA,MAAO,YAET,mCAAoC,CAClCA,MAAO,WAET,iEAAkE,CAChEA,MAAO,gBAET,qDAAsD,CACpDk2B,KAAM,UAfZ,SAmBE,cAACC,GAAA,EAAD,CAAWh4B,KAAM,cAACk4B,GAAA,EAAD,CAASt2B,MAAO,CAAEC,MAAO2D,EAAMoB,OAAS,EAAI,OAAS,aAAtE,iCAII,OAALpB,QAAK,IAALA,OAAA,EAAAA,EAAOyyB,YAA8B,MAAjBzyB,EAAMoB,QACzB,cAACkxB,GAAA,EAAD,CACEp5B,GAAI,CACF,wBAAyB,CACvBmD,MAAO,QAHb,SAOE,cAACm2B,GAAA,EAAD,CAAWh4B,KAAM,cAAC,KAAD,CAAuB4B,MAAO,CAAEC,MAAO,SAAxD,+BAKJ,cAACi2B,GAAA,EAAD,CACEp5B,GAAI,CACF,sCAAuC,CACrCmD,MAAO,WAET,oEAAqE,CACnEA,MAAO,YAET,mCAAoC,CAClCA,MAAO,kBAET,iEAAkE,CAChEA,MAAO,gBAET,qDAAsD,CACpDk2B,KAAM,UAfZ,SAmBE,cAACC,GAAA,EAAD,CACEh4B,KAAM,cAAC,KAAD,CAAe4B,MAAO,CAAEC,MAAO2D,EAAMoB,OAAS,EAAI,OAAS,aADnE,kCAMF,cAACkxB,GAAA,EAAD,CACEp5B,GAAI,CACF,sCAAuC,CACrCmD,MAAO,OAET,oEAAqE,CACnEA,MAAO,YAET,mCAAoC,CAClCA,MAAO,kBAET,iEAAkE,CAChEA,MAAO,gBAET,qDAAsD,CACpDk2B,KAAM,UAfZ,SAmBE,cAACC,GAAA,EAAD,CAAWh4B,KAAM,cAACm4B,GAAA,EAAD,CAAev2B,MAAO,CAAEC,MAAO2D,EAAMoB,OAAS,EAAI,OAAS,SAA5E,0BAIF,cAACkxB,GAAA,EAAD,CACEp5B,GAAI,CACF,sCAAuC,CACrCmD,MAAO,SAET,oEAAqE,CACnEA,MAAO,YAET,mCAAoC,CAClCA,MAAO,kBAET,iEAAkE,CAChEA,MAAO,gBAET,qDAAsD,CACpDk2B,KAAM,UAfZ,SAmBE,cAACC,GAAA,EAAD,CAAWh4B,KAAM,cAACo4B,GAAA,EAAD,CAAex2B,MAAO,CAAEC,MAAO2D,EAAMoB,OAAS,EAAI,OAAS,WAA5E,+BCjJKyxB,GAAwB,SAAC,GAAD,IAAG7rB,EAAH,EAAGA,KAAH,OACnC,cAACuI,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAIC,GAAI,EAAG4N,GAAI,GAA9B,SACE,eAACP,GAAA,EAAD,CACEpQ,MAAO,CACLoC,QAAS,OACT+F,UAAW,OACX7D,QAAS,OACT0D,cAAe,SACf0tB,aAAc,SACd/sB,cAAe,QAPnB,UAUE,mBACE3I,MAAO,CACL0R,SAAU,OACVnM,WAAY,MACZtB,YAAa,OACb+tB,aAAc,QALlB,qCAWA,mBACEhyB,MAAO,CACLoR,UAAW,UACXM,SAAU,YAHd,SAMG9G,UCeM,SAAS8rB,KAAgB,IAAD,8DAC/Bv3B,EAAWC,cACTsM,EAAOirB,cAAPjrB,GACFkb,EAASjoB,OAAOC,aAAaC,QAAQ,UAC3C,EAAwCG,mBAAS,IAAjD,mBAAO8pB,EAAP,KAAqBC,EAArB,KACA,EAA8B/pB,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KACA,GAAsClN,oBAAS,GAA/C,qBAAO43B,GAAP,MAAoBC,GAApB,MACA,GAAwB73B,oBAAS,GAAjC,qBAAO83B,GAAP,MAAaC,GAAb,MACA,GAA0B/3B,oBAAS,GAAnC,qBAAOuL,GAAP,MAAcysB,GAAd,MACA,GAA8Bh4B,mBAAS,IAAvC,qBAAOsY,GAAP,MAAgByP,GAAhB,MACA,GAA4B/nB,mBAAS,IAArC,qBAAO4oB,GAAP,MAAeC,GAAf,MACA,GAAsC7oB,oBAAS,GAA/C,qBAAOsoB,GAAP,MAAoBC,GAApB,MACAzf,qBAAU,YACY,uCAAG,oCAAAvI,EAAA,6DACrB2M,GAAW,GADU,SAEEuY,GAAoB/Y,GAFtB,cAEfhB,EAFe,gBAGFA,EAASE,KAHP,OAII,OAAjB,QADFA,EAHe,cAIb,IAAJA,GAAA,UAAAA,EAAMa,YAAN,eAAY6e,OACdvB,EAAgBne,EAAKA,MACrB2c,GAAc,UAAC3c,EAAKA,YAAN,iBAAC,EAAWqsB,uBAAZ,aAAC,EAA4BnS,eACd,MAApBpa,EAASjB,QAAsC,MAApBiB,EAASjB,QAC7CtK,EAAS,aAAc,CAAEyY,MAAO,CAAExS,MAAO,6BAE3C8G,GAAW,GAVU,2CAAH,qDAYpBgrB,KAEC,CAACxrB,IAEJ,IAAMyrB,GAAkB,uCAAG,WAAOtS,GAAP,SAAAtlB,EAAA,0DACrBslB,GAAUyC,GADW,wBAEvB0P,IAAS,GACTH,IAAe,GAHQ,SAIjBjS,GAAoClZ,EAAImZ,GAJvB,OAKvBlmB,OAAOgN,SAASC,SAChBirB,IAAe,GACfE,IAAQ,GAPe,4BAQdzP,GARc,wBASvB0P,IAAS,GACTH,IAAe,GAVQ,UAWjB9R,GAAqBrZ,EAAIsZ,IAXR,QAYvBrmB,OAAOgN,SAASC,SAChBirB,IAAe,GACfE,IAAQ,GAde,wBAgBvBC,IAAS,GAhBc,4CAAH,sDA4BxB,GAAkCh4B,mBAAS,IAA3C,qBAAOgmB,GAAP,MAAkBoS,GAAlB,MACAtvB,qBAAU,WAAO,IAAD,EACRuvB,EAAgB,uCAAG,gCAAA93B,EAAA,sEACA6b,GAA8B,OAAC0N,QAAD,IAACA,GAAD,UAACA,EAAciE,eAAf,aAAC,EAAuBrhB,IADtD,cACjBhB,EADiB,gBAEJA,EAASE,KAFL,OAEjBA,EAFiB,OAGvBmc,GAAWnc,EAAKA,MAHO,2CAAH,0DAKY0sB,KAAlB,OAAZxO,QAAY,IAAZA,GAAA,UAAAA,EAAciE,eAAd,eAAuBrhB,KAAkB2rB,IACrB,uCAAG,8BAAA93B,EAAA,sEACFglB,GAAqBqC,GADnB,cACnBlc,EADmB,gBAENA,EAASE,KAFH,OAEnBA,EAFmB,OAGzBwsB,GAAaxsB,EAAKA,MAHO,2CAAH,oDAKxB2sB,KAEC,CAACT,KACJ,OAAkC93B,mBAAQ,OAAC8pB,QAAD,IAACA,GAAD,UAACA,EAAcmO,uBAAf,aAAC,EAA+BvrB,IAA1E,qBAAO8rB,GAAP,MAAkBC,GAAlB,MACMC,GAAa,uCAAG,8DAAAn4B,EAAA,6DACduK,EAAU,IAAI+qB,SACZhG,OAAO,gBAAf,iBAA0ClwB,OAAOC,aAAaC,QAAQ,WAFlD,SAGGomB,GAAiCvZ,EAAI5B,GAHxC,OAuDpB,IApDMY,EAHc,OAKZE,EAASF,EAATE,KACF4O,EANc,OAMN5O,QANM,IAMNA,GANM,UAMNA,EAAMA,YANA,iBAMN,EAAY+sB,aANN,aAMN,EAAmBpkB,MAAK,SAACxO,GAAD,MAAuB,kBAAbA,EAAKopB,OAAyBthB,MACxE+qB,EXvGa,WADWnF,EWwGOjZ,GXvGLD,MAAM,EAAG,GAAtB,YAA4BkZ,EAAOlZ,MAAM,EAAG,GAA5C,YAAkDkZ,EAAOlZ,MAAM,EAAG,KWwG/Ese,EAAajtB,EAAKA,KAAK+sB,MAAMpkB,MAAK,SAACxO,GAAD,MAAuB,kBAAbA,EAAKopB,OAAyBthB,MAC1EirB,EAAeltB,EAAKA,KAAK+sB,MAAMpkB,MAAK,SAACxO,GAAD,MAAuB,YAAbA,EAAKopB,OAAmBthB,MACtEkrB,EAAYntB,EAAKA,KAAKsjB,cAAcrtB,KAAI,SAACm3B,GAAa,IAAD,IACxB,IAAjC,OAA2B,OAAvBA,EAAQC,WACH,CACL,CACE9zB,KAAK,WAAD,OAAa6zB,EAAQC,WAAWt3B,KAAhC,cAA0Cq3B,EAAQxX,OAAlD,eAA+DwX,EAAQjnB,IAAvE,cAAgFinB,EAAQhnB,IAAxF,KACJknB,UAAW,QAEb,CAAE/zB,KAAM6zB,EAAQhnB,IAAMgnB,EAAQjnB,IAAM,EAAGmnB,UAAW,SAClD,CACE/zB,KAAI,UAAEyU,OAAOof,EAAQrO,OAClBgI,eAAe,QAAS,CAAE3xB,MAAO,WAAYouB,SAAU,eADtD,aAAE,EAEF1R,MAAM,UAAK,GACfwb,UAAW,SAEb,CACE/zB,KAAI,UAAEyU,OAAOof,EAAQrO,OAASqO,EAAQhnB,IAAMgnB,EAAQjnB,IAAM,IACvD4gB,eAAe,QAAS,CAAE3xB,MAAO,WAAYouB,SAAU,eADtD,aAAE,EAEF1R,MAAM,UAAK,GACfwb,UAAW,UAIV,CACL,CACE/zB,KAAK,GAAD,OAAK6zB,EAAQnU,MAAMljB,KAAnB,cAA6Bq3B,EAAQG,aAAax3B,KAAlD,cAA4Dq3B,EAAQxX,OAApE,eAAiFwX,EAAQjnB,IAAzF,cAAkGinB,EAAQhnB,IAA1G,KACJknB,UAAW,QAEb,CAAE/zB,KAAM6zB,EAAQhnB,IAAMgnB,EAAQjnB,IAAM,EAAGmnB,UAAW,SAClD,CACE/zB,KAAI,UAAEyU,OAAOof,EAAQrO,OAClBgI,eAAe,QAAS,CAAE3xB,MAAO,WAAYouB,SAAU,eADtD,aAAE,EAEF1R,MAAM,UAAK,GACfwb,UAAW,SAEb,CACE/zB,KAAI,UAAEyU,OAAOof,EAAQrO,OAASqO,EAAQhnB,IAAMgnB,EAAQjnB,IAAM,IACvD4gB,eAAe,QAAS,CAAE3xB,MAAO,WAAYouB,SAAU,eADtD,aAAE,EAEF1R,MAAM,UAAK,GACfwb,UAAW,aAKbE,EArDgB,GAuDX7L,EAAI,EAAGA,EAAI3hB,EAAKA,KAAKytB,cAAcprB,OAAQsf,GAAK,EACnDA,IAAM3hB,EAAKA,KAAKytB,cAAcprB,OAAS,EACzCmrB,GAAU,UAAOxtB,EAAKA,KAAKytB,cAAc9L,GAAG+L,OAAO33B,MAChDy3B,GAAU,UAAOxtB,EAAKA,KAAKytB,cAAc9L,GAAG+L,OAAO33B,KAAzC,MAGX43B,EAAqB,CACzBr8B,QAAS,CACP,CACE8D,MAAO,SACPk4B,UAAW,SACX/zB,KAAM,iBAGR,CACEnE,MAAO,OACPk4B,UAAW,UACXM,QAAS,CACP,CACEC,MCpMG,ypxBDqMHx8B,OAAQ,IACRtB,MAAO,KAET,CACEqF,MAAO,YACP04B,MAAO,CACLhgB,KAAM,CACJ,CAAC,OAAD,aAAe9N,EAAKA,KAAKmiB,QAAQpsB,OACjC,CAAC,aAAD,aAAqBiK,EAAKA,KAAKwnB,aAC/B,CACE,gBADF,YAG+B,MAA3BxnB,EAAKA,KAAK0nB,aAAuB,cAAjC,WAAqD1nB,EAAKA,KAAK0nB,gBAGnE,CAAC,eAAD,aAAuB1nB,EAAKA,KAAK+tB,QAAQC,iBAG7CC,OAAQ,eAId,CACE74B,MAAO,cACP04B,MAAO,CACLI,OAAQ,CAAC,GAAI,KACbC,WAAY,EAEZrgB,KAAM,CACJ,CAAC,CAAEvU,KAAM,UAAWnE,MAAO,cAAeie,QAAS,EAAGia,UAAW,UAAY,IAC7E,CAAC,OAAQttB,EAAKA,KAAKouB,KAAKr4B,MACxB,CACE,UADF,UAEKiK,EAAKA,KAAKqsB,gBAAgB1f,eAF/B,aAGI3M,EAAKA,KAAKqsB,gBAAgBxf,eAAerJ,OAAzC,UACOxD,EAAKA,KAAKqsB,gBAAgBxf,eAAerJ,OADhD,MAEI,GALR,YAMMxD,EAAKA,KAAKqsB,gBAAgBvf,WAEhC,CAAC,OAAQ9M,EAAKA,KAAKqsB,gBAAgBpf,QAAQE,KAAKpX,MAChD,CAAC,UAAWiK,EAAKA,KAAKqsB,gBAAgBpf,QAAQA,SAC9C,CAAC,QAASjN,EAAKA,KAAKqsB,gBAAgBpf,QAAQE,KAAKH,MAAMjX,SAI7D,CACEX,MAAO,eACP04B,MAAO,CACLI,OAAQ,CAAC,IAAK,GAAI,GAAI,IACtBpgB,KAAK,CACH,CACE,CAAEvU,KAAM,cAAenE,MAAO,cAAek4B,UAAW,UACxD,CAAE/zB,KAAM,OAAQnE,MAAO,cAAek4B,UAAW,UACjD,CAAE/zB,KAAM,sBAAkBnE,MAAO,cAAek4B,UAAW,UAC3D,CAAE/zB,KAAM,kBAAcnE,MAAO,cAAek4B,UAAW,YALvD,oBAOCH,MAIT,CACE/3B,MAAO,cACP04B,MAAO,CACLI,OAAQ,CAAC,GAAI,IAAK,IAClBpgB,KAAM,CACJ,CACE,SACA0f,EACA,CACEj0B,KAAI,UAAEyU,OAAOhO,EAAKA,KAAKquB,cACpBtH,eAAe,QAAS,CAAE3xB,MAAO,WAAYouB,SAAU,eADtD,aAAE,EAEF1R,MAAM,UAAK,GACfwb,UAAW,aAMrB,CACEM,QAAS,CACP,CACEx4B,MAAO,oBACP04B,MAAO,CACLI,OAAQ,CAAC,KACTI,QAAS,CAAC,OAAQ,IAClBxgB,KAAM,CACJ,CAAC,CAAEvU,KAAM,eAAgBnE,MAAO,cAAek4B,UAAW,WAC1D,CAACttB,EAAKA,KAAK+d,iBAIjB,CACE3oB,MAAO,aACP04B,MAAO,CACLI,OAAQ,CAAC,IAAK,IACdpgB,KAAM,CACJ,CACE,oBACA,CACEvU,KAAI,UAAEyU,OAAOhO,EAAKA,KAAKmjB,QACpB4D,eAAe,QAAS,CAAE3xB,MAAO,WAAYouB,SAAU,eADtD,aAAE,EAEF1R,MAAM,UAAK,GACfwb,UAAW,UAGf,CACE,yBACA,CACE/zB,KAAI,UAAEyU,OAAOhO,EAAKA,KAAKojB,eACpB2D,eAAe,QAAS,CAAE3xB,MAAO,WAAYouB,SAAU,eADtD,aAAE,EAEF1R,MAAM,UAAK,GACfwb,UAAW,UAGf,CACE,iBACA,CACE/zB,KAAI,UAAEyU,OAAOhO,EAAKA,KAAKgf,KACpB+H,eAAe,QAAS,CAAE3xB,MAAO,WAAYouB,SAAU,eADtD,aAAE,EAEF1R,MAAM,UAAK,GACfwb,UAAW,UAGf,CACE,CAAE/zB,KAAM,iBAAag1B,MAAM,GAC3B,CACEh1B,KAAI,UAAEyU,OAAOhO,EAAKA,KAAKqjB,cACpB0D,eAAe,QAAS,CAAE3xB,MAAO,WAAYouB,SAAU,eADtD,aAAE,EAEF1R,MAAM,UAAK,GACfyc,MAAM,EACNjB,UAAW,eAQzB,CACEl4B,MAAO,SACPk4B,UAAW,SACX/zB,KAAK,wHAAD,OAA0HyzB,EAA1H,oBAAgJC,EAAhJ,sBAAwKC,KAGhLsB,OAAQ,CACNC,OAAQ,CACN3nB,SAAU,GACVynB,MAAM,EACNjB,UAAW,WAEboB,YAAa,CACXH,MAAM,EACNznB,SAAU,GACVzR,MAAO,SAETs5B,KAAM,CACJlpB,OAAQ,CAAC,GAAI,GAAI,EAAG,IAEtBmpB,UAAW,CACTnpB,OAAQ,CAAC,IAAK,GAAI,EAAG,IAEvBopB,YAAa,CACXppB,OAAQ,CAAC,IAAK,EAAG,EAAG,KAEtBqpB,YAAa,CACXrpB,OAAQ,CAAC,EAAG,GAAI,EAAG,IAErBspB,kBAAmB,CACjBtpB,OAAQ,CAAC,EAAG,GAAI,EAAG,IAErBupB,WAAY,CACVvpB,OAAQ,CAAC,GAAI,GAAI,EAAG,IAEtBwpB,OAAQ,CACNxpB,OAAQ,CAAC,EAAG,GAAI,EAAG,MAKzBypB,KAAQC,IAAMC,KAASF,QAAQC,IAC/BD,KAAQG,UAAU1B,GAAoBpD,SAAS,qBA/P3B,kCXjGjB,IAA2B1C,IWiGV,OAAH,qDAkQnB3qB,qBAAU,YACO,uCAAG,8BAAAvI,EAAA,sEACO2lB,KADP,cACVxa,EADU,gBAEGA,EAASE,KAFZ,OAEVA,EAFU,OAGQ,MAApBF,EAASjB,QAAgBoe,GAAS,OAACjd,QAAD,IAACA,OAAD,EAACA,EAAMA,MAH7B,2CAAH,qDAKf4gB,KACC,IA0BH,OACE,eAAC,GAAD,CAAMpmB,MAAM,6BAAZ,UACE,cAACyJ,GAAA,EAAD,CACE5P,KAAM63B,GACN52B,QAAS,kBAAM62B,IAAQ,IACvBjoB,kBAAgB,qBAChBC,mBAAiB,2BAJnB,SAME,eAAC1O,EAAA,EAAD,CAAKvD,GAvBG,CACZX,SAAU,WACVL,IAAK,MACLkN,KAAM,MACN3M,UAAW,wBACX1B,MAAO,OACP+R,SAAU,IACVlH,QAAS,mBACTpJ,aAAc,EACdqB,UAAW,GACXG,OAAQ,OACR6V,QAAS,OACTlS,EAAG,GAWC,UACE,cAAC7B,EAAA,EAAD,CACEM,MAAO,CACL7D,SAAU,WACVL,IAAK,IACLE,MAAO,IACPsI,QAAS,OACT3J,MAAO,MACP0W,OAAQ,UACRxM,eAAgB,gBAElBjF,QAAS,kBA1UjBo3B,IAAS,QACTD,IAAQ,IA0UA92B,MAAM,QAXR,SAaE,cAAC,KAAD,CAAOA,MAAM,YAEf,mBACED,MAAO,CAAEuF,WAAY,MAAOmM,SAAU,OAAQF,SAAU,QAASJ,UAAW,UAD9E,qCAKA,sBACEpR,MAAO,CACLsE,QAAS,OACT0D,cAAe,SACfrN,MAAO,OACPwN,UAAW,QALf,UAQGmf,GACC,cAAC3a,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,MAAOsB,OAAQ,QAC/B4Q,MAAM,4BACN1O,MAAM,iBACN8B,MAAM,UACNiN,aAAa,MACb6jB,WAAY,CACVa,UAAW,KAEbP,UAAU,OACV3X,UAAQ,IAGV,eAACuI,GAAA,EAAD,CAAajiB,MAAO,CAAErF,MAAO,OAAQyH,QAAS,OAA9C,UACE,cAAC4uB,GAAA,EAAD,CAAYtlB,GAAG,2BAAf,6BACA,eAACulB,GAAA,EAAD,CACE1O,QAAQ,2BACR7W,GAAG,qBACHvN,MAAM,qBACNoM,MAAOA,GACPmP,SAAU4N,GACVnQ,aAAcqgB,GACdzG,WAAY,CACVa,UAAW,KAEb9kB,SAAU,SAACoM,GAAD,OA7XG,SAACA,GAC5B8d,IAAS,GACTS,GAAave,EAAElM,OAAOH,OA2XSqtB,CAAqBhhB,IAVxC,iBAYG5B,SAZH,IAYGA,QAZH,EAYGA,GAASzW,KAAI,SAACywB,GAAD,2BACZ,eAACvwB,EAAA,EAAD,CAAU8L,MAAOykB,EAAO5lB,GAAxB,iBACG4lB,QADH,IACGA,GADH,UACGA,EAAQ/Z,sBADX,aACG,EAAwBgC,MAAM,EAAG,IAC3B,OAAN+X,QAAM,IAANA,GAAA,UAAAA,EAAQ/Z,sBAAR,eAAwBtK,QAAS,GAAK,QAAU,KAFnD,OAGGqkB,QAHH,IAGGA,GAHH,UAGGA,EAAQ7Z,sBAHX,aAGG,EAAwB8B,MAAM,EAAG,IAC3B,OAAN+X,QAAM,IAANA,GAAA,UAAAA,EAAQ7Z,sBAAR,eAAwBxK,QAAS,EAAI,QAAU,GAJlD,OAKGqkB,QALH,IAKGA,GALH,UAKGA,EAAQ5Z,gBALX,aAKG,EAAkB6B,MAAM,EAAG,IACrB,OAAN+X,QAAM,IAANA,GAAA,UAAAA,EAAQ/Z,sBAAR,eAAwBtK,QAAS,GAAK,MAAQ,KANjD,UAOGqkB,EAAO1Z,aAPV,aAOG,EAAc2B,MAAM,EAAG,IACjB,OAAN+X,QAAM,IAANA,GAAA,UAAAA,EAAQ1Z,aAAR,eAAe3K,QAAS,GAAK,MAAQ,KARxC,OASGqkB,QATH,IASGA,OATH,EASGA,EAAQvZ,KATX,YASmBuZ,QATnB,IASmBA,OATnB,EASmBA,EAAQzZ,UATMyZ,EAAO5lB,OAYrB,KAAb,OAAP4L,SAAO,IAAPA,QAAA,EAAAA,GAASrK,QACR,cAAClM,EAAA,EAAD,CAAU2Y,UAAQ,EAAC7M,MAAM,GAAzB,SACE,qDAEA,QAELtC,GACC,cAAC8X,GAAA,EAAD,CAAgBriB,MAAO,CAAEC,MAAO,OAAhC,wCAGE,QAGR,cAACwP,GAAA,EAAD,CACEC,QACE,cAACC,GAAA,EAAD,CACEC,QAAS0X,GACTxa,SAAU,WACRya,IAAgBD,OAItBnpB,MAAM,6BAGTy4B,GACC,qBAAK52B,MAAO,CAAErF,MAAO,OAAQ2J,QAAS,OAAQO,eAAgB,UAA9D,SACE,cAACuI,GAAA,EAAD,MAGF,qBAAKpN,MAAO,CAAErF,MAAO,OAAQ2J,QAAS,OAAQO,eAAgB,UAA9D,SACE,eAACnF,EAAA,EAAD,CACEe,QAAQ,YACRT,MAAO,CACLsE,QAAS,OACT3J,MAAO,MACP0W,OAAQ,UACRxM,eAAgB,eAChBpH,UAAW,eACX0K,UAAW,QAEbvI,QAAS,kBAAMu3B,GAAmBK,KAVpC,UAYE,cAAC,KAAD,CAAMx3B,MAAO,CAAEC,MAAO,UACtB,+CAMV,eAACuQ,GAAA,EAAD,CAAW9D,SAAS,KAApB,UACE,eAAC/J,EAAA,EAAD,CAAOC,UAAU,MAAMC,WAAW,SAASgC,eAAe,gBAAgBoD,GAAI,EAA9E,UACE,eAACzH,EAAA,EAAD,CAAYC,QAAQ,KAApB,uCAA6CqoB,QAA7C,IAA6CA,OAA7C,EAA6CA,EAAcpd,MAC3D,iCACe,OAAZod,QAAY,IAAZA,OAAA,EAAAA,EAAcqR,aACb,cAACz6B,EAAA,EAAD,CACE7B,UAAU,iBACV4C,QAAQ,YACRb,QAlKU,WAEtBjB,OAAOM,KAAP,UACK6L,kDADL,mBACqCge,QADrC,IACqCA,OADrC,EACqCA,EAAcqR,aACjD,SACA,wBA8JUn5B,GAAG,IACHqc,UAAW,cAAC,IAAD,CAAMjf,KAAK,8BALxB,8BASE,KACJ,cAACsB,EAAA,EAAD,CACEe,QAAQ,YACRb,QAAS83B,GACT12B,GAAG,IACHqc,UAAW,cAAC,IAAD,CAAMjf,KAAK,8BAJxB,iCAUJ,cAAC+U,GAAA,EAAD,CAAMC,WAAS,EAAC/Q,QAAS,EAAzB,SACE,cAAC8Q,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,GAAIypB,GAAI,GAA/B,SACE,8BACGnuB,EACC,qBAAKjM,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,UAA/C,SACE,cAACuI,GAAA,EAAD,MAGF,eAAC+F,GAAA,EAAD,CAAMC,WAAS,EAAC/Q,QAAS,EAAzB,UACE,cAAC8Q,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAIC,GAAI,EAAG4N,GAAI,EAA9B,SACE,cAACP,GAAA,EAAD,CAAMpQ,MAAO,CAAEoC,QAAS,QAAxB,SACE,cAACuR,GAAA,EAAD,CAAgB1S,UAAW2S,KAAO5T,MAAO,CAAEgyB,aAAc,QAAzD,SACE,cAACne,GAAA,EAAD,CAAO/W,GAAI,CAAE0U,SAAU,KAAO1B,KAAK,QAAQgE,aAAW,gBAAtD,SACE,eAACC,GAAA,EAAD,WACE,cAACE,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,SACE,cAACsW,GAAA,EAAD,CACEjT,UAAU,KACVkT,MAAM,MACNnU,MAAO,CAAEuF,WAAY,MAAOmM,SAAU,OAAQF,SAAU,SAH1D,4BAQF,eAACyC,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,kBAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,gBACG2U,QADH,IACGA,GADH,UACGA,EAAckQ,YADjB,aACG,EAAoBr4B,UAGzB,eAACsT,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,mBAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,gBACG2U,QADH,IACGA,GADH,UACGA,EAAckQ,YADjB,aACG,EAAoBh7B,WAGzB,eAACiW,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,2BAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,gBACG2U,QADH,IACGA,GADH,UACGA,EAAckQ,YADjB,aACG,EAAoBrhB,YAGzB,eAAC1D,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,gCAIA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,SACE,qCACG2U,QADH,IACGA,GADH,UACGA,EAAcmO,uBADjB,aACG,EAA+B1f,eADlC,WAEGuR,QAFH,IAEGA,GAFH,UAEGA,EAAcmO,uBAFjB,aAEG,EAA+Bxf,gBACnB,OAAZqR,QAAY,IAAZA,GAAA,UAAAA,EAAcmO,uBAAd,mBAA+Bxf,eAAerJ,cAA9C,eAAsDnB,QAAS,EAC5D,KACA,GALN,OAMG6b,QANH,IAMGA,GANH,UAMGA,EAAcmO,uBANjB,aAMG,EAA+Bvf,SANlC,IAM6C,IAN7C,OAOGoR,QAPH,IAOGA,GAPH,UAOGA,EAAcmO,uBAPjB,iBAOG,EAA+Bpf,eAPlC,iBAOG,EAAwCE,YAP3C,iBAOG,EAA8CH,aAPjD,aAOG,EAAqDjX,KAPxD,IAO+D,IAP/D,OAQGmoB,QARH,IAQGA,GARH,UAQGA,EAAcmO,uBARjB,iBAQG,EAA+Bpf,eARlC,iBAQG,EAAwCE,YAR3C,aAQG,EAA8CpX,KARjD,IAQwD,IARxD,OASGmoB,QATH,IASGA,GATH,UASGA,EAAcmO,uBATjB,iBASG,EAA+Bpf,eATlC,aASG,EAAwCA,cAGhC,OAAZiR,QAAY,IAAZA,GAAA,UAAAA,EAAcuR,wBAAd,eAAgC3uB,IAAK,GAAM,GACpB,cAAxBod,EAAarf,OAAyB,KACpC,cAACyK,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAMvU,QAAS,kBAAMm3B,IAAQ,IAA7D,SACE,cAAC,KAAD,CACE92B,MAAM,UACND,MAAO,CAAEqR,OAAQ,kBAKzB,cAAC4C,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,SACE,cAACsW,GAAA,EAAD,CACEjT,UAAU,KACVkT,MAAM,MACNnU,MAAO,CAAEuF,WAAY,MAAOmM,SAAU,OAAQF,SAAU,SAH1D,iCAQF,eAACyC,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,kBAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,gBACG2U,QADH,IACGA,GADH,UACGA,EAAciE,eADjB,aACG,EAAuBpsB,UAG5B,eAACsT,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,oBAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,gBACG2U,QADH,IACGA,GADH,UACGA,EAAciE,eADjB,aACG,EAAuBpV,YAG5B,cAAC1D,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,SACE,cAACsW,GAAA,EAAD,CACEjT,UAAU,KACVkT,MAAM,MACNnU,MAAO,CAAEuF,WAAY,MAAOmM,SAAU,OAAQF,SAAU,SAH1D,6BAQF,eAACyC,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,0BAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,gBACG2U,QADH,IACGA,GADH,UACGA,EAAcrW,eADjB,aACG,EAAuB9R,WAGf,OAAZmoB,QAAY,IAAZA,GAAA,UAAAA,EAAc1a,YAAd,mBAAoBzN,YAApB,eAA0ByN,QACzB,eAAC6F,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,kBAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,gBACG2U,QADH,IACGA,GADH,UACGA,EAAc1a,YADjB,aACG,EAAoBzN,UAGvB,KAjHN,OAkHGmoB,QAlHH,IAkHGA,GAlHH,UAkHGA,EAAcoF,qBAlHjB,aAkHG,EAA6BrtB,KAAI,SAACy5B,EAAIhnB,GAAL,iBAChC,eAACW,GAAA,EAAD,CAEEnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAFtD,UAIE,eAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,qBACWb,EAAQ,KAEnB,eAACY,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,iBACGmmB,QADH,IACGA,OADH,EACGA,EAAI9Z,OADP,aACkB8Z,QADlB,IACkBA,OADlB,EACkBA,EAAIvpB,IADtB,cAC+BupB,QAD/B,IAC+BA,OAD/B,EAC+BA,EAAItpB,IADnC,aAC2CspB,QAD3C,IAC2CA,GAD3C,UAC2CA,EAAInC,oBAD/C,aAC2C,EAAkBx3B,KAAM,IADnE,OAEG25B,QAFH,IAEGA,GAFH,UAEGA,EAAIzW,aAFP,aAEG,EAAWljB,KAFd,WAEqB25B,QAFrB,IAEqBA,GAFrB,UAEqBA,EAAIrC,kBAFzB,aAEqB,EAAgBt3B,UARhC2S,MAYT,eAACW,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,qBAGA,eAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,iBACG2U,QADH,IACGA,GADH,UACGA,EAAcwG,eADjB,aACG,EAAuBzuB,KAAI,SAACisB,GAAD,aAC1B,mCACGlF,SADH,IACGA,IADH,UACGA,GAAQrU,MAAK,SAACuW,GAAD,OAAgB,OAALA,QAAK,IAALA,OAAA,EAAAA,EAAOpe,MAAOohB,YADzC,aACG,EAA4CnsB,MADvCmsB,MAIyB,KAAtB,OAAZhE,QAAY,IAAZA,GAAA,UAAAA,EAAcwG,eAAd,eAAuBriB,QAAe,mCAAY,WAGvD,eAACgH,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,0BAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,UACe,OAAZ2U,QAAY,IAAZA,GAAA,UAAAA,EAAcH,oBAAd,eAA4Bva,QAC3B,mBAAGpO,MAAO,CAAEu6B,UAAW,cAAvB,gBACGzR,QADH,IACGA,OADH,EACGA,EAAcH,eAGjB,sDAIN,eAAC1U,GAAA,EAAD,CACEnX,GAAI,CACF,mCAAoC,CAClCc,OAAQ,IAHd,UAOE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,wBAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,UACe,OAAZ2U,QAAY,IAAZA,GAAA,UAAAA,EAAcoG,kBAAd,eAA0B9gB,QACzB,oBACEvQ,UAAU,kBACV4C,QAAQ,YACRuP,KAAI,OAAE8Y,QAAF,IAAEA,OAAF,EAAEA,EAAcoG,WACpBliB,OAAO,SACPiD,IAAI,aALN,wBAOa,cAAC,KAAD,OAGb,wCAIN,cAACgE,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,SACE,cAACsW,GAAA,EAAD,CACEjT,UAAU,KACVkT,MAAM,MACNnU,MAAO,CAAEuF,WAAY,MAAOmM,SAAU,OAAQF,SAAU,SAH1D,qBAQF,eAACyC,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,gCAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,SACGyE,OAAM,OAACkQ,QAAD,IAACA,OAAD,EAACA,EAAciF,QAAQ4D,eAAe,QAAS,CACpD3xB,MAAO,WACPouB,SAAU,aAIhB,eAACna,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,iBAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,SACGyE,OAAM,OAACkQ,QAAD,IAACA,OAAD,EAACA,EAAcc,KAAK+H,eAAe,QAAS,CACjD3xB,MAAO,WACPouB,SAAU,aAIhB,eAACna,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,2BAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,SACGyE,OAAM,OAACkQ,QAAD,IAACA,OAAD,EAACA,EAAckF,eAAe2D,eAAe,QAAS,CAC3D3xB,MAAO,WACPouB,SAAU,aAIhB,eAACna,GAAA,EAAD,CAAUnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IAA9D,UACE,cAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,0BAGA,cAACD,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAhC,SACGyE,OAAM,OAACkQ,QAAD,IAACA,OAAD,EAACA,EAAcmF,cAAc0D,eAAe,QAAS,CAC1D3xB,MAAO,WACPouB,SAAU,wBAS1B,eAACjb,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAIC,GAAI,EAAG4N,GAAI,EAA9B,UACE,eAACP,GAAA,EAAD,CAAMpQ,MAAO,CAAEoC,QAAS,QAAxB,UACE,mBAAGpC,MAAO,CAAE0R,SAAU,OAAQnM,WAAY,MAAOtB,YAAa,QAA9D,0BAGA,cAAC,GAAD,CACEe,QAAoB,OAAZ8jB,QAAY,IAAZA,GAAA,UAAAA,EAAcuR,wBAAd,eAAgC3uB,IAAK,GAC7C2qB,UAAoC,eAAb,OAAZvN,QAAY,IAAZA,OAAA,EAAAA,EAAcrf,aAGJ,cAAxBqf,EAAarf,QACZ,cAAC,GAAD,CAAuBmB,KAAI,OAAEke,QAAF,IAAEA,OAAF,EAAEA,EAAc5Y,SAE7C,cAAC,GAAD,CAAiBtF,KAAI,OAAEke,QAAF,IAAEA,OAAF,EAAEA,EAAc0R,kC,yGE3zBlD,SAASC,GAAa72B,GAC3B,OACE,eAACvD,EAAA,EAAD,CAAKvD,GAAI,CAAEX,SAAU,WAAYmI,QAAS,eAA1C,UACE,cAAC8I,GAAA,EAAD,aAAkB3M,QAAQ,eAAkBmD,IAC5C,cAACvD,EAAA,EAAD,CACEvD,GAAI,CACFhB,IAAK,EACLkN,KAAM,EACN3E,OAAQ,EACRrI,MAAO,EACPG,SAAU,WACVmI,QAAS,OACTzB,WAAY,SACZgC,eAAgB,UATpB,SAYE,cAACrE,EAAA,EAAD,CAAYC,QAAQ,UAAUQ,UAAU,MAAMhB,MAAM,iBAApD,mBACM+vB,KAAK0K,MAAM92B,EAAMiJ,OADvB,YCZD,IAAM8tB,GAAmB,SAAC/2B,GAAW,IAAD,UACzC,EAA4B5E,mBAAS,CACnCqY,SAAQ,OAAEzT,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,aAAE,EAAgBC,eAC1BC,SAAQ,OAAE5T,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,aAAE,EAAgBG,eAC1BC,SAAQ,OAAE9T,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,aAAE,EAAgBI,SAC1BE,MAAO,GACPC,QAAO,OAAEjU,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,aAAE,EAAgBO,QACzBE,KAAM,GACND,UAAS,OAAElU,QAAF,IAAEA,GAAF,UAAEA,EAAO0T,eAAT,aAAE,EAAgBQ,YAP7B,mBAAO/L,EAAP,KAAeC,EAAf,KASA,EAA4BhN,mBAAS,CACnCqY,UAAU,EACVG,UAAU,EACVE,UAAU,EACVG,SAAS,IAJX,mBAAO1L,EAAP,KAAeC,EAAf,KAMA,EAAgCpN,mBAAS,IAAzC,mBAAOgZ,EAAP,KAAiBC,EAAjB,KACA,EAA8BjZ,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KACApE,qBAAU,YACK,uCAAG,0CAAAvI,EAAA,sEACmByK,GAAS,GAAD,OACpCc,uCADoC,qBACaiB,EAAO8L,SAC3D,CACE9M,OAAQ,QAJE,cACRoN,EADQ,gBAOKA,EAAmBvN,KAPxB,OAORA,EAPQ,OAQdoB,EAAU,2BACLD,GADI,IAEPgM,KAAI,OAAEnN,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,iBAAE,EAAYmN,YAAd,aAAE,EAAkBpX,KACxBiX,MAAK,OAAEhN,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,iBAAE,EAAYmN,YAAd,iBAAE,EAAkBH,aAApB,aAAE,EAAyBjX,KAChCmX,UAAS,OAAElN,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,aAAE,EAAYc,MAZX,2CAAH,qDAgBb2M,KAEC,IACH,MAA8BrZ,oBAAS,GAAvC,mBAAOsZ,EAAP,KAAgBC,EAAhB,KAEME,EAAiB,uCAAG,4BAAAlZ,EAAA,2DAEH,KAAnBwM,EAAO8L,SACS,KAAhB9L,EAAOgM,MACU,KAAjBhM,EAAO6L,OACP7L,EAAOsL,SAASpK,OAAS,GACzBlB,EAAO2L,SAASzK,OAAS,GANH,uBAQtBf,GAAW,GARW,SASOlC,GAAS,GAAD,OAChCc,uCADgC,oBACgBlH,EAAM0P,OACzD,CACEvI,OAAQ,MACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnBuM,eAAgBxL,EAAOsL,SACvBI,eAAgB1L,EAAOyL,SAASvK,OAAS,EAAIlB,EAAOyL,SAAW,IAC/DE,SAAU3L,EAAO2L,SACjBiB,WAAYC,OAAO7M,EAAO+L,eAlBV,OAShBe,EATgB,OAuBtB3M,GAAW,GACmB,MAA1B2M,EAAepP,QACjBkB,KAAK,wBAAyB,GAAI,WAClCqB,EAAU,CACR4L,MAAO,GACPG,KAAM,GACNF,QAAS,GACTR,SAAU,GACVG,SAAU,GACVE,SAAU,KAEZ9T,EAAMvE,cACNuE,EAAMg3B,oBAENjwB,KAAK,wBAAyB,GAAI,SArCd,uBAwCtByB,EAAU,2BACLD,GADI,IAEPkL,SAAUtL,EAAOsL,SAASpK,OAAS,EACnCyK,SAAU3L,EAAO2L,SAASzK,OAAS,EACnC8K,KAAsB,KAAhBhM,EAAOgM,KACbF,QAA4B,KAAnB9L,EAAO8L,QAChBD,MAAwB,KAAjB7L,EAAO6L,SA9CM,4CAAH,qDAmDjBkB,EAAY,uCAAG,WAAOC,EAAMC,GAAb,iBAAAzZ,EAAA,yDACN,YAATwZ,EADe,oBAEjB/M,EAAU,2BAAKD,GAAN,IAAc8L,QAASmB,KACd,KAAb,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAHU,wBAIff,GAAW,GAJI,SAKkBlC,GAAS,GAAD,OACpCc,uCADoC,qBACakO,GACpD,CACEjO,OAAQ,QARG,cAKToN,EALS,gBAWIA,EAAmBvN,KAXvB,OAWTA,EAXS,OAYfoB,EAAU,2BACLD,GADI,IAEPgM,KAAMnN,EAAKA,KAAKmN,KAAKpX,KACrBiX,MAAOhN,EAAKA,KAAKmN,KAAKH,MAAMjX,KAC5BkX,QAASmB,EACTlB,UAAWlN,EAAKA,KAAKc,MAEvBQ,GAAW,GAnBI,gCAqBZF,EAAU,2BAAKD,GAAN,kBAAegN,EAAOC,KArBnB,QAuBN,aAATD,GACF3M,EAAU,2BACLD,GADI,IAEPkL,SAAU2B,EAAE/L,OAAS,KAEZ,aAAT8L,GACF3M,EAAU,2BACLD,GADI,IAEPuL,SAAUsB,EAAE/L,OAAS,KAEZ,SAAT8L,GACF3M,EAAU,2BACLD,GADI,IAEP4L,KAAY,KAANiB,KAEG,YAATD,GACF3M,EAAU,2BACLD,GADI,IAEP0L,QAAe,KAANmB,KAEA,UAATD,GACF3M,EAAU,2BACLD,GADI,IAEPyL,MAAa,KAANoB,KA9CQ,4CAAH,wDAiDZC,EAAa,uCAAG,WAAOC,GAAP,qBAAA3Z,EAAA,yDACW,KAA3B,UAAA2Z,EAAElM,OAAOH,aAAT,eAAgBI,QADA,mBAEa,KAA3B,UAAAiM,EAAElM,OAAOH,aAAT,eAAgBI,QAFF,gCAGGjD,GAAS,GAAD,OACtBc,uCADsB,uCACmCoO,EAAElM,cADrC,aACmC,EAAUH,OACtE,CACE9B,OAAQ,QANI,cAGVoO,EAHU,gBAUUA,EAAKvO,KAVf,cAWJA,KAAKwO,SAAQ,SAACvB,GACxBI,GAAY,SAACoB,GAAD,6BAAsBA,GAAtB,CAAoCxB,EAAQzM,mBAZ1C,2CAAH,sDAiBnB,OACE,qCACE,oBAAIpL,MAAO,CAAEoR,UAAW,UAAxB,4BACA,eAAC/Q,EAAA,EAAD,CAAKL,MAAO,CAAEoC,QAAS,QAAvB,UACE,cAACuK,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAOsL,SACdvK,SAAU,SAACoM,GAAD,OAAOJ,EAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,YACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOkL,SACdlK,WAAYhB,EAAOkL,SAAW,yBAA2B,KACzD0Z,WAAY,CACVa,UAAW,OAGf,cAACjlB,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAOyL,SACd1K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,YACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOqL,SACdrK,WAAYhB,EAAOqL,SAAW,yBAA2B,KACzDuZ,WAAY,CACVa,UAAW,OAGf,cAACjlB,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAO2L,SACd5K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,WACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOuL,SACdvK,WAAYhB,EAAOuL,SAAW,wBAA0B,KACxDqZ,WAAY,CACVa,UAAW,OAGf,sBACE5xB,MAAO,CACLsE,QAAS,OACTmV,SAAU,OACVzR,cAAe,cACfnD,eAAgB,gBAChBsD,UAAW,QANf,UASE,cAACwE,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACLC,MAAOd,EAAO6L,MACdzZ,MAAM,eACNub,SAAS,OACT1Z,MAAO,CAAErF,MAAO,MAAOwN,UAAW,MAAOlI,MAAOkM,EAAOyL,MAAQ,MAAQ,MACvE9K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,QAASI,EAAElM,OAAOH,UAElD,cAACF,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACLC,MAAOd,EAAOgM,KACd/X,MAAO,CAAErF,MAAO,MAAOwN,UAAW,MAAOlI,MAAOkM,EAAO4L,KAAO,MAAQ,MACtE5Z,MAAM,cACNub,SAAS,OACT5M,SAAU,SAACoM,GAAD,OAAOJ,EAAa,OAAQI,EAAElM,OAAOH,UAGjD,cAAC8M,GAAA,EAAD,CACE3Z,MAAO,CAAErF,MAAO,MAAOwN,UAAW,OAClCuD,GAAG,iBACHkO,cAAc,oBACd3a,KAAMqZ,EACNuB,WAAY,kBAAMtB,GAAW,IAC7BuB,UAAW,kBAAMvB,GAAW,IAC5BrY,QAAS,kBAAMqY,GAAW,IAC1BwB,QAAS/B,EACTnL,MAAOd,EAAO8L,QACd/K,SAAU,SAACoM,EAAGF,GAAJ,OAAUF,EAAa,UAAWE,IAC5CgB,YAAa,SAACC,GAAD,OACX,cAACtN,GAAA,EAAD,2BACMsN,GADN,IAEEha,MAAM,UACN9B,MAAM,iBACN2O,SAAUmM,EACV1O,MAAO4B,EAAO0L,QACd1K,WAAYhB,EAAO0L,QAAU,uBAAyB,cAK9D,qBAAK7X,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,SAAUsD,UAAW,QAApE,SACG8D,EACC,cAACmB,GAAA,EAAD,IAEA,cAAC1N,EAAA,EAAD,CAAQe,QAAQ,YAAYT,MAAO,CAAEmI,UAAW,QAAUvI,QAAS6Y,EAAnE,mCCxOG,SAASoiB,KACtB,IAAMC,EAAM,IAAIC,KAChB,EAAgC/7B,mBAAS,CACvCwa,MAAO,qCADT,mBAAOwhB,EAAP,KAAiBC,EAAjB,KAGM97B,EAAWC,cAEjB,EAA0BJ,mBAAS,IAAnC,mBAAO0pB,EAAP,KAAcwS,EAAd,KACA,EAAwBl8B,mBAAS,IAAjC,mBAAOm8B,EAAP,KAAaC,EAAb,KACA,EAAsBp8B,mBAAS,GAA/B,mBAAOq8B,EAAP,KAAYC,EAAZ,KACA,EAA4Ct8B,mBAAS,GAArD,mBAAOu8B,EAAP,KAAuBC,EAAvB,KACA,EAAoDx8B,oBAAS,GAA7D,mBAAOy8B,EAAP,KAA2BC,EAA3B,KACA,EAAsB18B,oBAAS,GAA/B,mBAAO8rB,EAAP,KAAY6Q,EAAZ,KACA,EAAsC38B,mBAAS,CAC7CwmB,WAAW,EACXgD,WAAW,EACXpa,MAAM,EACNsa,OAAO,IAJT,mBAAOM,EAAP,KAAoBC,EAApB,KAMA,EAAiBjqB,mBAAS,GAAnB48B,EAAP,oBACIC,EAA+B,KAApBl9B,OAAOm9B,YAAsB,QAAU,QAA8B,KAApBn9B,OAAOm9B,WACnEn9B,OAAOm9B,YAAc,MACvBD,EAA+B,GAApBl9B,OAAOm9B,YAEpB,MAAsB98B,mBAAS,IAA/B,mBAAOc,EAAP,KAAYi8B,EAAZ,KAgBA,GAA4B/8B,mBAAS,CACnCqY,SAAU,GACVG,SAAU,GACVE,SAAU,GACVE,MAAO,GACPC,QAAS,GACTE,KAAM,GACND,UAAW,GACXnX,KAAM,GACN6Y,MAAO,KATT,qBAAOzN,GAAP,MAAeC,GAAf,MAWA,GAAkChN,mBAAS,IAA3C,qBAAOg9B,GAAP,MAAkBC,GAAlB,MACA,GAA8Bj9B,oBAAS,GAAvC,qBAAOsZ,GAAP,MAAgBC,GAAhB,MACA,GAA8BvZ,oBAAS,GAAvC,qBAAOiN,GAAP,MAAgBC,GAAhB,MACA,GAAyBlN,qBAAlBk9B,GAAP,qBACA,GAAal9B,qBAAN0M,GAAP,qBACA,GAA4B1M,mBAAS,IAArC,qBAAOmN,GAAP,MAAeC,GAAf,MAEMpM,GAAQ,CACZlE,IAAK,EACLkN,KAAM,EACNrO,MAAOkhC,EACP5/B,OAAQ,QACRyQ,SAAU,SAEZ,GAAoC1N,mBAAS,IAA7C,qBAAO6b,GAAP,MAAmBshB,GAAnB,MAgDA,GAAgCn9B,mBAAS,IAAzC,qBAAOgZ,GAAP,MAAiBC,GAAjB,MAEMa,GAAY,uCAAG,WAAOC,EAAMC,GAAb,iBAAAzZ,EAAA,yDACN,YAATwZ,EADe,oBAEjB/M,GAAU,2BAAKD,IAAN,IAAc8L,QAASmB,KACd,KAAb,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAHU,iCAIkB0N,GAA2B3B,GAJ7C,cAITb,EAJS,gBAKIA,EAAmBvN,KALvB,OAKTA,EALS,OAMfoB,GAAU,2BACLD,IADI,IAEPgM,KAAMnN,EAAKA,KAAKmN,KAAKpX,KACrBiX,MAAOhN,EAAKA,KAAKmN,KAAKH,MAAMjX,KAC5BkX,QAASmB,EACTlB,UAAWlN,EAAKA,KAAKc,MAXR,gCAcZM,GAAU,2BAAKD,IAAN,kBAAegN,EAAOC,KAdnB,QAgBN,UAATD,IACF3M,GAAU,2BACLD,IADI,IAEPqN,MAAqB,MAAb,OAADR,QAAC,IAADA,OAAA,EAAAA,EAAG/L,SAAiB+L,EAAI,MAE5B,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAAS,IAAM,OAAD+L,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAAS,IAAM+L,EAAI,GACzCiiB,EAAY,2BAAKD,GAAN,IAAgBxhB,MAAO,6BAEzB,SAATT,GACF3M,GAAU,2BACLD,IADI,IAEPxL,MAAO,OAADqY,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAAS,KA3BH,4CAAH,wDA8BlB,GAAwBjO,oBAAS,GAAjC,qBAAOC,GAAP,MAAaC,GAAb,MACA,GAAoCF,oBAAS,GAA7C,qBAAOo9B,GAAP,MAAmBC,GAAnB,MAEM5jB,GAAiB,uCAAG,sCAAAlZ,EAAA,sDACxB,IAEE,GADMmnB,EAAW,IAAIC,SACD,KAAhB5a,GAAOpL,MAAyC,MAApB,OAANoL,SAAM,IAANA,IAAA,UAAAA,GAAQyN,aAAR,eAAevM,SAAgC,KAAf4N,GAAmB,CAE3E,IADA3O,IAAW,GACFqgB,EAAI,EAAGA,EAAIyP,GAAU/uB,OAAQsf,GAAK,EACzCuO,EAAIK,KAAKa,GAAUzP,GAAG5rB,KAAMq7B,GAAUzP,IAGlC+P,EANqE,UAMlDlW,gBANkD,aAMlD,EAAUmW,cAAc,sBACjDzB,EACG0B,cAAc,CAAE5vB,KAAM,OAAQ6vB,YAAa,YAAa,YAA+B,IAA5BC,EAA2B,EAA3BA,YAAaC,EAAc,EAAdA,QACnED,IACFJ,EAAiBM,UAAjB,yBAA+CD,EAAQE,QAAQ,GAA/D,SAGHpN,KANH,uCAMQ,WAAOvzB,GAAP,+BAAAqD,EAAA,6DACJ+8B,EAAiBM,UAAjB,GACAlW,EAASmI,OAAO,OAAQ3yB,GAFpB,SAGsB0e,GAA2BC,IAHjD,cAGEiiB,EAHF,gBAIeA,EAAYlyB,KAJ3B,cAIEA,EAJF,OAMEgkB,EANF,OAMchkB,QANd,IAMcA,OANd,EAMcA,EAAMA,KAAKgkB,UACvBmO,EAPF,OAOYnyB,QAPZ,IAOYA,GAPZ,UAOYA,EAAMA,YAPlB,aAOY,EAAY6jB,SACtBxT,EARF,OAQgBrQ,QARhB,IAQgBA,GARhB,UAQgBA,EAAMA,YARtB,aAQgB,EAAYoQ,aAEhC0gB,GAAsB,GAVlB,UAWsBzxB,KAAM6kB,IAAIF,EAAWlI,EAAU,CACvD5c,QAAS,CACP,eAAgB,uBAElBkzB,iBAAkB,SAACC,GACjB,IAAMC,EAAmBlN,KAAK0K,MACJ,IAAvBuC,EAAcE,OAAgBF,EAAcG,OAE/C5B,EAAkB0B,MAnBlB,WAWEG,EAXF,OAsBJ3B,GAAsB,GACK,MAAvB2B,EAAY5zB,QAAyC,MAAvB4zB,EAAY5zB,OAvB1C,wBAwBFyC,IAAW,GACXoxB,QAAQC,IAAIpC,EAAMS,EAAQ97B,GACpB4Y,EAAO,CACX/X,KAAMoL,GAAOpL,KACb4W,eAAgBxL,GAAOsL,SACvBI,eAAgB1L,GAAOyL,SAASvK,OAAS,EAAIlB,GAAOyL,SAAW,IAC/DE,SAAU3L,GAAO2L,SACjBiB,WAAiC,KAArB5M,GAAO+L,UAAmB,KAAO/L,GAAO+L,UACpD0lB,WAAYT,EACZ/hB,aAAcC,EACd+R,kBAAmB1F,IAEjBvb,GAAOyN,MAAQ,IACjBd,EAAKf,OAAS5L,GAAOyN,OArCrB,UAuCqB6B,GAAoB3C,GAvCzC,QAyCsB,MAzCtB,OAyCWjP,QACXkB,KAAK,gBAAiB,GAAI,WAC1BqB,GAAU,CACR4L,MAAO,GACPG,KAAM,GACNF,QAAS,GACTR,SAAU,GACVG,SAAU,GACVE,SAAU,GACV/W,KAAM,GACN6Y,MAAO,KAETra,EAAS,yBAET+M,IAAW,GACXvB,KAAK,QAAS,sCAAuC,UAxDrD,wBA2DFuB,IAAW,GACXvB,KAAK,QAAS,wDAAyD,SA5DrE,4CANR,uDAqEG8yB,OAAM,SAACC,GACNxxB,IAAW,GACXoxB,QAAQ/yB,MAAM,wBAAyBmzB,WAG3CtxB,GAAU,2BACLD,IADI,IAEPqN,MAAiC,MAApB,OAANzN,SAAM,IAANA,IAAA,UAAAA,GAAQyN,aAAR,eAAevM,QACtBtM,KAAMoL,GAAOpL,KAAKsM,OAAS,KAE7BovB,GAA6B,KAAfxhB,IAEhB,MAAO6iB,GACPJ,QAAQC,IAAIG,GA5FU,2CAAH,qDAkGjBzkB,GAAa,uCAAG,WAAOC,GAAP,mBAAA3Z,EAAA,yDACW,KAA3B,UAAA2Z,EAAElM,OAAOH,aAAT,eAAgBI,QADA,oBAEa,KAA3B,UAAAiM,EAAElM,OAAOH,aAAT,eAAgBI,QAFF,wBAGhBgL,GAAY,IAHI,SAIGsD,GAAuBrC,GAJ1B,cAIVC,EAJU,gBAKUA,EAAKvO,KALf,cAMJA,KAAKwO,SAAQ,SAACvB,GACxBI,IAAY,SAACoB,GAAD,6BAAsBA,GAAtB,CAAoCxB,EAAQzM,mBAP1C,4CAAH,sDAanB,GAAsCpM,oBAAS,GAA/C,qBAAOsoB,GAAP,MAAoBC,GAApB,MAEAxH,IAAMjY,WAAU,WACV4gB,EAAMzb,OAAS,GAAGquB,EAAO5S,EAAM,GAAG5oB,OACrC,CAAC4oB,IAEJ,IAAMrpB,GAAc,kBAAMH,IAAQ,IAClC,OACE,cAAC,GAAD,CAAMkG,MAAM,2BAAZ,SACE,eAACoL,GAAA,EAAD,CAAW9D,SAAS,KAApB,UACE,cAACrM,EAAA,EAAD,CAAKvD,GAAI,CAAEm3B,GAAI,GAAf,SACE,cAACzzB,EAAA,EAAD,CAAYC,QAAQ,KAApB,gCAEF,cAACoO,GAAA,EAAD,CACE5P,KAAMA,GACNiB,QAASb,GACTyP,kBAAgB,oBAChBC,mBAAiB,0BAJnB,SAME,cAAC1O,EAAA,EAAD,CAAKvD,GA7PM,CACjBX,SAAU,WACVL,IAAK,MACLkN,KAAM,MACN3M,UAAW,wBACX1B,MAAO,MACP+R,SAAU,IACV0f,UAAW,SACX5mB,QAAS,mBACTtC,UAAW,OACX9G,aAAc,OACd+L,UAAW,OACX5G,EAAG,EACHa,QAAS,QAgPH,SACE,cAAC,GAAD,CAAkBkV,QAAS4kB,GAAgB5oB,MAAO5H,GAAIrM,YAAaA,SAGvE,eAAC8T,GAAA,EAAD,CAAMC,WAAS,EAAC/Q,QAAS,EAAzB,UACE,cAAC8Q,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,EAAGypB,GAAI,EAA9B,SACE,cAAChqB,GAAA,EAAD,CACEpQ,MAAO,CACLoC,QAAS,OACTqG,WAAY,OACZE,cAAe,OACf1M,OAAQ,QALZ,SAQE,qBAAK4B,UAAU,mCAAf,SACE,eAACwC,EAAA,EAAD,WACE,cAACG,EAAA,EAAD,CACEkL,GAAG,oBACHjL,QAAQ,KACRT,MAAO,CAAEoR,UAAW,UACpBnQ,UAAU,KAJZ,6BAQA,cAAC0L,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,GAAOpL,KACdmM,SAAU,SAACoM,GAAD,OAAOJ,GAAa,OAAQI,EAAElM,OAAOH,QAC/C1O,MAAM,OACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,GAAOxL,KACdwM,WAAYhB,GAAOxL,KAAO,0BAA4B,OAExD,cAACgM,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,SACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAwB,MAAjBd,GAAOyN,MAAgBzN,GAAOyN,MAAQ,GAC7C1M,SAAU,SAACoM,GAAD,OAAOJ,GAAa,QAASI,EAAElM,OAAOH,QAChD1O,MAAM,gBACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,GAAOqN,MACdF,QAAS,SAACJ,GACRA,EAAElM,OAAOH,MACY,MAAnBqM,EAAElM,OAAOH,MACL,GACA+L,OAAOM,EAAElM,OAAOH,OAAOzB,WAAWmO,MAAM,EAAG,KAEnDpM,WAAYhB,GAAOqN,MAAQwhB,EAASxhB,MAAQ,OAE9C,cAAC7M,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,GAAOsL,SACdvK,SAAU,SAACoM,GAAD,OAAOJ,GAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,YACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,GAAOkL,SACdlK,WAAYhB,GAAOkL,SAAW,yBAA2B,KACzD0Z,WAAY,CACVa,UAAW,KAEbP,UAAU,SAEZ,cAAC1kB,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,GAAOyL,SACd1K,SAAU,SAACoM,GAAD,OAAOJ,GAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,YACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,GAAOqL,SACdrK,WAAYhB,GAAOqL,SAAW,yBAA2B,KACzDuZ,WAAY,CACVa,UAAW,KAEbP,UAAU,SAEZ,cAAC1kB,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,GAAO2L,SACd5K,SAAU,SAACoM,GAAD,OAAOJ,GAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,WACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,GAAOuL,SACdvK,WAAYhB,GAAOuL,SAAW,wBAA0B,KACxDqZ,WAAY,CACVa,UAAW,KAEbP,UAAU,SAEZ,sBACErxB,MAAO,CACLsE,QAAS,OACTmV,SAAU,OACVzR,cAAe,cACfnD,eAAgB,gBAChBsD,UAAW,QANf,UASE,cAACwE,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACLC,MAAOd,GAAO6L,MACdzZ,MAAM,eACNub,SAAS,OACT1Z,MAAO,CAAErF,MAAO,MAAOwN,UAAW,OAClC2E,SAAU,SAACoM,GAAD,OAAOJ,GAAa,QAASI,EAAElM,OAAOH,UAElD,cAACF,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACLC,MAAOd,GAAOgM,KACd/X,MAAO,CAAErF,MAAO,MAAOwN,UAAW,MAAOlI,MAAOkM,GAAO4L,KAAO,MAAQ,MACtE5Z,MAAM,cACNub,SAAS,OACT5M,SAAU,SAACoM,GAAD,OAAOJ,GAAa,OAAQI,EAAElM,OAAOH,UAEjD,cAAC8M,GAAA,EAAD,CACE3Z,MAAO,CAAErF,MAAO,MAAOwN,UAAW,OAClCuD,GAAG,iBACHkO,cAAc,oBACd3a,KAAMqZ,GACNuB,WAAY,kBAAMtB,IAAW,IAC7BuB,UAAW,kBAAMvB,IAAW,IAC5BrY,QAAS,kBAAMqY,IAAW,IAC1BwB,QAAS/B,GACTnL,MAAOd,GAAO8L,QACd/K,SAAU,SAACoM,EAAGF,GAAJ,OAAUF,GAAa,UAAWE,IAC5CgB,YAAa,SAACC,GAAD,OACX,cAACtN,GAAA,EAAD,2BACMsN,GADN,IAEEha,MAAM,UACN9B,MAAM,iBACN2O,SAAUmM,GACV1O,MAAO4B,GAAO0L,QACd1K,WAAYhB,GAAO0L,QAAU,uBAAyB,WAI5D,qBAAK7X,MAAO,CAAErF,MAAO,OAAQyW,UAAW,OAAQjJ,UAAW,QAA3D,SACE,cAACsH,GAAA,EAAD,CACEC,QACE,cAACC,GAAA,EAAD,CACEC,QAAS0X,GACTxa,SAAU,WACRya,IAAgBD,OAItBnpB,MAAM,+BAIZ,qBAAK6B,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,SAAUsD,UAAW,QAApE,SACG8D,GACC,cAACmB,GAAA,EAAD,IAEA,cAAC1N,EAAA,EAAD,CACEe,QAAQ,YACRT,MAAO,CAAEmI,UAAW,OAAQuJ,SAAU,QACtC9R,QAAS6Y,GAHX,oCAaZ,cAACtF,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,EAAGypB,GAAI,EAAGp6B,MAAO,CAAE/D,OAAQ,QAAlD,SACE,eAACmU,GAAA,EAAD,CACEpQ,MAAO,CACL2I,cAAe,OACfF,WAAY,OACZxM,OAAQ,QAJZ,UAOE,sBAAK4B,UAAU,mCAAf,UACE,8CACA,qBACEA,UAAU,uBACVmC,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,UAF5C,SAIoB,IAAjB6jB,EAAMzb,OACL,qBACEjN,MAAO,CACLpC,OAAQ,kBACR4T,SAAU,OAHd,SAME,qBACE1R,IAAI,qBACJC,IAAI,SACJC,MAAO,CAAErF,MAAO,MAAO0V,OAAQ,OAAQlI,UAAW,WAItD,cAAC,YAAD,CACEw1B,gBAAgB,EAChBC,YAAY,EACZjjC,MAAOkhC,EAAW,QAAU,QAAUA,EAHxC,SAKGnT,EACEnW,QAAO,SAACuY,GAAD,OAASA,EAAIhrB,MAAQu7B,KAC5Bx6B,KAAI,SAACs6B,GAAD,OACHrQ,EACE,cAAC,YAAD,CAEEhrB,IAAKq7B,EAAKr7B,IACVnF,MAAOkhC,EACP5/B,OAAQ,IACR4hC,QAAQ,IAJH1C,EAAKr7B,KAOZ,cAAC,KAAD,CAEEE,MAAOA,GACP89B,eAAa,EACbC,SAAO,EACPvqB,IAAK2nB,EAAKr7B,KAJLq7B,EAAKr7B,YAWxB,qBAAKE,MAAO,CAAErF,MAAO,MAAO0V,OAAQ,OAAQ2hB,aAAc,QAA1D,SACGtJ,EAAM7nB,KAAI,SAACs6B,EAAM7nB,GAAP,OACT,cAAC0qB,GAAA,EAAD,CAAwB54B,MAAO+1B,EAAK/1B,MAApC,SACE,cAAC5C,EAAA,EAAD,CACEoK,KAAK,SACL5M,MAAO,CACL8B,gBAAiBq5B,EAAKr7B,MAAQu7B,EAAM,UAAY,UAChDz9B,OAAQ,oBACR3B,OAAQ,OACRtB,MAAO,OACP8Y,QAAS,OACTpD,OAAQ,OAIVzQ,QAAS,kBAAM07B,EAAOH,EAAKr7B,MAZ7B,SAcE,cAACU,EAAA,EAAD,CAAYR,MAAO,CAAE0R,SAAU,MAAOzR,MAAO,QAAUgB,UAAU,IAAjE,SACGqS,EAAQ,KALN6nB,IAXKA,EAAKr7B,aAuBzB,sBAAKjC,UAAU,mCAAf,UACE,uBACE+O,KAAK,OACLmJ,YAAY,QACZpV,KAAK,UACLkxB,OAAO,OACPoM,UAAU,GACVvyB,GAAG,OACH1L,MAAO,CAAEsE,QAAS,QAClB45B,gBAAgB,GAChBpxB,SAAU,SAACoM,GAAD,OAteH,SAACA,GACtB,IAAK,IAAD,EAEF,GADAmjB,IAAc,IACTnjB,EAAElM,OAAO0b,MAAM,GAAI,OACxByT,GAAcjjB,EAAElM,OAAO0b,MAAM,GAAGyV,mBAAmBzhB,MAAM,KAAK,IAC9DuM,EAAe,2BACVD,GADS,IAEZ5a,MAAM,KAERgtB,EAAO,UAACliB,EAAElM,cAAH,aAAC,EAAU0b,MAAM,IACxBwS,EAAS,IACT,IAVE,eAUO3O,GAEyC,QAA9CrT,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,GAEvCif,GAAO,GAEuC,QAA9CziB,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IAEvCif,GAAO,GAIuC,QAA9CziB,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,KAEvCwe,GAAS,SAAC7hB,GAAD,mCACJA,GADI,CAEP,CACEjU,MAAO8T,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAC9Bb,IAAKm1B,IAAIC,gBAAJ,UAAoBhc,EAAElM,cAAtB,aAAoB,EAAU0b,MAAM3jB,KAAKwnB,UAGlD0P,IAAa,SAAC5iB,GAAD,mCAAsBA,GAAtB,WAAoCH,EAAElM,cAAtC,aAAoC,EAAU0b,MAAM3jB,KAAKwnB,UA1BjEA,EAAI,EAAGA,EAAIrT,EAAElM,OAAO0b,MAAMzb,OAAQsf,GAAK,EAAI,EAA3CA,GA8BLrT,EAAElM,OAAO0b,MAAM3jB,KAAK,IAAIg3B,EAAO9G,IAAIC,gBAAgBhc,EAAElM,OAAO0b,MAAM3jB,KAAK,KAC3E,MAAO24B,GACPJ,QAAQC,IAAIG,IA2biBU,CAAellB,IAChCqY,UAAQ,IAEV,cAAC5kB,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,MAAOq3B,aAAc,QACrCnlB,MAAOgO,GAEP1c,MAAM,YACN8B,MAAM,UACNsK,MAAO6xB,GACPjvB,WAAYivB,GAAa,wBAA0B,KACnD1iB,UAAQ,EACRxM,aAAa,QAEf,sBAAKrP,UAAU,eAAemC,MAAO,CAAEmI,UAAW,KAAMQ,cAAe,QAAvE,UACG8yB,GAAsB,cAAChB,GAAD,CAAc5tB,MAAO0uB,IAC3CE,GACC,mBAAGz7B,MAAO,CAAEuF,WAAY,MAAO84B,UAAW,SAAUp+B,MAAO,QAA3D,iCAIAw7B,IACCxvB,GACC,qBAAKjM,MAAO,CAAErF,MAAO,OAAQ+R,SAAU,QAAS2D,OAAQ,QAAxD,SACE,cAACiuB,GAAA,EAAD,MAGF,eAAC5+B,EAAA,EAAD,CAAQe,QAAQ,YAAYb,QAlVxB,WACtBwmB,SAAS0L,eAAe,QAAQC,SAiVd,UACE,cAAC,KAAD,CAAyB/xB,MAAO,CAAEu+B,YAAa,SADjD,oBAIJ,qBAAK1gC,UAAU,eAAf,SACE,mBACEA,UAAU,oBACVmC,MAAO,CAAEuF,WAAY,MAAO84B,UAAW,SAAUp+B,MAAO,eAI9D,mBAAGD,MAAO,CAAEuF,WAAY,MAAO84B,UAAW,SAAUp+B,MAAO,QAA3D,uD,yBCnmBD,SAASu+B,GAAgB56B,GACtC,IAAMjE,EAAMZ,iBAAO,MACnB,EAA4BC,oBAAS,GAArC,mBAAOqb,EAAP,KAAeC,EAAf,KACA,EAA8Btb,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KACMuyB,EAAa,uCAAG,sBAAAl/B,EAAA,sDACpBoL,KAAK,CACHvF,MAAO,gBACPjB,KAAM,+DACN/F,KAAM,UACNsgC,YAAa,gBACbC,SAAS,EACTC,YAAY,IACXnP,KAPH,uCAOQ,WAAOoP,GAAP,SAAAt/B,EAAA,0DACFs/B,EADE,gCAEE70B,GAAS,GAAD,OAAIc,uCAAJ,oBAAoDlH,EAAM8H,IAAM,CAC5EX,OAAQ,SACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnBU,GAAIkN,OAAOja,OAAOC,aAAaC,QAAQ,WACvCigC,iBAAkB,WAPlB,OAWJxkB,GAAU,GACVpO,GAAW,GACXtI,EAAMg3B,mBAbF,2CAPR,uDADoB,2CAAH,qDA6BnB,OACE,qCACE,cAACp4B,EAAA,EAAD,CAAY7C,IAAKA,EAAKC,QAAS,kBAAM0a,GAAU,IAA/C,SACE,cAAC,IAAD,CAAMlc,KAAMmc,KAAkB5f,MAAO,GAAIsB,OAAQ,OAGnD,eAACue,GAAA,EAAD,CACEvb,KAAMob,EACNla,SAAUR,EAAIS,QACdF,QAAS,kBAAMoa,GAAU,IACzBjd,WAAY,CACVP,GAAI,CAAEnC,MAAO,IAAK+R,SAAU,SAE9BzP,aAAc,CAAEC,SAAU,MAAOC,WAAY,SAC7CC,gBAAiB,CAAEF,SAAU,MAAOC,WAAY,SARlD,UAUoB,UAAjByG,EAAMm7B,QACL,eAACh+B,EAAA,EAAD,CAAUjE,GAAI,CAAEmD,MAAO,kBAAoBL,QAAS6+B,EAApD,UACE,cAAC75B,GAAA,EAAD,UACGqH,EACC,cAACmB,GAAA,EAAD,IAEA,cAAC,IAAD,CAAMhP,KAAM4gC,KAAerkC,MAAO,GAAIsB,OAAQ,OAGlD,cAAC4J,GAAA,EAAD,CAAcpB,QAAQ,SAASiW,uBAAwB,CAAEja,QAAS,cAItE,eAACM,EAAA,EAAD,CACEE,UAAWC,IACXF,GAAG,IACHlE,GAAI,CAAEmD,MAAO,kBACbL,QArCY,WAClB0a,GAAU,GACV1W,EAAMq7B,YAAYr7B,EAAM0T,QAAS1T,EAAM8H,KA+BnC,UAME,cAAC9G,GAAA,EAAD,UACE,cAAC,IAAD,CAAMxG,KAAMqc,KAAU9f,MAAO,GAAIsB,OAAQ,OAE3C,cAAC4J,GAAA,EAAD,CAAcpB,QAAQ,OAAOiW,uBAAwB,CAAEja,QAAS,oBChFnE,IAAMy+B,GAAkB,SAACt7B,GAC9B,MAA4B5E,mBAAS,CACnCqY,SAAU,GACVG,SAAU,GACVE,SAAU,GACVE,MAAO,GACPC,QAAS,GACTE,KAAM,GACND,UAAW,KAPb,mBAAO/L,EAAP,KAAeC,EAAf,KASA,EAA4BhN,mBAAS,CACnCqY,UAAU,EACVG,UAAU,EACVE,UAAU,EACVG,SAAS,IAJX,mBAAO1L,EAAP,KAAeC,EAAf,KAMA,EAAgCpN,mBAAS,IAAzC,mBAAOgZ,EAAP,KAAiBC,EAAjB,KACA,EAA8BjZ,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KACApE,qBAAU,YACK,uCAAG,0CAAAvI,EAAA,sEACmByK,GAAS,GAAD,OACpCc,uCADoC,qBACaiB,EAAO8L,SAC3D,CACE9M,OAAQ,QAJE,cACRoN,EADQ,gBAOKA,EAAmBvN,KAPxB,OAORA,EAPQ,OAQdoB,EAAU,2BACLD,GADI,IAEPgM,KAAI,OAAEnN,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,iBAAE,EAAYmN,YAAd,aAAE,EAAkBpX,KACxBiX,MAAK,OAAEhN,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,iBAAE,EAAYmN,YAAd,iBAAE,EAAkBH,aAApB,aAAE,EAAyBjX,KAChCmX,UAAS,OAAElN,QAAF,IAAEA,GAAF,UAAEA,EAAMA,YAAR,aAAE,EAAYc,MAZX,2CAAH,qDAgBb2M,KAEC,IACH,MAA8BrZ,oBAAS,GAAvC,mBAAOsZ,EAAP,KAAgBC,EAAhB,KAEME,EAAiB,uCAAG,4BAAAlZ,EAAA,2DAEH,KAAnBwM,EAAO8L,SACS,KAAhB9L,EAAOgM,MACU,KAAjBhM,EAAO6L,OACP7L,EAAOsL,SAASpK,OAAS,GACzBlB,EAAO2L,SAASzK,OAAS,GANH,uBAQtBf,GAAW,GARW,SASOlC,GAAS,GAAD,OAAIc,uCAAJ,YAAoD,CACvFC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnBuM,eAAgBxL,EAAOsL,SACvBI,eAAgB1L,EAAOyL,SAASvK,OAAS,EAAIlB,EAAOyL,SAAW,IAC/DE,SAAU3L,EAAO2L,SACjBiB,WAAYC,OAAO7M,EAAO+L,WAC1BgnB,iBAAkBl7B,EAAMo1B,KAAO,OAAS,UACxCmG,eAAgBv7B,EAAMw7B,QAlBJ,OAShBvmB,EATgB,OAsBtB3M,GAAW,GACmB,MAA1B2M,EAAepP,QACjBkB,KAAK,wBAAyB,GAAI,WAClCqB,EAAU,CACR4L,MAAO,GACPG,KAAM,GACNF,QAAS,GACTR,SAAU,GACVG,SAAU,GACVE,SAAU,KAEZ9T,EAAMvE,cACNuE,EAAMg3B,oBAENjwB,KAAK,wBAAyB,GAAI,SApCd,uBAuCtByB,EAAU,2BACLD,GADI,IAEPkL,SAAUtL,EAAOsL,SAASpK,OAAS,EACnCyK,SAAU3L,EAAO2L,SAASzK,OAAS,EACnC8K,KAAsB,KAAhBhM,EAAOgM,KACbF,QAA4B,KAAnB9L,EAAO8L,QAChBD,MAAwB,KAAjB7L,EAAO6L,SA7CM,4CAAH,qDAkDjBkB,EAAY,uCAAG,WAAOC,EAAMC,GAAb,iBAAAzZ,EAAA,yDACN,YAATwZ,EADe,oBAEjB/M,EAAU,2BAAKD,GAAN,IAAc8L,QAASmB,KACd,KAAb,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAHU,wBAIff,GAAW,GAJI,SAKkBlC,GAAS,GAAD,OACpCc,uCADoC,qBACakO,GACpD,CACEjO,OAAQ,QARG,cAKToN,EALS,gBAWIA,EAAmBvN,KAXvB,OAWTA,EAXS,OAYfoB,EAAU,2BACLD,GADI,IAEPgM,KAAMnN,EAAKA,KAAKmN,KAAKpX,KACrBiX,MAAOhN,EAAKA,KAAKmN,KAAKH,MAAMjX,KAC5BkX,QAASmB,EACTlB,UAAWlN,EAAKA,KAAKc,MAEvBQ,GAAW,GAnBI,gCAqBZF,EAAU,2BAAKD,GAAN,kBAAegN,EAAOC,KArBnB,QAuBN,aAATD,GACF3M,EAAU,2BACLD,GADI,IAEPkL,SAAU2B,EAAE/L,OAAS,KAEZ,aAAT8L,GACF3M,EAAU,2BACLD,GADI,IAEPuL,SAAUsB,EAAE/L,OAAS,KAEZ,SAAT8L,GACF3M,EAAU,2BACLD,GADI,IAEP4L,KAAY,KAANiB,KAEG,YAATD,GACF3M,EAAU,2BACLD,GADI,IAEP0L,QAAe,KAANmB,KAEA,UAATD,GACF3M,EAAU,2BACLD,GADI,IAEPyL,MAAa,KAANoB,KA9CQ,4CAAH,wDAiDZC,EAAa,uCAAG,WAAOC,GAAP,qBAAA3Z,EAAA,yDACW,KAA3B,UAAA2Z,EAAElM,OAAOH,aAAT,eAAgBI,QADA,oBAEa,KAA3B,UAAAiM,EAAElM,OAAOH,aAAT,eAAgBI,QAFF,wBAGhBgL,EAAY,IAHI,SAIGjO,GAAS,GAAD,OACtBc,uCADsB,uCACmCoO,EAAElM,cADrC,aACmC,EAAUH,OACtE,CACE9B,OAAQ,QAPI,cAIVoO,EAJU,gBAWUA,EAAKvO,KAXf,cAYJA,KAAKwO,SAAQ,SAACvB,GACxBI,GAAY,SAACoB,GAAD,6BAAsBA,GAAtB,CAAoCxB,EAAQzM,mBAb1C,4CAAH,sDAkBnB,OACE,qCACE,oBAAIpL,MAAO,CAAEoR,UAAW,UAAxB,yBACA,eAAC/Q,EAAA,EAAD,CAAKL,MAAO,CAAEoC,QAAS,QAAvB,UACE,cAACuK,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAOsL,SACdvK,SAAU,SAACoM,GAAD,OAAOJ,EAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,YACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOkL,SACdlK,WAAYhB,EAAOkL,SAAW,yBAA2B,KACzD0Z,WAAY,CACVa,UAAW,OAGf,cAACjlB,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAOyL,SACd1K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,YACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOqL,SACdrK,WAAYhB,EAAOqL,SAAW,yBAA2B,KACzDuZ,WAAY,CACVa,UAAW,OAGf,cAACjlB,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,EAAO2L,SACd5K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,WAAYI,EAAElM,OAAOH,QACnD1O,MAAM,WACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,EAAOuL,SACdvK,WAAYhB,EAAOuL,SAAW,wBAA0B,KACxDqZ,WAAY,CACVa,UAAW,OAGf,sBACE5xB,MAAO,CACLsE,QAAS,OACTmV,SAAU,OACVzR,cAAe,cACfnD,eAAgB,gBAChBsD,UAAW,QANf,UASE,cAACwE,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACLC,MAAOd,EAAO6L,MACdzZ,MAAM,eACNub,SAAS,OACT1Z,MAAO,CAAErF,MAAO,MAAOwN,UAAW,MAAOlI,MAAOkM,EAAOyL,MAAQ,MAAQ,MACvE9K,SAAU,SAACoM,GAAD,OAAOJ,EAAa,QAASI,EAAElM,OAAOH,UAElD,cAACF,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACLC,MAAOd,EAAOgM,KACd/X,MAAO,CAAErF,MAAO,MAAOwN,UAAW,MAAOlI,MAAOkM,EAAO4L,KAAO,MAAQ,MACtE5Z,MAAM,cACNub,SAAS,OACT5M,SAAU,SAACoM,GAAD,OAAOJ,EAAa,OAAQI,EAAElM,OAAOH,UAGjD,cAAC8M,GAAA,EAAD,CACE3Z,MAAO,CAAErF,MAAO,MAAOwN,UAAW,OAClCuD,GAAG,iBACHkO,cAAc,oBACd3a,KAAMqZ,EACNuB,WAAY,kBAAMtB,GAAW,IAC7BuB,UAAW,kBAAMvB,GAAW,IAC5BrY,QAAS,kBAAMqY,GAAW,IAC1BwB,QAAS/B,EACTnL,MAAOd,EAAO8L,QACd/K,SAAU,SAACoM,EAAGF,GAAJ,OAAUF,EAAa,UAAWE,IAC5CgB,YAAa,SAACC,GAAD,OACX,cAACtN,GAAA,EAAD,2BACMsN,GADN,IAEEha,MAAM,UACN9B,MAAM,iBACN2O,SAAUmM,EACV1O,MAAO4B,EAAO0L,QACd1K,WAAYhB,EAAO0L,QAAU,uBAAyB,cAK9D,qBAAK7X,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,SAAUsD,UAAW,QAApE,SACG8D,EACC,cAACmB,GAAA,EAAD,IAEA,cAAC1N,EAAA,EAAD,CAAQe,QAAQ,YAAYT,MAAO,CAAEmI,UAAW,QAAUvI,QAAS6Y,EAAnE,mCCjOG,SAASrB,KACtB,IAAM0jB,EAAM,IAAIC,KAChB,EAAgC/7B,mBAAS,CACvCwa,MAAO,qCADT,mBAAOwhB,EAAP,KAAiBC,EAAjB,KAGQmE,EAAQzI,cAARyI,IACFjgC,EAAWC,cACjB,EAA0BJ,mBAAS,IAAnC,mBAAO0pB,EAAP,KAAcwS,EAAd,KACA,EAAwBl8B,mBAAS,IAAjC,mBAAOm8B,EAAP,KAAaC,EAAb,KACA,EAAsBp8B,mBAAS,GAA/B,mBAAOq8B,EAAP,KAAYC,EAAZ,KACA,EAA4Ct8B,mBAAS,GAArD,mBAAOu8B,EAAP,KAAuBC,EAAvB,KACA,EAAoDx8B,oBAAS,GAA7D,mBAAOy8B,EAAP,KAA2BC,EAA3B,KACA,EAAsB18B,oBAAS,GAA/B,mBAAO8rB,EAAP,KAAY6Q,EAAZ,KACA,EAAsC38B,mBAAS,CAC7CwmB,WAAW,EACXgD,WAAW,EACXpa,MAAM,EACNsa,OAAO,IAJT,mBAAOM,EAAP,KAAoBC,EAApB,KAMA,EAAkDjqB,oBAAS,GAA3D,mBAAOqgC,EAAP,KAA4BC,EAA5B,KACA,EAA4CtgC,oBAAS,GAArD,mBAAOugC,GAAP,KAAuBC,GAAvB,KACA,GAAoCxgC,oBAAS,GAA7C,qBAAOo9B,GAAP,MAAmBC,GAAnB,MACA,GAA8Cr9B,mBAAS,IAAvD,qBAAOgtB,GAAP,MAAwBC,GAAxB,MACA,GAAsCjtB,mBAAS,IAA/C,qBAAOkqB,GAAP,MAAoBC,GAApB,MACA,GAAsCnqB,oBAAS,GAA/C,qBAAOsoB,GAAP,MAAoBC,GAApB,MACAzf,qBAAU,YACY,uCAAG,8BAAAvI,EAAA,sEACE2b,GAAkCkkB,GADpC,cACf10B,EADe,gBAEFA,EAASE,KAFP,OAEfA,EAFe,OAGG,MAApBF,EAASjB,QAAgBwiB,GAAkB,OAACrhB,QAAD,IAACA,OAAD,EAACA,EAAMA,MAHjC,2CAAH,qDAKpBshB,KACC,CAACkT,IAEJt3B,qBAAU,YACQ,uCAAG,kEAAAvI,EAAA,6DACjBigC,IAAkB,GADD,SAEQrkB,GAA+BikB,GAFvC,cAEXK,EAFW,OAGjBD,IAAkB,GAHD,SAISC,EAAW70B,KAJpB,OAIX4e,EAJW,OAKS,MAAtBiW,EAAWh2B,QAAwC,MAAtBg2B,EAAWh2B,QAC1CtK,EAAS,aAAc,CAAEyY,MAAO,CAAExS,MAAO,+BAE3C4G,GAAU,CACRqL,SAAQ,OAAEmS,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,iBAAE,EAAmB0M,eAArB,aAAE,EAA4BC,eACtCC,SAAQ,OAAEgS,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,iBAAE,EAAmB0M,eAArB,aAAE,EAA4BG,eACtCC,SAAQ,OAAE8R,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,iBAAE,EAAmB0M,eAArB,aAAE,EAA4BI,SACtCE,MAAK,OAAE4R,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,iBAAE,EAAmB0M,eAArB,aAAE,EAA4BM,MACnCC,QAAO,OAAE2R,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,iBAAE,EAAmB0M,eAArB,aAAE,EAA4BO,QACrCE,KAAI,OAAEyR,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,iBAAE,EAAmB0M,eAArB,aAAE,EAA4BS,KAClCD,UAAS,OAAE0R,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,iBAAE,EAAmB0M,eAArB,aAAE,EAA4BqB,WACvChY,KAAI,OAAE6oB,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,aAAE,EAAmBjK,KACzB6Y,MAAK,OAAEgQ,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,aAAE,EAAmB+M,OAC1BsD,YAAW,OAAEuO,QAAF,IAAEA,GAAF,UAAEA,EAAa5e,YAAf,aAAE,EAAmBoQ,eAElCuM,GAAc,OAACiC,QAAD,IAACA,GAAD,UAACA,EAAa5e,YAAd,aAAC,EAAmBoiB,mBApBjB,4CAAH,qDAsBhB0S,GAEuB,uCAAG,8BAAAngC,EAAA,sEACQ6b,GAA+BgkB,GADvC,cAClB7V,EADkB,gBAEEA,EAAkB3e,KAFpB,OAElB4e,EAFkB,OAGxBL,GAAeK,EAAY5e,MAHH,2CAAH,oDAKvB6e,KAEC,CAAC2V,IAEJ,IAAMO,GAAiB,uCAAG,sBAAApgC,EAAA,sDACxB+/B,GAAmB,GADK,2CAAH,qDAIvB,GAAiBtgC,mBAAS,GAAnB48B,GAAP,qBACIC,GAA+B,KAApBl9B,OAAOm9B,YAAsB,QAAU,QAA8B,KAApBn9B,OAAOm9B,WACnEn9B,OAAOm9B,YAAc,MACvBD,GAA+B,GAApBl9B,OAAOm9B,YAEpB,OAAsB98B,mBAAS,IAA/B,qBAAOc,GAAP,MAAYi8B,GAAZ,MACM5P,GAAa,CACjBhwB,SAAU,WACVL,IAAK,MACLkN,KAAM,MACN3M,UAAW,wBACX1B,MAAO,MACP+R,SAAU,IACV0f,UAAW,SACX5mB,QAAS,mBACTtC,UAAW,OACX9G,aAAc,OACd+L,UAAW,OACX5G,EAAG,EACHa,QAAS,QAEX,GAAoCpD,mBAAS,IAA7C,qBAAO6b,GAAP,MAAmBshB,GAAnB,MACA,GAA4Bn9B,mBAAS,CACnCqY,SAAU,GACVG,SAAU,GACVE,SAAU,GACVE,MAAO,GACPC,QAAS,GACTE,KAAM,GACND,UAAW,GACXnX,KAAM,GACN6Y,MAAO,GACPyB,YAAa,KAVf,qBAAOlP,GAAP,MAAeC,GAAf,MAYA,GAAkChN,mBAAS,IAA3C,qBAAOg9B,GAAP,MAAkBC,GAAlB,MACA,GAA8Bj9B,oBAAS,GAAvC,qBAAOiN,GAAP,MAAgBC,GAAhB,MACA,GAA4ClN,qBAA5C,qBAAOk9B,GAAP,MAAuB0D,GAAvB,MACA,GAAoB5gC,qBAApB,qBAAO0M,GAAP,MAAWm0B,GAAX,MACA,GAA4B7gC,mBAAS,CACnCqY,UAAU,EACVG,UAAU,EACVE,UAAU,EACVG,SAAS,IAJX,qBAAO1L,GAAP,MAAeC,GAAf,MAOM0zB,GAAgB,uCAAG,kCAAAvgC,EAAA,yDACH,KAAhBwM,GAAOpL,MAAyC,MAApB,OAANoL,SAAM,IAANA,IAAA,UAAAA,GAAQyN,aAAR,eAAevM,QADlB,wBAEfyL,EAAO,CACX/X,KAAMoL,GAAOpL,KACbgX,OAAQ5L,GAAOyN,MACfwB,aAAcjP,GAAOkP,YACrB+R,kBAAmB1F,IANA,SAQIhM,GAAqB8jB,EAAK1mB,GAR9B,cAQf+mB,EARe,OASrBvzB,IAAW,GATU,SAUFuzB,EAAW70B,KAVT,OAUfA,EAVe,OAWK,MAAtB60B,EAAWh2B,QACbkB,KAAK,uBAAwB,GAAI,WACjCqB,GAAU,CACR4L,MAAO,GACPG,KAAM,GACNF,QAAS,GACTR,SAAU,GACVG,SAAU,GACVE,SAAU,GACV/W,KAAM,GACN6Y,MAAO,KAETra,EAAS,wBAETwL,KAAK,QAAD,OAAUC,QAAV,IAAUA,OAAV,EAAUA,EAAMC,QAAS,SAzBV,4CAAH,qDA8BhB4N,GAAiB,uCAAG,oCAAAlZ,EAAA,sDACxB,GAAoB,KAAhBwM,GAAOpL,MAAyC,MAApB,OAANoL,SAAM,IAANA,IAAA,UAAAA,GAAQyN,aAAR,eAAevM,QAEvC,GADAf,IAAW,GACP8vB,GAAU/uB,OAAS,GAAoB,KAAf4N,GAAmB,CAC7C,IAAS0R,EAAI,EAAGA,EAAIyP,GAAU/uB,OAAQsf,GAAK,EACzCuO,EAAIK,KAAKa,GAAUzP,GAAG5rB,KAAMq7B,GAAUzP,IAElC7F,EAAW,IAAIC,SACf2V,EALuC,UAKpBlW,gBALoB,aAKpB,EAAUmW,cAAc,sBACjDzB,EACG0B,cAAc,CAAE5vB,KAAM,OAAQ6vB,YAAa,YAAa,YAA+B,IAA5BC,EAA2B,EAA3BA,YAAaC,EAAc,EAAdA,QACnED,IACFJ,EAAiBM,UAAjB,yBAA+CD,EAAQE,QAAQ,GAA/D,SAGHpN,KANH,uCAMQ,WAAOvzB,GAAP,2BAAAqD,EAAA,6DACJ+8B,EAAiBM,UAAjB,GACAlW,EAASmI,OAAO,OAAQ3yB,GAFpB,SAIsB6e,GAA+BF,GAAY9O,IAJjE,cAIE+wB,EAJF,gBAMeA,EAAYlyB,KAN3B,cAMEA,EANF,OAQEgkB,EARF,OAQchkB,QARd,IAQcA,OARd,EAQcA,EAAMA,KAAKgkB,UACvBmO,EATF,OASYnyB,QATZ,IASYA,GATZ,UASYA,EAAMA,YATlB,aASY,EAAY6jB,SAE5BiN,GAAsB,GAXlB,UAYsBzxB,KAAM6kB,IAAIF,EAAWlI,EAAU,CACvD5c,QAAS,CACP,eAAgB,uBAElBkzB,iBAAkB,SAACC,GACjB,IAAMC,EAAmBlN,KAAK0K,MACJ,IAAvBuC,EAAcE,OAAgBF,EAAcG,OAE/C5B,EAAkB0B,MApBlB,WAYEG,EAZF,OAuBJ3B,GAAsB,GACK,MAAvB2B,EAAY5zB,QAAyC,MAAvB4zB,EAAY5zB,OAxB1C,wBAyBFyC,IAAW,GACXoxB,QAAQC,IAAIpC,EAAMS,GAAQ97B,IACpB4Y,EAAO,CACX/X,KAAMoL,GAAOpL,KACbgX,OAAQ,GACR6lB,WAAYT,EACZ/hB,aAAcjP,GAAOkP,aAEnBlP,GAAOyN,MAAQ,IAAGd,EAAKf,OAAS5L,GAAOyN,OAjCzC,UAkCqB8B,GAAqB8jB,EAAK1mB,GAlC/C,QAoCsB,MApCtB,OAoCWjP,QACXkB,KAAK,kBAAmB,GAAI,WAC5BqB,GAAU,CACR4L,MAAO,GACPG,KAAM,GACNF,QAAS,GACTR,SAAU,GACVG,SAAU,GACVE,SAAU,GACV/W,KAAM,GACN6Y,MAAO,KAETra,EAAS,yBAET+M,IAAW,GACXvB,KAAK,QAAS,sCAAuC,UAnDrD,wBAsDFuB,IAAW,GACXvB,KAAK,QAAS,wDAAyD,SAvDrE,4CANR,uDAgEG8yB,OAAM,SAACC,GACNxxB,IAAW,GACXoxB,QAAQ/yB,MAAM,uBAAwBmzB,WAG1CoC,UAGF1zB,GAAU,2BACLD,IADI,IAEPqN,MAA+B,KAAxBzN,GAAOyN,MAAMvM,OACpBtM,KAAMoL,GAAOpL,KAAKsM,OAAS,KApFP,2CAAH,qDAyFjBjN,GAAQ,CACZlE,IAAK,EACLkN,KAAM,EACNrO,MAAOkhC,GACP5/B,OAAQ,QACRyQ,SAAU,SA0CNoM,GAAY,uCAAG,WAAOC,EAAMC,GAAb,iBAAAzZ,EAAA,yDACN,YAATwZ,EADe,oBAEjB/M,GAAU,2BAAKD,IAAN,IAAc8L,QAASmB,KACd,KAAb,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAHU,iCAIkB0N,GAA2B3B,GAJ7C,cAITb,EAJS,gBAKIA,EAAmBvN,KALvB,OAKTA,EALS,OAMfoB,GAAU,2BACLD,IADI,IAEPgM,KAAMnN,EAAKA,KAAKmN,KAAKpX,KACrBiX,MAAOhN,EAAKA,KAAKmN,KAAKH,MAAMjX,KAC5BkX,QAASmB,EACTlB,UAAWlN,EAAKA,KAAKc,MAXR,gCAcZM,GAAU,2BAAKD,IAAN,kBAAegN,EAAOC,KAdnB,QAgBN,aAATD,GACF3M,GAAU,2BACLD,IADI,IAEPkL,SAAU2B,EAAE/L,OAAS,KAEZ,UAAT8L,IACF3M,GAAU,2BACLD,IADI,IAEPqN,MAAqB,MAAb,OAADR,QAAC,IAADA,OAAA,EAAAA,EAAG/L,SAAiB+L,EAAI,MAE5B,OAADA,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAAS,IAAM,OAAD+L,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAAS,IAAM+L,EAAI,GACzCiiB,EAAY,2BAAKD,GAAN,IAAgBxhB,MAAO,6BAEzB,SAATT,GACF3M,GAAU,2BACLD,IADI,IAEPxL,MAAO,OAADqY,QAAC,IAADA,OAAA,EAAAA,EAAG/L,QAAS,KAGT,aAAT8L,GACF3M,GAAU,2BACLD,IADI,IAEPuL,SAAUsB,EAAE/L,OAAS,KAEZ,SAAT8L,GACF3M,GAAU,2BACLD,IADI,IAEP4L,KAAY,KAANiB,KAEG,YAATD,GACF3M,GAAU,2BACLD,IADI,IAEP0L,QAAe,KAANmB,KAEA,UAATD,GACF3M,GAAU,2BACLD,IADI,IAEPyL,MAAa,KAANoB,KArDQ,4CAAH,wDA2DlB,GAAwBha,oBAAS,GAAjC,qBAAOC,GAAP,MAAaC,GAAb,MAEM+/B,GAAc,SAAC3nB,EAAS5L,GAC5Bk0B,GAAkBtoB,GAClBuoB,GAAMn0B,GACNxM,IAAQ,IAGV6gB,IAAMjY,WAAU,WACV4gB,EAAMzb,OAAS,GAAGquB,EAAO5S,EAAM,GAAG5oB,OACrC,CAAC4oB,IAEJ,IAAMqX,GAAqB,uCAAG,sBAAAxgC,EAAA,sFAAAA,EAAA,MACF,8BAAAA,EAAA,sEACQ6b,GAA+BgkB,GADvC,cAClB7V,EADkB,gBAEEA,EAAkB3e,KAFpB,OAElB4e,EAFkB,OAGxBL,GAAeK,EAAY5e,MAHH,2CADE,qDAM5B6e,GAN4B,2CAAH,qDASrBpqB,GAAc,kBAAMH,IAAQ,IAClC,OACE,cAAC,GAAD,CAAMkG,MAAM,8BAAZ,SACE,eAACoL,GAAA,EAAD,CAAW9D,SAAS,KAApB,UACE,cAACrM,EAAA,EAAD,CAAKvD,GAAI,CAAEm3B,GAAI,GAAf,SACE,cAACzzB,EAAA,EAAD,CAAYC,QAAQ,KAApB,8BAEF,cAACoO,GAAA,EAAD,CACE5P,KAAMA,GACNiB,QAASb,GACTyP,kBAAgB,oBAChBC,mBAAiB,0BAJnB,SAME,cAAC1O,EAAA,EAAD,CAAKvD,GAAIqvB,GAAT,SACE,cAAC,GAAD,CACE7U,QAAS4kB,GACTtB,iBAAkBmF,GAClBzsB,MAAO5H,GACPrM,YAAaA,SAInB,cAACwP,GAAA,EAAD,CACE5P,KAAMogC,EACNn/B,QAAS,kBAAMo/B,GAAmB,IAClCxwB,kBAAgB,oBAChBC,mBAAiB,0BAJnB,SAME,cAAC1O,EAAA,EAAD,CAAKvD,GAAIqvB,GAAT,SACE,cAAC,GAAD,CACE7U,QAAS4kB,GACTtB,iBAAkBmF,GAClBzsB,MAAO5H,GACP0zB,IAAKA,EACL//B,YAAa,kBAAMigC,GAAmB,UAI5C,eAACnsB,GAAA,EAAD,CAAMC,WAAS,EAAC/Q,QAAS,EAAzB,UACE,eAAC8Q,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,EAAGypB,GAAI,EAA9B,UACE,cAAChqB,GAAA,EAAD,CAAMpQ,MAAO,CAAEoC,QAAS,OAAQqG,WAAY,OAAQE,cAAe,QAAnE,SACE,qBAAK9K,UAAU,mCAAf,SACE,eAACwC,EAAA,EAAD,WACE,cAACG,EAAA,EAAD,CACEkL,GAAG,oBACHjL,QAAQ,KACRT,MAAO,CAAEoR,UAAW,UACpBnQ,UAAU,KAJZ,6BAQCs+B,GACC,cAACnyB,GAAA,EAAD,IAEA,qCACE,cAACT,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAOd,GAAOpL,KACdmM,SAAU,SAACoM,GAAD,OAAOJ,GAAa,OAAQI,EAAElM,OAAOH,QAC/C1O,MAAM,OACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,GAAOxL,KACdwM,WAAYhB,GAAOxL,KAAO,0BAA4B,OAExD,cAACgM,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,SACL5M,MAAO,CAAErF,MAAO,OAAQwN,UAAW,QACnC0E,MAAwB,MAAjBd,GAAOyN,MAAgBzN,GAAOyN,MAAQ,GAC7C1M,SAAU,SAACoM,GAAD,OAAOJ,GAAa,QAASI,EAAElM,OAAOH,QAChD1O,MAAM,gBACN8B,MAAM,UACNiN,aAAa,MACb3C,MAAO4B,GAAOqN,MACdF,QAAS,SAACJ,GACRA,EAAElM,OAAOH,MACY,MAAnBqM,EAAElM,OAAOH,MACL,GACA+L,OAAOM,EAAElM,OAAOH,OAAOzB,WAAWmO,MAAM,EAAG,KAEnDpM,WAAYhB,GAAOqN,MAAQwhB,EAASxhB,MAAQ,OAE9C,qBAAKxZ,MAAO,CAAErF,MAAO,OAAQyW,UAAW,OAAQjJ,UAAW,QAA3D,SACE,cAACsH,GAAA,EAAD,CACEC,QACE,cAACC,GAAA,EAAD,CACEC,QAAS0X,GACTxa,SAAU,WACRya,IAAgBD,OAItBnpB,MAAM,sCAQpB,cAACgV,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,GAAIypB,GAAI,GAA/B,SACE,qBAAKv8B,UAAU,mCAAmCmC,MAAO,CAAEmI,UAAW,QAAtE,SACE,eAACiI,GAAA,EAAD,CAAMpQ,MAAO,CAAEoC,QAAS,OAAQqG,WAAY,OAAQE,cAAe,QAAnE,UACE,gDACyB,KAAb,OAAXugB,SAAW,IAAXA,QAAA,EAAAA,GAAajc,QAAehB,GAAU,KACvC,cAAC0H,GAAA,EAAD,CACE1S,UAAW2S,KACX5T,MAAO,CAAEmI,UAAW,OAAQjF,UAAW,QAASkpB,UAAW,UAF7D,SAIE,cAACvY,GAAA,EAAD,CAAO/W,GAAI,CAAE0U,SAAU,KAAO1B,KAAK,QAAQgE,aAAW,gBAAtD,SACE,cAACC,GAAA,EAAD,UACGmV,GAAYroB,KAAI,SAACisB,EAAKxZ,GAAN,OACf,eAACW,GAAA,EAAD,CACEnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IADtD,UAIE,eAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAMnU,MAAO,CAAE0R,SAAU,QAAzD,UACG4B,EAAQ,EADX,YACgBwZ,QADhB,IACgBA,OADhB,EACgBA,EAAKvV,eADrB,YACuCuV,QADvC,IACuCA,OADvC,EACuCA,EAAKrV,eAAgB,IACjC,OAArB,OAAHqV,QAAG,IAAHA,OAAA,EAAAA,EAAKrV,gBAAyB,IAAM,GAFvC,OAGGqV,QAHH,IAGGA,OAHH,EAGGA,EAAKpV,SAHR,YAGoBoV,QAHpB,IAGoBA,OAHpB,EAGoBA,EAAKlV,MAHzB,YAGkCkV,QAHlC,IAGkCA,OAHlC,EAGkCA,EAAK/U,KAHvC,YAG+C+U,QAH/C,IAG+CA,OAH/C,EAG+CA,EAAKjV,WAEpD,cAAC3D,GAAA,EAAD,CAAW/C,MAAM,QAAQnR,MAAO,CAAE0R,SAAU,QAA5C,SACE,cAAC8sB,GAAD,CACE9yB,GAAIohB,EAAIphB,GACRxM,QAASA,GACT+/B,YAAaA,GACb3nB,QAASwV,EACT8N,iBAAkBmF,SAbjBzsB,YAqBf,cAAC5T,EAAA,EAAD,CACEe,QAAQ,YACRT,MAAO,CAAEmI,UAAW,OAAQuJ,SAAU,QACtC9R,QAAS+/B,GAHX,mCAYR,cAACxsB,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,EAAGypB,GAAI,EAA9B,SACE,cAACjnB,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,EAAGypB,GAAI,GAAIp6B,MAAO,CAAE/D,OAAQ,QAAnD,SACE,eAACmU,GAAA,EAAD,CACEpQ,MAAO,CACL2I,cAAe,OACfF,WAAY,QAHhB,UAME,sBAAK5K,UAAU,mCAAf,UACE,8CACA,qBACEA,UAAU,uBACVmC,MAAO,CAAEsE,QAAS,OAAQO,eAAgB,UAF5C,SAIoB,IAAjB6jB,EAAMzb,OACL,qBACEjN,MAAO,CACLpC,OAAQ,kBACR4T,SAAU,OAHd,SAME,qBACE1R,IAAI,qBACJC,IAAI,SACJC,MAAO,CAAErF,MAAO,MAAO0V,OAAQ,OAAQlI,UAAW,WAKtD,cAAC,YAAD,CACEw1B,gBAAgB,EAChBC,YAAY,EACZjjC,MAAOkhC,GAAW,QAAU,QAAUA,GAHxC,SAKGnT,EACEnW,QAAO,SAACuY,GAAD,OAASA,EAAIhrB,MAAQu7B,KAC5Bx6B,KAAI,SAACs6B,GAAD,OACHrQ,EACE,cAAC,YAAD,CAEEhrB,IAAKq7B,EAAKr7B,IACVnF,MAAOkhC,GACP5/B,OAAQ,IACR4hC,QAAQ,IAJH1C,EAAKr7B,KAOZ,cAAC,KAAD,CAEEE,MAAOA,GACP89B,eAAa,EACbC,SAAO,EACPvqB,IAAK2nB,EAAKr7B,KAJLq7B,EAAKr7B,YAWxB,qBAAKE,MAAO,CAAErF,MAAO,MAAO0V,OAAQ,OAAQ2hB,aAAc,QAA1D,SACGtJ,EAAM7nB,KAAI,SAACs6B,EAAM7nB,GAAP,OACT,cAAC0qB,GAAA,EAAD,CAAwB54B,MAAO+1B,EAAK/1B,MAApC,SACE,cAAC5C,EAAA,EAAD,CACEoK,KAAK,SACL5M,MAAO,CACL8B,gBAAiBq5B,EAAKr7B,MAAQu7B,EAAM,UAAY,UAChDz9B,OAAQ,oBACR3B,OAAQ,OACRtB,MAAO,OACP8Y,QAAS,OACTpD,OAAQ,OAGVjL,MAAO+1B,EAAK/1B,MACZxF,QAAS,kBAAM07B,EAAOH,EAAKr7B,MAZ7B,SAcE,cAACU,EAAA,EAAD,CAAYR,MAAO,CAAE0R,SAAU,MAAOzR,MAAO,QAAUgB,UAAU,IAAjE,SACGqS,EAAQ,KALN6nB,IAXKA,EAAKr7B,aAuBzB,sBAAKjC,UAAU,mCAAf,UACE,uBACE+O,KAAK,OACLmJ,YAAY,QACZpV,KAAK,UACLkxB,OAAO,OACPoM,UAAU,GACVvyB,GAAG,OACH1L,MAAO,CAAEsE,QAAS,QAClB45B,gBAAgB,GAChBpxB,SAAU,SAACoM,GAAD,OA3WL,SAACA,GAAO,IAAD,EAE5B,GADAmjB,IAAc,GACTnjB,EAAElM,OAAO0b,MAAM,GAApB,CACAyT,GAAcjjB,EAAElM,OAAO0b,MAAM,GAAGyV,mBAAmBzhB,MAAM,KAAK,IAC9DuM,EAAe,2BACVD,GADS,IAEZ5a,MAAM,KAERgtB,EAAO,UAACliB,EAAElM,cAAH,aAAC,EAAU0b,MAAM,IACxBwS,EAAS,IAET,IAX4B,eAWnB3O,GAEyC,QAA9CrT,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,GAEvCif,GAAO,GAEuC,QAA9CziB,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IAEvCif,GAAO,GAGuC,QAA9CziB,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,IACO,QAA9CxD,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAK+b,MAAM,KAAK,KAEvCwe,GAAS,SAAC7hB,GAAD,mCACJA,GADI,CAEP,CAAEjU,MAAO8T,EAAElM,OAAO0b,MAAM3jB,KAAKwnB,GAAG5rB,KAAMb,IAAKm1B,IAAIC,gBAAJ,UAAoBhc,EAAElM,cAAtB,aAAoB,EAAU0b,MAAM3jB,KAAKwnB,UAEtF0P,IAAa,SAAC5iB,GAAD,mCAAsBA,GAAtB,WAAoCH,EAAElM,cAAtC,aAAoC,EAAU0b,MAAM3jB,KAAKwnB,UAtBjEA,EAAI,EAAGA,EAAIrT,EAAElM,OAAO0b,MAAMzb,OAAQsf,GAAK,EAAI,EAA3CA,GA0BLrT,EAAElM,OAAO0b,MAAM3jB,KAAK,IAAIg3B,GAAO9G,IAAIC,gBAAgBhc,EAAElM,OAAO0b,MAAM3jB,KAAK,MAsU1Cq5B,CAAellB,IAChCqY,UAAQ,IAEV,cAAC5kB,GAAA,EAAD,CACEjB,GAAG,uCACHkB,KAAK,OACL5M,MAAO,CAAErF,MAAO,MAAOq3B,aAAc,QACrCnlB,MAAOgO,GACP1c,MAAM,YACN8B,MAAM,UACNsK,MAAO6xB,GACPjvB,WAAYivB,GAAa,wBAA0B,KACnD1iB,UAAQ,EACRxM,aAAa,QAEf,sBAAKrP,UAAU,eAAemC,MAAO,CAAEmI,UAAW,KAAMQ,cAAe,QAAvE,UACG8yB,GAAsB,cAAChB,GAAD,CAAc5tB,MAAO0uB,IAC3CE,GACC,mBAAGz7B,MAAO,CAAEuF,WAAY,MAAO84B,UAAW,SAAUp+B,MAAO,QAA3D,iCAIAw7B,IACCxvB,GACC,qBAAKjM,MAAO,CAAErF,MAAO,OAAQ+R,SAAU,QAAS2D,OAAQ,QAAxD,SACE,cAACiuB,GAAA,EAAD,MAGF,eAAC5+B,EAAA,EAAD,CAAQe,QAAQ,YAAYb,QAvS1B,WACtBwmB,SAAS0L,eAAe,QAAQC,SAsSZ,UACE,cAAC,KAAD,CAAyB/xB,MAAO,CAAEu+B,YAAa,SADjD,uBAKN,qBAAK1gC,UAAU,eAAf,SACE,mBACEA,UAAU,oBACVmC,MAAO,CACLuF,WAAY,MACZ84B,UAAW,SACXp+B,MAAO,OACP+xB,aAAc,YAIpB,gCACE,mBAAGhyB,MAAO,CAAEuF,WAAY,MAAOysB,aAAc,QAA7C,uCAIChG,GAAgBnrB,KAAI,SAACkE,EAAMuO,GAAP,eACnB,cAAC2e,GAAA,EAAD,CAEEhxB,UAAU,MACVjB,MAAO,CACLvC,UAAW,eACX4S,OAAQ,OACR2hB,aAAc,OACdtlB,SAAU,OAEZrG,gBAAc,EAThB,SAWE,cAACxC,GAAA,EAAD,UACE,sBACE7D,MAAO,CACLsE,QAAS,OACTO,eAAgB,eAChBlK,MAAO,OACPyH,QAAS,MACTm4B,UAAW,aANf,UASE,mBACEv6B,MAAO,CACLrF,MAAO,MACPqlC,SAAU,cAHd,gBAQIj7B,QARJ,IAQIA,GARJ,UAQIA,EAAMqsB,sBARV,aAQI,EAAsB1U,MAAM,MACtB,OAAJ3X,QAAI,IAAJA,GAAA,UAAAA,EAAMqsB,sBAAN,eAAsB1U,MAAM,KAAKzP,QAAS,IAJzClI,EAAKqsB,gBAQZ,mBAAGpxB,MAAO,CAAEoR,UAAW,OAAQzW,MAAO,OAAtC,gCACE,IAAIslC,KAAKl7B,EAAKm7B,WAAWvO,iBAAiBjV,MAAM,KAAK,GADvD,IAEI,IAFJ,YAEW,IAAIujB,KAAKl7B,EAAKm7B,WAAWC,mBAAmB,QAAS,CAC9DC,SAAU,MACVC,QAAQ,EACRC,KAAM,UACNC,OAAQ,qBAvCTjtB,SA8CX,mBAAGtT,MAAO,CAAEuF,WAAY,MAAO84B,UAAW,SAAUp+B,MAAO,QAA3D,iDAOR,qBACED,MAAO,CACLsE,QAAS,OACTO,eAAgB,SAChBsD,UAAW,OACX6pB,aAAc,OACdr3B,MAAO,QANX,SASGsR,GACC,cAACmB,GAAA,EAAD,IAEA,cAAC1N,EAAA,EAAD,CACEe,QAAQ,YACRT,MAAO,CAAEmI,UAAW,OAAQuJ,SAAU,QACtC9R,QAAS6Y,GAHX,sC,wBC7tBC,SAAS+nB,KACtB,IAAM5Z,EAASjoB,OAAOC,aAAaC,QAAQ,UAC3C,EAAgCG,qBAAhC,mBAAOR,EAAP,KAAiBiiC,EAAjB,KACA,EAAsCzhC,mBAAS,IAA/C,mBAAOkqB,EAAP,KAAoBC,EAApB,KAmBMuX,EAA0B,SAAC3zB,GAC/BA,EAAMmgB,kBAGR,EAA8BluB,mBAAS,CACrC2hC,yBAAyB,EACzBC,mBAAmB,IAFrB,mBAAO7wB,EAAP,KAAgB8wB,EAAhB,KAKA,EAA4B7hC,mBAAS,CACnCmlB,UAAW,GACXE,YAAa,GACbyc,gBAAiB,GACjBC,eAAe,EACfC,eAAe,EACfC,eAAe,IANjB,mBAAOl1B,EAAP,KAAeC,EAAf,KASA,EAA8BhN,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KACMg1B,EAAmB,SAACnoB,GAAD,OAAU,SAAChM,GAClCf,EAAU,2BAAKD,GAAN,kBAAegN,EAAOhM,EAAMC,OAAOH,SAC/B,cAATkM,GACF3M,EAAU,2BACLD,GADI,IAEPgY,WAAYpX,EAAMC,OAAOH,SAGhB,gBAATkM,GACF3M,EAAU,2BACLD,GADI,IAEPkY,YAAatX,EAAMC,OAAOH,MAAMI,OAAS,KAGhC,oBAAT8L,GACF3M,EAAU,2BACLD,GADI,IAEP20B,gBAAiB/0B,EAAOsY,cAAgBtX,EAAMC,OAAOH,WAI3D,EAAkD7N,oBAAS,GAA3D,mBAAOqgC,EAAP,KAA4BC,EAA5B,KACA,EAA4BtgC,mBAAS,CACnCmlB,WAAW,EACXE,aAAa,EACbyc,iBAAiB,IAHnB,mBAAO30B,EAAP,KAAeC,EAAf,KAMA,EAA8BpN,mBAAS,gDAAvC,mBAAOmiC,EAAP,KAAgBC,EAAhB,KAEMzyB,EAAY,uCAAG,WAAO5B,GAAP,yBAAAxN,EAAA,yDACnBwN,EAAMmgB,mBAEJnhB,EAAOoY,UAAUlX,QAAU,GAC3BlB,EAAOsY,cAAgBtY,EAAO+0B,iBAC9B/0B,EAAOsY,YAAYpX,QAAU,GALZ,wBAOjBf,GAAW,GACX20B,EAAW,2BAAK9wB,GAAN,IAAe4wB,yBAAyB,KARjC,SASM1c,GAAuBlY,GAT7B,cASXrB,EATW,OAUjBm2B,EAAW,2BAAK9wB,GAAN,IAAe4wB,yBAAyB,KAVjC,UAWEj2B,EAASE,KAXX,QAYQ,OAAjB,QADFA,EAXW,cAYT,IAAJA,GAAA,UAAAA,EAAMa,YAAN,eAAY6e,QACd3rB,OAAOC,aAAa2M,QAAQ,QAA5B,OAAqCX,QAArC,IAAqCA,GAArC,UAAqCA,EAAMa,YAA3C,aAAqC,EAAYnB,OACjDK,KAAK,iCAAkC,GAAI,WAC3CqB,EAAU,2BACLD,GADI,IAEPoY,UAAW,GACXE,YAAa,GACbyc,gBAAiB,OAGI,OAAjB,OAAJl2B,QAAI,IAAJA,GAAA,UAAAA,EAAMa,YAAN,eAAY6e,OACd3f,KAAKC,EAAKC,QAAS,GAAI,SAEA,OAAjB,OAAJD,QAAI,IAAJA,GAAA,UAAAA,EAAMa,YAAN,eAAY6e,QACdle,EAAU,2BAAKD,GAAN,IAAcgY,WAAW,KAClCid,EAAW,mCA3BI,wBA6BRr1B,EAAOoY,UAAUlX,OAAS,EACnCb,EAAU,2BAAKD,GAAN,IAAcgY,UAAWpY,EAAOoY,UAAUlX,OAAS,KACnDlB,EAAO+0B,kBAAoB/0B,EAAOsY,YAC3CjY,EAAU,2BAAKD,GAAN,IAAc20B,iBAAiB,KAC/B/0B,EAAOoY,WAAapY,EAAOsY,YAAYpX,OAAS,GACzDb,EAAU,2BAAKD,GAAN,IAAckY,YAAatY,EAAOsY,YAAYpX,OAAS,KAlC/C,QAoCnBf,GAAW,GApCQ,4CAAH,sDAuCZigB,EAAa,CACjBhwB,SAAU,WACVL,IAAK,MACLkN,KAAM,MACN3M,UAAW,wBACX1B,MAAO,MACP+R,SAAU,IACV0f,UAAW,SACX5mB,QAAS,mBACTtC,UAAW,OACX9G,aAAc,OACd+L,UAAW,OACX5G,EAAG,EACHa,QAAS,QAGX,EAAmBpD,mBAAS,sDAArBqiC,EAAP,oBACA,EAA4CriC,qBAA5C,mBAAOk9B,EAAP,KAAuB0D,EAAvB,KACA,GAAoB5gC,qBAApB,qBAAO0M,GAAP,MAAWm0B,GAAX,MAEA/3B,qBAAU,YACe,uCAAG,8BAAAvI,EAAA,sEACQglB,GAAqBqC,GAD7B,cAClB2C,EADkB,gBAEEA,EAAkB3e,KAFpB,OAElB4e,EAFkB,OAGxBL,EAAeK,EAAY5e,MAHH,2CAAH,qDAKvB6e,GAEiB,uCAAG,4BAAAlqB,EAAA,sEACIilB,KADJ,OACZ8c,EADY,OAElBb,EAAYa,EAAQ12B,KAAKA,MAFP,2CAAH,oDAIjB22B,KAEC,IAEH,IAAM5B,GAAiB,uCAAG,sBAAApgC,EAAA,sDACxB+/B,GAAmB,GADK,2CAAH,qDAIvB,GAAwBtgC,oBAAS,GAAjC,qBAAOC,GAAP,MAAaC,GAAb,MACM+/B,GAAc,SAAC3nB,EAAS5L,GAC5Bk0B,EAAkBtoB,GAClBuoB,GAAMn0B,GACNxM,IAAQ,IAGJ6gC,GAAqB,uCAAG,sBAAAxgC,EAAA,sFAAAA,EAAA,MACF,8BAAAA,EAAA,sEACQglB,GAAqBqC,GAD7B,cAClB2C,EADkB,gBAEEA,EAAkB3e,KAFpB,OAElB4e,EAFkB,OAGxBL,EAAeK,EAAY5e,MAHH,2CADE,qDAM5B6e,GAN4B,2CAAH,qDASrBpqB,GAAc,kBAAMH,IAAQ,IAElC,OACE,cAAC,GAAD,CAAMkG,MAAM,0BAAZ,SACE,eAACoL,GAAA,EAAD,CAAW9D,SAAS,KAApB,UACE,cAACmC,GAAA,EAAD,CACE5P,KAAMA,GACNiB,QAASb,GACTyP,kBAAgB,oBAChBC,mBAAiB,0BAJnB,SAME,cAAC1O,EAAA,EAAD,CAAKvD,GAAIqvB,EAAT,SACE,cAAC,GAAD,CACE7U,QAAS4kB,EACTtB,iBAAkBmF,GAClBzsB,MAAO5H,GACPrM,YAAaA,SAInB,cAACwP,GAAA,EAAD,CACE5P,KAAMogC,EACNn/B,QAAS,kBAAMo/B,GAAmB,IAClCxwB,kBAAgB,oBAChBC,mBAAiB,0BAJnB,SAME,cAAC1O,EAAA,EAAD,CAAKvD,GAAIqvB,EAAT,SACE,cAAC,GAAD,CACE7U,QAAS4kB,EACTtB,iBAAkBmF,GAClBzsB,MAAO5H,GACP0zB,IAAKzgC,OAAOC,aAAaC,QAAQ,UACjCQ,YAAa,kBAAMigC,GAAmB,IACtCtG,KAAK,aAIX,cAAC34B,EAAA,EAAD,CAAKvD,GAAI,CAAEm3B,GAAI,GAAf,SACE,cAACzzB,EAAA,EAAD,CAAYC,QAAQ,KAApB,0BAEF,eAAC0S,GAAA,EAAD,CAAMC,WAAS,EAAC/Q,QAAS,EAAzB,UACE,eAAC8Q,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,EAAGypB,GAAI,EAA9B,UACE,cAAChqB,GAAA,EAAD,CAAMpQ,MAAO,CAAEmI,UAAW,OAAQM,WAAY,OAAQtG,UAAW,SAAjE,SACE,sBAAKtE,UAAU,mCAAf,UACE,8CACA,cAACwC,EAAA,EAAD,CACE8N,SAAUQ,EACV1N,UAAU,OACVjB,MAAO,CAAEoC,QAAS,QAClB4M,YAAU,EACV9B,aAAa,MALf,SAOG1O,EACC,qCACE,qBAAKX,UAAU,iBAAf,SACE,cAAC8O,GAAA,EAAD,CACEjB,GAAG,+BACHmB,MAAOrO,EAASmC,KAChBX,MAAO,CAAErF,MAAO,QAChBwD,MAAM,OACN+O,aAAa,MACbwM,UAAQ,MAGZ,qBAAK7b,UAAU,iBAAf,SACE,cAAC8O,GAAA,EAAD,CACEjB,GAAG,+BACHmB,MAAOrO,EAASR,MAChBgC,MAAO,CAAErF,MAAO,QAChBwD,MAAM,QACN+O,aAAa,MACbwM,UAAQ,MAGZ,qBAAK7b,UAAU,iBAAf,SACE,cAAC8O,GAAA,EAAD,CACEjB,GAAG,+BACHmB,MAAOrO,EAASmZ,OAChB3X,MAAO,CAAErF,MAAO,QAChBwD,MAAM,gBACN+O,aAAa,MACbwM,UAAQ,MAGZ,qBAAK7b,UAAU,iBAAf,SACE,cAAC8O,GAAA,EAAD,CACEjB,GAAG,+BACHmB,MAAOrO,EAASgjC,kBAChBxhC,MAAO,CAAErF,MAAO,QAChBuS,aAAa,MACb/O,MAAM,oBACNkzB,UAAU,OACV3X,UAAQ,MAGZ,qBAAK7b,UAAU,iBAAf,SACE,cAAC8O,GAAA,EAAD,CACEjB,GAAG,+BACHmB,MAAOrO,EAASijC,oBAChBzhC,MAAO,CAAErF,MAAO,QAChBwD,MAAM,sBACN+O,aAAa,MACbmkB,UAAU,OACV3X,UAAQ,SAKd,cAACtM,GAAA,EAAD,WAKR,cAAC+F,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,GAAIypB,GAAI,GAA/B,SACE,qBAAKv8B,UAAU,mCAAmCmC,MAAO,CAAEmI,UAAW,QAAtE,SACE,eAACiI,GAAA,EAAD,CAAMpQ,MAAO,CAAEoC,QAAS,OAAQqG,WAAY,OAAQE,cAAe,QAAnE,UACE,8CACwB,IAAvBugB,EAAYjc,OAAeo0B,EAAW,KACvC,cAAC1tB,GAAA,EAAD,CACE1S,UAAW2S,KACX5T,MAAO,CAAEmI,UAAW,OAAQjF,UAAW,QAASkpB,UAAW,UAF7D,SAIE,cAACvY,GAAA,EAAD,CAAO/W,GAAI,CAAE0U,SAAU,KAAO1B,KAAK,QAAQgE,aAAW,gBAAtD,SACE,cAACC,GAAA,EAAD,UACGmV,EAAYroB,KAAI,SAACisB,EAAKxZ,GAAN,OACf,eAACW,GAAA,EAAD,CACEnX,GAAI,CAAE,mCAAoC,CAAEc,OAAQ,IADtD,UAIE,eAACsW,GAAA,EAAD,CAAWjT,UAAU,KAAKkT,MAAM,MAAMnU,MAAO,CAAE0R,SAAU,QAAzD,UACG4B,EAAQ,EADX,YACgBwZ,QADhB,IACgBA,OADhB,EACgBA,EAAKvV,eADrB,YACuCuV,QADvC,IACuCA,OADvC,EACuCA,EAAKrV,eAAgB,IACjC,OAArB,OAAHqV,QAAG,IAAHA,OAAA,EAAAA,EAAKrV,gBAAyB,IAAM,GAFvC,OAGGqV,QAHH,IAGGA,OAHH,EAGGA,EAAKpV,SAHR,YAGoBoV,QAHpB,IAGoBA,OAHpB,EAGoBA,EAAKlV,MAHzB,YAGkCkV,QAHlC,IAGkCA,OAHlC,EAGkCA,EAAK/U,KAHvC,YAG+C+U,QAH/C,IAG+CA,OAH/C,EAG+CA,EAAKjV,WAEpD,cAAC3D,GAAA,EAAD,CAAW/C,MAAM,QAAQnR,MAAO,CAAE0R,SAAU,QAA5C,SACE,cAAC8sB,GAAD,CACE9yB,GAAIohB,EAAIphB,GACRxM,QAASA,GACT+/B,YAAaA,GACb3nB,QAASwV,EACTiS,OAAO,QACPnE,iBAAkBmF,SAdjBzsB,YAsBS,IAAvB4V,EAAYjc,QACX,cAACvN,EAAA,EAAD,CACEe,QAAQ,YACRT,MAAO,CAAEmI,UAAW,OAAQuJ,SAAU,QACtC9R,QAAS+/B,GAHX,mCAYV,cAACxsB,GAAA,EAAD,CAAMpO,MAAI,EAACjC,GAAI,GAAI6N,GAAI,EAAGypB,GAAI,EAA9B,SACE,cAAChqB,GAAA,EAAD,CAAMpQ,MAAO,CAAEmI,UAAW,OAAQQ,cAAe,OAAQF,WAAY,QAArE,SACE,sBAAK5K,UAAU,mCAAf,UACE,iDACA,eAACwC,EAAA,EAAD,CACE8N,SAAUQ,EACV1N,UAAU,OACVjB,MAAO,CAAEoC,QAAS,QAClB4M,YAAU,EACV9B,aAAa,MALf,UAOE,qBAAKrP,UAAU,iBAAf,SACE,eAACokB,GAAA,EAAD,CAAanlB,GAAI,CAAEnC,MAAO,QAAUsF,MAAM,UAAUQ,QAAQ,WAA5D,UACE,cAACuwB,GAAA,EAAD,CACEhxB,MAAO,CAAEC,MAAOkM,EAAOgY,UAAY,UAAY,QAC/CwR,QAAQ,+BAFV,8BAMA,cAACvgB,GAAA,EAAD,CACE1J,GAAG,+BACHkB,KAAMb,EAAOg1B,cAAgB,OAAS,WACtCl0B,MAAOd,EAAOoY,UACdnkB,MAAO,CAAErF,MAAO,QAChBmS,SAAUo0B,EAAiB,aAC3B/xB,aACE,cAACC,GAAA,EAAD,CAAgBjT,SAAS,MAAzB,SACE,cAACqG,EAAA,EAAD,CACEsR,aAAW,6BACXlU,QAjWK,WAC/BoM,EAAU,2BACLD,GADI,IAEPg1B,eAAgBh1B,EAAOg1B,kBA+VCW,YAAahB,EACbpxB,KAAK,MAJP,SAMGvD,EAAOg1B,cAAgB,cAACY,GAAA,EAAD,IAAiB,cAACC,GAAA,EAAD,QAI/CzjC,MAAM,mBACN+O,aAAa,MACb3C,MAAO4B,EAAOgY,YAEfhY,EAAOgY,WACN,cAAC9B,GAAA,EAAD,CAAgB9X,OAAK,EAACmB,GAAG,kBAAzB,SAC+B,IAA5BK,EAAOoY,UAAUlX,OACd,8BACAd,EAAOgY,WAAagd,SAKhC,qBAAKtjC,UAAU,iBAAf,SACE,eAACokB,GAAA,EAAD,CAAanlB,GAAI,CAAEnC,MAAO,QAAUsF,MAAM,UAAUQ,QAAQ,WAA5D,UACE,cAACuwB,GAAA,EAAD,CACEhxB,MAAO,CACLC,MAAOkM,EAAOkY,YAAc,UAAY,QAE1CsR,QAAQ,iCAJV,0BAQA,cAACvgB,GAAA,EAAD,CACE1J,GAAG,iCACHkB,KAAMb,EAAOi1B,cAAgB,OAAS,WACtCn0B,MAAOd,EAAOsY,YACdrkB,MAAO,CAAErF,MAAO,QAChBmS,SAAUo0B,EAAiB,eAC3B/xB,aACE,cAACC,GAAA,EAAD,CAAgBjT,SAAS,MAAzB,SACE,cAACqG,EAAA,EAAD,CACEsR,aAAW,6BACXlU,QApYK,WAC/BoM,EAAU,2BACLD,GADI,IAEPi1B,eAAgBj1B,EAAOi1B,kBAkYCU,YAAahB,EACbpxB,KAAK,MAJP,SAMGvD,EAAOi1B,cAAgB,cAACW,GAAA,EAAD,IAAiB,cAACC,GAAA,EAAD,QAI/CzjC,MAAM,eACN+O,aAAa,MACb3C,MAAO4B,EAAOkY,cAEflY,EAAOkY,aACN,cAAChC,GAAA,EAAD,CAAgB9X,OAAK,EAACmB,GAAG,kBAAzB,SACiC,IAA9BK,EAAOsY,YAAYpX,OAChB,8BACA,sDAKZ,qBAAKpP,UAAU,iBAAf,SACE,eAACokB,GAAA,EAAD,CAAanlB,GAAI,CAAEnC,MAAO,QAAUsF,MAAM,UAAUQ,QAAQ,WAA5D,UACE,cAACuwB,GAAA,EAAD,CACEhxB,MAAO,CACLC,MAAOkM,EAAO20B,gBAAkB,UAAY,QAE9CnL,QAAQ,sCAJV,8BAQA,cAACvgB,GAAA,EAAD,CACE1J,GAAG,sCACHkB,KAAMb,EAAOk1B,cAAgB,OAAS,WACtCp0B,MAAOd,EAAO+0B,gBACd9gC,MAAO,CAAErF,MAAO,QAChBmS,SAAUo0B,EAAiB,mBAC3B/xB,aACE,cAACC,GAAA,EAAD,CAAgBjT,SAAS,MAAzB,SACE,cAACqG,EAAA,EAAD,CACEsR,aAAW,6BACXlU,QAvaK,WAC/BoM,EAAU,2BACLD,GADI,IAEPk1B,eAAgBl1B,EAAOk1B,kBAqaCS,YAAahB,EACbpxB,KAAK,MAJP,SAMGvD,EAAOk1B,cAAgB,cAACU,GAAA,EAAD,IAAiB,cAACC,GAAA,EAAD,QAI/CzjC,MAAM,mBACN+O,aAAa,MACb3C,MAAO4B,EAAO20B,kBAEf30B,EAAO20B,iBACN,cAACze,GAAA,EAAD,CAAgB9X,OAAK,EAACmB,GAAG,kBAAzB,SACqC,IAAlCK,EAAO+0B,gBAAgB7zB,OACpB,8BACA,4DAKZ,qBACEjN,MAAO,CACLsE,QAAS,OACT3J,MAAO,OACPkK,eAAgB,SAChBsD,UAAW,QALf,SAQG8D,EACC,cAACmB,GAAA,EAAD,IAEA,cAAC1N,EAAA,EAAD,CAAQe,QAAQ,YAAYmM,KAAK,SAAjC,iDCteP,SAASi1B,KACtB,IAAQv3B,EAAUqsB,cAAVrsB,MACFnL,EAAWC,cAaXshC,EAA0B,SAAC3zB,GAC/BA,EAAMmgB,kBAGR,EAA8BluB,mBAAS,CACrC2hC,yBAAyB,EACzBC,mBAAmB,IAFrB,mBAAO7wB,EAAP,KAAgB8wB,EAAhB,KAKA,EAA4B7hC,mBAAS,CACnCqlB,YAAa,GACbyc,gBAAiB,GACjBC,eAAe,EACfC,eAAe,EACfC,eAAe,IALjB,mBAAOl1B,EAAP,KAAeC,EAAf,KAQA,EAA8BhN,oBAAS,GAAvC,mBAAOiN,EAAP,KAAgBC,EAAhB,KACM4M,EAAe,SAACC,GAAD,OAAU,SAAChM,GAC9Bf,EAAU,2BAAKD,GAAN,kBAAegN,EAAOhM,EAAMC,OAAOH,SAC/B,gBAATkM,GACF3M,EAAU,2BACLD,GADI,IAEPkY,YAAatX,EAAMC,OAAOH,MAAMI,OAAS,KAGhC,oBAAT8L,GACF3M,EAAU,2BACLD,GADI,IAEP20B,gBAAiB/0B,EAAOsY,cAAgBtX,EAAMC,OAAOH,WAK3D,EAA4B7N,mBAAS,CACnCmlB,WAAW,EACXE,aAAa,EACbyc,iBAAiB,IAHnB,mBAAO30B,EAAP,KAAeC,EAAf,KAMMuC,EAAY,uCAAG,WAAO5B,GAAP,yBAAAxN,EAAA,yDACnBwN,EAAMmgB,mBACFnhB,EAAOsY,cAAgBtY,EAAO+0B,kBAAmB,UAAA/0B,EAAOsY,mBAAP,eAAoBjW,OAAOnB,SAAU,GAFvE,wBAGjBf,GAAW,GACL41B,EAAMC,oBAASC,mBAAmB13B,IAJvB,SAKMN,GAAS,GAAD,OAAIc,uCAAJ,mBAA2D,CACxFC,OAAQ,OACRjB,WACAc,KAAMnM,KAAKuM,UAAU,CACnBC,SAAQ,UAAEc,EAAOsY,mBAAT,aAAE,EAAoBjW,OAC9B6zB,sBAAqB,UAAEl2B,EAAO+0B,uBAAT,aAAE,EAAwB1yB,OAC/C9D,MAAOw3B,MAXM,cAKXp3B,EALW,OAejBm2B,EAAW,2BAAK9wB,GAAN,IAAe4wB,yBAAyB,KAfjC,UAgBEj2B,EAASE,KAhBX,QAgBXA,EAhBW,OAiBO,MAApBF,EAASjB,SACXkB,KAAK,iCAAkC,GAAI,WAC3CxL,EAAS,KACT6M,EAAU,2BACLD,GADI,IAEPsY,YAAa,GACbyc,gBAAiB,OAGG,MAApBp2B,EAASjB,QACXkB,KAAKC,EAAKC,QAAS,GAAI,SAED,MAApBH,EAASjB,QACXkB,KAAKC,EAAKC,QAAS,GAAI,SAED,MAApBH,EAASjB,SACXkB,KAAKC,EAAKC,QAAS,qBAAsB,SACzC6kB,YAAW,WACT/wB,OAAOC,aAAaiN,UACnB,MApCY,wBAsCRE,EAAO+0B,kBAAoB/0B,EAAOsY,aAC3CjY,EAAU,2BAAKD,GAAN,IAAc20B,iBAAiB,KAvCvB,QAyCnB50B,GAAW,GAzCQ,4CAAH,sDA4ClB,OACE,eAAC7L,EAAA,EAAD,CACE8N,SAAUQ,EACV1N,UAAU,OACVjB,MAAO,CAAEmI,UAAW,SACpB6G,YAAU,EACV9B,aAAa,MALf,UAOE,qBAAKrP,UAAU,iBAAf,SACE,eAACokB,GAAA,EAAD,CAAanlB,GAAI,CAAEnC,MAAO,QAAUsF,MAAM,UAAUQ,QAAQ,WAA5D,UACE,cAACuwB,GAAA,EAAD,CACEhxB,MAAO,CACLC,MAAOkM,EAAOkY,YAAc,UAAY,QAE1CsR,QAAQ,iCAJV,0BAQA,cAACvgB,GAAA,EAAD,CACE1J,GAAG,iCACHkB,KAAMb,EAAOi1B,cAAgB,OAAS,WACtCn0B,MAAOd,EAAOsY,YACdrkB,MAAO,CAAErF,MAAO,QAChBmS,SAAUgM,EAAa,eACvB3J,aACE,cAACC,GAAA,EAAD,CAAgBjT,SAAS,MAAzB,SACE,cAACqG,EAAA,EAAD,CACEsR,aAAW,6BACXlU,QA5HiB,WAC/BoM,EAAU,2BACLD,GADI,IAEPi1B,eAAgBj1B,EAAOi1B,kBA0HXU,YAAahB,EACbpxB,KAAK,MAJP,SAMGvD,EAAOi1B,cAAgB,cAACW,GAAA,EAAD,IAAiB,cAACC,GAAA,EAAD,QAI/CzjC,MAAM,eACN+O,aAAa,MACb3C,MAAO4B,EAAOkY,cAEflY,EAAOkY,aACN,cAAChC,GAAA,EAAD,CAAgB9X,OAAK,EAACmB,GAAG,kBAAzB,SACiC,IAA9BK,EAAOsY,YAAYpX,OAChB,8BACA,sDAKZ,qBAAKpP,UAAU,iBAAf,SACE,eAACokB,GAAA,EAAD,CAAanlB,GAAI,CAAEnC,MAAO,QAAUsF,MAAM,UAAUQ,QAAQ,WAA5D,UACE,cAACuwB,GAAA,EAAD,CACEhxB,MAAO,CACLC,MAAOkM,EAAO20B,gBAAkB,UAAY,QAE9CnL,QAAQ,sCAJV,8BAQA,cAACvgB,GAAA,EAAD,CACE1J,GAAG,sCACHkB,KAAMb,EAAOk1B,cAAgB,OAAS,WACtCp0B,MAAOd,EAAO+0B,gBACd9gC,MAAO,CAAErF,MAAO,QAChBmS,SAAUgM,EAAa,mBACvB3J,aACE,cAACC,GAAA,EAAD,CAAgBjT,SAAS,MAAzB,SACE,cAACqG,EAAA,EAAD,CACEsR,aAAW,6BACXlU,QA/JiB,WAC/BoM,EAAU,2BACLD,GADI,IAEPk1B,eAAgBl1B,EAAOk1B,kBA6JXS,YAAahB,EACbpxB,KAAK,MAJP,SAMGvD,EAAOk1B,cAAgB,cAACU,GAAA,EAAD,IAAiB,cAACC,GAAA,EAAD,QAI/CzjC,MAAM,mBACN+O,aAAa,MACb3C,MAAO4B,EAAO20B,kBAEf30B,EAAO20B,iBACN,cAACze,GAAA,EAAD,CAAgB9X,OAAK,EAACmB,GAAG,kBAAzB,SACqC,IAAlCK,EAAO+0B,gBAAgB7zB,OACpB,8BACA,4DAKZ,qBACEjN,MAAO,CACLsE,QAAS,OACT3J,MAAO,OACPkK,eAAgB,SAChBsD,UAAW,QALf,SAQG8D,EACC,cAACmB,GAAA,EAAD,IAEA,cAAC1N,EAAA,EAAD,CAAQM,MAAO,CAAErF,MAAO,OAAQwH,UAAW,QAAU1B,QAAQ,YAAYmM,KAAK,SAA9E,kCCjNV,IAAMlL,GAAY7F,YAAOsN,GAAPtN,EAAa,gBAAGZ,EAAH,EAAGA,MAAH,sBAC5BA,EAAMC,YAAYC,GAAG,MAAQ,CAC5BmJ,QAAS,YAIP6L,GAAetU,YAAOuU,KAAPvU,EAAa,kBAAgB,CAChDlB,MAAO,OACP+R,SAAU,IACVpI,QAAS,OACT0D,cAAe,SACfnD,eAAgB,SAChBwL,OANgC,EAAGpV,MAMrBoH,QAAQ,EAAG,EAAG,EAAG,OAG3BiO,GAAezU,YAAO,MAAPA,EAAc,kBAAgB,CACjD6Q,SAAU,IACV2D,OAAQ,OACR/L,QAAS,OACTnC,UAAW,QACX6F,cAAe,SACfnD,eAAgB,SAChBzC,QAPiC,EAAGnH,MAOrBoH,QAAQ,GAAI,OAGd,SAAS6/B,KACtB,OACE,eAAC,GAAD,CAAW98B,MAAM,+BAAjB,UACE,cAACsL,GAAD,gBAEA,cAAChW,EAAD,CAASC,MAAM,SAAf,SACE,eAAC,GAAD,WACE,cAAC6F,EAAA,EAAD,CAAYC,QAAQ,KAAK3D,GAAI,CAAEyD,GAAI,EAAGjD,GAAI,GAAI2K,GAAI,GAAlD,8BAGA,cAACG,EAAA,EAAD,CAAMC,UAAU,OAAO5H,QAAQ,YAAYQ,UAAWC,IAAYF,GAAG,IAArE,SACE,qBAAKlB,IAAI,+CAA+CC,IAAI,iBAKlE,cAACyQ,GAAA,EAAD,CAAW9D,SAAS,KAApB,SACE,eAAC,GAAD,WACE,eAAC/J,EAAA,EAAD,CAAO7F,GAAI,CAAEmL,GAAI,GAAjB,UACE,cAACzH,EAAA,EAAD,CAAYC,QAAQ,KAAKgQ,cAAY,EAArC,kCAGA,cAACjQ,EAAA,EAAD,CAAY1D,GAAI,CAAEmD,MAAO,kBAAzB,0CAGF,cAAC4hC,GAAD,YC7CK,SAASM,KACtB,OAAOC,YAAU,CACf,CACEj9B,KAAM,aACNk9B,QAAS1jC,OAAOC,aAAaC,QAAQ,SACnC,cAACgK,GAAD,IAEA,cAAC,IAAD,CAAU7H,GAAG,SAASvB,SAAO,IAE/B7E,SAAU,CACR,CAAEynC,QAAS,cAAC,IAAD,CAAUrhC,GAAG,iBAAiBvB,SAAO,KAChD,CAAE0F,KAAM,MAAOk9B,QAAS,cAAC,GAAD,KACxB,CAAEl9B,KAAM,WAAYk9B,QAAS,cAACxmB,GAAD,KAC7B,CAAE1W,KAAM,cAAek9B,QAAS,cAACxH,GAAD,KAChC,CAAE11B,KAAM,oBAAqBk9B,QAAS,cAAC,GAAD,KACtC,CAAEl9B,KAAM,WAAYk9B,QAAS,cAAC,GAAD,KAC7B,CAAEl9B,KAAM,QAASk9B,QAAS,cAAC,GAAD,KAC1B,CAAEl9B,KAAM,UAAWk9B,QAAS,cAACjO,GAAD,KAC5B,CAAEjvB,KAAM,UAAWk9B,QAAS,cAAC7B,GAAD,KAC5B,CAAEr7B,KAAM,cAAek9B,QAAS,cAAC3L,GAAD,OAGpC,CACEvxB,KAAM,IACNk9B,QAAS,cAACn5B,GAAD,IACTtO,SAAU,CACR,CAAEuK,KAAM,QAASk9B,QAAS,cAAC9xB,GAAD,KAC1B,CAAEpL,KAAM,WAAYk9B,QAAS,cAACnxB,GAAD,KAC7B,CAAE/L,KAAM,YAAak9B,QAAS,cAAC,GAAD,KAC9B,CAAEl9B,KAAM,MAAOk9B,QAAS,cAAC,GAAD,KACxB,CAAEl9B,KAAM,IAAKk9B,QAAS,cAAC,IAAD,CAAUrhC,GAAG,gBACnC,CAAEmE,KAAM,yBAA0Bk9B,QAAS,cAACH,GAAD,KAC3C,CAAE/8B,KAAM,IAAKk9B,QAAS,cAAC,IAAD,CAAUrhC,GAAG,YAGvC,CAAEmE,KAAM,IAAKk9B,QAAS,cAAC,IAAD,CAAUrhC,GAAG,OAAOvB,SAAO,O,4CC5CtCgI,GAND,CACZrL,aAAc,EACdsL,eAAgB,GAChB4J,eAAgB,ICDlB,SAASgxB,GAAeC,EAAQC,GAC9B,MAAM,8BAAN,OAAqCD,EAArC,aAAgDC,EAAhD,KAIF,IAAMC,GAAO,CACXC,EAAG,UACHC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACLC,IAAK,UACL,KAAOzmC,YAAM,UAAW,KACxB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KACzB,MAAQA,YAAM,UAAW,KAGrB0mC,GAAU,CACdxQ,QAAS,UACTyQ,MAAO,UACP3+B,KAAM,UACNuN,KAAM,UACN0gB,OAAQ,UACR7gB,aAAc,QAUVwxB,GAAO,CACX1Q,QAAS,UACTyQ,MAAO,UACP3+B,KAAM,UACNuN,KAAM,UACN0gB,OAAQ,UACR7gB,aAAc,QAEVyxB,GAAU,CACd3Q,QAAS,UACTyQ,MAAO,UACP3+B,KAAM,UACNuN,KAAM,UACN0gB,OAAQ,UACR7gB,aAAc2wB,GAAK,MAEfe,GAAU,CACd5Q,QAAS,UACTyQ,MAAO,UACP3+B,KAAM,UACNuN,KAAM,UACN0gB,OAAQ,UACR7gB,aAAc2wB,GAAK,MAEfgB,GAAQ,CACZ7Q,QAAS,UACTyQ,MAAO,UACP3+B,KAAM,UACNuN,KAAM,UACN0gB,OAAQ,UACR7gB,aAAc,QAGV4xB,GAAY,CAChBj/B,QAAS69B,GAAec,GAAQC,MAAOD,GAAQ1+B,MAC/CW,KAAMi9B,GAAegB,GAAKD,MAAOC,GAAK5+B,MACtCwuB,QAASoP,GAAeiB,GAAQF,MAAOE,GAAQ7+B,MAC/Ci/B,QAASrB,GAAekB,GAAQH,MAAOG,GAAQ9+B,MAC/C6F,MAAO+3B,GAAemB,GAAMJ,MAAOI,GAAM/+B,OAqC5BnI,GA1BC,CACdqnC,OAAQ,CAAEC,MAAO,OAAQC,MAAO,QAChCr/B,QAAQ,eAAM2+B,IACdh/B,UAAU,eA5DM,CAChBwuB,QAAS,UACTyQ,MAAO,UACP3+B,KAAM,UACNuN,KAAM,UACN0gB,OAAQ,UACR7gB,aAAc,SAuDdzM,KAAK,eAAMi+B,IACXpQ,QAAQ,eAAMqQ,IACdI,QAAQ,eAAMH,IACdj5B,MAAM,eAAMk5B,IACZ9mC,KAAM8lC,GACNsB,UAAWL,GACXM,MAlBmB,CACnBC,OAAQ,CAAC,UAAW,UAAW,UAAW,WAC1CC,KAAM,CAAC,UAAW,UAAW,UAAW,WACxCC,MAAO,CAAC,UAAW,UAAW,UAAW,WACzCC,OAAQ,CAAC,UAAW,UAAW,UAAW,WAC1CC,IAAK,CAAC,UAAW,UAAW,UAAW,YAcvCC,QAAS7B,GAAK,OACdt+B,KAAM,CAAEM,QAASg+B,GAAK,KAAMr+B,UAAWq+B,GAAK,KAAM/oB,SAAU+oB,GAAK,MACjEnmC,WAAY,CAAEE,MAAO,OAAQuF,QAAS,OAAQwiC,QAAS9B,GAAK,MAC5Dh9B,OAAQ,CACNT,OAAQy9B,GAAK,KACb3kB,MAAO2kB,GAAK,MACZvmB,SAAUumB,GAAK,OACf/oB,SAAU+oB,GAAK,OACf+B,mBAAoB/B,GAAK,OACzBgC,MAAOhC,GAAK,OACZiC,aAAc,IACdC,gBAAiB,MCnHrB,SAAShzB,GAAQ9E,GACf,MAAM,GAAN,OAAUA,EAAQ,GAAlB,OAGF,SAAS+3B,GAAT,GAA8C,IAAf7hC,EAAc,EAAdA,GAAI4N,EAAU,EAAVA,GAAIypB,EAAM,EAANA,GACrC,MAAO,CACL,2BAA4B,CAC1B1oB,SAAUC,GAAQ5O,IAEpB,2BAA4B,CAC1B2O,SAAUC,GAAQhB,IAEpB,4BAA6B,CAC3Be,SAAUC,GAAQyoB,KAKxB,IAgFej5B,GA9EI,CACjByQ,WAHmB,0BAInBizB,kBAAmB,IACnBC,iBAAkB,IAClBjzB,eAAgB,IAChBkzB,GAAG,aACDx/B,WAAY,IACZ0D,WAAY,KACZyI,SAAUC,GAAQ,KACfizB,GAAoB,CAAE7hC,GAAI,GAAI4N,GAAI,GAAIypB,GAAI,MAE/C4K,GAAG,aACDz/B,WAAY,IACZ0D,WAAY,GAAK,GACjByI,SAAUC,GAAQ,KACfizB,GAAoB,CAAE7hC,GAAI,GAAI4N,GAAI,GAAIypB,GAAI,MAE/C6K,GAAG,aACD1/B,WAAY,IACZ0D,WAAY,IACZyI,SAAUC,GAAQ,KACfizB,GAAoB,CAAE7hC,GAAI,GAAI4N,GAAI,GAAIypB,GAAI,MAE/C8K,GAAG,aACD3/B,WAAY,IACZ0D,WAAY,IACZyI,SAAUC,GAAQ,KACfizB,GAAoB,CAAE7hC,GAAI,GAAI4N,GAAI,GAAIypB,GAAI,MAE/C+K,GAAG,aACD5/B,WAAY,IACZ0D,WAAY,IACZyI,SAAUC,GAAQ,KACfizB,GAAoB,CAAE7hC,GAAI,GAAI4N,GAAI,GAAIypB,GAAI,MAE/CgL,GAAG,aACD7/B,WAAY,IACZ0D,WAAY,GAAK,GACjByI,SAAUC,GAAQ,KACfizB,GAAoB,CAAE7hC,GAAI,GAAI4N,GAAI,GAAIypB,GAAI,MAE/CiL,UAAW,CACT9/B,WAAY,IACZ0D,WAAY,IACZyI,SAAUC,GAAQ,KAEpB2zB,UAAW,CACT//B,WAAY,IACZ0D,WAAY,GAAK,GACjByI,SAAUC,GAAQ,KAEpB4zB,MAAO,CACLt8B,WAAY,IACZyI,SAAUC,GAAQ,KAEpB5N,MAAO,CACLkF,WAAY,GAAK,GACjByI,SAAUC,GAAQ,KAEpB6zB,QAAS,CACPv8B,WAAY,IACZyI,SAAUC,GAAQ,KAEpB8zB,SAAU,CACRlgC,WAAY,IACZ0D,WAAY,IACZyI,SAAUC,GAAQ,IAClB+zB,cAAe,IACf1hC,cAAe,aAEjB2hC,OAAQ,CACNpgC,WAAY,IACZ0D,WAAY,GAAK,GACjByI,SAAUC,GAAQ,IAClB3N,cAAe,eClFJ,SAAS4hC,GAAoB3qC,GAC1C,OAAO4qC,iBCbM,SAAc5qC,GAC3B,MAAO,CACL6qC,QAAS,CACPC,eAAgB,CACdC,KAAM,CACJvoC,UAAWxC,EAAMyC,cAAcuoC,IAC/B7pC,aAAcnB,EAAMwM,MAAM6J,eAC1BnV,SAAU,WACVJ,OAAQ,KAIdmqC,cAAe,CACbC,aAAc,CACZC,qBAAsB,CAAE3lC,QAAS,MACjC4lC,yBAA0B,CAAE5lC,QAAS,UAEvCslC,eAAgB,CACdC,KAAM,CACJ5jC,QAASnH,EAAMoH,QAAQ,EAAG,EAAG,MAInCikC,eAAgB,CACdP,eAAgB,CACdC,KAAM,CACJ5jC,QAASnH,EAAMoH,QAAQ,ODZ7B+N,CAAKnV,GEdM,SAAeA,GAC5B,MAAO,CACLsrC,gBAAiB,CACfR,eAAgB,CACdC,KAAM,CACJ/lC,MAAO,UACPuR,SAAU,OACV+sB,YAAatjC,EAAMoH,QAAQ,MAIjCmkC,kBAAmB,CACjBT,eAAgB,CACdC,KAAM,CACJx0B,SAAU,OACV+sB,YAAatjC,EAAMoH,QAAQ,MAIjCokC,gBAAiB,CACfV,eAAgB,CACdC,KAAM,CACJ79B,UAAW,EACX6pB,aAAc,GAEhBX,UAAW,CACTlpB,UAAW,EACX6pB,aAAc,MFZpB0U,CAAMzrC,GGdD,CACL0rC,SAAU,CACRR,aAAc,CACZS,UAAW,GAGbb,eAAgB,CACdC,KAAM,CACJlT,gBAAiB,WCTZ,SAAe73B,GAC5B,MAAO,CACL4rC,aAAc,CACZd,eAAgB,CACdC,KAAM,CACJ,iBAAkB,CAChB,QAAS,CAAE/lC,MAAOhF,EAAMsB,QAAQ4H,KAAKuV,YAGzC8X,MAAO,CACL,iBAAkB,CAChBruB,QAAS,EACTlD,MAAOhF,EAAMsB,QAAQ4H,KAAKuV,aAKlCotB,SAAU,CACRf,eAAgB,CACd19B,UAAW,CACT,WAAY,CACV0+B,kBAAmB9rC,EAAMsB,QAAQI,KAAK,WAK9CqqC,eAAgB,CACdjB,eAAgB,CACdC,KAAM,CACJlkC,gBAAiB7G,EAAMsB,QAAQI,KAAK,OACpC,UAAW,CACTmF,gBAAiB7G,EAAMsB,QAAQI,KAAK,QAEtC,gBAAiB,CACfmF,gBAAiB7G,EAAMsB,QAAQkJ,OAAOg/B,OAExC,iBAAkB,CAChB3iC,gBAAiB7G,EAAMsB,QAAQkJ,OAAO++B,qBAG1Cn8B,UAAW,CACT,WAAY,CACV0+B,kBAAmB9rC,EAAMsB,QAAQI,KAAK,WAK9CsqC,iBAAkB,CAChBlB,eAAgB,CACdC,KAAM,CACJ,qCAAsC,CACpCrwB,YAAa1a,EAAMsB,QAAQI,KAAK,QAElC,iBAAkB,CAChB,qCAAsC,CACpCgZ,YAAa1a,EAAMsB,QAAQkJ,OAAO++B,yBJtC5C0C,CAAMjsC,GKjBK,SAAgBA,GAC7B,MAAO,CACLksC,UAAW,CACTpB,eAAgB,CACdC,KAAM,CACJ,UAAW,CACTvoC,UAAW,SAGf2pC,UAAW,CACTnrC,OAAQ,IAEVorC,iBAAkB,CAChBpnC,MAAOhF,EAAMsB,QAAQI,KAAK,KAC1Bc,UAAWxC,EAAMyC,cAAc+X,GAC/B,UAAW,CACT3T,gBAAiB7G,EAAMsB,QAAQI,KAAK,OAGxC2qC,iBAAkB,CAChB7pC,UAAWxC,EAAMyC,cAAc+G,SAEjC8iC,mBAAoB,CAClB9pC,UAAWxC,EAAMyC,cAAc0G,WAEjCojC,gBAAiB,CACf5pC,OAAO,aAAD,OAAe3C,EAAMsB,QAAQI,KAAK,QACxC,UAAW,CACTmF,gBAAiB7G,EAAMsB,QAAQkJ,OAAOqY,QAG1C2pB,YAAa,CACX,UAAW,CACT3lC,gBAAiB7G,EAAMsB,QAAQkJ,OAAOqY,WLf9Cpe,CAAOzE,GMlBI,SAAiBA,GAC9B,MAAO,CACLysC,WAAY,CACV3B,eAAgB,CACd4B,QAAS,CACP7lC,gBAAiB7G,EAAMsB,QAAQI,KAAK,MAEtCirC,MAAO,CACL3nC,MAAOhF,EAAMsB,QAAQI,KAAK,SNWhCqhC,CAAQ/iC,GOjBG,SAAkBA,GAC/B,IAAM4sC,EAASnrC,YAAMzB,EAAMsB,QAAQI,KAAK,KAAM,KACxCmrC,EAAUprC,YAAMzB,EAAMsB,QAAQI,KAAK,KAAM,GAE/C,MAAO,CACLorC,YAAa,CACXhC,eAAgB,CACdC,KAAM,CACJ1pC,WAAY,CAAC,gBAAD,sCAEqBurC,EAFrB,gBAEmCC,EAFnC,mDAGwBD,EAHxB,gBAGsCC,EAHtC,2CAIgBD,EAJhB,gBAI8BC,EAJ9B,WAMZ,0BAA2B,CACzBxrC,WAAY,mBPGpB0rC,CAAS/sC,GQpBE,SAAoBA,GACjC,MAAO,CACLgtC,cAAe,CACblC,eAAgB,CACdlmB,UAAW,CACTmS,aAAc/2B,EAAMoH,QAAQ,IAE9BoO,aAAc,CACZuhB,aAAc/2B,EAAMoH,QAAQ,ORalC7B,CAAWvF,GSrBA,SAAoBA,GACjC,MAAO,CACLitC,cAAe,CACbvoB,SAAU,CACR,CACE/b,MAAO,CAAE3D,MAAO,WAChBD,MAAO,CACL,UAAW,CAAE8B,gBAAiB7G,EAAMsB,QAAQkJ,OAAOqY,SAGvD,CACEla,MAAO,CAAE3D,MAAO,WAChBD,MAAO,CACL,UAAW,CAAE8B,gBAAiB7G,EAAMsB,QAAQkJ,OAAOqY,UAKzDioB,eAAgB,CACdC,KAAM,MTGVxjC,CAAWvH,GUtBA,SAAsBA,GACnC,MAAO,CACLktC,gBAAiB,CACfpC,eAAgB,CACdvpC,MAAO,CACLiB,UAAWxC,EAAMyC,cAAcC,QVkBrCgc,CAAa1e,IWnBjB,IAAMmtC,GAAa7rC,GAAQI,KAAK,KAsDnBe,GAnBc,SAACuC,GAC1B,IAAMooC,EAAc3rC,YAAMuD,EAAO,KAEjC,MAAO,CACLqoC,GAAG,eAAD,OAAiBD,GACnB5yB,GAAG,gBAAD,OAAkB4yB,GACpBE,IAAI,aAAD,OAAeF,EAAf,2BAA6CA,GAChDpC,IAAI,aAAD,OAAeoC,EAAf,8BAAgDA,GACnD1qC,IAAI,aAAD,OAAe0qC,EAAf,8BAAgDA,GACnDG,IAAI,aAAD,OAAeH,EAAf,2BAA6CA,GAChD5jC,QAAQ,gBAAD,OAAkB/H,YAAMH,GAAQkI,QAAQC,KAAM,MACrDN,UAAU,gBAAD,OAAkB1H,YAAMH,GAAQ6H,UAAUM,KAAM,MACzDW,KAAK,gBAAD,OAAkB3I,YAAMH,GAAQ8I,KAAKX,KAAM,MAC/CwuB,QAAQ,gBAAD,OAAkBx2B,YAAMH,GAAQ22B,QAAQxuB,KAAM,MACrDi/B,QAAQ,gBAAD,OAAkBjnC,YAAMH,GAAQonC,QAAQj/B,KAAM,MACrD6F,MAAM,gBAAD,OAAkB7N,YAAMH,GAAQgO,MAAM7F,KAAM,OAIxB+jC,CAAmBL,IAIjCrK,GAxDM,SAAC99B,GACpB,IAAMyoC,EAAehsC,YAAMuD,EAAO,IAC5B0oC,EAAejsC,YAAMuD,EAAO,KAC5B2oC,EAAelsC,YAAMuD,EAAO,KAClC,MAAO,CACL,OADK,2BAEeyoC,EAFf,4BAE+CC,EAF/C,4BAE+EC,GAF/E,2BAGeF,EAHf,4BAG+CC,EAH/C,4BAG+EC,GAH/E,2BAIeF,EAJf,4BAI+CC,EAJ/C,4BAI+EC,GAJ/E,2BAKeF,EALf,4BAK+CC,EAL/C,6BAKgFC,GALhF,2BAMeF,EANf,4BAM+CC,EAN/C,6BAMgFC,GANhF,2BAOeF,EAPf,6BAOgDC,EAPhD,6BAOiFC,GAPjF,2BAQeF,EARf,6BAQgDC,EARhD,6BAQiFC,GARjF,2BASeF,EATf,6BASgDC,EAThD,6BASiFC,GATjF,2BAUeF,EAVf,6BAUgDC,EAVhD,6BAUiFC,GAVjF,2BAWeF,EAXf,8BAWiDC,EAXjD,6BAWkFC,GAXlF,2BAYeF,EAZf,8BAYiDC,EAZjD,6BAYkFC,GAZlF,2BAaeF,EAbf,8BAaiDC,EAbjD,6BAakFC,GAblF,2BAceF,EAdf,8BAciDC,EAdjD,6BAckFC,GAdlF,2BAeeF,EAff,8BAeiDC,EAfjD,6BAekFC,GAflF,2BAgBeF,EAhBf,8BAgBiDC,EAhBjD,6BAgBkFC,GAhBlF,4BAiBgBF,EAjBhB,8BAiBkDC,EAjBlD,6BAiBmFC,GAjBnF,4BAkBgBF,EAlBhB,8BAkBkDC,EAlBlD,6BAkBmFC,GAlBnF,4BAmBgBF,EAnBhB,8BAmBkDC,EAnBlD,6BAmBmFC,GAnBnF,4BAoBgBF,EApBhB,8BAoBkDC,EApBlD,6BAoBmFC,GApBnF,6BAqBiBF,EArBjB,8BAqBmDC,EArBnD,6BAqBoFC,GArBpF,6BAsBiBF,EAtBjB,8BAsBmDC,EAtBnD,6BAsBoFC,GAtBpF,6BAuBiBF,EAvBjB,8BAuBmDC,EAvBnD,6BAuBoFC,GAvBpF,6BAwBiBF,EAxBjB,8BAwBmDC,EAxBnD,6BAwBoFC,GAxBpF,6BAyBiBF,EAzBjB,8BAyBmDC,EAzBnD,6BAyBoFC,IAyB7EC,CAAaT,IC5Cd,SAASU,GAAT,GAAoC,IAAbluC,EAAY,EAAZA,SAC9BmuC,EAAe9rB,mBACnB,iBAAO,CACL1gB,WACAkL,SACAtG,cACA48B,WACArgC,oBAEF,IAGIzC,EAAQ+tC,aAAYD,GAG1B,OAFA9tC,EAAMguC,WAAaC,GAAmBjuC,GAGpC,cAACkuC,GAAA,EAAD,CAAsBC,aAAW,EAAjC,SACE,eAACC,GAAA,EAAD,CAAepuC,MAAOA,EAAtB,UACE,cAACquC,GAAA,EAAD,IACC1uC,O,cC/BM,SAAS2uC,KACtB,IAAMtuC,EAAQgK,eAEd,OACE,cAAC,KAAD,CACEm0B,OAAQ,CACN,IAAK,CACH/oB,OAAQ,EACRjO,QAAS,EACTonC,UAAW,cAEbC,KAAM,CACJ9uC,MAAO,OACPsB,OAAQ,OACRytC,wBAAyB,SAE3BhxB,KAAM,CACJ/d,MAAO,OACPsB,OAAQ,QAEV,QAAS,CACPtB,MAAO,OACPsB,OAAQ,QAEVu1B,MAAO,CACL,iBAAkB,CAChBmY,cAAe,YACf,+BAAgC,CAC9Bt5B,OAAQ,EACRu5B,iBAAkB,QAEpB,+BAAgC,CAC9Bv5B,OAAQ,EACRu5B,iBAAkB,UAIxBC,SAAU,CACR,+BAAgC,CAC9B5pC,MAAOhF,EAAMsB,QAAQ4H,KAAKuV,UAE5B,sBAAuB,CACrBvW,QAAS,EACTlD,MAAOhF,EAAMsB,QAAQ4H,KAAKuV,UAE5B,0BAA2B,CACzBzZ,MAAOhF,EAAMsB,QAAQ4H,KAAKuV,UAE5B,iBAAkB,CAChBzZ,MAAOhF,EAAMsB,QAAQ4H,KAAKuV,WAG9BowB,IAAK,CAAExlC,QAAS,QAASoI,SAAU,QAGnC,WAAY,CACVq9B,aAAc,YACdx3B,OAAQ,YACRhM,WAAY,sCAEd,uBAAwB,CACtBwjC,aAAc,UACdx3B,OAAQ,cC/DH,SAASy3B,KACtB,IAAQpjC,EAAaC,cAAbD,SAMR,OAJAkB,qBAAU,WACRnJ,OAAOsrC,SAAS,EAAG,KAClB,CAACrjC,IAEG,KCNF,SAASsjC,KACd,IAAMjvC,EAAQgK,eAER3I,EAAa,CACjBsF,eAAgB,YAChBC,qBAAsB,YACtBC,gBAAiBpF,YAAMzB,EAAMsB,QAAQD,WAAWyF,QAAS,MAG3D,OACE,cAACwnC,GAAA,EAAD,CACEnQ,OAAQ,CACN,sBAAuB,CAErB,2BAA2B,2BACtB98B,GADL,IAEEsB,OAAQ,EACRH,UAAWxC,EAAMyC,cAAc8qC,IAC/BvoC,MAAOhF,EAAMsB,QAAQ4H,KAAKM,QAC1BrI,aAAcnB,EAAMwM,MAAMC,eAC1B,WAAY,CAAEq/B,kBAAmB,eACjC,UAAW,CAAEA,kBAAmBrqC,YAAMzB,EAAMsB,QAAQD,WAAWyF,QAAS,QAE1E,6CAA6C,2BACxCzF,GADL,IAEEsB,OAAQ,EACRH,UAAWxC,EAAMyC,cAAc8qC,IAC/BpsC,aAAcnB,EAAMwM,MAAMC,eAC1B,8BAA+B,CAC7B9J,OAAQ,EACRwT,UAAW,SACX7L,WAAYtK,EAAMkG,WAAW0Q,eAC7B/P,gBAAiB7G,EAAMsB,QAAQI,KAAK,OACpCsD,MAAOhF,EAAMsB,QAAQ4H,KAA4B,UAAvBlJ,EAAMsB,QAAQimB,KAAmB,YAAc,cAI7E,qBAAsB,CACpBpgB,QAAS,GAEX,4BAA6B,CAC3BkC,QAAS,kBACTzB,WAAY,UAEd,4BAA6B,CAC3B07B,YAAa,GAEf,0BAA2B,CACzBt1B,WAAY,OACZjF,cAAe,kBC5CZ,SAASmmC,KACtB,OACE,eAACrB,GAAD,WACE,cAACkB,GAAD,IACA,cAAC,GAAD,IACA,cAACE,GAAD,IACA,cAAC/H,GAAD,OCFclzB,QAAqC,cAA7BtQ,OAAOgN,SAASy+B,UAEb,UAA7BzrC,OAAOgN,SAASy+B,UAEhBzrC,OAAOgN,SAASy+B,SAAStjC,MAAM,2DCnBjC,IAYeujC,GAZS,SAACC,GACnBA,GAAeA,aAAuBC,UACxC,8BAAqB9a,MAAK,YAAkD,IAA/C+a,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,OCOdO,IAASC,OACP,cAAC,IAAD,UACE,cAAC,IAAD,UACE,cAACX,GAAD,QAGJ/jB,SAAS0L,eAAe,SFuGpB,kBAAmBxuB,WACrBA,UACGynC,cACAC,MACAvb,MAAK,SAACwb,GACLA,EAAaC,gBAEdzN,OAAM,SAAClzB,GACN+yB,QAAQ/yB,MAAMA,EAAMM,YEtG5Bw/B,O","file":"static/js/main.2adfbac9.chunk.js","sourcesContent":["import PropTypes from 'prop-types';\n// material\nimport { useMediaQuery } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nMHidden.propTypes = {\n  children: PropTypes.node,\n  width: PropTypes.oneOf([\n    'xsDown',\n    'smDown',\n    'mdDown',\n    'lgDown',\n    'xlDown',\n    'xsUp',\n    'smUp',\n    'mdUp',\n    'lgUp',\n    'xlUp'\n  ]).isRequired\n};\n\nexport default function MHidden({ width, children }) {\n  const breakpoint = width.substring(0, 2);\n\n  const hiddenUp = useMediaQuery((theme) => theme.breakpoints.up(breakpoint));\n  const hiddenDown = useMediaQuery((theme) => theme.breakpoints.down(breakpoint));\n\n  if (width.includes('Down')) {\n    return hiddenDown ? null : children;\n  }\n\n  if (width.includes('Up')) {\n    return hiddenUp ? null : children;\n  }\n\n  return null;\n}\n","import PropTypes from 'prop-types';\n// material\nimport Popover from '@mui/material/Popover';\nimport { alpha, styled } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nconst ArrowStyle = styled('span')(({ theme }) => ({\n  [theme.breakpoints.up('sm')]: {\n    top: -7,\n    zIndex: 1,\n    width: 12,\n    right: 20,\n    height: 12,\n    content: \"''\",\n    position: 'absolute',\n    borderRadius: '0 0 4px 0',\n    transform: 'rotate(-135deg)',\n    background: theme.palette.background.paper,\n    borderRight: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`,\n    borderBottom: `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`\n  }\n}));\n\n// ----------------------------------------------------------------------\n\nMenuPopover.propTypes = {\n  children: PropTypes.node.isRequired,\n  sx: PropTypes.object\n};\n\nexport default function MenuPopover({ children, sx, ...other }) {\n  return (\n    <Popover\n      anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n      transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n      PaperProps={{\n        sx: {\n          mt: 1.5,\n          ml: 0.5,\n          overflow: 'inherit',\n          boxShadow: (theme) => theme.customShadows.z20,\n          border: (theme) => `solid 1px ${theme.palette.grey[500_8]}`,\n          width: 200,\n          ...sx\n        }\n      }}\n      {...other}\n    >\n      <ArrowStyle className=\"arrow\" />\n\n      {children}\n    </Popover>\n  );\n}\n","// ----------------------------------------------------------------------\n\nconst account = {\n  displayName: 'Jaydon Frankie',\n  email: 'demo@minimals.cc',\n  photoURL: '/static/mock-images/avatars/avatar_default.jpg'\n};\n\nexport default account;\n","import { Icon } from '@iconify/react';\nimport { useRef, useState } from 'react';\nimport personFill from '@iconify/icons-eva/person-fill';\n// import settings2Fill from '@iconify/icons-eva/settings-2-fill';\n// import { Link as RouterLink } from 'react-router-dom';\nimport { Link as RouterLink, useNavigate } from 'react-router-dom';\n\n// material\nimport Button from '@mui/material/Button';\nimport Box from '@mui/material/Box';\n\nimport Divider from '@mui/material/Divider';\n\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\nimport Avatar from '@mui/material/Avatar';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\n\n// components\nimport MenuPopover from '../../components/MenuPopover';\n//\nimport account from '../../_mocks_/account';\n// ----------------------------------------------------------------------\n\nconst MENU_OPTIONS = [\n  {\n    label: 'Profile',\n    icon: personFill,\n    linkTo: '/dashboard/profile'\n  }\n  // {\n  //   label: 'Manage Address',\n  //   icon: settings2Fill,\n  //   linkTo: '/dashboard/address'\n  // }\n];\n\n// ----------------------------------------------------------------------\n\nexport default function AccountPopover() {\n  const userData = JSON.parse(window.localStorage.getItem('userData'));\n  const anchorRef = useRef(null);\n  const [open, setOpen] = useState(false);\n  const navigate = useNavigate();\n  const handleOpen = () => {\n    setOpen(true);\n  };\n  const handleClose = () => {\n    setOpen(false);\n  };\n  const logoutHandler = async () => {\n    window.localStorage.removeItem('token');\n    window.localStorage.removeItem('userData');\n    navigate('/login', { replace: true });\n  };\n\n  return (\n    <>\n      <Button\n        ref={anchorRef}\n        onClick={handleOpen}\n        sx={{\n          width: 44,\n          height: 44,\n          ...(open && {\n            '&:before': {\n              zIndex: 1,\n              content: \"''\",\n              width: '150%',\n              height: '100%',\n              borderRadius: '13px',\n              position: 'absolute'\n              // bgcolor: (theme) => alpha(theme.palette.grey[900], 0.72)\n            }\n          })\n        }}\n      >\n        <>\n          <Avatar src={account.photoURL} alt=\"photoURL\" />\n          <ArrowDropDownIcon style={{ color: '#000' }} />\n        </>\n      </Button>\n\n      <MenuPopover\n        open={open}\n        onClose={handleClose}\n        anchorEl={anchorRef.current}\n        sx={{ width: 220 }}\n      >\n        <Box sx={{ my: 1.5, px: 2.5 }}>\n          <Typography variant=\"subtitle1\" noWrap>\n            {userData?.name}\n          </Typography>\n          <Typography variant=\"body2\" sx={{ color: 'text.secondary' }} noWrap>\n            {userData?.email}\n          </Typography>\n        </Box>\n\n        <Divider sx={{ my: 1 }} />\n\n        {MENU_OPTIONS.map((option) => (\n          <MenuItem\n            key={option.label}\n            to={option.linkTo}\n            component={RouterLink}\n            onClick={handleClose}\n            sx={{ typography: 'body2', py: 1, px: 2.5 }}\n          >\n            <Box\n              component={Icon}\n              icon={option.icon}\n              sx={{\n                mr: 2,\n                width: 24,\n                height: 24\n              }}\n            />\n\n            {option.label}\n          </MenuItem>\n        ))}\n\n        <Box sx={{ p: 2, pt: 1.5 }}>\n          <Button fullWidth color=\"inherit\" onClick={logoutHandler} variant=\"outlined\">\n            Logout\n          </Button>\n        </Box>\n      </MenuPopover>\n    </>\n  );\n}\n","import PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\nimport menu2Fill from '@iconify/icons-eva/menu-2-fill';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport AppBar from '@mui/material/AppBar';\nimport Toolbar from '@mui/material/Toolbar';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\n// components\nimport { MHidden } from '../../components/@material-extend';\n//\n\nimport AccountPopover from './AccountPopover';\n\n// ----------------------------------------------------------------------\n\nconst DRAWER_WIDTH = 280;\nconst APPBAR_MOBILE = 64;\nconst APPBAR_DESKTOP = 92;\n\nconst RootStyle = styled(AppBar)(({ theme }) => ({\n  boxShadow: 'none',\n  backdropFilter: 'blur(6px)',\n  WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\n  backgroundColor: alpha(theme.palette.background.default, 0.72),\n  [theme.breakpoints.up('lg')]: {\n    width: `calc(100% - ${DRAWER_WIDTH + 1}px)`\n  }\n}));\n\nconst ToolbarStyle = styled(Toolbar)(({ theme }) => ({\n  minHeight: APPBAR_MOBILE,\n  [theme.breakpoints.up('lg')]: {\n    minHeight: APPBAR_DESKTOP,\n    padding: theme.spacing(0, 5)\n  }\n}));\n\n// ----------------------------------------------------------------------\n\nDashboardNavbar.propTypes = {\n  onOpenSidebar: PropTypes.func\n};\n\nexport default function DashboardNavbar({ onOpenSidebar }) {\n  return (\n    <RootStyle>\n      <ToolbarStyle>\n        <MHidden width=\"lgUp\">\n          <IconButton onClick={onOpenSidebar} sx={{ mr: 1, color: 'text.primary' }}>\n            <Icon icon={menu2Fill} />\n          </IconButton>\n        </MHidden>\n        {/* <Searchbar /> */}\n        <Box sx={{ flexGrow: 1 }} />\n\n        <Stack direction=\"row\" alignItems=\"center\" spacing={{ xs: 0.5, sm: 1.5 }}>\n          <AccountPopover />\n        </Stack>\n      </ToolbarStyle>\n    </RootStyle>\n  );\n}\n","import PropTypes from 'prop-types';\nimport SimpleBarReact from 'simplebar-react';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled('div')({\n  flexGrow: 1,\n  height: '100%',\n  overflow: 'hidden'\n});\n\nconst SimpleBarStyle = styled(SimpleBarReact)(({ theme }) => ({\n  maxHeight: '100%',\n  '& .simplebar-scrollbar': {\n    '&:before': {\n      backgroundColor: alpha(theme.palette.grey[600], 0.48)\n    },\n    '&.simplebar-visible:before': {\n      opacity: 1\n    }\n  },\n  '& .simplebar-track.simplebar-vertical': {\n    width: 10\n  },\n  '& .simplebar-track.simplebar-horizontal .simplebar-scrollbar': {\n    height: 6\n  },\n  '& .simplebar-mask': {\n    zIndex: 'inherit'\n  }\n}));\n\n// ----------------------------------------------------------------------\n\nScrollbar.propTypes = {\n  children: PropTypes.node.isRequired,\n  sx: PropTypes.object\n};\n\nexport default function Scrollbar({ children, sx, ...other }) {\n  const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n    navigator.userAgent\n  );\n\n  if (isMobile) {\n    return (\n      <Box sx={{ overflowX: 'auto', ...sx }} {...other}>\n        {children}\n      </Box>\n    );\n  }\n\n  return (\n    <RootStyle>\n      <SimpleBarStyle timeout={500} clickOnTrack={false} sx={sx} {...other}>\n        {children}\n      </SimpleBarStyle>\n    </RootStyle>\n  );\n}\n","import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\nimport { NavLink as RouterLink, matchPath, useLocation } from 'react-router-dom';\nimport arrowIosForwardFill from '@iconify/icons-eva/arrow-ios-forward-fill';\nimport arrowIosDownwardFill from '@iconify/icons-eva/arrow-ios-downward-fill';\n// material\nimport { alpha, useTheme, styled } from '@mui/material/styles';\n\nimport Box from '@mui/material/Box';\nimport List from '@mui/material/List';\nimport ListItemText from '@mui/material/ListItemText';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport Collapse from '@mui/material/Collapse';\n\n// ----------------------------------------------------------------------\n\nconst ListItemStyle = styled((props) => <ListItemButton disableGutters {...props} />)(\n  ({ theme }) => ({\n    ...theme.typography.body2,\n    height: 48,\n    position: 'relative',\n    textTransform: 'capitalize',\n    paddingLeft: theme.spacing(5),\n    paddingRight: theme.spacing(2.5),\n    color: theme.palette.text.secondary,\n    '&:before': {\n      top: 0,\n      right: 0,\n      width: 3,\n      bottom: 0,\n      content: \"''\",\n      display: 'none',\n      position: 'absolute',\n      borderTopLeftRadius: 4,\n      borderBottomLeftRadius: 4,\n      backgroundColor: theme.palette.primary.main\n    }\n  })\n);\n\nconst ListItemIconStyle = styled(ListItemIcon)({\n  width: 22,\n  height: 22,\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center'\n});\n\n// ----------------------------------------------------------------------\n\nNavItem.propTypes = {\n  item: PropTypes.object,\n  active: PropTypes.func\n};\n\nfunction NavItem({ item, active }) {\n  const theme = useTheme();\n  const isActiveRoot = active(item.path);\n  const { title, path, icon, info, children } = item;\n  const [open, setOpen] = useState(isActiveRoot);\n\n  const handleOpen = () => {\n    setOpen((prev) => !prev);\n  };\n\n  const activeRootStyle = {\n    color: 'primary.main',\n    fontWeight: 'fontWeightMedium',\n    bgcolor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    '&:before': { display: 'block' }\n  };\n\n  const activeSubStyle = {\n    color: 'text.primary',\n    fontWeight: 'fontWeightMedium'\n  };\n\n  if (children) {\n    return (\n      <>\n        <ListItemStyle\n          onClick={handleOpen}\n          sx={{\n            ...(isActiveRoot && activeRootStyle)\n          }}\n        >\n          <ListItemIconStyle>{icon && icon}</ListItemIconStyle>\n          <ListItemText disableTypography primary={title} />\n          {info && info}\n          <Box\n            component={Icon}\n            icon={open ? arrowIosDownwardFill : arrowIosForwardFill}\n            sx={{ width: 16, height: 16, ml: 1 }}\n          />\n        </ListItemStyle>\n\n        <Collapse in={open} timeout=\"auto\" unmountOnExit>\n          <List component=\"div\" disablePadding>\n            {children.map((item) => {\n              const { title, path } = item;\n              const isActiveSub = active(path);\n\n              return (\n                <ListItemStyle\n                  key={title}\n                  component={RouterLink}\n                  to={path}\n                  sx={{\n                    ...(isActiveSub && activeSubStyle)\n                  }}\n                >\n                  <ListItemIconStyle>\n                    <Box\n                      component=\"span\"\n                      sx={{\n                        width: 4,\n                        height: 4,\n                        display: 'flex',\n                        borderRadius: '50%',\n                        alignItems: 'center',\n                        justifyContent: 'center',\n                        bgcolor: 'text.disabled',\n                        transition: (theme) => theme.transitions.create('transform'),\n                        ...(isActiveSub && {\n                          transform: 'scale(2)',\n                          bgcolor: 'primary.main'\n                        })\n                      }}\n                    />\n                  </ListItemIconStyle>\n                  <ListItemText disableTypography primary={title} />\n                </ListItemStyle>\n              );\n            })}\n          </List>\n        </Collapse>\n      </>\n    );\n  }\n\n  return (\n    <ListItemStyle\n      component={RouterLink}\n      to={path}\n      sx={{\n        ...(isActiveRoot && activeRootStyle)\n      }}\n    >\n      <ListItemIconStyle>{icon && icon}</ListItemIconStyle>\n      <ListItemText disableTypography primary={title} />\n      {info && info}\n    </ListItemStyle>\n  );\n}\n\nNavSection.propTypes = {\n  navConfig: PropTypes.array\n};\n\nexport default function NavSection({ navConfig, ...other }) {\n  const { pathname } = useLocation();\n  const match = (path) => (path ? !!matchPath({ path, end: false }, pathname) : false);\n\n  return (\n    <Box {...other}>\n      <List disablePadding>\n        {navConfig.map((item) => (\n          <NavItem key={item.title} item={item} active={match} />\n        ))}\n      </List>\n    </Box>\n  );\n}\n","import { Icon } from '@iconify/react';\nimport pieChart2Fill from '@iconify/icons-eva/pie-chart-2-fill';\nimport peopleFill from '@iconify/icons-eva/people-fill';\nimport shoppingBagFill from '@iconify/icons-eva/shopping-bag-fill';\nimport fileTextFill from '@iconify/icons-eva/file-text-fill';\n\n// ----------------------------------------------------------------------\n\nconst getIcon = (name) => <Icon icon={name} width={22} height={22} />;\n\nconst sidebarConfig = [\n  {\n    title: 'dashboard',\n    path: '/dashboard/app',\n    icon: getIcon(pieChart2Fill)\n  },\n  {\n    title: 'Patients',\n    path: '/dashboard/patients',\n    icon: getIcon(peopleFill)\n  },\n  {\n    title: 'Products',\n    path: '/dashboard/products',\n    icon: getIcon(shoppingBagFill)\n  },\n  {\n    title: 'Order Now',\n    path: '/dashboard/order',\n    icon: getIcon(fileTextFill)\n  },\n  {\n    title: 'Order History',\n    path: '/dashboard/history',\n    icon: getIcon('icon-park-outline:ad-product')\n  }\n];\n\nexport default sidebarConfig;\n","import PropTypes from 'prop-types';\nimport { useEffect } from 'react';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Avatar from '@mui/material/Avatar';\nimport Box from '@mui/material/Box';\nimport Drawer from '@mui/material/Drawer';\n// components\nimport Scrollbar from '../../components/Scrollbar';\nimport NavSection from '../../components/NavSection';\nimport { MHidden } from '../../components/@material-extend';\n//\nimport sidebarConfig from './SidebarConfig';\nimport account from '../../_mocks_/account';\n\n// ----------------------------------------------------------------------\n\nconst DRAWER_WIDTH = 280;\n\nconst RootStyle = styled('div')(({ theme }) => ({\n  [theme.breakpoints.up('lg')]: {\n    flexShrink: 0,\n    width: DRAWER_WIDTH\n  }\n}));\n\nconst AccountStyle = styled('div')(({ theme }) => ({\n  display: 'flex',\n  alignItems: 'center',\n  padding: theme.spacing(2, 2.5),\n  borderRadius: theme.shape.borderRadiusSm,\n  backgroundColor: theme.palette.grey[200]\n}));\n\n// ----------------------------------------------------------------------\n\nDashboardSidebar.propTypes = {\n  isOpenSidebar: PropTypes.bool,\n  onCloseSidebar: PropTypes.func\n};\n\nexport default function DashboardSidebar({ isOpenSidebar, onCloseSidebar }) {\n  const { pathname } = useLocation();\n  const userData = JSON.parse(window.localStorage.getItem('userData'));\n  useEffect(() => {\n    if (isOpenSidebar) {\n      onCloseSidebar();\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [pathname]);\n\n  const renderContent = (\n    <Scrollbar\n      sx={{\n        height: '100%',\n        '& .simplebar-content': { height: '100%', display: 'flex', flexDirection: 'column' }\n      }}\n    >\n      <Box sx={{ mb: 5, mx: 2.5 }} style={{ marginTop: '10%' }}>\n        <Link underline=\"none\" component={RouterLink} to=\"/dashboard/profile\">\n          <AccountStyle>\n            <Avatar src={account.photoURL} alt=\"photoURL\" />\n            <Box sx={{ ml: 2 }}>\n              <Typography variant=\"subtitle2\" sx={{ color: 'text.primary' }}>\n                {userData?.name}\n              </Typography>\n              <Typography variant=\"body2\" sx={{ color: 'text.secondary' }}>\n                {account.role}\n              </Typography>\n            </Box>\n          </AccountStyle>\n        </Link>\n      </Box>\n\n      <NavSection navConfig={sidebarConfig} />\n\n      <Box sx={{ flexGrow: 1 }} />\n      {/* <p style={{ fontSize: '10px', textAlign: 'center', paddingBottom: '15px' }}>\n        Developed by{' '}\n        <a\n          href=\"https://www.atliq.com\"\n          style={{ color: '#7b6f00', fontWeight: 'bold', textDecoration: 'none' }}\n        >\n          Atliq Technologies\n        </a>\n      </p> */}\n    </Scrollbar>\n  );\n\n  return (\n    <RootStyle>\n      <MHidden width=\"lgUp\">\n        <Drawer\n          open={isOpenSidebar}\n          onClose={onCloseSidebar}\n          PaperProps={{\n            sx: { width: DRAWER_WIDTH }\n          }}\n        >\n          {renderContent}\n        </Drawer>\n      </MHidden>\n\n      <MHidden width=\"lgDown\">\n        <Drawer\n          open\n          variant=\"persistent\"\n          PaperProps={{\n            sx: {\n              width: DRAWER_WIDTH,\n              bgcolor: 'background.default'\n            }\n          }}\n        >\n          {renderContent}\n        </Drawer>\n      </MHidden>\n    </RootStyle>\n  );\n}\n","import { useState } from 'react';\nimport { Outlet } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\n//\nimport DashboardNavbar from './DashboardNavbar';\nimport DashboardSidebar from './DashboardSidebar';\n\n// ----------------------------------------------------------------------\n\nconst APP_BAR_MOBILE = 64;\nconst APP_BAR_DESKTOP = 92;\n\nconst RootStyle = styled('div')({\n  display: 'flex',\n  minHeight: '100%',\n  overflow: 'hidden'\n});\n\nconst MainStyle = styled('div')(({ theme }) => ({\n  flexGrow: 1,\n  overflow: 'auto',\n  minHeight: '100%',\n  paddingTop: APP_BAR_MOBILE + 24,\n  paddingBottom: theme.spacing(10),\n  [theme.breakpoints.up('lg')]: {\n    paddingTop: APP_BAR_DESKTOP + 24,\n    paddingLeft: theme.spacing(2),\n    paddingRight: theme.spacing(2)\n  }\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function DashboardLayout() {\n  const [open, setOpen] = useState(false);\n\n  return (\n    <RootStyle>\n      <DashboardNavbar onOpenSidebar={() => setOpen(true)} />\n      <DashboardSidebar isOpenSidebar={open} onCloseSidebar={() => setOpen(false)} />\n      <MainStyle>\n        <Outlet />\n      </MainStyle>\n    </RootStyle>\n  );\n}\n","import PropTypes from 'prop-types';\n// material\nimport Box from '@mui/material/Box';\n\n// ----------------------------------------------------------------------\n\nLogo.propTypes = {\n  sx: PropTypes.object\n};\n\nexport default function Logo({ sx }) {\n  return <Box component=\"img\" src=\"/static/Thirdinrev.png\" sx={{ width: 90, height: 55, ...sx }} />;\n}\n","import { Link as RouterLink, Outlet } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\n// components\nimport Logo from '../components/Logo';\n\n// ----------------------------------------------------------------------\n\nconst HeaderStyle = styled('header')(({ theme }) => ({\n  top: 0,\n  left: 0,\n  lineHeight: 0,\n  width: '100%',\n  position: 'absolute',\n  padding: theme.spacing(3, 3, 0),\n  [theme.breakpoints.up('sm')]: {\n    padding: theme.spacing(5, 5, 0)\n  }\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function LogoOnlyLayout() {\n  return (\n    <>\n      <HeaderStyle>\n        <RouterLink to=\"/\">\n          <Logo />\n        </RouterLink>\n      </HeaderStyle>\n      <Outlet />\n    </>\n  );\n}\n","import PropTypes from 'prop-types';\nimport { Helmet } from 'react-helmet-async';\nimport { forwardRef } from 'react';\n// material\nimport { Box } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst Page = forwardRef(({ children, title = 'Dashboard | Quiteclear', ...other }, ref) => (\n  <Box ref={ref} {...other}>\n    <Helmet>\n      <title>{title}</title>\n    </Helmet>\n    {children}\n  </Box>\n));\n\nPage.propTypes = {\n  children: PropTypes.node.isRequired,\n  title: PropTypes.string\n};\n\nexport default Page;\n","import * as React from 'react';\nimport Alert from '@mui/material/Alert';\nimport Snackbar from '@mui/material/Snackbar';\n\nexport default function StyledSnackbar({ xPos, yPos, status, title, onClose, open }) {\n  return (\n    <Snackbar\n      open={open}\n      autoHideDuration={2000}\n      anchorOrigin={{ vertical: yPos, horizontal: xPos }}\n      onClose={onClose}\n    >\n      <Alert onClose={onClose} severity={status} color={status} sx={{ width: '100%' }}>\n        {title}\n      </Alert>\n    </Snackbar>\n  );\n}\n","export const headers = {\n  'Content-Type': 'application/json',\n  Authorization: `Bearer ${window.localStorage.getItem('token')}`\n};\n","import axios from 'axios';\nimport { AES, enc } from 'crypto-js';\nimport swal from 'sweetalert';\nimport { headers } from './utils/headers';\n// Axios Instance\nconst instance = axios.create({\n  headers: {}\n});\n\n// Request interceptor\ninstance.interceptors.request.use(\n  (config) => {\n    const token = localStorage.getItem('token');\n    if (token != null) {\n      config.headers.Authorization = `Bearer ${token}`;\n    }\n\n    return config;\n  },\n  (error) => Promise.reject(error)\n);\n\n// Response interceptor\ninstance.interceptors.response.use(\n  (response) => response,\n  async (error) => {\n    swal('Error', error.response.data.message, 'error');\n    if (error?.response?.status === 401 && window.localStorage.getItem('email')) {\n      const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/login`, {\n        method: 'POST',\n        headers,\n        data: JSON.stringify({\n          email: window.localStorage.getItem('email'),\n          password: AES.decrypt(\n            window.localStorage.getItem('password'),\n            process.env.REACT_APP_SECRET\n          ).toString(enc.Utf8)\n        })\n      });\n      const data = await response?.data;\n      if (response?.status === 200) {\n        window.localStorage.setItem('userData', JSON.stringify(data.data.userDetails));\n        window.localStorage.setItem('token', data.meta.token);\n        window.localStorage.setItem('userId', data.data.userDetails.id);\n        window.location.reload();\n      } else if (response?.status === 400) {\n        window.localStorage.clear();\n        window.location.reload();\n      }\n    } else if (error?.response?.status === 401 && !window.localStorage.getItem('email')) {\n      window.localStorage.clear();\n      window.location.reload();\n    }\n    return error.response;\n  }\n);\n\nexport default instance;\n","import { useState } from 'react';\nimport swal from 'sweetalert';\n// material\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nimport instance from '../AxiosInstance';\nimport { headers } from '../utils/headers';\n\nexport const ForgotPasswordEmailModal = (props) => {\n  const [values, setValues] = useState({\n    email: ''\n  });\n  const [spinner, setSpinner] = useState(false);\n\n  const [errors, setErrors] = useState({\n    email: false\n  });\n  const [errorsMsg, setErrorsMsg] = useState({\n    email: 'Email is required.'\n  });\n  const emailRegex =\n    /^(([^<>()\\]\\\\.,;:\\s@']+(\\.[^<>()\\]\\\\.,;:\\s@']+)*)|('.+'))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\n  const handleChange = (event) => {\n    setValues({ ...values, email: event.target.value });\n    setErrors({ email: !emailRegex.test(event.target.value) });\n    if (event.target.value.length > 0)\n      setErrorsMsg({\n        email: !emailRegex.test(event.target.value) ? 'Invalid Email.' : 'Email is required.'\n      });\n  };\n\n  const submitHandler = async () => {\n    setSpinner(true);\n    const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/forgot-password`, {\n      method: 'POST',\n      headers,\n      data: JSON.stringify({\n        email: values.email\n      })\n    });\n    setSpinner(false);\n    const data = await response.data;\n    if (response.status === 200) {\n      swal('Success', 'Email sent successfully.', 'success');\n      props.IsOpen();\n    } else if (response.status === 400) {\n      setErrorsMsg({\n        email: data.message\n      });\n      setErrors({\n        email: true\n      });\n    } else {\n      swal('Error', response?.data, 'error');\n    }\n  };\n\n  const style = {\n    position: 'absolute',\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    width: '100%',\n    maxWidth: 350,\n    bgcolor: 'background.paper',\n    borderRadius: 3,\n    boxShadow: 10,\n    p: 4\n  };\n\n  return (\n    <Box sx={style}>\n      <Typography id=\"modal-modal-title\" variant=\"h6\" component=\"h2\">\n        Recover your account\n      </Typography>\n      <TextField\n        id=\"outlined-adornment-name-registration\"\n        type=\"text\"\n        style={{ width: '100%', marginTop: '15px' }}\n        value={values.email}\n        onChange={handleChange}\n        label=\"Email\"\n        color=\"primary\"\n        autoComplete=\"off\"\n        error={errors.email}\n        helperText={errors.email ? errorsMsg.email : null}\n      />\n      <div style={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n        {spinner ? (\n          <CircularProgress style={{ marginTop: '15px' }} />\n        ) : (\n          <Button variant=\"contained\" style={{ marginTop: '15px' }} onClick={submitHandler}>\n            Send\n          </Button>\n        )}\n      </div>\n    </Box>\n  );\n};\n","import * as Yup from 'yup';\nimport { useEffect, useState } from 'react';\nimport { Link as RouterLink, useNavigate } from 'react-router-dom';\nimport { useFormik, Form, FormikProvider } from 'formik';\nimport { Icon } from '@iconify/react';\nimport { AES, enc } from 'crypto-js';\nimport eyeFill from '@iconify/icons-eva/eye-fill';\nimport eyeOffFill from '@iconify/icons-eva/eye-off-fill';\n// material\nimport Stack from '@mui/material/Stack';\nimport Checkbox from '@mui/material/Checkbox';\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Link from '@mui/material/Link';\nimport Modal from '@mui/material/Modal';\nimport { LoadingButton } from '@mui/lab';\nimport StyledSnackbar from '../../StyledSnackbar';\nimport { ForgotPasswordEmailModal } from '../../ForgotPasswordEmailModal';\nimport instance from '../../../AxiosInstance';\nimport { headers } from '../../../utils/headers';\nimport '../../../styles/pages/LoginPage.css';\n\n// ----------------------------------------------------------------------\n\nexport default function LoginForm() {\n  const navigate = useNavigate();\n  const [showPassword, setShowPassword] = useState(false);\n\n  const LoginSchema = Yup.object().shape({\n    email: Yup.string().email('Email must be a valid email address').required('Email is required'),\n    password: Yup.string().required('Password is required')\n  });\n  const [openSnack, setOpenSnack] = useState(false);\n  const handleClick = () => {\n    setOpenSnack(true);\n  };\n\n  const handleCloseSnack = (event, reason) => {\n    if (reason === 'clickaway') {\n      return;\n    }\n\n    setOpenSnack(false);\n  };\n\n  const formik = useFormik({\n    initialValues: {\n      email: window.localStorage.getItem('email') ? window.localStorage.getItem('email') : '',\n      password: window.localStorage.getItem('password')\n        ? AES.decrypt(\n            window.localStorage.getItem('password'),\n            process.env.REACT_APP_SECRET\n          ).toString(enc.Utf8)\n        : '',\n      remember:\n        window.localStorage.getItem('remember') === 'true'\n          ? window.localStorage.getItem('remember')\n          : false\n    },\n    validationSchema: LoginSchema,\n    onSubmit: async () => {\n      const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/login`, {\n        method: 'POST',\n        headers,\n        data: JSON.stringify({\n          email: formik.values.email?.trim(),\n          password: formik.values.password?.trim()\n        })\n      });\n      const data = await response.data;\n      if (response.status === 200) {\n        if (formik.values.remember) {\n          window.localStorage.setItem('remember', formik.values.remember);\n          window.localStorage.setItem('email', formik.values.email);\n          const envrypted = AES.encrypt(\n            formik.values.password,\n            process.env.REACT_APP_SECRET\n          ).toString();\n          window.localStorage.setItem('password', envrypted);\n        } else {\n          window.localStorage.setItem('remember', formik.values.remember);\n          window.localStorage.removeItem('email');\n          window.localStorage.removeItem('password');\n        }\n        window.localStorage.setItem('userData', JSON.stringify(data.data.userDetails));\n        window.localStorage.setItem('token', data.meta.token);\n        window.localStorage.setItem('userId', data.data.userDetails.id);\n        navigate('/dashboard/app', { replace: true });\n        setSnackBarData({\n          xPos: 'center',\n          yPos: 'bottom',\n          title: 'Login Successful',\n          status: 'success'\n        });\n        handleClick();\n      } else {\n        setSnackBarData({\n          xPos: 'center',\n          yPos: 'bottom',\n          title: 'Invalid credentials !',\n          status: 'error'\n        });\n        handleClick();\n      }\n    }\n  });\n\n  const [snackbarData, setSnackBarData] = useState({\n    xPos: 'center',\n    yPos: 'bottom',\n    title: '',\n    status: 'success'\n  });\n\n  const { errors, touched, values, isSubmitting, handleSubmit, getFieldProps } = formik;\n\n  const handleShowPassword = () => {\n    setShowPassword((show) => !show);\n  };\n\n  const [open, setOpen] = useState(false);\n  const handleClose = () => setOpen(false);\n  useEffect(() => {}, [open]);\n\n  return (\n    <>\n      <Modal\n        open={open}\n        onClose={handleClose}\n        aria-labelledby=\"modal-modal-title\"\n        aria-describedby=\"modal-modal-description\"\n      >\n        <ForgotPasswordEmailModal IsOpen={handleClose} />\n      </Modal>\n      <FormikProvider value={formik}>\n        <Form autoComplete=\"off\" noValidate onSubmit={handleSubmit}>\n          <Stack spacing={3}>\n            <TextField\n              fullWidth\n              autoComplete=\"username\"\n              type=\"email\"\n              label=\"Email address\"\n              {...getFieldProps('email')}\n              error={Boolean(touched.email && errors.email)}\n              helperText={touched.email && errors.email}\n            />\n\n            <TextField\n              fullWidth\n              autoComplete=\"current-password\"\n              type={showPassword ? 'text' : 'password'}\n              label=\"Password\"\n              {...getFieldProps('password')}\n              InputProps={{\n                endAdornment: (\n                  <InputAdornment position=\"end\">\n                    <IconButton onClick={handleShowPassword} edge=\"end\">\n                      <Icon icon={showPassword ? eyeFill : eyeOffFill} />\n                    </IconButton>\n                  </InputAdornment>\n                )\n              }}\n              error={Boolean(touched.password && errors.password)}\n              helperText={touched.password && errors.password}\n            />\n          </Stack>\n\n          <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" sx={{ my: 2 }}>\n            <FormControlLabel\n              control={<Checkbox {...getFieldProps('remember')} checked={values.remember} />}\n              label=\"Remember me\"\n            />\n\n            <Link component={RouterLink} variant=\"subtitle2\" to=\"#\" onClick={() => setOpen(true)}>\n              Forgot password?\n            </Link>\n          </Stack>\n          <LoadingButton\n            fullWidth\n            size=\"large\"\n            type=\"submit\"\n            variant=\"contained\"\n            color=\"primary\"\n            loading={isSubmitting}\n          >\n            Login\n          </LoadingButton>\n        </Form>\n      </FormikProvider>\n      <div className=\"about_us_href_div\">\n        <a\n          href=\"https://quiteclear.io/contact/\"\n          target=\"_blank\"\n          rel=\"noreferrer\"\n          className=\"about_us_href_p\"\n        >\n          Sign up today and take control\n        </a>\n      </div>\n      <StyledSnackbar\n        xPos={snackbarData.xPos}\n        yPos={snackbarData.yPos}\n        title={snackbarData.title}\n        status={snackbarData.status}\n        open={openSnack}\n        onClose={handleCloseSnack}\n      />\n    </>\n  );\n}\n","import { Link as RouterLink } from 'react-router-dom';\nimport { styled } from '@mui/material/styles';\nimport Card from '@mui/material/Card';\nimport Stack from '@mui/material/Stack';\nimport Link from '@mui/material/Link';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport Page from '../components/Page';\nimport { MHidden } from '../components/@material-extend';\nimport { LoginForm } from '../components/authentication/login';\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n  [theme.breakpoints.up('md')]: {\n    display: 'flex'\n  }\n}));\n\nconst SectionStyle = styled(Card)(({ theme }) => ({\n  width: '100%',\n  maxWidth: 464,\n  display: 'flex',\n  flexDirection: 'column',\n  justifyContent: 'center',\n  margin: theme.spacing(2, 0, 2, 2)\n}));\n\nconst ContentStyle = styled('div')(({ theme }) => ({\n  maxWidth: 480,\n  margin: 'auto',\n  display: 'flex',\n  minHeight: '100vh',\n  flexDirection: 'column',\n  justifyContent: 'center',\n  padding: theme.spacing(12, 0)\n}));\n\nexport default function Login() {\n  return (\n    <RootStyle title=\"Login | Quiteclear\">\n      <MHidden width=\"mdDown\">\n        <SectionStyle>\n          <Typography variant=\"h3\" sx={{ px: 5, mt: 10, mb: 5 }}>\n            Hi, Welcome Back\n          </Typography>\n          <Link underline=\"none\" variant=\"subtitle2\" component={RouterLink} to=\"/\">\n            <img src=\"/static/illustrations/illustration_login.png\" alt=\"login\" />\n          </Link>\n        </SectionStyle>\n      </MHidden>\n\n      <Container maxWidth=\"sm\">\n        <ContentStyle>\n          <Stack sx={{ mb: 5 }}>\n            <Typography variant=\"h4\" gutterBottom>\n              Sign in to Quiteclear\n            </Typography>\n            <Typography sx={{ color: 'text.secondary' }}>Enter your details below.</Typography>\n          </Stack>\n          <LoginForm />\n        </ContentStyle>\n      </Container>\n    </RootStyle>\n  );\n}\n","import PropTypes from 'prop-types';\nimport { Link as RouterLink } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\n// components\nimport Logo from '../components/Logo';\n//\nimport { MHidden } from '../components/@material-extend';\n\n// ----------------------------------------------------------------------\n\nconst HeaderStyle = styled('header')(({ theme }) => ({\n  top: 0,\n  zIndex: 9,\n  lineHeight: 0,\n  width: '100%',\n  display: 'flex',\n  alignItems: 'center',\n  position: 'absolute',\n  padding: theme.spacing(3),\n  justifyContent: 'space-between',\n  [theme.breakpoints.up('md')]: {\n    alignItems: 'flex-start',\n    padding: theme.spacing(7, 5, 0, 7)\n  }\n}));\n\n// ----------------------------------------------------------------------\n\nAuthLayout.propTypes = {\n  children: PropTypes.node\n};\n\nexport default function AuthLayout({ children }) {\n  return (\n    <HeaderStyle>\n      <RouterLink to=\"/\">{window.location.pathname !== '/login' ? <Logo /> : null}</RouterLink>\n\n      <MHidden width=\"smDown\">\n        <Typography\n          variant=\"body2\"\n          sx={{\n            mt: { md: -2 }\n          }}\n        >\n          {children}\n        </Typography>\n      </MHidden>\n    </HeaderStyle>\n  );\n}\n","import * as Yup from 'yup';\nimport { useState } from 'react';\nimport { Icon } from '@iconify/react';\nimport { useFormik, Form, FormikProvider } from 'formik';\nimport eyeFill from '@iconify/icons-eva/eye-fill';\nimport eyeOffFill from '@iconify/icons-eva/eye-off-fill';\nimport { useNavigate } from 'react-router-dom';\n// material\nimport { Stack, TextField, IconButton, InputAdornment } from '@mui/material';\nimport { LoadingButton } from '@mui/lab';\n\n// ----------------------------------------------------------------------\n\nexport default function RegisterForm() {\n  const navigate = useNavigate();\n  const [showPassword, setShowPassword] = useState(false);\n\n  const RegisterSchema = Yup.object().shape({\n    firstName: Yup.string()\n      .min(2, 'Too Short!')\n      .max(50, 'Too Long!')\n      .required('First name required'),\n    lastName: Yup.string().min(2, 'Too Short!').max(50, 'Too Long!').required('Last name required'),\n    email: Yup.string().email('Email must be a valid email address').required('Email is required'),\n    password: Yup.string().required('Password is required')\n  });\n\n  const formik = useFormik({\n    initialValues: {\n      firstName: '',\n      lastName: '',\n      email: '',\n      password: ''\n    },\n    validationSchema: RegisterSchema,\n    onSubmit: () => {\n      navigate('/dashboard', { replace: true });\n    }\n  });\n\n  const { errors, touched, handleSubmit, isSubmitting, getFieldProps } = formik;\n\n  return (\n    <FormikProvider value={formik}>\n      <Form autoComplete=\"off\" noValidate onSubmit={handleSubmit}>\n        <Stack spacing={3}>\n          <Stack direction={{ xs: 'column', sm: 'row' }} spacing={2}>\n            <TextField\n              fullWidth\n              label=\"First name\"\n              {...getFieldProps('firstName')}\n              error={Boolean(touched.firstName && errors.firstName)}\n              helperText={touched.firstName && errors.firstName}\n            />\n\n            <TextField\n              fullWidth\n              label=\"Last name\"\n              {...getFieldProps('lastName')}\n              error={Boolean(touched.lastName && errors.lastName)}\n              helperText={touched.lastName && errors.lastName}\n            />\n          </Stack>\n\n          <TextField\n            fullWidth\n            autoComplete=\"username\"\n            type=\"email\"\n            label=\"Email address\"\n            {...getFieldProps('email')}\n            error={Boolean(touched.email && errors.email)}\n            helperText={touched.email && errors.email}\n          />\n\n          <TextField\n            fullWidth\n            autoComplete=\"current-password\"\n            type={showPassword ? 'text' : 'password'}\n            label=\"Password\"\n            {...getFieldProps('password')}\n            InputProps={{\n              endAdornment: (\n                <InputAdornment position=\"end\">\n                  <IconButton edge=\"end\" onClick={() => setShowPassword((prev) => !prev)}>\n                    <Icon icon={showPassword ? eyeFill : eyeOffFill} />\n                  </IconButton>\n                </InputAdornment>\n              )\n            }}\n            error={Boolean(touched.password && errors.password)}\n            helperText={touched.password && errors.password}\n          />\n\n          <LoadingButton\n            fullWidth\n            size=\"large\"\n            type=\"submit\"\n            variant=\"contained\"\n            loading={isSubmitting}\n          >\n            Register\n          </LoadingButton>\n        </Stack>\n      </Form>\n    </FormikProvider>\n  );\n}\n","import { Link as RouterLink } from 'react-router-dom';\n// material\nimport { styled } from '@mui/material/styles';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport Card from '@mui/material/Card';\nimport Link from '@mui/material/Link';\nimport Box from '@mui/material/Box';\n// layouts\nimport AuthLayout from '../layouts/AuthLayout';\n// components\nimport Page from '../components/Page';\nimport { MHidden } from '../components/@material-extend';\nimport { RegisterForm } from '../components/authentication/register';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n  [theme.breakpoints.up('md')]: {\n    display: 'flex'\n  }\n}));\n\nconst SectionStyle = styled(Card)(({ theme }) => ({\n  width: '100%',\n  maxWidth: 464,\n  display: 'flex',\n  flexDirection: 'column',\n  justifyContent: 'center',\n  margin: theme.spacing(2, 0, 2, 2)\n}));\n\nconst ContentStyle = styled('div')(({ theme }) => ({\n  maxWidth: 480,\n  margin: 'auto',\n  display: 'flex',\n  minHeight: '100vh',\n  flexDirection: 'column',\n  justifyContent: 'center',\n  padding: theme.spacing(12, 0)\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function Register() {\n  return (\n    <RootStyle title=\"Register | Quiteclear\">\n      <AuthLayout>\n        Already have an account? &nbsp;\n        <Link underline=\"none\" variant=\"subtitle2\" component={RouterLink} to=\"/login\">\n          Login\n        </Link>\n      </AuthLayout>\n\n      <MHidden width=\"mdDown\">\n        <SectionStyle>\n          <Typography variant=\"h3\" sx={{ px: 5, mt: 10, mb: 5 }}>\n            Register to Quiteclear\n          </Typography>\n          <img alt=\"register\" src=\"/static/illustrations/illustration_register.png\" />\n        </SectionStyle>\n      </MHidden>\n\n      <Container>\n        <ContentStyle>\n          <Box sx={{ mb: 5 }}>\n            <Typography variant=\"h4\" gutterBottom>\n              Get started absolutely free.\n            </Typography>\n            <Typography sx={{ color: 'text.secondary' }}>\n              Free forever. No credit card needed.\n            </Typography>\n          </Box>\n\n          <RegisterForm />\n\n          <Typography variant=\"body2\" align=\"center\" sx={{ color: 'text.secondary', mt: 3 }}>\n            By registering, I agree to Quiteclear&nbsp;\n            <Link underline=\"always\" sx={{ color: 'text.primary' }}>\n              Terms of Service\n            </Link>\n            &nbsp;and&nbsp;\n            <Link underline=\"always\" sx={{ color: 'text.primary' }}>\n              Privacy Policy\n            </Link>\n            .\n          </Typography>\n\n          <MHidden width=\"smUp\">\n            <Typography variant=\"subtitle2\" sx={{ mt: 3, textAlign: 'center' }}>\n              Already have an account?&nbsp;\n              <Link to=\"/login\" component={RouterLink}>\n                Login\n              </Link>\n            </Typography>\n          </MHidden>\n        </ContentStyle>\n      </Container>\n    </RootStyle>\n  );\n}\n","import { Icon } from '@iconify/react';\nimport shoppingCartFill from '@iconify/icons-eva/shopping-cart-fill';\n// material\nimport { styled } from '@mui/material/styles';\nimport { Badge } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled('div')(({ theme }) => ({\n  zIndex: 999,\n  right: 0,\n  display: 'flex',\n  cursor: 'pointer',\n  position: 'fixed',\n  alignItems: 'center',\n  top: theme.spacing(16),\n  height: theme.spacing(5),\n  paddingLeft: theme.spacing(2),\n  paddingRight: theme.spacing(2),\n  paddingTop: theme.spacing(1.25),\n  boxShadow: theme.customShadows.z20,\n  color: theme.palette.text.primary,\n  backgroundColor: theme.palette.background.paper,\n  borderTopLeftRadius: theme.shape.borderRadiusMd,\n  borderBottomLeftRadius: theme.shape.borderRadiusMd,\n  transition: theme.transitions.create('opacity'),\n  '&:hover': { opacity: 0.72 }\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function CartWidget() {\n  return (\n    <RootStyle>\n      <Badge showZero badgeContent={0} color=\"error\" max={99}>\n        <Icon icon={shoppingCartFill} width={24} height={24} />\n      </Badge>\n    </RootStyle>\n  );\n}\n","import PropTypes from 'prop-types';\n// material\nimport { alpha, styled } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled('span')(({ theme, ownerState }) => {\n  const { color, variant } = ownerState;\n\n  const styleFilled = (color) => ({\n    color: theme.palette[color].contrastText,\n    backgroundColor: theme.palette[color].main\n  });\n\n  const styleOutlined = (color) => ({\n    color: theme.palette[color].main,\n    backgroundColor: 'transparent',\n    border: `1px solid ${theme.palette[color].main}`\n  });\n\n  const styleGhost = (color) => ({\n    color: theme.palette[color].dark,\n    backgroundColor: alpha(theme.palette[color].main, 0.16)\n  });\n\n  return {\n    height: 22,\n    minWidth: 22,\n    lineHeight: 0,\n    borderRadius: 8,\n    cursor: 'default',\n    alignItems: 'center',\n    whiteSpace: 'nowrap',\n    display: 'inline-flex',\n    justifyContent: 'center',\n    padding: theme.spacing(0, 1),\n    color: theme.palette.grey[800],\n    fontSize: theme.typography.pxToRem(12),\n    fontFamily: theme.typography.fontFamily,\n    backgroundColor: theme.palette.grey[300],\n    fontWeight: theme.typography.fontWeightBold,\n\n    ...(color !== 'default'\n      ? {\n          ...(variant === 'filled' && { ...styleFilled(color) }),\n          ...(variant === 'outlined' && { ...styleOutlined(color) }),\n          ...(variant === 'ghost' && { ...styleGhost(color) })\n        }\n      : {\n          ...(variant === 'outlined' && {\n            backgroundColor: 'transparent',\n            color: theme.palette.text.primary,\n            border: `1px solid ${theme.palette.grey[500_32]}`\n          }),\n          ...(variant === 'ghost' && {\n            color: theme.palette.text.secondary,\n            backgroundColor: theme.palette.grey[500_16]\n          })\n        })\n  };\n});\n\n// ----------------------------------------------------------------------\n\nexport default function Label({ color = 'default', variant = 'ghost', children, ...other }) {\n  return (\n    <RootStyle ownerState={{ color, variant }} {...other}>\n      {children}\n    </RootStyle>\n  );\n}\n\nLabel.propTypes = {\n  children: PropTypes.node,\n  color: PropTypes.oneOf([\n    'default',\n    'primary',\n    'secondary',\n    'info',\n    'success',\n    'warning',\n    'error'\n  ]),\n  variant: PropTypes.oneOf(['filled', 'outlined', 'ghost'])\n};\n","import PropTypes from 'prop-types';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { Box, Card, Link, Typography, Stack } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport Label from '../../Label';\n\nconst ProductImgStyle = styled('img')({\n  top: 0,\n  width: '100%',\n  height: '100%',\n  objectFit: 'cover',\n  position: 'absolute'\n});\n\nconst ProductImgStyleDisabled = styled('img')({\n  top: 0,\n  width: '100%',\n  height: '100%',\n  objectFit: 'cover',\n  position: 'absolute',\n  filter: 'grayscale(1)'\n});\n\nShopProductCard.propTypes = {\n  product: PropTypes.object\n};\n\nexport default function ShopProductCard({ product, urldata, status }) {\n  const { name } = product;\n\n  return (\n    <Card>\n      <Box sx={{ pt: '100%', position: 'relative' }}>\n        <Label\n          variant=\"filled\"\n          color={status ? 'error' : 'success'}\n          sx={{\n            zIndex: 9,\n            top: 16,\n            right: 16,\n            position: 'absolute',\n            textTransform: 'uppercase'\n          }}\n        >\n          {status ? 'Not Available' : 'Available'}\n        </Label>\n        {status ? (\n          <ProductImgStyleDisabled alt={name} src={urldata} />\n        ) : (\n          <ProductImgStyle alt={name} src={urldata} />\n        )}\n      </Box>\n\n      <Stack spacing={2} sx={{ p: 3 }}>\n        <Link to=\"#\" color=\"inherit\" underline=\"hover\" component={RouterLink}>\n          <Typography variant=\"subtitle2\" noWrap>\n            {name}\n          </Typography>\n        </Link>\n\n        <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\">\n          {/* <ColorPreview colors={colors} /> */}\n          <Typography variant=\"subtitle1\">\n            {/* <Typography\n              component=\"span\"\n              variant=\"body1\"\n              sx={{\n                color: 'text.disabled',\n                textDecoration: 'line-through'\n              }}\n            >\n              {priceSale && fCurrency(priceSale)}\n            </Typography> */}\n          </Typography>\n        </Stack>\n      </Stack>\n    </Card>\n  );\n}\n","import PropTypes from 'prop-types';\nimport { useState } from 'react';\n// material\nimport Grid from '@mui/material/Grid';\nimport Modal from '@mui/material/Modal';\nimport Box from '@mui/material/Box';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport Close from '@mui/icons-material/Close';\nimport Paper from '@mui/material/Paper';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport Typography from '@mui/material/Typography';\nimport ShopProductCard from './ProductCard';\nimport instance from '../../../AxiosInstance';\n\nProductList.propTypes = {\n  products: PropTypes.array.isRequired\n};\n\nexport default function ProductList({ products, urldata, ...other }) {\n  const style = {\n    position: 'absolute',\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    maxWidth: 500,\n    width: '100%',\n    bgcolor: 'background.paper',\n    borderRadius: 3,\n    boxShadow: 24,\n    border: 'none',\n    outline: 'none',\n    p: 4\n  };\n\n  const [modalIsOpen, setModalIsOpen] = useState(false);\n  const [subProducts, setSubProducts] = useState([]);\n\n  const fetchSubProducts = async (productID) => {\n    const response = await instance(\n      `${process.env.REACT_APP_THIRDINREV_API}/get/product/pid/${productID}`,\n      {\n        method: 'GET'\n      }\n    );\n    if (response.status === 200) {\n      const data = await response.data;\n      setSubProducts(data.data);\n    }\n  };\n\n  return (\n    <>\n      <Grid container spacing={3} {...other}>\n        {products\n          .filter((product) => product.disable !== true)\n          .map((product, index) => (\n            <Grid\n              onClick={() => {\n                fetchSubProducts(index + 1);\n                setModalIsOpen(true);\n              }}\n              key={product.id}\n              item\n              xs={12}\n              sm={6}\n              md={3}\n            >\n              <ShopProductCard\n                product={product}\n                urldata={urldata.find((item) => item.name === product.name).url}\n                status={product.disable}\n              />\n            </Grid>\n          ))}\n      </Grid>\n\n      <Modal open={modalIsOpen}>\n        <Box sx={style}>\n          <Grid container direction=\"row\" textAlign=\"center\" justifyContent=\"center\">\n            <Grid item xs={4} />\n            <Grid item xs={4}>\n              <Typography alignContent=\"center\" variant=\"h5\">\n                Sub Product\n              </Typography>\n            </Grid>\n            <Grid item xs={4}>\n              <Typography\n                style={{\n                  position: 'absolute',\n                  top: '0',\n                  right: '0',\n                  display: 'flex',\n                  width: '10%',\n                  cursor: 'pointer',\n                  paddingTop: '5px',\n                  justifyContent: 'space-evenly'\n                }}\n                onClick={() => {\n                  setModalIsOpen(false);\n                  setSubProducts([]);\n                }}\n              >\n                <Close color=\"error\" style={{ color: 'black' }} />\n              </Typography>\n            </Grid>\n          </Grid>\n\n          {subProducts.length > 0 ? (\n            <TableContainer component={Paper}>\n              <Table\n                label=\"Sub Products\"\n                sx={{ minWidth: 350 }}\n                size=\"small\"\n                aria-label=\"a dense table\"\n              >\n                <TableBody>\n                  {subProducts.map((subProduct, index) => (\n                    <TableRow\n                      key={index}\n                      sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n                    >\n                      <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '18px' }}>\n                        {subProduct.name}\n                      </TableCell>\n                    </TableRow>\n                  ))}\n                </TableBody>\n              </Table>\n            </TableContainer>\n          ) : (\n            <Typography>No Sub Product</Typography>\n          )}\n        </Box>\n      </Modal>\n    </>\n  );\n}\n","import instance from '../AxiosInstance';\n\nexport const getBrandsServices = async () => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/brand`, {\n    method: 'GET'\n  });\n  return response;\n};\n\nexport const getUserWiseBrandsServices = async () => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/get/userwise-pricing?type=brand`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getUserWiseModelsServices = async () => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/get/userwise-pricing?type=model`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getTrimsServices = async () => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/trim`, {\n    method: 'GET'\n  });\n  return response;\n};\n\nexport const getModelsServices = async () => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/model`, {\n    method: 'GET'\n  });\n  return response;\n};\n\nexport const getShippingTax = async () => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/get/config/search?type=shipping_price`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getModalTaxServices = async () => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/get/config/search?type=model_tax`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getBrandsTaxServices = async () => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/get/config/search?type=brand_tax`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getAddonsTaxServices = async () => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/get/config/search?type=addon_tax`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getProductsServices = async () => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/product`, {\n    method: 'GET'\n  });\n  return response;\n};\n","// material\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport { useEffect, useState } from 'react';\nimport Page from '../components/Page';\nimport { ProductList } from '../components/_dashboard/products';\nimport { getProductsServices } from '../services/products.services';\n\nexport default function EcommerceShop() {\n  const [productNames, setproductNames] = useState([]);\n\n  useEffect(() => {\n    const fetchProduct = async () => {\n      const productNames = await getProductsServices();\n      const productNamesData = await productNames.data.data;\n      setproductNames(productNamesData);\n    };\n    fetchProduct();\n  }, []);\n\n  const urldata = [\n    {\n      name: '3D Model',\n      url: '/static/mock-images/products/product_1.jpg'\n    },\n    {\n      name: 'Clear Aligner',\n      url: '/static/mock-images/products/product_2.jpg'\n    }\n  ];\n\n  return (\n    <Page title=\"Products | Quiteclear\">\n      <Container style={{ width: '100%', maxWidth: 1500 }}>\n        <Typography variant=\"h4\" sx={{ mb: 5 }}>\n          Products\n        </Typography>\n\n        <ProductList products={productNames} urldata={urldata} />\n      </Container>\n    </Page>\n  );\n}\n","import PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\n\nimport searchFill from '@iconify/icons-eva/search-fill';\n// material\nimport { styled } from '@mui/material/styles';\nimport { Box, Toolbar, Typography, OutlinedInput, InputAdornment } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Toolbar)(({ theme }) => ({\n  height: 96,\n  display: 'flex',\n  justifyContent: 'space-between',\n  padding: theme.spacing(0, 1, 0, 3)\n}));\n\nconst SearchStyle = styled(OutlinedInput)(({ theme }) => ({\n  width: 240,\n  transition: theme.transitions.create(['box-shadow', 'width'], {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.shorter\n  }),\n  '&.Mui-focused': { width: 320, boxShadow: theme.customShadows.z8 },\n  '& fieldset': {\n    borderWidth: `1px !important`,\n    borderColor: `${theme.palette.grey[500_32]} !important`\n  }\n}));\n\n// ----------------------------------------------------------------------\n\nUserListToolbarWithoutDebounce.propTypes = {\n  numSelected: PropTypes.number,\n  onFilterName: PropTypes.func\n};\n\nexport default function UserListToolbarWithoutDebounce({ numSelected, onFilterName, name }) {\n  return (\n    <RootStyle\n      sx={{\n        ...(numSelected > 0 && {\n          color: 'primary.main',\n          bgcolor: 'primary.lighter'\n        })\n      }}\n    >\n      {numSelected > 0 ? (\n        <Typography component=\"div\" variant=\"subtitle1\">\n          {numSelected} selected\n        </Typography>\n      ) : (\n        <div>\n          <SearchStyle\n            onChange={onFilterName}\n            placeholder={`Search ${name}...`}\n            startAdornment={\n              <InputAdornment position=\"start\">\n                <Box component={Icon} icon={searchFill} sx={{ color: 'text.disabled' }} />\n              </InputAdornment>\n            }\n          />\n        </div>\n      )}\n    </RootStyle>\n  );\n}\n","import PropTypes from 'prop-types';\nimport Typography from '@mui/material/Typography';\nimport Paper from '@mui/material/Paper';\n\nSearchNotFound.propTypes = {\n  title: PropTypes.string\n};\n\nexport default function SearchNotFound({ title = 'No Data Found', ...other }) {\n  return (\n    <Paper {...other}>\n      <Typography gutterBottom align=\"center\" variant=\"subtitle1\">\n        {title}\n      </Typography>\n    </Paper>\n  );\n}\n","import PropTypes from 'prop-types';\n// material\nimport { visuallyHidden } from '@mui/utils';\nimport { Box, TableRow, TableCell, TableHead, TableSortLabel } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nUserListHead.propTypes = {\n  order: PropTypes.oneOf(['asc', 'desc']),\n  orderBy: PropTypes.string,\n  // rowCount: PropTypes.number,\n  headLabel: PropTypes.array,\n  // numSelected: PropTypes.number,\n  onRequestSort: PropTypes.func\n  // onSelectAllClick: PropTypes.func\n};\n\nexport default function UserListHead({\n  order,\n  orderBy,\n  // rowCount,\n  headLabel,\n  // numSelected,\n  onRequestSort\n  // onSelectAllClick\n}) {\n  const createSortHandler = (property) => (event) => {\n    onRequestSort(event, property);\n  };\n\n  return (\n    <TableHead>\n      <TableRow>\n        {headLabel.map((headCell) => (\n          <TableCell\n            key={headCell.id}\n            align={headCell.alignRight ? 'right' : 'left'}\n            sortDirection={orderBy === headCell.id ? order : false}\n          >\n            <TableSortLabel\n              hideSortIcon\n              active={orderBy === headCell.id}\n              direction={orderBy === headCell.id ? order : 'asc'}\n              onClick={createSortHandler(headCell.id)}\n            >\n              {headCell.label}\n              {orderBy === headCell.id ? (\n                <Box sx={{ ...visuallyHidden }}>\n                  {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n                </Box>\n              ) : null}\n            </TableSortLabel>\n          </TableCell>\n        ))}\n      </TableRow>\n    </TableHead>\n  );\n}\n","import PropTypes from 'prop-types';\nimport { Icon } from '@iconify/react';\n\nimport searchFill from '@iconify/icons-eva/search-fill';\n// material\nimport { styled } from '@mui/material/styles';\nimport { Box, Toolbar, Typography, OutlinedInput, InputAdornment } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Toolbar)(({ theme }) => ({\n  height: 96,\n  display: 'flex',\n  justifyContent: 'space-between',\n  padding: theme.spacing(0, 1, 0, 3)\n}));\n\nconst SearchStyle = styled(OutlinedInput)(({ theme }) => ({\n  width: 240,\n  transition: theme.transitions.create(['box-shadow', 'width'], {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.shorter\n  }),\n  '&.Mui-focused': { width: 320, boxShadow: theme.customShadows.z8 },\n  '& fieldset': {\n    borderWidth: `1px !important`,\n    borderColor: `${theme.palette.grey[500_32]} !important`\n  }\n}));\n\n// ----------------------------------------------------------------------\n\nUserListToolbar.propTypes = {\n  numSelected: PropTypes.number,\n  onFilterName: PropTypes.func\n};\n\nexport default function UserListToolbar({ numSelected, onFilterName, name }) {\n  return (\n    <RootStyle\n      sx={{\n        ...(numSelected > 0 && {\n          color: 'primary.main',\n          bgcolor: 'primary.lighter'\n        })\n      }}\n    >\n      {numSelected > 0 ? (\n        <Typography component=\"div\" variant=\"subtitle1\">\n          {numSelected} selected\n        </Typography>\n      ) : (\n        <div>\n          <SearchStyle\n            onChange={onFilterName}\n            placeholder={`Search ${name}...`}\n            startAdornment={\n              <InputAdornment position=\"start\">\n                <Box component={Icon} icon={searchFill} sx={{ color: 'text.disabled' }} />\n              </InputAdornment>\n            }\n          />\n        </div>\n      )}\n    </RootStyle>\n  );\n}\n","import PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { Toolbar, OutlinedInput, InputAdornment, Box } from '@mui/material';\nimport { Icon } from '@iconify/react';\nimport searchFill from '@iconify/icons-eva/search-fill';\n\nconst RootStyle = styled(Toolbar)(({ theme }) => ({\n  height: 96,\n  display: 'flex',\n  justifyContent: 'space-between',\n  padding: theme.spacing(0, 1, 0, 3)\n}));\n\nconst SearchStyle = styled(OutlinedInput)(({ theme }) => ({\n  width: 240,\n  transition: theme.transitions.create(['box-shadow', 'width'], {\n    easing: theme.transitions.easing.easeInOut,\n    duration: theme.transitions.duration.shorter\n  }),\n  '&.Mui-focused': { width: 320, boxShadow: theme.customShadows.z8 },\n  '& fieldset': {\n    borderWidth: `1px !important`,\n    borderColor: `${theme.palette.grey[500_32]} !important`\n  }\n}));\n\nOrderListToolbar.propTypes = {\n  numSelected: PropTypes.number,\n  onFilterName: PropTypes.func,\n  title: PropTypes.string,\n  children: PropTypes.any\n};\n\nexport default function OrderListToolbar({\n  numSelected,\n  filterName,\n  onFilterName,\n  title,\n  children\n}) {\n  return (\n    <RootStyle\n      sx={{\n        ...(numSelected > 0 && {\n          color: 'primary.main',\n          bgcolor: 'primary.lighter'\n        })\n      }}\n    >\n      <SearchStyle\n        onChange={onFilterName}\n        defaultValue={filterName}\n        placeholder={`Search ${title}...`}\n        startAdornment={\n          <InputAdornment position=\"start\">\n            <Box component={Icon} icon={searchFill} sx={{ color: 'text.disabled' }} />\n          </InputAdornment>\n        }\n      />\n      {children}\n    </RootStyle>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport Button from '@mui/material/Button';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport const EditPatient = (props) => {\n  const [values, setValues] = useState({\n    address1: props?.address?.address?.address_line_1,\n    address2: props?.address?.address?.address_line_2,\n    landmark: props?.address?.address?.landmark,\n    name: props?.address?.name,\n    mobile: props?.address?.mobile,\n    state: '',\n    pincode: props?.address?.address?.pincode?.toString(),\n    pincodeId: props?.address?.address?.pincodeId,\n    city: ''\n  });\n  const [pincodes, setPincodes] = useState([]);\n  const [spinner, setSpinner] = useState(false);\n  useEffect(() => {\n    const fetcher = async () => {\n      const responseForPincode = await fetch(\n        `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${values.pincode}`,\n        {\n          method: 'GET',\n          headers: {\n            Authorization: `Bearer ${window.localStorage.getItem('token')}`\n          }\n        }\n      );\n      const data = await responseForPincode.json();\n      setValues({\n        ...values,\n        city: data.data.city.name,\n        state: data.data.city.state.name,\n        pincodeId: data.data.id\n      });\n    };\n\n    fetcher();\n    // eslint-disable-next-line\n  }, []);\n  const [isOpen2, setIsOpen2] = useState(false);\n  const [errors, setErrors] = useState({\n    street: false,\n    state: false,\n    pincode: false,\n    city: false\n  });\n  const addPatientHandler = async () => {\n    if (\n      values.pincode !== '' &&\n      values.city !== '' &&\n      values.state !== '' &&\n      values.address1.length > 0 &&\n      // values.address2.length > 0 &&\n      values.landmark.length > 0\n    ) {\n      setSpinner(true);\n      const addAddressResp = await fetch(\n        `${process.env.REACT_APP_THIRDINREV_API}/patient/${props.address.id}`,\n        {\n          method: 'PUT',\n          headers: {\n            'Content-type': 'application/json',\n            Authorization: `Bearer ${window.localStorage.getItem('token')}`\n          },\n          body: JSON.stringify({\n            name: values.name,\n            mobile: values.mobile,\n            address_line_1: values.address1,\n            address_line_2: values.address2.length > 0 ? values.address2 : ' ',\n            landmark: values.landmark,\n            pincode_id: Number(values.pincodeId)\n          })\n        }\n      );\n      await addAddressResp.json();\n      window.location.reload();\n    } else {\n      setErrors({\n        ...errors,\n        street: values.street.length < 1,\n        city: values.city === '',\n        pincode: values.pincode === '',\n        state: values.state === ''\n      });\n    }\n  };\n\n  const handleChange = async (prop, v) => {\n    if (prop === 'pincode') {\n      setValues({ ...values, pincode: v });\n      if (v?.length === 6) {\n        setSpinner(true);\n        const responseForPincode = await fetch(\n          `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${v}`,\n          {\n            method: 'GET',\n            headers: {\n              Authorization: `Bearer ${window.localStorage.getItem('token')}`\n            }\n          }\n        );\n        const data = await responseForPincode.json();\n        setValues({\n          ...values,\n          city: data.data.city.name,\n          state: data.data.city.state.name,\n          pincode: v,\n          pincodeId: data.data.id\n        });\n        setSpinner(false);\n      }\n    } else setValues({ ...values, [prop]: v });\n\n    if (prop === 'address1')\n      setErrors({\n        ...errors,\n        address1: v.length < 1\n      });\n    if (prop === 'landmark')\n      setErrors({\n        ...errors,\n        landmark: v.length < 1\n      });\n    if (prop === 'city')\n      setErrors({\n        ...errors,\n        city: v === ''\n      });\n    if (prop === 'pincode')\n      setErrors({\n        ...errors,\n        pincode: v === ''\n      });\n    if (prop === 'state')\n      setErrors({\n        ...errors,\n        state: v === ''\n      });\n  };\n  const fetchPincodes = async (e) => {\n    if (e.target.value?.length === 3) {\n      if (e.target.value?.length === 3) {\n        const resp = await fetch(\n          `${process.env.REACT_APP_THIRDINREV_API}/pincodes?pincode=${e.target?.value}`,\n          {\n            method: 'GET',\n            headers: {\n              Authorization: `Bearer ${window.localStorage.getItem('token')}`\n            }\n          }\n        );\n        const pincodeData = await resp.json();\n        pincodeData.data.forEach((pincode) => {\n          setPincodes((currentArray) => [...currentArray, pincode.toString()]);\n        });\n      }\n    }\n  };\n  return (\n    <>\n      <h1 style={{ textAlign: 'center' }}>Update Patient</h1>\n      <Box style={{ padding: '15px' }}>\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.name}\n          onChange={(e) => handleChange('name', e.target.value)}\n          label=\"Patient Name\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.name}\n          helperText={errors.name ? 'Patient Name is required.' : null}\n        />\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"number\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.mobile}\n          onChange={(e) => handleChange('mobile', e.target.value)}\n          label=\"Phone Number\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          onInput={(e) => {\n            e.target.value = Number(e.target.value).toString().slice(0, 10);\n          }}\n          error={errors.phone}\n          helperText={errors.phone ? 'Phone Number is required.' : null}\n        />\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.address1}\n          onChange={(e) => handleChange('address1', e.target.value)}\n          label=\"Address 1\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.address1}\n          helperText={errors.address1 ? 'Address 1 is required.' : null}\n        />\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.address2}\n          onChange={(e) => handleChange('address2', e.target.value)}\n          label=\"Address 2\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.address2}\n          helperText={errors.address2 ? 'Address 2 is required.' : null}\n        />\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.landmark}\n          onChange={(e) => handleChange('landmark', e.target.value)}\n          label=\"Landmark\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.landmark}\n          helperText={errors.landmark ? 'Landmark is required.' : null}\n        />\n        <div\n          style={{\n            display: 'flex',\n            flexWrap: 'wrap',\n            flexDirection: 'row-reverse',\n            justifyContent: 'space-between',\n            marginTop: '15px'\n          }}\n        >\n          <TextField\n            id=\"outlined-adornment-name-registration\"\n            type=\"text\"\n            value={values.state}\n            label=\"Choose State\"\n            disabled=\"true\"\n            style={{ width: '32%', marginTop: '5px', color: errors.state ? 'red' : null }}\n            onChange={(e) => handleChange('state', e.target.value)}\n          />\n          <TextField\n            id=\"outlined-adornment-name-registration\"\n            type=\"text\"\n            value={values.city}\n            style={{ width: '32%', marginTop: '5px', color: errors.city ? 'red' : null }}\n            label=\"Choose City\"\n            disabled=\"true\"\n            onChange={(e) => handleChange('city', e.target.value)}\n          />\n\n          <Autocomplete\n            style={{ width: '32%', marginTop: '5px' }}\n            id=\"combo-box-demo\"\n            noOptionsText=\"No results found.\"\n            open={isOpen2}\n            onKeyPress={() => setIsOpen2(true)}\n            onKeyDown={() => setIsOpen2(true)}\n            onClose={() => setIsOpen2(false)}\n            options={pincodes}\n            value={values.pincode}\n            onChange={(e, v) => handleChange('pincode', v)}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                color=\"primary\"\n                label=\"Choose Pincode\"\n                onChange={fetchPincodes}\n                error={errors.pincode}\n                helperText={errors.pincode ? 'Pincode is required.' : null}\n              />\n            )}\n          />\n        </div>\n        <div style={{ display: 'flex', justifyContent: 'center', marginTop: '25px' }}>\n          {spinner ? (\n            <CircularProgress />\n          ) : (\n            <Button variant=\"contained\" style={{ marginTop: '15px' }} onClick={addPatientHandler}>\n              Save changes\n            </Button>\n          )}\n        </div>\n      </Box>\n    </>\n  );\n};\n","import { Icon } from '@iconify/react';\nimport { useRef, useState } from 'react';\nimport editFill from '@iconify/icons-eva/edit-fill';\nimport { Link as RouterLink } from 'react-router-dom';\nimport moreVerticalFill from '@iconify/icons-eva/more-vertical-fill';\n// material\nimport { Menu, MenuItem, IconButton, ListItemIcon, ListItemText, Modal } from '@mui/material';\nimport { Box } from '@mui/system';\nimport { EditPatient } from '../../EditPatient';\n\n// ----------------------------------------------------------------------\n\nexport default function UserMoreMenu(props) {\n  const ref = useRef(null);\n  const [openEdit, setOpenEdit] = useState(false);\n  const [isOpen, setIsOpen] = useState(false);\n  const style = {\n    position: 'absolute',\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    maxWidth: 600,\n    width: '100%',\n    bgcolor: 'background.paper',\n    borderRadius: 3,\n    boxShadow: 24,\n    p: 4\n  };\n\n  return (\n    <>\n      <Modal\n        open={openEdit}\n        onClose={() => setOpenEdit(false)}\n        aria-labelledby=\"modal-modal-title\"\n        aria-describedby=\"modal-modal-description\"\n      >\n        <Box sx={style}>\n          <EditPatient address={props.address} />\n        </Box>\n      </Modal>\n      <IconButton ref={ref} onClick={() => setIsOpen(true)}>\n        <Icon icon={moreVerticalFill} width={20} height={20} />\n      </IconButton>\n\n      <Menu\n        open={isOpen}\n        anchorEl={ref.current}\n        onClose={() => setIsOpen(false)}\n        PaperProps={{\n          sx: { width: 200, maxWidth: '100%' }\n        }}\n        anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n        transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n      >\n        <MenuItem\n          component={RouterLink}\n          to={`/dashboard/edit/patient/${props.id}`}\n          sx={{ color: 'text.secondary' }}\n        >\n          <ListItemIcon>\n            <Icon icon={editFill} width={24} height={24} />\n          </ListItemIcon>\n          <ListItemText primary=\"Edit\" primaryTypographyProps={{ variant: 'body2' }} />\n        </MenuItem>\n      </Menu>\n    </>\n  );\n}\n","import { headers } from '../utils/headers';\nimport instance from '../AxiosInstance';\n\nexport const getPincodesDetailsServices = async (v) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/pincodes/${v}`, {\n    method: 'GET'\n  });\n  return response;\n};\n\nexport const uploadPatientsFileServices = async (folderName) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/media`, {\n    method: 'POST',\n    headers,\n    data: JSON.stringify({\n      type: 'stl',\n      file_name: `${folderName}.zip`\n    })\n  });\n  return response;\n};\n\nexport const uploadPatientsFileByIdServices = async (folderName, values) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/media`, {\n    method: 'POST',\n    headers,\n    data: JSON.stringify({\n      type: 'file',\n      file_name: `${folderName}.zip`,\n      patient_uuid: values.patientUuid\n    })\n  });\n  return response;\n};\n\nexport const getPatientsAttachmentByIdServices = async (id) => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/patient/attachments/${id}`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getPatientsDetailsByIdServices = async (id) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/patient/${id}`, {\n    method: 'GET'\n  });\n  return response;\n};\n\nexport const getPatientsAddressByIdServices = async (id) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/address/${id}/patient`, {\n    method: 'GET'\n  });\n  return response;\n};\n\nexport const addPatientsServices = async (body) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/patient`, {\n    method: 'POST',\n    headers,\n    data: JSON.stringify(body)\n  });\n  return response;\n};\n\nexport const editPatientsServices = async (id, body) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/patient/${id}`, {\n    method: 'PUT',\n    headers,\n    data: JSON.stringify(body)\n  });\n  return response;\n};\n\nexport const getAllPincodesServices = async (e) => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/pincodes?pincode=${e.target?.value}`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getAllPatientsListsServices = async (rowsPerPage, page, searchByName) => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/patient?size=${rowsPerPage}&page=${page}&term=${searchByName}`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n","import { debounce } from 'lodash';\nimport { Icon } from '@iconify/react';\nimport { useEffect, useState, useMemo } from 'react';\nimport plusFill from '@iconify/icons-eva/plus-fill';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TablePagination from '@mui/material/TablePagination';\nimport Stack from '@mui/material/Stack';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport UserListToolbarWithoutDebounce from '../components/_dashboard/user/UserListToolbarWithoutDebounce';\nimport Page from '../components/Page';\nimport Scrollbar from '../components/Scrollbar';\nimport SearchNotFound from '../components/SearchNotFound';\nimport { UserListHead, UserMoreMenu } from '../components/_dashboard/user';\nimport { getAllPatientsListsServices } from '../services/patients.services';\n\nconst TABLE_HEAD = [\n  { id: 'name', label: 'Name', alignRight: false },\n  { id: 'mobile', label: 'Mobile Number', alignRight: false },\n  { id: '' }\n];\n\nexport default function User() {\n  const [page, setPage] = useState(0);\n  const [pageCount, setPageCount] = useState(1);\n  const [order, setOrder] = useState('asc');\n  const [selected, setSelected] = useState([]);\n  const [orderBy, setOrderBy] = useState('name');\n  const [filterName, setFilterName] = useState('');\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [patients, setPatients] = useState([]);\n  const [spinner, setSpinner] = useState(false);\n  const [addressDetails] = useState([]);\n\n  useEffect(() => {\n    const search = async () => {\n      setPatients([]);\n      setSpinner(true);\n      const searchByName = (\n        filterName.includes('#') ? `%23${filterName.split('#')[1]}` : filterName\n      ).toLowerCase();\n      const response = await getAllPatientsListsServices(rowsPerPage, page, searchByName);\n      setSpinner(false);\n      const data = await response?.data;\n      setPatients(data?.data);\n      setPageCount(data?.meta?.length);\n    };\n    search();\n    // eslint-disable-next-line\n  }, [filterName, rowsPerPage, page]);\n\n  const handleRequestSort = (event, property) => {\n    const isAsc = orderBy === property && order === 'asc';\n    setOrder(isAsc ? 'desc' : 'asc');\n    setOrderBy(property);\n  };\n\n  const handleSelectAllClick = (event) => {\n    if (event.target.checked) {\n      const newSelecteds = patients.map((n) => n.name);\n      setSelected(newSelecteds);\n      return;\n    }\n    setSelected([]);\n  };\n\n  const handleChangePage = async (event, newPage) => {\n    setPage(newPage);\n    setPatients([]);\n  };\n\n  const handleChangeRowsPerPage = (event) => {\n    setRowsPerPage(parseInt(event.target.value, 10));\n    setPage(0);\n  };\n\n  const changeHandler = (event) => {\n    setPage(0);\n    setFilterName(event.target.value);\n  };\n\n  const debouncedChangeHandler = useMemo(() => debounce(changeHandler, 600), []);\n\n  const filteredUsers = patients;\n\n  const isUserNotFound = filteredUsers.length === 0;\n\n  return (\n    <Page title=\"Patients | Quiteclear\">\n      <Container style={{ width: '100%', maxWidth: 1500 }}>\n        <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={5}>\n          <Typography variant=\"h4\" gutterBottom>\n            Patients\n          </Typography>\n          <Button\n            variant=\"contained\"\n            component={RouterLink}\n            to=\"/dashboard/add/patient\"\n            startIcon={<Icon icon={plusFill} />}\n          >\n            New Patient\n          </Button>\n        </Stack>\n        <Card>\n          <UserListToolbarWithoutDebounce\n            numSelected={selected.length}\n            filterName={filterName}\n            onFilterName={debouncedChangeHandler}\n            name=\"Patients\"\n          />\n\n          <Scrollbar>\n            <TableContainer sx={{ minWidth: 800 }}>\n              <Table>\n                <UserListHead\n                  order={order}\n                  orderBy={orderBy}\n                  headLabel={TABLE_HEAD}\n                  rowCount={patients.length}\n                  numSelected={selected.length}\n                  onRequestSort={handleRequestSort}\n                  onSelectAllClick={handleSelectAllClick}\n                />\n                <TableBody>\n                  {filteredUsers.map((row) => {\n                    const { id, name, address, mobile } = row;\n                    const isItemSelected = selected.indexOf(name) !== -1;\n\n                    return (\n                      <TableRow\n                        hover\n                        key={id}\n                        tabIndex={-1}\n                        role=\"checkbox\"\n                        selected={isItemSelected}\n                        aria-checked={isItemSelected}\n                      >\n                        <TableCell>{name}</TableCell>\n\n                        <TableCell align=\"left\">{mobile}</TableCell>\n\n                        <TableCell align=\"right\">\n                          <UserMoreMenu\n                            id={id}\n                            address={{\n                              address,\n                              name,\n                              id,\n                              mobile\n                            }}\n                            addressDetails={addressDetails}\n                          />\n                        </TableCell>\n                      </TableRow>\n                    );\n                  })}\n                </TableBody>\n                {isUserNotFound && (\n                  <TableBody>\n                    <TableRow>\n                      <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n                        {spinner ? (\n                          <div style={{ width: '100%' }}>\n                            <CircularProgress style={{ textAlign: 'center' }} />\n                          </div>\n                        ) : (\n                          <SearchNotFound searchQuery={filterName} />\n                        )}\n                      </TableCell>\n                    </TableRow>\n                  </TableBody>\n                )}\n              </Table>\n            </TableContainer>\n          </Scrollbar>\n\n          <TablePagination\n            rowsPerPageOptions={[10, 50, 100]}\n            component=\"div\"\n            count={pageCount}\n            rowsPerPage={rowsPerPage}\n            page={page}\n            onPageChange={handleChangePage}\n            onRowsPerPageChange={handleChangeRowsPerPage}\n            labelRowsPerPage=\"Patients per page\"\n          />\n        </Card>\n      </Container>\n    </Page>\n  );\n}\n","// ----------------------------------------------------------------------\n\nexport const varWrapEnter = {\n  animate: {\n    transition: { staggerChildren: 0.1 }\n  }\n};\n\nexport const varWrapExit = {\n  exit: {\n    transition: { staggerChildren: 0.1 }\n  }\n};\n\nexport const varWrapBoth = {\n  animate: {\n    transition: { staggerChildren: 0.07, delayChildren: 0.1 }\n  },\n  exit: {\n    transition: { staggerChildren: 0.05, staggerDirection: -1 }\n  }\n};\n","import {\n  varBounceOut,\n  varBounceOutUp,\n  varBounceOutDown,\n  varBounceOutLeft,\n  varBounceOutRight\n} from './BounceOut';\n\n// ----------------------------------------------------------------------\n\nconst TRANSITION_ENTER = {\n  duration: 0.72,\n  ease: [0.43, 0.13, 0.23, 0.96]\n};\n\nconst TRANSITION_EXIT = {\n  duration: 0.48,\n  ease: [0.43, 0.13, 0.23, 0.96]\n};\n\nexport const varBounceIn = {\n  animate: {\n    scale: [0.3, 1.1, 0.9, 1.03, 0.97, 1],\n    opacity: [0, 1, 1, 1, 1, 1],\n    transition: TRANSITION_ENTER\n  },\n  exit: varBounceOut.animate\n};\n\nexport const varBounceInUp = {\n  animate: {\n    y: [720, -24, 12, -4, 0],\n    scaleY: [4, 0.9, 0.95, 0.985, 1],\n    opacity: [0, 1, 1, 1, 1],\n    transition: { ...TRANSITION_ENTER }\n  },\n  exit: { ...varBounceOutDown.animate, transition: TRANSITION_EXIT }\n};\n\nexport const varBounceInDown = {\n  animate: {\n    y: [-720, 24, -12, 4, 0],\n    scaleY: [4, 0.9, 0.95, 0.985, 1],\n    opacity: [0, 1, 1, 1, 1],\n    transition: TRANSITION_ENTER\n  },\n  exit: { ...varBounceOutUp.animate, transition: TRANSITION_EXIT }\n};\n\nexport const varBounceInLeft = {\n  animate: {\n    x: [-720, 24, -12, 4, 0],\n    scaleX: [3, 1, 0.98, 0.995, 1],\n    opacity: [0, 1, 1, 1, 1],\n    transition: TRANSITION_ENTER\n  },\n  exit: { ...varBounceOutLeft.animate, transition: TRANSITION_EXIT }\n};\n\nexport const varBounceInRight = {\n  animate: {\n    x: [720, -24, 12, -4, 0],\n    scaleX: [3, 1, 0.98, 0.995, 1],\n    opacity: [0, 1, 1, 1, 1],\n    transition: TRANSITION_ENTER\n  },\n  exit: { ...varBounceOutRight.animate, transition: TRANSITION_EXIT }\n};\n","// ----------------------------------------------------------------------\n\nexport const varBounceOut = {\n  animate: {\n    scale: [0.9, 1.1, 0.3],\n    opacity: [1, 1, 0]\n  }\n};\n\nexport const varBounceOutUp = {\n  animate: {\n    y: [-12, 24, -720],\n    scaleY: [0.985, 0.9, 3],\n    opacity: [1, 1, 0]\n  }\n};\n\nexport const varBounceOutDown = {\n  animate: {\n    y: [12, -24, 720],\n    scaleY: [0.985, 0.9, 3],\n    opacity: [1, 1, 0]\n  }\n};\n\nexport const varBounceOutLeft = {\n  animate: {\n    x: [0, 24, -720],\n    scaleX: [1, 0.9, 2],\n    opacity: [1, 1, 0]\n  }\n};\n\nexport const varBounceOutRight = {\n  animate: {\n    x: [0, -24, 720],\n    scaleX: [1, 0.9, 2],\n    opacity: [1, 1, 0]\n  }\n};\n","import PropTypes from 'prop-types';\nimport { motion } from 'framer-motion';\n// material\nimport { Box } from '@mui/material';\n//\nimport { varWrapEnter } from './variants';\n\n// ----------------------------------------------------------------------\n\nMotionContainer.propTypes = {\n  open: PropTypes.bool.isRequired,\n  children: PropTypes.node\n};\n\nexport default function MotionContainer({ open, children, ...other }) {\n  return (\n    <Box\n      component={motion.div}\n      initial={false}\n      animate={open ? 'animate' : 'exit'}\n      variants={varWrapEnter}\n      {...other}\n    >\n      {children}\n    </Box>\n  );\n}\n","import { motion } from 'framer-motion';\nimport { Link as RouterLink, useLocation } from 'react-router-dom';\nimport { styled } from '@mui/material/styles';\nimport { Box, Button, Typography, Container } from '@mui/material';\nimport { MotionContainer, varBounceIn } from '../components/animate';\nimport Page from '../components/Page';\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n  display: 'flex',\n  minHeight: '100%',\n  alignItems: 'center',\n  paddingTop: theme.spacing(15),\n  paddingBottom: theme.spacing(10)\n}));\n\nexport default function Page404() {\n  const location = useLocation();\n  const title = 'Sorry, page not found!';\n  return (\n    <RootStyle title=\"404 Page Not Found | Quiteclear\">\n      <Container>\n        <MotionContainer initial=\"initial\" open>\n          <Box sx={{ maxWidth: 480, margin: 'auto', textAlign: 'center' }}>\n            <motion.div variants={varBounceIn}>\n              <Typography variant=\"h3\" paragraph>\n                {location?.state?.title ? location?.state?.title : title}\n              </Typography>\n            </motion.div>\n            <Typography sx={{ color: 'text.secondary' }}>\n              Sorry, we couldn’t find the page you’re looking for. Perhaps you’ve mistyped the URL?\n              Be sure to check your spelling.\n            </Typography>\n\n            <motion.div variants={varBounceIn}>\n              <Box\n                component=\"img\"\n                src=\"/static/illustrations/illustration_404.svg\"\n                sx={{ height: 260, mx: 'auto', my: { xs: 5, sm: 10 } }}\n              />\n            </motion.div>\n\n            <Button to=\"/\" size=\"large\" variant=\"contained\" component={RouterLink}>\n              Go to Home\n            </Button>\n          </Box>\n        </MotionContainer>\n      </Container>\n    </RootStyle>\n  );\n}\n","import React, { useEffect } from 'react';\nimport TextField from '@mui/material/TextField';\nimport FormControl from '@mui/material/FormControl';\nimport Button from '@mui/material/Button';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport SaveIcon from '@mui/icons-material/Save';\nimport AddTaskIcon from '@mui/icons-material/AddTask';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport ReplayOutlinedIcon from '@mui/icons-material/ReplayOutlined';\nimport '../styles/components/FoilAddModal.css';\nimport Autocomplete from '@mui/material/Autocomplete';\n\nexport default function ThreeDModal(props) {\n  const [rerenderedCart, setRerenderedCart] = React.useState([...props.inCartItems]);\n  const [spinner, setSpinner] = React.useState(false);\n  const [commonData, setCommonData] = React.useState({\n    thickness: 0.0,\n    aligner: '',\n    foil: ''\n  });\n  const [upperData, setUpperData] = React.useState({\n    prefix: 'Upper',\n    minRange: -1,\n    maxRange: -1\n  });\n  const [lowerData, setLowerData] = React.useState({\n    prefix: 'Lower',\n    minRange: -1,\n    maxRange: -1\n  });\n  const [errors, setErrors] = React.useState({\n    upperMax: false,\n    upperMin: false,\n    lowerMax: false,\n    lowerMin: false\n  });\n  const [errorCommon, setErrorCommon] = React.useState({\n    foil: false\n  });\n  const [cartData, setCartData] = React.useState([...props.inCartItems]);\n  const handleChangeUpper = (e, props) => {\n    if (props === 'maxRange') {\n      if (e.target.value > 0) {\n        setUpperData({\n          ...upperData,\n          maxRange: e.target.value\n        });\n      } else {\n        setUpperData({\n          ...upperData,\n          maxRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n    if (props === 'minRange') {\n      if (e.target.value > 0) {\n        setUpperData({\n          ...upperData,\n          minRange: e.target.value\n        });\n      } else {\n        setUpperData({\n          ...upperData,\n          minRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n  };\n  const resetUpper = () => {\n    setUpperData({\n      maxRange: -1,\n      minRange: -1,\n      prefix: 'Upper'\n    });\n  };\n  const submitLower = () => {\n    setErrors({\n      ...errors,\n      lowerMax: Number(lowerData.maxRange) < Number(lowerData.minRange),\n      lowerMin: Number(lowerData.maxRange) < Number(lowerData.minRange),\n      upperMin: Number(upperData.minRange) > Number(upperData.maxRange),\n      upperMax: Number(upperData.maxRange) < Number(upperData.minRange)\n    });\n    setErrorCommon({\n      foil: commonData.foil === ''\n    });\n    if (\n      upperData.minRange > -1 &&\n      upperData.maxRange > -1 &&\n      Number(upperData.maxRange) >= Number(upperData.minRange) &&\n      lowerData.minRange > -1 &&\n      lowerData.maxRange > -1 &&\n      Number(lowerData.maxRange) >= Number(lowerData.minRange) &&\n      commonData.foil !== ''\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...upperData,\n          foil: commonData.foil\n        },\n        {\n          ...lowerData,\n          foil: commonData.foil\n        }\n      ]);\n      resetCommon();\n      resetUpper();\n      resetLower();\n    } else if (\n      upperData.minRange > -1 &&\n      upperData.maxRange > -1 &&\n      Number(upperData.maxRange) >= Number(upperData.minRange) &&\n      commonData.foil !== '' &&\n      lowerData.minRange === -1 &&\n      lowerData.maxRange === -1\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...upperData,\n          foil: commonData.foil\n        }\n      ]);\n      resetCommon();\n      resetUpper();\n    } else if (\n      lowerData.minRange > -1 &&\n      lowerData.maxRange > -1 &&\n      Number(lowerData.maxRange) >= Number(lowerData.minRange) &&\n      commonData.foil !== '' &&\n      upperData.minRange === -1 &&\n      upperData.maxRange === -1\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...lowerData,\n          foil: commonData.foil\n        }\n      ]);\n      resetCommon();\n      resetLower();\n    }\n  };\n  const resetLower = () => {\n    setLowerData({\n      maxRange: -1,\n      minRange: -1,\n      prefix: 'Lower'\n    });\n  };\n  const resetCommon = () => {\n    setCommonData({\n      foil: ''\n    });\n  };\n  const resetAll = () => {\n    resetUpper();\n    resetLower();\n    resetCommon();\n  };\n  const handleChangeLower = (e, props) => {\n    if (props === 'maxRange') {\n      if (e.target.value > 0) {\n        setLowerData({\n          ...lowerData,\n          maxRange: e.target.value\n        });\n      } else {\n        setLowerData({\n          ...lowerData,\n          maxRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n    if (props === 'minRange') {\n      if (e.target.value > 0) {\n        setLowerData({\n          ...lowerData,\n          minRange: e.target.value\n        });\n      } else {\n        setLowerData({\n          ...lowerData,\n          minRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n  };\n\n  const handlerSave = () => {\n    const correctInput = rerenderedCart.length;\n    let isCorrectCounter = 0;\n    rerenderedCart.forEach((item) => {\n      if (\n        Number(item.minRange) <= Number(item.maxRange) &&\n        Number(item.maxRange >= 0) &&\n        Number(item.minRange >= 0)\n      )\n        isCorrectCounter += 1;\n    });\n    if (isCorrectCounter === correctInput) {\n      props.setInCartItems([...rerenderedCart]);\n      props.handleClose();\n    }\n  };\n\n  const handleEditInCart = (value, props, id) => {\n    cartData[id][props] = value;\n    setRerenderedCart([...cartData]);\n  };\n  const deleteInCart = (id) => {\n    setSpinner(true);\n    setCartData([...cartData.filter((item, index) => index !== id)]);\n  };\n  useEffect(() => {\n    setRerenderedCart([...cartData]);\n    setSpinner(false);\n  }, [cartData]);\n  return (\n    <div className=\"foil_add_modal_div\">\n      <h1 style={{ textAlign: 'center' }}>3D Models</h1>\n      <div className=\"foil_add_modal_main_div\">\n        <div className=\"foil_add_modal_upper_lower_div\">\n          <div className=\"foil_add_modal_upper_lower_subdiv\">\n            <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Upper</p>\n            <TextField\n              id=\"standard-basic\"\n              style={{ width: '40px' }}\n              label=\"Min\"\n              value={upperData.minRange === -1 ? 'Min' : upperData.minRange}\n              variant=\"standard\"\n              type=\"number\"\n              onChange={(e) => handleChangeUpper(e, 'minRange')}\n              error={Number(upperData.minRange) > Number(upperData.maxRange)}\n              helperText={\n                Number(upperData.minRange) > Number(upperData.maxRange) ? 'Incorrect Range' : null\n              }\n            />\n            <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n            <TextField\n              id=\"standard-basic\"\n              style={{ width: '40px' }}\n              label=\"Max\"\n              value={upperData.maxRange === -1 ? 'Max' : upperData.maxRange}\n              variant=\"standard\"\n              type=\"number\"\n              onChange={(e) => handleChangeUpper(e, 'maxRange')}\n              error={Number(upperData.minRange) > Number(upperData.maxRange)}\n              helperText={\n                Number(upperData.minRange) > Number(upperData.maxRange) ? 'Incorrect Range' : null\n              }\n            />\n          </div>\n\n          <div className=\"foil_add_modal_upper_lower_subdiv\">\n            <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Lower</p>\n            <TextField\n              id=\"standard-basic\"\n              style={{ width: '40px' }}\n              label=\"Min\"\n              value={lowerData.minRange === -1 ? 'Min' : lowerData.minRange}\n              variant=\"standard\"\n              type=\"number\"\n              onChange={(e) => handleChangeLower(e, 'minRange')}\n              error={Number(lowerData.minRange) > Number(lowerData.maxRange)}\n              helperText={\n                Number(lowerData.minRange) > Number(lowerData.maxRange) ? 'Incorrect Range' : null\n              }\n            />\n            <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n            <TextField\n              id=\"standard-basic\"\n              style={{ width: '40px' }}\n              label=\"Max\"\n              value={lowerData.maxRange === -1 ? 'Max' : lowerData.maxRange}\n              variant=\"standard\"\n              type=\"number\"\n              onChange={(e) => handleChangeLower(e, 'maxRange')}\n              error={Number(lowerData.minRange) > Number(lowerData.maxRange)}\n              helperText={\n                Number(lowerData.minRange) > Number(lowerData.maxRange) ? 'Incorrect Range' : null\n              }\n            />\n          </div>\n        </div>\n\n        <div className=\"foil_add_modal_common_dropdown_div\">\n          <FormControl className=\"modal_type\">\n            <Autocomplete\n              options={props?.model || []}\n              value={props.model.find((option) => option.id === commonData.foil) || null} // Controlled value\n              getOptionLabel={(option) => option.name || ''}\n              onChange={(event, newValue) => {\n                setCommonData({ ...commonData, foil: newValue?.id || '' });\n                setErrorCommon({ foil: !newValue });\n              }}\n              renderInput={(params) => (\n                <TextField {...params} label=\"Model Type\" error={errorCommon.foil} />\n              )}\n            />\n            {errorCommon.foil ? (\n              <FormHelperText style={{ color: 'red' }}>*Model Type is required.</FormHelperText>\n            ) : null}\n          </FormControl>\n        </div>\n        <div className=\"foil_add_modal_common_dropdown_btn_div\">\n          <Button variant=\"contained\" color=\"success\" onClick={submitLower}>\n            <AddTaskIcon />\n          </Button>\n          <Button variant=\"contained\" color=\"error\" onClick={resetAll}>\n            <ReplayOutlinedIcon />\n          </Button>\n        </div>\n      </div>\n      <div>\n        <h1 style={{ textAlign: 'center' }}>In Cart</h1>\n        {!spinner &&\n          rerenderedCart.map((cart, index) => (\n            <div className=\"foil_add_modal_main_div\" key={index}>\n              <div className=\"foil_add_modal_upper_lower_div\">\n                <div className=\"foil_add_modal_upper_lower_subdiv\">\n                  <p style={{ paddingTop: '20px', paddingRight: '5px' }}>{cart.prefix}</p>\n                  <TextField\n                    id=\"standard-basic\"\n                    style={{ width: '40px' }}\n                    label=\"Min\"\n                    defaultValue={cart.minRange}\n                    variant=\"standard\"\n                    type=\"number\"\n                    onChange={(e) => handleEditInCart(e.target.value, 'minRange', index)}\n                    error={\n                      Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n                    }\n                    helperText={\n                      Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n                        ? 'Icorrect Range'\n                        : null\n                    }\n                  />\n                  <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n                  <TextField\n                    id=\"standard-basic\"\n                    style={{ width: '40px' }}\n                    label=\"Max\"\n                    defaultValue={cart.maxRange}\n                    variant=\"standard\"\n                    type=\"number\"\n                    onChange={(e) => handleEditInCart(e.target.value, 'maxRange', index)}\n                    error={\n                      Number(cart.minRange) > Number(cart.maxRange) || Number(cart.maxRange) < 0\n                    }\n                    helperText={\n                      Number(cart.minRange) > Number(cart.maxRange) || Number(cart.maxRange) < 0\n                        ? 'Incorrect Range'\n                        : null\n                    }\n                  />\n                </div>\n              </div>\n              <div className=\"foil_add_modal_common_dropdown_div_cart\">\n                <div\n                  style={{\n                    display: 'flex',\n                    justifyContent: 'space-evenly',\n                    width: '100%'\n                  }}\n                >\n                  <FormControl style={{ width: '150px' }}>\n                    <TextField\n                      labelId=\"demo-simple-select-label\"\n                      id=\"demo-simple-select\"\n                      defaultValue={\n                        props?.model.find((mode) => mode.id === Number(cart.foil))?.name\n                      }\n                      label=\"Model Type\"\n                      disabled\n                      onChange={(e) => handleEditInCart(e.target.value, 'foil', index)}\n                    />\n                  </FormControl>\n                  <Button variant=\"contained\" onClick={() => deleteInCart(index)} color=\"error\">\n                    <DeleteOutlineIcon />\n                  </Button>\n                </div>\n              </div>\n            </div>\n          ))}\n      </div>\n      <div style={{ display: 'flex', justifyContent: 'center', marginTop: '15px' }}>\n        {rerenderedCart.length === 0 ? (\n          <Button\n            variant=\"contained\"\n            onClick={handlerSave}\n            style={{ fontSize: '16px' }}\n            color=\"error\"\n          >\n            Close\n          </Button>\n        ) : (\n          <Button variant=\"contained\" onClick={handlerSave}>\n            <SaveIcon /> Save and Continue\n          </Button>\n        )}\n      </div>\n    </div>\n  );\n}\n","import React, { useEffect } from 'react';\nimport TextField from '@mui/material/TextField';\nimport FormControl from '@mui/material/FormControl';\nimport Button from '@mui/material/Button';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport AddTaskIcon from '@mui/icons-material/AddTask';\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';\nimport SaveIcon from '@mui/icons-material/Save';\nimport ReplayOutlinedIcon from '@mui/icons-material/ReplayOutlined';\nimport '../styles/components/FoilAddModal.css';\nimport Autocomplete from '@mui/material/Autocomplete';\n\nexport default function ClearAlignersModal(props) {\n  const [spinner, setSpinner] = React.useState(false);\n  const [rerenderedCart, setRerenderedCart] = React.useState([...props.inCartItems]);\n  const [commonData, setCommonData] = React.useState({\n    thickness: 0.0,\n    aligner: '',\n    foil: ''\n  });\n\n  const [upperDataTemplate, setUpperDataTemplate] = React.useState({\n    prefix: 'Upper',\n    minRange: -1,\n    maxRange: -1\n  });\n  const [lowerDataTemplate, setLowerDataTemplate] = React.useState({\n    prefix: 'Lower',\n    minRange: -1,\n    maxRange: -1\n  });\n  const [upperDataAligner, setUpperDataAligner] = React.useState({\n    prefix: 'Upper',\n    minRange: -1,\n    maxRange: -1\n  });\n  const [lowerDataAligner, setLowerDataAligner] = React.useState({\n    prefix: 'Lower',\n    minRange: -1,\n    maxRange: -1\n  });\n  const [upperDataRetainer, setUpperDataRetainer] = React.useState({\n    prefix: 'Upper',\n    minRange: -1,\n    maxRange: -1\n  });\n  const [lowerDataRetainer, setLowerDataRetainer] = React.useState({\n    prefix: 'Lower',\n    minRange: -1,\n    maxRange: -1\n  });\n  const [errorsTemplate, setErrorsTemplate] = React.useState({\n    upperMax: false,\n    upperMin: false,\n    lowerMax: false,\n    lowerMin: false\n  });\n\n  const [errorsAligner, setErrorsAligner] = React.useState({\n    upperMax: false,\n    upperMin: false,\n    lowerMax: false,\n    lowerMin: false\n  });\n  const [errorsRetainer, setErrorsRetainer] = React.useState({\n    upperMax: false,\n    upperMin: false,\n    lowerMax: false,\n    lowerMin: false\n  });\n  const [errorCommon, setErrorCommon] = React.useState({\n    foil: false\n  });\n  const [cartData, setCartData] = React.useState([...props.inCartItems]);\n  const handleChangeUpper = (e, props) => {\n    if (props === 'maxRangeT') {\n      if (e.target.value > 0) {\n        setUpperDataTemplate({\n          ...upperDataTemplate,\n          maxRange: e.target.value\n        });\n      } else {\n        setUpperDataTemplate({\n          ...upperDataTemplate,\n          maxRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n    if (props === 'minRangeT') {\n      if (e.target.value > 0) {\n        setUpperDataTemplate({\n          ...upperDataTemplate,\n          minRange: e.target.value\n        });\n      } else {\n        setUpperDataTemplate({\n          ...upperDataTemplate,\n          minRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n\n    if (props === 'maxRangeA') {\n      if (e.target.value > 0) {\n        setUpperDataAligner({\n          ...upperDataAligner,\n          maxRange: e.target.value\n        });\n      } else {\n        setUpperDataAligner({\n          ...upperDataAligner,\n          maxRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n    if (props === 'minRangeA') {\n      if (e.target.value > 0) {\n        setUpperDataAligner({\n          ...upperDataAligner,\n          minRange: e.target.value\n        });\n      } else {\n        setUpperDataAligner({\n          ...upperDataAligner,\n          minRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n    if (props === 'maxRangeR') {\n      if (e.target.value > 0) {\n        setUpperDataRetainer({\n          ...upperDataRetainer,\n          maxRange: e.target.value\n        });\n      } else {\n        setUpperDataRetainer({\n          ...upperDataRetainer,\n          maxRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n    if (props === 'minRangeR') {\n      if (e.target.value > 0) {\n        setUpperDataRetainer({\n          ...upperDataRetainer,\n          minRange: e.target.value\n        });\n      } else {\n        setUpperDataRetainer({\n          ...upperDataRetainer,\n          minRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n  };\n\n  const handleChangeLower = (e, props) => {\n    if (props === 'maxRangeT') {\n      if (e.target.value > 0) {\n        setLowerDataTemplate({\n          ...lowerDataTemplate,\n          maxRange: e.target.value\n        });\n      } else {\n        setLowerDataTemplate({\n          ...lowerDataTemplate,\n          maxRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n    if (props === 'minRangeT') {\n      if (e.target.value > 0) {\n        setLowerDataTemplate({\n          ...lowerDataTemplate,\n          minRange: e.target.value\n        });\n      } else {\n        setLowerDataTemplate({\n          ...lowerDataTemplate,\n          minRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n\n    if (props === 'maxRangeA') {\n      if (e.target.value > 0) {\n        setLowerDataAligner({\n          ...lowerDataAligner,\n          maxRange: e.target.value\n        });\n      } else {\n        setLowerDataAligner({\n          ...lowerDataAligner,\n          maxRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n    if (props === 'minRangeA') {\n      if (e.target.value > 0) {\n        setLowerDataAligner({\n          ...lowerDataAligner,\n          minRange: e.target.value\n        });\n      } else {\n        setLowerDataAligner({\n          ...lowerDataAligner,\n          minRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n\n    if (props === 'maxRangeR') {\n      if (e.target.value > 0) {\n        setLowerDataRetainer({\n          ...lowerDataRetainer,\n          maxRange: e.target.value\n        });\n      } else {\n        setLowerDataRetainer({\n          ...lowerDataRetainer,\n          maxRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n    if (props === 'minRangeR') {\n      if (e.target.value > 0) {\n        setLowerDataRetainer({\n          ...lowerDataRetainer,\n          minRange: e.target.value\n        });\n      } else {\n        setLowerDataRetainer({\n          ...lowerDataRetainer,\n          minRange: e.target.value < 0 ? 0 : e.target.value\n        });\n      }\n    }\n  };\n\n  useEffect(() => {}, [cartData, rerenderedCart]);\n  const submitLower = () => {\n    setErrorsTemplate({\n      ...errorsTemplate,\n      lowerMax: Number(lowerDataTemplate.maxRange) < Number(lowerDataTemplate.minRange),\n      lowerMin: Number(lowerDataTemplate.maxRange) < Number(lowerDataTemplate.minRange),\n      upperMin: Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange),\n      upperMax: Number(upperDataTemplate.maxRange) < Number(upperDataTemplate.minRange)\n    });\n    setErrorsAligner({\n      ...errorsAligner,\n      lowerMax: Number(lowerDataAligner.maxRange) < Number(lowerDataAligner.minRange),\n      lowerMin: Number(lowerDataAligner.maxRange) < Number(lowerDataAligner.minRange),\n      upperMin: Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange),\n      upperMax: Number(upperDataAligner.maxRange) < Number(upperDataAligner.minRange)\n    });\n\n    setErrorCommon({\n      foil: commonData.foil === ''\n    });\n\n    setErrorsRetainer({\n      ...errorsRetainer,\n      lowerMax: Number(lowerDataRetainer.maxRange) < Number(lowerDataRetainer.minRange),\n      lowerMin: Number(lowerDataRetainer.maxRange) < Number(lowerDataRetainer.minRange),\n      upperMin: Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange),\n      upperMax: Number(upperDataRetainer.maxRange) < Number(upperDataRetainer.minRange)\n    });\n    if (\n      upperDataTemplate.minRange > -1 &&\n      upperDataTemplate.maxRange > -1 &&\n      Number(upperDataTemplate.maxRange) >= Number(upperDataTemplate.minRange) &&\n      lowerDataTemplate.minRange > -1 &&\n      lowerDataTemplate.maxRange > -1 &&\n      Number(lowerDataTemplate.maxRange) >= Number(lowerDataTemplate.minRange) &&\n      commonData.foil !== ''\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...upperDataTemplate,\n          aligner: '1',\n          foil: commonData.foil\n        },\n        {\n          ...lowerDataTemplate,\n          aligner: '1',\n          foil: commonData.foil\n        }\n      ]);\n      resetAll();\n    } else if (\n      upperDataTemplate.minRange > -1 &&\n      upperDataTemplate.maxRange > -1 &&\n      Number(upperDataTemplate.maxRange) >= Number(upperDataTemplate.minRange) &&\n      commonData.foil !== '' &&\n      lowerDataTemplate.minRange === -1 &&\n      lowerDataTemplate.maxRange === -1\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...upperDataTemplate,\n          aligner: '1',\n          foil: commonData.foil\n        }\n      ]);\n      resetAll();\n    } else if (\n      lowerDataTemplate.minRange > -1 &&\n      lowerDataTemplate.maxRange > -1 &&\n      Number(lowerDataTemplate.maxRange) >= Number(lowerDataTemplate.minRange) &&\n      commonData.foil !== '' &&\n      upperDataTemplate.minRange === -1 &&\n      upperDataTemplate.maxRange === -1\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...lowerDataTemplate,\n          aligner: '1',\n          foil: commonData.foil\n        }\n      ]);\n      resetAll();\n    }\n\n    if (\n      upperDataAligner.minRange > -1 &&\n      upperDataAligner.maxRange > -1 &&\n      Number(upperDataAligner.maxRange) >= Number(upperDataAligner.minRange) &&\n      lowerDataAligner.minRange > -1 &&\n      lowerDataAligner.maxRange > -1 &&\n      Number(lowerDataAligner.maxRange) >= Number(lowerDataAligner.minRange) &&\n      commonData.foil !== ''\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...upperDataAligner,\n          aligner: '2',\n          foil: commonData.foil\n        },\n        {\n          ...lowerDataAligner,\n          aligner: '2',\n          foil: commonData.foil\n        }\n      ]);\n      resetAll();\n    } else if (\n      upperDataAligner.minRange > -1 &&\n      upperDataAligner.maxRange > -1 &&\n      Number(upperDataAligner.maxRange) >= Number(upperDataAligner.minRange) &&\n      commonData.foil !== '' &&\n      lowerDataAligner.minRange === -1 &&\n      lowerDataAligner.maxRange === -1\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...upperDataAligner,\n          aligner: '2',\n          foil: commonData.foil\n        }\n      ]);\n      resetAll();\n    } else if (\n      lowerDataAligner.minRange > -1 &&\n      lowerDataAligner.maxRange > -1 &&\n      Number(lowerDataAligner.maxRange) >= Number(lowerDataAligner.minRange) &&\n      commonData.foil !== '' &&\n      upperDataAligner.minRange === -1 &&\n      upperDataAligner.maxRange === -1\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...lowerDataAligner,\n          aligner: '2',\n          foil: commonData.foil\n        }\n      ]);\n      resetAll();\n    }\n\n    if (\n      upperDataRetainer.minRange > -1 &&\n      upperDataRetainer.maxRange > -1 &&\n      Number(upperDataRetainer.maxRange) >= Number(upperDataRetainer.minRange) &&\n      lowerDataRetainer.minRange > -1 &&\n      lowerDataRetainer.maxRange > -1 &&\n      Number(lowerDataRetainer.maxRange) >= Number(lowerDataRetainer.minRange) &&\n      commonData.foil !== ''\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...upperDataRetainer,\n          aligner: '3',\n          foil: commonData.foil\n        },\n        {\n          ...lowerDataRetainer,\n          aligner: '3',\n          foil: commonData.foil\n        }\n      ]);\n      resetAll();\n    } else if (\n      upperDataRetainer.minRange > -1 &&\n      upperDataRetainer.maxRange > -1 &&\n      Number(upperDataRetainer.maxRange) >= Number(upperDataRetainer.minRange) &&\n      commonData.foil !== '' &&\n      lowerDataRetainer.minRange === -1 &&\n      lowerDataRetainer.maxRange === -1\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...upperDataRetainer,\n          aligner: '3',\n          foil: commonData.foil\n        }\n      ]);\n      resetAll();\n    } else if (\n      lowerDataRetainer.minRange > -1 &&\n      lowerDataRetainer.maxRange > -1 &&\n      Number(lowerDataRetainer.maxRange) >= Number(lowerDataRetainer.minRange) &&\n      commonData.foil !== '' &&\n      upperDataRetainer.minRange === -1 &&\n      upperDataRetainer.maxRange === -1\n    ) {\n      setCartData((currentArray) => [\n        ...currentArray,\n        {\n          ...lowerDataRetainer,\n          aligner: '3',\n          foil: commonData.foil\n        }\n      ]);\n      resetAll();\n    }\n  };\n  const resetLower = () => {\n    setLowerDataTemplate({\n      maxRange: -1,\n      minRange: -1,\n      prefix: 'Lower'\n    });\n    setLowerDataAligner({\n      maxRange: -1,\n      minRange: -1,\n      prefix: 'Lower'\n    });\n    setLowerDataRetainer({\n      maxRange: -1,\n      minRange: -1,\n      prefix: 'Lower'\n    });\n  };\n  const resetUpper = () => {\n    setUpperDataTemplate({\n      maxRange: -1,\n      minRange: -1,\n      prefix: 'Upper'\n    });\n    setUpperDataAligner({\n      maxRange: -1,\n      minRange: -1,\n      prefix: 'Upper'\n    });\n    setUpperDataRetainer({\n      maxRange: -1,\n      minRange: -1,\n      prefix: 'Upper'\n    });\n  };\n  const resetCommon = () => {\n    setCommonData({\n      foil: ''\n    });\n  };\n  const resetAll = () => {\n    resetUpper();\n    resetLower();\n    resetCommon();\n  };\n\n  const handlerSave = () => {\n    const correctInput = rerenderedCart.length;\n    let isCorrectCounter = 0;\n    rerenderedCart.forEach((item) => {\n      if (\n        Number(item.minRange) <= Number(item.maxRange) &&\n        Number(item.minRange) >= 0 &&\n        Number(item.maxRange) >= 0\n      )\n        isCorrectCounter += 1;\n    });\n    if (isCorrectCounter === correctInput) {\n      props.setInCartItems([...rerenderedCart]);\n      props.handleClose();\n    }\n  };\n\n  const handleEditInCart = (value, props, id) => {\n    cartData[id][props] = value;\n    setRerenderedCart([...cartData]);\n  };\n\n  const deleteInCart = (id) => {\n    setSpinner(true);\n    setCartData([...cartData.filter((item, index) => index !== id)]);\n  };\n  useEffect(() => {\n    setRerenderedCart([...cartData]);\n    setSpinner(false);\n  }, [cartData]);\n  return (\n    <div className=\"foil_add_modal_div\">\n      <h1 style={{ textAlign: 'center' }}>Clear Aligner</h1>\n      <div className=\"foil_add_modal_main_div\">\n        <div\n          className=\"foil_add_modal_main_div_mobile\"\n          style={{ display: 'flex', flexDirection: 'column' }}\n        >\n          <div className=\"foil_add_modal_upper_lower_div\">\n            <p style={{ fontSize: '18px', fontWeight: '600' }}>Template</p>\n            <div className=\"foil_add_modal_upper_lower_subdiv\">\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Upper</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Min\"\n                value={upperDataTemplate.minRange === -1 ? 'Min' : upperDataTemplate.minRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeUpper(e, 'minRangeT')}\n                error={Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange)}\n                helperText={\n                  Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Max\"\n                value={upperDataTemplate.maxRange === -1 ? 'Max' : upperDataTemplate.maxRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeUpper(e, 'maxRangeT')}\n                error={Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange)}\n                helperText={\n                  Number(upperDataTemplate.minRange) > Number(upperDataTemplate.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n            </div>\n            <div className=\"foil_add_modal_upper_lower_subdiv\">\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Lower</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Min\"\n                value={lowerDataTemplate.minRange === -1 ? 'Min' : lowerDataTemplate.minRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeLower(e, 'minRangeT')}\n                error={Number(lowerDataTemplate.minRange) > Number(lowerDataTemplate.maxRange)}\n                helperText={\n                  Number(lowerDataTemplate.minRange) > Number(lowerDataTemplate.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Max\"\n                value={lowerDataTemplate.maxRange === -1 ? 'Max' : lowerDataTemplate.maxRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeLower(e, 'maxRangeT')}\n                error={Number(lowerDataTemplate.minRange) > Number(lowerDataTemplate.maxRange)}\n                helperText={\n                  Number(lowerDataTemplate.minRange) > Number(lowerDataTemplate.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n            </div>\n          </div>\n          <div className=\"foil_add_modal_upper_lower_div\">\n            <p style={{ fontSize: '18px', fontWeight: '600', marginTop: '25px' }}>Aligner</p>\n            <div className=\"foil_add_modal_upper_lower_subdiv\">\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Upper</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Min\"\n                value={upperDataAligner.minRange === -1 ? 'Min' : upperDataAligner.minRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeUpper(e, 'minRangeA')}\n                error={Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange)}\n                helperText={\n                  Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Max\"\n                value={upperDataAligner.maxRange === -1 ? 'Max' : upperDataAligner.maxRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeUpper(e, 'maxRangeA')}\n                error={Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange)}\n                helperText={\n                  Number(upperDataAligner.minRange) > Number(upperDataAligner.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n            </div>\n            <div className=\"foil_add_modal_upper_lower_subdiv\">\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Lower</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Min\"\n                value={lowerDataAligner.minRange === -1 ? 'Min' : lowerDataAligner.minRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeLower(e, 'minRangeA')}\n                error={Number(lowerDataAligner.minRange) > Number(lowerDataAligner.maxRange)}\n                helperText={\n                  Number(lowerDataAligner.minRange) > Number(lowerDataAligner.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Max\"\n                value={lowerDataAligner.maxRange === -1 ? 'Max' : lowerDataAligner.maxRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeLower(e, 'maxRangeA')}\n                error={Number(lowerDataAligner.minRange) > Number(lowerDataAligner.maxRange)}\n                helperText={\n                  Number(lowerDataAligner.minRange) > Number(lowerDataAligner.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n            </div>\n          </div>\n          <div className=\"foil_add_modal_upper_lower_div\">\n            <p style={{ fontSize: '18px', fontWeight: '600', marginTop: '25px' }}>Retainer</p>\n\n            <div className=\"foil_add_modal_upper_lower_subdiv\">\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Upper</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Min\"\n                value={upperDataRetainer.minRange === -1 ? 'Min' : upperDataRetainer.minRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeUpper(e, 'minRangeR')}\n                error={Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange)}\n                helperText={\n                  Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Max\"\n                value={upperDataRetainer.maxRange === -1 ? 'Max' : upperDataRetainer.maxRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeUpper(e, 'maxRangeR')}\n                error={Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange)}\n                helperText={\n                  Number(upperDataRetainer.minRange) > Number(upperDataRetainer.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n            </div>\n            <div className=\"foil_add_modal_upper_lower_subdiv\">\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>Lower</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Min\"\n                value={lowerDataRetainer.minRange === -1 ? 'Min' : lowerDataRetainer.minRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeLower(e, 'minRangeR')}\n                error={Number(lowerDataRetainer.minRange) > Number(lowerDataRetainer.maxRange)}\n                helperText={\n                  Number(lowerDataRetainer.minRange) > Number(lowerDataRetainer.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n              <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n              <TextField\n                id=\"standard-basic\"\n                style={{ width: '40px' }}\n                label=\"Max\"\n                value={lowerDataRetainer.maxRange === -1 ? 'Max' : lowerDataRetainer.maxRange}\n                variant=\"standard\"\n                type=\"number\"\n                onChange={(e) => handleChangeLower(e, 'maxRangeR')}\n                error={Number(lowerDataRetainer.minRange) > Number(lowerDataRetainer.maxRange)}\n                helperText={\n                  Number(lowerDataRetainer.minRange) > Number(lowerDataRetainer.maxRange)\n                    ? 'Incorrect Range'\n                    : null\n                }\n              />\n            </div>\n          </div>\n        </div>\n        <div className=\"foil_add_modal_common_dropdown_div_clear\">\n          <FormControl className=\"modal_type\">\n            <Autocomplete\n              options={props?.brand || []}\n              value={props.brand.find((option) => option.id === commonData.foil) || null} // Ensure it maps correctly\n              getOptionLabel={(option) => option.name || ''}\n              onChange={(event, newValue) => {\n                setCommonData({ ...commonData, foil: newValue?.id || '' });\n                setErrorCommon({ foil: !newValue });\n              }}\n              renderInput={(params) => (\n                <TextField {...params} label=\"Foil Brand\" error={errorCommon.foil} />\n              )}\n            />\n            {errorCommon.foil ? (\n              <FormHelperText style={{ color: 'red' }}>*Foil Brand is required.</FormHelperText>\n            ) : null}\n          </FormControl>\n\n          <div\n            className=\"foil_add_modal_common_dropdown_btn_div_clear\"\n            style={{ maxHeight: '56px' }}\n          >\n            <Button variant=\"contained\" color=\"success\" onClick={submitLower}>\n              <AddTaskIcon />\n            </Button>\n            <Button variant=\"contained\" color=\"error\" onClick={resetAll}>\n              <ReplayOutlinedIcon />\n            </Button>\n          </div>\n        </div>\n      </div>\n      <div>\n        <h1 style={{ textAlign: 'center' }}>In Cart</h1>\n        {!spinner &&\n          rerenderedCart.map((cart, index) => (\n            <div className=\"foil_add_modal_main_div\" key={index}>\n              <div className=\"foil_add_modal_upper_lower_div\">\n                <div className=\"foil_add_modal_upper_lower_subdiv\">\n                  <p style={{ paddingTop: '20px', paddingRight: '15px' }}>{cart.prefix}</p>\n                  <TextField\n                    id=\"standard-basic\"\n                    style={{ width: '40px' }}\n                    label=\"Min\"\n                    defaultValue={cart.minRange}\n                    variant=\"standard\"\n                    type=\"number\"\n                    onChange={(e) => handleEditInCart(e.target.value, 'minRange', index)}\n                    error={\n                      Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n                    }\n                    helperText={\n                      Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n                        ? 'Incorrect Range'\n                        : null\n                    }\n                  />\n                  <p style={{ paddingTop: '20px', paddingRight: '5px' }}>to</p>\n                  <TextField\n                    id=\"standard-basic\"\n                    style={{ width: '40px' }}\n                    label=\"Max\"\n                    defaultValue={cart.maxRange}\n                    variant=\"standard\"\n                    type=\"number\"\n                    onChange={(e) => handleEditInCart(e.target.value, 'maxRange', index)}\n                    error={\n                      Number(cart.minRange) > Number(cart.maxRange) || Number(cart.maxRange) < 0\n                    }\n                    helperText={\n                      Number(cart.minRange) > Number(cart.maxRange) || Number(cart.minRange) < 0\n                        ? 'Incorrect Range'\n                        : null\n                    }\n                  />\n                </div>\n              </div>\n              <div className=\"foil_add_modal_common_dropdown_div_clear\">\n                <FormControl className=\"modal_type\" style={{ maxWidth: '260px' }}>\n                  <TextField\n                    labelId=\"demo-simple-select-label\"\n                    id=\"demo-simple-select\"\n                    defaultValue={\n                      props?.aligner.find((align) => align.id === Number(cart.aligner))?.name\n                    }\n                    label=\"Aligner Type\"\n                    disabled\n                    onChange={(e) => handleEditInCart(e.target.value, 'aligner', index)}\n                  />\n                </FormControl>\n                <FormControl className=\"modal_type\" style={{ maxWidth: '260px' }}>\n                  <TextField\n                    labelId=\"demo-simple-select-label\"\n                    defaultValue={props?.brand.find((bran) => bran.id === Number(cart.foil))?.name}\n                    label=\"Aligner Type\"\n                    disabled\n                    onChange={(e) => handleEditInCart(e.target.value, 'foil', index)}\n                  />\n                </FormControl>\n                <Button variant=\"contained\" onClick={() => deleteInCart(index)} color=\"error\">\n                  <DeleteOutlineIcon />\n                </Button>\n              </div>\n            </div>\n          ))}\n      </div>\n      <div style={{ display: 'flex', justifyContent: 'center', marginTop: '15px' }}>\n        {rerenderedCart.length === 0 ? (\n          <Button\n            variant=\"contained\"\n            onClick={handlerSave}\n            style={{ fontSize: '16px' }}\n            color=\"error\"\n          >\n            Close\n          </Button>\n        ) : (\n          <Button variant=\"contained\" onClick={handlerSave}>\n            <SaveIcon /> Save and Continue\n          </Button>\n        )}\n      </div>\n    </div>\n  );\n}\n","export function abbreviate(s) {\n  if (!s.trim()) return '';\n  return `${s?.slice(0, 10)} ${s?.length > 10 ? '...,' : ','}`;\n}\n","import { headers } from '../utils/headers';\nimport instance from '../AxiosInstance';\n\nexport const changePasswordServices = async (values) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/change-password`, {\n    method: 'POST',\n    headers,\n    data: JSON.stringify({\n      old_password: values.cPassword?.trim(),\n      new_password: values.newPassword?.trim(),\n      new_password_confirmation: values.newPassword?.trim()\n    })\n  });\n  return response;\n};\n\nexport const getDoctorAddressById = async (id) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/address/${id}/user`, {\n    method: 'GET'\n  });\n  return response;\n};\n\nexport const getDoctorDetailsServices = async () => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/user-info`, {\n    method: 'GET'\n  });\n  return response;\n};\n","import { headers } from '../utils/headers';\nimport instance from '../AxiosInstance';\n\nexport const getOrderDetailsById = async (id) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/order/${id}`, {\n    method: 'GET'\n  });\n  return response;\n};\n\nexport const getPatientsListServices = async (term = '') => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/patient/list?term=${term}`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const updateOrderAddressByOrderIdServices = async (id, addid) => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/order/update/${id}/${addid}`,\n    {\n      method: 'PUT',\n      headers,\n      data: JSON.stringify({\n        address_type: false\n      })\n    }\n  );\n  return response;\n};\n\nexport const shipToClinicServices = async (id, addressDr) => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/order/update/${id}/${addressDr[0].id}`,\n    {\n      method: 'PUT',\n      headers,\n      data: JSON.stringify({\n        address_type: true\n      })\n    }\n  );\n  return response;\n};\n\nexport const downloadOrderInvoiceByIdServices = async (id, headers) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/order/invoice/${id}`, {\n    headers\n  });\n  return response;\n};\n\nexport const getAddonsServices = async () => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/get/add-ons`, {\n    method: 'GET'\n  });\n  return response;\n};\n\nexport const getOrdersListServices = async (\n  rowsPerPageParam,\n  pageParam,\n  searchByName,\n  orderStatusParam\n) => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/order?size=${rowsPerPageParam}&page=${pageParam}&term=${searchByName}&filter=${orderStatusParam}`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getPatientsOrdersListServices = async (patientId, rowsPerPage, page) => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/order/patient/${patientId}?size=${rowsPerPage}&page=${page}`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const razorPayOnlinePaymentServices = async (body) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/payment/razorpay`, {\n    method: 'POST',\n    headers,\n    data: JSON.stringify(body)\n  });\n  return response;\n};\n\nexport const createOrderServices = async (body) => {\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/order`, {\n    method: 'POST',\n    headers,\n    data: JSON.stringify(body)\n  });\n  return response;\n};\n\nexport const uploadOrderAttachment = async (fileName, type = 'file') => {\n  const fileType = type.includes('image') ? 'image' : 'file';\n  const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/media`, {\n    method: 'POST',\n    headers,\n    data: JSON.stringify({\n      type: fileType,\n      file_name: fileName?.trim()\n    })\n  });\n  return response;\n};\n","export function isUrl(s) {\n  /* eslint-disable no-useless-escape */\n  const regexp =\n    /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/;\n  return regexp.test(s);\n}\n","import React, { useState, useEffect, useMemo } from 'react';\nimport { debounce, filter } from 'lodash';\nimport '../styles/pages/OrderNow.css';\nimport AddCircleOutlineOutlinedIcon from '@mui/icons-material/AddCircleOutlineOutlined';\nimport AttachFileOutlinedIcon from '@mui/icons-material/AttachFileOutlined';\nimport CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';\nimport axios from 'axios';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport Modal from '@mui/material/Modal';\nimport TextField from '@mui/material/TextField';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport Paper from '@mui/material/Paper';\nimport moment from 'moment';\nimport InputLabel from '@mui/material/InputLabel';\nimport Stack from '@mui/material/Stack';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport ListItemText from '@mui/material/ListItemText';\nimport TablePagination from '@mui/material/TablePagination';\nimport MenuItem from '@mui/material/MenuItem';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport swal from 'sweetalert';\nimport 'react-responsive-carousel/lib/styles/carousel.min.css';\nimport { UserListHead } from '../components/_dashboard/user';\nimport Scrollbar from '../components/Scrollbar';\nimport ThreeDModal from '../components/ThreeDModal';\nimport ClearAlignersModal from '../components/ClearAlignersModal';\nimport Page from '../components/Page';\nimport SearchNotFound from '../components/SearchNotFound';\nimport { abbreviate } from '../utils/abbreviator';\nimport { getDoctorAddressById, getDoctorDetailsServices } from '../services/profile.services';\nimport {\n  getPatientsAddressByIdServices,\n  getPatientsAttachmentByIdServices\n} from '../services/patients.services';\nimport {\n  getAddonsTaxServices,\n  getBrandsServices,\n  getBrandsTaxServices,\n  getModalTaxServices,\n  getModelsServices,\n  getShippingTax,\n  getTrimsServices,\n  getUserWiseBrandsServices,\n  getUserWiseModelsServices,\n  getProductsServices\n} from '../services/products.services';\nimport {\n  createOrderServices,\n  getAddonsServices,\n  getPatientsListServices,\n  getPatientsOrdersListServices,\n  razorPayOnlinePaymentServices,\n  uploadOrderAttachment\n} from '../services/orders.services';\nimport { isUrl } from '../utils/UrlValidator';\n// import AdvertisementModal from '../components/AdvertisementModal';\n\nconst TABLE_HEAD = [\n  { id: 'ordereddate', label: 'Ordered On', alignRight: false },\n  { id: 'delivereddate', label: 'Delivered On', alignRight: false },\n  { id: 'amount', label: 'Total Amount', alignRight: false }\n];\nfunction descendingComparator(a, b, orderBy) {\n  if (b[orderBy] < a[orderBy]) {\n    return -1;\n  }\n  if (b[orderBy] > a[orderBy]) {\n    return 1;\n  }\n  return 0;\n}\n\nfunction getComparator(order, orderBy) {\n  return order === 'desc'\n    ? (a, b) => descendingComparator(a, b, orderBy)\n    : (a, b) => -descendingComparator(a, b, orderBy);\n}\n\nfunction applySortFilter(array, comparator, query) {\n  const stabilizedThis = array.map((el, index) => [el, index]);\n  stabilizedThis.sort((a, b) => {\n    const order = comparator(a[0], b[0]);\n    if (order !== 0) return order;\n    return a[1] - b[1];\n  });\n  if (query) {\n    return filter(\n      array,\n      (_user) => _user.patient?.name.toLowerCase().indexOf(query.toLowerCase()) !== -1\n    );\n  }\n  return stabilizedThis.map((el) => el[0]);\n}\n\nfunction loadScript(src) {\n  return new Promise((resolve) => {\n    const script = document.createElement('script');\n    script.src = src;\n    script.onload = () => {\n      resolve(true);\n    };\n    script.onerror = () => {\n      resolve(false);\n    };\n    document.body.appendChild(script);\n  });\n}\n\nexport default function OrderNow() {\n  const [page, setPage] = useState(0);\n  const [pageCount, setPageCount] = useState(1);\n  const [order, setOrder] = useState('asc');\n  const [selected, setSelected] = useState([]);\n  const [orderBy, setOrderBy] = useState('name');\n  const [filterName] = useState('');\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const formdata = new FormData();\n  const userData = JSON.parse(window.localStorage.getItem('userData'));\n  const userId = JSON.parse(window.localStorage.getItem('userId'));\n  const [inCart, setInCart] = useState([]);\n  const [trim] = useState();\n  const [address, setAddress] = useState([]);\n  const [brands, setBrands] = useState([]);\n  const [shippingCost, setShippingCost] = useState(0);\n  const [trims, setTrims] = useState([]);\n  const [ship2Clinic, setShip2Clinic] = useState(false);\n  // const [openAdvertisement, setOpenAdvertisement] = useState(true);\n  const [aligners] = useState([\n    {\n      id: 1,\n      name: 'Template',\n      slug: 'Template'\n    },\n    {\n      id: 2,\n      name: 'Aligner',\n      slug: 'Aligner'\n    },\n    {\n      id: 3,\n      name: 'Retainer',\n      slug: 'Retainer'\n    }\n  ]);\n  const [models, setModels] = useState([]);\n  const [patients, setPatients] = useState([]);\n  const [addons, setAddons] = useState([]);\n  const [patientsOrders, setPatientsOrders] = useState([]);\n  const [productsListing, setProductsListing] = useState([]);\n  const [spinner, setSpinner] = useState(false);\n  const [spinnerHistory, setSpinnerHistory] = useState(false);\n  const [attachmentFile, setAttachmentFile] = useState();\n  const [attachmentFileType, setAttachmentFileType] = useState('file');\n  const [orderDetails, setOrderDetails] = useState({\n    patientId: '',\n    addressId: '',\n    productId: '',\n    trim: '',\n    files: '',\n    instructions: '',\n    attachmentId: '',\n    driveLink: ''\n  });\n  const [orderErrors, setOrderErrors] = useState({\n    patientId: false,\n    addressId: false,\n    trim: false,\n    files: false,\n    attachmentId: false,\n    cart: false\n  });\n\n  const [addressList, setAddressList] = useState([]);\n  const [addressAbbreviation, setAddressAbbreviation] = useState('');\n\n  const addressWithoutAbbreviation = `${addressList[0]?.address_line_1}, ${addressList[0]?.address_line_2}, ${addressList[0]?.landmark}, ${addressList[0]?.state}, ${addressList[0]?.city}, ${addressList[0]?.pincode}`;\n\n  useEffect(() => {\n    const getPatientAddress = async () => {\n      const addPatientAddress = await getDoctorAddressById(userId);\n      const addressData = await addPatientAddress.data;\n      setAddressList(addressData.data);\n      setAddressAbbreviation(\n        `${abbreviate(addressData.data[0]?.address_line_1)}${abbreviate(\n          addressData.data[0]?.address_line_2\n        )}${abbreviate(addressData.data[0]?.landmark)}${abbreviate(addressData.data[0]?.state)}${\n          addressData.data[0]?.city\n        }, ${addressData.data[0]?.pincode}`\n      );\n    };\n    getPatientAddress();\n    // eslint-disable-next-line\n  }, []);\n\n  const priceAndTax = (price, tax) => price * tax * 0.01;\n  const TotalPrice = (price, tax, addon, addonTax) =>\n    price * tax * 0.01 + addon * addonTax * 0.01 + addon + price;\n  const TotalTax = (price, tax, addon, addonTax) =>\n    priceAndTax(price, tax) + priceAndTax(addon, addonTax);\n\n  const [addOnsCart, setAddOnsCart] = useState([]);\n\n  const [priceOfCart, setPriceOfCart] = useState(0);\n  useEffect(() => {\n    const getAddress = async () => {\n      const response = await getPatientsAddressByIdServices(orderDetails?.patientId);\n      const data = await response.data;\n      if (data?.meta?.code === 200) {\n        setAddress(data.data);\n      }\n    };\n    if (orderDetails.patientId) getAddress();\n  }, [orderDetails.patientId]);\n\n  useEffect(() => {\n    const getBrands = async () => {\n      const response = await getBrandsServices();\n      if (response.status === 200) {\n        const data = await response.data;\n        setBrands(data.data);\n      }\n    };\n    getBrands();\n\n    const getBrandsUserWise = async () => {\n      const response = await getUserWiseBrandsServices();\n      if (response.status === 200) {\n        const data = await response.data;\n        setBrandsUserWise(data.data);\n      }\n    };\n    getBrandsUserWise();\n    const getModelsUserWise = async () => {\n      const response = await getUserWiseModelsServices();\n      if (response.status === 200) {\n        const data = await response.data;\n        setModelsUserWise(data.data);\n      }\n    };\n    getModelsUserWise();\n    const getTrims = async () => {\n      const response = await getTrimsServices();\n      if (response.status === 200) {\n        const data = await response.data;\n        setTrims(data.data);\n      }\n    };\n    getTrims();\n    const getProducts = async () => {\n      const response = await getProductsServices();\n      if (response.status === 200) {\n        const data = await response.data;\n        const prodArr = data.data.filter((obj) => obj.disable !== true);\n        setProductsListing(prodArr);\n        setOrderDetails({ ...orderDetails, productId: prodArr[0]?.name });\n      }\n    };\n    getProducts();\n    const getModels = async () => {\n      const response = await getModelsServices();\n      if (response.status === 200) {\n        const data = await response.data;\n        setModels(data.data);\n      }\n    };\n    getModels();\n    const getShip = async () => {\n      const response = await getShippingTax();\n      const data = await response.data;\n      if (response.status === 200) setShippingCost(Number(data?.data?.value));\n    };\n    getShip();\n    const getModelTax = async () => {\n      const response = await getModalTaxServices();\n      const data = await response.data;\n      if (response.status === 200) setModelTax(data?.data?.value);\n    };\n    getModelTax();\n    const getBrandTax = async () => {\n      const response = await getBrandsTaxServices();\n      const data = await response.data;\n      if (response.status === 200) setBrandTax(data?.data?.value);\n    };\n    getBrandTax();\n\n    const getAddOnsTax = async () => {\n      const response = await getAddonsTaxServices();\n      const data = await response.data;\n      if (response.status === 200) setAddonTax(data?.data?.value);\n    };\n    getAddOnsTax();\n    const getAddOns = async () => {\n      const response = await getAddonsServices();\n      const data = await response.data;\n      if (response.status === 200) setAddons(data?.data);\n    };\n    getAddOns();\n    const fetchPatients = async () => {\n      const fetchPatiensArray = await getPatientsListServices();\n      if (fetchPatiensArray.status === 200) {\n        const data = await fetchPatiensArray.data;\n        setPatients(data.data);\n      }\n    };\n    fetchPatients();\n    // eslint-disable-next-line\n  }, []);\n  const [brandsUserWise, setBrandsUserWise] = useState([]);\n  const [modelsUserWise, setModelsUserWise] = useState([]);\n\n  const [modelTax, setModelTax] = useState(0);\n  const [brandTax, setBrandTax] = useState(0);\n  const [addonTax, setAddonTax] = useState(0);\n  const [tax, setTax] = useState(0);\n\n  const findAlignerById = (id) => {\n    if (Number(id) === 1) return 'Template';\n    if (Number(id) === 2) return 'Aligner';\n    return 'Retainer';\n  };\n\n  const [attachmentsList, setAttachmentsList] = useState([]);\n  useEffect(() => {\n    const fetchPatients = async () => {\n      setSpinnerHistory(true);\n      const fetchPatiensArray = await getPatientsOrdersListServices(\n        orderDetails?.patientId,\n        rowsPerPage,\n        page\n      );\n      setSpinnerHistory(false);\n      if (fetchPatiensArray.status === 200) {\n        const data = await fetchPatiensArray.data;\n        setPatientsOrders(data.data);\n        setPageCount(data.meta.length);\n      }\n    };\n    const getAttachments = async () => {\n      const response = await getPatientsAttachmentByIdServices(orderDetails.patientId);\n      const data = await response.data;\n      if (response.status === 200) setAttachmentsList(data?.data);\n    };\n    if (orderDetails.patientId !== '') {\n      getAttachments();\n      fetchPatients();\n    }\n    // eslint-disable-next-line\n  }, [orderDetails.patientId]);\n\n  const modalStyle = {\n    position: 'absolute',\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    width: '90%',\n    maxWidth: 1000,\n    overflowY: 'scroll',\n    bgcolor: 'background.paper',\n    maxHeight: 600,\n    borderRadius: '13px',\n    marginTop: '20px',\n    p: 4,\n    padding: '10px'\n  };\n\n  const [open, setOpen] = React.useState(false);\n  const handleOpen = () => setOpen(true);\n  const handleClose = () => setOpen(false);\n  useEffect(() => {\n    setInCart([]);\n    setPriceOfCart(0);\n  }, [orderDetails.productId]);\n\n  useEffect(() => {\n    setOrderErrors({ ...orderErrors, cart: false });\n    let sum = 0;\n    for (let i = 0; i < inCart.length; i += 1) {\n      if (orderDetails.productId === 'Clear Aligner') {\n        let price = 0;\n        for (let j = 0; j < brandsUserWise.length; j += 1) {\n          if (brandsUserWise[j].productable_id === inCart[i].foil) {\n            price =\n              brandsUserWise[j].price *\n              (Number(inCart[i].maxRange) - Number(inCart[i].minRange) + 1);\n            inCart[i].price = price;\n          }\n        }\n        sum += price;\n        setTax(brandTax);\n      } else {\n        let price = 0;\n        for (let j = 0; j < modelsUserWise.length; j += 1) {\n          if (modelsUserWise[j].productable_id === inCart[i].foil) {\n            price =\n              modelsUserWise[j].price *\n              (Number(inCart[i].maxRange) - Number(inCart[i].minRange) + 1);\n            inCart[i].price = price;\n          }\n        }\n        sum += price;\n        setTax(modelTax);\n      }\n    }\n    setPriceOfCart(sum);\n    // eslint-disable-next-line\n  }, [inCart]);\n\n  const [personName, setPersonName] = useState([]);\n  const [addonsPrice, setAddOnsPrice] = useState(0);\n  const handleChange = (e, props) => {\n    if (props === 'addons') {\n      setPersonName(\n        typeof e.target.value === 'number' ? e.target.value.split(',') : e.target.value\n      );\n      let price = 0;\n      for (let i = 0; i < e.target.value.length; i += 1) {\n        price += Number(addons.find((add) => add.id === e.target.value[i]).price);\n      }\n      setAddOnsPrice(price);\n      setAddOnsCart(e.target.value);\n    } else {\n      setOrderDetails({ ...orderDetails, [props]: e.target.value });\n      setOrderErrors({\n        ...orderErrors,\n        [props]: e.target.value === ''\n      });\n    }\n  };\n\n  const handleChangeId = (v) => {\n    setOrderDetails({ ...orderDetails, patientId: v });\n    setOrderErrors({\n      ...orderErrors,\n      patientId: v === ''\n    });\n  };\n\n  useEffect(() => {\n    setShip2Clinic(\n      patients.find((patient) => patient.id === orderDetails.patientId)?.is_clinic_address\n    );\n    // eslint-disable-next-line\n  }, [orderDetails.patientId]);\n\n  const placeOrderHandler = async (e) => {\n    e.preventDefault();\n    const orderArray = [];\n    if (\n      orderDetails.productId &&\n      inCart.length > 0 &&\n      orderDetails.attachmentId &&\n      orderDetails.patientId &&\n      (orderDetails.addressId || ship2Clinic) &&\n      (orderDetails.driveLink.trim().length !== 0 ? isUrl(orderDetails.driveLink) : true) &&\n      (orderDetails.productId === 'Clear Aligner' ? orderDetails.trim : !orderDetails.trim)\n    ) {\n      setSpinner(true);\n      if (orderDetails.productId === 'Clear Aligner') {\n        inCart.forEach((cart) => {\n          orderArray.push({\n            min: cart.minRange,\n            max: cart.maxRange,\n            prefix: cart.prefix,\n            brand_id: cart.foil,\n            aligner_type_id: cart.aligner\n          });\n        });\n      } else {\n        inCart.forEach((cart) => {\n          orderArray.push({\n            min: Number(cart.minRange),\n            max: Number(cart.maxRange),\n            prefix: cart.prefix,\n            model_type_id: cart.foil\n          });\n        });\n      }\n      const checkPaymentMethod = await getDoctorDetailsServices();\n      let paymentMethod;\n      if (checkPaymentMethod.data.meta.code === 200) paymentMethod = await checkPaymentMethod?.data;\n      else {\n        swal('Error', checkPaymentMethod?.data?.message, 'error');\n        setSpinner(false);\n        return;\n      }\n      if (paymentMethod?.data?.payment_method === '1' && !paymentMethod?.data?.is_blocked) {\n        const res2 = await loadScript('https://checkout.razorpay.com/v1/checkout.js');\n        if (!res2) {\n          alert('Razorpay SDK failed to load. Are you online?');\n          setSpinner(false);\n          return;\n        }\n        const productID = orderDetails.productId === 'Clear Aligner' ? 2 : 1;\n        const body = {\n          product_id: productID,\n          quantity: 1,\n          amount: priceOfCart + addonsPrice,\n          shipping_cost: shippingCost,\n          tax: TotalTax(priceOfCart, tax, addonsPrice, addonTax),\n          total_amount: TotalPrice(priceOfCart, tax, addonsPrice, addonTax) + Number(shippingCost),\n          order_details: orderArray,\n          addon: addOnsCart\n        };\n        const resp = await razorPayOnlinePaymentServices(body);\n\n        const data = await resp.data;\n\n        const options = {\n          key: process.env.REACT_APP_RZRPAYKEY,\n          currency: 'INR',\n          amount: data?.data?.amount?.toString(),\n          order_id: data?.data?.id,\n          name: 'Quiteclear',\n          description: 'Thank you for shopping with us.',\n          handler: async (response) => {\n            if (response.razorpay_payment_id) {\n              let filePath = '';\n              if (fileName) {\n                const res = await uploadOrderAttachment(fileName, attachmentFileType);\n                const resdata = await res.data;\n                const { uploadURL } = resdata.data;\n                filePath = resdata?.data?.filePath;\n                formdata.append('file', attachmentFile);\n                await axios.put(uploadURL, attachmentFile, {\n                  headers: {\n                    'Content-Type': 'multipart/form-data'\n                  }\n                });\n              }\n              setSpinner(true);\n\n              const productID = orderDetails.productId === 'Clear Aligner' ? 2 : 1;\n              const body = {\n                product_id: productID,\n                quantity: 1,\n                amount: priceOfCart + addonsPrice,\n                shipping_cost: shippingCost,\n                tax: TotalTax(priceOfCart, tax, addonsPrice, addonTax),\n                total_amount:\n                  TotalPrice(priceOfCart, tax, addonsPrice, addonTax) + Number(shippingCost),\n                customer_id: Number(window.localStorage.getItem('userId')),\n                address_id: ship2Clinic ? null : orderDetails.addressId,\n                patient_id: orderDetails.patientId,\n                drive_link: orderDetails.driveLink,\n                instructions: orderDetails.instructions ? orderDetails.instructions : ' ',\n                stl_attachment: orderDetails?.attachmentId,\n                order_details: orderArray,\n                file_attachment: filePath !== '' ? filePath : ' ',\n                razorpay_order_id: data?.data?.id,\n                add_ons: addOnsCart,\n                ship_to_clinic: ship2Clinic\n              };\n              if (orderDetails.productId === 'Clear Aligner') {\n                body.trim_id = orderDetails.trim;\n              }\n              createOrderServices(body).then((res) => {\n                setSpinner(false);\n                if (res.status === 201) {\n                  swal('Order Created', '', 'success');\n                  setTimeout(() => window.location.reload(), 1500);\n                }\n              });\n            } else {\n              setSpinner(false);\n              swal(`Payment usuccessful`, 'Error occurred !', 'error');\n            }\n          },\n          prefill: {\n            name: userData.name,\n            email: userData.email,\n            phone: userData.mobile\n          },\n          notes: {\n            eventName: 'Quiteclear',\n            name: userData.name,\n            email: userData.email,\n            phone: userData.mobile\n          }\n        };\n        const paymentObject = new window.Razorpay(options);\n        paymentObject.open();\n        setSpinner(false);\n      } else if (!paymentMethod?.data?.is_blocked) {\n        setSpinner(true);\n        let filePath = '';\n        if (fileName) {\n          const res = await uploadOrderAttachment(fileName, attachmentFileType);\n          const resdata = await res.data;\n          const { uploadURL } = resdata.data;\n          filePath = resdata?.data?.filePath;\n          formdata.append('file', attachmentFile);\n          await axios.put(uploadURL, attachmentFile, {\n            headers: {\n              'Content-Type': 'multipart/form-data'\n            }\n          });\n        }\n        const productID = orderDetails.productId === 'Clear Aligner' ? 2 : 1;\n        const body = {\n          product_id: productID,\n          quantity: 1,\n          amount: priceOfCart + addonsPrice,\n          shipping_cost: shippingCost,\n          tax: TotalTax(priceOfCart, tax, addonsPrice, addonTax),\n          total_amount: TotalPrice(priceOfCart, tax, addonsPrice, addonTax) + Number(shippingCost),\n          customer_id: Number(window.localStorage.getItem('userId')),\n          address_id: ship2Clinic ? null : orderDetails.addressId,\n          patient_id: orderDetails.patientId,\n          drive_link: orderDetails.driveLink,\n          instructions: orderDetails.instructions ? orderDetails.instructions : ' ',\n          file_attachment: filePath !== '' ? filePath : ' ',\n          stl_attachment: orderDetails?.attachmentId,\n          order_details: orderArray,\n          add_ons: addOnsCart,\n          ship_to_clinic: ship2Clinic\n        };\n        if (orderDetails?.productId === 'Clear Aligner') {\n          body.trim_id = orderDetails.trim;\n        }\n        createOrderServices(body).then((res) => {\n          setSpinner(false);\n          if (res.status === 201) {\n            swal('Order Created', '', 'success');\n            setTimeout(() => window.location.reload(), 1500);\n          }\n        });\n      } else {\n        swal('Error', 'Your account has been suspended.', 'error');\n      }\n    } else {\n      setOrderErrors({\n        ...orderErrors,\n        files: orderDetails.files.length === 0,\n        patientId: orderDetails.patientId === '',\n        addressId: orderDetails.addressId === '',\n        trim: orderDetails.trim === '',\n        attachmentId: orderDetails.attachmentId === '',\n        cart: inCart.length === 0\n      });\n    }\n  };\n\n  const handleRequestSort = (event, property) => {\n    const isAsc = orderBy === property && order === 'asc';\n    setOrder(isAsc ? 'desc' : 'asc');\n    setOrderBy(property);\n  };\n\n  const handleSelectAllClick = (event) => {\n    if (event.target.checked) {\n      const newSelecteds = patients.map((n) => n.name);\n      setSelected(newSelecteds);\n      return;\n    }\n    setSelected([]);\n  };\n  const handleChangePage = async (event, newPage) => {\n    setPage(newPage);\n    setSpinnerHistory(true);\n    const fetchPatiensArray = await getPatientsOrdersListServices(\n      orderDetails.patientId,\n      rowsPerPage,\n      newPage\n    );\n\n    setSpinnerHistory(false);\n    if (fetchPatiensArray.status === 200) {\n      const data = await fetchPatiensArray.data;\n      setPatientsOrders(data.data);\n    }\n  };\n\n  const handleChangeRowsPerPage = (event) => {\n    setRowsPerPage(parseInt(event.target.value, 10));\n    setPage(0);\n  };\n\n  const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - patientsOrders.length) : 0;\n\n  const filteredUsers = applySortFilter(patientsOrders, getComparator(order, orderBy), filterName);\n\n  const isUserNotFound = filteredUsers.length === 0;\n\n  const openFileSeletor = () => {\n    document.getElementById('file').click();\n  };\n  const [fileName, setFileName] = useState('');\n\n  const changeHandler = async (event) => {\n    const fetchPatiensArray = await getPatientsListServices(event.target.value);\n    if (fetchPatiensArray.status === 200) {\n      const data = await fetchPatiensArray.data;\n      setPatients(data.data);\n    }\n  };\n\n  const debouncedChangeHandler = useMemo(\n    () => debounce(changeHandler, 600),\n    // eslint-disable-next-line\n    []\n  );\n\n  return (\n    <Page title=\"Order Now | Quiteclear\">\n      {/* <AdvertisementModal\n        open={openAdvertisement}\n        handleClose={() => setOpenAdvertisement(false)}\n      /> */}\n      <Container style={{ width: '100%', maxWidth: 1500 }}>\n        <Typography variant=\"h4\" sx={{ mb: 5 }}>\n          Order Now\n        </Typography>\n        <div className=\"orderSection\">\n          <Modal\n            open={open && orderDetails.productId === 'Clear Aligner'}\n            onClose={handleClose}\n            aria-labelledby=\"modal-modal-title\"\n            aria-describedby=\"modal-modal-description\"\n          >\n            <Box sx={modalStyle}>\n              <ClearAlignersModal\n                setInCartItems={setInCart}\n                handleClose={handleClose}\n                inCartItems={inCart}\n                aligner={aligners}\n                brand={brands}\n              />\n            </Box>\n          </Modal>\n          <Modal\n            open={open && orderDetails.productId === '3D Model'}\n            onClose={handleClose}\n            aria-labelledby=\"modal-modal-title\"\n            aria-describedby=\"modal-modal-description\"\n          >\n            <Box sx={modalStyle}>\n              <ThreeDModal\n                setInCartItems={setInCart}\n                handleClose={handleClose}\n                inCartItems={inCart}\n                model={models}\n              />\n            </Box>\n          </Modal>\n          <div className=\"orderForm\">\n            <form encType=\"multipart/form-data\" action=\"\" onSubmit={placeOrderHandler}>\n              <div className=\"orderFormInp\">\n                <FormControl fullWidth>\n                  <Autocomplete\n                    id=\"country-select-demo\"\n                    options={patients}\n                    autoHighlight\n                    noOptionsText=\"No Patients Found.\"\n                    onChange={(e, v) => handleChangeId(v?.id || '')}\n                    getOptionLabel={(option) => [option.name, option.mobile]}\n                    renderOption={(props, option) => (\n                      <Box component=\"li\" {...props}>\n                        <div className=\"patients_dropdown_menu_item\">\n                          <span className=\"patients_dropdown_menu_item_name\">{option.name}</span>\n                          <span className=\"patients_dropdown_menu_item_phone\">{option.mobile}</span>\n                        </div>\n                      </Box>\n                    )}\n                    renderInput={(params) => (\n                      <TextField\n                        {...params}\n                        error={orderErrors.patientId}\n                        label=\"Choose a patient\"\n                        inputProps={{\n                          ...params.inputProps\n                        }}\n                        onChange={debouncedChangeHandler}\n                      />\n                    )}\n                  />\n                  {orderErrors.patientId ? (\n                    <FormHelperText style={{ color: 'red' }}>*Patient is required</FormHelperText>\n                  ) : null}\n                </FormControl>\n              </div>\n              <div className=\"orderFormInp\">\n                <FormControl fullWidth>\n                  <InputLabel id=\"demo-simple-select-label\">Choose Files </InputLabel>\n                  <Select\n                    labelId=\"demo-simple-select-label\"\n                    id=\"demo-simple-select\"\n                    value={orderDetails.attachmentId}\n                    label=\"Choose Files    \"\n                    error={orderErrors.attachmentId}\n                    onChange={(e) => handleChange(e, 'attachmentId')}\n                    MenuProps={{ style: { maxHeight: '300px' } }}\n                  >\n                    {attachmentsList?.map((attach) => (\n                      <MenuItem value={attach?.attachment_url} key={attach?.id}>\n                        {\n                          attach?.attachment_url?.split('/')[\n                            attach?.attachment_url?.split('/').length - 1\n                          ]\n                        }\n                      </MenuItem>\n                    ))}\n                    {attachmentsList?.length === 0 ? (\n                      <MenuItem disabled value=\"\">\n                        <em>No attachments found.</em>\n                      </MenuItem>\n                    ) : null}\n                  </Select>\n                  {orderErrors.attachmentId ? (\n                    <FormHelperText style={{ color: 'red' }}>*Files is required</FormHelperText>\n                  ) : null}\n                </FormControl>\n              </div>\n              <div className=\"orderFormInp\">\n                {ship2Clinic ? (\n                  <TextField\n                    title={addressWithoutAbbreviation}\n                    id=\"outlined-adornment-name-registration\"\n                    type=\"text\"\n                    value={addressAbbreviation}\n                    style={{ padding: '0%', margin: '0%', width: '100%' }}\n                    label=\"Choose Address\"\n                    color=\"primary\"\n                    autoComplete=\"off\"\n                    multiline=\"true\"\n                    disabled\n                  />\n                ) : (\n                  <FormControl fullWidth>\n                    <InputLabel id=\"demo-simple-select-label\">Choose Address </InputLabel>\n                    <Select\n                      labelId=\"demo-simple-select-label\"\n                      id=\"demo-simple-select-address\"\n                      label=\"Choose Address    \"\n                      error={orderErrors.addressId}\n                      onChange={(e) => handleChange(e, 'addressId')}\n                      disabled={ship2Clinic}\n                      MenuProps={{ style: { maxHeight: '300px' } }}\n                    >\n                      {address?.map((addres) => (\n                        <MenuItem value={addres.id} key={addres.id}>\n                          {abbreviate(addres?.address_line_1)}\n                          {abbreviate(addres?.address_line_2)}\n                          {abbreviate(addres?.landmark)}\n                          {abbreviate(addres?.state)}\n                          {addres?.city} {addres?.pincode}\n                        </MenuItem>\n                      ))}\n                      {address.length === 0 ? (\n                        <MenuItem disabled value=\"\">\n                          <em>No address found.</em>\n                        </MenuItem>\n                      ) : null}\n                    </Select>\n                    {orderErrors.addressId ? (\n                      <FormHelperText style={{ color: 'red' }}>*Address is required</FormHelperText>\n                    ) : null}\n                  </FormControl>\n                )}\n                <div\n                  style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}\n                >\n                  <FormControlLabel\n                    control={\n                      <Checkbox\n                        checked={ship2Clinic}\n                        onChange={() => {\n                          setShip2Clinic(!ship2Clinic);\n                        }}\n                      />\n                    }\n                    label=\"Ship to Clinic/Office\"\n                  />\n                </div>\n              </div>\n              <div\n                className=\"orderFormInp\"\n                style={{\n                  display: 'flex',\n                  flexWrap: 'wrap',\n                  alignItems: 'center',\n                  justifyContent: 'space-between'\n                }}\n              >\n                <FormControl fullWidth style={{ width: '80%' }}>\n                  <InputLabel id=\"demo-simple-select-label\">Choose Product</InputLabel>\n                  <Select\n                    labelId=\"demo-simple-select-label\"\n                    id=\"demo-simple-select\"\n                    value={orderDetails.productId}\n                    label=\"Choose Product\"\n                    error={orderErrors.cart}\n                    onChange={(e) => handleChange(e, 'productId')}\n                    MenuProps={{ style: { maxHeight: '300px' } }}\n                  >\n                    {productsListing?.map((product) => (\n                      <MenuItem value={product?.name} key={product?.id} disabled={product.disable}>\n                        {product?.name}\n                      </MenuItem>\n                    ))}\n                    {productsListing?.length === 0 ? (\n                      <MenuItem disabled value=\"\">\n                        <em>No products found.</em>\n                      </MenuItem>\n                    ) : null}\n                  </Select>\n                  {orderErrors.cart ? (\n                    <FormHelperText style={{ color: 'red' }}>\n                      *Please add items in your cart.\n                    </FormHelperText>\n                  ) : null}\n                </FormControl>\n                <div className=\"orderFormInp\" style={{ marginTop: '0%' }}>\n                  {orderDetails.productId === '3D Models' ? (\n                    <Button variant=\"contained\" onClick={handleOpen}>\n                      <AddCircleOutlineOutlinedIcon />\n                    </Button>\n                  ) : (\n                    <Button variant=\"contained\" onClick={handleOpen}>\n                      <AddCircleOutlineOutlinedIcon />\n                    </Button>\n                  )}\n                </div>\n              </div>\n              {orderDetails.productId === 'Clear Aligner' ? (\n                <div className=\"orderFormInp\">\n                  <FormControl fullWidth>\n                    <InputLabel id=\"demo-simple-select-label\">Choose Trim</InputLabel>\n                    <Select\n                      labelId=\"demo-simple-select-label\"\n                      id=\"demo-simple-select\"\n                      value={trim}\n                      error={orderErrors.trim}\n                      label=\"Choose Trim\"\n                      onChange={(e) => handleChange(e, 'trim')}\n                      MenuProps={{ style: { maxHeight: '300px' } }}\n                    >\n                      {trims?.map((align) => (\n                        <MenuItem key={align.id} value={align.id}>\n                          {align.name}\n                        </MenuItem>\n                      ))}\n                    </Select>\n                    {orderErrors.trim ? (\n                      <FormHelperText style={{ color: 'red' }}>*Trim is required</FormHelperText>\n                    ) : null}\n                  </FormControl>\n                </div>\n              ) : null}\n              <div className=\"orderFormInp\">\n                <FormControl fullWidth>\n                  <InputLabel id=\"demo-multiple-checkbox-label\">Choose Add-ons</InputLabel>\n                  <Select\n                    labelId=\"demo-multiple-checkbox-label\"\n                    id=\"demo-multiple-checkbox\"\n                    label=\"Choose Add-ons\"\n                    value={personName}\n                    MenuProps={{ style: { maxHeight: '300px' } }}\n                    multiple\n                    onChange={(e) => handleChange(e, 'addons')}\n                    input={<OutlinedInput label=\"Choose Add-ons\" />}\n                    renderValue={() => (\n                      <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5 }}>\n                        {addOnsCart.map((value, index) => (\n                          <p key={index} style={{ color: '#000' }}>\n                            {addons.find((addon) => addon.id === value).name}{' '}\n                          </p>\n                        ))}\n                      </Box>\n                    )}\n                  >\n                    {addons.map((addon) => (\n                      <MenuItem\n                        key={addon.id}\n                        value={addon.id}\n                        style={{\n                          fontWeight: addOnsCart.find((add) => addon.id === add) ? '600' : '300',\n                          backgroundColor: addOnsCart.find((add) => addon.id === add)\n                            ? '#faf5e6'\n                            : '#fff'\n                        }}\n                      >\n                        <Checkbox checked={personName.indexOf(addon.id) > -1} />\n                        <ListItemText\n                          primary={addon.name}\n                          secondary={Number(addon.price).toLocaleString('en-IN', {\n                            style: 'currency',\n                            currency: 'INR'\n                          })}\n                        />\n                      </MenuItem>\n                    ))}\n                  </Select>\n                </FormControl>\n              </div>\n              <div className=\"orderFormInp\" style={{ width: '100%' }}>\n                <TextField\n                  id=\"outlined-adornment-name-registration\"\n                  type=\"text\"\n                  style={{ width: '100%' }}\n                  value={orderDetails.instructions}\n                  onChange={(e) => handleChange(e, 'instructions')}\n                  label=\"Instructions\"\n                  color=\"primary\"\n                  autoComplete=\"off\"\n                  inputProps={{\n                    maxLength: 500\n                  }}\n                  multiline=\"true\"\n                />\n                <FormHelperText style={{ paddingLeft: '10px', color: '#7b6f00' }}>\n                  Include IPR Chart, priority etc. (Max Limit: 500 characters)\n                </FormHelperText>\n              </div>\n              <div className=\"orderFormInp\" style={{ width: '100%' }}>\n                <TextField\n                  id=\"outlined-adornment-name-registration\"\n                  type=\"text\"\n                  style={{ width: '100%' }}\n                  value={orderDetails.driveLink}\n                  onChange={(e) => handleChange(e, 'driveLink')}\n                  label=\"Drive Link\"\n                  color=\"primary\"\n                  autoComplete=\"off\"\n                  error={orderDetails.driveLink.trim() ? !isUrl(orderDetails.driveLink) : false}\n                  helperText={\n                    orderDetails.driveLink.trim().length !== 0 &&\n                    !isUrl(orderDetails.driveLink) &&\n                    'Invalid link.'\n                  }\n                  inputProps={{\n                    maxLength: 250\n                  }}\n                  multiline=\"true\"\n                />\n              </div>\n              <div\n                className=\"orderFormInp\"\n                style={{\n                  display: 'flex',\n                  flexWrap: 'wrap',\n                  alignItems: 'center',\n                  justifyContent: 'space-between'\n                }}\n              >\n                <input\n                  type=\"file\"\n                  style={{ display: 'none' }}\n                  name=\"file\"\n                  id=\"file\"\n                  className=\"file\"\n                  onChange={(e) => {\n                    setFileName(e.target.files[0].name);\n                    setAttachmentFile(e.target.files[0]);\n                    setAttachmentFileType(e.target.files[0].type);\n                  }}\n                  accept=\"application/pdf,.doc,.docs,.docx,.jpg,.jpeg,.png\"\n                />\n                <TextField\n                  id=\"outlined-adornment-name-registration\"\n                  type=\"text\"\n                  style={{ width: '80%' }}\n                  value={fileName}\n                  label=\"Attachment\"\n                  color=\"primary\"\n                  disabled\n                  autoComplete=\"off\"\n                />\n                <div className=\"orderFormInp\" style={{ marginTop: '0%' }}>\n                  {fileName === '' ? (\n                    <Button variant=\"contained\" onClick={openFileSeletor}>\n                      <AttachFileOutlinedIcon />\n                    </Button>\n                  ) : (\n                    <Button\n                      variant=\"contained\"\n                      onClick={() => {\n                        setFileName('');\n                        setAttachmentFileType('');\n                        setAttachmentFile();\n                      }}\n                      color=\"error\"\n                    >\n                      <CancelOutlinedIcon />\n                    </Button>\n                  )}\n                </div>\n              </div>\n            </form>\n          </div>\n          <div className=\"cartScreenDiv\">\n            <Card style={{ marginBottom: '20px' }}>\n              <div\n                className=\"order3dView_orderNow\"\n                style={{\n                  padding: '10px',\n                  paddingLeft: '30px',\n                  paddingRight: '30px'\n                }}\n              >\n                <h2>Your Cart</h2>\n                <div style={{ minHeight: '150px' }}>\n                  {orderDetails.productId === 'Clear Aligner'\n                    ? inCart.map((cart, index) => (\n                        <ListItem\n                          key={index}\n                          component=\"div\"\n                          style={{\n                            boxShadow: '0 0 5px #ccc',\n                            margin: '10px 0 10px 0'\n                          }}\n                          disablePadding\n                        >\n                          <ListItemButton>\n                            <div\n                              style={{\n                                display: 'flex',\n                                justifyContent: 'space-between',\n                                width: '100%'\n                              }}\n                            >\n                              <p>{`${index + 1}. ${findAlignerById(inCart[index]?.aligner)} - \n                      ${brands.find((brand) => inCart[index]?.foil === brand.id)?.name} - ${\n                                cart?.prefix\n                              } ${cart?.minRange}-\n                      ${cart?.maxRange}`}</p>\n                              <p style={{ color: '#d9c300', fontWeight: 'bold' }}>\n                                {(cart?.price ? cart?.price : 0).toLocaleString('en-IN', {\n                                  style: 'currency',\n                                  currency: 'INR'\n                                })}\n                              </p>\n                            </div>\n                          </ListItemButton>\n                        </ListItem>\n                      ))\n                    : inCart.map((cart, index) => (\n                        <ListItem\n                          key={index}\n                          component=\"div\"\n                          style={{\n                            boxShadow: '0 0 5px #ccc',\n                            margin: '10px 0 10px 0'\n                          }}\n                          disablePadding\n                        >\n                          <ListItemButton>\n                            <div\n                              style={{\n                                display: 'flex',\n                                justifyContent: 'space-between',\n                                width: '100%'\n                              }}\n                            >\n                              <p>{`${index + 1}. ${\n                                models.find((model) => inCart[index]?.foil === model.id)?.name\n                              } 3D Model - ${cart.prefix}\n                      ${cart.minRange}-${cart.maxRange}`}</p>\n                              <p style={{ color: '#d9c300', fontWeight: 'bold' }}>\n                                {(cart?.price ? cart?.price : 0).toLocaleString('en-IN', {\n                                  style: 'currency',\n                                  currency: 'INR'\n                                })}\n                              </p>\n                            </div>\n                          </ListItemButton>\n                        </ListItem>\n                      ))}\n                </div>\n              </div>\n            </Card>\n\n            <TableContainer\n              component={Paper}\n              style={{\n                border: '1px solid #d9c300',\n                minHeight: '160px'\n              }}\n            >\n              <Table sx={{ minWidth: 350 }} size=\"small\" aria-label=\"a dense table\">\n                <TableBody>\n                  <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                    <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n                      Subtotal\n                    </TableCell>\n                    <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n                      {priceOfCart.toLocaleString('en-IN', {\n                        style: 'currency',\n                        currency: 'INR'\n                      })}\n                    </TableCell>\n                  </TableRow>\n                  <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                    <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n                      Add-ons\n                    </TableCell>\n                    <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n                      {addonsPrice.toLocaleString('en-IN', {\n                        style: 'currency',\n                        currency: 'INR'\n                      })}\n                    </TableCell>\n                  </TableRow>\n                  <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                    <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n                      Shipping Cost\n                    </TableCell>\n                    <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n                      {shippingCost.toLocaleString('en-IN', {\n                        style: 'currency',\n                        currency: 'INR'\n                      })}\n                    </TableCell>\n                  </TableRow>\n                  <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                    <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n                      Tax\n                    </TableCell>\n                    <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n                      {TotalTax(priceOfCart, tax, addonsPrice, addonTax).toLocaleString('en-IN', {\n                        style: 'currency',\n                        currency: 'INR'\n                      })}\n                    </TableCell>\n                  </TableRow>\n                  <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                    <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n                      <p style={{ fontWeight: '900' }}>Total</p>\n                    </TableCell>\n                    <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n                      <p style={{ fontWeight: '900' }}>\n                        {(\n                          TotalPrice(priceOfCart, tax, addonsPrice, addonTax) + Number(shippingCost)\n                        ).toLocaleString('en-IN', {\n                          style: 'currency',\n                          currency: 'INR'\n                        })}\n                      </p>\n                    </TableCell>\n                  </TableRow>\n                </TableBody>\n              </Table>\n            </TableContainer>\n            <div className=\"FormBtn\">\n              {spinner ? (\n                <CircularProgress style={{ marginTop: '10px' }} />\n              ) : (\n                <Button\n                  variant=\"contained\"\n                  onClick={placeOrderHandler}\n                  style={{ width: '33%', height: '2.5rem' }}\n                >\n                  Place Order\n                </Button>\n              )}\n            </div>\n          </div>\n        </div>\n      </Container>\n      <Container style={{ width: '100%', maxWidth: 1500, marginTop: '55px' }}>\n        <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={5}>\n          <Typography variant=\"h4\" gutterBottom>\n            Previous Orders\n          </Typography>\n        </Stack>\n\n        <Card>\n          <Scrollbar>\n            <TableContainer sx={{ minWidth: 800 }}>\n              <Table>\n                <UserListHead\n                  order={order}\n                  orderBy={orderBy}\n                  headLabel={TABLE_HEAD}\n                  rowCount={patientsOrders.length}\n                  numSelected={selected.length}\n                  onRequestSort={handleRequestSort}\n                  onSelectAllClick={handleSelectAllClick}\n                />\n                <TableBody>\n                  {filteredUsers.map((row) => {\n                    const { id, patient } = row;\n                    const isItemSelected = selected.indexOf(patient?.name) !== -1;\n\n                    return (\n                      <TableRow\n                        hover\n                        key={id}\n                        tabIndex={-1}\n                        onClick={() => {\n                          // navigate(`/dashboard/history/${row.id}`);\n                          window.open(\n                            `${window.location.origin}/dashboard/history/${row.id}`,\n                            '_blank',\n                            'noopener,noreferrer'\n                          );\n                        }}\n                        role=\"checkbox\"\n                        selected={isItemSelected}\n                        aria-checked={isItemSelected}\n                        style={{ cursor: 'pointer' }}\n                      >\n                        <TableCell align=\"left\">\n                          {moment(row?.ordered_on).format('DD/MM/YYYY')}\n                        </TableCell>\n                        <TableCell align=\"left\">\n                          {row?.delivered_on\n                            ? moment(row?.delivered_on).format('DD/MM/YYYY')\n                            : '--'}\n                        </TableCell>\n                        <TableCell align=\"left\">\n                          {Number(row?.total_amount).toLocaleString('en-IN', {\n                            style: 'currency',\n                            currency: 'INR'\n                          })}\n                        </TableCell>\n                      </TableRow>\n                    );\n                  })}\n                  {emptyRows > 0 && (\n                    <TableRow style={{ height: 53 * emptyRows }}>\n                      <TableCell colSpan={6} />\n                    </TableRow>\n                  )}\n                </TableBody>\n                {isUserNotFound && (\n                  <TableBody>\n                    <TableRow>\n                      <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n                        {spinnerHistory ? (\n                          <div style={{ width: '100%' }}>\n                            <CircularProgress style={{ textAlign: 'center' }} />\n                          </div>\n                        ) : (\n                          <SearchNotFound searchQuery={filterName} />\n                        )}\n                      </TableCell>\n                    </TableRow>\n                  </TableBody>\n                )}\n              </Table>\n            </TableContainer>\n          </Scrollbar>\n          <TablePagination\n            rowsPerPageOptions={[10]}\n            component=\"div\"\n            count={pageCount}\n            rowsPerPage={rowsPerPage}\n            page={page}\n            onPageChange={handleChangePage}\n            onRowsPerPageChange={handleChangeRowsPerPage}\n          />\n        </Card>\n      </Container>\n    </Page>\n  );\n}\n","import { debounce } from 'lodash';\nimport { useEffect, useMemo, useState } from 'react';\nimport moment from 'moment';\nimport { useNavigate } from 'react-router-dom';\nimport {\n  Card,\n  Table,\n  Stack,\n  TableRow,\n  TableBody,\n  TableCell,\n  Container,\n  Typography,\n  TableContainer,\n  TablePagination,\n  CircularProgress\n} from '@mui/material';\nimport Page from '../../Page';\nimport Scrollbar from '../../Scrollbar';\nimport SearchNotFound from '../../SearchNotFound';\nimport { UserListHead, UserListToolbar } from '../user';\nimport instance from '../../../AxiosInstance';\n\nconst TABLE_HEAD = [\n  { id: 'id', label: 'Order ID', alignRight: false },\n  { id: 'patient', label: 'Patient Name', alignRight: false },\n  { id: 'mobile', label: \"Patient's Phone Number\", alignRight: false },\n  { id: 'ordereddate', label: 'Ordered On', alignRight: false },\n  { id: 'delivereddate', label: 'Delivered On', alignRight: false },\n  { id: 'amount', label: 'Total Amount', alignRight: false }\n];\n\nexport default function PendingOrders() {\n  const [page, setPage] = useState(0);\n  const [pageCount, setPageCount] = useState(1);\n  const [order, setOrder] = useState('asc');\n  const [selected, setSelected] = useState([]);\n  const [orderBy, setOrderBy] = useState('name');\n  const [filterName, setFilterName] = useState('');\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [patients, setPatients] = useState([]);\n  const [spinner, setSpinner] = useState(false);\n\n  const navigate = useNavigate();\n\n  useEffect(() => {\n    const search = async () => {\n      setPatients([]);\n      const searchByName = (\n        filterName.includes('#') ? `%23${filterName.split('#')[1]}` : filterName\n      ).toLowerCase();\n      setSpinner(true);\n      const response = await instance(\n        `${process.env.REACT_APP_THIRDINREV_API}/dashboard/pending-orders-list?size=${rowsPerPage}&page=${page}&term=${searchByName}`,\n        {\n          method: 'GET'\n        }\n      );\n\n      setSpinner(false);\n      const data = await response.data;\n      if (response.status === 200) {\n        setPatients(data?.data);\n        setPageCount(data?.meta?.length);\n      }\n    };\n    search();\n    // eslint-disable-next-line\n  }, [filterName, rowsPerPage, page]);\n\n  const handleRequestSort = (event, property) => {\n    const isAsc = orderBy === property && order === 'asc';\n    setOrder(isAsc ? 'desc' : 'asc');\n    setOrderBy(property);\n  };\n\n  const handleSelectAllClick = (event) => {\n    if (event.target.checked) {\n      const newSelecteds = patients.map((n) => n.name);\n      setSelected(newSelecteds);\n      return;\n    }\n    setSelected([]);\n  };\n\n  const handleChangePage = async (event, newPage) => {\n    setPage(newPage);\n    setPatients([]);\n  };\n\n  const handleChangeRowsPerPage = (event) => {\n    setRowsPerPage(parseInt(event.target.value, 10));\n    setPage(0);\n  };\n\n  const changeHandler = (event) => {\n    setPage(0);\n    setFilterName(event.target.value);\n  };\n\n  const debouncedChangeHandler = useMemo(() => debounce(changeHandler, 600), []);\n\n  const filteredUsers = patients;\n\n  const isUserNotFound = filteredUsers.length === 0;\n\n  return (\n    <Page>\n      <Container style={{ width: '100%', maxWidth: 1500 }}>\n        <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mt={5}>\n          <Typography variant=\"h5\" gutterBottom>\n            Pending Orders\n          </Typography>\n        </Stack>\n\n        <Card>\n          <UserListToolbar\n            numSelected={selected.length}\n            filterName={filterName}\n            onFilterName={debouncedChangeHandler}\n            name=\"Orders\"\n          />\n\n          <Scrollbar>\n            <TableContainer sx={{ minWidth: 800 }}>\n              <Table>\n                <UserListHead\n                  order={order}\n                  orderBy={orderBy}\n                  headLabel={TABLE_HEAD}\n                  rowCount={patients.length}\n                  numSelected={selected.length}\n                  onRequestSort={handleRequestSort}\n                  onSelectAllClick={handleSelectAllClick}\n                />\n                <TableBody>\n                  {filteredUsers?.map((row) => {\n                    const { id, patient } = row;\n                    const isItemSelected = selected.indexOf(patient?.name) !== -1;\n\n                    return (\n                      <TableRow\n                        hover\n                        key={id}\n                        tabIndex={-1}\n                        onClick={() => {\n                          navigate(`/dashboard/history/${row.id}`);\n                        }}\n                        role=\"checkbox\"\n                        selected={isItemSelected}\n                        aria-checked={isItemSelected}\n                        style={{ cursor: 'pointer' }}\n                      >\n                        <TableCell>#QC{row?.id}</TableCell>\n                        <TableCell variant=\"subtitle2\" noWrap>\n                          {row?.patient?.name}\n                        </TableCell>\n                        <TableCell align=\"left\">{row?.patient?.mobile}</TableCell>\n                        <TableCell align=\"left\">\n                          {moment(row?.ordered_on).format('DD/MM/YYYY')}\n                        </TableCell>\n                        <TableCell align=\"left\">\n                          {row?.delivered_on\n                            ? moment(row?.delivered_on).format('DD/MM/YYYY')\n                            : '--'}\n                        </TableCell>\n                        <TableCell align=\"left\">\n                          {Number(row?.total_amount).toLocaleString('en-IN', {\n                            style: 'currency',\n                            currency: 'INR'\n                          })}\n                        </TableCell>\n                      </TableRow>\n                    );\n                  })}\n                </TableBody>\n                {isUserNotFound && (\n                  <TableBody>\n                    <TableRow>\n                      <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n                        {spinner ? (\n                          <div style={{ width: '100%' }}>\n                            <CircularProgress style={{ textAlign: 'center' }} />\n                          </div>\n                        ) : (\n                          <SearchNotFound searchQuery={filterName} />\n                        )}\n                      </TableCell>\n                    </TableRow>\n                  </TableBody>\n                )}\n              </Table>\n            </TableContainer>\n          </Scrollbar>\n          <TablePagination\n            rowsPerPageOptions={[10, 50, 100]}\n            component=\"div\"\n            count={pageCount}\n            rowsPerPage={rowsPerPage}\n            page={page}\n            onPageChange={handleChangePage}\n            onRowsPerPageChange={handleChangeRowsPerPage}\n            labelRowsPerPage=\"Orders per page\"\n          />\n        </Card>\n      </Container>\n    </Page>\n  );\n}\n","import { replace } from 'lodash';\nimport numeral from 'numeral';\n\n// ----------------------------------------------------------------------\n\nexport function fCurrency(number) {\n  return numeral(number).format(Number.isInteger(number) ? '$0,0' : '$0,0.00');\n}\n\nexport function fPercent(number) {\n  return numeral(number / 100).format('0.0%');\n}\n\nexport function fNumber(number) {\n  return numeral(number).format();\n}\n\nexport function fShortenNumber(number) {\n  return replace(numeral(number).format('0.00a'), '.00', '');\n}\n\nexport function fData(number) {\n  return numeral(number).format('0.0 b');\n}\n\nexport function formatPhoneNumber(number) {\n  const formattedNumber = `${number.slice(0, 3)} ${number.slice(3, 6)} ${number.slice(6, 10)}`;\n  return formattedNumber;\n}\n","import { Icon } from '@iconify/react';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n  boxShadow: 'none',\n  textAlign: 'center',\n  padding: theme.spacing(5, 0),\n  color: theme.palette.secondary.darker,\n  backgroundColor: theme.palette.secondary.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n  margin: 'auto',\n  display: 'flex',\n  borderRadius: '50%',\n  alignItems: 'center',\n  width: theme.spacing(8),\n  height: theme.spacing(8),\n  justifyContent: 'center',\n  marginBottom: theme.spacing(3),\n  color: theme.palette.secondary.dark,\n  backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.secondary.dark, 0)} 0%, ${alpha(\n    theme.palette.secondary.dark,\n    0.24\n  )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\nexport default function AppItemOrders(props) {\n  return (\n    <RootStyle>\n      <IconWrapperStyle>\n        <Icon icon=\"gg:sand-clock\" width={24} height={24} />\n      </IconWrapperStyle>\n      <Typography variant=\"h3\">{fShortenNumber(props?.pending)}</Typography>\n      <Typography variant=\"subtitle2\" sx={{ opacity: 0.72 }}>\n        Pending Orders\n      </Typography>\n    </RootStyle>\n  );\n}\n","import { Icon } from '@iconify/react';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n  boxShadow: 'none',\n  textAlign: 'center',\n  padding: theme.spacing(5, 0),\n  color: theme.palette.info.darker,\n  backgroundColor: theme.palette.info.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n  margin: 'auto',\n  display: 'flex',\n  borderRadius: '50%',\n  alignItems: 'center',\n  width: theme.spacing(8),\n  height: theme.spacing(8),\n  justifyContent: 'center',\n  marginBottom: theme.spacing(3),\n  color: theme.palette.info.dark,\n  backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.info.dark, 0)} 0%, ${alpha(\n    theme.palette.info.dark,\n    0.24\n  )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\n// const TOTAL = 50;\n\nexport default function AppNewUsers(props) {\n  return (\n    <RootStyle>\n      <IconWrapperStyle>\n        <Icon icon=\"healthicons:inpatient\" width={24} height={24} />\n      </IconWrapperStyle>\n      <Typography variant=\"h3\">{fShortenNumber(props?.patients)}</Typography>\n      <Typography variant=\"subtitle2\" sx={{ opacity: 0.72 }}>\n        Total Patients\n      </Typography>\n    </RootStyle>\n  );\n}\n","import { Icon } from '@iconify/react';\n// material\nimport { alpha, styled } from '@mui/material/styles';\nimport { Card, Typography } from '@mui/material';\n// utils\nimport { fShortenNumber } from '../../../utils/formatNumber';\n\n// ----------------------------------------------------------------------\n\nconst RootStyle = styled(Card)(({ theme }) => ({\n  boxShadow: 'none',\n  textAlign: 'center',\n  padding: theme.spacing(5, 0),\n  color: theme.palette.success.darker,\n  backgroundColor: theme.palette.success.lighter\n}));\n\nconst IconWrapperStyle = styled('div')(({ theme }) => ({\n  margin: 'auto',\n  display: 'flex',\n  borderRadius: '50%',\n  alignItems: 'center',\n  width: theme.spacing(8),\n  height: theme.spacing(8),\n  justifyContent: 'center',\n  marginBottom: theme.spacing(3),\n  color: theme.palette.success.dark,\n  backgroundImage: `linear-gradient(135deg, ${alpha(theme.palette.success.dark, 0)} 0%, ${alpha(\n    theme.palette.success.dark,\n    0.24\n  )} 100%)`\n}));\n\n// ----------------------------------------------------------------------\n\n// const TOTAL = 200;\n\nexport default function AppWeeklySales(props) {\n  return (\n    <RootStyle>\n      <IconWrapperStyle>\n        <Icon icon=\"carbon:order-details\" width={24} height={24} />\n      </IconWrapperStyle>\n      <Typography variant=\"h3\">{fShortenNumber(props?.orders)}</Typography>\n      <Typography variant=\"subtitle2\" sx={{ opacity: 0.72 }}>\n        Total Orders\n      </Typography>\n    </RootStyle>\n  );\n}\n","import instance from '../AxiosInstance';\n\nexport const getPendingOrdersServices = async () => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/dashboard/pending-orders`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getTotalOrdersServices = async () => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/dashboard/total-orders`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n\nexport const getTotalPatientsCountServices = async () => {\n  const response = await instance(\n    `${process.env.REACT_APP_THIRDINREV_API}/dashboard/total-patient`,\n    {\n      method: 'GET'\n    }\n  );\n  return response;\n};\n","import Typography from '@mui/material/Typography';\nimport Container from '@mui/material/Container';\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport { useEffect, useState } from 'react';\nimport swal from 'sweetalert';\nimport PendingOrders from '../components/_dashboard/app/PendingOrders';\nimport Page from '../components/Page';\nimport { AppNewUsers, AppItemOrders, AppWeeklySales } from '../components/_dashboard/app';\nimport {\n  getPendingOrdersServices,\n  getTotalOrdersServices,\n  getTotalPatientsCountServices\n} from '../services/dashboard.services';\n\nexport default function DashboardApp() {\n  const [patients, setPatients] = useState(0);\n  const [orders, setOrders] = useState(0);\n  const [pending, setPending] = useState(0);\n\n  useEffect(() => {\n    const fetchPendingOrders = async () => {\n      const res = await getPendingOrdersServices();\n      const data = await res.data;\n      if (res.status === 200) setPending(data?.data?.total_pending);\n      else if (res.status === 203) {\n        swal(data.message, 'Please login again', 'error');\n        setTimeout(() => {\n          window.localStorage.clear();\n          window.location.reload();\n        }, 3000);\n      }\n    };\n    fetchPendingOrders();\n\n    const fetchOrders = async () => {\n      const res = await getTotalOrdersServices();\n      const data = await res.data;\n      setOrders(data.data.total_orders);\n    };\n    fetchOrders();\n\n    const fetchPatients = async () => {\n      const fetchPatient = await getTotalPatientsCountServices();\n      const data = await fetchPatient.data;\n      if (fetchPatient.status === 203) {\n        swal(data.message, 'Please login again', 'error');\n        setTimeout(() => {\n          window.localStorage.clear();\n          window.location.reload();\n        }, 3000);\n      }\n      if (fetchPatient.status === 200) setPatients(data?.data?.total_patient);\n    };\n    fetchPatients();\n    // eslint-disable-next-line\n  }, []);\n  return (\n    <Page>\n      <Container maxWidth=\"xl\">\n        <Box sx={{ pb: 5 }}>\n          <Typography variant=\"h4\">Hi, Welcome back</Typography>\n        </Box>\n        <Grid container spacing={3}>\n          <Grid item xs={12} sm={6} md={4}>\n            <AppWeeklySales orders={orders} />\n          </Grid>\n          <Grid item xs={12} sm={6} md={4}>\n            <AppNewUsers patients={patients} />\n          </Grid>\n          <Grid item xs={12} sm={6} md={4}>\n            <AppItemOrders pending={pending} />\n          </Grid>\n          <Grid item xs={12} sm={12} md={12}>\n            <PendingOrders />\n          </Grid>\n        </Grid>\n      </Container>\n    </Page>\n  );\n}\n","export const ORDER_STATUS = {\n  OrderPlaced: 'Order Placed',\n  InManufacturing: 'In Manufacturing',\n  Ready_for_Dispatch: 'Ready for Dispatch',\n  Dispatched: 'Dispatched',\n  Delivered: 'Delivered',\n  Cancelled: 'Cancelled'\n};\n\nexport const ORDER_STATUS_ARR = [\n  'Order Placed',\n  'In Manufacturing',\n  'Ready for Dispatch',\n  'Dispatched',\n  'Delivered',\n  'Cancelled'\n];\n","import { debounce } from 'lodash';\nimport { useEffect, useMemo, useState } from 'react';\nimport moment from 'moment';\nimport { sentenceCase } from 'change-case';\nimport { useNavigate } from 'react-router-dom';\nimport Button from '@mui/material/Button';\nimport { Icon } from '@iconify/react';\nimport Card from '@mui/material/Card';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport FormControl from '@mui/material/FormControl';\nimport Stack from '@mui/material/Stack';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TableContainer from '@mui/material/TableContainer';\nimport InputLabel from '@mui/material/InputLabel';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport Table from '@mui/material/Table';\nimport TableRow from '@mui/material/TableRow';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TablePagination from '@mui/material/TablePagination';\nimport Page from '../components/Page';\nimport Scrollbar from '../components/Scrollbar';\nimport SearchNotFound from '../components/SearchNotFound';\nimport { UserListHead, OrderListToolbar } from '../components/_dashboard/user';\nimport { ORDER_STATUS_ARR } from '../constants/OrdersStatus';\nimport Label from '../components/Label';\nimport { getOrdersListServices } from '../services/orders.services';\n\nconst TABLE_HEAD = [\n  { id: 'id', label: 'Order ID', alignRight: false },\n  { id: 'patient', label: 'Patient Name', alignRight: false },\n  { id: 'mobile', label: \"Patient's Mobile Number\", alignRight: false },\n  { id: 'ordereddate', label: 'Ordered On', alignRight: false },\n  { id: 'delivereddate', label: 'Delivered On', alignRight: false },\n  { id: 'amount', label: 'Total Amount', alignRight: false },\n  { id: 'order status', label: 'Order Status', alignRight: false }\n];\n\nfunction getCorrectColor(id) {\n  if (id === 'Order Placed') return 'info';\n  if (id === 'In Manufacturing') return 'primary';\n  if (id === 'Ready for Dispatch') return 'warning';\n  if (id === 'Dispatched') return 'error';\n  if (id === 'Cancelled') return 'error';\n  return 'success';\n}\n\nexport default function OrderHistory() {\n  const searchByNameParam =\n    window.location.search?.split('&')[2]?.split('=')[1].replace(/%20/g, ' ') || '';\n  const orderStatusParam =\n    window.location.search?.split('&')[3]?.split('=')[1].replace(/%20/g, ' ') || '';\n  const pageParam = Number(window.location.search?.split('&')[1]?.split('=')[1]) || 0;\n  const rowsPerPageParam = Number(window.location.search?.split('&')[0]?.split('=')[1]) || 10;\n  const [page, setPage] = useState(0);\n  const [orderStatusId, setOrderStatusId] = useState('');\n  const [pageCount, setPageCount] = useState(1);\n  const [order, setOrder] = useState('asc');\n  const [selected, setSelected] = useState([]);\n  const [orderBy, setOrderBy] = useState('name');\n  const filterParam =\n    window.location.search?.split('&')[2]?.split('=')[1].replace(/%20/g, ' ') || '';\n  const filterValue = (\n    filterParam.includes('%23') ? `#${filterParam.split('%23')[1]}` : filterParam\n  ).toLowerCase();\n  const [filterName, setFilterName] = useState(filterValue);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [patients, setPatients] = useState([]);\n  const [spinner, setSpinner] = useState(false);\n\n  const navigate = useNavigate();\n\n  useEffect(() => {\n    const search = async () => {\n      setSpinner(true);\n      setPatients([]);\n      setPage(pageParam);\n      setOrderStatusId(orderStatusParam);\n      setRowsPerPage(rowsPerPageParam);\n      setFilterName(\n        window.location.search?.split('&')[2]?.split('=')[1].replace(/%20/g, ' ') || ''\n      );\n      const searchByName = (\n        searchByNameParam.includes('#')\n          ? `%23${searchByNameParam.split('#')[1]}`\n          : searchByNameParam\n      ).toLowerCase();\n      const response = await getOrdersListServices(\n        rowsPerPageParam,\n        pageParam,\n        searchByName,\n        orderStatusParam\n      );\n      setSpinner(false);\n      const data = await response.data;\n      setPatients(data.data);\n      setPageCount(data.meta.length);\n    };\n    search();\n    // eslint-disable-next-line\n  }, [window.location.search]);\n\n  const handleRequestSort = (event, property) => {\n    const isAsc = orderBy === property && order === 'asc';\n    setOrder(isAsc ? 'desc' : 'asc');\n    setOrderBy(property);\n  };\n\n  const handleSelectAllClick = (event) => {\n    if (event.target.checked) {\n      const newSelecteds = patients.map((n) => n.name);\n      setSelected(newSelecteds);\n      return;\n    }\n    setSelected([]);\n  };\n\n  const fetchordersByStatus = async (value) => {\n    setOrderStatusId(value);\n    setSpinner(true);\n    setPatients([]);\n    setPageCount(0);\n    navigate(`?rowsPerPage=${rowsPerPage}&page=0&search=${filterName}&filter=${value}`);\n  };\n\n  const handleChangePage = async (event, newPage) => {\n    if (newPage < 0) return;\n    setPage(newPage);\n    setSpinner(true);\n    setPatients([]);\n    setPageCount(0);\n    navigate(\n      `?rowsPerPage=${rowsPerPage}&page=${newPage}&search=${filterName}&filter=${orderStatusId}`\n    );\n  };\n\n  const handleChangeRowsPerPage = (event) => {\n    setRowsPerPage(parseInt(event.target.value, 10));\n    setPage(0);\n    setSpinner(true);\n    setPatients([]);\n    setPageCount(0);\n    navigate(\n      `?rowsPerPage=${parseInt(\n        event.target.value,\n        10\n      )}&page=0&search=${filterName}&filter=${orderStatusId}`\n    );\n  };\n\n  const changeHandler = (event) => {\n    setPage(0);\n    const { value } = event.target;\n    const searchByName = (value.includes('#') ? `%23${value.split('#')[1]}` : value).toLowerCase();\n    navigate(\n      `?rowsPerPage=${\n        Number(window.location.search?.split('&')[0]?.split('=')[1]) || 10\n      }&page=0&search=${searchByName}&filter=${\n        window.location.search?.split('&')[3]?.split('=')[1].replace(/%20/g, ' ') || ''\n      }`\n    );\n    setFilterName(event.target.value);\n  };\n\n  const downloadCSV = async () => {\n    const anchor = document.createElement('a');\n    document.body.appendChild(anchor);\n    const headers = new Headers();\n    headers.append('Authorization', `Bearer ${window.localStorage.getItem('token')}`);\n    fetch(`${process.env.REACT_APP_THIRDINREV_API}/excel`, { headers })\n      .then((response) => response.blob())\n      .then((blobby) => {\n        const objectUrl = window.URL.createObjectURL(blobby);\n\n        anchor.href = objectUrl;\n        anchor.download = `orders.xlsx`;\n        anchor.click();\n\n        window.URL.revokeObjectURL(objectUrl);\n      });\n  };\n\n  const debouncedChangeHandler = useMemo(\n    () => debounce(changeHandler, 600),\n    // eslint-disable-next-line\n    []\n  );\n\n  const filteredUsers = patients;\n\n  const isUserNotFound = filteredUsers.length === 0;\n\n  return (\n    <Page title=\"Order History | Quiteclear\">\n      <Container style={{ width: '100%', maxWidth: 1500 }}>\n        <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={5}>\n          <Typography variant=\"h4\" gutterBottom>\n            Order History\n          </Typography>\n          <Button\n            variant=\"contained\"\n            onClick={downloadCSV}\n            startIcon={<Icon icon=\"iwwa:file-csv\" />}\n          >\n            Download Excel\n          </Button>\n        </Stack>\n\n        <Card>\n          <OrderListToolbar\n            numSelected={selected.length}\n            filterName={filterName}\n            onFilterName={debouncedChangeHandler}\n            title=\"Orders\"\n          >\n            <div style={{ display: 'flex', flexDirection: 'flex-end', marginLeft: '15px' }}>\n              <FormControl className=\"organizer_filter_select\">\n                <InputLabel id=\"demo-simple-select-label\">Filter by Order Status</InputLabel>\n                <Select\n                  labelId=\"demo-simple-select-label\"\n                  id=\"demo-simple-select\"\n                  value={orderStatusId}\n                  label=\"Filter by Order Status\"\n                  onChange={(e) => fetchordersByStatus(e.target.value)}\n                >\n                  {ORDER_STATUS_ARR?.map((status, index) => (\n                    <MenuItem key={index} value={status}>\n                      {status}\n                    </MenuItem>\n                  ))}\n                </Select>\n              </FormControl>\n              {orderStatusId && (\n                <Button\n                  onClick={() => {\n                    setOrderStatusId('');\n                    navigate(\n                      `?rowsPerPage=${rowsPerPage}&page=${page}&search=${filterName}&filter=`\n                    );\n                  }}\n                >\n                  Clear\n                </Button>\n              )}\n            </div>\n          </OrderListToolbar>\n\n          <Scrollbar>\n            <TableContainer sx={{ minWidth: 800 }}>\n              <Table>\n                <UserListHead\n                  order={order}\n                  orderBy={orderBy}\n                  headLabel={TABLE_HEAD}\n                  rowCount={patients.length}\n                  numSelected={selected.length}\n                  onRequestSort={handleRequestSort}\n                  onSelectAllClick={handleSelectAllClick}\n                />\n                <TableBody>\n                  {filteredUsers.map((row) => {\n                    const { id, patient } = row;\n                    const isItemSelected = selected.indexOf(patient?.name) !== -1;\n\n                    return (\n                      <TableRow\n                        hover\n                        key={id}\n                        tabIndex={-1}\n                        onClick={() => {\n                          navigate(`/dashboard/history/${row.id}`);\n                        }}\n                        role=\"checkbox\"\n                        selected={isItemSelected}\n                        aria-checked={isItemSelected}\n                        style={{ cursor: 'pointer' }}\n                      >\n                        <TableCell>#QC{id}</TableCell>\n                        <TableCell>{patient?.name}</TableCell>\n                        <TableCell align=\"left\">{patient?.mobile}</TableCell>\n                        <TableCell align=\"left\">\n                          {moment(row?.ordered_on).format('DD/MM/YYYY')}\n                        </TableCell>\n                        <TableCell align=\"center\">\n                          {row?.delivered_on\n                            ? moment(row?.delivered_on).format('DD/MM/YYYY')\n                            : '--'}\n                        </TableCell>\n                        <TableCell align=\"left\">\n                          {Number(row?.total_amount).toLocaleString('en-IN', {\n                            style: 'currency',\n                            currency: 'INR'\n                          })}\n                        </TableCell>\n                        <TableCell align=\"left\">\n                          <Label variant=\"ghost\" color={getCorrectColor(row?.status)}>\n                            {sentenceCase(row?.status)}\n                          </Label>\n                        </TableCell>\n                      </TableRow>\n                    );\n                  })}\n                </TableBody>\n                {spinner && (\n                  <TableBody>\n                    <TableRow>\n                      <TableCell />\n                      <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n                        <div style={{ width: '100%' }}>\n                          <CircularProgress style={{ textAlign: 'center' }} />\n                        </div>\n                      </TableCell>\n                    </TableRow>\n                  </TableBody>\n                )}\n                {!spinner && isUserNotFound && (\n                  <TableBody>\n                    <TableRow>\n                      <TableCell />\n                      <TableCell align=\"center\" colSpan={6} sx={{ py: 3 }}>\n                        <SearchNotFound title=\"No Orders Found.\" />\n                      </TableCell>\n                    </TableRow>\n                  </TableBody>\n                )}\n              </Table>\n            </TableContainer>\n          </Scrollbar>\n          <TablePagination\n            rowsPerPageOptions={[10, 50, 100]}\n            component=\"div\"\n            count={pageCount}\n            rowsPerPage={rowsPerPage}\n            page={page}\n            onPageChange={handleChangePage}\n            onRowsPerPageChange={handleChangeRowsPerPage}\n            labelRowsPerPage=\"Orders per page\"\n          />\n        </Card>\n      </Container>\n    </Page>\n  );\n}\n","import React from 'react';\nimport Card from '@mui/material/Card';\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport FormControl from '@mui/material/FormControl';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport InputLabel from '@mui/material/InputLabel';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport LocalShippingOutlinedIcon from '@mui/icons-material/LocalShippingOutlined';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport StyledSnackbar from './StyledSnackbar';\nimport { isUrl } from '../utils/UrlValidator';\n\nexport const TrackingDetails = ({ data }) => {\n  const [open, setOpen] = React.useState(false);\n  const [snackbarData, setSnackBarData] = React.useState({\n    xPos: 'center',\n    yPos: 'bottom',\n    title: '',\n    status: 'success'\n  });\n  const handleClick = () => {\n    setOpen(true);\n  };\n\n  const handleClose = (event, reason) => {\n    if (reason === 'clickaway') {\n      return;\n    }\n\n    setOpen(false);\n  };\n\n  const copyCall = () => {\n    navigator.clipboard.writeText(trackingDetails);\n    setSnackBarData({\n      xPos: 'center',\n      yPos: 'bottom',\n      title: 'Copied to clipboard',\n      status: 'success'\n    });\n    handleClick();\n  };\n\n  const [trackingDetails, setTrackingDetails] = React.useState(data);\n\n  return (\n    <Grid item xs={12} sm={6} md={12}>\n      <Card\n        style={{\n          padding: '15px',\n          marginTop: '25px',\n          display: 'flex',\n          flexDirection: 'column',\n          justifyItems: 'center',\n          paddingBottom: '35px'\n        }}\n      >\n        <p\n          style={{\n            fontSize: '18px',\n            fontWeight: '900',\n            paddingLeft: '15px',\n            marginBottom: '15px'\n          }}\n        >\n          Tracking Details\n        </p>\n\n        <Box component=\"form\" autoComplete=\"off\">\n          <FormControl style={{ width: '100%' }} variant=\"outlined\">\n            <InputLabel htmlFor=\"outlined-adornment-password\">Tracking Details</InputLabel>\n            <OutlinedInput\n              id=\"outlined-adornment-password\"\n              type=\"text\"\n              value={trackingDetails}\n              title={trackingDetails}\n              style={{ width: '100%' }}\n              disabled=\"true\"\n              onChange={(e) => setTrackingDetails(e.target.value)}\n              endAdornment={\n                <InputAdornment position=\"end\">\n                  <IconButton aria-label=\"toggle password visibility\" onClick={copyCall} edge=\"end\">\n                    {trackingDetails && <ContentCopyIcon />}\n                  </IconButton>\n                </InputAdornment>\n              }\n              label=\"Tracking Details\"\n            />\n          </FormControl>\n          <div style={{ width: '100%', display: 'flex', justifyContent: 'space-evenly' }}>\n            {isUrl(trackingDetails) && (\n              <Button\n                variant=\"contained\"\n                onClick={() => window.open(trackingDetails)}\n                style={{ margin: 'auto', marginTop: '25px', maxWidth: 'max-content' }}\n              >\n                Track Now <LocalShippingOutlinedIcon style={{ marginLeft: '5px' }} />\n              </Button>\n            )}\n          </div>\n        </Box>\n      </Card>\n      <StyledSnackbar\n        xPos={snackbarData.xPos}\n        yPos={snackbarData.yPos}\n        title={snackbarData.title}\n        status={snackbarData.status}\n        open={open}\n        onClose={handleClose}\n      />\n    </Grid>\n  );\n};\n","import * as React from 'react';\nimport Box from '@mui/material/Box';\nimport Stepper from '@mui/material/Stepper';\nimport Step from '@mui/material/Step';\nimport StepLabel from '@mui/material/StepLabel';\nimport { EmojiEmotions, Factory, LocalShipping } from '@mui/icons-material';\nimport DisabledByDefaultIcon from '@mui/icons-material/DisabledByDefault';\nimport InventoryIcon from '@mui/icons-material/Inventory';\n\nexport const HorizontalLinearStepper = (props) => (\n  <Box sx={{ width: '100%' }}>\n    <Stepper activeStep={props.active} orientation=\"vertical\">\n      <Step\n        sx={{\n          '& .MuiStepLabel-root .Mui-completed': {\n            color: 'secondary.dark' // circle color (COMPLETED)\n          },\n          '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n            color: 'grey.500' // Just text label (COMPLETED)\n          },\n          '& .MuiStepLabel-root .Mui-active': {\n            color: 'secondary.dark' // circle color (ACTIVE)\n          },\n          '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n            color: 'common.white' // Just text label (ACTIVE)\n          },\n          '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n            fill: 'common.white' // circle's number (ACTIVE)\n          }\n        }}\n      >\n        <StepLabel>Order Placed</StepLabel>\n      </Step>\n      {props?.cancelled && props.active === 0.5 && (\n        <Step\n          sx={{\n            '& .MuiStepLabel-label': {\n              color: 'red' // Just text label (ACTIVE)\n            }\n          }}\n        >\n          <StepLabel icon={<DisabledByDefaultIcon style={{ color: 'red' }} />}>\n            Order Cancelled\n          </StepLabel>\n        </Step>\n      )}\n      <Step\n        sx={{\n          '& .MuiStepLabel-root .Mui-completed': {\n            color: '#7a0bc0' // circle color (COMPLETED)\n          },\n          '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n            color: 'grey.500' // Just text label (COMPLETED)\n          },\n          '& .MuiStepLabel-root .Mui-active': {\n            color: '#7a0bc0' // circle color (ACTIVE)\n          },\n          '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n            color: 'common.white' // Just text label (ACTIVE)\n          },\n          '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n            fill: 'black' // circle's number (ACTIVE)\n          }\n        }}\n      >\n        <StepLabel icon={<Factory style={{ color: props.active < 1 ? 'grey' : '#7a0bc0' }} />}>\n          In Manufacturing\n        </StepLabel>\n      </Step>\n      {props?.cancelled && props.active === 1.5 && (\n        <Step\n          sx={{\n            '& .MuiStepLabel-label': {\n              color: 'red' // Just text label (ACTIVE)\n            }\n          }}\n        >\n          <StepLabel icon={<DisabledByDefaultIcon style={{ color: 'red' }} />}>\n            Order Cancelled\n          </StepLabel>\n        </Step>\n      )}\n      <Step\n        sx={{\n          '& .MuiStepLabel-root .Mui-completed': {\n            color: '#ffb72b' // circle color (COMPLETED)\n          },\n          '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n            color: 'grey.500' // Just text label (COMPLETED)\n          },\n          '& .MuiStepLabel-root .Mui-active': {\n            color: 'secondary.main' // circle color (ACTIVE)\n          },\n          '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n            color: 'common.white' // Just text label (ACTIVE)\n          },\n          '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n            fill: 'black' // circle's number (ACTIVE)\n          }\n        }}\n      >\n        <StepLabel\n          icon={<InventoryIcon style={{ color: props.active < 2 ? 'grey' : '#ffb72b' }} />}\n        >\n          Ready for Dispatch\n        </StepLabel>\n      </Step>\n      <Step\n        sx={{\n          '& .MuiStepLabel-root .Mui-completed': {\n            color: 'red' // circle color (COMPLETED)\n          },\n          '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n            color: 'grey.500' // Just text label (COMPLETED)\n          },\n          '& .MuiStepLabel-root .Mui-active': {\n            color: 'secondary.main' // circle color (ACTIVE)\n          },\n          '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n            color: 'common.white' // Just text label (ACTIVE)\n          },\n          '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n            fill: 'black' // circle's number (ACTIVE)\n          }\n        }}\n      >\n        <StepLabel icon={<LocalShipping style={{ color: props.active < 3 ? 'grey' : 'red' }} />}>\n          Dispatched\n        </StepLabel>\n      </Step>\n      <Step\n        sx={{\n          '& .MuiStepLabel-root .Mui-completed': {\n            color: 'green' // circle color (COMPLETED)\n          },\n          '& .MuiStepLabel-label.Mui-completed.MuiStepLabel-alternativeLabel': {\n            color: 'grey.500' // Just text label (COMPLETED)\n          },\n          '& .MuiStepLabel-root .Mui-active': {\n            color: 'secondary.main' // circle color (ACTIVE)\n          },\n          '& .MuiStepLabel-label.Mui-active.MuiStepLabel-alternativeLabel': {\n            color: 'common.white' // Just text label (ACTIVE)\n          },\n          '& .MuiStepLabel-root .Mui-active .MuiStepIcon-text': {\n            fill: 'black' // circle's number (ACTIVE)\n          }\n        }}\n      >\n        <StepLabel icon={<EmojiEmotions style={{ color: props.active < 4 ? 'grey' : 'green' }} />}>\n          Delivered\n        </StepLabel>\n      </Step>\n    </Stepper>\n  </Box>\n);\n","import React from 'react';\nimport Card from '@mui/material/Card';\nimport Grid from '@mui/material/Grid';\n\nexport const ReasonForCancellation = ({ data }) => (\n  <Grid item xs={12} sm={6} md={12}>\n    <Card\n      style={{\n        padding: '15px',\n        marginTop: '25px',\n        display: 'flex',\n        flexDirection: 'column',\n        justifyItems: 'center',\n        paddingBottom: '35px'\n      }}\n    >\n      <p\n        style={{\n          fontSize: '18px',\n          fontWeight: '900',\n          paddingLeft: '15px',\n          marginBottom: '15px'\n        }}\n      >\n        Reason for Cancellation\n      </p>\n\n      <p\n        style={{\n          textAlign: 'justify',\n          fontSize: '0.875rem'\n        }}\n      >\n        {data}\n      </p>\n    </Card>\n  </Grid>\n);\n","import React, { useEffect, useState } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport FormControl from '@mui/material/FormControl';\nimport Stack from '@mui/material/Stack';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport InputLabel from '@mui/material/InputLabel';\nimport TableContainer from '@mui/material/TableContainer';\nimport Paper from '@mui/material/Paper';\nimport Table from '@mui/material/Table';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport TableRow from '@mui/material/TableRow';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Modal from '@mui/material/Modal';\nimport TextField from '@mui/material/TextField';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport pdfMake from 'pdfmake/build/pdfmake.min';\nimport pdfFonts from 'pdfmake/build/vfs_fonts';\nimport { Close, Save } from '@mui/icons-material';\nimport ModeEditOutlineOutlinedIcon from '@mui/icons-material/ModeEditOutlineOutlined';\nimport { Icon } from '@iconify/react';\nimport { TrackingDetails } from '../components/TrackingDetails';\nimport { logo } from '../components/pdflogoBase64';\nimport { HorizontalLinearStepper } from '../components/Stepper';\nimport Page from '../components/Page';\nimport '../styles/pages/OrderNow.css';\nimport { formatPhoneNumber } from '../utils/formatNumber';\nimport { ReasonForCancellation } from '../components/CancelledOrder';\nimport {\n  getOrderDetailsById,\n  updateOrderAddressByOrderIdServices,\n  shipToClinicServices,\n  downloadOrderInvoiceByIdServices,\n  getAddonsServices\n} from '../services/orders.services';\nimport { getPatientsAddressByIdServices } from '../services/patients.services';\nimport { getDoctorAddressById } from '../services/profile.services';\n\nexport default function OrderDetails() {\n  const navigate = useNavigate();\n  const { id } = useParams();\n  const userId = window.localStorage.getItem('userId');\n  const [orderDetails, setOrderDetails] = useState([]);\n  const [spinner, setSpinner] = useState(false);\n  const [saveSpinner, setSaveSpinner] = useState(false);\n  const [edit, setEdit] = useState(false);\n  const [error, setError] = useState(false);\n  const [address, setAddress] = useState([]);\n  const [addons, setAddons] = useState([]);\n  const [ship2Clinic, setShip2Clinic] = useState(false);\n  useEffect(() => {\n    const fetchOrderById = async () => {\n      setSpinner(true);\n      const response = await getOrderDetailsById(id);\n      const data = await response.data;\n      if (data?.meta?.code === 200) {\n        setOrderDetails(data.data);\n        setShip2Clinic(data.data?.address_history?.address_type);\n      } else if (response.status === 404 || response.status === 400) {\n        navigate('/not-found', { state: { title: 'Sorry, Order not found!' } });\n      }\n      setSpinner(false);\n    };\n    fetchOrderById();\n    // eslint-disable-next-line\n  }, [id]);\n\n  const updateOrderAddress = async (addid) => {\n    if (addid && !ship2Clinic) {\n      setError(false);\n      setSaveSpinner(true);\n      await updateOrderAddressByOrderIdServices(id, addid);\n      window.location.reload();\n      setSaveSpinner(false);\n      setEdit(false);\n    } else if (ship2Clinic) {\n      setError(false);\n      setSaveSpinner(true);\n      await shipToClinicServices(id, addressDr);\n      window.location.reload();\n      setSaveSpinner(false);\n      setEdit(false);\n    } else {\n      setError(true);\n    }\n  };\n\n  const addressChangeHandler = (e) => {\n    setError(false);\n    setAddressID(e.target.value);\n  };\n  const addressCloseHandler = () => {\n    setError(false);\n    setEdit(false);\n  };\n  const [addressDr, setAddressDr] = useState([]);\n  useEffect(() => {\n    const fetchUserAddress = async () => {\n      const response = await getPatientsAddressByIdServices(orderDetails?.patient?.id);\n      const data = await response.data;\n      setAddress(data.data);\n    };\n    if (orderDetails?.patient?.id !== undefined) fetchUserAddress();\n    const fetchUserAddressDr = async () => {\n      const response = await getDoctorAddressById(userId);\n      const data = await response.data;\n      setAddressDr(data.data);\n    };\n    fetchUserAddressDr();\n    // eslint-disable-next-line\n  }, [edit]);\n  const [addressID, setAddressID] = useState(orderDetails?.address_history?.id);\n  const printDocument = async () => {\n    const headers = new Headers();\n    headers.append('Authorization', `Bearer ${window.localStorage.getItem('token')}`);\n    const response = await downloadOrderInvoiceByIdServices(id, headers);\n\n    const { data } = response;\n    const phone = data?.data?.admin?.find((item) => item.key === 'support_phone').value;\n    const adminPhone = formatPhoneNumber(phone);\n    const adminEmail = data.data.admin.find((item) => item.key === 'support_email').value;\n    const adminWebsite = data.data.admin.find((item) => item.key === 'website').value;\n    const orderData = data.data.order_details.map((details) => {\n      if (details.model_type !== null) {\n        return [\n          {\n            text: `Model - ${details.model_type.name} - ${details.prefix} - [${details.min} - ${details.max}]`,\n            alignment: 'left'\n          },\n          { text: details.max - details.min + 1, alignment: 'right' },\n          {\n            text: Number(details.price)\n              .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n              ?.split('₹')[1],\n            alignment: 'right'\n          },\n          {\n            text: Number(details.price * (details.max - details.min + 1))\n              .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n              ?.split('₹')[1],\n            alignment: 'right'\n          }\n        ];\n      }\n      return [\n        {\n          text: `${details.brand.name} - ${details.aligner_type.name} - ${details.prefix} - [${details.min} - ${details.max}]`,\n          alignment: 'left'\n        },\n        { text: details.max - details.min + 1, alignment: 'right' },\n        {\n          text: Number(details.price)\n            .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n            ?.split('₹')[1],\n          alignment: 'right'\n        },\n        {\n          text: Number(details.price * (details.max - details.min + 1))\n            .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n            ?.split('₹')[1],\n          alignment: 'right'\n        }\n      ];\n    });\n\n    let addonslist = ``;\n\n    for (let i = 0; i < data.data.order_add_ons.length; i += 1) {\n      if (i === data.data.order_add_ons.length - 1)\n        addonslist += `${data.data.order_add_ons[i].add_on.name}`;\n      else addonslist += `${data.data.order_add_ons[i].add_on.name}, `;\n    }\n\n    const documentDefinition = {\n      content: [\n        {\n          style: 'header',\n          alignment: 'center',\n          text: 'Order Summary'\n        },\n\n        {\n          style: 'logo',\n          alignment: 'justify',\n          columns: [\n            {\n              image: logo,\n              height: 120,\n              width: 120\n            },\n            {\n              style: 'nameTable',\n              table: {\n                body: [\n                  ['Name', `:  ${data.data.patient.name}`],\n                  ['Order Date', `:  ${data.data.ordered_on}`],\n                  [\n                    'Delivery Date',\n                    `: ${\n                      data.data.delivered_on === '-' ? '          -' : ` ${data.data.delivered_on}`\n                    }`\n                  ],\n                  ['Payment mode', `:  ${data.data.invoice.payment_mode}`]\n                ]\n              },\n              layout: 'noBorders'\n            }\n          ]\n        },\n        {\n          style: 'tableBillTo',\n          table: {\n            widths: [70, 180],\n            headerRows: 1,\n            // keepWithHeaderRows: 1,\n            body: [\n              [{ text: 'Bill to', style: 'tableHeader', colSpan: 2, alignment: 'center' }, {}],\n              ['Name', data.data.user.name],\n              [\n                'Address',\n                `${data.data.address_history.address_line_1}, ${\n                  data.data.address_history.address_line_2.trim()\n                    ? `${data.data.address_history.address_line_2.trim()}, `\n                    : ''\n                } ${data.data.address_history.landmark}`\n              ],\n              ['City', data.data.address_history.pincode.city.name],\n              ['Zipcode', data.data.address_history.pincode.pincode],\n              ['State', data.data.address_history.pincode.city.state.name]\n            ]\n          }\n        },\n        {\n          style: 'detailsTable',\n          table: {\n            widths: [270, 50, 80, 80],\n            body: [\n              [\n                { text: 'Description', style: 'tableHeader', alignment: 'center' },\n                { text: 'Unit', style: 'tableHeader', alignment: 'center' },\n                { text: 'Base price [₹]', style: 'tableHeader', alignment: 'center' },\n                { text: 'Amount [₹]', style: 'tableHeader', alignment: 'center' }\n              ],\n              ...orderData\n            ]\n          }\n        },\n        {\n          style: 'addonsTable',\n          table: {\n            widths: [50, 360, 80],\n            body: [\n              [\n                'Add-on',\n                addonslist,\n                {\n                  text: Number(data.data.addons_total)\n                    .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n                    ?.split('₹')[1],\n                  alignment: 'right'\n                }\n              ]\n            ]\n          }\n        },\n        {\n          columns: [\n            {\n              style: 'instructionsTable',\n              table: {\n                widths: [200],\n                heights: ['auto', 50],\n                body: [\n                  [{ text: 'Instructions', style: 'tableHeader', alignment: 'center' }],\n                  [data.data.instructions]\n                ]\n              }\n            },\n            {\n              style: 'totalTable',\n              table: {\n                widths: [120, 80],\n                body: [\n                  [\n                    'Subtotal [₹]',\n                    {\n                      text: Number(data.data.amount)\n                        .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n                        ?.split('₹')[1],\n                      alignment: 'right'\n                    }\n                  ],\n                  [\n                    'Shipping cost [₹]',\n                    {\n                      text: Number(data.data.shipping_cost)\n                        .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n                        ?.split('₹')[1],\n                      alignment: 'right'\n                    }\n                  ],\n                  [\n                    'Taxes [₹]',\n                    {\n                      text: Number(data.data.tax)\n                        .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n                        ?.split('₹')[1],\n                      alignment: 'right'\n                    }\n                  ],\n                  [\n                    { text: 'Total [₹]', bold: true },\n                    {\n                      text: Number(data.data.total_amount)\n                        .toLocaleString('en-IN', { style: 'currency', currency: 'INR' })\n                        ?.split('₹')[1],\n                      bold: true,\n                      alignment: 'right'\n                    }\n                  ]\n                ]\n              }\n            }\n          ]\n        },\n        {\n          style: 'footer',\n          alignment: 'center',\n          text: `\\nThank You for your Order.\\nIf you have any query related to this order please feel free to contact.\\nPhone No. +91 ${adminPhone}, Email: ${adminEmail}, Website: ${adminWebsite}`\n        }\n      ],\n      styles: {\n        header: {\n          fontSize: 18,\n          bold: true,\n          alignment: 'justify'\n        },\n        tableHeader: {\n          bold: true,\n          fontSize: 13,\n          color: 'black'\n        },\n        logo: {\n          margin: [20, 50, 0, 0]\n        },\n        nameTable: {\n          margin: [110, 10, 0, 0]\n        },\n        tableBillTo: {\n          margin: [250, 0, 0, 20]\n        },\n        addonsTable: {\n          margin: [0, 20, 0, 0]\n        },\n        instructionsTable: {\n          margin: [0, 20, 0, 0]\n        },\n        totalTable: {\n          margin: [40, 20, 0, 0]\n        },\n        footer: {\n          margin: [0, 20, 0, 0]\n        }\n      }\n    };\n\n    pdfMake.vfs = pdfFonts.pdfMake.vfs;\n    pdfMake.createPdf(documentDefinition).download('Order Summary.pdf');\n  };\n\n  useEffect(() => {\n    const getAddOns = async () => {\n      const response = await getAddonsServices();\n      const data = await response.data;\n      if (response.status === 200) setAddons(data?.data);\n    };\n    getAddOns();\n  }, []);\n\n  const downloadInvoice = () => {\n    // using s3 instead of cdn due to cache issue\n    window.open(\n      `${process.env.REACT_APP_S3_URL}/${orderDetails?.invoice_url}`,\n      '_blank',\n      'noopener,noreferrer'\n    );\n  };\n\n  const style = {\n    position: 'absolute',\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    width: '100%',\n    maxWidth: 350,\n    bgcolor: 'background.paper',\n    borderRadius: 3,\n    boxShadow: 10,\n    border: 'none',\n    outline: 'none',\n    p: 4\n  };\n\n  return (\n    <Page title=\"Order Details | Quiteclear\">\n      <Modal\n        open={edit}\n        onClose={() => setEdit(false)}\n        aria-labelledby=\"simple-modal-title\"\n        aria-describedby=\"simple-modal-description\"\n      >\n        <Box sx={style}>\n          <Button\n            style={{\n              position: 'absolute',\n              top: '0',\n              right: '0',\n              display: 'flex',\n              width: '10%',\n              cursor: 'pointer',\n              justifyContent: 'space-evenly'\n            }}\n            onClick={() => addressCloseHandler()}\n            color=\"error\"\n          >\n            <Close color=\"error\" />\n          </Button>\n          <p\n            style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px', textAlign: 'center' }}\n          >\n            Change Delivery Address\n          </p>\n          <div\n            style={{\n              display: 'flex',\n              flexDirection: 'column',\n              width: '100%',\n              marginTop: '20px'\n            }}\n          >\n            {ship2Clinic ? (\n              <TextField\n                id=\"outlined-adornment-name-registration\"\n                type=\"text\"\n                style={{ width: '99%', height: '56px' }}\n                value=\"Shipping to Clinic/Office\"\n                label=\"Choose Address\"\n                color=\"primary\"\n                autoComplete=\"off\"\n                inputProps={{\n                  maxLength: 100\n                }}\n                multiline=\"true\"\n                disabled\n              />\n            ) : (\n              <FormControl style={{ width: '100%', padding: '0px' }}>\n                <InputLabel id=\"demo-simple-select-label\">Choose Address </InputLabel>\n                <Select\n                  labelId=\"demo-simple-select-label\"\n                  id=\"demo-simple-select\"\n                  label=\"Choose Address    \"\n                  error={error}\n                  disabled={ship2Clinic}\n                  defaultValue={addressID}\n                  inputProps={{\n                    maxLength: 100\n                  }}\n                  onChange={(e) => addressChangeHandler(e)}\n                >\n                  {address?.map((addres) => (\n                    <MenuItem value={addres.id} key={addres.id}>\n                      {addres?.address_line_1?.slice(0, 5)}\n                      {addres?.address_line_1?.length > 10 ? '... ,' : ', '}\n                      {addres?.address_line_2?.slice(0, 5)}\n                      {addres?.address_line_2?.length > 1 ? '... ,' : ''}\n                      {addres?.landmark?.slice(0, 5)}\n                      {addres?.address_line_1?.length > 10 ? '...' : ', '}\n                      {addres.state?.slice(0, 5)}\n                      {addres?.state?.length > 10 ? '...' : ', '}\n                      {addres?.city}, {addres?.pincode}\n                    </MenuItem>\n                  ))}\n                  {address?.length === 0 ? (\n                    <MenuItem disabled value=\"\">\n                      <em>No address found.</em>\n                    </MenuItem>\n                  ) : null}\n                </Select>\n                {error ? (\n                  <FormHelperText style={{ color: 'red' }}>\n                    *Please select an address.\n                  </FormHelperText>\n                ) : null}\n              </FormControl>\n            )}\n            <FormControlLabel\n              control={\n                <Checkbox\n                  checked={ship2Clinic}\n                  onChange={() => {\n                    setShip2Clinic(!ship2Clinic);\n                  }}\n                />\n              }\n              label=\"Ship to Clinic/Office\"\n            />\n          </div>\n          {saveSpinner ? (\n            <div style={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n              <CircularProgress />\n            </div>\n          ) : (\n            <div style={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n              <Button\n                variant=\"contained\"\n                style={{\n                  display: 'flex',\n                  width: '40%',\n                  cursor: 'pointer',\n                  justifyContent: 'space-evenly',\n                  boxShadow: '0 0 2px #ccc',\n                  marginTop: '10px'\n                }}\n                onClick={() => updateOrderAddress(addressID)}\n              >\n                <Save style={{ color: '#fff' }} />\n                <p>Save</p>\n              </Button>\n            </div>\n          )}\n        </Box>\n      </Modal>\n      <Container maxWidth=\"xl\">\n        <Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" mb={5}>\n          <Typography variant=\"h4\">Order Details : #QC{orderDetails?.id}</Typography>\n          <div>\n            {orderDetails?.invoice_url ? (\n              <Button\n                className=\"downloadButton\"\n                variant=\"contained\"\n                onClick={downloadInvoice}\n                to=\"#\"\n                startIcon={<Icon icon=\"akar-icons:cloud-download\" />}\n              >\n                Download Invoice\n              </Button>\n            ) : null}\n            <Button\n              variant=\"contained\"\n              onClick={printDocument}\n              to=\"#\"\n              startIcon={<Icon icon=\"akar-icons:cloud-download\" />}\n            >\n              Order Summary\n            </Button>\n          </div>\n        </Stack>\n        <Grid container spacing={3}>\n          <Grid item xs={12} md={12} lg={12}>\n            <div>\n              {spinner ? (\n                <div style={{ display: 'flex', justifyContent: 'center' }}>\n                  <CircularProgress />\n                </div>\n              ) : (\n                <Grid container spacing={3}>\n                  <Grid item xs={12} sm={6} md={8}>\n                    <Card style={{ padding: '15px' }}>\n                      <TableContainer component={Paper} style={{ marginBottom: '15px' }}>\n                        <Table sx={{ minWidth: 650 }} size=\"small\" aria-label=\"a dense table\">\n                          <TableBody>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell\n                                component=\"th\"\n                                scope=\"row\"\n                                style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px' }}\n                              >\n                                Your Details\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Name\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {orderDetails?.user?.name}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Email\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {orderDetails?.user?.email}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Mobile Number\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {orderDetails?.user?.mobile}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Delivering Address\n                              </TableCell>\n\n                              <TableCell component=\"th\" scope=\"row\">\n                                <p>\n                                  {orderDetails?.address_history?.address_line_1},\n                                  {orderDetails?.address_history?.address_line_2}\n                                  {orderDetails?.address_history?.address_line_2.trim()?.length > 0\n                                    ? ' ,'\n                                    : ''}\n                                  {orderDetails?.address_history?.landmark},{' '}\n                                  {orderDetails?.address_history?.pincode?.city?.state?.name},{' '}\n                                  {orderDetails?.address_history?.pincode?.city?.name},{' '}\n                                  {orderDetails?.address_history?.pincode?.pincode}\n                                </p>\n                              </TableCell>\n                              {orderDetails?.orders_histories?.id + 0.5 > 3 ||\n                              orderDetails.status === 'Cancelled' ? null : (\n                                <TableCell component=\"th\" scope=\"row\" onClick={() => setEdit(true)}>\n                                  <ModeEditOutlineOutlinedIcon\n                                    color=\"primary\"\n                                    style={{ cursor: 'pointer' }}\n                                  />\n                                </TableCell>\n                              )}\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell\n                                component=\"th\"\n                                scope=\"row\"\n                                style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px' }}\n                              >\n                                Patient's Details\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Name\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {orderDetails?.patient?.name}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Mobile\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {orderDetails?.patient?.mobile}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell\n                                component=\"th\"\n                                scope=\"row\"\n                                style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px' }}\n                              >\n                                Order Summary\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Product Name\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {orderDetails?.product?.name}\n                              </TableCell>\n                            </TableRow>\n                            {orderDetails?.trim?.name?.trim() ? (\n                              <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                                <TableCell component=\"th\" scope=\"row\">\n                                  Trim\n                                </TableCell>\n                                <TableCell component=\"th\" scope=\"row\">\n                                  {orderDetails?.trim?.name}\n                                </TableCell>\n                              </TableRow>\n                            ) : null}\n                            {orderDetails?.order_details?.map((od, index) => (\n                              <TableRow\n                                key={index}\n                                sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n                              >\n                                <TableCell component=\"th\" scope=\"row\">\n                                  Product {index + 1}\n                                </TableCell>\n                                <TableCell component=\"th\" scope=\"row\">\n                                  {od?.prefix} - {od?.min} to {od?.max} - {od?.aligner_type?.name}{' '}\n                                  {od?.brand?.name} {od?.model_type?.name}\n                                </TableCell>\n                              </TableRow>\n                            ))}\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Add-ons\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {orderDetails?.add_ons?.map((add) => (\n                                  <p key={add}>\n                                    {addons?.find((addon) => addon?.id === add)?.name}\n                                  </p>\n                                ))}\n                                {orderDetails?.add_ons?.length === 0 ? <p>--</p> : null}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Instructions\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {orderDetails?.instructions?.trim() ? (\n                                  <p style={{ wordBreak: 'break-word' }}>\n                                    {orderDetails?.instructions}\n                                  </p>\n                                ) : (\n                                  <p>No instructions.</p>\n                                )}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow\n                              sx={{\n                                '&:last-child td, &:last-child th': {\n                                  border: 0\n                                }\n                              }}\n                            >\n                              <TableCell component=\"th\" scope=\"row\">\n                                Drive Link\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {orderDetails?.drive_link?.trim() ? (\n                                  <a\n                                    className=\"drive_link_href\"\n                                    variant=\"contained\"\n                                    href={orderDetails?.drive_link}\n                                    target=\"_blank\"\n                                    rel=\"noreferrer\"\n                                  >\n                                    Click here <OpenInNewIcon />\n                                  </a>\n                                ) : (\n                                  <p>--</p>\n                                )}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell\n                                component=\"th\"\n                                scope=\"row\"\n                                style={{ fontWeight: '900', fontSize: '18px', minWidth: '220px' }}\n                              >\n                                Price\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Subtotal & Add-ons\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {Number(orderDetails?.amount).toLocaleString('en-IN', {\n                                  style: 'currency',\n                                  currency: 'INR'\n                                })}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Tax\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {Number(orderDetails?.tax).toLocaleString('en-IN', {\n                                  style: 'currency',\n                                  currency: 'INR'\n                                })}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Shipping Cost\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {Number(orderDetails?.shipping_cost).toLocaleString('en-IN', {\n                                  style: 'currency',\n                                  currency: 'INR'\n                                })}\n                              </TableCell>\n                            </TableRow>\n                            <TableRow sx={{ '&:last-child td, &:last-child th': { border: 0 } }}>\n                              <TableCell component=\"th\" scope=\"row\">\n                                Total Amount\n                              </TableCell>\n                              <TableCell component=\"th\" scope=\"row\">\n                                {Number(orderDetails?.total_amount).toLocaleString('en-IN', {\n                                  style: 'currency',\n                                  currency: 'INR'\n                                })}\n                              </TableCell>\n                            </TableRow>\n                          </TableBody>\n                        </Table>\n                      </TableContainer>\n                    </Card>\n                  </Grid>\n                  <Grid item xs={12} sm={6} md={4}>\n                    <Card style={{ padding: '15px' }}>\n                      <p style={{ fontSize: '18px', fontWeight: '900', paddingLeft: '15px' }}>\n                        Order Status\n                      </p>\n                      <HorizontalLinearStepper\n                        active={orderDetails?.orders_histories?.id + 0.5}\n                        cancelled={orderDetails?.status === 'Cancelled'}\n                      />\n                    </Card>\n                    {orderDetails.status === 'Cancelled' && (\n                      <ReasonForCancellation data={orderDetails?.reason} />\n                    )}\n                    <TrackingDetails data={orderDetails?.tracking_info} />\n                  </Grid>\n                </Grid>\n              )}\n            </div>\n          </Grid>\n        </Grid>\n      </Container>\n    </Page>\n  );\n}\n","export const logo = `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAOxAAADsQBlSsOGwAABF9pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0nYWRvYmU6bnM6bWV0YS8nPgo8cmRmOlJERiB4bWxuczpyZGY9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMnPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6QXR0cmliPSdodHRwOi8vbnMuYXR0cmlidXRpb24uY29tL2Fkcy8xLjAvJz4KICA8QXR0cmliOkFkcz4KICAgPHJkZjpTZXE+CiAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9J1Jlc291cmNlJz4KICAgICA8QXR0cmliOkNyZWF0ZWQ+MjAyMi0wMy0zMDwvQXR0cmliOkNyZWF0ZWQ+CiAgICAgPEF0dHJpYjpFeHRJZD42N2E0NjE1ZC0wZTZiLTRkNTUtOTc3YS1lMjQzZGZjZWI4ZGE8L0F0dHJpYjpFeHRJZD4KICAgICA8QXR0cmliOkZiSWQ+NTI1MjY1OTE0MTc5NTgwPC9BdHRyaWI6RmJJZD4KICAgICA8QXR0cmliOlRvdWNoVHlwZT4yPC9BdHRyaWI6VG91Y2hUeXBlPgogICAgPC9yZGY6bGk+CiAgIDwvcmRmOlNlcT4KICA8L0F0dHJpYjpBZHM+CiA8L3JkZjpEZXNjcmlwdGlvbj4KCiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0nJwogIHhtbG5zOmRjPSdodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyc+CiAgPGRjOnRpdGxlPgogICA8cmRmOkFsdD4KICAgIDxyZGY6bGkgeG1sOmxhbmc9J3gtZGVmYXVsdCc+cWM8L3JkZjpsaT4KICAgPC9yZGY6QWx0PgogIDwvZGM6dGl0bGU+CiA8L3JkZjpEZXNjcmlwdGlvbj4KCiA8cmRmOkRlc2NyaXB0aW9uIHJk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uxYA0LBhQ0yePBk7d+7EmTNnkJqaihMnTmDFihV45plnUKVKFeTl5eGvf/0runfvfs/yV9PBgwexbt062O32cj9nwoQJGD58OJYuXerGZKQXubm5WLx4MS5evCg7CumBIFLYDz/8IEwmkwAgAgMDxaxZs4TVai31OVevXhXPPvusACAAiPr164v09HSVEt/p1KlTzixz5swp9/MaNWokAIh33nnHjenkOXDggPPP5dSpU7LjaN6oUaMEAFG7dm1hs9lkxyGN4xE6Kernn3/GmDFjYLfbUbt2bcTFxeHll1+G2Vz65Ro1a9bE/PnzMXfuXJjNZpw7dw7Dhg2D1WpVKfntCgsLnb/Pz8+XkoH0r6CgAABQVFRUoTNBRHfDi+JIUc8//zxyc3MRHByM2NhYNGvWrMLPLykpwfjx47F79258+eWXePXVV92U9t5at26NDRs2IDU1FaNHj1Z9PnmH2bNno1u3bujZsyd8fHxkxyGN4xE6KWbVqlU4cOAAgJvfqCpa5re8/PLLGD58OABgypQpuHHjhmIZK6Jv37744x//CF9fXynzSf8iIiLw2muvITo6WnYU0gEWOinmq6++AgDExMRg5MiRLq01depUWCwWZGRkYPny5UrE0wyHw4HExERs374d+/btU/QCwby8PCQnJyM9PV2xNSuisLAQP/30E7Zu3YrDhw8jLy9PkXVLSkpw9uxZJCQkuOVry8jIwIULFxRf11UZGRmIj4/Htm3bcOLECdhsNtmRSCbZL+KTPly/fl2YzeYKX0RWmscee0wAEH379i31cUePHhVRUVEiKipKnDlzptTHtmjRQkRFRYl58+aV+rj8/Hznmhs2bLjn49555x3n46KiopwXAwYFBd32/yckJJQ6TwghsrKyxJtvvimqV6/uvPAMgDAYDOLhhx8Wq1evLnONu7Hb7WLhwoWiffv2wmAwONetUaOGGDlypPjll1/KvVZlL4o7ffq0GDFihPD397/ta/P19RWDBg0SR48ercyXJi5cuCDGjh0rgoODb1u3TZs2YtGiRUIIIS5evOj8e9i/f3+ZazZs2FBERUWJRYsWiYsXL4ru3bs71x0xYkSlct7Lhx9+KKKiosSjjz5aoedt2bJFdO7cWRiNxtu+7qpVq4rx48eLtLQ0RXOSNrDQSRGbNm1yflO5cOGCImt++umnzivlS1ORkgkP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r1/f+ftLly7d83GVeR3V3YYNGwYASE5OxoIFC0p9rNVqxbJly7B48WLn9QX3cuvsiBCizJvb5Ofno0OHDqhfvz569OgBIUQFvoK7s1gszjMO33//PU6ePFnq41NTU7F48WIsXrzY+Rr5vdy6qj0uLg6rVq0q9bHnzp3DZ599VoHknikmJgZ169YFALz++utl3t9g+fLl2Lp1KwA474tAXkDiW+ZIpxYvXuzcYjQ0NFQsXLhQ2O32Up+TlZUl/vznPzvfZxsZGSkuXbpU7pkRERECgHj22Wfv+vlp06bd9n5kT3ofepMmTQQAYbFY7jnrv3d8++6778pc+/fvW//b3/5217+DGzduiP79+zsfN3v27FLXrOz70KOiosTPP/9818cdO3ZM1K5d2/le/NOnT5e6bklJiWjevLlz34N7vW/94sWLIiYmptLvQ//666/LfOx/i42NFTNnzhTXrl0r1+Mr8j70hQsXOr+Onj17iqtXr971cRs2bBBVq1YVAEStWrVEXl5ehb4G0i4WOrnFihUrREBAgPMbUHR0tPjHP/4h4uPjxeXLl0VOTo44e/as2Lhxoxg/frwIDQ11PjYmJkacP3++QvP+/ve/Ozcmee+998SpU6fE6dOnxfLly8WIESMEcHOf61t7iXtKoQshxIkTJ27bi+Fg43wAAAUASURBVLxv375i6dKlIiEhQRw5ckR89tlnon79+rdtZ1oe165dE3Xq1HE+r2PHjmLevHni8OHD4tChQ+KTTz4RdevWdX5+wIABwuFwlLpmRbd+/X0Jmc1m8corr4h169aJxMREsXfvXjF58mQRGBjofMyMGTPK9bXt3r37tnXfeustsXPnTnHt2jVx+PBh8dlnn4mwsDAB4Lav0Z2FPnv2bOecevXqlatIK7r16x//+EfnjPDwcPGPf/xDbNmyRRw/flwsWbJEjBkzxvl5f39/ceDAgQp9DaRtLHRym+PHj4uuXbuWue/07z9q1aolXnzxRRETEyPCw8OdH9OnTy91VkFBwR27gv3+w2KxiPXr13vcTnG3nD59WnTo0KHMP5/nn39eWK3Wcq97/vz5cv0dDBkyROTm5pa5XmX2ct+4caOIiooqdb7ZbBZz584t99clhBBz5sy54+Yk//0RExMjDh8+rEqhDx069LbZR44cKfM5FS10m80mXn311TL/PmvUqCH27t1bofykfXwNndymRYsW2LVrFzZu3IgnnniiXG+buXLlCr7++mscOnQIGRkZzo+CgoJSn+fv74/Dhw9jzJgxd+wM9vDDD2PPnj3o16+fS1+POzVp0gT/+c9/8Mknn+D++++/7XNGoxE9evTA1q1bMXfu3ArtfFanTh3s2LED//znP+96cWHz5s3x73//G6tWrXLbldB9+vTByZMnMWHCBERERNz2OT8/P4wdOxYnTpzA888/X6F1x40bh3379qFz5853XPQVFhaG999/H3v27CnXFeFKeOKJJ5wb+LRp06Zc7/+vKJPJhE8//RR79uxB7969b7sgFLj5Vrs333wTSUlJiu4rQNpgEEKBK2CIyqGkpATJyclITU1FXl4eoqKiULduXcW/4RYXFyMxMRE5OTlo0KAB6tSpo+j6arh27RpSU1NhMBjQuHFj+Pn5ubymzWbDTz/9hMuXLyMiIgJNmjRRfUtdIQQuXryI9PR0hIaGol69emXeZKY8Ll++jMTEROTn56NWrVp48MEHXdrytbKSkpKQkpKC7t27K/J3Vpb8/HycP38e+fn5qFGjBurUqcMr2r0YC52IiEgHeMqdiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQDLHQiIiIdYKETERHpAAudiIhIB1joREREOsBCJyIi0gEWOhERkQ6w0ImIiHSAhU5ERKQD/wcwyXULDmbbLwAAAABJRU5ErkJggg==`;\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\n\nexport function UploadLoader(props) {\n  return (\n    <Box sx={{ position: 'relative', display: 'inline-flex' }}>\n      <CircularProgress variant=\"determinate\" {...props} />\n      <Box\n        sx={{\n          top: 0,\n          left: 0,\n          bottom: 0,\n          right: 0,\n          position: 'absolute',\n          display: 'flex',\n          alignItems: 'center',\n          justifyContent: 'center'\n        }}\n      >\n        <Typography variant=\"caption\" component=\"div\" color=\"text.secondary\">\n          {`${Math.round(props.value)}%`}\n        </Typography>\n      </Box>\n    </Box>\n  );\n}\n\nUploadLoader.propTypes = {\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number.isRequired\n};\n","import React, { useState, useEffect } from 'react';\nimport Button from '@mui/material/Button';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport swal from 'sweetalert';\nimport instance from '../AxiosInstance';\nimport { headers } from '../utils/headers';\n\nexport const EditAddressModal = (props) => {\n  const [values, setValues] = useState({\n    address1: props?.address?.address_line_1,\n    address2: props?.address?.address_line_2,\n    landmark: props?.address?.landmark,\n    state: '',\n    pincode: props?.address?.pincode,\n    city: '',\n    pincodeId: props?.address?.pincodeId\n  });\n  const [errors, setErrors] = useState({\n    address1: false,\n    address2: false,\n    landmark: false,\n    pincode: false\n  });\n  const [pincodes, setPincodes] = useState([]);\n  const [spinner, setSpinner] = useState(false);\n  useEffect(() => {\n    const fetcher = async () => {\n      const responseForPincode = await instance(\n        `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${values.pincode}`,\n        {\n          method: 'GET'\n        }\n      );\n      const data = await responseForPincode.data;\n      setValues({\n        ...values,\n        city: data?.data?.city?.name,\n        state: data?.data?.city?.state?.name,\n        pincodeId: data?.data?.id\n      });\n    };\n\n    fetcher();\n    // eslint-disable-next-line\n  }, []);\n  const [isOpen2, setIsOpen2] = useState(false);\n\n  const addPatientHandler = async () => {\n    if (\n      values.pincode !== '' &&\n      values.city !== '' &&\n      values.state !== '' &&\n      values.address1.length > 0 &&\n      values.landmark.length > 0\n    ) {\n      setSpinner(true);\n      const addAddressResp = await instance(\n        `${process.env.REACT_APP_THIRDINREV_API}/address/${props.index}`,\n        {\n          method: 'PUT',\n          headers,\n          data: JSON.stringify({\n            address_line_1: values.address1,\n            address_line_2: values.address2.length > 0 ? values.address2 : ' ',\n            landmark: values.landmark,\n            pincode_id: Number(values.pincodeId)\n          })\n        }\n      );\n\n      setSpinner(false);\n      if (addAddressResp.status === 201) {\n        swal('Updated Successfully.', '', 'success');\n        setValues({\n          state: '',\n          city: '',\n          pincode: '',\n          address1: '',\n          address2: '',\n          landmark: ''\n        });\n        props.handleClose();\n        props.getAddressForced();\n      } else {\n        swal('Something went wrong.', '', 'error');\n      }\n    } else {\n      setErrors({\n        ...errors,\n        address1: values.address1.length < 1,\n        landmark: values.landmark.length < 1,\n        city: values.city === '',\n        pincode: values.pincode === '',\n        state: values.state === ''\n      });\n    }\n  };\n\n  const handleChange = async (prop, v) => {\n    if (prop === 'pincode') {\n      setValues({ ...values, pincode: v });\n      if (v?.length === 6) {\n        setSpinner(true);\n        const responseForPincode = await instance(\n          `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${v}`,\n          {\n            method: 'GET'\n          }\n        );\n        const data = await responseForPincode.data;\n        setValues({\n          ...values,\n          city: data.data.city.name,\n          state: data.data.city.state.name,\n          pincode: v,\n          pincodeId: data.data.id\n        });\n        setSpinner(false);\n      }\n    } else setValues({ ...values, [prop]: v });\n\n    if (prop === 'address1')\n      setErrors({\n        ...errors,\n        address1: v.length < 1\n      });\n    if (prop === 'landmark')\n      setErrors({\n        ...errors,\n        landmark: v.length < 1\n      });\n    if (prop === 'city')\n      setErrors({\n        ...errors,\n        city: v === ''\n      });\n    if (prop === 'pincode')\n      setErrors({\n        ...errors,\n        pincode: v === ''\n      });\n    if (prop === 'state')\n      setErrors({\n        ...errors,\n        state: v === ''\n      });\n  };\n  const fetchPincodes = async (e) => {\n    if (e.target.value?.length === 3) {\n      if (e.target.value?.length === 3) {\n        const resp = await instance(\n          `${process.env.REACT_APP_THIRDINREV_API}/pincodes?pincode=${e.target?.value}`,\n          {\n            method: 'GET'\n          }\n        );\n\n        const pincodeData = await resp.data;\n        pincodeData.data.forEach((pincode) => {\n          setPincodes((currentArray) => [...currentArray, pincode.toString()]);\n        });\n      }\n    }\n  };\n  return (\n    <>\n      <h1 style={{ textAlign: 'center' }}>Update Address</h1>\n      <Box style={{ padding: '15px' }}>\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.address1}\n          onChange={(e) => handleChange('address1', e.target.value)}\n          label=\"Address 1\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.address1}\n          helperText={errors.address1 ? 'Address 1 is required.' : null}\n          inputProps={{\n            maxLength: 100\n          }}\n        />\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.address2}\n          onChange={(e) => handleChange('address2', e.target.value)}\n          label=\"Address 2\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.address2}\n          helperText={errors.address2 ? 'Address 2 is required.' : null}\n          inputProps={{\n            maxLength: 100\n          }}\n        />\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.landmark}\n          onChange={(e) => handleChange('landmark', e.target.value)}\n          label=\"Landmark\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.landmark}\n          helperText={errors.landmark ? 'Landmark is required.' : null}\n          inputProps={{\n            maxLength: 100\n          }}\n        />\n        <div\n          style={{\n            display: 'flex',\n            flexWrap: 'wrap',\n            flexDirection: 'row-reverse',\n            justifyContent: 'space-between',\n            marginTop: '15px'\n          }}\n        >\n          <TextField\n            id=\"outlined-adornment-name-registration\"\n            type=\"text\"\n            value={values.state}\n            label=\"Choose State\"\n            disabled=\"true\"\n            style={{ width: '32%', marginTop: '5px', color: errors.state ? 'red' : null }}\n            onChange={(e) => handleChange('state', e.target.value)}\n          />\n          <TextField\n            id=\"outlined-adornment-name-registration\"\n            type=\"text\"\n            value={values.city}\n            style={{ width: '32%', marginTop: '5px', color: errors.city ? 'red' : null }}\n            label=\"Choose City\"\n            disabled=\"true\"\n            onChange={(e) => handleChange('city', e.target.value)}\n          />\n\n          <Autocomplete\n            style={{ width: '32%', marginTop: '5px' }}\n            id=\"combo-box-demo\"\n            noOptionsText=\"No results found.\"\n            open={isOpen2}\n            onKeyPress={() => setIsOpen2(true)}\n            onKeyDown={() => setIsOpen2(true)}\n            onClose={() => setIsOpen2(false)}\n            options={pincodes}\n            value={values.pincode}\n            onChange={(e, v) => handleChange('pincode', v)}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                color=\"primary\"\n                label=\"Choose Pincode\"\n                onChange={fetchPincodes}\n                error={errors.pincode}\n                helperText={errors.pincode ? 'Pincode is required.' : null}\n              />\n            )}\n          />\n        </div>\n        <div style={{ display: 'flex', justifyContent: 'center', marginTop: '25px' }}>\n          {spinner ? (\n            <CircularProgress />\n          ) : (\n            <Button variant=\"contained\" style={{ marginTop: '15px' }} onClick={addPatientHandler}>\n              Save changes\n            </Button>\n          )}\n        </div>\n      </Box>\n    </>\n  );\n};\n","import React, { useState } from 'react';\n// material\nimport Grid from '@mui/material/Grid';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport axios from 'axios';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport LinearProgress from '@mui/material/LinearProgress';\n\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport '../styles/pages/OrderNow.css';\nimport CloudUploadOutlinedIcon from '@mui/icons-material/CloudUploadOutlined';\nimport swal from 'sweetalert';\nimport '../styles/pages/ClientsDashboard.css';\nimport 'react-responsive-carousel/lib/styles/carousel.min.css';\nimport { Carousel } from 'react-responsive-carousel';\nimport JSZip from 'jszip';\nimport { StlViewer } from 'react-stl-viewer';\nimport { OBJModel } from 'react-3d-viewer';\nimport { useNavigate } from 'react-router-dom';\nimport Page from '../components/Page';\nimport { UploadLoader } from '../components/UploadLoader';\nimport { EditAddressModal } from '../components/EditAddressModal';\nimport {\n  addPatientsServices,\n  getAllPincodesServices,\n  getPincodesDetailsServices,\n  uploadPatientsFileServices\n} from '../services/patients.services';\n\nexport default function AddPatient() {\n  const zip = new JSZip();\n  const [errorMsg, setErrorMsg] = useState({\n    phone: 'Mobile Number field is required.'\n  });\n  const navigate = useNavigate();\n\n  const [files, setFiles] = useState([]);\n  const [file, setFile] = useState('');\n  const [idx, setIdx] = useState(0);\n  const [progressUpload, setProgressUpload] = useState(0);\n  const [progressUploadShow, setProgressUploadShow] = useState(false);\n  const [obj, setObj] = useState(false);\n  const [orderErrors, setOrderErrors] = useState({\n    patientId: false,\n    addressId: false,\n    trim: false,\n    files: false\n  });\n  const [volume] = useState(0);\n  let stlWidth = window.innerWidth * 0.358 >= '300px' ? '300px' : window.innerWidth * 0.358;\n  if (window.innerWidth <= 504) {\n    stlWidth = window.innerWidth * 0.8;\n  }\n  const [src, setSrc] = useState('');\n  const modalStyle = {\n    position: 'absolute',\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    width: '90%',\n    maxWidth: 600,\n    overflowY: 'scroll',\n    bgcolor: 'background.paper',\n    maxHeight: '100%',\n    borderRadius: '13px',\n    marginTop: '20px',\n    p: 4,\n    padding: '10px'\n  };\n  const [values, setValues] = useState({\n    address1: '',\n    address2: '',\n    landmark: '',\n    state: '',\n    pincode: '',\n    city: '',\n    pincodeId: '',\n    name: '',\n    phone: ''\n  });\n  const [heroFiles, setHeroFiles] = useState([]);\n  const [isOpen2, setIsOpen2] = useState(false);\n  const [spinner, setSpinner] = useState(false);\n  const [indexOfAddress] = useState();\n  const [id] = useState();\n  const [errors, setErrors] = useState({});\n\n  const style = {\n    top: 0,\n    left: 0,\n    width: stlWidth,\n    height: '300px',\n    maxWidth: '576px'\n  };\n  const [folderName, setFolderName] = useState('');\n  const stlfileHandler = (e) => {\n    try {\n      setFilesError(false);\n      if (!e.target.files[0]) return;\n      setFolderName(e.target.files[0].webkitRelativePath.split('/')[0]);\n      setOrderErrors({\n        ...orderErrors,\n        trim: false\n      });\n      setFile(e.target?.files[0]);\n      setFiles([]);\n      for (let i = 0; i < e.target.files.length; i += 1) {\n        if (\n          e.target.files.item(i).name.split('.')[1] === 'obj' ||\n          e.target.files.item(i).name.split('.')[1] === 'OBJ'\n        ) {\n          setObj(true);\n        } else if (\n          e.target.files.item(i).name.split('.')[1] === 'STL' ||\n          e.target.files.item(i).name.split('.')[1] === 'stl'\n        ) {\n          setObj(false);\n        }\n\n        if (\n          e.target.files.item(i).name.split('.')[1] === 'obj' ||\n          e.target.files.item(i).name.split('.')[1] === 'OBJ' ||\n          e.target.files.item(i).name.split('.')[1] === 'STL' ||\n          e.target.files.item(i).name.split('.')[1] === 'stl'\n        ) {\n          setFiles((currentArray) => [\n            ...currentArray,\n            {\n              title: e.target.files.item(i).name,\n              src: URL.createObjectURL(e.target?.files.item(i))\n            }\n          ]);\n          setHeroFiles((currentArray) => [...currentArray, e.target?.files.item(i)]);\n        }\n      }\n\n      if (e.target.files.item(0)) setSrc(URL.createObjectURL(e.target.files.item(0)));\n    } catch (err) {\n      console.log(err);\n    }\n  };\n\n  const [pincodes, setPincodes] = useState([]);\n\n  const handleChange = async (prop, v) => {\n    if (prop === 'pincode') {\n      setValues({ ...values, pincode: v });\n      if (v?.length === 6) {\n        const responseForPincode = await getPincodesDetailsServices(v);\n        const data = await responseForPincode.data;\n        setValues({\n          ...values,\n          city: data.data.city.name,\n          state: data.data.city.state.name,\n          pincode: v,\n          pincodeId: data.data.id\n        });\n      }\n    } else setValues({ ...values, [prop]: v });\n\n    if (prop === 'phone') {\n      setErrors({\n        ...errors,\n        phone: v?.length !== 10 && v > 0\n      });\n      if (v?.length > 0 && v?.length < 10 && v > 0)\n        setErrorMsg({ ...errorMsg, phone: 'Invalid Mobile Number.' });\n    }\n    if (prop === 'name')\n      setErrors({\n        ...errors,\n        name: v?.length < 1\n      });\n  };\n  const [open, setOpen] = useState(false);\n  const [filesError, setFilesError] = useState(false);\n\n  const addPatientHandler = async () => {\n    try {\n      const formdata = new FormData();\n      if (values.name !== '' && values?.phone?.length === 10 && folderName !== '') {\n        setSpinner(true);\n        for (let i = 0; i < heroFiles.length; i += 1) {\n          zip.file(heroFiles[i].name, heroFiles[i]);\n        }\n\n        const progressElements = document?.querySelector('.zip-progress-text');\n        zip\n          .generateAsync({ type: 'blob', compression: 'DEFLATE' }, ({ currentFile, percent }) => {\n            if (currentFile) {\n              progressElements.innerHTML = `Zipping files: ${percent.toFixed(1)}%`;\n            }\n          })\n          .then(async (content) => {\n            progressElements.innerHTML = ``;\n            formdata.append('file', content);\n            const responseURL = await uploadPatientsFileServices(folderName);\n            const data = await responseURL.data;\n\n            const uploadURL = data?.data.uploadURL;\n            const fileURL = data?.data?.filePath;\n            const patientUuid = data?.data?.patient_uuid;\n\n            setProgressUploadShow(true);\n            const awsResponse = await axios.put(uploadURL, formdata, {\n              headers: {\n                'Content-Type': 'multipart/form-data'\n              },\n              onUploadProgress: (progressEvent) => {\n                const percentCompleted = Math.round(\n                  (progressEvent.loaded * 100) / progressEvent.total\n                );\n                setProgressUpload(percentCompleted);\n              }\n            });\n            setProgressUploadShow(false);\n            if (awsResponse.status === 200 || awsResponse.status === 201) {\n              setSpinner(false);\n              console.log(file, volume, src);\n              const body = {\n                name: values.name,\n                address_line_1: values.address1,\n                address_line_2: values.address2.length > 0 ? values.address2 : ' ',\n                landmark: values.landmark,\n                pincode_id: values.pincodeId === '' ? null : values.pincodeId,\n                attachment: fileURL,\n                patient_uuid: patientUuid,\n                is_clinic_address: ship2Clinic\n              };\n              if (values.phone > 0) {\n                body.mobile = values.phone;\n              }\n              const response = await addPatientsServices(body);\n\n              if (response.status === 201) {\n                swal('Patient Added', '', 'success');\n                setValues({\n                  state: '',\n                  city: '',\n                  pincode: '',\n                  address1: '',\n                  address2: '',\n                  landmark: '',\n                  name: '',\n                  phone: ''\n                });\n                navigate('/dashboard/patients');\n              } else {\n                setSpinner(false);\n                swal('Error', 'Error occurred while adding patient', 'error');\n              }\n            } else {\n              setSpinner(false);\n              swal('Error', 'Error occurred while uploading file\\nPlease try again', 'error');\n            }\n          })\n          .catch((err) => {\n            setSpinner(false);\n            console.error('something went wrong ', err);\n          });\n      } else {\n        setErrors({\n          ...errors,\n          phone: values?.phone?.length !== 10,\n          name: values.name.length < 1\n        });\n        setFilesError(folderName === '');\n      }\n    } catch (err) {\n      console.log(err);\n    }\n  };\n  const openFileSeletor = () => {\n    document.getElementById('file').click();\n  };\n  const fetchPincodes = async (e) => {\n    if (e.target.value?.length === 3) {\n      if (e.target.value?.length === 3) {\n        setPincodes([]);\n        const resp = await getAllPincodesServices(e);\n        const pincodeData = await resp.data;\n        pincodeData.data.forEach((pincode) => {\n          setPincodes((currentArray) => [...currentArray, pincode.toString()]);\n        });\n      }\n    }\n  };\n\n  const [ship2Clinic, setShip2Clinic] = useState(false);\n\n  React.useEffect(() => {\n    if (files.length > 0) setIdx(files[0].src);\n  }, [files]);\n\n  const handleClose = () => setOpen(false);\n  return (\n    <Page title=\"Add Patient | Quiteclear\">\n      <Container maxWidth=\"xl\">\n        <Box sx={{ pb: 5 }}>\n          <Typography variant=\"h4\">Create a patient</Typography>\n        </Box>\n        <Modal\n          open={open}\n          onClose={handleClose}\n          aria-labelledby=\"modal-modal-title\"\n          aria-describedby=\"modal-modal-description\"\n        >\n          <Box sx={modalStyle}>\n            <EditAddressModal address={indexOfAddress} index={id} handleClose={handleClose} />\n          </Box>\n        </Modal>\n        <Grid container spacing={3}>\n          <Grid item xs={12} md={6} lg={6}>\n            <Card\n              style={{\n                padding: '15px',\n                paddingTop: '20px',\n                paddingBottom: '20px',\n                height: '100%'\n              }}\n            >\n              <div className=\"client_dashboard_patient_details\">\n                <Box>\n                  <Typography\n                    id=\"modal-modal-title\"\n                    variant=\"h4\"\n                    style={{ textAlign: 'center' }}\n                    component=\"h2\"\n                  >\n                    Patient Details\n                  </Typography>\n                  <TextField\n                    id=\"outlined-adornment-name-registration\"\n                    type=\"text\"\n                    style={{ width: '100%', marginTop: '15px' }}\n                    value={values.name}\n                    onChange={(e) => handleChange('name', e.target.value)}\n                    label=\"Name\"\n                    color=\"primary\"\n                    autoComplete=\"off\"\n                    error={errors.name}\n                    helperText={errors.name ? 'Name field is required.' : null}\n                  />\n                  <TextField\n                    id=\"outlined-adornment-name-registration\"\n                    type=\"number\"\n                    style={{ width: '100%', marginTop: '15px' }}\n                    value={values.phone !== '0' ? values.phone : ''}\n                    onChange={(e) => handleChange('phone', e.target.value)}\n                    label=\"Mobile Number\"\n                    color=\"primary\"\n                    autoComplete=\"off\"\n                    error={errors.phone}\n                    onInput={(e) => {\n                      e.target.value =\n                        e.target.value === '0'\n                          ? ''\n                          : Number(e.target.value).toString().slice(0, 10);\n                    }}\n                    helperText={errors.phone ? errorMsg.phone : null}\n                  />\n                  <TextField\n                    id=\"outlined-adornment-name-registration\"\n                    type=\"text\"\n                    style={{ width: '100%', marginTop: '15px' }}\n                    value={values.address1}\n                    onChange={(e) => handleChange('address1', e.target.value)}\n                    label=\"Address 1\"\n                    color=\"primary\"\n                    autoComplete=\"off\"\n                    error={errors.address1}\n                    helperText={errors.address1 ? 'Address 1 is required.' : null}\n                    inputProps={{\n                      maxLength: 100\n                    }}\n                    multiline=\"true\"\n                  />\n                  <TextField\n                    id=\"outlined-adornment-name-registration\"\n                    type=\"text\"\n                    style={{ width: '100%', marginTop: '15px' }}\n                    value={values.address2}\n                    onChange={(e) => handleChange('address2', e.target.value)}\n                    label=\"Address 2\"\n                    color=\"primary\"\n                    autoComplete=\"off\"\n                    error={errors.address2}\n                    helperText={errors.address2 ? 'Address 2 is required.' : null}\n                    inputProps={{\n                      maxLength: 100\n                    }}\n                    multiline=\"true\"\n                  />\n                  <TextField\n                    id=\"outlined-adornment-name-registration\"\n                    type=\"text\"\n                    style={{ width: '100%', marginTop: '15px' }}\n                    value={values.landmark}\n                    onChange={(e) => handleChange('landmark', e.target.value)}\n                    label=\"Landmark\"\n                    color=\"primary\"\n                    autoComplete=\"off\"\n                    error={errors.landmark}\n                    helperText={errors.landmark ? 'Landmark is required.' : null}\n                    inputProps={{\n                      maxLength: 100\n                    }}\n                    multiline=\"true\"\n                  />\n                  <div\n                    style={{\n                      display: 'flex',\n                      flexWrap: 'wrap',\n                      flexDirection: 'row-reverse',\n                      justifyContent: 'space-between',\n                      marginTop: '15px'\n                    }}\n                  >\n                    <TextField\n                      id=\"outlined-adornment-name-registration\"\n                      type=\"text\"\n                      value={values.state}\n                      label=\"Choose State\"\n                      disabled=\"true\"\n                      style={{ width: '32%', marginTop: '5px' }}\n                      onChange={(e) => handleChange('state', e.target.value)}\n                    />\n                    <TextField\n                      id=\"outlined-adornment-name-registration\"\n                      type=\"text\"\n                      value={values.city}\n                      style={{ width: '32%', marginTop: '5px', color: errors.city ? 'red' : null }}\n                      label=\"Choose City\"\n                      disabled=\"true\"\n                      onChange={(e) => handleChange('city', e.target.value)}\n                    />\n                    <Autocomplete\n                      style={{ width: '32%', marginTop: '5px' }}\n                      id=\"combo-box-demo\"\n                      noOptionsText=\"No results found.\"\n                      open={isOpen2}\n                      onKeyPress={() => setIsOpen2(true)}\n                      onKeyDown={() => setIsOpen2(true)}\n                      onClose={() => setIsOpen2(false)}\n                      options={pincodes}\n                      value={values.pincode}\n                      onChange={(e, v) => handleChange('pincode', v)}\n                      renderInput={(params) => (\n                        <TextField\n                          {...params}\n                          color=\"primary\"\n                          label=\"Choose Pincode\"\n                          onChange={fetchPincodes}\n                          error={errors.pincode}\n                          helperText={errors.pincode ? 'Pincode is required.' : null}\n                        />\n                      )}\n                    />\n                    <div style={{ width: '100%', textAlign: 'left', marginTop: '15px' }}>\n                      <FormControlLabel\n                        control={\n                          <Checkbox\n                            checked={ship2Clinic}\n                            onChange={() => {\n                              setShip2Clinic(!ship2Clinic);\n                            }}\n                          />\n                        }\n                        label=\"Ship to Clinic/Office\"\n                      />\n                    </div>\n                  </div>\n                  <div style={{ display: 'flex', justifyContent: 'center', marginTop: '25px' }}>\n                    {spinner ? (\n                      <CircularProgress />\n                    ) : (\n                      <Button\n                        variant=\"contained\"\n                        style={{ marginTop: '15px', fontSize: '16px' }}\n                        onClick={addPatientHandler}\n                      >\n                        Add Patient\n                      </Button>\n                    )}\n                  </div>\n                </Box>\n              </div>\n            </Card>\n          </Grid>\n          <Grid item xs={12} md={6} lg={6} style={{ height: '100%' }}>\n            <Card\n              style={{\n                paddingBottom: '15px',\n                paddingTop: '15px',\n                height: '100%'\n              }}\n            >\n              <div className=\"client_dashboard_patient_details\">\n                <h2>Upload Files</h2>\n                <div\n                  className=\"order3dView_orderNow\"\n                  style={{ display: 'flex', justifyContent: 'center' }}\n                >\n                  {files.length === 0 ? (\n                    <div\n                      style={{\n                        border: '1px dashed #ccc',\n                        minWidth: '90%'\n                      }}\n                    >\n                      <img\n                        src=\"/static/upload.png\"\n                        alt=\"upload\"\n                        style={{ width: '50%', margin: 'auto', marginTop: '10%' }}\n                      />\n                    </div>\n                  ) : (\n                    <Carousel\n                      showIndicators={false}\n                      showStatus={false}\n                      width={stlWidth > '300px' ? '300px' : stlWidth}\n                    >\n                      {files\n                        .filter((obj) => obj.src === idx)\n                        .map((file) =>\n                          obj ? (\n                            <OBJModel\n                              key={file.src}\n                              src={file.src}\n                              width={stlWidth}\n                              height={300}\n                              texPath=\"\"\n                            />\n                          ) : (\n                            <StlViewer\n                              key={file.src}\n                              style={style}\n                              orbitControls\n                              shadows\n                              url={file.src}\n                            />\n                          )\n                        )}\n                    </Carousel>\n                  )}\n                </div>\n                <div style={{ width: '90%', margin: 'auto', marginBottom: '20px' }}>\n                  {files.map((file, index) => (\n                    <Tooltip key={file.src} title={file.title}>\n                      <IconButton\n                        type=\"button\"\n                        style={{\n                          backgroundColor: file.src === idx ? '#d9c300' : '#f5eeb3',\n                          border: '1px solid #d9c300',\n                          height: '20px',\n                          width: '20px',\n                          outline: 'none',\n                          margin: '1px'\n                        }}\n                        key={file}\n                        // title={file.title}\n                        onClick={() => setIdx(file.src)}\n                      >\n                        <Typography style={{ fontSize: '8px', color: '#000' }} component=\"p\">\n                          {index + 1}\n                        </Typography>\n                      </IconButton>\n                    </Tooltip>\n                  ))}\n                </div>\n              </div>\n              <div className=\"client_dashboard_patient_details\">\n                <input\n                  type=\"file\"\n                  placeholder=\"files\"\n                  name=\"files[]\"\n                  accept=\".stl\"\n                  directory=\"\"\n                  id=\"file\"\n                  style={{ display: 'none' }}\n                  webkitdirectory=\"\"\n                  onChange={(e) => stlfileHandler(e)}\n                  multiple\n                />\n                <TextField\n                  id=\"outlined-adornment-name-registration\"\n                  type=\"text\"\n                  style={{ width: '80%', marginBottom: '20px' }}\n                  value={folderName}\n                  // onChange={(e) => handleChange(e, 'instructions')}\n                  label=\"File Name\"\n                  color=\"primary\"\n                  error={filesError}\n                  helperText={filesError ? 'Please upload a file.' : null}\n                  disabled\n                  autoComplete=\"off\"\n                />\n                <div className=\"orderFormInp\" style={{ marginTop: '0%', paddingBottom: '20px' }}>\n                  {progressUploadShow && <UploadLoader value={progressUpload} />}\n                  {progressUploadShow && (\n                    <p style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}>\n                      Uploading files...\n                    </p>\n                  )}\n                  {!progressUploadShow &&\n                    (spinner ? (\n                      <div style={{ width: '100%', maxWidth: '250px', margin: 'auto' }}>\n                        <LinearProgress />\n                      </div>\n                    ) : (\n                      <Button variant=\"contained\" onClick={openFileSeletor}>\n                        <CloudUploadOutlinedIcon style={{ marginRight: '5px' }} /> Upload Files\n                      </Button>\n                    ))}\n                  <div className=\"zip-progress\">\n                    <p\n                      className=\"zip-progress-text\"\n                      style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}\n                    />\n                  </div>\n                </div>\n                <p style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}>\n                  Supported files : STL,OBJ\n                </p>\n              </div>\n            </Card>\n          </Grid>\n        </Grid>\n      </Container>\n    </Page>\n  );\n}\n","import { Icon } from '@iconify/react';\nimport { useRef, useState } from 'react';\nimport editFill from '@iconify/icons-eva/edit-fill';\nimport { Link as RouterLink } from 'react-router-dom';\nimport trash2Outline from '@iconify/icons-eva/trash-2-outline';\nimport moreVerticalFill from '@iconify/icons-eva/more-vertical-fill';\n// material\nimport CircularProgress from '@mui/material/CircularProgress';\nimport ListItemText from '@mui/material/ListItemText';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport IconButton from '@mui/material/IconButton';\nimport MenuItem from '@mui/material/MenuItem';\nimport Menu from '@mui/material/Menu';\n\nimport swal from 'sweetalert';\nimport instance from '../AxiosInstance';\nimport { headers } from '../utils/headers';\n\n// ----------------------------------------------------------------------\n\nexport default function AddressMoreMenu(props) {\n  const ref = useRef(null);\n  const [isOpen, setIsOpen] = useState(false);\n  const [spinner, setSpinner] = useState(false);\n  const deleteHandler = async () => {\n    swal({\n      title: 'Are you sure?',\n      text: 'Once deleted, you will not be able to recover this address !',\n      icon: 'warning',\n      customClass: 'Custom_Cancel',\n      buttons: true,\n      dangerMode: true\n    }).then(async (willDelete) => {\n      if (willDelete) {\n        await instance(`${process.env.REACT_APP_THIRDINREV_API}/address/${props.id}`, {\n          method: 'DELETE',\n          headers,\n          data: JSON.stringify({\n            id: Number(window.localStorage.getItem('userId')),\n            addressable_type: 'user'\n          })\n        });\n\n        setIsOpen(false);\n        setSpinner(false);\n        props.getAddressForced();\n      }\n    });\n  };\n  const editHandler = () => {\n    setIsOpen(false);\n    props.editHandler(props.address, props.id);\n  };\n  return (\n    <>\n      <IconButton ref={ref} onClick={() => setIsOpen(true)}>\n        <Icon icon={moreVerticalFill} width={20} height={20} />\n      </IconButton>\n\n      <Menu\n        open={isOpen}\n        anchorEl={ref.current}\n        onClose={() => setIsOpen(false)}\n        PaperProps={{\n          sx: { width: 200, maxWidth: '100%' }\n        }}\n        anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n        transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n      >\n        {props.delete !== 'false' && (\n          <MenuItem sx={{ color: 'text.secondary' }} onClick={deleteHandler}>\n            <ListItemIcon>\n              {spinner ? (\n                <CircularProgress />\n              ) : (\n                <Icon icon={trash2Outline} width={24} height={24} />\n              )}\n            </ListItemIcon>\n            <ListItemText primary=\"Delete\" primaryTypographyProps={{ variant: 'body2' }} />\n          </MenuItem>\n        )}\n\n        <MenuItem\n          component={RouterLink}\n          to=\"#\"\n          sx={{ color: 'text.secondary' }}\n          onClick={editHandler}\n        >\n          <ListItemIcon>\n            <Icon icon={editFill} width={24} height={24} />\n          </ListItemIcon>\n          <ListItemText primary=\"Edit\" primaryTypographyProps={{ variant: 'body2' }} />\n        </MenuItem>\n      </Menu>\n    </>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nimport swal from 'sweetalert';\nimport instance from '../AxiosInstance';\nimport { headers } from '../utils/headers';\n\nexport const AddAddressModal = (props) => {\n  const [values, setValues] = useState({\n    address1: '',\n    address2: '',\n    landmark: '',\n    state: '',\n    pincode: '',\n    city: '',\n    pincodeId: ''\n  });\n  const [errors, setErrors] = useState({\n    address1: false,\n    address2: false,\n    landmark: false,\n    pincode: false\n  });\n  const [pincodes, setPincodes] = useState([]);\n  const [spinner, setSpinner] = useState(false);\n  useEffect(() => {\n    const fetcher = async () => {\n      const responseForPincode = await instance(\n        `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${values.pincode}`,\n        {\n          method: 'GET'\n        }\n      );\n      const data = await responseForPincode.data;\n      setValues({\n        ...values,\n        city: data?.data?.city?.name,\n        state: data?.data?.city?.state?.name,\n        pincodeId: data?.data?.id\n      });\n    };\n\n    fetcher();\n    // eslint-disable-next-line\n  }, []);\n  const [isOpen2, setIsOpen2] = useState(false);\n\n  const addPatientHandler = async () => {\n    if (\n      values.pincode !== '' &&\n      values.city !== '' &&\n      values.state !== '' &&\n      values.address1.length > 0 &&\n      values.landmark.length > 0\n    ) {\n      setSpinner(true);\n      const addAddressResp = await instance(`${process.env.REACT_APP_THIRDINREV_API}/address`, {\n        method: 'POST',\n        headers,\n        data: JSON.stringify({\n          address_line_1: values.address1,\n          address_line_2: values.address2.length > 0 ? values.address2 : ' ',\n          landmark: values.landmark,\n          pincode_id: Number(values.pincodeId),\n          addressable_type: props.user ? 'user' : 'patient',\n          addressable_id: props.pid\n        })\n      });\n\n      setSpinner(false);\n      if (addAddressResp.status === 201) {\n        swal('Updated Successfully.', '', 'success');\n        setValues({\n          state: '',\n          city: '',\n          pincode: '',\n          address1: '',\n          address2: '',\n          landmark: ''\n        });\n        props.handleClose();\n        props.getAddressForced();\n      } else {\n        swal('Something went wrong.', '', 'error');\n      }\n    } else {\n      setErrors({\n        ...errors,\n        address1: values.address1.length < 1,\n        landmark: values.landmark.length < 1,\n        city: values.city === '',\n        pincode: values.pincode === '',\n        state: values.state === ''\n      });\n    }\n  };\n\n  const handleChange = async (prop, v) => {\n    if (prop === 'pincode') {\n      setValues({ ...values, pincode: v });\n      if (v?.length === 6) {\n        setSpinner(true);\n        const responseForPincode = await instance(\n          `${process.env.REACT_APP_THIRDINREV_API}/pincodes/${v}`,\n          {\n            method: 'GET'\n          }\n        );\n        const data = await responseForPincode.data;\n        setValues({\n          ...values,\n          city: data.data.city.name,\n          state: data.data.city.state.name,\n          pincode: v,\n          pincodeId: data.data.id\n        });\n        setSpinner(false);\n      }\n    } else setValues({ ...values, [prop]: v });\n\n    if (prop === 'address1')\n      setErrors({\n        ...errors,\n        address1: v.length < 1\n      });\n    if (prop === 'landmark')\n      setErrors({\n        ...errors,\n        landmark: v.length < 1\n      });\n    if (prop === 'city')\n      setErrors({\n        ...errors,\n        city: v === ''\n      });\n    if (prop === 'pincode')\n      setErrors({\n        ...errors,\n        pincode: v === ''\n      });\n    if (prop === 'state')\n      setErrors({\n        ...errors,\n        state: v === ''\n      });\n  };\n  const fetchPincodes = async (e) => {\n    if (e.target.value?.length === 3) {\n      if (e.target.value?.length === 3) {\n        setPincodes([]);\n        const resp = await instance(\n          `${process.env.REACT_APP_THIRDINREV_API}/pincodes?pincode=${e.target?.value}`,\n          {\n            method: 'GET'\n          }\n        );\n\n        const pincodeData = await resp.data;\n        pincodeData.data.forEach((pincode) => {\n          setPincodes((currentArray) => [...currentArray, pincode.toString()]);\n        });\n      }\n    }\n  };\n  return (\n    <>\n      <h1 style={{ textAlign: 'center' }}>Add Address</h1>\n      <Box style={{ padding: '15px' }}>\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.address1}\n          onChange={(e) => handleChange('address1', e.target.value)}\n          label=\"Address 1\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.address1}\n          helperText={errors.address1 ? 'Address 1 is required.' : null}\n          inputProps={{\n            maxLength: 100\n          }}\n        />\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.address2}\n          onChange={(e) => handleChange('address2', e.target.value)}\n          label=\"Address 2\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.address2}\n          helperText={errors.address2 ? 'Address 2 is required.' : null}\n          inputProps={{\n            maxLength: 100\n          }}\n        />\n        <TextField\n          id=\"outlined-adornment-name-registration\"\n          type=\"text\"\n          style={{ width: '100%', marginTop: '15px' }}\n          value={values.landmark}\n          onChange={(e) => handleChange('landmark', e.target.value)}\n          label=\"Landmark\"\n          color=\"primary\"\n          autoComplete=\"off\"\n          error={errors.landmark}\n          helperText={errors.landmark ? 'Landmark is required.' : null}\n          inputProps={{\n            maxLength: 100\n          }}\n        />\n        <div\n          style={{\n            display: 'flex',\n            flexWrap: 'wrap',\n            flexDirection: 'row-reverse',\n            justifyContent: 'space-between',\n            marginTop: '15px'\n          }}\n        >\n          <TextField\n            id=\"outlined-adornment-name-registration\"\n            type=\"text\"\n            value={values.state}\n            label=\"Choose State\"\n            disabled=\"true\"\n            style={{ width: '32%', marginTop: '5px', color: errors.state ? 'red' : null }}\n            onChange={(e) => handleChange('state', e.target.value)}\n          />\n          <TextField\n            id=\"outlined-adornment-name-registration\"\n            type=\"text\"\n            value={values.city}\n            style={{ width: '32%', marginTop: '5px', color: errors.city ? 'red' : null }}\n            label=\"Choose City\"\n            disabled=\"true\"\n            onChange={(e) => handleChange('city', e.target.value)}\n          />\n\n          <Autocomplete\n            style={{ width: '32%', marginTop: '5px' }}\n            id=\"combo-box-demo\"\n            noOptionsText=\"No results found.\"\n            open={isOpen2}\n            onKeyPress={() => setIsOpen2(true)}\n            onKeyDown={() => setIsOpen2(true)}\n            onClose={() => setIsOpen2(false)}\n            options={pincodes}\n            value={values.pincode}\n            onChange={(e, v) => handleChange('pincode', v)}\n            renderInput={(params) => (\n              <TextField\n                {...params}\n                color=\"primary\"\n                label=\"Choose Pincode\"\n                onChange={fetchPincodes}\n                error={errors.pincode}\n                helperText={errors.pincode ? 'Pincode is required.' : null}\n              />\n            )}\n          />\n        </div>\n        <div style={{ display: 'flex', justifyContent: 'center', marginTop: '25px' }}>\n          {spinner ? (\n            <CircularProgress />\n          ) : (\n            <Button variant=\"contained\" style={{ marginTop: '15px' }} onClick={addPatientHandler}>\n              Save changes\n            </Button>\n          )}\n        </div>\n      </Box>\n    </>\n  );\n};\n","import React, { useState, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport Grid from '@mui/material/Grid';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport Modal from '@mui/material/Modal';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport axios from 'axios';\nimport TextField from '@mui/material/TextField';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport Paper from '@mui/material/Paper';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport '../styles/pages/ClientsDashboard.css';\nimport 'react-responsive-carousel/lib/styles/carousel.min.css';\nimport { Carousel } from 'react-responsive-carousel';\nimport CloudUploadOutlinedIcon from '@mui/icons-material/CloudUploadOutlined';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport JSZip from 'jszip';\nimport { StlViewer } from 'react-stl-viewer';\nimport { OBJModel } from 'react-3d-viewer';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport swal from 'sweetalert';\nimport AddressMoreMenu from '../components/AddressMoreMenu';\nimport Page from '../components/Page';\nimport { EditAddressModal } from '../components/EditAddressModal';\nimport { AddAddressModal } from '../components/AddAddressModal';\nimport {\n  getPatientsAttachmentByIdServices,\n  getPatientsDetailsByIdServices,\n  getPatientsAddressByIdServices,\n  editPatientsServices,\n  uploadPatientsFileByIdServices,\n  getPincodesDetailsServices\n} from '../services/patients.services';\nimport { UploadLoader } from '../components/UploadLoader';\n\nexport default function EditPatient() {\n  const zip = new JSZip();\n  const [errorMsg, setErrorMsg] = useState({\n    phone: 'Mobile Number field is required.'\n  });\n  const { pid } = useParams();\n  const navigate = useNavigate();\n  const [files, setFiles] = useState([]);\n  const [file, setFile] = useState('');\n  const [idx, setIdx] = useState(0);\n  const [progressUpload, setProgressUpload] = useState(0);\n  const [progressUploadShow, setProgressUploadShow] = useState(false);\n  const [obj, setObj] = useState(false);\n  const [orderErrors, setOrderErrors] = useState({\n    patientId: false,\n    addressId: false,\n    trim: false,\n    files: false\n  });\n  const [openAddAddressModal, setAddAddressModal] = useState(false);\n  const [spinnerLoading, setSpinnerLoading] = useState(false);\n  const [filesError, setFilesError] = useState(false);\n  const [attachmentsList, setAttachmentsList] = useState([]);\n  const [addressList, setAddressList] = useState([]);\n  const [ship2Clinic, setShip2Clinic] = useState(false);\n  useEffect(() => {\n    const getAttachments = async () => {\n      const response = await getPatientsAttachmentByIdServices(pid);\n      const data = await response.data;\n      if (response.status === 200) setAttachmentsList(data?.data);\n    };\n    getAttachments();\n  }, [pid]);\n\n  useEffect(() => {\n    const getPatient = async () => {\n      setSpinnerLoading(true);\n      const addPatient = await getPatientsDetailsByIdServices(pid);\n      setSpinnerLoading(false);\n      const addressData = await addPatient.data;\n      if (addPatient.status === 404 || addPatient.status === 400) {\n        navigate('/not-found', { state: { title: 'Sorry, Patient not found!' } });\n      }\n      setValues({\n        address1: addressData?.data?.address?.address_line_1,\n        address2: addressData?.data?.address?.address_line_2,\n        landmark: addressData?.data?.address?.landmark,\n        state: addressData?.data?.address?.state,\n        pincode: addressData?.data?.address?.pincode,\n        city: addressData?.data?.address?.city,\n        pincodeId: addressData?.data?.address?.pincode_id,\n        name: addressData?.data?.name,\n        phone: addressData?.data?.mobile,\n        patientUuid: addressData?.data?.patient_uuid\n      });\n      setShip2Clinic(addressData?.data?.is_clinic_address);\n    };\n    getPatient();\n\n    const getPatientAddress = async () => {\n      const addPatientAddress = await getPatientsAddressByIdServices(pid);\n      const addressData = await addPatientAddress.data;\n      setAddressList(addressData.data);\n    };\n    getPatientAddress();\n    // eslint-disable-next-line\n  }, [pid]);\n\n  const addAddressHandler = async () => {\n    setAddAddressModal(true);\n  };\n\n  const [volume] = useState(0);\n  let stlWidth = window.innerWidth * 0.358 >= '300px' ? '300px' : window.innerWidth * 0.358;\n  if (window.innerWidth <= 504) {\n    stlWidth = window.innerWidth * 0.8;\n  }\n  const [src, setSrc] = useState('');\n  const modalStyle = {\n    position: 'absolute',\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    width: '90%',\n    maxWidth: 600,\n    overflowY: 'scroll',\n    bgcolor: 'background.paper',\n    maxHeight: '100%',\n    borderRadius: '13px',\n    marginTop: '20px',\n    p: 4,\n    padding: '10px'\n  };\n  const [folderName, setFolderName] = useState('');\n  const [values, setValues] = useState({\n    address1: '',\n    address2: '',\n    landmark: '',\n    state: '',\n    pincode: '',\n    city: '',\n    pincodeId: '',\n    name: '',\n    phone: '',\n    patientUuid: ''\n  });\n  const [heroFiles, setHeroFiles] = useState([]);\n  const [spinner, setSpinner] = useState(false);\n  const [indexOfAddress, setIndexOfAddress] = useState();\n  const [id, setId] = useState();\n  const [errors, setErrors] = useState({\n    address1: false,\n    address2: false,\n    landmark: false,\n    pincode: false\n  });\n\n  const fetchEditPatient = async () => {\n    if (values.name !== '' && values?.phone?.length === 10) {\n      const body = {\n        name: values.name,\n        mobile: values.phone,\n        patient_uuid: values.patientUuid,\n        is_clinic_address: ship2Clinic\n      };\n      const addPatient = await editPatientsServices(pid, body);\n      setSpinner(false);\n      const data = await addPatient.data;\n      if (addPatient.status === 200) {\n        swal('Updated Successfully', '', 'success');\n        setValues({\n          state: '',\n          city: '',\n          pincode: '',\n          address1: '',\n          address2: '',\n          landmark: '',\n          name: '',\n          phone: ''\n        });\n        navigate('/dashboard/patients');\n      } else {\n        swal('Error', data?.message, 'error');\n      }\n    }\n  };\n\n  const addPatientHandler = async () => {\n    if (values.name !== '' && values?.phone?.length === 10) {\n      setSpinner(true);\n      if (heroFiles.length > 0 && folderName !== '') {\n        for (let i = 0; i < heroFiles.length; i += 1) {\n          zip.file(heroFiles[i].name, heroFiles[i]);\n        }\n        const formdata = new FormData();\n        const progressElements = document?.querySelector('.zip-progress-text');\n        zip\n          .generateAsync({ type: 'blob', compression: 'DEFLATE' }, ({ currentFile, percent }) => {\n            if (currentFile) {\n              progressElements.innerHTML = `Zipping files: ${percent.toFixed(1)}%`;\n            }\n          })\n          .then(async (content) => {\n            progressElements.innerHTML = ``;\n            formdata.append('file', content);\n\n            const responseURL = await uploadPatientsFileByIdServices(folderName, values);\n\n            const data = await responseURL.data;\n\n            const uploadURL = data?.data.uploadURL;\n            const fileURL = data?.data?.filePath;\n\n            setProgressUploadShow(true);\n            const awsResponse = await axios.put(uploadURL, formdata, {\n              headers: {\n                'Content-Type': 'multipart/form-data'\n              },\n              onUploadProgress: (progressEvent) => {\n                const percentCompleted = Math.round(\n                  (progressEvent.loaded * 100) / progressEvent.total\n                );\n                setProgressUpload(percentCompleted);\n              }\n            });\n            setProgressUploadShow(false);\n            if (awsResponse.status === 200 || awsResponse.status === 201) {\n              setSpinner(false);\n              console.log(file, volume, src);\n              const body = {\n                name: values.name,\n                mobile: '',\n                attachment: fileURL,\n                patient_uuid: values.patientUuid\n              };\n              if (values.phone > 0) body.mobile = values.phone;\n              const response = await editPatientsServices(pid, body);\n\n              if (response.status === 200) {\n                swal('Patient Updated', '', 'success');\n                setValues({\n                  state: '',\n                  city: '',\n                  pincode: '',\n                  address1: '',\n                  address2: '',\n                  landmark: '',\n                  name: '',\n                  phone: ''\n                });\n                navigate('/dashboard/patients');\n              } else {\n                setSpinner(false);\n                swal('Error', 'Error occurred while adding patient', 'error');\n              }\n            } else {\n              setSpinner(false);\n              swal('Error', 'Error occurred while uploading file\\nPlease try again', 'error');\n            }\n          })\n          .catch((err) => {\n            setSpinner(false);\n            console.error('something went wrong', err);\n          });\n      } else {\n        fetchEditPatient();\n      }\n    } else {\n      setErrors({\n        ...errors,\n        phone: values.phone.length !== 10,\n        name: values.name.length < 1\n      });\n    }\n  };\n\n  const style = {\n    top: 0,\n    left: 0,\n    width: stlWidth,\n    height: '300px',\n    maxWidth: '576px'\n  };\n  const stlfileHandler = (e) => {\n    setFilesError(false);\n    if (!e.target.files[0]) return;\n    setFolderName(e.target.files[0].webkitRelativePath.split('/')[0]);\n    setOrderErrors({\n      ...orderErrors,\n      trim: false\n    });\n    setFile(e.target?.files[0]);\n    setFiles([]);\n\n    for (let i = 0; i < e.target.files.length; i += 1) {\n      if (\n        e.target.files.item(i).name.split('.')[1] === 'obj' ||\n        e.target.files.item(i).name.split('.')[1] === 'OBJ'\n      ) {\n        setObj(true);\n      } else if (\n        e.target.files.item(i).name.split('.')[1] === 'STL' ||\n        e.target.files.item(i).name.split('.')[1] === 'stl'\n      ) {\n        setObj(false);\n      }\n      if (\n        e.target.files.item(i).name.split('.')[1] === 'obj' ||\n        e.target.files.item(i).name.split('.')[1] === 'OBJ' ||\n        e.target.files.item(i).name.split('.')[1] === 'STL' ||\n        e.target.files.item(i).name.split('.')[1] === 'stl'\n      ) {\n        setFiles((currentArray) => [\n          ...currentArray,\n          { title: e.target.files.item(i).name, src: URL.createObjectURL(e.target?.files.item(i)) }\n        ]);\n        setHeroFiles((currentArray) => [...currentArray, e.target?.files.item(i)]);\n      }\n    }\n\n    if (e.target.files.item(0)) setSrc(URL.createObjectURL(e.target.files.item(0)));\n  };\n\n  const handleChange = async (prop, v) => {\n    if (prop === 'pincode') {\n      setValues({ ...values, pincode: v });\n      if (v?.length === 6) {\n        const responseForPincode = await getPincodesDetailsServices(v);\n        const data = await responseForPincode.data;\n        setValues({\n          ...values,\n          city: data.data.city.name,\n          state: data.data.city.state.name,\n          pincode: v,\n          pincodeId: data.data.id\n        });\n      }\n    } else setValues({ ...values, [prop]: v });\n\n    if (prop === 'address1')\n      setErrors({\n        ...errors,\n        address1: v.length < 1\n      });\n    if (prop === 'phone') {\n      setErrors({\n        ...errors,\n        phone: v?.length !== 10 && v > 0\n      });\n      if (v?.length > 0 && v?.length < 10 && v > 0)\n        setErrorMsg({ ...errorMsg, phone: 'Invalid Mobile Number.' });\n    }\n    if (prop === 'name')\n      setErrors({\n        ...errors,\n        name: v?.length < 1\n      });\n\n    if (prop === 'landmark')\n      setErrors({\n        ...errors,\n        landmark: v.length < 1\n      });\n    if (prop === 'city')\n      setErrors({\n        ...errors,\n        city: v === ''\n      });\n    if (prop === 'pincode')\n      setErrors({\n        ...errors,\n        pincode: v === ''\n      });\n    if (prop === 'state')\n      setErrors({\n        ...errors,\n        state: v === ''\n      });\n  };\n  const openFileSeletor = () => {\n    document.getElementById('file').click();\n  };\n  const [open, setOpen] = useState(false);\n\n  const editHandler = (address, id) => {\n    setIndexOfAddress(address);\n    setId(id);\n    setOpen(true);\n  };\n\n  React.useEffect(() => {\n    if (files.length > 0) setIdx(files[0].src);\n  }, [files]);\n\n  const getAddressForPatients = async () => {\n    const getPatientAddress = async () => {\n      const addPatientAddress = await getPatientsAddressByIdServices(pid);\n      const addressData = await addPatientAddress.data;\n      setAddressList(addressData.data);\n    };\n    getPatientAddress();\n  };\n\n  const handleClose = () => setOpen(false);\n  return (\n    <Page title=\"Update Patient | Quiteclear\">\n      <Container maxWidth=\"xl\">\n        <Box sx={{ pb: 5 }}>\n          <Typography variant=\"h4\">Update patient</Typography>\n        </Box>\n        <Modal\n          open={open}\n          onClose={handleClose}\n          aria-labelledby=\"modal-modal-title\"\n          aria-describedby=\"modal-modal-description\"\n        >\n          <Box sx={modalStyle}>\n            <EditAddressModal\n              address={indexOfAddress}\n              getAddressForced={getAddressForPatients}\n              index={id}\n              handleClose={handleClose}\n            />\n          </Box>\n        </Modal>\n        <Modal\n          open={openAddAddressModal}\n          onClose={() => setAddAddressModal(false)}\n          aria-labelledby=\"modal-modal-title\"\n          aria-describedby=\"modal-modal-description\"\n        >\n          <Box sx={modalStyle}>\n            <AddAddressModal\n              address={indexOfAddress}\n              getAddressForced={getAddressForPatients}\n              index={id}\n              pid={pid}\n              handleClose={() => setAddAddressModal(false)}\n            />\n          </Box>\n        </Modal>\n        <Grid container spacing={3}>\n          <Grid item xs={12} md={6} lg={6}>\n            <Card style={{ padding: '15px', paddingTop: '20px', paddingBottom: '20px' }}>\n              <div className=\"client_dashboard_patient_details\">\n                <Box>\n                  <Typography\n                    id=\"modal-modal-title\"\n                    variant=\"h4\"\n                    style={{ textAlign: 'center' }}\n                    component=\"h2\"\n                  >\n                    Patient Details\n                  </Typography>\n                  {spinnerLoading ? (\n                    <CircularProgress />\n                  ) : (\n                    <>\n                      <TextField\n                        id=\"outlined-adornment-name-registration\"\n                        type=\"text\"\n                        style={{ width: '100%', marginTop: '15px' }}\n                        value={values.name}\n                        onChange={(e) => handleChange('name', e.target.value)}\n                        label=\"Name\"\n                        color=\"primary\"\n                        autoComplete=\"off\"\n                        error={errors.name}\n                        helperText={errors.name ? 'Name field is required.' : null}\n                      />\n                      <TextField\n                        id=\"outlined-adornment-name-registration\"\n                        type=\"number\"\n                        style={{ width: '100%', marginTop: '15px' }}\n                        value={values.phone !== '0' ? values.phone : ''}\n                        onChange={(e) => handleChange('phone', e.target.value)}\n                        label=\"Mobile Number\"\n                        color=\"primary\"\n                        autoComplete=\"off\"\n                        error={errors.phone}\n                        onInput={(e) => {\n                          e.target.value =\n                            e.target.value === '0'\n                              ? ''\n                              : Number(e.target.value).toString().slice(0, 10);\n                        }}\n                        helperText={errors.phone ? errorMsg.phone : null}\n                      />\n                      <div style={{ width: '100%', textAlign: 'left', marginTop: '15px' }}>\n                        <FormControlLabel\n                          control={\n                            <Checkbox\n                              checked={ship2Clinic}\n                              onChange={() => {\n                                setShip2Clinic(!ship2Clinic);\n                              }}\n                            />\n                          }\n                          label=\"Ship to Clinic/Office\"\n                        />\n                      </div>\n                    </>\n                  )}\n                </Box>\n              </div>\n            </Card>\n            <Grid item xs={12} md={12} lg={12}>\n              <div className=\"client_dashboard_patient_details\" style={{ marginTop: '20px' }}>\n                <Card style={{ padding: '15px', paddingTop: '20px', paddingBottom: '20px' }}>\n                  <h2>Your Addresses</h2>\n                  {addressList?.length === 0 ? spinner : null}\n                  <TableContainer\n                    component={Paper}\n                    style={{ marginTop: '10px', maxHeight: '376px', overflowY: 'scroll' }}\n                  >\n                    <Table sx={{ minWidth: 350 }} size=\"small\" aria-label=\"a dense table\">\n                      <TableBody>\n                        {addressList.map((add, index) => (\n                          <TableRow\n                            sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n                            key={index}\n                          >\n                            <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n                              {index + 1}. {add?.address_line_1}, {add?.address_line_2}{' '}\n                              {add?.address_line_2 !== ' ' ? ',' : ''}\n                              {add?.landmark}, {add?.state}, {add?.city}, {add?.pincode}\n                            </TableCell>\n                            <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n                              <AddressMoreMenu\n                                id={add.id}\n                                setOpen={setOpen}\n                                editHandler={editHandler}\n                                address={add}\n                                getAddressForced={getAddressForPatients}\n                              />\n                            </TableCell>\n                          </TableRow>\n                        ))}\n                      </TableBody>\n                    </Table>\n                  </TableContainer>\n                  <Button\n                    variant=\"contained\"\n                    style={{ marginTop: '15px', fontSize: '16px' }}\n                    onClick={addAddressHandler}\n                  >\n                    Add Address\n                  </Button>\n                </Card>\n              </div>\n            </Grid>\n          </Grid>\n\n          <Grid item xs={12} md={6} lg={6}>\n            <Grid item xs={12} md={6} lg={12} style={{ height: '100%' }}>\n              <Card\n                style={{\n                  paddingBottom: '15px',\n                  paddingTop: '15px'\n                }}\n              >\n                <div className=\"client_dashboard_patient_details\">\n                  <h2>Upload Files</h2>\n                  <div\n                    className=\"order3dView_orderNow\"\n                    style={{ display: 'flex', justifyContent: 'center' }}\n                  >\n                    {files.length === 0 ? (\n                      <div\n                        style={{\n                          border: '1px dashed #ccc',\n                          minWidth: '90%'\n                        }}\n                      >\n                        <img\n                          src=\"/static/upload.png\"\n                          alt=\"upload\"\n                          style={{ width: '50%', margin: 'auto', marginTop: '10%' }}\n                        />\n                        {/* <p>Upload your files</p> */}\n                      </div>\n                    ) : (\n                      <Carousel\n                        showIndicators={false}\n                        showStatus={false}\n                        width={stlWidth > '300px' ? '300px' : stlWidth}\n                      >\n                        {files\n                          .filter((obj) => obj.src === idx)\n                          .map((file) =>\n                            obj ? (\n                              <OBJModel\n                                key={file.src}\n                                src={file.src}\n                                width={stlWidth}\n                                height={300}\n                                texPath=\"\"\n                              />\n                            ) : (\n                              <StlViewer\n                                key={file.src}\n                                style={style}\n                                orbitControls\n                                shadows\n                                url={file.src}\n                              />\n                            )\n                          )}\n                      </Carousel>\n                    )}\n                  </div>\n                  <div style={{ width: '90%', margin: 'auto', marginBottom: '20px' }}>\n                    {files.map((file, index) => (\n                      <Tooltip key={file.src} title={file.title}>\n                        <IconButton\n                          type=\"button\"\n                          style={{\n                            backgroundColor: file.src === idx ? '#d9c300' : '#f5eeb3',\n                            border: '1px solid #d9c300',\n                            height: '20px',\n                            width: '20px',\n                            outline: 'none',\n                            margin: '1px'\n                          }}\n                          key={file}\n                          title={file.title}\n                          onClick={() => setIdx(file.src)}\n                        >\n                          <Typography style={{ fontSize: '8px', color: '#000' }} component=\"p\">\n                            {index + 1}\n                          </Typography>\n                        </IconButton>\n                      </Tooltip>\n                    ))}\n                  </div>\n                </div>\n                <div className=\"client_dashboard_patient_details\">\n                  <input\n                    type=\"file\"\n                    placeholder=\"files\"\n                    name=\"files[]\"\n                    accept=\".stl\"\n                    directory=\"\"\n                    id=\"file\"\n                    style={{ display: 'none' }}\n                    webkitdirectory=\"\"\n                    onChange={(e) => stlfileHandler(e)}\n                    multiple\n                  />\n                  <TextField\n                    id=\"outlined-adornment-name-registration\"\n                    type=\"text\"\n                    style={{ width: '80%', marginBottom: '20px' }}\n                    value={folderName}\n                    label=\"File Name\"\n                    color=\"primary\"\n                    error={filesError}\n                    helperText={filesError ? 'Please upload a file.' : null}\n                    disabled\n                    autoComplete=\"off\"\n                  />\n                  <div className=\"orderFormInp\" style={{ marginTop: '0%', paddingBottom: '20px' }}>\n                    {progressUploadShow && <UploadLoader value={progressUpload} />}\n                    {progressUploadShow && (\n                      <p style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}>\n                        Uploading files...\n                      </p>\n                    )}\n                    {!progressUploadShow &&\n                      (spinner ? (\n                        <div style={{ width: '100%', maxWidth: '250px', margin: 'auto' }}>\n                          <LinearProgress />\n                        </div>\n                      ) : (\n                        <Button variant=\"contained\" onClick={openFileSeletor}>\n                          <CloudUploadOutlinedIcon style={{ marginRight: '5px' }} /> Upload Files\n                        </Button>\n                      ))}\n                  </div>\n                  <div className=\"zip-progress\">\n                    <p\n                      className=\"zip-progress-text\"\n                      style={{\n                        fontWeight: '300',\n                        fontStyle: 'italic',\n                        color: '#ccc',\n                        marginBottom: '20px'\n                      }}\n                    />\n                  </div>\n                  <div>\n                    <p style={{ fontWeight: '600', marginBottom: '10px' }}>\n                      Previously uploaded files\n                    </p>\n\n                    {attachmentsList.map((item, index) => (\n                      <ListItem\n                        key={index}\n                        component=\"div\"\n                        style={{\n                          boxShadow: '0 0 5px #ccc',\n                          margin: 'auto',\n                          marginBottom: '10px',\n                          maxWidth: '80%'\n                        }}\n                        disablePadding\n                      >\n                        <ListItemButton>\n                          <div\n                            style={{\n                              display: 'flex',\n                              justifyContent: 'space-around',\n                              width: '100%',\n                              padding: '5px',\n                              wordBreak: 'break-all'\n                            }}\n                          >\n                            <p\n                              style={{\n                                width: '50%',\n                                wordWrap: 'break-word'\n                              }}\n                              key={item.attachment_url}\n                            >\n                              {\n                                item?.attachment_url?.split('/')[\n                                  item?.attachment_url?.split('/').length - 1\n                                ]\n                              }\n                            </p>\n                            <p style={{ textAlign: 'left', width: '50%' }}>{`Uploaded at: ${\n                              new Date(item.createdAt).toLocaleString().split(',')[0]\n                            } ${' '} ${new Date(item.createdAt).toLocaleTimeString('en-US', {\n                              timeZone: 'IST',\n                              hour12: true,\n                              hour: 'numeric',\n                              minute: 'numeric'\n                            })}`}</p>\n                          </div>\n                        </ListItemButton>\n                      </ListItem>\n                    ))}\n                  </div>\n                  <p style={{ fontWeight: '300', fontStyle: 'italic', color: '#ccc' }}>\n                    Supported files : STL,OBJ\n                  </p>\n                </div>\n              </Card>\n            </Grid>\n          </Grid>\n          <div\n            style={{\n              display: 'flex',\n              justifyContent: 'center',\n              marginTop: '20px',\n              marginBottom: '20px',\n              width: '100%'\n            }}\n          >\n            {spinner ? (\n              <CircularProgress />\n            ) : (\n              <Button\n                variant=\"contained\"\n                style={{ marginTop: '15px', fontSize: '16px' }}\n                onClick={addPatientHandler}\n              >\n                Update Patient\n              </Button>\n            )}\n          </div>\n        </Grid>\n      </Container>\n    </Page>\n  );\n}\n","import React, { useState, useEffect } from 'react';\nimport Grid from '@mui/material/Grid';\nimport Card from '@mui/material/Card';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Typography from '@mui/material/Typography';\nimport FormControl from '@mui/material/FormControl';\nimport Modal from '@mui/material/Modal';\nimport TextField from '@mui/material/TextField';\nimport InputLabel from '@mui/material/InputLabel';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport Box from '@mui/material/Box';\nimport swal from 'sweetalert';\nimport { Visibility, VisibilityOff } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TableContainer from '@mui/material/TableContainer';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableRow from '@mui/material/TableRow';\nimport TableCell from '@mui/material/TableCell';\nimport Paper from '@mui/material/Paper';\nimport { EditAddressModal } from '../components/EditAddressModal';\nimport '../styles/pages/ClientsDashboard.css';\nimport 'react-responsive-carousel/lib/styles/carousel.min.css';\nimport Page from '../components/Page';\nimport AddressMoreMenu from '../components/AddressMoreMenu';\nimport { AddAddressModal } from '../components/AddAddressModal';\nimport {\n  changePasswordServices,\n  getDoctorAddressById,\n  getDoctorDetailsServices\n} from '../services/profile.services';\n\nexport default function MyProfile() {\n  const userId = window.localStorage.getItem('userId');\n  const [userData, setUserdata] = useState();\n  const [addressList, setAddressList] = useState([]);\n  const handleClickShowPassword1 = () => {\n    setValues({\n      ...values,\n      showPassword1: !values.showPassword1\n    });\n  };\n  const handleClickShowPassword2 = () => {\n    setValues({\n      ...values,\n      showPassword2: !values.showPassword2\n    });\n  };\n  const handleClickShowPassword3 = () => {\n    setValues({\n      ...values,\n      showPassword3: !values.showPassword3\n    });\n  };\n  const handleMouseDownPassword = (event) => {\n    event.preventDefault();\n  };\n\n  const [loading, setLoading] = useState({\n    forPasswordVerification: false,\n    forPasswordUpdate: false\n  });\n\n  const [values, setValues] = useState({\n    cPassword: '',\n    newPassword: '',\n    confirmPassword: '',\n    showPassword1: false,\n    showPassword2: false,\n    showPassword3: false\n  });\n\n  const [spinner, setSpinner] = useState(false);\n  const handleChangePass = (prop) => (event) => {\n    setValues({ ...values, [prop]: event.target.value });\n    if (prop === 'cPassword') {\n      setErrors({\n        ...errors,\n        cPassword: !event.target.value\n      });\n    }\n    if (prop === 'newPassword') {\n      setErrors({\n        ...errors,\n        newPassword: event.target.value.length < 6\n      });\n    }\n    if (prop === 'confirmPassword') {\n      setErrors({\n        ...errors,\n        confirmPassword: values.newPassword !== event.target.value\n      });\n    }\n  };\n  const [openAddAddressModal, setAddAddressModal] = useState(false);\n  const [errors, setErrors] = useState({\n    cPassword: false,\n    newPassword: false,\n    confirmPassword: false\n  });\n\n  const [cPwdWrg, setCPwdWrg] = useState('Password must be at least 6 characters long.');\n\n  const handleSubmit = async (event) => {\n    event.preventDefault();\n    if (\n      values.cPassword.length >= 6 &&\n      values.newPassword === values.confirmPassword &&\n      values.newPassword.length >= 6\n    ) {\n      setSpinner(true);\n      setLoading({ ...loading, forPasswordVerification: true });\n      const response = await changePasswordServices(values);\n      setLoading({ ...loading, forPasswordVerification: false });\n      const data = await response.data;\n      if (data?.meta?.code === 200) {\n        window.localStorage.setItem('token', data?.meta?.token);\n        swal('Password updated successfully.', '', 'success');\n        setValues({\n          ...values,\n          cPassword: '',\n          newPassword: '',\n          confirmPassword: ''\n        });\n      }\n      if (data?.meta?.code === 403) {\n        swal(data.message, '', 'error');\n      }\n      if (data?.meta?.code === 400) {\n        setErrors({ ...errors, cPassword: true });\n        setCPwdWrg('Current password is incorrect.');\n      }\n    } else if (values.cPassword.length < 6) {\n      setErrors({ ...errors, cPassword: values.cPassword.length < 6 });\n    } else if (values.confirmPassword !== values.newPassword) {\n      setErrors({ ...errors, confirmPassword: true });\n    } else if (values.cPassword && values.newPassword.length < 6) {\n      setErrors({ ...errors, newPassword: values.newPassword.length < 6 });\n    }\n    setSpinner(false);\n  };\n\n  const modalStyle = {\n    position: 'absolute',\n    top: '50%',\n    left: '50%',\n    transform: 'translate(-50%, -50%)',\n    width: '90%',\n    maxWidth: 600,\n    overflowY: 'scroll',\n    bgcolor: 'background.paper',\n    maxHeight: '100%',\n    borderRadius: '13px',\n    marginTop: '20px',\n    p: 4,\n    padding: '10px'\n  };\n\n  const [spinner3] = useState(<p>No Address recorded.</p>);\n  const [indexOfAddress, setIndexOfAddress] = useState();\n  const [id, setId] = useState();\n\n  useEffect(() => {\n    const getPatientAddress = async () => {\n      const addPatientAddress = await getDoctorAddressById(userId);\n      const addressData = await addPatientAddress.data;\n      setAddressList(addressData.data);\n    };\n    getPatientAddress();\n\n    const getUserInfo = async () => {\n      const getInfo = await getDoctorDetailsServices();\n      setUserdata(getInfo.data.data);\n    };\n    getUserInfo();\n    // eslint-disable-next-line\n  }, []);\n\n  const addAddressHandler = async () => {\n    setAddAddressModal(true);\n  };\n\n  const [open, setOpen] = useState(false);\n  const editHandler = (address, id) => {\n    setIndexOfAddress(address);\n    setId(id);\n    setOpen(true);\n  };\n\n  const getAddressForPatients = async () => {\n    const getPatientAddress = async () => {\n      const addPatientAddress = await getDoctorAddressById(userId);\n      const addressData = await addPatientAddress.data;\n      setAddressList(addressData.data);\n    };\n    getPatientAddress();\n  };\n\n  const handleClose = () => setOpen(false);\n\n  return (\n    <Page title=\"My Profile | Quiteclear\">\n      <Container maxWidth=\"xl\">\n        <Modal\n          open={open}\n          onClose={handleClose}\n          aria-labelledby=\"modal-modal-title\"\n          aria-describedby=\"modal-modal-description\"\n        >\n          <Box sx={modalStyle}>\n            <EditAddressModal\n              address={indexOfAddress}\n              getAddressForced={getAddressForPatients}\n              index={id}\n              handleClose={handleClose}\n            />\n          </Box>\n        </Modal>\n        <Modal\n          open={openAddAddressModal}\n          onClose={() => setAddAddressModal(false)}\n          aria-labelledby=\"modal-modal-title\"\n          aria-describedby=\"modal-modal-description\"\n        >\n          <Box sx={modalStyle}>\n            <AddAddressModal\n              address={indexOfAddress}\n              getAddressForced={getAddressForPatients}\n              index={id}\n              pid={window.localStorage.getItem('userId')}\n              handleClose={() => setAddAddressModal(false)}\n              user=\"true\"\n            />\n          </Box>\n        </Modal>\n        <Box sx={{ pb: 5 }}>\n          <Typography variant=\"h4\">My Profile</Typography>\n        </Box>\n        <Grid container spacing={3}>\n          <Grid item xs={12} md={6} lg={6}>\n            <Card style={{ marginTop: '15px', paddingTop: '15px', minHeight: '380px' }}>\n              <div className=\"client_dashboard_patient_details\">\n                <h2>Your Details</h2>\n                <Box\n                  onSubmit={handleSubmit}\n                  component=\"form\"\n                  style={{ padding: '10px' }}\n                  noValidate\n                  autoComplete=\"off\"\n                >\n                  {userData ? (\n                    <>\n                      <div className=\"form_input_div\">\n                        <TextField\n                          id=\"outlined-adornment-cpassword\"\n                          value={userData.name}\n                          style={{ width: '100%' }}\n                          label=\"Name\"\n                          autoComplete=\"off\"\n                          disabled\n                        />\n                      </div>\n                      <div className=\"form_input_div\">\n                        <TextField\n                          id=\"outlined-adornment-cpassword\"\n                          value={userData.email}\n                          style={{ width: '100%' }}\n                          label=\"Email\"\n                          autoComplete=\"off\"\n                          disabled\n                        />\n                      </div>\n                      <div className=\"form_input_div\">\n                        <TextField\n                          id=\"outlined-adornment-cpassword\"\n                          value={userData.mobile}\n                          style={{ width: '100%' }}\n                          label=\"Mobile Number\"\n                          autoComplete=\"off\"\n                          disabled\n                        />\n                      </div>\n                      <div className=\"form_input_div\">\n                        <TextField\n                          id=\"outlined-adornment-cpassword\"\n                          value={userData.additional_emails}\n                          style={{ width: '100%' }}\n                          autoComplete=\"off\"\n                          label=\"Additional Emails\"\n                          multiline=\"true\"\n                          disabled\n                        />\n                      </div>\n                      <div className=\"form_input_div\">\n                        <TextField\n                          id=\"outlined-adornment-cpassword\"\n                          value={userData.additional_contacts}\n                          style={{ width: '100%' }}\n                          label=\"Additional Contacts\"\n                          autoComplete=\"off\"\n                          multiline=\"true\"\n                          disabled\n                        />\n                      </div>\n                    </>\n                  ) : (\n                    <CircularProgress />\n                  )}\n                </Box>\n              </div>\n            </Card>\n            <Grid item xs={12} md={12} lg={12}>\n              <div className=\"client_dashboard_patient_details\" style={{ marginTop: '20px' }}>\n                <Card style={{ padding: '15px', paddingTop: '20px', paddingBottom: '20px' }}>\n                  <h2>Your Address</h2>\n                  {addressList.length === 0 ? spinner3 : null}\n                  <TableContainer\n                    component={Paper}\n                    style={{ marginTop: '10px', maxHeight: '376px', overflowY: 'scroll' }}\n                  >\n                    <Table sx={{ minWidth: 350 }} size=\"small\" aria-label=\"a dense table\">\n                      <TableBody>\n                        {addressList.map((add, index) => (\n                          <TableRow\n                            sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\n                            key={index}\n                          >\n                            <TableCell component=\"th\" scope=\"row\" style={{ fontSize: '16px' }}>\n                              {index + 1}. {add?.address_line_1}, {add?.address_line_2}{' '}\n                              {add?.address_line_2 !== ' ' ? ',' : ''}\n                              {add?.landmark}, {add?.state}, {add?.city}, {add?.pincode}\n                            </TableCell>\n                            <TableCell align=\"right\" style={{ fontSize: '16px' }}>\n                              <AddressMoreMenu\n                                id={add.id}\n                                setOpen={setOpen}\n                                editHandler={editHandler}\n                                address={add}\n                                delete=\"false\"\n                                getAddressForced={getAddressForPatients}\n                              />\n                            </TableCell>\n                          </TableRow>\n                        ))}\n                      </TableBody>\n                    </Table>\n                  </TableContainer>\n                  {addressList.length === 0 && (\n                    <Button\n                      variant=\"contained\"\n                      style={{ marginTop: '15px', fontSize: '16px' }}\n                      onClick={addAddressHandler}\n                    >\n                      Add Address\n                    </Button>\n                  )}\n                </Card>\n              </div>\n            </Grid>\n          </Grid>\n          <Grid item xs={12} md={6} lg={6}>\n            <Card style={{ marginTop: '15px', paddingBottom: '15px', paddingTop: '15px' }}>\n              <div className=\"client_dashboard_patient_details\">\n                <h2>Change Password</h2>\n                <Box\n                  onSubmit={handleSubmit}\n                  component=\"form\"\n                  style={{ padding: '10px' }}\n                  noValidate\n                  autoComplete=\"off\"\n                >\n                  <div className=\"form_input_div\">\n                    <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n                      <InputLabel\n                        style={{ color: errors.cPassword ? '#D10000' : 'grey' }}\n                        htmlFor=\"outlined-adornment-cpassword\"\n                      >\n                        Current Password\n                      </InputLabel>\n                      <OutlinedInput\n                        id=\"outlined-adornment-cpassword\"\n                        type={values.showPassword1 ? 'text' : 'password'}\n                        value={values.cPassword}\n                        style={{ width: '100%' }}\n                        onChange={handleChangePass('cPassword')}\n                        endAdornment={\n                          <InputAdornment position=\"end\">\n                            <IconButton\n                              aria-label=\"toggle password visibility\"\n                              onClick={handleClickShowPassword1}\n                              onMouseDown={handleMouseDownPassword}\n                              edge=\"end\"\n                            >\n                              {values.showPassword1 ? <Visibility /> : <VisibilityOff />}\n                            </IconButton>\n                          </InputAdornment>\n                        }\n                        label=\"Current Password\"\n                        autoComplete=\"off\"\n                        error={errors.cPassword}\n                      />\n                      {errors.cPassword && (\n                        <FormHelperText error id=\"accountId-error\">\n                          {values.cPassword.length === 0\n                            ? 'Password field is required.'\n                            : errors.cPassword && cPwdWrg}\n                        </FormHelperText>\n                      )}\n                    </FormControl>\n                  </div>\n                  <div className=\"form_input_div\">\n                    <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n                      <InputLabel\n                        style={{\n                          color: errors.newPassword ? '#D10000' : 'grey'\n                        }}\n                        htmlFor=\"outlined-adornment-newpassword\"\n                      >\n                        New Password\n                      </InputLabel>\n                      <OutlinedInput\n                        id=\"outlined-adornment-newpassword\"\n                        type={values.showPassword2 ? 'text' : 'password'}\n                        value={values.newPassword}\n                        style={{ width: '100%' }}\n                        onChange={handleChangePass('newPassword')}\n                        endAdornment={\n                          <InputAdornment position=\"end\">\n                            <IconButton\n                              aria-label=\"toggle password visibility\"\n                              onClick={handleClickShowPassword2}\n                              onMouseDown={handleMouseDownPassword}\n                              edge=\"end\"\n                            >\n                              {values.showPassword2 ? <Visibility /> : <VisibilityOff />}\n                            </IconButton>\n                          </InputAdornment>\n                        }\n                        label=\"New Password\"\n                        autoComplete=\"off\"\n                        error={errors.newPassword}\n                      />\n                      {errors.newPassword && (\n                        <FormHelperText error id=\"accountId-error\">\n                          {values.newPassword.length === 0\n                            ? 'Password field is required.'\n                            : 'Password must be at least 6 characters long.'}\n                        </FormHelperText>\n                      )}\n                    </FormControl>\n                  </div>\n                  <div className=\"form_input_div\">\n                    <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n                      <InputLabel\n                        style={{\n                          color: errors.confirmPassword ? '#D10000' : 'grey'\n                        }}\n                        htmlFor=\"outlined-adornment-confirm-password\"\n                      >\n                        Confirm Password\n                      </InputLabel>\n                      <OutlinedInput\n                        id=\"outlined-adornment-confirm-password\"\n                        type={values.showPassword3 ? 'text' : 'password'}\n                        value={values.confirmPassword}\n                        style={{ width: '100%' }}\n                        onChange={handleChangePass('confirmPassword')}\n                        endAdornment={\n                          <InputAdornment position=\"end\">\n                            <IconButton\n                              aria-label=\"toggle password visibility\"\n                              onClick={handleClickShowPassword3}\n                              onMouseDown={handleMouseDownPassword}\n                              edge=\"end\"\n                            >\n                              {values.showPassword3 ? <Visibility /> : <VisibilityOff />}\n                            </IconButton>\n                          </InputAdornment>\n                        }\n                        label=\"Confirm Password\"\n                        autoComplete=\"off\"\n                        error={errors.confirmPassword}\n                      />\n                      {errors.confirmPassword && (\n                        <FormHelperText error id=\"accountId-error\">\n                          {values.confirmPassword.length === 0\n                            ? 'Password field is required.'\n                            : 'Confirm password does not match with new password.'}\n                        </FormHelperText>\n                      )}\n                    </FormControl>\n                  </div>\n                  <div\n                    style={{\n                      display: 'flex',\n                      width: '100%',\n                      justifyContent: 'center',\n                      marginTop: '15px'\n                    }}\n                  >\n                    {spinner ? (\n                      <CircularProgress />\n                    ) : (\n                      <Button variant=\"contained\" type=\"submit\">\n                        Update Password\n                      </Button>\n                    )}\n                  </div>\n                </Box>\n              </div>\n            </Card>\n          </Grid>\n        </Grid>\n      </Container>\n    </Page>\n  );\n}\n","import { useState } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport {\n  Button,\n  CircularProgress,\n  FormControl,\n  FormHelperText,\n  IconButton,\n  InputAdornment,\n  InputLabel,\n  OutlinedInput\n} from '@mui/material';\nimport Box from '@mui/material/Box';\nimport swal from 'sweetalert';\nimport { Visibility, VisibilityOff } from '@mui/icons-material';\nimport { unescape } from 'lodash';\nimport { headers } from '../../../utils/headers';\nimport instance from '../../../AxiosInstance';\n\n// ----------------------------------------------------------------------\n\nexport default function ForgotPasswordForm() {\n  const { token } = useParams();\n  const navigate = useNavigate();\n  const handleClickShowPassword2 = () => {\n    setValues({\n      ...values,\n      showPassword2: !values.showPassword2\n    });\n  };\n  const handleClickShowPassword3 = () => {\n    setValues({\n      ...values,\n      showPassword3: !values.showPassword3\n    });\n  };\n  const handleMouseDownPassword = (event) => {\n    event.preventDefault();\n  };\n\n  const [loading, setLoading] = useState({\n    forPasswordVerification: false,\n    forPasswordUpdate: false\n  });\n\n  const [values, setValues] = useState({\n    newPassword: '',\n    confirmPassword: '',\n    showPassword1: false,\n    showPassword2: false,\n    showPassword3: false\n  });\n\n  const [spinner, setSpinner] = useState(false);\n  const handleChange = (prop) => (event) => {\n    setValues({ ...values, [prop]: event.target.value });\n    if (prop === 'newPassword') {\n      setErrors({\n        ...errors,\n        newPassword: event.target.value.length < 6\n      });\n    }\n    if (prop === 'confirmPassword') {\n      setErrors({\n        ...errors,\n        confirmPassword: values.newPassword !== event.target.value\n      });\n    }\n  };\n\n  const [errors, setErrors] = useState({\n    cPassword: false,\n    newPassword: false,\n    confirmPassword: false\n  });\n\n  const handleSubmit = async (event) => {\n    event.preventDefault();\n    if (values.newPassword === values.confirmPassword && values.newPassword?.trim().length >= 6) {\n      setSpinner(true);\n      const tok = unescape(encodeURIComponent(token));\n      const response = await instance(`${process.env.REACT_APP_THIRDINREV_API}/reset-password`, {\n        method: 'POST',\n        headers,\n        data: JSON.stringify({\n          password: values.newPassword?.trim(),\n          password_confirmation: values.confirmPassword?.trim(),\n          token: tok\n        })\n      });\n\n      setLoading({ ...loading, forPasswordVerification: false });\n      const data = await response.data;\n      if (response.status === 200) {\n        swal('Password updated successfully.', '', 'success');\n        navigate('/');\n        setValues({\n          ...values,\n          newPassword: '',\n          confirmPassword: ''\n        });\n      }\n      if (response.status === 403) {\n        swal(data.message, '', 'error');\n      }\n      if (response.status === 403) {\n        swal(data.message, '', 'error');\n      }\n      if (response.status === 401) {\n        swal(data.message, 'Please login again', 'error');\n        setTimeout(() => {\n          window.localStorage.clear();\n        }, 3000);\n      }\n    } else if (values.confirmPassword !== values.newPassword) {\n      setErrors({ ...errors, confirmPassword: true });\n    }\n    setSpinner(false);\n  };\n\n  return (\n    <Box\n      onSubmit={handleSubmit}\n      component=\"form\"\n      style={{ marginTop: '-50px' }}\n      noValidate\n      autoComplete=\"off\"\n    >\n      <div className=\"form_input_div\">\n        <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n          <InputLabel\n            style={{\n              color: errors.newPassword ? '#D10000' : 'grey'\n            }}\n            htmlFor=\"outlined-adornment-newpassword\"\n          >\n            New Password\n          </InputLabel>\n          <OutlinedInput\n            id=\"outlined-adornment-newpassword\"\n            type={values.showPassword2 ? 'text' : 'password'}\n            value={values.newPassword}\n            style={{ width: '100%' }}\n            onChange={handleChange('newPassword')}\n            endAdornment={\n              <InputAdornment position=\"end\">\n                <IconButton\n                  aria-label=\"toggle password visibility\"\n                  onClick={handleClickShowPassword2}\n                  onMouseDown={handleMouseDownPassword}\n                  edge=\"end\"\n                >\n                  {values.showPassword2 ? <Visibility /> : <VisibilityOff />}\n                </IconButton>\n              </InputAdornment>\n            }\n            label=\"New Password\"\n            autoComplete=\"off\"\n            error={errors.newPassword}\n          />\n          {errors.newPassword && (\n            <FormHelperText error id=\"accountId-error\">\n              {values.newPassword.length === 0\n                ? 'Password field is required.'\n                : 'Password must be at least 6 characters long.'}\n            </FormHelperText>\n          )}\n        </FormControl>\n      </div>\n      <div className=\"form_input_div\">\n        <FormControl sx={{ width: '100%' }} color=\"primary\" variant=\"outlined\">\n          <InputLabel\n            style={{\n              color: errors.confirmPassword ? '#D10000' : 'grey'\n            }}\n            htmlFor=\"outlined-adornment-confirm-password\"\n          >\n            Confirm Password\n          </InputLabel>\n          <OutlinedInput\n            id=\"outlined-adornment-confirm-password\"\n            type={values.showPassword3 ? 'text' : 'password'}\n            value={values.confirmPassword}\n            style={{ width: '100%' }}\n            onChange={handleChange('confirmPassword')}\n            endAdornment={\n              <InputAdornment position=\"end\">\n                <IconButton\n                  aria-label=\"toggle password visibility\"\n                  onClick={handleClickShowPassword3}\n                  onMouseDown={handleMouseDownPassword}\n                  edge=\"end\"\n                >\n                  {values.showPassword3 ? <Visibility /> : <VisibilityOff />}\n                </IconButton>\n              </InputAdornment>\n            }\n            label=\"Confirm Password\"\n            autoComplete=\"off\"\n            error={errors.confirmPassword}\n          />\n          {errors.confirmPassword && (\n            <FormHelperText error id=\"accountId-error\">\n              {values.confirmPassword.length === 0\n                ? 'Password field is required.'\n                : 'Confirm password does not match with new password.'}\n            </FormHelperText>\n          )}\n        </FormControl>\n      </div>\n      <div\n        style={{\n          display: 'flex',\n          width: '100%',\n          justifyContent: 'center',\n          marginTop: '15px'\n        }}\n      >\n        {spinner ? (\n          <CircularProgress />\n        ) : (\n          <Button style={{ width: '100%', minHeight: '45px' }} variant=\"contained\" type=\"submit\">\n            Change Password\n          </Button>\n        )}\n      </div>\n    </Box>\n  );\n}\n","import { Link as RouterLink } from 'react-router-dom';\nimport { styled } from '@mui/material/styles';\nimport Card from '@mui/material/Card';\nimport Typography from '@mui/material/Typography';\nimport Stack from '@mui/material/Stack';\nimport Link from '@mui/material/Link';\nimport Container from '@mui/material/Container';\nimport AuthLayout from '../layouts/AuthLayout';\nimport Page from '../components/Page';\nimport { MHidden } from '../components/@material-extend';\nimport ForgotPasswordForm from '../components/authentication/login/ForgotPasswordForm';\n\nconst RootStyle = styled(Page)(({ theme }) => ({\n  [theme.breakpoints.up('md')]: {\n    display: 'flex'\n  }\n}));\n\nconst SectionStyle = styled(Card)(({ theme }) => ({\n  width: '100%',\n  maxWidth: 464,\n  display: 'flex',\n  flexDirection: 'column',\n  justifyContent: 'center',\n  margin: theme.spacing(2, 0, 2, 2)\n}));\n\nconst ContentStyle = styled('div')(({ theme }) => ({\n  maxWidth: 480,\n  margin: 'auto',\n  display: 'flex',\n  minHeight: '100vh',\n  flexDirection: 'column',\n  justifyContent: 'center',\n  padding: theme.spacing(12, 0)\n}));\n\nexport default function ForgotPassword() {\n  return (\n    <RootStyle title=\"Forgot Password | Quiteclear\">\n      <AuthLayout>.</AuthLayout>\n\n      <MHidden width=\"mdDown\">\n        <SectionStyle>\n          <Typography variant=\"h3\" sx={{ px: 5, mt: 10, mb: 5 }}>\n            Hi, Welcome Back\n          </Typography>\n          <Link underline=\"none\" variant=\"subtitle2\" component={RouterLink} to=\"/\">\n            <img src=\"/static/illustrations/illustration_login.png\" alt=\"login\" />\n          </Link>\n        </SectionStyle>\n      </MHidden>\n\n      <Container maxWidth=\"sm\">\n        <ContentStyle>\n          <Stack sx={{ mb: 5 }}>\n            <Typography variant=\"h4\" gutterBottom>\n              Recover your account\n            </Typography>\n            <Typography sx={{ color: 'text.secondary' }}>Enter your details below.</Typography>\n          </Stack>\n\n          <ForgotPasswordForm />\n        </ContentStyle>\n      </Container>\n    </RootStyle>\n  );\n}\n","import { Navigate, useRoutes } from 'react-router-dom';\nimport DashboardLayout from './layouts/dashboard';\nimport LogoOnlyLayout from './layouts/LogoOnlyLayout';\nimport Login from './pages/Login';\nimport Register from './pages/Register';\nimport Products from './pages/Products';\nimport User from './pages/User';\nimport NotFound from './pages/Page404';\nimport OrderNow from './pages/OrderNow';\nimport ClientDashboard from './pages/ClientsDashboard';\nimport OrderHistory from './pages/OrderHistory';\nimport OrderDetails from './pages/OrderDetails';\nimport AddPatient from './pages/AddPatient';\nimport EditPatient from './pages/EditPatient';\nimport MyProfile from './pages/MyProfile';\nimport ForgotPassword from './pages/ForgotPassword';\n\nexport default function Router() {\n  return useRoutes([\n    {\n      path: '/dashboard',\n      element: window.localStorage.getItem('token') ? (\n        <DashboardLayout />\n      ) : (\n        <Navigate to=\"/login\" replace />\n      ),\n      children: [\n        { element: <Navigate to=\"/dashboard/app\" replace /> },\n        { path: 'app', element: <ClientDashboard /> },\n        { path: 'patients', element: <User /> },\n        { path: 'add/patient', element: <AddPatient /> },\n        { path: 'edit/patient/:pid', element: <EditPatient /> },\n        { path: 'products', element: <Products /> },\n        { path: 'order', element: <OrderNow /> },\n        { path: 'history', element: <OrderHistory /> },\n        { path: 'profile', element: <MyProfile /> },\n        { path: 'history/:id', element: <OrderDetails /> }\n      ]\n    },\n    {\n      path: '/',\n      element: <LogoOnlyLayout />,\n      children: [\n        { path: 'login', element: <Login /> },\n        { path: 'register', element: <Register /> },\n        { path: 'not-found', element: <NotFound /> },\n        { path: '404', element: <NotFound /> },\n        { path: '/', element: <Navigate to=\"/dashboard\" /> },\n        { path: 'forgot-password/:token', element: <ForgotPassword /> },\n        { path: '*', element: <Navigate to=\"/404\" /> }\n      ]\n    },\n    { path: '*', element: <Navigate to=\"/404\" replace /> }\n  ]);\n}\n","// ----------------------------------------------------------------------\n\nconst shape = {\n  borderRadius: 8,\n  borderRadiusSm: 12,\n  borderRadiusMd: 16\n};\n\nexport default shape;\n","import { alpha } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nfunction createGradient(color1, color2) {\n  return `linear-gradient(to bottom, ${color1}, ${color2})`;\n}\n\n// SETUP COLORS\nconst GREY = {\n  0: '#FFFFFF',\n  100: '#F9FAFB',\n  200: '#F4F6F8',\n  300: '#DFE3E8',\n  400: '#C4CDD5',\n  500: '#919EAB',\n  600: '#637381',\n  700: '#454F5B',\n  800: '#212B36',\n  900: '#161C24',\n  500_8: alpha('#919EAB', 0.08),\n  500_12: alpha('#919EAB', 0.12),\n  500_16: alpha('#919EAB', 0.16),\n  500_24: alpha('#919EAB', 0.24),\n  500_32: alpha('#919EAB', 0.32),\n  500_48: alpha('#919EAB', 0.48),\n  500_56: alpha('#919EAB', 0.56),\n  500_80: alpha('#919EAB', 0.8)\n};\n\nconst PRIMARY = {\n  lighter: '#faedc8',\n  light: '#e5d05b',\n  main: '#d9c300',\n  dark: '#7b6f00',\n  darker: '#003f52',\n  contrastText: '#fff'\n};\nconst SECONDARY = {\n  lighter: '#D6E4FF',\n  light: '#84A9FF',\n  main: '#3366FF',\n  dark: '#1939B7',\n  darker: '#091A7A',\n  contrastText: '#fff'\n};\nconst INFO = {\n  lighter: '#D0F2FF',\n  light: '#74CAFF',\n  main: '#1890FF',\n  dark: '#0C53B7',\n  darker: '#04297A',\n  contrastText: '#fff'\n};\nconst SUCCESS = {\n  lighter: '#E9FCD4',\n  light: '#AAF27F',\n  main: '#54D62C',\n  dark: '#229A16',\n  darker: '#08660D',\n  contrastText: GREY[800]\n};\nconst WARNING = {\n  lighter: '#FFF7CD',\n  light: '#FFE16A',\n  main: '#FFC107',\n  dark: '#B78103',\n  darker: '#7A4F01',\n  contrastText: GREY[800]\n};\nconst ERROR = {\n  lighter: '#FFE7D9',\n  light: '#FFA48D',\n  main: '#FF4842',\n  dark: '#B72136',\n  darker: '#7A0C2E',\n  contrastText: '#fff'\n};\n\nconst GRADIENTS = {\n  primary: createGradient(PRIMARY.light, PRIMARY.main),\n  info: createGradient(INFO.light, INFO.main),\n  success: createGradient(SUCCESS.light, SUCCESS.main),\n  warning: createGradient(WARNING.light, WARNING.main),\n  error: createGradient(ERROR.light, ERROR.main)\n};\n\nconst CHART_COLORS = {\n  violet: ['#826AF9', '#9E86FF', '#D0AEFF', '#F7D2FF'],\n  blue: ['#2D99FF', '#83CFFF', '#A5F3FF', '#CCFAFF'],\n  green: ['#2CD9C5', '#60F1C8', '#A4F7CC', '#C0F2DC'],\n  yellow: ['#FFE700', '#FFEF5A', '#FFF7AE', '#FFF3D6'],\n  red: ['#FF6C40', '#FF8F6D', '#FFBD98', '#FFF2D4']\n};\n\nconst palette = {\n  common: { black: '#000', white: '#fff' },\n  primary: { ...PRIMARY },\n  secondary: { ...SECONDARY },\n  info: { ...INFO },\n  success: { ...SUCCESS },\n  warning: { ...WARNING },\n  error: { ...ERROR },\n  grey: GREY,\n  gradients: GRADIENTS,\n  chart: CHART_COLORS,\n  divider: GREY[500_24],\n  text: { primary: GREY[800], secondary: GREY[600], disabled: GREY[500] },\n  background: { paper: '#fff', default: '#fff', neutral: GREY[200] },\n  action: {\n    active: GREY[600],\n    hover: GREY[500_8],\n    selected: GREY[500_16],\n    disabled: GREY[500_80],\n    disabledBackground: GREY[500_24],\n    focus: GREY[500_24],\n    hoverOpacity: 0.08,\n    disabledOpacity: 0.48\n  }\n};\n\nexport default palette;\n","// ----------------------------------------------------------------------\n\nfunction pxToRem(value) {\n  return `${value / 16}rem`;\n}\n\nfunction responsiveFontSizes({ sm, md, lg }) {\n  return {\n    '@media (min-width:600px)': {\n      fontSize: pxToRem(sm)\n    },\n    '@media (min-width:900px)': {\n      fontSize: pxToRem(md)\n    },\n    '@media (min-width:1200px)': {\n      fontSize: pxToRem(lg)\n    }\n  };\n}\n\nconst FONT_PRIMARY = 'Public Sans, sans-serif';\n\nconst typography = {\n  fontFamily: FONT_PRIMARY,\n  fontWeightRegular: 400,\n  fontWeightMedium: 600,\n  fontWeightBold: 700,\n  h1: {\n    fontWeight: 700,\n    lineHeight: 80 / 64,\n    fontSize: pxToRem(40),\n    ...responsiveFontSizes({ sm: 52, md: 58, lg: 64 })\n  },\n  h2: {\n    fontWeight: 700,\n    lineHeight: 64 / 48,\n    fontSize: pxToRem(32),\n    ...responsiveFontSizes({ sm: 40, md: 44, lg: 48 })\n  },\n  h3: {\n    fontWeight: 700,\n    lineHeight: 1.5,\n    fontSize: pxToRem(24),\n    ...responsiveFontSizes({ sm: 26, md: 30, lg: 32 })\n  },\n  h4: {\n    fontWeight: 700,\n    lineHeight: 1.5,\n    fontSize: pxToRem(20),\n    ...responsiveFontSizes({ sm: 20, md: 24, lg: 24 })\n  },\n  h5: {\n    fontWeight: 700,\n    lineHeight: 1.5,\n    fontSize: pxToRem(18),\n    ...responsiveFontSizes({ sm: 19, md: 20, lg: 20 })\n  },\n  h6: {\n    fontWeight: 700,\n    lineHeight: 28 / 18,\n    fontSize: pxToRem(17),\n    ...responsiveFontSizes({ sm: 18, md: 18, lg: 18 })\n  },\n  subtitle1: {\n    fontWeight: 600,\n    lineHeight: 1.5,\n    fontSize: pxToRem(16)\n  },\n  subtitle2: {\n    fontWeight: 600,\n    lineHeight: 22 / 14,\n    fontSize: pxToRem(14)\n  },\n  body1: {\n    lineHeight: 1.5,\n    fontSize: pxToRem(16)\n  },\n  body2: {\n    lineHeight: 22 / 14,\n    fontSize: pxToRem(14)\n  },\n  caption: {\n    lineHeight: 1.5,\n    fontSize: pxToRem(12)\n  },\n  overline: {\n    fontWeight: 700,\n    lineHeight: 1.5,\n    fontSize: pxToRem(12),\n    letterSpacing: 1.1,\n    textTransform: 'uppercase'\n  },\n  button: {\n    fontWeight: 700,\n    lineHeight: 24 / 14,\n    fontSize: pxToRem(14),\n    textTransform: 'capitalize'\n  }\n};\n\nexport default typography;\n","import { merge } from 'lodash';\nimport Card from './Card';\nimport Lists from './Lists';\nimport Paper from './Paper';\nimport Input from './Input';\nimport Button from './Button';\nimport Tooltip from './Tooltip';\nimport Backdrop from './Backdrop';\nimport Typography from './Typography';\nimport IconButton from './IconButton';\nimport Autocomplete from './Autocomplete';\n\n// ----------------------------------------------------------------------\n\nexport default function ComponentsOverrides(theme) {\n  return merge(\n    Card(theme),\n    Lists(theme),\n    Paper(theme),\n    Input(theme),\n    Button(theme),\n    Tooltip(theme),\n    Backdrop(theme),\n    Typography(theme),\n    IconButton(theme),\n    Autocomplete(theme)\n  );\n}\n","// ----------------------------------------------------------------------\n\nexport default function Card(theme) {\n  return {\n    MuiCard: {\n      styleOverrides: {\n        root: {\n          boxShadow: theme.customShadows.z16,\n          borderRadius: theme.shape.borderRadiusMd,\n          position: 'relative',\n          zIndex: 0 // Fix Safari overflow: hidden with border radius\n        }\n      }\n    },\n    MuiCardHeader: {\n      defaultProps: {\n        titleTypographyProps: { variant: 'h6' },\n        subheaderTypographyProps: { variant: 'body2' }\n      },\n      styleOverrides: {\n        root: {\n          padding: theme.spacing(3, 3, 0)\n        }\n      }\n    },\n    MuiCardContent: {\n      styleOverrides: {\n        root: {\n          padding: theme.spacing(3)\n        }\n      }\n    }\n  };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Lists(theme) {\n  return {\n    MuiListItemIcon: {\n      styleOverrides: {\n        root: {\n          color: 'inherit',\n          minWidth: 'auto',\n          marginRight: theme.spacing(2)\n        }\n      }\n    },\n    MuiListItemAvatar: {\n      styleOverrides: {\n        root: {\n          minWidth: 'auto',\n          marginRight: theme.spacing(2)\n        }\n      }\n    },\n    MuiListItemText: {\n      styleOverrides: {\n        root: {\n          marginTop: 0,\n          marginBottom: 0\n        },\n        multiline: {\n          marginTop: 0,\n          marginBottom: 0\n        }\n      }\n    }\n  };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Paper() {\n  return {\n    MuiPaper: {\n      defaultProps: {\n        elevation: 0\n      },\n\n      styleOverrides: {\n        root: {\n          backgroundImage: 'none'\n        }\n      }\n    }\n  };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Input(theme) {\n  return {\n    MuiInputBase: {\n      styleOverrides: {\n        root: {\n          '&.Mui-disabled': {\n            '& svg': { color: theme.palette.text.disabled }\n          }\n        },\n        input: {\n          '&::placeholder': {\n            opacity: 1,\n            color: theme.palette.text.disabled\n          }\n        }\n      }\n    },\n    MuiInput: {\n      styleOverrides: {\n        underline: {\n          '&:before': {\n            borderBottomColor: theme.palette.grey[500_56]\n          }\n        }\n      }\n    },\n    MuiFilledInput: {\n      styleOverrides: {\n        root: {\n          backgroundColor: theme.palette.grey[500_12],\n          '&:hover': {\n            backgroundColor: theme.palette.grey[500_16]\n          },\n          '&.Mui-focused': {\n            backgroundColor: theme.palette.action.focus\n          },\n          '&.Mui-disabled': {\n            backgroundColor: theme.palette.action.disabledBackground\n          }\n        },\n        underline: {\n          '&:before': {\n            borderBottomColor: theme.palette.grey[500_56]\n          }\n        }\n      }\n    },\n    MuiOutlinedInput: {\n      styleOverrides: {\n        root: {\n          '& .MuiOutlinedInput-notchedOutline': {\n            borderColor: theme.palette.grey[500_32]\n          },\n          '&.Mui-disabled': {\n            '& .MuiOutlinedInput-notchedOutline': {\n              borderColor: theme.palette.action.disabledBackground\n            }\n          }\n        }\n      }\n    }\n  };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Button(theme) {\n  return {\n    MuiButton: {\n      styleOverrides: {\n        root: {\n          '&:hover': {\n            boxShadow: 'none'\n          }\n        },\n        sizeLarge: {\n          height: 48\n        },\n        containedInherit: {\n          color: theme.palette.grey[800],\n          boxShadow: theme.customShadows.z8,\n          '&:hover': {\n            backgroundColor: theme.palette.grey[400]\n          }\n        },\n        containedPrimary: {\n          boxShadow: theme.customShadows.primary\n        },\n        containedSecondary: {\n          boxShadow: theme.customShadows.secondary\n        },\n        outlinedInherit: {\n          border: `1px solid ${theme.palette.grey[500_32]}`,\n          '&:hover': {\n            backgroundColor: theme.palette.action.hover\n          }\n        },\n        textInherit: {\n          '&:hover': {\n            backgroundColor: theme.palette.action.hover\n          }\n        }\n      }\n    }\n  };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Tooltip(theme) {\n  return {\n    MuiTooltip: {\n      styleOverrides: {\n        tooltip: {\n          backgroundColor: theme.palette.grey[800]\n        },\n        arrow: {\n          color: theme.palette.grey[800]\n        }\n      }\n    }\n  };\n}\n","import { alpha } from '@mui/material/styles';\n\n// ----------------------------------------------------------------------\n\nexport default function Backdrop(theme) {\n  const varLow = alpha(theme.palette.grey[900], 0.48);\n  const varHigh = alpha(theme.palette.grey[900], 1);\n\n  return {\n    MuiBackdrop: {\n      styleOverrides: {\n        root: {\n          background: [\n            `rgb(22,28,36)`,\n            `-moz-linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`,\n            `-webkit-linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`,\n            `linear-gradient(75deg, ${varLow} 0%, ${varHigh} 100%)`\n          ],\n          '&.MuiBackdrop-invisible': {\n            background: 'transparent'\n          }\n        }\n      }\n    }\n  };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Typography(theme) {\n  return {\n    MuiTypography: {\n      styleOverrides: {\n        paragraph: {\n          marginBottom: theme.spacing(2)\n        },\n        gutterBottom: {\n          marginBottom: theme.spacing(1)\n        }\n      }\n    }\n  };\n}\n","// ----------------------------------------------------------------------\n\nexport default function IconButton(theme) {\n  return {\n    MuiIconButton: {\n      variants: [\n        {\n          props: { color: 'default' },\n          style: {\n            '&:hover': { backgroundColor: theme.palette.action.hover }\n          }\n        },\n        {\n          props: { color: 'inherit' },\n          style: {\n            '&:hover': { backgroundColor: theme.palette.action.hover }\n          }\n        }\n      ],\n\n      styleOverrides: {\n        root: {}\n      }\n    }\n  };\n}\n","// ----------------------------------------------------------------------\n\nexport default function Autocomplete(theme) {\n  return {\n    MuiAutocomplete: {\n      styleOverrides: {\n        paper: {\n          boxShadow: theme.customShadows.z20\n        }\n      }\n    }\n  };\n}\n","// material\nimport { alpha } from '@mui/material/styles';\nimport palette from './palette';\n\n// ----------------------------------------------------------------------\n\nconst LIGHT_MODE = palette.grey[500];\n\nconst createShadow = (color) => {\n  const transparent1 = alpha(color, 0.2);\n  const transparent2 = alpha(color, 0.14);\n  const transparent3 = alpha(color, 0.12);\n  return [\n    'none',\n    `0px 2px 1px -1px ${transparent1},0px 1px 1px 0px ${transparent2},0px 1px 3px 0px ${transparent3}`,\n    `0px 3px 1px -2px ${transparent1},0px 2px 2px 0px ${transparent2},0px 1px 5px 0px ${transparent3}`,\n    `0px 3px 3px -2px ${transparent1},0px 3px 4px 0px ${transparent2},0px 1px 8px 0px ${transparent3}`,\n    `0px 2px 4px -1px ${transparent1},0px 4px 5px 0px ${transparent2},0px 1px 10px 0px ${transparent3}`,\n    `0px 3px 5px -1px ${transparent1},0px 5px 8px 0px ${transparent2},0px 1px 14px 0px ${transparent3}`,\n    `0px 3px 5px -1px ${transparent1},0px 6px 10px 0px ${transparent2},0px 1px 18px 0px ${transparent3}`,\n    `0px 4px 5px -2px ${transparent1},0px 7px 10px 1px ${transparent2},0px 2px 16px 1px ${transparent3}`,\n    `0px 5px 5px -3px ${transparent1},0px 8px 10px 1px ${transparent2},0px 3px 14px 2px ${transparent3}`,\n    `0px 5px 6px -3px ${transparent1},0px 9px 12px 1px ${transparent2},0px 3px 16px 2px ${transparent3}`,\n    `0px 6px 6px -3px ${transparent1},0px 10px 14px 1px ${transparent2},0px 4px 18px 3px ${transparent3}`,\n    `0px 6px 7px -4px ${transparent1},0px 11px 15px 1px ${transparent2},0px 4px 20px 3px ${transparent3}`,\n    `0px 7px 8px -4px ${transparent1},0px 12px 17px 2px ${transparent2},0px 5px 22px 4px ${transparent3}`,\n    `0px 7px 8px -4px ${transparent1},0px 13px 19px 2px ${transparent2},0px 5px 24px 4px ${transparent3}`,\n    `0px 7px 9px -4px ${transparent1},0px 14px 21px 2px ${transparent2},0px 5px 26px 4px ${transparent3}`,\n    `0px 8px 9px -5px ${transparent1},0px 15px 22px 2px ${transparent2},0px 6px 28px 5px ${transparent3}`,\n    `0px 8px 10px -5px ${transparent1},0px 16px 24px 2px ${transparent2},0px 6px 30px 5px ${transparent3}`,\n    `0px 8px 11px -5px ${transparent1},0px 17px 26px 2px ${transparent2},0px 6px 32px 5px ${transparent3}`,\n    `0px 9px 11px -5px ${transparent1},0px 18px 28px 2px ${transparent2},0px 7px 34px 6px ${transparent3}`,\n    `0px 9px 12px -6px ${transparent1},0px 19px 29px 2px ${transparent2},0px 7px 36px 6px ${transparent3}`,\n    `0px 10px 13px -6px ${transparent1},0px 20px 31px 3px ${transparent2},0px 8px 38px 7px ${transparent3}`,\n    `0px 10px 13px -6px ${transparent1},0px 21px 33px 3px ${transparent2},0px 8px 40px 7px ${transparent3}`,\n    `0px 10px 14px -6px ${transparent1},0px 22px 35px 3px ${transparent2},0px 8px 42px 7px ${transparent3}`,\n    `0px 11px 14px -7px ${transparent1},0px 23px 36px 3px ${transparent2},0px 9px 44px 8px ${transparent3}`,\n    `0px 11px 15px -7px ${transparent1},0px 24px 38px 3px ${transparent2},0px 9px 46px 8px ${transparent3}`\n  ];\n};\n\nconst createCustomShadow = (color) => {\n  const transparent = alpha(color, 0.24);\n\n  return {\n    z1: `0 1px 2px 0 ${transparent}`,\n    z8: `0 8px 16px 0 ${transparent}`,\n    z12: `0 0 2px 0 ${transparent}, 0 12px 24px 0 ${transparent}`,\n    z16: `0 0 2px 0 ${transparent}, 0 16px 32px -4px ${transparent}`,\n    z20: `0 0 2px 0 ${transparent}, 0 20px 40px -4px ${transparent}`,\n    z24: `0 0 4px 0 ${transparent}, 0 24px 48px 0 ${transparent}`,\n    primary: `0 8px 16px 0 ${alpha(palette.primary.main, 0.24)}`,\n    secondary: `0 8px 16px 0 ${alpha(palette.secondary.main, 0.24)}`,\n    info: `0 8px 16px 0 ${alpha(palette.info.main, 0.24)}`,\n    success: `0 8px 16px 0 ${alpha(palette.success.main, 0.24)}`,\n    warning: `0 8px 16px 0 ${alpha(palette.warning.main, 0.24)}`,\n    error: `0 8px 16px 0 ${alpha(palette.error.main, 0.24)}`\n  };\n};\n\nexport const customShadows = createCustomShadow(LIGHT_MODE);\n\nconst shadows = createShadow(LIGHT_MODE);\n\nexport default shadows;\n","import PropTypes from 'prop-types';\nimport { useMemo } from 'react';\n// material\nimport { CssBaseline } from '@mui/material';\nimport { ThemeProvider, createTheme, StyledEngineProvider } from '@mui/material/styles';\n//\nimport shape from './shape';\nimport palette from './palette';\nimport typography from './typography';\nimport componentsOverride from './overrides';\nimport shadows, { customShadows } from './shadows';\n\n// ----------------------------------------------------------------------\n\nThemeConfig.propTypes = {\n  children: PropTypes.node\n};\n\nexport default function ThemeConfig({ children }) {\n  const themeOptions = useMemo(\n    () => ({\n      palette,\n      shape,\n      typography,\n      shadows,\n      customShadows\n    }),\n    []\n  );\n\n  const theme = createTheme(themeOptions);\n  theme.components = componentsOverride(theme);\n\n  return (\n    <StyledEngineProvider injectFirst>\n      <ThemeProvider theme={theme}>\n        <CssBaseline />\n        {children}\n      </ThemeProvider>\n    </StyledEngineProvider>\n  );\n}\n","// material\nimport { useTheme } from '@mui/material/styles';\nimport { GlobalStyles as GlobalThemeStyles } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nexport default function GlobalStyles() {\n  const theme = useTheme();\n\n  return (\n    <GlobalThemeStyles\n      styles={{\n        '*': {\n          margin: 0,\n          padding: 0,\n          boxSizing: 'border-box'\n        },\n        html: {\n          width: '100%',\n          height: '100%',\n          WebkitOverflowScrolling: 'touch'\n        },\n        body: {\n          width: '100%',\n          height: '100%'\n        },\n        '#root': {\n          width: '100%',\n          height: '100%'\n        },\n        input: {\n          '&[type=number]': {\n            MozAppearance: 'textfield',\n            '&::-webkit-outer-spin-button': {\n              margin: 0,\n              WebkitAppearance: 'none'\n            },\n            '&::-webkit-inner-spin-button': {\n              margin: 0,\n              WebkitAppearance: 'none'\n            }\n          }\n        },\n        textarea: {\n          '&::-webkit-input-placeholder': {\n            color: theme.palette.text.disabled\n          },\n          '&::-moz-placeholder': {\n            opacity: 1,\n            color: theme.palette.text.disabled\n          },\n          '&:-ms-input-placeholder': {\n            color: theme.palette.text.disabled\n          },\n          '&::placeholder': {\n            color: theme.palette.text.disabled\n          }\n        },\n        img: { display: 'block', maxWidth: '100%' },\n\n        // Lazy Load Img\n        '.blur-up': {\n          WebkitFilter: 'blur(5px)',\n          filter: 'blur(5px)',\n          transition: 'filter 400ms, -webkit-filter 400ms'\n        },\n        '.blur-up.lazyloaded ': {\n          WebkitFilter: 'blur(0)',\n          filter: 'blur(0)'\n        }\n      }}\n    />\n  );\n}\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// ----------------------------------------------------------------------\n\nexport default function ScrollToTop() {\n  const { pathname } = useLocation();\n\n  useEffect(() => {\n    window.scrollTo(0, 0);\n  }, [pathname]);\n\n  return null;\n}\n","// material\nimport { alpha, useTheme } from '@mui/material/styles';\nimport { GlobalStyles } from '@mui/material';\n\n// ----------------------------------------------------------------------\n\nexport function BaseOptionChartStyle() {\n  const theme = useTheme();\n\n  const background = {\n    backdropFilter: 'blur(6px)',\n    WebkitBackdropFilter: 'blur(6px)', // Fix on Mobile\n    backgroundColor: alpha(theme.palette.background.default, 0.72)\n  };\n\n  return (\n    <GlobalStyles\n      styles={{\n        '&.apexcharts-canvas': {\n          // Tooltip\n          '.apexcharts-xaxistooltip': {\n            ...background,\n            border: 0,\n            boxShadow: theme.customShadows.z24,\n            color: theme.palette.text.primary,\n            borderRadius: theme.shape.borderRadiusSm,\n            '&:before': { borderBottomColor: 'transparent' },\n            '&:after': { borderBottomColor: alpha(theme.palette.background.default, 0.72) }\n          },\n          '.apexcharts-tooltip.apexcharts-theme-light': {\n            ...background,\n            border: 0,\n            boxShadow: theme.customShadows.z24,\n            borderRadius: theme.shape.borderRadiusSm,\n            '& .apexcharts-tooltip-title': {\n              border: 0,\n              textAlign: 'center',\n              fontWeight: theme.typography.fontWeightBold,\n              backgroundColor: theme.palette.grey[500_16],\n              color: theme.palette.text[theme.palette.mode === 'light' ? 'secondary' : 'primary']\n            }\n          },\n          // Legend\n          '.apexcharts-legend': {\n            padding: 0\n          },\n          '.apexcharts-legend-series': {\n            display: 'flex !important',\n            alignItems: 'center'\n          },\n          '.apexcharts-legend-marker': {\n            marginRight: 8\n          },\n          '.apexcharts-legend-text': {\n            lineHeight: '18px',\n            textTransform: 'capitalize'\n          }\n        }\n      }}\n    />\n  );\n}\n\nexport default function BaseOptionChart() {\n  const theme = useTheme();\n\n  const LABEL_TOTAL = {\n    show: true,\n    label: 'Total',\n    color: theme.palette.text.secondary,\n    ...theme.typography.subtitle2\n  };\n\n  const LABEL_VALUE = {\n    offsetY: 8,\n    color: theme.palette.text.primary,\n    ...theme.typography.h3\n  };\n\n  return {\n    // Colors\n    colors: [\n      theme.palette.primary.main,\n      theme.palette.chart.yellow[0],\n      theme.palette.chart.blue[0],\n      theme.palette.chart.violet[0],\n      theme.palette.chart.green[0],\n      theme.palette.chart.red[0]\n    ],\n\n    // Chart\n    chart: {\n      toolbar: { show: false },\n      zoom: { enabled: false },\n      // animations: { enabled: false },\n      foreColor: theme.palette.text.disabled,\n      fontFamily: theme.typography.fontFamily\n    },\n\n    // States\n    states: {\n      hover: {\n        filter: {\n          type: 'lighten',\n          value: 0.04\n        }\n      },\n      active: {\n        filter: {\n          type: 'darken',\n          value: 0.88\n        }\n      }\n    },\n\n    // Fill\n    fill: {\n      opacity: 1,\n      gradient: {\n        type: 'vertical',\n        shadeIntensity: 0,\n        opacityFrom: 0.4,\n        opacityTo: 0,\n        stops: [0, 100]\n      }\n    },\n\n    // Datalabels\n    dataLabels: { enabled: false },\n\n    // Stroke\n    stroke: {\n      width: 3,\n      curve: 'smooth',\n      lineCap: 'round'\n    },\n\n    // Grid\n    grid: {\n      strokeDashArray: 3,\n      borderColor: theme.palette.divider\n    },\n\n    // Xaxis\n    xaxis: {\n      axisBorder: { show: false },\n      axisTicks: { show: false }\n    },\n\n    // Markers\n    markers: {\n      size: 0,\n      strokeColors: theme.palette.background.paper\n    },\n\n    // Tooltip\n    tooltip: {\n      x: {\n        show: false\n      }\n    },\n\n    // Legend\n    legend: {\n      show: true,\n      fontSize: 13,\n      position: 'top',\n      horizontalAlign: 'right',\n      markers: {\n        radius: 12\n      },\n      fontWeight: 500,\n      itemMargin: { horizontal: 12 },\n      labels: {\n        colors: theme.palette.text.primary\n      }\n    },\n\n    // plotOptions\n    plotOptions: {\n      // Bar\n      bar: {\n        columnWidth: '28%',\n        borderRadius: 4\n      },\n      // Pie + Donut\n      pie: {\n        donut: {\n          labels: {\n            show: true,\n            value: LABEL_VALUE,\n            total: LABEL_TOTAL\n          }\n        }\n      },\n      // Radialbar\n      radialBar: {\n        track: {\n          strokeWidth: '100%',\n          background: theme.palette.grey[500_16]\n        },\n        dataLabels: {\n          value: LABEL_VALUE,\n          total: LABEL_TOTAL\n        }\n      },\n      // Radar\n      radar: {\n        polygons: {\n          fill: { colors: ['transparent'] },\n          strokeColors: theme.palette.divider,\n          connectorColors: theme.palette.divider\n        }\n      },\n      // polarArea\n      polarArea: {\n        rings: {\n          strokeColor: theme.palette.divider\n        },\n        spokes: {\n          connectorColors: theme.palette.divider\n        }\n      }\n    },\n\n    // Responsive\n    responsive: [\n      {\n        // sm\n        breakpoint: theme.breakpoints.values.sm,\n        options: {\n          plotOptions: { bar: { columnWidth: '40%' } }\n        }\n      },\n      {\n        // md\n        breakpoint: theme.breakpoints.values.md,\n        options: {\n          plotOptions: { bar: { columnWidth: '32%' } }\n        }\n      }\n    ]\n  };\n}\n","// routes\nimport Router from './routes';\n// theme\nimport ThemeConfig from './theme';\nimport GlobalStyles from './theme/globalStyles';\n// components\nimport ScrollToTop from './components/ScrollToTop';\nimport { BaseOptionChartStyle } from './components/charts/BaseOptionChart';\n\n// ----------------------------------------------------------------------\n\nexport default function App() {\n  return (\n    <ThemeConfig>\n      <ScrollToTop />\n      <GlobalStyles />\n      <BaseOptionChartStyle />\n      <Router />\n    </ThemeConfig>\n  );\n}\n","/* eslint-disable */\n/* @ts-nocheck */\n\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(window.location.hostname === 'localhost' ||\n  // [::1] is the IPv6 localhost address.\n  window.location.hostname === '[::1]' ||\n  // 127.0.0.0/8 are considered localhost for IPv4.\n  window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));\n\nexport function register(config) {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log('This web app is being served cache-first by a service ' +\n            'worker. To learn more, visit https://bit.ly/CRA-PWA');\n        });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl, config) {\n  navigator\n    .serviceWorker\n    .register(swUrl)\n    .then((registration) => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker == null) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log('New content is available and will be used when all ' +\n                'tabs for this page are closed. See https://bit.ly/CRA-PWA.');\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch((error) => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl, {\n    headers: { 'Service-Worker': 'script' }\n  })\n    .then((response) => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get('content-type');\n      if (response.status === 404 ||\n        (contentType != null && 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, config);\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\n      .serviceWorker\n      .ready\n      .then((registration) => {\n        registration.unregister();\n      })\n      .catch((error) => {\n        console.error(error.message);\n      });\n  }\n}\n","const reportWebVitals = (onPerfEntry) => {\n  if (onPerfEntry && onPerfEntry instanceof Function) {\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n      getCLS(onPerfEntry);\n      getFID(onPerfEntry);\n      getFCP(onPerfEntry);\n      getLCP(onPerfEntry);\n      getTTFB(onPerfEntry);\n    });\n  }\n};\n\nexport default reportWebVitals;\n","// scroll bar\nimport 'simplebar/src/simplebar.css';\n\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter } from 'react-router-dom';\nimport { HelmetProvider } from 'react-helmet-async';\n\n//\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport reportWebVitals from './reportWebVitals';\n\n// ----------------------------------------------------------------------\n\nReactDOM.render(\n  <HelmetProvider>\n    <BrowserRouter>\n      <App />\n    </BrowserRouter>\n  </HelmetProvider>,\n  document.getElementById('root')\n);\n\n// If you want to enable client cache, register instead.\nserviceWorker.unregister();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}